home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1993-10-19 | 1.8 KB | 80 lines |
- IMPLEMENTATION MODULE dry1;
-
- IMPORT dry2;
-
- PROCEDURE Proc1 (PtrValPar: dry2.RecPointer);
- BEGIN
- WITH PtrValPar^.PtrComp^ DO
- (* == PtrGlobNext *)
- PtrValPar^.PtrComp^ := dry2.PtrGlob^;
- PtrValPar^.IntComp := 5;
- IntComp := PtrValPar^.IntComp;
- PtrComp := PtrValPar^.PtrComp;
- Proc3 (PtrComp);
- (* PtrValPar^.PtrComp^.PtrComp == PtrGlob^.PtrComp *)
- IF Discr = dry2.Ident1 THEN
- (* then, executed *)
- IntComp := 6;
- dry2.Proc6 (PtrValPar^.EnumComp, EnumComp);
- PtrComp := dry2.PtrGlob^.PtrComp;
- dry2.Proc7 (IntComp, 10, IntComp);
- ELSE
- (* not executed *)
- PtrValPar^ := PtrValPar^.PtrComp^;
- END;
- END;
- END Proc1;
-
-
- PROCEDURE Proc2 (VAR IntParRef: INTEGER);
- (* executed once *)
- (* *IntParRef == 1, becomes 4 *)
- VAR
- IntLoc: INTEGER;
- EnumLoc: dry2.Enumeration;
- BEGIN
- IntLoc := IntParRef + 10;
- REPEAT (* executed once *)
- IF dry2.Ch1Glob = 'A' THEN
- (* then, executed *)
- DEC (IntLoc);
- IntParRef := IntLoc - dry2.IntGlob;
- EnumLoc := dry2.Ident1;
- END;
- UNTIL EnumLoc = dry2.Ident1; (* true *)
- END Proc2;
-
-
- PROCEDURE Proc3 (VAR PtrRefPar: dry2.RecPointer);
- (* executed once *)
- (* PtrRefPar becomes PtrGlob *)
- BEGIN
- IF dry2.PtrGlob # NIL THEN
- (* then, executed *)
- PtrRefPar := dry2.PtrGlob^.PtrComp;
- END;
- dry2.Proc7 (10, dry2.IntGlob, dry2.PtrGlob^.IntComp);
- END Proc3;
-
-
- PROCEDURE Proc4; (* without parameters *)
- (* executed once *)
- VAR
- BoolLoc: BOOLEAN;
- BEGIN
- BoolLoc := dry2.Ch1Glob = 'A';
- dry2.BoolGlob := BoolLoc OR dry2.BoolGlob;
- dry2.Ch2Glob := 'B';
- END Proc4;
-
-
- PROCEDURE Proc5; (* without parameters *)
- (* executed once *)
- BEGIN
- dry2.Ch1Glob := 'A';
- dry2.BoolGlob := FALSE;
- END Proc5;
-
-
- END dry1.
-