| 123456789101112131415161718192021222324252627282930313233343536 |
- MODULE TResultSfx;
- // Result suffixes: components applied to a function-call result.
- // P()^ dereference a pointer result
- // P()^.field field of a record pointed to by the result
- // A()[i] index an array result
- // Exit 42.
- TYPE
- Rec = RECORD a, b : INTEGER END;
- RecPtr = POINTER TO Rec;
- Arr = ARRAY [0..3] OF INTEGER;
- ArrPtr = POINTER TO Arr;
- VAR ExitCode : INTEGER;
- VAR r : RecPtr;
- VAR s : ArrPtr;
- VAR v : INTEGER;
- PROCEDURE GetRec () : RecPtr;
- BEGIN RETURN r END GetRec;
- PROCEDURE GetArr () : ArrPtr;
- BEGIN RETURN s END GetArr;
- PROCEDURE GetVal () : INTEGER;
- BEGIN RETURN 40 END GetVal;
- BEGIN
- NEW(r);
- NEW(s);
- r^.a := 40; r^.b := 2;
- s^[0] := 1; s^[1] := 2; s^[2] := 2; s^[3] := 4;
- v := GetRec()^.a + GetRec()^.b; // 42
- v := v + GetArr()^[1]; // 42 + 2 = 44
- v := v - GetVal(); // 44 - 40 = 4
- ExitCode := v * 10 + GetArr()^[2] // 40 + 2 = 42
- END TResultSfx.
|