t_proctype2.mod 974 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. MODULE TProcType2;
  2. // ISO/PIM procedure-type syntax: comma-separated unnamed parameter
  3. // types (ARRAY OF CHAR, ...; CHAR, VAR T, ...), named groups, and PROC
  4. // as a result type. Exit 42.
  5. TYPE
  6. Error_Proc = PROCEDURE(ARRAY OF CHAR, ARRAY OF CHAR);
  7. ScanClass = (padding, valid, invalid, terminator);
  8. ScanState = PROCEDURE (CHAR, VAR ScanClass, VAR ScanState);
  9. GetProc = PROCEDURE() : PROC;
  10. Named = PROCEDURE (a, b : INTEGER) : INTEGER;
  11. VAR ExitCode : INTEGER;
  12. VAR e : Error_Proc;
  13. VAR s : ScanState;
  14. VAR g : GetProc;
  15. VAR n : Named;
  16. PROCEDURE Err (a, b: ARRAY OF CHAR);
  17. BEGIN
  18. END Err;
  19. PROCEDURE Scan (c: CHAR; VAR cls: ScanClass; VAR st: ScanState);
  20. BEGIN
  21. END Scan;
  22. PROCEDURE Idle;
  23. BEGIN
  24. END Idle;
  25. PROCEDURE Get () : PROC;
  26. BEGIN
  27. RETURN Idle
  28. END Get;
  29. PROCEDURE Add (a, b: INTEGER) : INTEGER;
  30. BEGIN
  31. RETURN a + b
  32. END Add;
  33. BEGIN
  34. e := Err;
  35. s := Scan;
  36. g := Get;
  37. n := Add;
  38. IF n(20, 22) = 42 THEN ExitCode := 42 ELSE ExitCode := 1 END
  39. END TProcType2.