pub enum Stmt {
Show 45 variants
Move {
from: Operand,
to: Vec<Ref>,
pos: Pos,
},
Compute {
targets: Vec<Target>,
expr: Expr,
size_error: Option<SizeError>,
pos: Pos,
},
Arith(Box<Arith>),
Corresponding(Box<Corresponding>),
If {
cond: Cond,
then: Vec<Stmt>,
otherwise: Vec<Stmt>,
pos: Pos,
},
PerformInline {
body: Vec<Stmt>,
repeat: Loop,
pos: Pos,
},
PerformProc {
from: ProcName,
thru: Option<ProcName>,
repeat: Loop,
pos: Pos,
},
Evaluate {
subjects: Vec<Subject>,
whens: Vec<When>,
other: Vec<Stmt>,
pos: Pos,
},
Display {
items: Vec<Operand>,
no_advancing: bool,
pos: Pos,
},
Open {
files: Vec<(OpenMode, String)>,
pos: Pos,
},
Close {
files: Vec<(String, Option<Closing>)>,
pos: Pos,
},
Read(Box<ReadStmt>),
Write {
record: Ref,
from: Option<Operand>,
advancing: Option<Advancing>,
invalid: Handlers,
end_of_page: Handlers,
pos: Pos,
},
Rewrite {
record: Ref,
from: Option<Operand>,
invalid: Handlers,
pos: Pos,
},
Delete {
file: String,
invalid: Handlers,
pos: Pos,
},
Start {
file: String,
key: Option<(RelOp, Ref)>,
invalid: Handlers,
pos: Pos,
},
Initialize {
targets: Vec<Ref>,
pos: Pos,
},
GoTo {
target: Option<ProcName>,
pos: Pos,
},
GoToDepending {
targets: Vec<ProcName>,
on: Ref,
pos: Pos,
},
Alter {
pairs: Vec<(ProcName, ProcName)>,
pos: Pos,
},
Entry {
name: String,
using: Vec<Param>,
pos: Pos,
},
Goback {
pos: Pos,
},
ExitProgram {
pos: Pos,
},
Call(Box<Call>),
Cancel {
targets: Vec<Operand>,
pos: Pos,
},
Set {
set: SetStmt,
pos: Pos,
},
Accept {
target: Ref,
from: AcceptFrom,
pos: Pos,
},
String(Box<StringStmt>),
Unstring(Box<Unstring>),
Inspect(Box<Inspect>),
Search(Box<Search>),
NextSentence,
SentenceEnd,
Exec(Box<ExecBlock>),
Report(Box<ReportStmt>),
Invoke(Box<Invoke>),
JsonGenerate(Box<JsonGenerate>),
JsonParse(Box<JsonParse>),
XmlParse(Box<XmlParse>),
XmlGenerate(Box<XmlGenerate>),
ExitMethod {
pos: Pos,
},
Sorting(Box<Sorting>),
StopRun {
pos: Pos,
},
Continue,
Exit {
kind: ExitKind,
pos: Pos,
},
}Variants§
Move
Compute
Arith(Box<Arith>)
ADD, SUBTRACT, MULTIPLY and DIVIDE, reduced to their arithmetic.
Corresponding(Box<Corresponding>)
MOVE, ADD or SUBTRACT CORRESPONDING, which the compiler expands into a MOVE per pair of corresponding items, or one ADD or SUBTRACT over them all.
If
PerformInline
PerformProc
Evaluate
Display
Open
Close
Read(Box<ReadStmt>)
Write
Fields
Rewrite
Delete
Start
Initialize
GoTo
GO TO; with no target, the altered GO TO that only an ALTER gives one.
GoToDepending
GO TO … DEPENDING ON: the procedure the item’s value numbers, or on when none does.
Alter
ALTER: each paragraph whose GO TO is to go instead to the procedure paired with it.
Entry
ENTRY: where a CALL of name begins, and the LINKAGE items its USING list addresses.
Goback
ExitProgram
EXIT PROGRAM: returns from a called program; in the first program it does nothing.
Call(Box<Call>)
Cancel
Set
Accept
String(Box<StringStmt>)
Unstring(Box<Unstring>)
Inspect(Box<Inspect>)
Search(Box<Search>)
NextSentence
NEXT SENTENCE: control passes to the statement after the next separator period.
SentenceEnd
A separator period in the PROCEDURE DIVISION: where NEXT SENTENCE resumes.