Expand description
The LIR of docs/lir.md: a program lowered once, which the VM runs and a load module holds.
Structs§
- Abend
Text atis None where the op or terminator that raises the abend gives its position, and the data entry’s forStorage.init_abend.- Arith
Plan - Arith
Step probeholds the places the walker’s float test locates after the receiver, static ones left out.- Assign
Item - ASSIGN’s data item, and where the SELECT is, which the input trace records the value at.
- Block
- Bound
- Call
Plan - The op returns Arm(0) after a normal return, Arm(1) when no program has the name and ON
EXCEPTION is written, or End(StopRun); Next rather than Arm(0) when neither phrase is written.
returningis moved by the callee’s RETURNING kind. - Carriage
machine: machine codes rather than ASA characters;reserved: the character is the record’s own first byte (NOADV) rather than one added before it.- Cics
Command - Class
- Names are the defining program’s symbols.
parentis the external name of the class it inherits. - Class
Part - FACTORY or OBJECT data: a program whose storage is the data as its VALUE clauses leave it, and the offset of each 01 or 77 record in it.
- Code
- What a program’s LIR section holds, borrowed: what the printer prints.
- Compile
Time - When the program was compiled, which FUNCTION WHEN-COMPILED gives: seconds since 1970-01-01T00:00:00Z and hundredths, and where the time came from.
- Converting
- Debug
positionsmaps a DebugId to its position;opsholds, per block, one per op and one for the terminator;statementsholds, per block, each statement that starts there: the op it starts before, the terminator’s index when it starts before that, and its position.- Declaratives
- What the declaratives need at run time besides each file’s own procedure (
FileDesc.error). - Delimiter
In foundmoves the delimiter that ended the field, andnonemoves SPACE when none did.- Dimension
countis the fewest elements of the array and its indicator array.- Display
Plan - DISPLAY’s items, each shown as the walker shows its kind, then a newline unless NO ADVANCING.
- Edit
- An edited PICTURE’s symbols, and the currency sign value its currency symbol stands for, empty when it has none.
- Entry
Point - An ENTRY statement: a CALL of
namestarts atblock, the statement after the ENTRY in paragraphparagraph, in the Main frame, withusingin place ofStorage.using. - File
Desc - A file as SELECT and FD declare it.
formatis how its records are held when its DD does not say;statusis FILE STATUS with the MOVE its two characters take. - FileOp
- One file statement on one file.
phraseis AT END or INVALID KEY and its NOT phrase, as written;end_of_pageWRITE’s END-OF-PAGE and NOT END-OF-PAGE. With neither the op returns Next; otherwise it returns Arm(1) for the ON phrase, Arm(2) for NOT ON, Arm(3) for END-OF-PAGE, Arm(4) for NOT END-OF-PAGE, and Arm(0) when no phrase written runs, and aSelectofFileOp::armsblocks follows it. - File
Sort - A SORT or MERGE of SD
sd.sort_returnandsort_controlare SORT-RETURN and SORT-CONTROL; an input or output that is None fails the statement when the sort reaches it. - Frame
- An active range.
displacedis the return point it replaced at its range’s end, put back when it completes;segmentthe segment register when it was pushed, back when it completes. Its paragraphs run atdepth, andtempsare the TIMES counters of the statements that run under it, byTempId. - From
Move - WRITE, REWRITE or RELEASE FROM:
tois the record as a receiving item, andcheckNUMCHECK’s test offrombefore it is read. - Function
Definition - A user-defined function’s definition: a place naming each formal parameter’s whole LINKAGE record, in order, and one naming the RETURNING record.
- Function
Plan - FUNCTION, as the walker evaluates it: each argument in turn, as a comparison evaluates an
operand or expression; then, when the values the arguments give number outside
func.arity(),arity’s abend (lowering leavesarityNone where they cannot); then the function, which for CHAR, INTEGER-OF-DATE, DATE-OF-INTEGER and RANDOM evaluates its first argument again asinteger, and for NATIONAL-OF with two arguments its second; last, on an alphanumeric result,refmod’s start and length.refmod.checkis always false: the walker checks a function’s reference modification against its result whatever SSRANGE says. - Global
- A GLOBAL record or file of a program that contains others: where the record, or the file’s record area, is in an activation of it.
- Host
Array - A host variable of a multiple-row statement. A host-variable array’s
placeis its first element, andarrayhow far apart its elements and its indicator array’s are; withoutarrayit is one host variable, whose value an INSERT gives every row. - Host
Place - A host variable, or one member of a host structure at
member’s offset and length. The indicator comes with the offset of this member’s element in it. - Index
Keys - RECORD KEY, then each ALTERNATE RECORD KEY with WITH DUPLICATES; a key of reference numbers them from 0 in this order.
- Indicator
- INDICATING: the indicator IN names, located with the walk’s subscripts whatever the flag, then the flag, on for a null.
- Init
Field valuemoved intolenbytes atoffsetfrom the target’s start, bystore, which was made for the kind the walker stores as;scalingis the item’s PICTURE P positions.- Init
Plan - INITIALIZE of one item: each elementary item the walk reaches, every occurrence listed, with FILLER and its phrases’ choice of receivers and senders made. A reference-modified item is one field, which is the item as located.
- Inspect
Phrase patternis None for CHARACTERS;byis REPLACING’s, andcounterTALLYING’s with its add.- Inspect
Plan - Invoke
Plan argsandreturningcarry each Java type signature. The op evaluates the method name, then the receiver, then each argument, and returns Arm(1) when no method matches and ON EXCEPTION is written, Arm(0) otherwise, or Next when neither phrase is written.returningis moved by the kind of the value the method returns.- Item
- A data item for
dumpand a debugger; no executor reads it. - Json
Generate - JSON GENERATE. In order: FROM is located, its subscripts evaluated, which begin the walk’s
subscripts (
IntExpr::Walk), and the tree walked fromnodes[0]; then the receiver is located, the encoding read, the document written, COUNT IN and JSON-CODE stored. - Json
Leaf - Tested in this order, after the node’s null tests:
suppress(left out),boolean,convert. - Json
Node - An item of the tree,
offsetbytes into the occurrence of the node that holds it, less the unused occurrences of themovedtables, which lie ahead of it in its record and not ahead of that node and are counted as the walk reaches it (C161), beforeoccurs;lenits size; a table’s elements arelenapart,occursof them.nameis a member’s JSON string. Each occurrence, of a group or an elementary item, is null whenindicator’s marker holds or it equalsnull, tested in that order before its value. - Json
Parse - JSON PARSE. In order: the source is located, the encoding read (ENCODING FROM CODEPAGE of a national source is JSON-CODE 109 before it is), the text decoded and parsed; then, for a document that parses, INTO is located and its subscripts evaluated, which begin the walk’s, and each value goes into the item whose name matches it, by MOVE’s rules; JSON-CODE and then JSON-STATUS are stored.
- Linage
- LINAGE: each value evaluated, in this order, whenever the page’s geometry is taken (at OPEN OUTPUT or EXTEND and at each new page), and LINAGE-COUNTER with its store.
- Listing
- A program’s code as text. The other sections name what the code refers to:
itemsqualifies a data name several items share,debuggives source positions,sqlthe EXEC SQL statements andccsidthe code page literals are shown in. Each may be left empty, and is then not shown. - Method
paramsandreturnsare Java type signatures. The method’s LINKAGE records after its firstown_recordsare its part’s records, bound at each invocation to the object’s or the factory’s data.- Odo
- Paragraph
- Parse
Leaf - Parse
Node - As
JsonNode, a member’smovedcounted as its pair is reached, unless SUPPRESS names it. Each item takes a value in this order: a second value at the same item and offset is a duplicate;indicator; then a null goes tonull’s MOVE, or is ignored, or is a status; an object fills a group’s members; any other value goes to a leaf. - Phrase
- Place
- Place
Numcheck - NUMCHECK’s facts of a reference, fixed when compiled (
compile::numcheck): under ZON(LAX), what its item may hold because of the item its record redefines; and whether the compiler removed the test where this reference reads the item, having found it always fails. - Plans
- The plan tables ops index; a MOVE’s plan sits in its op.
- Program
- Program
Options - Range
- Record
Depending - RECORD IS VARYING DEPENDING ON (
crate::fileio::Depending): the item a successful READ or RETURN stores the record’s length in and WRITE, REWRITE and RELEASE take it from, read as an integer and stored asset_integerstores; and the shortest and longest record the clause allows. - Record
Span - Bytes of a record: from
offsetin the file’s record area,lenlong. - RefMod
- Start and length count character positions: two bytes each when the place’s kind is national.
- Relative
Key - The RELATIVE KEY: read as
value, stored bystorewhen a sequential READ or WRITE sets it, anddigitsthe integer digits that bound the record numbers it can hold (None: no bound). - Release
Plan - RELEASE of
record, a record of filefile, located after FROM has moved intoFromMove.to, the record as a receiving item.nameis the record as written. - Remainder
Plan - Report
Writer - The reports of one program. Items (
usize) are data items: by their index in the interpreter, and once lowered by the id of a static place in the slab. - Resume
- The statement after an out-of-line PERFORM that runs once and is a statement of paragraph
para:block, where control resumes when it passes that PERFORM’s return point after leaving its range.blockalso keys what the PERFORM displaced. - Return
Plan - RETURN of file
file, namednameas written, and INTO’s MOVE of the record’s bytes. The op returns Arm(0) at end and Arm(1) when a record came. - Return
Point - A return point armed at the end of a range’s last paragraph by frame
frame, with the PERFORM’s resume. - Returns
- The return points of one activation: the one armed at each paragraph’s end, what each
resumable PERFORM control left displaced (by its
Resume.block), and the frames, Main first. - Scope
- A program’s EXTERNAL and GLOBAL storage, files and procedures; empty for a program with none.
- Search
AllPlan - SEARCH ALL’s binary search. The op returns Arm(0) on an occurrence whose keys equal their WHEN terms, for a Branch on the whole condition, and Arm(1) when the search ends without one.
- Search
Key keyas the WHEN term names it, and thevalueit must equal.- Sequence
positionsgives each byte’s position from 0, where characters that collate equal share one;charactersthe first character given each position, which FUNCTION CHAR returns.- Services
- Shared
File - File
file, whose connector is the run unit’s EXTERNAL file of its name whenexternal, and otherwise filedeclared_indeclares GLOBAL, that program’s own file of its name. - SortKey
- A key at
offsetin the record or table element, read as itemitemofkind. - Sort
Keys - The keys, most significant first, and the collating sequence of those marked
collatedwhen it is not EBCDIC: each byte’s position. - SqlEntry
- One EXEC SQL block, declarative ones included;
Program.sql[k − 1]has ordinal k.PandSare the executor’s handles to a data item and to text: the LIR’s ids by default, the walker’s own references in the interpreter. - Sqlca
- The SQLCA fields the program declares, or its own SQLCODE and SQLSTATE, in the order filled.
- Step
Plan - PERFORM VARYING’s step, SET UP and DOWN BY, and the TALLYING adds: no ROUNDED, no size error.
- Storage
- String
Plan - The op returns Arm(1) on overflow and Arm(0) otherwise.
- String
Source delimiteris None for DELIMITED BY SIZE.- Subscript
checkis the occurrence count, present only under SSRANGE.- Table
Range - An item’s displacement within its outermost table at its first occurrence, and the table’s bytes with every OCCURS at its maximum.
- Table
Sort - A table SORT:
firstis the table’s first element andcounthow many it holds now. - Unstring
Into planmoves the field’s bytes as an alphanumeric sender; COUNT IN stores the field’s length.- Unstring
Plan - The op returns Arm(1) on overflow and Arm(0) otherwise.
- User
Function Plan - An invocation of a user-defined function,
Operand::UserFunction: its definition is loaded byexternal,nameas written naming it in messages; each argument is evaluated in turn; the function runs as a callee (rt::callee::By::Function); its value is its RETURNING item’s, reference-modified last byrefmod, which is checked whatever SSRANGE says. - XmlGenerate
- XML GENERATE. In order: the receiver is located and the encoding read, which may end the
statement with XML-CODE 411, 414 or 415; NAMESPACE is read (416), then NAMESPACE-PREFIX for a
namespace that is not empty (419); FROM is located, its subscripts evaluated, and the tree walked from
nodes[0]; a national value in a single-byte document ends it with 420; then the document is written and COUNT IN and XML-CODE stored. - XmlNode
- As
JsonNode;nameis the element or attribute name as the document writes it. - XmlParse
- XML PARSE. The document is located, the encoding read (a CCSID ironwork has no page for abends
IRONWORK), and the document located again and decoded; then each event the scanner reports
sets XML-EVENT, XML-CODE and XML-INFORMATION and the fragment registers (
Base::Xml), and runsprocedurethroughProcedures::runwith the arrival PERFORM LOOP, at the statement’s depth. A procedure that leaves ends the statement with its step. After it completes, XML-CODE is read: a warning the scanner reports as an EXCEPTION event (an undeclared prefix) goes on when it is 0, and that or any other EXCEPTION otherwise ends the parse with the scanner’s code; END-OF-DOCUMENT ends it with 0; at END-OF-INPUT 1 locates the document again for the next segment and any other value ends the input; after any other event -1 ends the parse with -1. XML-CODE then takes the result.
Enums§
- Access
- Advance
- WRITE’s ADVANCING phrase. A count below zero moves as zero; PAGE is channel 1, or the next page of a LINAGE file.
- Argument
- A FUNCTION argument: one value, or the elements of a table written with ALL subscripts.
- Base
- Binding
- Where a record addressed as a LINKAGE record gets its address when the program is activated.
- Byte
Class - CallArg
- Call
Target - Ccsid
- The CCSID a statement’s document is in: none written, the program’s CODEPAGE (JSON’s ENCODING FROM CODEPAGE), or an operand read as the statement starts.
- Chars
- An operand as STRING, UNSTRING, INSPECT and CALL BY CONTENT take it: bytes, not a value.
- Collating
- What alphanumeric comparisons, HIGH-VALUE and LOW-VALUE, FUNCTION CHAR and ORD, and a file SORT without its own COLLATING SEQUENCE follow.
- Comparand
Exprlocates each place ofprepass(the float test’s, then forMode::Fixedthe dmax pass’s, static ones left out) before it evaluatesexprinmode.- Compare
- Cond
- Const
- Convert
- An elementary item’s value as JSON and XML GENERATE write it.
- Convert
Table - Count
- Display
Item - Expr
- File
Verb - Flag
- A USING phrase: what a true or null value sets, then what a false or other value sets.
- Float
From - Frame
Kind - Func
- Global
At - An offset in the slab or in LOCAL-STORAGE, or the address LINKAGE record n holds.
- Image
- Init
Value - What an INITIALIZE field is sent.
- Inspected
- What INSPECT examines: a data item, or for TALLYING alone a function’s value, which
rt::text::tallyevaluates once before the phrases’ operands. - IntExpr
Fixedlocates each place ofprepassbefore it evaluatesexpr, as the walker’s dmax pass does; static places are left out.- Json
Value - LeService
- The LE callable services the runtime provides.
- Marker
- A USING value that stands for true or null.
- Markup
- Method
Name - Mode
- Move
Plan - Named
- How a JSON name matches an item: a NAME literal exactly, a data-name whatever the case of its letters, or never (NAME … OMITTED).
- National
From - Number
Into - How a number goes into a leaf.
- Numeric
From - Op
- Operand
- Organization
- Parse
Value - Range
Kind - Receiver
Classis a REPOSITORY class-name:nameas written, which messages give, andexternal, which finds the class.- Replacement
- Report
Op - INITIATE, GENERATE, TERMINATE or SUPPRESS PRINTING, with the report and DETAIL group by index.
GENERATE of a report alone, for summary reporting, has no
detail. - RowCount
- FOR n ROWS: absent, a constant, or a host variable holding n.
- Section
- Sender
Check - NUMCHECK’s test of a MOVE’s sending item, once the item is located and before it is read
(
rt::store::numcheck_sender). - SetTo
- SET of a condition-name, its conditional variable located with the walk’s subscripts.
- Sign
Test - SortIo
- USING or GIVING files, or an INPUT or OUTPUT PROCEDURE.
- Sort
Plan - Spacing
- SqlNames
- What DESCRIBE puts in each SQLNAME: the column’s name, its label, or its label and else its name.
- SqlStatement
- The typed statement with its host variables resolved and each OPEN given its DECLARE’s inputs.
- SqlTest
- WHENEVER’s classes: SQLCODE < 0, SQLCODE = 100, or a warning.
- Sqlca
Field - Start
Key - Start
Rel - START’s relation: KEY =, KEY >, and KEY NOT < or >=.
- Step
- What an op tells the VM.
- Store
Plan - Terminator
- Time
Source - Trim
Side - UpDown
- SET UP BY or DOWN BY on one receiver, by what reading it gives: an address moved by the step, a number the step is added to (no ROUNDED, no size error), or a value the walker refuses once it has read it.
- User
Argument - A data item passed BY REFERENCE passes its address. Any other argument passes its value, which the function’s activation moves into a temporary its formal parameter describes (C272).
- XmlForm
- XmlRegister
- The XML special registers whose length is the current event’s fragment’s: empty outside a processing procedure.
- XmlValue
Type Aliases§
- AbendId
- ArithId
- BlockId
- CallId
- CicsId
- CondId
- ConstId
- DebugId
- Display
Id - ExprId
- File
OpId - Function
Id - InitId
- Inspect
Id - Invoke
Id - Markup
Id - ParaId
- PlaceId
- RangeId
- Release
Id - Return
Id - Search
AllId - SortId
- SqlId
- String
Id - SymId
- TempId
- A PERFORM TIMES counter, held in the frame the statement runs under (
Frame.temps). - Unstring
Id - User
Function Id