You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Twenty more features RPG developers asked IBM for -- the second tier of
the IBM Ideas portal's most-voted RPG requests -- and the standard RPG
several of them needed. Every change is checked on a real IBM i
(PUB400): the standard fixes run the same there, and the new features
are OpenRPG extensions that IBM i's compiler rejects.
- %SCANRPL now honours its start and length operands; it used to scan
the whole source. An empty scan string is status 100, as on IBM i (it
looped forever).
- OPTIONS(*TRIM) on a parameter is now applied: the argument arrives
with leading and trailing blanks trimmed. It was parsed and ignored.
- OPTIONS(*OMIT) on a VALUE parameter is now an error (RNF3753), as on
IBM i.
- Growing a DIM(*AUTO) array past its maximum is status 124, as on IBM
i; it was 121.
- %CHAR of %XFOOT of a PACKED array has the array's decimal places
(3.00, not 3.000000).
- %IF(condition : value if true : value if false) (93 votes).
- Keyword arguments: proc(name => 'Ada' : title => 'Dr.') (49).
- %SCANRPL with *FIRST or *LAST (49, and 18).
- OPTIONS(*UPPER) and OPTIONS(*LOWER) on parameters (48).
- CHAR with no length: a string of any length (44).
- INZ(%LIST(...)) on an array (41).
- %XFOOT, %MAXARR, %MINARR and IN over ds(*).subfield (39).
- %COMPCORR(ds1 : ds2 {: n}): compare data structures (38).
- DEPRECATED procedures, with compile-time warnings (35).
- %LOOKUP(%KDS(key) : ds(*)): search on several subfields (34).
- %REPEAT(string : count) (29).
- DEFAULT(value) for *NOPASS and *OMIT parameters (28).
- %PROGNAME (27).
- Binary literals: B'10100001' (26).
- FOR-EACH item IN array INDEX(i) (22).
- A comparison procedure for SORTA and %LOOKUPxx: %PADDR(proc) (22).
- WHEN-IS-NOT and WHEN-NOT-IN (22).
- *EMPTY (16).
- %TOHEX (or %HEX) and %FROMHEX (14).
- /MESSAGE {*WARNING | *ERROR} 'text' (12).
Each is described in docs/GUIDE.md. Source that uses them compiles only
with OpenRPG.
- SELECT with an operand, with WHEN-IS and WHEN-IN (IBM i 7.4/7.5).
- ds(*).subfield in SORTA and %LOOKUP.
- arr(*NEXT) on a DIM(*AUTO) array.
- %BITAND, %BITOR, %BITXOR and %BITNOT of character operands, byte by
byte, and with more than two operands.
- A field or literal passed for an OPTIONS(*OMIT) parameter; only *OMIT
itself could be.
- A procedure with no DCL-PR called before its DCL-PROC.
- The post-release smoke test runs the release's own tests, from its
tag; it used to take main's newer ones.
- The IBM i conformance jobs stop after 60 and 90 minutes; one stalled
on the runner for six hours.
449 OpenRPG tests, 45 dspfc tests and 31 interactive display-file tests
pass.