| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- Listing:
- 1 MODULE Showcase2;
- 2
- 3 (* Step-9 tour: exported TYPEs, module whole-copy both directions,
- 4 enum literals, field/row copy, VAR tails, open arrays, I/O. *)
- 5
- 6 MODULE M EXPORT Point, Color, Red, Green, Blue, Vec, G, N, Reset;
- 7 TYPE Point = RECORD x, y : INTEGER END;
- 8 TYPE Color = (Red, Green, Blue);
- 9 TYPE Vec = ARRAY [1 .. 3] OF INTEGER;
- 10 VAR G : Point;
- 11 VAR N : INTEGER;
- 12 PROCEDURE Reset;
- 13 BEGIN
- 14 G.x := 0;
- 15 G.y := 0;
- 16 N := 0
- 17 END Reset;
- 18 END M;
- 19
- 20 TYPE Inner = RECORD u, v : INTEGER END;
- 21 TYPE Outer = RECORD a : INTEGER; b : Inner END;
- 22
- 23 VAR p, q : M.Point;
- 24 VAR c : M.Color;
- 25 VAR v : M.Vec;
- 26 VAR m, n : ARRAY [1 .. 2], [1 .. 2] OF INTEGER;
- 27 VAR r1, r2 : Outer;
- 28 VAR total : INTEGER;
- 29 VAR ExitCode : INTEGER;
- 30
- 31 PROCEDURE Bump(VAR x : INTEGER);
- 32 BEGIN
- 33 x := x + 1
- 34 END Bump;
- 35
- 36 PROCEDURE SumOpen(x : ARRAY OF INTEGER) : INTEGER;
- 37 VAR i, s : INTEGER;
- 38 BEGIN
- 39 s := 0;
- 40 FOR i := 0 TO HIGH(x) DO s := s + x[i] END;
- 41 RETURN s
- 42 END SumOpen;
- 43
- 44 BEGIN
- 45 total := 0;
- 46 WriteString("show2");
- 47 M.Reset();
- 48 M.N := 7;
- 49 total := total + M.N;
- 50 p.x := 3;
- 51 p.y := 4;
- 52 M.G := p;
- 53 total := total + M.G.x + M.G.y;
- 54 q := M.G;
- 55 total := total + q.x * q.y;
- 56 c := M.Blue;
- 57 CASE c OF
- 58 M.Red : total := total + 0 |
- 59 M.Green : total := total + 0 |
- 60 M.Blue : total := total + 6
- 61 END;
- 62 IF c # M.Red THEN total := total + 1 END;
- 63 m[1,1] := 1; m[1,2] := 2; m[2,1] := 3; m[2,2] := 4;
- 64 n[2] := m[1];
- 65 total := total + n[2,1] + n[2,2];
- 66 r1.a := 0; r1.b.u := 10; r1.b.v := 20;
- 67 r2.b := r1.b;
- 68 total := total + r2.b.u + r2.b.v;
- 69 Bump(q.y);
- 70 total := total + q.y;
- 71 v[1] := 2; v[2] := 4; v[3] := 6;
- 72 total := total + SumOpen(v);
- 73 WriteInt(total);
- 74 ExitCode := total
- 75 END Showcase2.
- 0 errors
|