Skip to content

v0.9.48

Choose a tag to compare

@github-actions github-actions released this 08 Oct 02:18
· 51 commits to main since this release
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.