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


  • Subject: RPG IV Enhancements for this and futiure releases!!!
  • From: cmassoglia@xxxxxxxxxxx (Charles L. Massoglia)
  • Date: Tue, 05 Jan 1999 04:01:25 -0400

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