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

  1. (* $Title:'DHRY3.MOD - Dhrystone 1.0 Module 3' *)  (* $Chip:86 *)
  2.  
  3. IMPLEMENTATION MODULE Dhrystone3;
  4.  
  5. FROM Dhrystone1 IMPORT ArrayDim1Int, ArrayDim2Int,
  6.                        CapitalLetter, Enumeration,
  7.                        String30;
  8. FROM Dhrystone2 IMPORT IntGlob;
  9. FROM Strings IMPORT CompareStr;
  10.  
  11.  
  12. PROCEDURE Func3 (EnumParIn: Enumeration): BOOLEAN;  FORWARD;
  13.  
  14.  
  15. PROCEDURE Proc6 (EnumParIn: Enumeration; VAR EnumParOut: Enumeration);
  16. BEGIN
  17.   EnumParOut := EnumParIn;
  18.   IF NOT Func3 (EnumParIn) THEN EnumParIn := Ident4 END;
  19.   CASE EnumParIn OF
  20.     Ident1: EnumParIn := Ident1;
  21.   | Ident2: IF IntGlob > 100 THEN EnumParOut := Ident2
  22.             ELSE EnumParOut := Ident4 END;
  23.   | Ident3: EnumParOut := Ident2;
  24.   | Ident4:
  25.   | Ident5: EnumParOut := Ident3
  26.   END
  27. END Proc6;
  28.  
  29.  
  30. PROCEDURE Proc7 (IntParIn1, IntParIn2: CARDINAL; VAR IntParOut: CARDINAL);
  31. VAR IntLoc: CARDINAL;
  32. BEGIN
  33.   IntLoc := IntParIn1 + 2;
  34.   IntParOut := IntParIn2 + IntLoc
  35. END Proc7;
  36.  
  37.  
  38. PROCEDURE Proc8 (VAR ArrayParInOut1: ArrayDim1Int;
  39.                  VAR ArrayParInOut2: ArrayDim2Int;
  40.                  IntParIn1, IntParIn2: CARDINAL);
  41. VAR IntLoc, IntIndex: CARDINAL;
  42. BEGIN
  43.   IntLoc := IntParIn1 + 5;
  44.   ArrayParInOut1 [IntLoc] := IntParIn2;
  45.   ArrayParInOut1 [IntLoc+1] := ArrayParInOut1 [IntLoc];
  46.   ArrayParInOut1 [IntLoc+30] := IntLoc;
  47.   FOR IntIndex := IntLoc TO IntLoc + 1 DO
  48.     ArrayParInOut2 [IntLoc,IntIndex] := IntLoc
  49.   END;
  50.   ArrayParInOut2 [IntLoc,IntLoc-1] := ArrayParInOut2 [IntLoc,IntLoc-1] + 1;
  51.   ArrayParInOut2 [IntLoc+20,IntLoc] := ArrayParInOut1 [IntLoc];
  52.   IntGlob := 5;
  53. END Proc8;
  54.  
  55.  
  56. PROCEDURE Func1 (CharParIn1, CharParIn2: CapitalLetter): Enumeration;
  57. VAR CharLoc1, CharLoc2: CapitalLetter;
  58. BEGIN
  59.   CharLoc1 := CharParIn1;
  60.   CharLoc2 := CharLoc1;
  61.   IF CharLoc2 # CharParIn2 THEN RETURN Ident1
  62.   ELSE RETURN Ident2 END
  63. END Func1;
  64.  
  65.  
  66. PROCEDURE Func2 (VAR StringParIn1, StringParIn2: String30): BOOLEAN;
  67. VAR IntLoc: CARDINAL;
  68.     CharLoc: CapitalLetter;
  69. BEGIN
  70.   IntLoc := 2;
  71.   WHILE IntLoc <= 2 DO
  72.     IF Func1 (StringParIn1 [IntLoc], StringParIn2 [IntLoc+1]) = Ident1 THEN
  73.       CharLoc := 'A'; IntLoc := IntLoc + 1
  74.     END
  75.   END;
  76.   IF (CharLoc >= 'W') AND (CharLoc < 'Z') THEN IntLoc := 7 END;
  77.   IF CharLoc = 'X' THEN RETURN TRUE
  78.   ELSE
  79.     IF CompareStr (StringParIn1, StringParIn2) = 1 THEN
  80.       IntLoc := IntLoc + 7; RETURN TRUE
  81.     ELSE RETURN FALSE END
  82.   END
  83. END Func2;
  84.  
  85.  
  86. PROCEDURE Func3 (EnumParIn: Enumeration): BOOLEAN;
  87. VAR EnumLoc: Enumeration;
  88. BEGIN
  89.   EnumLoc := EnumParIn;
  90.   IF EnumLoc = Ident3 THEN RETURN TRUE END
  91. END Func3;
  92.  
  93.  
  94. END Dhrystone3.
  95.