Allgemeines
Anwendungsgebiet: | Intertaskkommunikation; siehe "Intertaskkommunikation (ITC)"; Kommunikation; siehe "Kommunikation (Programm, Anwender, System)" |
Makrotyp: | O-Typ; siehe "O-Typ-Makroaufrufe" |
Makrobeschreibung
Mit dem Makro SEVNT kann der Anwender, der an der Intertaskkommunikation (ITC) teilnimmt, eine Nachricht an einen anderen ITC-Teilnehmer senden.
Makroaufrufformat und Operandenbeschreibung
SEVNT |
{senderfeld,empfängername / (1)} |
senderfeld
symbolischer Name des Feldes, das die Nachricht enthält, die gesendet werden soll. Das Feld muss an einer Wortgrenze beginnen und wie ein Satz variabler Länge (mit 4 Byte Satzlängenfeld) aufgebaut sein:
Byte 0-1: Satzlänge in Byte = Länge der Nachricht + 4 (8 <= Satzlänge <= 65 535)Byte 2-3: reserviert
Byte 4-n: Nachricht
Die Nachricht (einschließlich Satzlängenfeld) muss mindestens 8 Byte lang sein und darf die Länge von 65535 Byte nicht überschreiten.
empfängername
ITC-Name des Teilnehmers, der die Nachricht empfangen soll.
(1)
gibt an, dass Register R1 die Adresse eines Operandenfeldes enthält. Das Operandenfeld muss auf Wortgrenze ausgerichtet sein und folgenden Inhalt haben:
Byte 0-3: Adresse des Senderfeldes, das den oben beschriebenen Aufbau haben muss.Byte 4-11: ITC-Name des Empfängers. Ist der Name kürzer als 8 Zeichen, so muss das Feld mit Leerzeichen (X'40') aufgefüllt werden.
Funktionsweise
Jeder ITC-Teilnehmer kann mit dem Makro SEVNT an einen anderen Teilnehmer eine Nachricht senden. Die Nachricht darf zwischen 4 Byte und 64 KB lang sein. Sie wird in die Empfangswarteschlange des empfangenden ITC-Teilnehmers übertragen. Der Makro SE-VNT wird abgewiesen, wenn nicht genügend Speicherplatz zur Verfügung steht oder wenn die Gesamtlänge der Nachrichten in der Empfangswarteschlange eine vorgegebene Größe (128 KB) überschreitet. Der Absender der Nachricht erfährt nicht automatisch, ob der Empfänger die Nachricht aus der Empfangswarteschlange anfordert und auswertet. Dazu müsste der Empfänger eine Nachricht als Quittung zurücksenden. Die Task mit dem SE-VNT-Aufruf wird durch das Senden der Nachricht nicht unterbrochen.
Ein ITC-Teilnehmer kann mit aufeinander folgenden Aufrufen von SEVNT Nachrichten an verschiedene Empfänger senden.
Rückinformation und Fehleranzeigen
R15:
+---------------+ | | | | | | | | | | | |a|a| +---------------+
Über die Ausführung des Makros SEVNT wird im Register R15 rechtsbündig ein Returncode übergeben.
X'aa' | Erläuterung |
X'00' | Die Nachricht wurde in die Empfangswarteschlange des angegebenen Teilnehmers |
X'04' | Fehler in der Operandenangabe (z.B. Speicher ist nicht Klasse 6 oder nicht zugewiesen). |
X'08' | Der Aufrufer ist kein ITC-Teilnehmer. Die Nachricht wurde nicht übertragen. |
X'0C' | Zu wenig Systemspeicher ist verfügbar oder die systeminterne Größe für Empfangswarteschlangen |
X'10' | Der Empfänger ist (noch) kein ITC-Teilnehmer oder der Aufrufer will die Nachricht an sich |