|
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
--
[ Picked text/plain from multipart/alternative ]
Hi Steve,
you need to send the message to farr@ca.ibm.com for it to be counted.
I nearly did the same.
cheers,
Martin
> -----Original Message-----
> From: Brault, Steve [SMTP:sbrault@mbi-inc.com]
> Sent: 19 August 2002 12:55
> To: 'rpg400-l@midrange.com'
> Subject: RE: It's That Time Again! The 2002 RPG Enhancement Poll
>
>
>
> -----Original Message-----
> From: Hans Boldt [mailto:boldt@ca.ibm.com]
> Sent: Monday, August 19, 2002 7:41 AM
> To: rpg400-l@midrange.com
> Subject: It's That Time Again! The 2002 RPG Enhancement Poll
>
>
> Good day.
> As usual, myself and the whole RPG IV development team would like to
> have your input on future RPG IV enhancements. This is your chance
> to influence what goes in a future release of the RPG IV language.
>
> YOU ARE ON THE VOTERS LIST! YOU ARE ELIGIBLE TO VOTE! DON'T MISS
> THIS CHANCE TO VOTE!
>
> Same rules apply as before, you have $100 to spend. Fill your
> election ballot with up to $100 worth of the following proposed
> enhancements. Be careful not to spend more than $100. If you do,
> your votes will not be counted.
>
> Vote by marking an 'X' between the square brackets [ ] at the
> beginning of each selected item in the ballot. More detailed
> descriptions of each item follow the ballot.
>
> Please return your completed ballot to farr@ca.ibm.com
>
> We welcome any additional comments or any enhancements you think
> should be considered.
>
> I am asking my RPG technical leads: Hans Boldt and Barbara Morris to
> post this note on forums and newsgroups as well. If you know of
> other who might be interested in voting, please pass this note on to
> them.
>
> Please note, this is just to prioritize our line items for the next
> release (beyond V5R2). In few weeks I will post the results!
>
> Thanks in advance.
>
> Start of ballot
> ==========================================================================
> ==
> =============
> Mark an X for the items you want totaling no more than $100.
>
> e-mail the completed ballot to farr@ca.ibm.com.
>
> [X] Num Cost Summary
> --- --- ---- -------
>
> [ ] 1 $10 H-spec keyword EXTDEFS to use the internal format of
> ext fields.
> [X] 2 $30 RANGE and VALUES keywords.
> [ ] 3 $25 SORTA arr1 {: arr2 ...} WITH key_arr1 {: key_arr2 ...}
> [X] 4 $5 Extender on SORTA to reverse the order of sorting.
> [ ] 5 $5 DEBUG(*RETVAL) to allow debugging of procedure return
> values
> [ ] 6 $5 OPTIONS(*VARTYPE) to bypass type match of procedure parms
> [ ] 7 $10 New BIFs %TESTD, %TESTT, and %TESTZ.
> [X] 8 $50 Allow dynamic resizing of arrays and multi-occurrence DS.
> [ ] 9 $5 Format change on a LIKE define for numerics.
> [ ] 10 $10 New keyword, RECPREFIX, to prefix record-format names.
> [ ] 11 $10 DIM(*FIT) with overlay field.
> [ ] 12 $50 Multiple-dimension arrays (expressions only).
> [ ] 13 $40 SPECIAL files to handle all I/O opcodes, including
> keyed ops
> [ ] 14 $5 %OFFSET builtin function returns offset of subfield.
> [ ] 15 $20 Multiple array element initialization.
> [ ] 16 $10 Keyword EXTDESC, like EXTFILE, but used at compile time
> [ ] 17 $20 Dynamic specification of basing variable, ie "p->var".
> [X] 18 $20 Option *ZEROFILL on %EDITC to include leading zeros.
> [ ] 19 $20 Option to edit negative numbers using parentheses.
> [ ] 20 $10 ALIAS name support for externally described data
> structures.
> [ ] 21 $5 Second parameter on %TRIMx - char to trim.
> [ ] 22 $10 Built-in function %COND(condition:truevalue:falsevalue).
> [ ] 23 $80 Allow expressions as parameters to keywords.
> [XXXX] 24 $80 Full null field support.
> [ ] 25 $80 Procedure name overloading based on parm types.
> [ ] 26 $15 /FREE should allow longer than 80 character lines.
> [ ] 27 $5 Allow EXTPGM to be coded without a parameter.
> [X] 28 $20 Extend INDDS to associate DS with specific record format.
> [ ] 29 $20 Allow named data structure bigger than 64k bytes long.
> [ ] 30 $10 Keyword TEMPLATE to define DS without allocating storage.
> [ ] 31 $20 EVALC move corresponding from one data structure to
> another.
> [ ] 32 $10 Allow BASED(%ADDR(something)).
> [ ] 33 $20 Allow variable offset for data structure subfields.
> [ ] 34 $40 Provide support for inlining procedures.
> [ ] 35 $20 TIME opcode to provide more precise time.
> [ ] 36 $40 Additional parameter passing mechanisms.
> [X] 37 $5 Option to pass trimmed string as parameter.
> [ ] 38 $15 Allow keyword CONST for variables
> [ ] 39 $10 Conversion of date/time/tstamp to numeric using %INT,
> %DEC.
> [ ] 40 $15 Runtime level-check for externally-described data
> structures.
> [ ] 41 $10 LEAVE-WHEN & ITER-WHEN: single-statement conditional
> leave or iter.
>
> End of ballot
> ==========================================================================
> ==
> ==============
>
> -------------------------------------------------------------------------
> #1 $10 H-spec keyword EXTDEFS to indicate that the internal format
> of a field should be the same as the external format. This
> would mean that all external formats for fields must be
> the same. (This would be a problem for programs that have
> a field defined as packed in the database but zoned in the
> display file. Alternatives: 1) error if conflicting
> definitions, 2) first definition takes precedence)
> -------------------------------------------------------------------------
> #2 $30 Allow specification of the values allowed for a field with
> D spec keywords RANGE and VALUES.
>
> Example:
> D temperature S 10i 0 range(-60: 120)
> D command S 3a values('ADD': 'DEL')
>
> If a value is assigned that is not correct, an exception
> would be given. The TEST operation (and possibly a %TEST
> built-in function) would be allowed for the field. If the
> field is used, and it has an incorrect value, an exception
> would be issued.
> -------------------------------------------------------------------------
> #3 $25 SORTA arr1 {: arr2 ...} WITH key_arr1 {: key_arr2 ...}
> All the arrays including key_arrays are sorted, but the
> sort sequence is determined by the key arrays. (For
> identical
> key values in key_arr1, values in subsequent key arrays are
> used.)
> -------------------------------------------------------------------------
> #4 $5 Extender on SORTA to specify the order of sorting.
> SORTA(A) for ascending, SORTA(D) for descending. This would
> normally be used for non-sequenced arrays. (If a
> sequence is
> specified on the array definition, this extender must match
> if specified.)
> -------------------------------------------------------------------------
> #5 $5 Option DEBUG(*RETVAL) to allow seeing procedure return
> values in the debugger:
> EVAL _QRNU_RET_procname
> -------------------------------------------------------------------------
> #6 $5 OPTIONS(*VARTYPE) on a parameter definition for reference
> parameters to bypass type checking for the parm. A pointer
> parm would be coded in the PI for that parameter. It
> would be
> the responsibility of the programmer to access the data
> using
> based variables of the expected types.
> -------------------------------------------------------------------------
> #7 $10 New BIFs %TESTD, %TESTT, and %TESTZ to check if a particular
> string is a valid date, time, or timestamp value. The 1st
> argument is the string to check; the 2nd is a format. This
> can also be used to check if a date can be converted without
> error to a different format.
>
> New BIF %TEST to check if a particular variable has a value
> that's consistent with the variables definition. For
> example,
> to check if a zoned decimal variable has proper numeric
> data.
> -------------------------------------------------------------------------
> #8 $50 Allow dynamic resizing of arrays and multi-occurrence data
> structures.
>
> This would mean that SORTA, LOOKUP and range-checking
> would use
> the new size. For based arrays, the programmer would be
> responsible for storage management. For non-based
> arrays, the
> compiler would handle it. The array or mods is prefixed
> in storage
> by current number of elements with either a 2 or 4 byte
> unsigned
> integer.
>
> Example of extending sizes of arrays:
>
> D mods DS OCCURS(10:*VAR)
> D array S 10A DIM(100:*VAR)
> D basedarr S 1A BASED(P) DIM(32767:*VAR4)
> /free
> // Example of changing the size of a non-based
> // varying-sized array and MODS.
> %ELEM(array) = new_size;
> %OCCURS(mods) = new_size;
>
> // Example of one way to change the size of
> // a based varying-sized array:
> monitor;
> // Try to assign to i'th element of array
> basedarr(i) = 'x';
> on-error 121; // Array index out of range
> // If we don't have storage yet for i'th element,
> // reallocate storage for array:
> p = %realloc(p: i * %size(basedarr) + 4); // 4
> for # elems
> %ELEM(basedarr) = i;
> basedarr(i) = 'x';
> endmon;
> /end-free
> -------------------------------------------------------------------------
> #9 $5 Format change on a LIKE define for numerics. For example:
>
> D fld1 s 5s 0
> D fld2 s p like(fld1)
> D fld3 s 5a
> D fld4 s p 3 like(fld3)
> -------------------------------------------------------------------------
> #10 $10 New keyword, RECPREFIX, to prefix record-format names to
> save having to do several renames.
> Fmyfile IF E DISK RECPREFIX(AB)
> vs
> Fmyfile IF E DISK RENAME(REC1 : ABREC1)
> RENAME(REC2 : ABREC2)
> -------------------------------------------------------------------------
> #11 $10 DIM(*FIT) with overlay field. Number of dimensions is
> computed based on what will fit into the overlayed field.
> (Valid only if the array fits exactly.)
> -------------------------------------------------------------------------
> #12 $50 Multiple-dimension arrays. Cost includes only support in
> free-form calcs and Extended-Factor-2 opcodes.
> -------------------------------------------------------------------------
> #13 $40 Extend special-file support by allowing F-spec keyword
> SPECIAL
> for all device types. For example:
>
> FkeyedFile if e k disk
> SPECIAL('MYLIB/MYDRIVER')
> C key chain keyedFile
> -------------------------------------------------------------------------
> #14 $5 %OFFSET builtin function returns offset of subfield from
> beginning of an overlaid-on subfield (or the DS)
> %OFFSET(fld {: containing_subfield}) where 2nd subf defaults
> to DS.
> -------------------------------------------------------------------------
> #15 $20 Multiple array element initialization:
>
> D ARRAY S 10i 0 dim(5)
> inz(%list(1:3:5:7:11))
> ------------------------------------------------------------------------
> #16 $10 Keyword EXTDESC to identify name of externally described
> file that contains file description to be used at compile
> time.
> -------------------------------------------------------------------------
> #17 $20 Dynamic specification of basing variable:
>
> D basedchar s 1A based
> D p s *
> /free
> p->basedchar = '1';
> (pa(12)+offset)->basedchar = '2';
> /end-free
>
> Pointer notation required for based vars without basing ptr.
> Basing pointer can be any pointer valued expression.
> -------------------------------------------------------------------------
> #18 $20 Option *ZEROFILL on %EDITC to include leading zeros in
> edited value.
> Examples:
> num = -1234.56; // packed(15,2)
> %editc(num:'A':*ZEROFILL); //
> "0,000,000,001,234.56CR"
> %editc(num:'P':*ZEROFILL); // "-0000000001234.56"
> -------------------------------------------------------------------------
> #19 $20 Option to edit negative numbers using parentheses. Option
> *PARENS allowed for edit codes 1-4. For example:
>
> num1 = 1234.56; // packed(15,2)
> num2 = -1234.56; // packed(15,2)
> %editc(num1:'1':*PARENS); // returns "
> 1,234.56 "
> %editc(num1:'4':*PARENS); // returns "( 1234.56)"
> -------------------------------------------------------------------------
> #20 $10 ALIAS name support for data structures. Alias name is used
> instead of regular name for subfields of externally
> described data structures.
> Example:
> D struct E DS EXTNAME(file:rec:*ALIAS)
> -------------------------------------------------------------------------
> #21 $5 Optional second parameter on %TRIM, %TRIML, and %TRIMR to
> identify character(s) to trim off of the string.
> -------------------------------------------------------------------------
> #22 $10 Built-in function %COND(condition:truevalue:falsevalue).
> This BIF evaluates the condition. If the condition
> evaluates to *ON, the "truevalue" is evaluated and returned.
> Otherwise, the "falsevalue" is evaluated and returned.
> The true and false values must both be the same type.
> For example:
>
> eval n = %cond(y = 0 : 0 : x / y)
> -------------------------------------------------------------------------
> #23 $80 Allow any arbitrary expression as parameter to any H-Spec,
> F-Spec, or D-Spec keyword, provided the expression has a
> value
> computable at compile-time. For example:
>
> D const C 17
> D array1 S 1A DIM(const+34)
> D array2 S 1A DIM(%ELEMS(array1)*2)
> -------------------------------------------------------------------------
> #24 $80 Full null field support. Fields can be declared as null-
> capable within D-Specs. The null attribute is maintained
> when assigning null-capable fields. An exception is issued
> when trying to refer to the value of a field that has a null
> value.
> -------------------------------------------------------------------------
> #25 $80 Allow procedure names to be overloaded. Actual procedure to
> call is determined by types and number of parameters. For
> example, "callp proc(1);" might call real procedure
> "procnum"
> and "callp proc('a');" might call real procedure "procchar".
> -------------------------------------------------------------------------
> #26 $15 /FREE should allow longer than 80 character lines.
> -------------------------------------------------------------------------
> #27 $5 Allow EXTPGM to be coded without a parameter, defaulting to
> the upper-cased form of the name in column 7.
>
> D mypgm PR EXTPGM
>
> A CALLP to "mypgm" would call program '*LIBL/MYPGM'.
> -------------------------------------------------------------------------
> #28 $20 Extend INDDS to associate a data structure with a specific
> record format. Syntax would be
> INDDS({record-name:}ds-name).
> Multiple indicator data structures would be allowed for one
> file.
> -------------------------------------------------------------------------
> #29 $20 Allow named data structures bigger than 64k bytes long. Such
> a data structure would not be allowed to be used as a
> character field.
> -------------------------------------------------------------------------
> #30 $10 Keyword TEMPLATE to define data structures without
> allocating
> storage.Keyword TEMPLATE indicates that the data
> structure is
> used only as a base for LIKEDS definitions.
>
> Like BASED, TEMPLATE data structures do not have storage
> allocated, but unlike BASED, TEMPLATE data structures
> can have
> subfields initialized. The initial values are used when
> defining a data structure using LIKEDS and INZ(*LIKEDS).
> -------------------------------------------------------------------------
> #31 $20 EVALC move corresponding from one data structure to another.
> Each subfield in the source DS having the same name as a
> subfield in the target DS will be assigned to the target DS.
>
> If the source subfield is a data structure, the target
> subfield must be a character variable or another data
> structure. If the target subfield is another data
> structure,
> the data structure subfields will be assigned using the
> same
> EVALC logic as the main structures.
> -------------------------------------------------------------------------
> #32 $10 Allow BASED(%ADDR(something)).
>
> For example:
> D indicators ds n based(%addr(*in))
> D pf03 3 3n
> -------------------------------------------------------------------------
> #33 $20 Allow variable offset for data structure subfields. This
> would
> allow convenient definition of many of the structures
> returned
> by APIs, which have the offset of various sections
> defined in
> the structure.
>
> D ds ds based(p)
> D subf1 10i 0
> D subf2 100a offset(subf1)
>
> This would only be allowed with based data structures or
> parameters. For a qualified data structure or one that has
> LIKEDS used, it could only be a subfield within the same
> structure.
> -------------------------------------------------------------------------
> #34 $40 Provide support for inlining procedures to improve
> performance
> of procedure calls.
> -------------------------------------------------------------------------
> #35 $20 TIME opcode to provide more precise time. Currently,
> only the
> number of milliseconds is provided. TIME should provide a
> timestamp result with 6 significant digits to the right
> of the
> decimal point.
> -------------------------------------------------------------------------
> #36 $40 Additional parameter passing mechanisms.
>
> - REFERENCE(*IN) - Parameter is copied (with conversions if
> necessary) to a compiler generated temp. Address of temp
> is passed
> - REFERENCE(*OUT) - Address of compiler generated temp is
> passed. On return, value of temp is copied (and
> converted
> if necessary) to parameter passed.
> - REFERENCE(*INOUT) - Both *IN and *OUT.
>
> These keywords would apply to the procedure prototype.
> They
> are not needed on the procedure interface, since parameter
> would look like a normal reference parameter.
>
> This provides functionality equivalent to Factor 1 and
> Factor 2
> on opcode PARM.
> -------------------------------------------------------------------------
> #37 $5 Option to pass a trimmed string as parameter:
> OPTION(*TSTRING)
> works like OPTION(*STRING), but the string is trimmed before
> the call.
> -------------------------------------------------------------------------
> #38 $15 Allow keyword CONST for variables. CONST variables can be
> initialized, but not modified. On procedure calls, they can
> be passed only as CONST or VALUE parameters.
> -------------------------------------------------------------------------
> #39 $10 Allow date, time and timestamp parameters for %INT and %DEC,
> with an optional format parameter, to allow conversion from
> these types to numeric, in expressions.
> -------------------------------------------------------------------------
> #40 $15 Add a keyword to tell the compiler to do a level check at
> runtime on an externally-described data structure (EXTNAME
> and LIKEREC). This would require the file to exist at
> runtime.
> -------------------------------------------------------------------------
> #41 $10 LEAVE-WHEN and ITER-WHEN operation codes. Conditionally
> leave
> or iterate a loop in one statement.
>
> for i = 1 to 10;
> leave-when arr(i) = *blanks;
> endfor;
>
> dou %eof(custfile);
> read custRec;
> leave-when %eof;
>
> chain (cust_id : city_id) masterRec;
> iter-when not %found;
>
> processCust();
> enddo;
> -------------------------------------------------------------------------
>
>
>
>
>
>
>
> ======================================================
> George N. Farr
> iSeries eclipse IDE, iSeries education, and RPG Compilers
> Development manager
>
>
>
> _______________________________________________
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
> To post a message email: RPG400-L@midrange.com
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l
> or email: RPG400-L-request@midrange.com
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/rpg400-l.
> _______________________________________________
> This is the RPG programming on the AS400 / iSeries (RPG400-L) mailing list
> To post a message email: RPG400-L@midrange.com
> To subscribe, unsubscribe, or change list options,
> visit: http://lists.midrange.com/cgi-bin/listinfo/rpg400-l
> or email: RPG400-L-request@midrange.com
> Before posting, please take a moment to review the archives
> at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.