home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / modula2 / tutorial / programs / corout.mod < prev    next >
Text File  |  1993-03-14  |  1KB  |  47 lines

  1.                                         (* Chapter 15 - Program 1 *)
  2. MODULE Corout;
  3.  
  4. FROM InOut IMPORT WriteCard, WriteString, WriteLn;
  5.  
  6. FROM SYSTEM IMPORT WORD, PROCESS, ADR, SIZE,
  7.                    NEWPROCESS, TRANSFER;
  8.  
  9. VAR  main, Process1, Process2 : PROCESS;
  10.      WorkSpace1, WorkSpace2   : ARRAY[1..300] OF WORD;
  11.      Index : CARDINAL;
  12.  
  13. PROCEDURE MainProcess;
  14. BEGIN
  15.    FOR Index := 1 TO 5 DO
  16.       WriteString('This is loop');
  17.       WriteCard(Index,2);
  18.       IF Index > 2 THEN
  19.          TRANSFER(Process1,Process2);
  20.          WriteString(' and back to main loop');
  21.       END;
  22.       WriteLn;
  23.    END;     (* of FOR loop *)
  24.    WriteString('End of the MainProcess loop');
  25.    WriteLn;
  26.    TRANSFER(Process1,main);
  27. END MainProcess;
  28.  
  29. PROCEDURE SubProcess;
  30. BEGIN
  31.    LOOP
  32.       WriteString(' in SubProcess');
  33.       TRANSFER(Process2,Process1);
  34.       WriteString(' back');
  35.    END;
  36. END SubProcess;
  37.  
  38. BEGIN   (* Main Module Body *)
  39.    NEWPROCESS(MainProcess,ADR(WorkSpace1),SIZE(WorkSpace1),
  40.               Process1);
  41.    NEWPROCESS(SubProcess,ADR(WorkSpace2),SIZE(WorkSpace2),
  42.               Process2);
  43.    TRANSFER(main,Process1);
  44.    WriteString('End of the program');
  45.    WriteLn;
  46. END Corout.
  47.