×

Good News Everybody!

The new search engine is LIVE!

Please report any problems to david (at) midrange.com.




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 thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2026 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.