home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* JUMPDEMO.PAS *)
- (* DEMO-Programm für Unit Jumps *)
- (* (c) 1991 Stefan Brinkmann & DMV-Verlag *)
- (* ------------------------------------------------------ *)
- PROGRAM JumpDemo;
-
- USES Crt, Jumps;
-
- CONST
- vs = 'Verschachtelungstiefe ';
-
- VAR
- Ret, Stapel, r : WORD;
- RegSave : ARRAY[0..20] OF JumpBuf;
- up : BOOLEAN;
-
- PROCEDURE Proc;
- VAR
- w : WORD;
- BEGIN
- Ret := InitJump(RegSave[Stapel]);
- { <- Einsprungpunkt Jump }
- IF Ret > 0 THEN
- WriteLn('Sprung von ', vs, Ret, ' zu ', w);
- IF up THEN BEGIN
- w := Stapel; { momentane Verschachtelungstiefe }
- Write(#7#32, Stapel);
- IF Stapel < 20 THEN BEGIN
- INC(Stapel);
- Proc; { rekursiver Aufruf }
- END ELSE
- up := FALSE;
- END;
- WriteLn;
- Write('Sprung zu 1');
- IF w > 1 THEN Write('..', w);
- WriteLn(' oder 0 = Ende');
- REPEAT
- Write('Ihre Wahl: ');
- ReadLn(r);
- UNTIL (r <= w);
- Jump(RegSave[r], w);
- END;
-
- BEGIN
- ClrScr;
- WriteLn('rekursiver Aufruf Prozedur "Proc", ', vs);
- Stapel := 1; up := TRUE;
- IF InitJump(RegSave[0]) = 0 THEN
- Proc
- ELSE
- WriteLn('Sprung aus ', vs, Ret, ' zum Programmende');
- ReadLn;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von JUMPDEMO.PAS *)
-
-