Skip to main content

Crate ironwork_rt

Crate ironwork_rt 

Source
Expand description

The runtime a program compiled by ironwork links, and none of the compiler: it may depend on numeric and zarch only. It is AGPL-3.0-or-later with the ironwork runtime exception (RUNTIME-EXCEPTION.md), so a compiled program that links it is not bound by the AGPL. module reads and writes the load modules such a program is shipped as.

Modules§

abend
The code an abend reports, as z/OS, CICS or ironwork names it, and the signals the interpreter passes up as errors to leave a statement early. With them, the I/O statuses FILE STATUS receives, and how a run ends.
bms
The mapset model BMS map source describes: each map’s fields with their positions, attributes and initial data, as SEND MAP and RECEIVE MAP use it.
calendar
The proleptic Gregorian calendar: day counts, civil fields, Lilian days and the epoch offsets.
cics
The CICS region a harness run stands in for: one task, its files, its temporary-storage and transient-data queues, and the time services. The interpreter runs the commands; this holds what they act on.
cics_tables
IBM’s CICS tables, vendored from cobolwork’s provenance by tools/sync-cics-tables.sh: each command’s options with the direction their data moves, the numbers DFHRESP names, and the numbers DFHVALUE names.
codec
A numeric item’s storage read as generated code reads it. The interpreter and the SQL runtime share it, so a host variable sends exactly the value a COMPUTE would read.
digest
SHA-256 (FIPS 180-4) that hashes a stream in blocks, so a data set is digested without being held in memory, and HMAC-SHA-256 (RFC 2104). Written here because the runtime takes no dependencies.
edit
Editing: a numeric value laid into a numeric-edited PICTURE, alphanumeric data into an alphanumeric-edited one, and de-editing back to a number.
evidence
Run journals in cobolwork’s evidence format (cobolwork docs/spec/evidence.md §4-6), so one verifier reads both tools: each record is canonical JSON hashed as SHA-256(“cobolwork-evidence/v1\n” || record without “hash”), chained by prev and seq, and each closed run adds its tip to ledger.jsonl. Nothing written holds source text or a secret.
files
Files. ASSIGN names a DD, and only the operator maps a DD to a host file, as JCL does, so a program reaches no file it was not given. A binary DD holds z/OS records byte for byte: fixed-length records back to back, or variable-length records each behind a 4-byte RDW. A text DD holds UTF-8 lines, converted through the program’s code page, and placed as a printer would place them (Open::print). Sequential files stream; indexed and relative files are held in memory (see Keyed).
linage
LINAGE’s logical page at run time: where the printer is in the page body, and how far each WRITE moves the paper past the footing area and the margins (numeric::assumptions::LINAGE_PAGE_MOVEMENT).
lir
The LIR of docs/lir.md: a program lowered once, which the VM runs and a load module holds.
module
The load module (.iwm) of docs/load-module.md: its container, encoding rules and codec.
picture
The symbols of an edited PICTURE.
reserved_words
IBM’s reserved words, vendored from cobolwork’s provenance by tools/sync-reserved-words.sh: each word of Enterprise COBOL 6.4’s Reserved words appendix with the column IBM marks it in.
sql
The SQL runtime: values at the database boundary, and the host variables they come from and go to. It reaches storage only as a byte range and a host type, so any executor can call it.
storage
The storage vocabulary a program’s data shares: how an item is held, where it sits, and the values that move between items.
strings
The byte-level work of STRING, UNSTRING and INSPECT, apart from storage and operands.
terminal
A 3270 display: its buffer of fields, the outbound data stream that writes it, the inbound Read Modified stream that reports what the operator changed, and a text rendering. The byte values are those of the 3270 Data Stream Programmer’s Reference (GA23-0059).
tn3270
A Terminal over a TCP connection speaking TN3270 (RFC 1576): telnet negotiation of the terminal type, EOR and BINARY, then 3270 data streams as records ended by IAC EOR.
vocab
The vocabulary the front end, the interpreter and a compiled program share: source positions and the small enums of the data division, INSPECT and OPEN.

Macros§

codec_enum
Encode and Decode from the variants and their tags: Unit = 0, Named { a } = 1, Tuple(a) = 2.
codec_struct
Encode and Decode from one field list; check names a fn(&T) -> Result<(), String>.