× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@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-2024 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.