| 123456789101112131415161718192021222324252627282930313233343536373839 |
- MODULE TProcType2;
- // ISO/PIM procedure-type syntax: comma-separated unnamed parameter
- // types (ARRAY OF CHAR, ...; CHAR, VAR T, ...), named groups, and PROC
- // as a result type. Exit 42.
- TYPE
- Error_Proc = PROCEDURE(ARRAY OF CHAR, ARRAY OF CHAR);
- ScanClass = (padding, valid, invalid, terminator);
- ScanState = PROCEDURE (CHAR, VAR ScanClass, VAR ScanState);
- GetProc = PROCEDURE() : PROC;
- Named = PROCEDURE (a, b : INTEGER) : INTEGER;
- VAR ExitCode : INTEGER;
- VAR e : Error_Proc;
- VAR s : ScanState;
- VAR g : GetProc;
- VAR n : Named;
- PROCEDURE Err (a, b: ARRAY OF CHAR);
- BEGIN
- END Err;
- PROCEDURE Scan (c: CHAR; VAR cls: ScanClass; VAR st: ScanState);
- BEGIN
- END Scan;
- PROCEDURE Idle;
- BEGIN
- END Idle;
- PROCEDURE Get () : PROC;
- BEGIN
- RETURN Idle
- END Get;
- PROCEDURE Add (a, b: INTEGER) : INTEGER;
- BEGIN
- RETURN a + b
- END Add;
- BEGIN
- e := Err;
- s := Scan;
- g := Get;
- n := Add;
- IF n(20, 22) = 42 THEN ExitCode := 42 ELSE ExitCode := 1 END
- END TProcType2.
|