The body of a procedure consists of executable commands. The last command in the body is a Return and a Return cannot be coded within the body.
A function or a procedure that is declared to be pure is restricted so that they do not have side effects. They can only call other pure procedures and cannot contain input nor output commands. However Trace commands are allowed as they are only intended to be active while debugging. Pure procedures can not raise Error exceptions, but Fault exceptions can be raised by any procedure. Preconditions and Assertion commands in pure procedures can only raise Fault exceptions.
Primitive [(Subcript)] [Op]= Expression User.Tye [(Subcript)] = User Pointer = @Variable Pointer = @Variable( Subcript ) Pointer = @Function( [Argument, ...] ) Pointer = @parcel( Expression ) Destination [Op]= if Condtion [, Expression [, Expression]]
Procedure [[Parameter =] {Variable | Array | Expression}, ...] CHURN from Container with It CHURN from Sequence( Argument, ...) with It CHURN [@]Result from It CHURN [@]Result from Container with It CHURN [@]Result from Sequence( Argument, ...) with It CHURN end [It] YIELD CLEAN Subject, ... DRAIN Subject, ...
preconditon Condition Condition error [Context [| Form]] Condition fault [Context [| Form]] Condition catch Handler . assert Condition assert Condition error [Context [| Form]] assert Condition fault [Context [| Form]] assert Condition catch Handler DO always DO while Condition DO until Condition DO Expression times DO Variable [= Numeric] to Numeric [by Numeric] DO Variable from Sequence( Argument.List ) UNDO IF Condition UNDO '-'* - IF Condition ELSE IF Condition ELSE . IF Expression is Value.List ELSE IS Value.List ELSE . postcondition return [raise]
OPEN {`in | `out | `append | `direct} [`big | `little] File '<>' String.Expression CLOSE `file File INPUT File '<>' {Variable | Quote}, ... INPUT File(Index) '<>' {Variable | Quote}, ... INPUT `seek File(Index) '<>' Type PRINT [`#] [`err] [Expression ['|' Form], ...] [flush] PRINT [`#] File '<>' Expression ['|' Form], ... [flush] PRINT [`#] File(Index) '<>' Expression ['|' Form], ... [flush] trace [`log | `err | `if | `on | `off] '/'trace {Quote | {[@] Name [Subscript] ['|' Format]}} , ... trace`err [{Quote | {[@] Name [Subscript] ['|' Format]}} , ...] trace`log [ Path ] trace`if Condition {Quote | {[@] Name [Subscript] ['|' Form]}} , ... trace`on [Condition] trace`off [Condition]