Allgemeines
Anwendungsgebiet: | Verkehr mit Datenstationen; siehe "Verkehr mit Datenstationen"; Meldungswesen; siehe "Meldungswesen"; Kommunikation; siehe "Kommunikation (Programm, Anwender, System)" |
Makrotyp: | S-Typ, MF-Format 1: (Standardform/E-Form/L-Form); siehe "S-Typ-Makroaufrufe" |
Physikalische und logische Konsolen und ihre Verwendung in BS2000 sind ausführlich im Handbuch „Systembetreuung“ [10] beschrieben.
Makrobeschreibung
Mit dem Makro TYPIO kann eine Nachricht an der Konsole ausgegeben und eine Antwort von dort übernommen werden.
Makroaufrufformat und Operandenbeschreibung
TYPIO |
MSG={adr1 / (r1) / (basis1,[index1],[dist1])} [,REPLY=(länge, )]{adr2 / (r2) / (basis2,[index2],[dist2}]) ,SHORT=NO / YES [,UCDEST={’destcode’ / adr3 / (r3) / (basis3,[index3].[dist3])} ] ,MF={S / L / (E,{adr4 / (1) / (r4)}) |
MSG=
beschreibt die Adresse eines Ausgabebereichs für die Ausgabenachricht (Satz variabler Länge). Nachrichtenlänge <= 230 Byte. Nachrichten mit einer Länge von 231 bis 251 Byte werden abgeschnitten; noch längere Nachrichten werden nicht übertragen.
adr1
symbolische Adresse (Name) des Ausgabebereiches.
(r1)
r1 = Register mit dem Wert der Adresse adr1.
(...)
Indirekte Adressierung für adr1.
basis1 = Basisregister 1; index1 = Indexregister 1; dist1 = Distanz 1
REPLY=
eine Antwort wird erwartet. Der Operand beschreibt die Adresse des Eingabebereiches für die Antwort (Satz variabler Länge).
Antwortlänge <= 72 Byte.
länge
Länge des Eingabebereiches (erwartete Antwortlänge + 4);
4 <= länge <= 76.
Längere Antworten werden abgeschnitten.
Kürzere Antworten werden linksbündig eingetragen und ein Byte mit X'00' angehängt.
länge
<
4 bzw. länge>
251 ergibt Längenfehler (RC = X'0C').77 <= länge <= 251 ergibt Längenfehler (RC = X'04') und wird wie länge = 76 behandelt.
adr2
symbolische Adresse (Name) des Eingabebereiches
(r2)
r2 = Register mit dem Wert der Adresse adr2
(...)
Indirekte Adressierung für adr2.
basis2 = Basisregister 2; index2 = Indexregister 2; dist2 = Distanz 2
SHORT=
gibt an, ob die Nachricht mit ungekürztem Meldungsvorspann oder mit gekürztem Vorspann ausgegeben werden soll (nur wirksam bei Ausgabe auf physikalische Konsolen).
NO
Die Meldung wird ungekürzt ausgegeben.
YES
Der Meldungsvorspann wird in der Form %xxxx_
ausgegeben
Dabei bedeuten:
% = Meldung ohne Antwort
xxxx = Quellenkennzeichen/Name/TSN
SHORT=YES ist nur erlaubt, wenn REPLY nicht spezifiziert wurde.
UCDEST=
UCON-Ausgabeort.
Das Ziel (Ausgabeort) der Nachricht kann wie folgt angegeben werden:
mnemotechnischer Konsolname für eine bestimmte physikalische Konsole,
Berechtigungsschlüssel (Routingcode) für Konsolen und berechtigte Benutzerprogramme, denen ein bestimmtes Aufgabengebiet zugeordnet ist,
Berechtigungsname für ein berechtigtes Benutzerprogramm.
Ohne Angabe von UCDEST geht die Ausgabe an das im Systemparameter MSGDEST angegebene Ziel. Bei ungültiger UCDEST-Angabe geht die Ausgabe an die Hauptkonsole.
'destcode'
folgende Angaben sind möglich (Angaben müssen in Apostrophe eingeschlossen werden):
destcode = (mn)
wobei mn = 2 Zeichen langer mnemotechnischer Konsolnamedestcode = <x
wobei x = Berechtigungsschlüssel (< muss mit angegeben werden)destcode = Name des berechtigten Benutzerprogramms (4 Zeichen).
adr3
symbolische Adresse (Name) eines Feldes (Wort) mit der Angabe für destcode.
(r3)
r3 = Register mit der Angabe für destcode
(...)
Indirekte Adressierung für adr3.
basis3 = Basisregister 3; index3 = Indexregister 3; dist3 = Distanz 3
Hinweis
Alle Einträge müssen linksbündig eingetragen werden.
MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. für einen Präfix) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
Bei der E-Form des Makroaufrufs wird die Adresse des Datenbereichs während der Ausführung in Register R1 geschrieben.
Hinweise zum Makroaufruf
Bei indirekter Adressierung (Operanden MSG, REPLY, UCDEST) Kommas immer mitschreiben.
Aufbau des Ausgabe- bzw. Eingabebereiches (Operanden MSG bzw. REPLY):
Byte 0-1:
Satzlängenfeld (Länge der Nachricht/Antwort + 4); bei REPLY wird dieses
Feld durch TYPIO versorgt.Byte 2-3:
reserviert
Byte 4-n:
Nachrichten-/Antworttext
Beispiel für einen Ausgabebereich:
nachricht DC Y(nend-nachricht) DS CL2 DC C'nachrichtentext' nend EQU *
Beispiel für einen Eingabebereich:
antwort DS 0CL54 slfeld DS CL2 DS CL2 atext DS CL50
Der Makro ist in ablaufinvarianten Programmen verwendbar, wenn nur Registerangaben benutzt und L- und E-Form getrennt aufgerufen werden.
Während der Ausführung des Makros TYPIO werden die Inhalte der Register R0 und R1 überschrieben: Der Inhalt von Register R0 wird mit binären Nullen überschrieben. In Register R1 wird die Anfangsadresse des Datenbereichs geschrieben (bei der E-Form des Makroaufrufs). Beide Register sollten daher nicht für die Speicherung anderer Werte genutzt werden.
Rückinformation und Fehleranzeige
R15:
+---------------+ | | | | | | | | | | | |a|a| +---------------+
Über die Ausführung des Makros TYPIO wird im rechtsbündigen Byte des Registers R15 ein Returncode übergeben; die restlichen Byte sind gelöscht.
X'aa' | Erläuterung |
X'00' | Normale Ausführung |
X'04' | TYPIO ausgeführt. Nachrichten- oder Antwortlänge abgeschnitten |
X'08' | Adressfehler: Adressierung erfolgte über die Register R0 oder R1 oder eine Adresse |
X'0C' | Längenfehler: Nachrichtenlänge <= 0 oder größer 251 Byte. |
X'10' | Nachrichtenausgabe derzeit nicht möglich (kann z.B. während Erzeugung oder Beendigung |