home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9101 / tricks / pascal / jumps / jumpdemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1991-09-30  |  1.5 KB  |  59 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     JUMPDEMO.PAS                       *)
  3. (*             DEMO-Programm für Unit Jumps               *)
  4. (*        (c) 1991 Stefan Brinkmann & DMV-Verlag          *)
  5. (* ------------------------------------------------------ *)
  6. PROGRAM JumpDemo;
  7.  
  8. USES Crt, Jumps;
  9.  
  10. CONST
  11.   vs = 'Verschachtelungstiefe ';
  12.  
  13. VAR
  14.   Ret, Stapel, r : WORD;
  15.   RegSave        : ARRAY[0..20] OF JumpBuf;
  16.   up             : BOOLEAN;
  17.  
  18.   PROCEDURE Proc;
  19.   VAR
  20.     w : WORD;
  21.   BEGIN
  22.     Ret := InitJump(RegSave[Stapel]);
  23.                                   { <- Einsprungpunkt Jump }
  24.     IF Ret > 0 THEN
  25.       WriteLn('Sprung von ', vs, Ret, ' zu ', w);
  26.     IF up THEN BEGIN
  27.       w := Stapel;       { momentane Verschachtelungstiefe }
  28.       Write(#7#32, Stapel);
  29.       IF Stapel < 20 THEN BEGIN
  30.         INC(Stapel);
  31.         Proc;                          { rekursiver Aufruf }
  32.       END ELSE
  33.         up := FALSE;
  34.     END;
  35.     WriteLn;
  36.     Write('Sprung zu 1');
  37.     IF w > 1 THEN Write('..', w);
  38.     WriteLn(' oder 0 = Ende');
  39.     REPEAT
  40.       Write('Ihre Wahl: ');
  41.       ReadLn(r);
  42.     UNTIL (r <= w);
  43.     Jump(RegSave[r], w);
  44.   END;
  45.  
  46. BEGIN
  47.   ClrScr;
  48.   WriteLn('rekursiver Aufruf Prozedur "Proc", ', vs);
  49.   Stapel := 1; up := TRUE;
  50.   IF InitJump(RegSave[0]) = 0 THEN
  51.     Proc
  52.   ELSE
  53.     WriteLn('Sprung aus ', vs, Ret, ' zum Programmende');
  54.   ReadLn;
  55. END.
  56. (* ------------------------------------------------------ *)
  57. (*              Ende von JUMPDEMO.PAS                     *)
  58.  
  59.