|
Thought this might be of interest. Send responses to farr@ca.ibm.com
>X-From_: farr@ca.ibm.com Tue Jan 5 14:11:29 1999
>From: farr@ca.ibm.com
>Date: Tue, 5 Jan 1999 14:08:28 -0500
>Subject: RPG IV Enhancements for this and futiure releases!!!
>Content-Disposition: inline
>
>
>
>PLEASE PASS THIS ON TO ANYONE ELSE WHO MIGHT BE INTERESTED:
>
>This is your chance to influence what goes in the next or future releases
>of the RPG IV product. DON'T MISS THIS CHANCE. An opportunity
>of a life time.
>
>You have $100 to spend. Fill your shopping cart with up to $100 worth of
>the following enhancements. If you have enough money, you can buy an item
>more than once to indicate that it is a high-priority for you. Be careful
>not to spend more than $100. If you do, your response may not be counted.
>
>IBMers: Yes, you can vote as well. This is for internal IBM users as well.
>
>Please respond with a table something like this (created by editing the
>list):
>
>Price|Item| Item
> |Num |
>-----+----+----------------------------------------------------------------
>$4 |3 | Factor 1 *EXTFMT for MOVE/MOVEL/TEST indicating that the
>$8 |7 | Bitwise operations in expressions.
>
>$20 |9 | MONITOR operation group
>
>$2 |12 | Extender on SORTA to reverse the order of sorting.
>$8 |13 | New keyword LIKEDS(dsname) PREFIX(pfx : nbr_char_replaced)
>$2 |16 | ELSEIF opcode.
>$4 |17 | Keylists in D specs.
>$20 |24 | Allow dynamic resizing of standalone arrays or overlay arrays.
>
>$20 |24 | Allow dynamic resizing of standalone arrays or overlay arrays.
>
>$4 |26 | New keyword, RECPREFIX, to prefix record-format names to
>$8 |8 | Date/time/timestamp operations in expressions. ie:
>
>-----+----+-----------------------------------------------------------
>$100 (total)
>
>
>
>Price|Item| Item
> |Num |
>-----+----+----------------------------------------------------------------
>$6 |1 | Run-time control of actual file to be opened by an F spec
> | | keyword.
> | |
> | | FILENAME(name)
> | | where the name is a field or literal in one of these
> | | formats (lib can be '*LIBL', and mbr can be '*FIRST')
> | | - lib/file(mbr)
> | | - lib/file
> | | - file(mbr)
> | | - file
>-----+----+-------------------------------------------------------------
>$4 |2 | 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.)
>-----+----+-------------------------------------------------------------
>$4 |3 | Factor 1 *EXTFMT for MOVE/MOVEL/TEST indicating that the
> | | date/time format for the character or numeric value
> | | should be the same as the external format of the date/time
> | | field. This implies that for that date/time field, all
> | | external formats must be the same.
>-----+----+---------------------------------------------------------------
>$4 |4 | %INT(char expression) and %FLOAT(char expression)
> | | Return the integer or float value of an expression.
> | | Example: eval i = %INT('123')
> | | ===> i = 123
> | | eval x = %FLOAT('123.4')
> | | ===> x = 1.123e2
> | | eval x = %FLOAT('-1.25E27')
> | | ===> x = -1.25e27
>-----+----+---------------------------------------------------------------
>$100 |5 | Full free-form calculations (no new function, syntax only)
>-----+----+---------------------------------------------------------------
>$12 |6 | Allow specification of the values allowed for a field with
> | | D spec keywords RANGE and VALUES.
> | |
> | | Example:
> | | D temp S 10i 0 range(-40 : 120)
>
> | | D sex S 1a values('M':'F')
>
> | |
>
> | | If a value is assigned that is not correct, an exception
>
> | | would be given. The TEST operation would be allowed for
>
> | | the field.
>
> | | If the field is used, and it has an incorrect value, an
>exception
> | | would be given.
>
>-----+----+----------------------------------------------------------------
>
>$8 |7 | Bitwise operations in expressions.
>
> | | Allows integer/unsigned OR character operands
> | | If you pick this, please indicate your preference for syntax:
>
> | |
>
> | | Infix | BIF
>
> | | -----------+----------------------
>
> | | x andb y | %bitand(x : y)
>
> | | x orb y | %bitor(x : y)
>
> | | x xorb y | %bitxor(x : y)
>
> | | notb y | %bitnot(x)
> | |
> | | Example: x = x'01A5' = B'0000 0001 1010 0101'
> | | y = x'11B3' = B'0001 0001 1011 0011'
> | |
> | | x andb y = x'01A1' = B'0000 0001 1010 0001'
> | | x orb y = x'11B7' = B'0001 0001 1011 0111'
> | | x xorb y = x'1016' = B'0001 0000 0001 0110'
> | | notb y = x'EE4C' = B'1110 1110 0100 1100'
> | |
> | | (Rules for unequal-length operands to be determined. Probably
> | | left-padded with x'00' for numerics, right-padded with x'00'
> | | for characters.)
>-----+----+--------------------------------------------------------------
>
>$8 |8 | Date/time/timestamp operations in expressions. ie:
>
> | | C EVAL dt = dt + %DAYS(23)
>
> | | C EVAL days = %DAYS(dt1 - dt2)
>
>-----+----+--------------------------------------------------------------
>
>$20 |9 | MONITOR operation group
>
> | | If an unhandled (no E or error indicator) exception occurs
>
> | | in the code between the MONITOR and the first WHEN or OTHER,
>
> | | control branches to the first WHEN or OTHER that matches.
>
> | |
>
> | | C MONITOR
>
> | | C do something
>
> | | C can have nested MONITORs or DO/IF etc. here
>
> | | C do something else
>
> | | C WHEN namelen < 100 and status = 00100
>
> | | C handle string error
>
> | | C WHEN status > 01000
>
> | | C handle file error
>
> | | C OTHER
>
> | | C handle all other errors
> | | C handle all other errors
> | | C ENDMON
> | |
>
>-----+----+-------------------------------------------------------------
>$6 |10 | SORTA overarr1 : overarr2 : overarr3
> | |
> | | Sort an array based on the keys in several overlaid
> | | arrays. The second, third etc. arrays would be used to
> | | sort elements that had equal values with earlier arrays.
> | |
> | | The arrays must all be arrays defined with OVERLAY over
> | | the same larger array
> | |
> | | (Note: this enhancement can co-exist with the next - the
> | | two new versions of SORTA are distinguished by the
> | | presence or absence of the WITH keyword.)
>-----+----+--------------------------------------------------------------
>$6 |11 | SORTA array1 : array2 : array3 WITH key_array
> | | All the arrays including key_array are sorted, but the
> | | sort sequence is determined by key_array
> | |
> | | - the arrays cannot overlay each other
>-----+----+--------------------------------------------------------------
>$2 |12 | Extender on SORTA to reverse the order of sorting.
> | | SORTA(A) SORTA(D).
>-----+----+--------------------------------------------------------------
>$8 |13 | New keyword LIKEDS(dsname) PREFIX(pfx : nbr_char_replaced)
> | |
> | | Would solve the problem of not being able to prototype
> | | data structure parameters, and might allow conveniently
> | | defining substructures like other structures.
>-----+----+----------------------------------------------------------
>$2 |14 | Allow debugging of procedure return values.
> | | EVAL _QRNU_RET_procname
>-----+----+----------------------------------------------------------
>$4 |15 | BIF %OCUR(mds) to query or set current occurrence of DS
>-----+----+----------------------------------------------------------
>$2 |16 | ELSEIF opcode.
>-----+----+----------------------------------------------------------
>$4 |17 | Keylists in D specs.
>-----+----+------------------------------------------------------------
>$2 |18 | Predefined compiler directives
>
> | | - *AS400 or *VARPG
>
> | | - *V4R4M0
>
> | | e.g. TGTRLS(V3R7M0) would define *V3R1M0, *V3R2M0, *V3R7M0
>
> | | - maybe things like *TRUNCNBR, *ALWNULL ...
>
>-----+----+------------------------------------------------------------
>$16 |19 | Implement %CHECK, %CHECKR, %XLATE, %SCANR, %LOOKUP
>
>-----+----+------------------------------------------------------------
>$4 |20 | 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.
>
>-----+----+------------------------------------------------------------
>$4 |21 | Support
>
> | | C *RANGEYMD TEST DateField
>
> | | C *RANGECYMD TEST DateField
>
> | | to enable a check that the date is within the YMD or CYMD
>range.
>-----+----+------------------------------------------------------------
>$8 |22 | Enhance TEST to check validity of packed, zoned, binary, and
>
> | | varying length character and graphic fields.
>
>-----+----+------------------------------------------------------------
>$6 |23 | %repeat(character expression : total_length)
>
> | | The value returned from %repeat is the expression repeated
>
> | | enough times to fill up the length.
> | |
> | | Example: (res is char(10))
> | | EVAL res = %repeat('abc' : %len(res))
> | | res = 'abcabcabca'
>
> | | EVAL res = %repeat('abc' : 5)
>
> | | res = 'abcab '
>
> | |
>
> | | Alternatively:
> | | Allow multiplication of character expressions
>
> | | eval res = 'abc' * times_to_repeat
>
> | | Example: EVAL res = 'abc' * 4
>
> | | 'abc' * 4 = 'abcabcabcabc'
>
> | | res = 'abcabcabca'
>
> | |
> | | If you choose this item, please indicate which version you
>prefer.
>-----+----+-----------------------------------------------------------
>$20 |24 | Allow dynamic resizing of standalone arrays or overlay arrays.
>
> | | 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.
>
> | |
>
> | | D array S 10A VARDIM(initsize {:
>maxsize|)
> | | C EVAL %ELEM(array) = new_size
>
> | |
>
> | | "maxsize" is required for subfields.
>
> | |
>
> | | Also LHS %OCCURs for varying sized multiple-occurrence DS.
>-----+----+-----------------------------------------------------------
>$2 |25 | format change on a LIKE define for numerics
>
> | | D fld1 s 5s 0
>
> | | D fld2 s p like(fld1)
>
>-----+----+-----------------------------------------------------------
>$4 |26 | New keyword, RECPREFIX, to prefix record-format names to
>
> | | save having to do all the renames.
>
>-----+----+-----------------------------------------------------------
>$4 |27 | DIM(*FIT) with overlay field.
>
> | | (Valid only if the array fits exactly)
>
>-----+----+-----------------------------------------------------------
>$30 |28 | Multiple-dimension arrays
>-----+----+-----------------------------------------------------------
>$20 |29 | Multiple-dimension arrays supported only in expressions.
> | | Besides not being allowed in fixed-form calculations, it
> | | would be impossible to code these array elements in input
> | | or output specifications.
>-----+----+-----------------------------------------------------------
>
>
>
>
>George N. Farr - farr@ca.ibm.com
>RPG and Visual RPG Development manager.
>RPG and Java come from the same family. It has been tested!
>
>
>
>
Charlie Massoglia, Massoglia Technical Consulting, Inc.
PO Box 1065, Okemos, MI 48854, USA
517-676-9700 Fax: 517-676-1006 EMAIL: cmassoglia@voyager.net
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* This is the RPG/400 Discussion Mailing List! To submit a new *
* message, send your mail to "RPG400-L@midrange.com". To unsubscribe *
* from this list send email to MAJORDOMO@midrange.com and specify *
* 'unsubscribe RPG400-L' in the body of your message. Questions should *
* be directed to the list owner / operator: david@midrange.com *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
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.