Bezeichnung
CreateRexxPort -- erstellt einen ARexx-Port für Ihr Skript (V2.5)
Übersicht
CreateRexxPort(name$)
Plattformen
Nur AmigaOS und kompatible

Beschreibung
Mit diesem Befehl wird ein ARexx-Port für das Skript erstellt und ihm der angegebene Name in name$ zugewiesen. Um ARexx-Nachrichten mit Ihrem Skript zu erhalten, muss es einen ARexx-Port haben. Andere Anwendungen können dann mit dem Skript kommunizieren, indem sie Nachrichten an diesen Port senden. Alle Nachrichten, die an Ihrem ARexx-Port ankommen, werden an die Callback-Funktion weitergeleitet, die Sie mit dem Befehl InstallEventHandler() (benutzen Sie den ARexx-Ereignis-Handler) aufrufen können. Wenn Sie diesen Ereignis-Handler nicht installieren, erhalten Sie keine Benachrichtigungen über eingehende Nachrichten.

Bitte beachten Sie, dass der ARexx-Portname immer zwischen Groß- und Kleinschreibung unterscheidet. So bezeichnen "MYPORT" und "myport" zwei verschiedene ARexx-Porte. Aus Stilgründen wird empfohlen, dass Sie nur Großbuchstaben für Ihren Portnamen verwenden. Außerdem muss jeder ARexx-Port eindeutig im System sein. Wenn Sie einen Portnamen angeben, der bereits verwendet wird, schlägt dieser Befehl fehl. Stellen Sie daher sicher, dass Sie einen eindeutigen Namen verwenden.

Bitte beachten Sie, dass jedes Hollywood-Skript nur einen ARexx-Port haben kann. Daher kann dieser Befehl nur einmal in Ihrem Skript aufgerufen werden. Sie können den von diesem Befehl erstellten Port nicht löschen. Er wird automatisch geschlossen, wenn Hollywood beendet wird.

Nachfolgend finden Sie ein Beispiel, wie ARexx-Nachrichten erfasst werden können. Siehe InstallEventHandler für mehr Informationen darüber, wie die Callback-Funktion des Benutzers aufgerufen wird.

Siehe auch RunRexxScript() und SendRexxCommand().

Eingaben
name$
gewünschter Namen für Ihren Rexx-Anschluss
Beispiel
Function p_EventFunc(msg)
  Switch msg.action
  Case "OnARexx"
    Switch msg.command
    Case "RealFunc"
      Return(100)
    Default
      Local t = SplitStr(msg.args, "\0")
      DebugPrint(msg.command, "called with", msg.argc, "argument(s)")
      For Local k = 1 To msg.argc
         DebugPrint("Argument", k .. ":", t[k - 1])
      Next
    EndSwitch
  EndSwitch
EndFunction
CreateRexxPort("MY_COOL_REXX_PORT_123")
InstallEventHandler({OnARexx = p_EventFunc})
Repeat
  WaitEvent
Forever
Speichern Sie den Code oben als ein Hollywood-Skript und führen Sie es mit Hollywood aus. Speichern Sie dann den folgenden Code als Rexx-Skript und führen Sie es von einer Shell mit "RX test.rx": aus.
 
/* Die erste Zeile von jedem Rexx-Skript muss ein Kommentar sein */
OPTIONS RESULTS

/* Der Port von unserem Hollywood-Skript ist nun der Host */
ADDRESS MY_COOL_REXX_PORT_123

/* Sendet Befehle von Rexx nach Hollywood */
/* Schauen Sie auf die Debug-Ausgabe */
DummyFunc_1 '"Dummy Arg 1"'
DummyFunc_2 1 2 3
DummyFunc_3 '"First arg"' '"Second arg"' '"Third arg"'
DummyFunc_4  /* no args */
DummyFunc_5 "These will be handled as separate arguments"
DummyFunc_6 '"This is a single argument (use double quotes!)"'

'RealFunc'
SAY RESULT   /* Dies gibt 100 aus; ist das Resultat von RealFunc */


Navigation zeigen