home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 08 / innentes.mod < prev    next >
Encoding:
Text File  |  1987-07-10  |  1.6 KB  |  84 lines

  1. (*
  2. Title   : Innentest Demo fuer die
  3. Verwendung von Variablen im Modul
  4. und fuer die Verwendung von
  5. Prozedurtypen
  6. LastEdit: 19.05.87.
  7. Author  : Joerg BEYER;
  8. System  : LOGITECH MODULA-2/86
  9. *)
  10. MODULE innentest;
  11. FROM InOut IMPORT WriteInt,
  12.                   Write,
  13.                   WriteLn,
  14.                   WriteString,
  15.                   Read;
  16.  
  17. TYPE
  18.     ProzedurTYP = PROCEDURE (CHAR);
  19.     TextTYP     = ARRAY [0..79] OF CHAR;
  20.  
  21. VAR
  22.     a : CHAR;
  23.     n : INTEGER;
  24. (* n ist globale Variable *)
  25.  
  26. PROCEDURE NormalProzedur (in : CHAR);
  27. VAR
  28.     n : INTEGER;
  29. (* n ist Prozedurvariable *)
  30. BEGIN
  31.   n := 0;
  32.   INC(n);
  33.   WriteInt(n,2);
  34.   INC(in);
  35.   WriteString(" Nachfolger->");
  36.   Write(in);
  37. END NormalProzedur;
  38.  
  39.  
  40. MODULE InnenModul;
  41. IMPORT Write,WriteString,WriteInt;
  42. EXPORT ProzedurImModul;
  43. VAR
  44.    n : INTEGER;
  45. (*n ist Variable des Modulrumpfes*)
  46.   PROCEDURE ProzedurImModul (in : CHAR);
  47.    BEGIN
  48.     INC(n);
  49.     WriteInt(n,2);
  50.     INC(in);
  51.     WriteString(" Nachfolger->");
  52.     Write(in);
  53.    END ProzedurImModul;
  54. BEGIN
  55.   n := 0;
  56. END InnenModul;
  57.  
  58. PROCEDURE Work (Prozedur: ProzedurTYP;
  59.                 Text    : TextTYP);
  60. BEGIN (* Work *)
  61.  FOR a := "a" TO "h"
  62.  DO
  63.   WriteString("Laufvariable->");
  64.   Write(a);
  65.   WriteString(Text);
  66.   Prozedur(a);
  67.   WriteString(" globale Variable->");
  68.   INC(n);
  69.   WriteInt(n,2);
  70.   WriteLn;
  71.  END (* for *);
  72. END Work;
  73.  
  74. BEGIN (* Hauptprogramm *)
  75.  n := 0;
  76.  WriteLn;
  77.  WriteString ("Programm Innentest");
  78.  WriteLn;
  79.  WriteLn;
  80.  Work(NormalProzedur, " Prozedurvariable -->");
  81.  WriteLn;
  82.  Work(ProzedurImModul, " Variable im Modulrumpf->");
  83. END innentest.
  84.