home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / modula2 / compiler / taylmod2 / dhry2.mod < prev    next >
Text File  |  1988-06-30  |  3KB  |  124 lines

  1. (* $Title:'DHRY2.MOD - Dhrystone 1.0 Module 2' *)   (* $Chip:86 *)
  2.  
  3. IMPLEMENTATION MODULE Dhrystone2;
  4.  
  5. FROM Dhrystone1 IMPORT ArrayDim1Int, ArrayDim2Int,
  6.                        RecordPointer, RecordType,
  7.                        Enumeration, String30;
  8. FROM Dhrystone3 IMPORT Proc6, Proc7, Proc8, Func1, Func2;
  9. FROM Storage IMPORT ALLOCATE;
  10.  
  11. VAR  BoolGlob: BOOLEAN;
  12.      CharGlob1, CharGlob2: CHAR;
  13.      ArrayGlob1: ArrayDim1Int;
  14.      ArrayGlob2: ArrayDim2Int;
  15.      PointerGlob, PointerGlobNext: RecordPointer;
  16.  
  17. PROCEDURE Proc2 (VAR IntParInOut: CARDINAL);
  18. VAR IntLoc: CARDINAL;
  19.     EnumLoc: Enumeration;
  20. BEGIN
  21.   IntLoc := IntParInOut + 10;
  22.   LOOP
  23.     IF CharGlob1 = 'A' THEN
  24.       DEC (IntLoc);
  25.       IntParInOut := IntLoc - IntGlob;
  26.       EnumLoc := Ident1
  27.     END;
  28.     IF EnumLoc = Ident1 THEN EXIT END
  29.   END
  30. END Proc2;
  31.  
  32.  
  33. PROCEDURE Proc3 (VAR PointerParOut: RecordPointer);
  34. BEGIN
  35.   IF PointerGlob # NIL THEN
  36.     PointerParOut := PointerGlob^.PointerComp
  37.   ELSE
  38.     IntGlob := 100
  39.   END;
  40.   Proc7 (10, IntGlob, PointerGlob^.IntComp)
  41. END Proc3;
  42.  
  43.  
  44. PROCEDURE Proc4;
  45. VAR BoolLoc: BOOLEAN;
  46. BEGIN
  47.   BoolLoc := CharGlob1 = 'A';
  48.   BoolLoc := BoolLoc OR BoolGlob;
  49.   CharGlob2 := 'B'
  50. END Proc4;
  51.  
  52.  
  53. PROCEDURE Proc5;
  54. VAR BoolLoc: BOOLEAN;
  55. BEGIN
  56.   CharGlob1 := 'A';
  57.   BoolGlob := FALSE
  58. END Proc5;
  59.  
  60.  
  61. PROCEDURE Proc1 (PointerParIn: RecordPointer);
  62. VAR NextRecord: RecordType;
  63. BEGIN
  64.   NextRecord := PointerGlob^;
  65.   PointerParIn^.IntComp := 5;
  66.   NextRecord.IntComp := PointerParIn^.IntComp;
  67.   NextRecord.PointerComp := PointerParIn^.PointerComp;
  68.   Proc3 (NextRecord.PointerComp);
  69.   IF NextRecord.Discr = Ident1 THEN
  70.     NextRecord.IntComp := 6;
  71.     Proc6 (PointerParIn^.EnumComp, NextRecord.EnumComp);
  72.     NextRecord.PointerComp := PointerGlob^.PointerComp;
  73.     Proc7 (NextRecord.IntComp, 10, NextRecord.IntComp)
  74.   ELSE
  75.     PointerParIn^ := NextRecord
  76.   END
  77. END Proc1;
  78.  
  79.  
  80. PROCEDURE Proc0 (iterations: CARDINAL);
  81. VAR IntLoc1, IntLoc2, IntLoc3: CARDINAL;
  82.     CharLoc, CharIndex: CHAR;
  83.     EnumLoc: Enumeration;
  84.     StringLoc1, StringLoc2: String30;
  85.     iter: CARDINAL;
  86. BEGIN
  87.   ALLOCATE (PointerGlobNext, SIZE (PointerGlobNext^));
  88.   ALLOCATE (PointerGlob, SIZE (PointerGlob^));
  89.   WITH PointerGlob^ DO
  90.     PointerComp := PointerGlobNext;
  91.     Discr := Ident1; EnumComp := Ident3; IntComp := 40;
  92.     StringComp := "Dhrystone Program, Some String"
  93.   END;
  94.   StringLoc1 := "Dhrystone Program, 1'st String";
  95.   iter := 0;
  96.  
  97.   REPEAT
  98.     Proc5;
  99.     Proc4;
  100.     IntLoc1 := 2; IntLoc2 := 3;
  101.     StringLoc2 := "Dhrystone Program, 2'nd String";
  102.     EnumLoc := Ident2;
  103.     BoolGlob := NOT Func2 (StringLoc1, StringLoc2);
  104.     WHILE IntLoc1 < IntLoc2 DO
  105.       IntLoc3 := 5 * IntLoc1 - IntLoc2;
  106.       Proc7 (IntLoc1, IntLoc2, IntLoc3);
  107.       INC (IntLoc1)
  108.     END;
  109.     Proc8 (ArrayGlob1, ArrayGlob2, IntLoc1, IntLoc3);
  110.     Proc1 (PointerGlob);
  111.     FOR CharIndex := 'A' TO CharGlob2 DO
  112.       IF EnumLoc = Func1 (CharIndex, 'C') THEN Proc6 (Ident1, EnumLoc) END
  113.     END;
  114.     IntLoc3 := IntLoc2 * IntLoc1;
  115.     IntLoc2 := IntLoc3 DIV IntLoc1;
  116.     IntLoc2 := 7 * (IntLoc3 - IntLoc2) - IntLoc1;
  117.     Proc2 (IntLoc1);
  118.     INC (iter)
  119.   UNTIL iter >= iterations
  120.  
  121. END Proc0;
  122.  
  123. END Dhrystone2.
  124.