home *** CD-ROM | disk | FTP | other *** search
- { Kleines Programm, das zeigt, wie man ganz einfach }
- { seine Programme auch über ARexx steuern kann. }
- { ©1994 by Björn Schotte. }
- { Geschrieben mit MaxonPASCAL 3 }
- { Hier wird auf verschiedene Befehle reagiert: }
- { }
- { CLOSETP Beendet das Programm }
- { BEEP Läßt den Bildschirm aufblitzen }
-
- { Hier noch ein kleines ARexx-Programm, das zeigt, }
- { wie man dieses Programm steuert. Dazu muß aber }
- { erst das Pascal-Programm gestartet werden !! }
- { }
- { /* RexxTest-Test */ }
- { ADDRESS TEST_REXX }
- { BEEP }
- { CLOSETP }
- { }
- { Das war`s !! }
- { BS/28/07/94 }
-
-
- PROGRAM RexxTest;
-
- {$opt q}
-
- USES ExecSupport, Intuition;
-
- {$incl "rexxsyslib.lib"}
-
- VAR
- port : p_MsgPort;
- sigs,m : LONG;
- msg : p_RexxMsg;
- dummy: BOOLEAN;
- argo : STRING[256];
-
- BEGIN
- OpenLib(RexxSysBase, "rexxsyslib.library",0);
- { Message-Port kreieren }
- port := CreateMsgPort;
- IF port = NIL THEN Error("Kann keinen Message-Port kreieren !!");
- port^.mp_Node.ln_Name := "TEST_REXX";
- { Port öffentlich machen: }
- AddPort(port);
- sigs := LONG(1) SHL LONG(port^.mp_SigBit); { Signal-Maske }
- dummy := FALSE;
- REPEAT
- m := _Wait(sigs); { Warten ... }
- IF (m AND sigs)=sigs THEN
- BEGIN
- msg := p_RexxMsg(GetMsg(port)); { Message abholen }
- argo := msg^.rm_Args[0];
- { Befehls-Abfrage }
- IF argo="CLOSETP" THEN dummy := TRUE
- ELSE IF argo="BEEP" THEN DisplayBeep(NIL)
- ELSE Writeln(argo);
- { Return-Codes auf 0 }
- msg^.rm_Result1 := 0;
- msg^.rm_Result2 := 0;
- { Message beantworten }
- ReplyMsg(p_Message(msg));
- END;
- UNTIL dummy;
- { Alle noch anliegenden Messages entfernen }
- Forbid;
- msg := p_RexxMsg(GetMsg(port));
- WHILE msg <> NIL DO
- BEGIN
- ReplyMsg(p_Message(msg));
- msg := p_RexxMsg(GetMsg(port));
- END;
- Permit;
- RemPort(port); { Port nicht-öffentlich machen }
- DeleteMsgPort(port); { Port löschen }
- END.
-
-
-