Skip to content

ironwork 0.4.1

Choose a tag to compare

@github-actions github-actions released this 03 Oct 14:00
· 109 commits to main since this release

Summary

ironwork 0.4.1 publishes what 0.4.0 built to npm, crates.io and PyPI, says through its exit status who ended a run, and runs CICS LINK and XCTL closer to CICS.

  • Exit codes: run, cics and job pass a RETURN-CODE of 0 to 238 through and keep 239 and above for ironwork: 240 an abend, 241 no program to run, 242 a code-generation refusal, 243 a VM stop, 244 a construct ironwork does not run, 245 an unreadable source, JCL or module, 246 usage, 255 a panic.
  • cobolwork's convention: --exit-code gives cobolwork's verdict codes in place of the band.
  • CICS: LINK and XCTL raise LENGERR for a COMMAREA length outside 0 to 32763 and for a COMMAREA with no address, and each LINK or XCTL run unit has its own FUNCTION RANDOM sequence and RETURN-CODE.
  • VM and lowering: SEARCH ALL keys, floating-point EXEC CICS options and unsubscripted SQL indicator arrays give the interpreter's results on the VM.

Limit: 0.4.0 is on GitHub only; its npm job failed on a path in the release workflow, and crates.io and PyPI waited behind it.

Changed

  • ironwork run, cics and job exit with a code in a band ironwork reserves when ironwork, not the program, ends the run. A RETURN-CODE of 0 to 238 is the exit status. 239 is a RETURN-CODE outside 0 to 238 or of 239, whose value standard error and the evidence journal give. 240 is an abend, 241 a compile that gives no program to run, 242 a code-generation refusal, 243 a VM stop, 244 a construct ironwork does not run (the IRONWORK, EXEC and JAVA abends, and JCL refused before any step), 245 an unreadable source, JCL or module, 246 usage and 255 a panic. A job exits as its first step that ended without a return code says; COND and IF see the step return codes they saw before.
  • --exit-code gives cobolwork's verdict convention instead: 0 for RETURN-CODE 0, 1 another, 2 usage or unreadable input, 3 an abend, 4 refused, 5 stopped, 70 internal.
  • ironwork check and compile keep IBM's compile return codes, and compare, dump and fuzz their own.
  • EXEC CICS LINK and XCTL raise LENGERR, RESP2 11, for a COMMAREA length below 0 or above 32763, and RESP2 26 for a COMMAREA with no address, such as DFHCOMMAREA in a program given none; that used to abend ASRA. RETURN raises RESP2 26 too. A LINK or XCTL to a program that cannot be found gives PGMIDERR with RESP2 1. Without a COMMAREA, EIBCALEN is 0 (C103, C128).
  • Under CICS, each LINK, XCTL or HANDLE ABEND PROGRAM run unit has its own FUNCTION RANDOM sequence, and a LINKed program's RETURN-CODE starts at 0 and comes back to the LINK in RESP2 and EIBRESP2 (Language Reference p. 621; Language Environment "Finding the return and reason code from the enclave"; C104, C105). Pointers SET TO ENTRY stay valid across the task (C106).

Fixed

  • SEARCH ALL compares a zoned key with its WHEN value as a relation does, so the VM finds the occurrence the interpreter finds when the key holds invalid zoned data or a signed key runs under NOZWB.
  • An EXEC CICS option read as an integer, such as LENGTH(FUNCTION NUMVAL(...)), takes a floating-point value's whole part on the VM as on the interpreter, and lowering refuses a FUNCTION whose arguments hold a floating-point expression, where the two executors would differ.
  • A host structure's indicator array named without a subscript, as :CLS:CLS-IND names CLS-IND OCCURS 3, is its first element, as Db2 for z/OS reads it. The interpreter abended IRONWORK at the first row and lowering refused the program.
  • The release workflow publishes the npm tarball by a file path, so a tag's run reaches npm, crates.io and PyPI.

Upgrading

  • Scripts that read ironwork run's exit status: an abend now exits 240, not 16, and a RETURN-CODE of 239 or more exits 239. Use --exit-code for cobolwork's verdict codes.
  • Under CICS, a program that relied on an out-of-range COMMAREA length running, or on RANDOM or RETURN-CODE carrying across a LINK, now sees LENGERR or a fresh value.
  • Load modules from 0.4.0 run unchanged; the format is still 0.3.

Install

ironwork for COBOL 0.4.1. Builds for Linux (static), macOS and Windows, and the npm package @portll/ironwork. The ironwork-tls archives are the same builds with TLS for --sql-db (rustls, sslmode=verify-full). The Python package is on PyPI as ironwork, and the crates are on crates.io. Each file carries SLSA build provenance: gh attestation verify -R Portll/ironwork.