home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / MAXONPASCAL3.DMS / in.adf / DEMOS-OS2.0 / ARexxTest.p < prev    next >
Encoding:
Text File  |  1994-08-25  |  2.3 KB  |  79 lines

  1. { Kleines Programm, das zeigt, wie man ganz einfach }
  2. { seine Programme auch über ARexx steuern kann.     }
  3. { ©1994 by Björn Schotte.                           }
  4. { Geschrieben mit MaxonPASCAL 3                     }
  5. { Hier wird auf verschiedene Befehle reagiert:      }
  6. {                                                   }
  7. { CLOSETP       Beendet das Programm                }
  8. { BEEP          Läßt den Bildschirm aufblitzen      }
  9.  
  10. { Hier noch ein kleines ARexx-Programm, das zeigt,  }
  11. { wie man dieses Programm steuert. Dazu muß aber    }
  12. { erst das Pascal-Programm gestartet werden !!      }
  13. {                                                   }
  14. { /* RexxTest-Test */                               }
  15. { ADDRESS TEST_REXX                                 }
  16. { BEEP                                              }
  17. { CLOSETP                                           }
  18. {                                                   }
  19. { Das war`s !!                                      }
  20. {                                       BS/28/07/94 }
  21.  
  22.  
  23. PROGRAM RexxTest;
  24.  
  25. {$opt q}
  26.  
  27. USES ExecSupport, Intuition;
  28.  
  29. {$incl "rexxsyslib.lib"}
  30.  
  31. VAR
  32.   port : p_MsgPort;
  33.   sigs,m : LONG;
  34.   msg  : p_RexxMsg;
  35.   dummy: BOOLEAN;
  36.   argo : STRING[256];
  37.  
  38. BEGIN
  39.   OpenLib(RexxSysBase, "rexxsyslib.library",0);
  40.   { Message-Port kreieren }
  41.   port := CreateMsgPort;
  42.   IF port = NIL THEN Error("Kann keinen Message-Port kreieren !!");
  43.   port^.mp_Node.ln_Name := "TEST_REXX";
  44.   { Port öffentlich machen: }
  45.   AddPort(port);
  46.   sigs := LONG(1) SHL LONG(port^.mp_SigBit); { Signal-Maske }
  47.   dummy := FALSE;
  48.   REPEAT
  49.     m := _Wait(sigs); { Warten ... }
  50.     IF (m AND sigs)=sigs THEN
  51.     BEGIN
  52.       msg := p_RexxMsg(GetMsg(port)); { Message abholen }
  53.       argo := msg^.rm_Args[0];
  54.       { Befehls-Abfrage }
  55.       IF argo="CLOSETP" THEN dummy := TRUE
  56.       ELSE IF argo="BEEP" THEN DisplayBeep(NIL)
  57.       ELSE Writeln(argo);
  58.       { Return-Codes auf 0 }
  59.       msg^.rm_Result1 := 0;
  60.       msg^.rm_Result2 := 0;
  61.       { Message beantworten }
  62.       ReplyMsg(p_Message(msg));
  63.     END;
  64.   UNTIL dummy;
  65.   { Alle noch anliegenden Messages entfernen }
  66.   Forbid;
  67.   msg := p_RexxMsg(GetMsg(port));
  68.   WHILE msg <> NIL DO
  69.   BEGIN
  70.     ReplyMsg(p_Message(msg));
  71.     msg := p_RexxMsg(GetMsg(port));
  72.   END;
  73.   Permit;
  74.   RemPort(port); { Port nicht-öffentlich machen }
  75.   DeleteMsgPort(port); { Port löschen }
  76. END.
  77.  
  78.  
  79.