MODULE TValConv; (* VAL conversions across INTEGER / LONGINT / REAL. Exit 15. *) VAR ExitCode : INTEGER; VAR i : INTEGER; VAR l : LONGINT; VAR r : REAL; BEGIN ExitCode := 0; (* INTEGER -> LONGINT -> INTEGER (widen, then narrow) *) l := VAL(LONGINT, 1000); IF VAL(INTEGER, l) = 1000 THEN ExitCode := ExitCode + 1 END; (* INTEGER -> REAL *) r := VAL(REAL, 3); IF r = 3.0 THEN ExitCode := ExitCode + 2 END; (* REAL -> INTEGER (truncate toward zero) *) r := 3.9; IF VAL(INTEGER, r) = 3 THEN ExitCode := ExitCode + 4 END; (* LONGINT -> REAL *) l := 7; r := VAL(REAL, l); IF r = 7.0 THEN ExitCode := ExitCode + 8 END END TValConv.