Skip to main content

Module lir

Module lir 

Source
Expand description

The LIR of docs/lir.md: a program lowered once, which the VM runs and a load module holds.

Structs§

AbendText
at is None where the op or terminator that raises the abend gives its position, and the data entry’s for Storage.init_abend.
ArithPlan
ArithStep
probe holds the places the walker’s float test locates after the receiver, static ones left out.
AssignItem
ASSIGN’s data item, and where the SELECT is, which the input trace records the value at.
Block
Bound
CallPlan
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. returning is 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.
CicsCommand
Class
Names are the defining program’s symbols. parent is the external name of the class it inherits.
ClassPart
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.
CompileTime
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
positions maps a DebugId to its position; ops holds, per block, one per op and one for the terminator; statements holds, 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).
DelimiterIn
found moves the delimiter that ended the field, and none moves SPACE when none did.
Dimension
count is the fewest elements of the array and its indicator array.
DisplayPlan
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.
EntryPoint
An ENTRY statement: a CALL of name starts at block, the statement after the ENTRY in paragraph paragraph, in the Main frame, with using in place of Storage.using.
FileDesc
A file as SELECT and FD declare it. format is how its records are held when its DD does not say; status is FILE STATUS with the MOVE its two characters take.
FileOp
One file statement on one file. phrase is AT END or INVALID KEY and its NOT phrase, as written; end_of_page WRITE’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 a Select of FileOp::arms blocks follows it.
FileSort
A SORT or MERGE of SD sd. sort_return and sort_control are SORT-RETURN and SORT-CONTROL; an input or output that is None fails the statement when the sort reaches it.
Frame
An active range. displaced is the return point it replaced at its range’s end, put back when it completes; segment the segment register when it was pushed, back when it completes. Its paragraphs run at depth, and temps are the TIMES counters of the statements that run under it, by TempId.
FromMove
WRITE, REWRITE or RELEASE FROM: to is the record as a receiving item, and check NUMCHECK’s test of from before it is read.
FunctionDefinition
A user-defined function’s definition: a place naming each formal parameter’s whole LINKAGE record, in order, and one naming the RETURNING record.
FunctionPlan
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 leaves arity None where they cannot); then the function, which for CHAR, INTEGER-OF-DATE, DATE-OF-INTEGER and RANDOM evaluates its first argument again as integer, and for NATIONAL-OF with two arguments its second; last, on an alphanumeric result, refmod’s start and length. refmod.check is 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.
HostArray
A host variable of a multiple-row statement. A host-variable array’s place is its first element, and array how far apart its elements and its indicator array’s are; without array it is one host variable, whose value an INSERT gives every row.
HostPlace
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.
IndexKeys
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.
InitField
value moved into len bytes at offset from the target’s start, by store, which was made for the kind the walker stores as; scaling is the item’s PICTURE P positions.
InitPlan
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.
InspectPhrase
pattern is None for CHARACTERS; by is REPLACING’s, and counter TALLYING’s with its add.
InspectPlan
InvokePlan
args and returning carry 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. returning is moved by the kind of the value the method returns.
Item
A data item for dump and a debugger; no executor reads it.
JsonGenerate
JSON GENERATE. In order: FROM is located, its subscripts evaluated, which begin the walk’s subscripts (IntExpr::Walk), and the tree walked from nodes[0]; then the receiver is located, the encoding read, the document written, COUNT IN and JSON-CODE stored.
JsonLeaf
Tested in this order, after the node’s null tests: suppress (left out), boolean, convert.
JsonNode
An item of the tree, offset bytes into the occurrence of the node that holds it, less the unused occurrences of the moved tables, which lie ahead of it in its record and not ahead of that node and are counted as the walk reaches it (C161), before occurs; len its size; a table’s elements are len apart, occurs of them. name is a member’s JSON string. Each occurrence, of a group or an elementary item, is null when indicator’s marker holds or it equals null, tested in that order before its value.
JsonParse
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: items qualifies a data name several items share, debug gives source positions, sql the EXEC SQL statements and ccsid the code page literals are shown in. Each may be left empty, and is then not shown.
Method
params and returns are Java type signatures. The method’s LINKAGE records after its first own_records are its part’s records, bound at each invocation to the object’s or the factory’s data.
Odo
Paragraph
ParseLeaf
ParseNode
As JsonNode, a member’s moved counted 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 to null’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
PlaceNumcheck
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
ProgramOptions
Range
RecordDepending
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 as set_integer stores; and the shortest and longest record the clause allows.
RecordSpan
Bytes of a record: from offset in the file’s record area, len long.
RefMod
Start and length count character positions: two bytes each when the place’s kind is national.
RelativeKey
The RELATIVE KEY: read as value, stored by store when a sequential READ or WRITE sets it, and digits the integer digits that bound the record numbers it can hold (None: no bound).
ReleasePlan
RELEASE of record, a record of file file, located after FROM has moved into FromMove.to, the record as a receiving item. name is the record as written.
RemainderPlan
ReportWriter
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. block also keys what the PERFORM displaced.
ReturnPlan
RETURN of file file, named name as written, and INTO’s MOVE of the record’s bytes. The op returns Arm(0) at end and Arm(1) when a record came.
ReturnPoint
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.
SearchAllPlan
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.
SearchKey
key as the WHEN term names it, and the value it must equal.
Sequence
positions gives each byte’s position from 0, where characters that collate equal share one; characters the first character given each position, which FUNCTION CHAR returns.
Services
SharedFile
File file, whose connector is the run unit’s EXTERNAL file of its name when external, and otherwise file declared_in declares GLOBAL, that program’s own file of its name.
SortKey
A key at offset in the record or table element, read as item item of kind.
SortKeys
The keys, most significant first, and the collating sequence of those marked collated when it is not EBCDIC: each byte’s position.
SqlEntry
One EXEC SQL block, declarative ones included; Program.sql[k − 1] has ordinal k. P and S are 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.
StepPlan
PERFORM VARYING’s step, SET UP and DOWN BY, and the TALLYING adds: no ROUNDED, no size error.
Storage
StringPlan
The op returns Arm(1) on overflow and Arm(0) otherwise.
StringSource
delimiter is None for DELIMITED BY SIZE.
Subscript
check is the occurrence count, present only under SSRANGE.
TableRange
An item’s displacement within its outermost table at its first occurrence, and the table’s bytes with every OCCURS at its maximum.
TableSort
A table SORT: first is the table’s first element and count how many it holds now.
UnstringInto
plan moves the field’s bytes as an alphanumeric sender; COUNT IN stores the field’s length.
UnstringPlan
The op returns Arm(1) on overflow and Arm(0) otherwise.
UserFunctionPlan
An invocation of a user-defined function, Operand::UserFunction: its definition is loaded by external, name as 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 by refmod, 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; name is 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 runs procedure through Procedures::run with 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.
ByteClass
CallArg
CallTarget
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
Expr locates each place of prepass (the float test’s, then for Mode::Fixed the dmax pass’s, static ones left out) before it evaluates expr in mode.
Compare
Cond
Const
Convert
An elementary item’s value as JSON and XML GENERATE write it.
ConvertTable
Count
DisplayItem
Expr
FileVerb
Flag
A USING phrase: what a true or null value sets, then what a false or other value sets.
FloatFrom
FrameKind
Func
GlobalAt
An offset in the slab or in LOCAL-STORAGE, or the address LINKAGE record n holds.
Image
InitValue
What an INITIALIZE field is sent.
Inspected
What INSPECT examines: a data item, or for TALLYING alone a function’s value, which rt::text::tally evaluates once before the phrases’ operands.
IntExpr
Fixed locates each place of prepass before it evaluates expr, as the walker’s dmax pass does; static places are left out.
JsonValue
LeService
The LE callable services the runtime provides.
Marker
A USING value that stands for true or null.
Markup
MethodName
Mode
MovePlan
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).
NationalFrom
NumberInto
How a number goes into a leaf.
NumericFrom
Op
Operand
Organization
ParseValue
RangeKind
Receiver
Class is a REPOSITORY class-name: name as written, which messages give, and external, which finds the class.
Replacement
ReportOp
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
SenderCheck
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.
SignTest
SortIo
USING or GIVING files, or an INPUT or OUTPUT PROCEDURE.
SortPlan
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.
SqlcaField
StartKey
StartRel
START’s relation: KEY =, KEY >, and KEY NOT < or >=.
Step
What an op tells the VM.
StorePlan
Terminator
TimeSource
TrimSide
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.
UserArgument
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
DisplayId
ExprId
FileOpId
FunctionId
InitId
InspectId
InvokeId
MarkupId
ParaId
PlaceId
RangeId
ReleaseId
ReturnId
SearchAllId
SortId
SqlId
StringId
SymId
TempId
A PERFORM TIMES counter, held in the frame the statement runs under (Frame.temps).
UnstringId
UserFunctionId