home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
modula2
/
compiler
/
taylmod2
/
dhry3.mod
< prev
next >
Wrap
Text File
|
1988-06-30
|
3KB
|
95 lines
(* $Title:'DHRY3.MOD - Dhrystone 1.0 Module 3' *) (* $Chip:86 *)
IMPLEMENTATION MODULE Dhrystone3;
FROM Dhrystone1 IMPORT ArrayDim1Int, ArrayDim2Int,
CapitalLetter, Enumeration,
String30;
FROM Dhrystone2 IMPORT IntGlob;
FROM Strings IMPORT CompareStr;
PROCEDURE Func3 (EnumParIn: Enumeration): BOOLEAN; FORWARD;
PROCEDURE Proc6 (EnumParIn: Enumeration; VAR EnumParOut: Enumeration);
BEGIN
EnumParOut := EnumParIn;
IF NOT Func3 (EnumParIn) THEN EnumParIn := Ident4 END;
CASE EnumParIn OF
Ident1: EnumParIn := Ident1;
| Ident2: IF IntGlob > 100 THEN EnumParOut := Ident2
ELSE EnumParOut := Ident4 END;
| Ident3: EnumParOut := Ident2;
| Ident4:
| Ident5: EnumParOut := Ident3
END
END Proc6;
PROCEDURE Proc7 (IntParIn1, IntParIn2: CARDINAL; VAR IntParOut: CARDINAL);
VAR IntLoc: CARDINAL;
BEGIN
IntLoc := IntParIn1 + 2;
IntParOut := IntParIn2 + IntLoc
END Proc7;
PROCEDURE Proc8 (VAR ArrayParInOut1: ArrayDim1Int;
VAR ArrayParInOut2: ArrayDim2Int;
IntParIn1, IntParIn2: CARDINAL);
VAR IntLoc, IntIndex: CARDINAL;
BEGIN
IntLoc := IntParIn1 + 5;
ArrayParInOut1 [IntLoc] := IntParIn2;
ArrayParInOut1 [IntLoc+1] := ArrayParInOut1 [IntLoc];
ArrayParInOut1 [IntLoc+30] := IntLoc;
FOR IntIndex := IntLoc TO IntLoc + 1 DO
ArrayParInOut2 [IntLoc,IntIndex] := IntLoc
END;
ArrayParInOut2 [IntLoc,IntLoc-1] := ArrayParInOut2 [IntLoc,IntLoc-1] + 1;
ArrayParInOut2 [IntLoc+20,IntLoc] := ArrayParInOut1 [IntLoc];
IntGlob := 5;
END Proc8;
PROCEDURE Func1 (CharParIn1, CharParIn2: CapitalLetter): Enumeration;
VAR CharLoc1, CharLoc2: CapitalLetter;
BEGIN
CharLoc1 := CharParIn1;
CharLoc2 := CharLoc1;
IF CharLoc2 # CharParIn2 THEN RETURN Ident1
ELSE RETURN Ident2 END
END Func1;
PROCEDURE Func2 (VAR StringParIn1, StringParIn2: String30): BOOLEAN;
VAR IntLoc: CARDINAL;
CharLoc: CapitalLetter;
BEGIN
IntLoc := 2;
WHILE IntLoc <= 2 DO
IF Func1 (StringParIn1 [IntLoc], StringParIn2 [IntLoc+1]) = Ident1 THEN
CharLoc := 'A'; IntLoc := IntLoc + 1
END
END;
IF (CharLoc >= 'W') AND (CharLoc < 'Z') THEN IntLoc := 7 END;
IF CharLoc = 'X' THEN RETURN TRUE
ELSE
IF CompareStr (StringParIn1, StringParIn2) = 1 THEN
IntLoc := IntLoc + 7; RETURN TRUE
ELSE RETURN FALSE END
END
END Func2;
PROCEDURE Func3 (EnumParIn: Enumeration): BOOLEAN;
VAR EnumLoc: Enumeration;
BEGIN
EnumLoc := EnumParIn;
IF EnumLoc = Ident3 THEN RETURN TRUE END
END Func3;
END Dhrystone3.