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