Allgemeines
Anwendungsgebiet: | Ein-/Ausgabe von Dateien und Sätzen; siehe "Dateien und Sätze"; Verkehr mit Datenstationen; siehe "Verkehr mit Datenstationen"; Kommunikation; siehe "Kommunikation (Programm, Anwender, System)" |
Makrotyp: | S-Typ, MF-Format 1: 24-Bit-Schnittstelle: Standardform/E-/L-Form; 31-Bit-Schnittstelle: Standardform/E-/L-/C-/D-Form; siehe "S-Typ-Makroaufrufe" |
Stand der Beschreibung: TIAM V13.2A
Für die 31-Bit-Schnittstelle zu beachten:
Die C-/D-Form wird aufgerufen mit MF=C/D bzw. MF=(C,p)/(D,p).p = Präfix (max. 3 Zeichen); Voreinstellung: p = CUB. Das Präfix verändert nur die Feldnamen (nicht die symbolischen Namen bei den Equates). Ein zu langes Präfix wird auf 3 Zeichen gekürzt.
Bei Verwendung von MF=C/D werden für den Standardheader keine symbolischen Namen und Equates erzeugt. Bei dynamischer Versorgung des Datenbereichs sollten die Initialisierungswerte für den Standardheader aus einem mit MF=L erzeugten Datenbereich übernommen werden.
Im Standardheader wird kein Returncode übergeben.
Der Makro CUPAB generiert eine DSECT des Datenbereichs des WRTRD für die 24-Bit-Schnittstelle.
Makrobeschreibung
WRTRD kann nur im Teilnehmerbetrieb verwendet werden. WRTRD sendet eine Nachricht zur Datenstation und liest unmittelbar anschließend eine Nachricht von der Datenstation. Außer der zur Datenstation hin übertragenen Nachricht erscheint dabei kein weiteres Eingabeaufforderungszeichen.
Beim Ablauf des Makros werden im Fall von Format 1 die spezifizierten Operanden in einer Operandentabelle abgespeichert und die Anfangsadresse dieser Tabelle in Register R1 geladen. Im Fall von Format 2 wird die im Anwenderprogramm spezifizierte Tabelle verwendet.
Makroaufrufformat 1 und Operandenbeschreibung
WRTRD |
satz1,[edit1],satz2,[edit2],[länge],fehler [{,MODE=COMP ,OTRSUP= {NO / YES},OLINEND= {NO / YES},OHDR= {NO / YES},IHDR= {NO / YES},OHCOPY= {NO / YES},ILCASE= {NO / YES},IGETBS= {NO / YES},ILINEND= {NO / YES},ITRSUP= {NO / YES} / ,MODE=LINE ,OHCOPY= {NO / YES},OHOM= {NO / YES},ONOPOSN= {NO / YES},IGETIC= {NO / YES},OBELL= {NO / YES},ONOLOGC= {NO / YES},EXTEND= {NO / YES},IGETFC= {NO / YES},ILCASE= {NO / YES},IGETBS= {NO / YES},ICFD= {NO / YES} / ,MODE=FORM ,IGETBS= {NO / YES},ILCASE= {NO / YES} / ,MODE=PHYS ,OHDR= {NO / YES},OTRANS= {NO / YES},OETB= {NO / YES},ITRSUP= {NO / YES},IHDR= {NO / YES},ILCASE= {NO / YES},IGETBS= {NO / YES}}] ,RC=OLD / NEW [,VTSUCBA=adr] [,TIMER=wert] ,PARMOD=24 / 31 [,MF=L / C / (C,pre) / (D,pre) / D / (E,...)] |
satz1
symbolische Adresse des auszugebenden Datensatzes. Der Satz beginnt mit dem Satzlängenfeld, gefolgt von einem (beliebigen) Zeichen und der auszugebenden Nachricht.
Satzaufbau und Beispiel:
Byte 0-1: | Länge des Satzes + 4 Byte Satzlängenfeld. |
Byte 2-3: | reserviert |
Byte 4: | beliebiges Zeichen; wird weder übertragen noch ausgewertet. |
Byte 5-n: | Datensatz |
SATZ DC Y (SATZEND-SATZ) DS CL2 reservierte Byte DC X'00' DC C'DATENSATZ' zu übertragender Datensatz SATZEND EQU *
edit1
Dieser Operand gibt die Aufbereitung für den zur Datenstation zu übertragenden Satz an. Durch Direktangabe (X'xx') kann hier nur das 1. Edit-Byte für Ausgabe auf die beim CUPAB-Makro beschriebene Bedeutung gesetzt werden. Dieser Operand ist nicht erforderlich, wenn Standardfunktionen (alle Edit-Bits = 0) verwendet werden, bei einer MODE-Angabe oder bei Nutzung des VTSU-Control-Blocks.
satz2
symbolische Adresse eines Feldes, in das der von der Datensichtstation eingelesene Datensatz übertragen wird. Der Datensatz wird als Satz variabler Länge eingelesen (die ersten 4 Byte enthalten die Satzlänge).
Satzaufbau und Beispiel:
Byte 0-1: | Länge des Satzes + 4 Byte Satzlängenfeld. |
Byte 2-3: | reserviert |
Byte 4-n: | Datensatz |
SATZ2 DS 0CL74 LÄNGE DS CL2 RESERV DS CL2 DATEN DS CL70
edit2
gibt die Aufbereitung für den zum Benutzerprogramm zu übertragenden Satz an. Durch Direktangabe (X'xx') kann hier nur das 1. Edit-Byte für Eingabe auf die beim CUPAB-Makro beschriebene Bedeutung gesetzt werden. Dieser Operand ist nicht erforderlich, wenn Standardfunktionen (alle Edit-Bits = 0) verwendet werden, bei einer MODE-Angabe oder bei Nutzung des VTSU-Control-Blocks.
Hinweis
Die Operanden edit1 und edit2 werden nur noch aus Kompatibilitätsgründen unterstützt. Die Edit-Bytes sollten über MODE-Angaben oder den VTSU-Control-Block (Operand VTSUCBA) gesteuert werden.
länge
Länge des unter satz2 angegebenen Feldes (einschl. 4 Byte Satzlängenfeld);
5 <= länge <= 32767.
Bei fehlender Angabe wird das Längenattribut des angegebenen Feldes angenommen.
fehler
symbolische Adresse, zu der im Fehlerfall verzweigt wird. Im Fehlerfall enthält Register R14 die Adresse des dem WRTRD-Aufruf folgenden Befehls. Der Fehlercode wird im Register R15 übergeben.
31-Bit-Schnittstelle: Bei Angabe fehler = 0 (Adresse X'00..0') wird das Programm mit dem den WRTRD-Makro folgenden Befehl fortgesetzt.
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 C-Form und D-Form des Makroaufrufs kann ein Präfix (pre = 1..3 Buchstaben), wie im Aufrufformat dargestellt, angegeben werden. Voreinstellung: pre = CUB
PARMOD=
steuert die Makroauflösung. Es wird entweder die 24-Bit- oder die 31-Bit-Schnittstelle generiert.
Wenn PARMOD nicht spezifiziert wird, erfolgt die Makroauflösung entsprechend der Angabe für den Makro GPARMOD oder der Voreinstellung für den Assembler (= 24-Bit-Schnittstelle).
24
Die 24-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 24-Bit-Adressen (Adressraum <= 16 MB).
31
Die 31-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 31-Bit-Adressen (Adressraum <= 2 GB). Datenlisten beginnen mit dem Standardheader.
Die MODE-Angaben zusammen mit den Edit-Optionen werden nur noch aus Kompatibilitätsgründen unterstützt. Sie werden jetzt im VTSU-Control-Block (VTSUCB, siehe Makro VTSUCB) zusammengefasst.
MODE=COMP
Kompatibler Betriebsmodus. Vom Benutzerprogramm können sämtliche Edit-Options über die symbolischen Operanden OTRSUP bis OPTAPE (siehe unten) verwendet werden. Eventuell direkt im Operanden edit gemachte Angaben werden ignoriert. Steuerzeichen in der Ausgabenachricht sind zulässig, werden aber vom System nicht auf Richtigkeit geprüft. Diese Betriebsweise ist kompatibel zu früheren Versionen des Betriebssystems.
Für die Geräte 8160, 8162, 9749, 975x, 9763, 3270 und X.29-Datenstationen wird dieser Modus wie MODE=LINE behandelt. Die Edit-Options OLINEND und ILINEND werden ignoriert. Die Edit-Options OTRSUP, OHDR, ITRSUP und IHDR werden abgewiesen
(RC: X'08').
LINE
Die aktuelle Datenstation soll als logische Zeilen- bzw. Seiten-Datenstation behandelt werden. Die Nachricht kann durch logische Steuerzeichen strukturiert werden (siehe Makro VTCSET).
Für die Ausgabe sind weitere Steuerzeichen unzulässig und werden in ein vom Benutzer definiertes Ersatzzeichen umgewandelt (siehe Kommando MODIFY-TERMINAL-OPTIONS SUBSTITUTE-CHARACTER= ). Ist SYSOUT keine Datenstation, so werden nur die logischen Steuerzeichen NL und NP ausgewertet z.B. bei Ausgaben auf Drukker im Batch-Betrieb.
Bei der Eingabe wird der gerätespezifische Nachrichtenkopf nicht mitgeliefert.
FORM
Format-Modus. Das Benutzerprogramm arbeitet mit der Software-Komponente FHS bzw. Formatsteuerung, die auch die datenstationsgerechte Aufbereitung der Ausgabenachricht vornimmt.
PHYS
Die Nachrichten sollen physikalisch, d.h. ohne Aufbereitung durch das System an die Datenstation ausgegeben bzw. von dort eingelesen werden. Damit können spezielle Gerätefunktionen angesprochen werden, für die der LINE- oder FORM-Modus nicht ausreicht. Wird keine der zulässigen Edit-Options angegeben, stellt das System der Ausgabenachricht einen gerätespezifischen Standard-Nachrichtenkopf voran, aus der Eingabenachricht wird der gerätespezifische Nachrichtenkopf nicht entfernt. Kleinbuchstaben werden in Großbuchstaben umgewandelt und evtl. die Backspace-Funktion ausgeführt.
EXTEND=
legt fest, ob die Felder für Ausgabetexte geschützt oder ungeschützt angelegt werden sollen.
NO
Die Bedienerführung erfolgt durch das System. Geschützt gegen Überschreiben ist nur die Eingabeaufforderung durch das System bzw. das Anwenderprogramm.
Die Ausgaben erfolgen ungeschützt und halbhell.
NIL-Zeichen im Ausgabetext werden in das Ersatzzeichen umgewandelt, bei Eingabe entfernt.
Je nach Betriebsart wird am Anfang der Ausgabe der Bildschirm ab der Schreibmarke gelöscht.
YES
(Nur für Datenstationen 9749, 975x, 9763, 816x und 3270)
Diese Angabe unterstützt die Verwendung von geschützten und ungeschützten Feldern mit den logischen Steuerzeichen EPA, DAR, NUM und SPA (siehe Makro VTC-SET).
Die Ausgabe des Textes erfolgt standardmäßig geschützt und halbhell. Die Nachricht kann durch logische Steuerzeichen strukturiert werden (siehe VTCSET). Bei 3270-Datenstationen ist zu beachten, dass die logischen Steuerzeichen Platz auf dem Bildschirm beanspruchen. Mehrere logische Steuerzeichen hintereinander benötigen aber nur einen Platz. Bereiche, in die der Terminalbediener eingeben kann, werden mit EPA, DAR oder NUM begonnen und mit SPA beendet.
Bei Ein- und Ausgabe wird NIL als erlaubtes Zeichen behandelt, es wird vom Programm zur Datenstation und umgekehrt geschickt. Bei 3270-Datenstationen ist zu beachten, dass NIL-Zeichen nicht zur DVA übertragen werden. VTSU-B ergänzt Felder, die bei der Eingabe verkürzt zurückkommen, durch NIL-Zeichen auf ihre ursprüngliche Länge. Dadurch bekommt der Anwender die Felder immer in der Ausgabelänge zurück.
Der Anfang einer Ausgabenachricht wird an dem der Schreibmarke folgenden nächsten Zeilenanfang abgebildet. Vor dem 1.Textzeichen wird der Schirm ab Schreibmarke gelöscht, wenn die Nachricht nicht mit VPA beginnt.
Wird bei der Ausgabe das Bildschirmende erreicht, so wird am Schirmanfang fortgesetzt. Diese Fortsetzung ist in jedem Fall ungeschützt. Die Bildschirmüberlaufkontrolle ist unwirksam.
Die Tasten RU, EFZ, AFZ und LSP sind gesperrt.
Alle anderen Edit-Options außer OBELL, ILCASE, IGETFC werden ignoriert.
Wird in einer Eingabenachricht das Steuerzeichen NL erkannt, so wird die Bearbeitung fortgesetzt und der Returncode X'2C' geliefert.
ICFD=
gibt an, ob vertrauliche Daten geschützt werden sollen.
NO
Es sollen keine Vorkehrungen zum Schutz vertraulicher Daten getroffen werden.
YES
Die Eingabedaten sind vertraulich und sollen an der Datenstation unsichtbar bleiben. Dies erfolgt je nach Datenstation durch Dunkelsteuerung bzw. Löschen des Bildschirms oder durch Überschreiben der Eingabezeile bei Schreibstationen.
IGETBS=
bestimmt, ob „Underline“ (X'6D') in das Benutzerprogramm übertragen wird. Die Angabe des Operanden ist nur für 8103-Datensichtstationen sinnvoll.
NO
„Underline“ wird nicht in das Benutzerprogramm übertragen.Stattdessen wird vom System die Korrekturfunktion durchgeführt.
YES
Die Zeichen „Underline“ werden dem Benutzerprogramm übergeben. Es findet keine Auswertung durch das System statt.
IGETFC=
bestimmt, ob ein Funktionstastencode übergeben wird.
NO
Es soll kein Funktionstastencode übergeben werden.
YES
Das 1. Byte des Einlesebereichs soll den normierten Funktionstastencode enthalten. Dieser identifiziert die zur Auslösung der Datenübertragung an der Datenstation betätigte Taste. Siehe Tabelle der normierten Funktionstastencodes im Anhang, "Tabelle der normierten Funktionstastencodes".
IGETIC=
legt fest, ob die Eingabequelle verändert werden soll.
NO
Die Eingabequelle soll nicht verändert werden.
YES
Die Eingabe soll vom angeschlossenen Ausweisleser erfolgen. Die Eingabedaten können nur aus der Ausweisinformation oder aus dem Kurztelegramm K14 bestehen. Diese Angabe ist nur bei den Datenstationen 9749, 975x, 9763, 816x und 3270 mit einem definierten Ausweisleser möglich (siehe auch Makro TSTAT TYPE=TCHAR).
Im Unterschied zu den TRANSDATA-Geräten können bei 3270-Datenstationen jederzeit Daten von einem definierten Ausweisleser eingegeben werden. Wenn Eingaben vom Ausweisleser angefordert werden, wird jede andere Eingabe in K14 umgewandelt.
Hinweis
Der Operand IGETIC wird ignoriert, wenn gleichzeitig der Operand ICFD angegeben wird oder wenn kein Ausweisleser angeschlossen ist. Die Eingabequelle bleibt unverändert.
IHDR=
gibt an, wie mit dem Nachrichtenkopf verfahren wird.
NO
Der Nachrichtenkopf wird nicht an das Benutzerprogramm übergeben.
YES
Der gesamte Nachrichtenkopf wird an das Benutzerprogramm übergeben. Bei 3270-Datenstationen besteht der Nachrichtenkopf aus dem Anwendungskennzeichen (AID-Byte) und der zwei Byte langen Schreibmarkenposition.
ILCASE=
legt fest, ob zwischen Klein- und Großschreibung unterschieden werden soll.
NO
Alle Kleinbuchstaben werden dem Benutzerprogramm als Großbuchstaben übergeben.
YES
Dem Benutzerprogramm werden auch Kleinbuchstaben übergeben.
ILINEND=
gibt an, wie mit den Wagenrücklauf-/Zeilenvorschubzeichen verfahren wird.
NO
Die Wagenrücklauf-/Zeilenvorschubzeichen werden dem Benutzerprogramm nicht übergeben.
YES
Die Zeichen Wagenrücklauf/Zeilenvorschub werden in das Benutzerprogramm übertragen.
ITRSUP=
gibt an, ob die Übersetzung von Gerätecode in EBCDIC unterdrückt werden soll.
NO
Die Übersetzung von Gerätecode in EBCDIC wird nicht unterdrückt. Das Benutzerprogramm erhält die Nachricht im EBCDIC-Code.
Ausnahme
Der Nachrichtenkopf bei den Datensichtstationen 816x, 9749, 975x und 9763 wird immer im Gerätecode geliefert.
YES
Die Übersetzung von Gerätecode in EBCDIC wird unterdrückt. Das Benutzerprogramm erhält die Nachricht im Gerätecode.
OBELL=
bestimmt, ob bei der Ausgabe ein akustisches Signal ertönt.
NO
Bei der Ausgabe ertönt kein akustisches Signal.
YES
Bei der Ausgabe ertönt am Ende der Nachricht ein akustisches Signal (nur bei Datenstationen 9749, 975x, 9763 816x und bei 3270 mit einem speziellen Gerätezusatz).
OETB=
bestimmt für die Ausgabenachricht das abschließende Steuerzeichen.
NO
Die Ausgabenachricht zur Datenstation wird mit dem Steuerzeichen ETX abgeschlossen.
YES
Die Ausgabenachricht zur Datenstation wird mit dem Steuerzeichen ETB abgeschlossen.
OHCOPY=
legt fest, ob die Ausgabenachricht nicht nur auf eine Datensichtstation, sondern auch über ein angeschlossenes Hardcopy-Gerät (Drucker) ausgegeben werden soll.
NO
Die Ausgabenachricht wird nur über die Datensichtstation ausgegeben.
YES
Die Ausgabenachricht für eine Datensichtstation wird gleichzeitig über ein dort angeschlossenes Hardcopy-Gerät (Drucker) ausgedruckt. Das Hardcopy-Gerät muss generiert werden oder mit dem Kommando MODIFY-TERMINAL-OPTIONS zugewiesen werden.
Bei 3270-Datenstationen:
Der Inhalt des gesamten Bildschirmes wird über das Hardcopy-Gerät ausgedruckt. Dadurch werden eventuell auch frühere Aus- und Eingaben ausgedruckt. Bei mehreren direkt aufeinander folgenden Ausgaben wird die Hardcopy-Funktion nur bei der letzten Ausgabe ausgelöst. Der Hardcopy-Abdruck erfolgt nur dann, wenn für die Datensichtstation beim Verbindungsaufbau ein Hardcopy-Gerät generiert wurde.
Wurde EXTEND=YES oder MODE=EXTEND angegeben, erfolgt kein Hardcopy-Abdruck.
Wird OHCOPY=YES verwendet und enthält die Nachricht das logische Steuerzeichen SPA, EPA, CHS oder NUM, so wird nicht die gesamte Nachricht, sondern nur der letzte ungeschützte Teil der Nachricht abgedruckt.
Wird gleichzeitig OVERFLOW-CONTROL=NO (im Kommando MODIFY-TERMINAL-OPTIONS) verwendet, kann es vorkommen, dass nur ein Teil der Ausgabe auf dem Hardcopy-Gerät wiedergegeben wird.
OHDR=
gibt an, wie das System mit dem Nachrichtenkopf verfahren soll.
NO
Der Nachrichtenkopf (im US-ASCII-Code) wird dem Ausgabetext nicht vorangestellt.
YES
Die Nachricht enthält einen benutzerindividuellen Nachrichtenkopf (Der Nachrichtenkopf ist im US-ASCII-Code anzugeben), den das System dem Ausgabetext voranstellt. Die Länge des Nachrichtenkopfes +1 muss inm ersten Byte der Nachricht binär angegeben werden.
Bei 3270-Datenstationen:
Der Nachrichtenkopf wird im EBCDIC-Code angegeben und besteht aus dem CMD-Byte und dem WCC-Byte. Vor diesem Nachrichtenkopf muss ein Byte mit dem Inhalt X'01' gesetzt werden (Länge des TRANSDATA-Nachrichtenkopfes + 1).
Hinweis
Bei Ausgabe auf die Datensichtstationen 8160, 975x, 9763 und daran lokal angeschlossene Drucker ist zu beachten, dass das System (MODE=LINE bzw. COMP) oder FHS mit MODE=FORM keinen Nachrichtenkopf verwendet (PARAMO, PA-RAM1), sondern mit Operandenangaben (PAG) arbeitet. Die Unterschiede zwischen diesen beiden Arbeitsweisen finden Sie in den Handbüchern der Datensichtstationen bzw. Drucker.
OHOM=
gibt an, ob die Nachricht strukturiert oder homogen ausgegeben werden soll.
NO
Die Nachricht soll strukturiert, nicht homogen ausgegeben werden, d.h. als Ausgabeeinheit wird eine logische Zeile betrachtet. Die Nachrichtenlänge ist nicht beschränkt, falls die logischen Zeilen nicht länger als 255 255 Zeichen sind.
Wirkung bei Datenstationen 816x, 975x, 9763 und 3270 bei Betriebsart 1:
Einzelne logische Zeilen können getrennt modifiziert und damit gezielt zurückübertragen werden.
YES
Nur bei Datensichtstationen 816x, 9749, 975x, 9763 und 3270 anzuwenden.
Die Nachricht soll unstrukturiert, homogen ausgegeben werden, d.h. die gesamte Nachricht wird als eine Ausgabeeinheit betrachtet. Die Nachrichtenlänge ist durch die Größe des Ausgabepuffers im System beschränkt.
Wirkung bei Datensichtstationen 816x, 975x, 9763 und 3270 bei Betriebsart 1:
Durch Modifikation eines Zeichens einer Ausgabenachricht kann die gesamte Nachricht wieder zurückübertragen werden, sofern diese keine logischen Anzeigesteuerzeichen enthält.
OLINEND=
gibt an, wie mit den Wagenrücklauf-/Zeilenvorschubzeichen verfahren wird.
NO
Jede Ausgabenachricht beginnt bei einer Datenstation immer mit einer neuen Zeile. Die dafür notwendigen Steuerzeichen werden vom System der Nachricht vorangestellt
bzw. bei Erreichen des physikalischen Zeilenendes in die Nachricht eingeschoben, wenn es die betreffende Datenstation erforderlich macht.
YES
Die Ausgabe der Nachricht zur Datenstation erfolgt ohne vom System bereitgestellte Steuerzeichen für Wagenrücklauf/Zeilenvorschub. Die Steuerung muss vom Benutzerprogramm vorgenommen werden.
ONOLOGC=
gibt an, ob logische Steuerzeichen ausgewertet werden sollen.
NO
Alle logischen Steuerzeichen werden ausgewertet und spezielle physikalische Steuerzeichen werden durchgelassen (siehe Makro VTCSET z.B. ESC, DC4). Andere Zeichen < X'40' werden durch SUB ersetzt. Zeichen >= X'40' werden durchgelassen.
YES
Logische Steuerzeichen werden nicht ausgewertet. Alle Zeichen, die im EBCDIC-Code < X'40' sind, werden durch SUB ersetzt.
Nur Zeichen >= X'40' werden durchgelassen.
ONOPOSN=
bestimmt, wo die Nachricht beginnen soll.
NO
Die Nachricht beginnt am Anfang der nächsten Zeile.
YES
Die Nachricht beginnt am Anfang der aktuellen Zeile (gilt nur für Schreibstationen).
OTRANS=
gibt an, ob die Ausgabedaten normiert oder transparent übertragen werden sollen.
NO
Die Ausgabedaten sollen normiert übertragen werden, d.h. es findet eine Codeumsetzung statt.
YES
Die Ausgabedaten sollen transparent übertragen werden, d.h. sie bestehen aus beliebigen Binärzeichen (je nach Gerätecode aus 5, 7 oder 8 Bit pro Zeichen), die auf dem Übertragungsweg nicht umgewandelt werden. Ist der Übertragungsweg nicht „potenziell transparent“ generiert, wird die Ausgabe mit dem Returncode X'04' zurückgewiesen.
OTRSUP=
gibt an, ob die Übersetzung von Gerätecode in EBCDIC unterdrückt werden soll.
NO
Die Übersetzung der Nachricht von EBCDIC in Gerätecode wird nicht unterdrückt, d.h. das Programm liefert die Nachricht in EBCDIC-Code. Im System wird die Nachricht in den Gerätecode übersetzt.
YES
Die Übersetzung der Nachricht wird unterdrückt. Das Programm muss in diesem Fall die Nachricht im Gerätecode liefern.
RC=
legt fest, wo der Returncode abgelegt wird.
Dieser Operand ist nur für eine 31-Bit-Schnittstelle zulässig.
OLD
Der Returncode wird im rechtsbündigen Byte des Register R15 abgelegt.
NEW
Der Returncode wird sowohl im Register R15 als auch im Standardheader abgelegt. Alle 4 Byte des Registers R15 sind für die Auswertung belegt. Ein 4 Byte-Returncode wird nur zurückgeliefert, wenn SYSDTA von der Datensichtstation liest. In allen anderen Fällen wird nur ein 1 Byte-Returncode zurückgeliefert, unabhängig vom Wert des Returncodes.
TIMER=
legt eine max. Wartezeit für die Eingabe fest. Falls innerhalb der festgelegten Wartezeit keine Eingabe erfolgt, wird ein Returncode zurückgegeben. Die Angabe dieses Operanden ist nur für die 31-Bit-Schnittstelle zulässig.
wert
Wartezeit zwischen 10 und 3600 Sekunden.
Standardwert ist UNLIMITED, d.h. es wird kein Timer benutzt.
VTSUCBA=
bestimmt die Adresse eines mit MF=L erzeugten VTSUCB.
Bei Benutzung des Operanden VTSUCBA wird der Operand MODE und die folgenden Edit-Optionen ignoriert (im Datenbereich wird ihr Wert auf X'FF' gesetzt), d.h. alle gewünschten Edit-Optionen müssen im VTSUCB angegeben werden.
Die Angabe dieses Operanden ist nur für die 31-Bit-Schnittstelle zulässig.
Standardmäßig erfolgt keine Verwendung des VTSUCB.
adr
symbolische Adresse (Name) des VTSUCB.
Programmierhinweise
für die Verwendung des Operanden MODE=EXTEND bzw. EXTEND=YES(für 3270-Datenstationen siehe Anhang)
Mit MODE=EXTEND bzw. EXTEND=YES im LINE-Mode kann mit Formaten gearbeitet werden, ohne dass hierbei eine Formatsteuerung benutzt werden muss.
Soll der Anwender wie mit Formaten arbeiten, so muss die 1. Ausgabe mit NP beginnen, um den Bildschirm zu löschen und mit dem Text in Position (1.1) beginnen zu können.
Mit NL wird auf den nächsten Zeilenanfang positioniert und der Rest des Bildschirmes gelöscht, mit VPAn auf den Anfang der Zeile n, wobei der Rest des Bildschirmes erhalten bleibt.
Positionierung innerhalb einer Zeile kann nur durch Text, Zwischenräume oder NIL-Zeichen erfolgen.
Der Text nach VPAn, NL bzw. CHS wird geschützt und halbhell dargestellt.
Ungeschützte Felder werden mit „EPA Text SPA“ erzeugt.Dunkelgesteuerte ungeschützte Felder werden mit „DAR text SPA“ erzeugt.Numerische Felder werden mit „NUM text SPA“ erzeugt.
Mit VPAn am Ende der Nachricht kann die Schreibmarke auf den Anfang des ersten ungeschützten Feldes der Zeile n gesetzt werden, wobei der Bildschirminhalt erhalten bleibt. Beginnt in Zeile n kein ungeschütztes Feld, so wird auf den Anfang des ersten ungeschützten Feldes nach Zeile n positioniert.Wird am Ende der Nachricht kein VPAn angegeben, so wird die Schreibmarke in das erste ungeschützte Feld auf dem Bildschirm gesetzt.
Folgeausgabe / Bild-UpdateMit NP wird ein neues Bild erzeugt.Mit VPAn am Anfang der Ausgabe wird Zeile n des Bildes geändert. Mit VPAn können eine oder mehrere Zeilen übersprungen werden. In der aktuellen Zeile wird ab der Schreibmarke ein dunkler Bereich erzeugt, der bis zum Zeilenende bzw. einem davor liegenden Feld reicht. Anschließend wird in die Zeile n positioniert. Am Ende der Änderung sollte die Schreibmarke wieder mit VPAn positioniert werden, da sonst der Bildschirm ab der Schreibmarke gelöscht würde (s.o.). Bei der Verwendung von NL innerhalb einer Änderung wird ebenfalls der Bildschirm ab Schreibmarke gelöscht. Soll dies verhindert werden, muss eine neue Zeile immer mit VPAn angesprungen werden.
Makroaufrufformat 2 und Operandenbeschreibung
WRTRD |
(1) |
(1)
Register R1 enthält die Adresse des Datenbereichs. Die Liste ist auf Wortgrenze auszurichten.
Aufbau des Datenbereichs
Adressierungs- | Byte | Inhalt |
24-Bit-Modus | 0 | Output Edit Byte 1. |
1 - 3 | Adresse des auszugebenden Datensatzes (Operand satz1). | |
4 | Input Edit Byte 1. | |
5 - 7 | Adresse des Feldes, in das der einzulesende Datensatz übertragen wird | |
8 | Output Edit Byte 1. | |
9 | Input Edit Byte 2. | |
10 - 11 | max. Länge des einzulesenden Datensatzes (Operand länge). | |
12 - 15 | Adresse, zu der im Fehlerfall verzweigt wird (Operand fehler). | |
31-Bit-Modus | 0 - 7 | Standardheader. Aufbau siehe "Standardheader" |
8 - 11 | Adresse, zu der im Fehlerfall verzweigt wird (Operand fehler). | |
12 - 15 | Adresse des auszugebenden Datensatzes (Operand satz1). | |
16 - 19 | Adresse des Feldes, in das der einzulesende Datensatz übertragen wird | |
20 | Output Edit Byte 1. | |
21 | Output Edit Byte 2. | |
22 | Input Edit Byte 1. | |
23 | Input Edit Byte 2. | |
24 - 25 | max. Länge des einzulesenden Datensatzes (Operand länge). | |
26 | reserviert (X'00' ). | |
27 | Flag mit Anzeigen für die Verwendung des VTSUCB und für Returncode-Verhalten. | |
28 - 31 | Adresse des VTSUCB | |
32 - 33 | Werte des Timers | |
34 - 35 | reserviert (X'00000000' ) |
Bei Verwendung der 24-Bit-Schnittstelle sind die Werte für Input/Output Edit Byte 1/2 der beim Makro CUPAB angegebenen Tabelle zu entnehmen.
Bei Verwendung der 31-Bit-Schnittstelle sind die Werte einer mit MF=C/D erzeugten Liste zu entnehmen.
Wird während einer Schreib-/Lese-Operation ein „BREAK“ erkannt, so wird der Befehlszähler auf den Anfang der Makroauflösung zurückgesetzt, sodass nach der Behandlung der Unterbrechung der Makroaufruf wiederholt wird.
Wenn die Länge des zu schreibenden Satzes (minus 4 Byte für das Längenfeld und 1 Byte reserviert) die Größe des Puffers für die Datenstation überschreitet, wird der Satz verkürzt. Es wird mit dem Returncode X'10' in Register R15 zur Fehleradresse des Benutzers verzweigt.
Wenn die Länge des zu lesenden Satzes die angegebene Länge (minus 4 Byte für das Längenfeld) überschreitet, wird der Satz verkürzt und es wird mit dem Returncode X'0C' in Register R15 zur Fehleradresse des Benutzerprogramms verzweigt.
Rückinformation und Fehleranzeigen
Edit Options (Aufbereitungsparameter), die für ein Gerät oder für die gewählte MODE-Art nicht zulässig sind, werden vom System so weit möglich korrigiert (siehe Returncode X'20').
Während der Makrobearbeitung enthält Register R1 die Adresse der Operandenliste.
bei PARMOD=24:
R15:
+---------------+ | | | | | |0|0|0|0|0|0|a|a| +---------------+
Über die Ausführung des Makros WRTRD wird im Register R15 ein Returncode übergeben.
X'aa' | Erläuterung |
X'00' | Erfolgreiche Bearbeitung der Funktion. |
X'04' | Nicht behebbarer Fehler. |
X'08' | Operandenfehler. |
X'0C' | Satz beim Einlesen abgeschnitten. Die Länge des Satzes überschreitet die angegebene |
X'10' | Ausgabesatz abgeschnitten. Die Länge des auszugebenden Satzes überschreitet die Größe |
X'14' | WRTRD wurde in einem Batch-Auftrag aufgerufen. |
X'18' | Eingabeende (ETX) erkannt. |
X'20' | Ungültiges Edit-Option-Byte, wurde vom System korrigiert. |
X'2C' | Die Eingabe beginnt mit Steuerzeichen NL (nur bei Edit-Option EXTEND=YES) |
X'38' | Fehler im Zusammenhang mit POSIX. |
bei PARMOD=31:
bei RC=OLD:
Zusätzlich zu den bei PARMOD=24 beschriebenen Returncodes kann der Returncode
X'aa' | Erläuterung |
X'24' | Fehler im VTSUCB. |
auftreten, sowie die Returncodes, die durch Konvention makroübergreifend festgelegt sind (siehe Tabelle „Standard-Returncodes“ (Standardheader)).
bei RC=NEW:
Die Returncodes werden sowohl im Standardheader als auch im Register R15 eingetragen.
Standardheader:
+---------------+ | | | | | |c|c|b|b|a|a|a|a| +---------------+
Über die Ausführung des Makros WRTRD wird im Standardheader folgender Returncode übergeben (cc=Subcode2, bb=Subcode1, aaaa=Maincode):
X'cc' | X'bb' | X'aaaa' | Erläuterung |
X'00' | X'00' | X'0000' | Erfolgreiche Bearbeitung der Funktion. |
X'00' | X'00' | X'0020' | Erfolgreiche Bearbeitung der Funktion, ein aufgetretener Operandenfehler |
X'00' | X'01' | X'0008' | Nicht korrigierter Operandenfehler. |
X'07' | X'01' | X'0008' | Nicht korrigierter Operandenfehler: die RESERVED-Felder sind nicht 0 |
X'08' | X'01' | X'0008' | Nicht korrigierter Operandenfehler: |
X'00' | X'20' | X'0004' | Interner Fehler. |
X'02' | X'20' | X'0004' | Interner Fehler: BCAM-Nachricht verloren. |
X'05' | X'20' | X'0004' | Interner Fehler: Eingabenachricht zu lang. |
X'06' | X'20' | X'0004' | Interner Fehler: negative Transportquittung. |
X'00' | X'40' | X'0004' | Ein-/Ausgabe abgebrochen. |
X'00' | X'40' | X'000C' | Eingabesatzlänge > spezifizierte Länge: |
X'00' | X'40' | X'0010' | Abschneiden des Ausgabesatzes. |
X'00' | X'40' | X'0014' | BREAK im WRTRD. |
X'00' | X'40' | X'0018' | Ende der Eingabe. |
X'00' | X'40' | X'002C' | NL erkannt. Dieser Returncode kann nur bei Edit-Optionen mit EX- |
X'00' | X'40' | X'0034' | Timer-Ablauf (innerhalb der festgelegten Wartezeit erfolgte keine Eingabe). |
X'00' | X'00' | X'0014' | Fehler bei SYSFILE: WRTRD im Batch-Betrieb. |
X'01' | X'80' | X'0004' | Interner BCAM-Engpass. |
X'09' | X'80' | X'0038' | Fehler im Zusammenhang mit POSIX: |
X'0A' | X'40' | X'0038' | Fehler im Zusammenhang mit POSIX: |
X'24' | VTSU-Fehler. Außer Maincode (rechtes Byte) siehe Fehlerinformation |
Beispiel 1
Das Beispiel realisiert die Ausgabe einer Meldung, die vom Anwender beantwortet werden soll. Die Abfrage wird wiederholt, solange als Antwort „N“ eingegeben wird. Bei einer Antwort !=
„N“ wird das Programm beendet. Der Aufruf des Makros WRTRD erfolgt im Makroaufrufformat 1.
WRTRD1 START PRINT NOGEN WRTRD1 AMODE 31 WRTRD1 RMODE 24 BALR 3,0 USING *,3 QUEST WRTRD QUERY,,INPUT,,5,END,PARMOD=31 2 *,@DCEO 999 921011 53531004 2 *,@DCEI 999 921011 53531002 CLI REPLY,'N' BE QUEST END WROUT TEXT,TERM,PARMOD=31 2 *,@DCEO 999 921011 53531004 TERM TERM **** Definitions **** QUERY DC Y(ENDQU-QUERY) DS CL2 DC X'01' DC 'TERMINATE PROGRAM (Y/N) ?' ENDQU EQU * INPUT DS 0CL5 DS CL4 REPLY DS CL1 TEXT DC Y(ENDTEXT-TEXT) DS CL3 DC C'*** The WRTRD1 program was terminated. ***' ENDTEXT EQU * END
Ablaufprotokoll:
/start-assembh % BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED % ASS6010 <ver> OF BS2000 ASSEMBH READY //compile source=*library-element(macexmp.lib,wrtrd1), - // compiler-action=module-generation(module-format=llm), - // module-library=macexmp.lib, - // listing=parameters(output=*library-element(macexmp.lib,wrtrd1)) % ASS6011 ASSEMBLY TIME: 310 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES % ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS % ASS6006 LISTING GENERATOR TIME: 82 MSEC //end % ASS6012 END OF ASSEMBH /start-executable-program library=macexmp.lib,element-or-symbol=wrtrd1, - / prog-mode=*any % BLS0523 ELEMENT 'WRTRD1', VERSION '@' FROM LIBRARY ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS % BLS0524 LLM 'WRTRD1', VERSION ' ' OF '<date> <time>' LOADED TERMINATE PROGRAM (Y/N) ? n TERMINATE PROGRAM (Y/N) ? y *** The WRTRD1 program was terminated. ***
Beispiel 2
Dieses Beispiel realisiert den gleichen Ablauf wie Beispiel 1, der Aufruf des Makros WR-TRD erfolgt jedoch im Makroaufrufformat 2.
WRTRD2 START PRINT NOGEN BALR 10,0 USING *,10 LOOP LA 1,PARAM WRTRD (1),PARMOD=31 CLI REPLY,'N' BE LOOP END WROUT TEXT,TERM,PARMOD=31 2 *,@DCEO 999 921011 53531004 TERM TERM **** Definitions **** DS 0F PARAM WRTRD QUERY,,INPUT,,5,END,MF=L,PARMOD=31 2 *,@DCEO 999 921011 53531004 2 *,@DCEI 999 921011 53531002 * QUERY DC Y(ENDQU-QUERY) DS 3X DC 'TERMINATE PROGRAM (Y/N) ?' ENDQU EQU * INPUT DS 0CL5 LENGTH DS CL2 UNUSED DS CL2 REPLY DS CL1 TEXT DC Y(ENDTEXT-TEXT) DS CL3 DC C'*** The WRTRD2 program was terminated. ***' ENDTEXT EQU * END
Beispiel 3
WRTRD3 START PRINT NOGEN BALR 10,0 USING *,10 WRTRD MESSAGE,,INPUT,,40,ERROR,PARMOD=31,MODE=LINE, C OBELL=Y,ILCASE=Y,ICFD=Y 2 *,@DCEO 999 921011 53531004 2 *,@DCEI 999 921011 53531002 ERROR NOP 0 TERM **** Definitions **** MESSAGE DC Y(ENDMESS-MESSAGE) DS 3X DC C'Output WRTRD example 3' ENDMESS EQU * INPUT DS 0CL14 LENGTH DS CL2 UNUSED DS CL2 DATA DS CL10 END
Beispiel 4
Verwendung des VTSUCB
WRTRD4 START PRINT NOGEN BALR 10,0 USING *,10 WRTRD MESSAGE,,INPUT,,40,ERROR,PARMOD=31,VTSUCBA=VTSUPAR ERROR NOP 0 TERM * VTSUPAR VTSUCB MODE=LINE,BELL=YES,LOW=YES,SPECIN=C 1 *,VTSUCB 350 980309 MESSAGE DC Y(ENDMESS-MESSAGE) DS 3X DC C'Output WRTRD example 4' ENDMESS EQU * INPUT DS 0CL40 LENGTH DS CL2 UNUSED DS CL2 DATA DS CL36 END
Beispiel 5
WRTRD mit Extended-Line-Mode
WRTRD5 START PRINT GEN BALR 3,0 USING *,3 QUEST WRTRD OUTPUT,,INPUT,,90,END,MODE=LINE,EXTEND=YES,PARMOD=31 1 QUEST ##SPASS S0001S,S0001D A312 2 CNOP 0,4 2 QUEST BAS 1,S0001S ADDRESS AND SKIP PARAMS 1 S0001D DS 0F A340 1 FHDR UNIT=36,FUNCT=19,VERS=2 2 DS 0A 2 DS 0XL8 GENERAL OPERAND LIST HEADER 2 DC AL2(36) FUNCTION UNIT NUMBER 2 DC AL1(19) FUNCTION NUMBER 2 DC AL1(2) FUNCTION INTERFACE VERSION NUMBER 2 DC X'FFFFFFFF' Returncode is virgin 1 DC A(END) ERROR RETURN ADDRESS 1 DC AL4(OUTPUT) MESSAGE AREA ADDRESS 1 DC AL4(INPUT) READ IN AREA DDRESS 1 DS AL1(0) PLACE FOR O.EDIT BYTE 1 1 DS AL1(0) PLACE FOR O.EDIT BYTE 2 1 DS AL1(0) PLACE FOR I.EDIT BYTE 1 1 DS AL1(0) PLACE FOR I.EDIT BYTE 2 1 DC AL2(90) NUMBER OF CHARS. TO BE READ 1 DC AL1(0) RESERVED 2 1 DC AL1(0) FLAG BYTE 1 1 DC AL4(0) VTSUCB ADDRESS 1 DC AL2(0) INPUT TIMER VALUE 009 1 DC H'0' RES_FOR_TIAM 007 1 * 1 @DCEO OTRSUP=,OLINEND=,OMANUAL=, C 1 OHCOPY=,OPTAPE=,ONOPOSN=, C 1 OHDR=,OETB=,OHOM=,OEXTEND=YES, C 1 MODE=LINE,DCEDIT=,OBELL=,OTRANS=, C 1 ONOLOGC=, C 1 RDA1=-16,RDA2=-15 2 ORG *-16 2 DC AL1(4) 2 ORG *+16-1 2 ORG *-15 2 DC AL1(4) 2 ORG *+15-1 2 *,@DCEO 999 921011 53531004 1 *
1 @DCEI DCEDIT=,MODE=LINE,RDA1=-14,RDA2=-13, C 1 ITRSUP=,ILINEND=,ICFD=, C 1 IGETBS=,ILCASE=,IHDR=, C 1 IGETFC=,IGETIC=,IEXTEND=YES 2 ORG *-14 2 DC AL1(32) 2 ORG *+14-1 2 ORG *-13 2 DC AL1(32) 2 ORG *+13-1 2 *,@DCEI 999 921011 53531002 1 * 1 S0001S DS 0Y A340 1 SVC 39 SYSFILE SVC 1 * CLC INLNAME(4),='XXXX' BNE QUEST END TERM 1 END DS 0H 206 1 LA 1,S0006D 205 1 B S0006S 200 1 S0006D DS 0F 200 1 FHDR UNIT=6,FUNCT=40,VERS=1 207 2 DS 0A 2 DS 0XL8 GENERAL OPERAND LIST HEADER 2 DC AL2(6) FUNCTION UNIT NUMBER 2 DC AL1(40) FUNCTION NUMBER 2 DC AL1(1) FUNCTION INTERFACE VERSION NUMBER 2 DC X'FFFFFFFF' Returncode is virgin 1 DC XL1'01' 207 1 DC XL1'00' 1 DC XL1'00' 1 DC XL1'04' 1 DC CL4' ' 1 S0006S DS 0Y 200 1 SVC 9 * VTCSET LOG 1 * 1 * VIRTUAL TERMINAL CONTROL CHARACTER SET 1 * 1 * 1 * LOGICAL RECORD DELIMITERS 1 * 1 LOGNL EQU X'15' LOGICAL LINE END (CONT NEXT LINE) 1 LOGNP EQU X'0C' LOGICAL PAGE END (CONT NEXT PAGE) 1 LOGCL EQU X'0D' LOGICAL LINE END (CONT SAME LINE)
1 LOGVPA EQU X'29' LOG VERTICAL POS ABSOLUT (CONT LINE N) 1 LOGHPA EQU X'2A' LOG HORIZONT POS ABSOLUT (CONT COL N) 1 LOGASF EQU X'21' LOG SHEED FEDDING FROM CASETTE N D1 1 LOGCAP EQU X'20' CONTINUE ACTUAL POSITION AT MSG BEGIN 1 * 1 * LOGICAL UNIT DELIMITERS 1 * 1 LOGEM1 EQU X'1D' EMPHASIZED LAYOUT 1 1 LOGEM2 EQU X'1F' EMPHASIZED LAYOUT 2 1 LOGEM3 EQU X'13' EMPHASIZED LAYOUT 3 1 LOGEM4 EQU X'14' EMPHASIZED LAYOUT 4 1 LOGNOR EQU X'1E' NORMAL LAYOUT 1 LOGDAR EQU X'12' DARK LAYOUT 1 LOGPLD EQU X'2B' PARTIAL LINE DOWN 1 LOGPLU EQU X'2C' PARTIAL LINE UP 1 * 1 LOGSO EQU X'0E' SHIFT OUT TO 2ND CHARACTER SET 1 LOGSI EQU X'0F' SHIFT IN TO NORMAL CHARACTER SET 1 * 1 LOGSPA EQU X'36' START PROTECTED AREA 1 LOGEPA EQU X'08' END PROTECTED AREA 1 LOGNUM EQU X'11' START NUMERIC (UNPROTECTED) AREA 1 * 1 LOGCHS EQU X'06' CHARACTER SET D1D2 1 LOGCOL EQU X'17' COLOUR CHOICE 1 LOGLOC EQU X'09' LOCAL ATTRIBUTE START S1 1 LOGLOX EQU X'0A' LOCAL ATTRIBUTE EXIT S1 1 * 1 LOGVMI EQU X'24' VERTICAL MOVEMENT INDICATOR D1 1 LOGHMI EQU X'23' HORIZONTAL MOVEMENT INDICATOR D1 1 LOGLM EQU X'38' LEFT MARGIN D1D2D3 1 LOGPTS EQU X'1A' PROPORTIONAL TYPING START 1 LOGPTX EQU X'1B' PROPORTIONAL TYPING END 1 LOGMLL EQU X'33' MAXIMAL LINE LENGTH 1 LOGMLN EQU X'35' MAXIMAL LINE NUMBER (ON PAGE) 1 LOGNLQ EQU X'39' NEAR LETTER QUALITY START 1 LOGNLX EQU X'3B' NEAR LETTER QUALITY EXIT 1 * 1 * SPECIAL FUNCTIONS 1 * 1 LOGDEL EQU X'07' DELETE 1 LOGBS EQU X'16' BACKSPACE 1 LOGSUB EQU X'3F' SUBSTITUTE 1 * 1 * DELIMITER EXTENSION 1 * 1 LOGEXT EQU X'3E' DELIMITER EXTENSION BYTE
1 * 1 * EXTENDED LOGICAL DELIMITERS 1 * 1 LOGTRA EQU C'T' TRANSPARENT OUTPUT X1L1L2 1 LOGDIM EQU C'D' DIMENSION OF SCREEN D1D2D3D4D5 1 LOGRPT EQU C'R' REPEAT NEXT CHARACTER NN TIMES 1 LOGDIS EQU C'I' SET DISPLAY ATTRIBUTES 1 LOGRS EQU X'00' RESET DISPLAY ATTRIBUTES 1 LOGFL EQU X'01' FLASHING 1 LOGUND EQU X'02' UNDERSCORED 1 LOGBLK EQU X'04' BLANKED 1 LOGRIN EQU X'08' REDUCED INTENSITY 1 LOGINV EQU X'10' INVERSE 1 LOGFLD EQU C'F' SET FIELD CHARACTERISTICS 1 LOGINP EQU X'00' INPUT FIELD 1 LOGPNS EQU X'01' PROTECTED NOT SENDABLE 1 LOGPRS EQU X'20' PROTECTED SENDABLE 1 LOGNUF EQU X'02' NUMERIC 1 LOGMOD EQU X'04' PRE-MODIFIED 1 LOGMAR EQU X'08' MARKABLE 1 LOGPRT EQU X'10' PRINTABLE 1 LOGASK EQU X'40' AUTOMATIC SKIP 1 * 1 * 1 * PHYSICAL UNIT DELIMITERS 1 * 1 LOGESC EQU X'27' ESCAPE X 1 LOGDC4 EQU X'3C' DC4 X 1 LOGHT EQU X'05' HORIZONTAL TABULATION 1 LOGVT EQU X'0B' VERTICAL TABULATION 1 * 1 *,VTCSET 080 941024 53531028 INPUT DS 0CL90 DS CL4 INLNAME DS CL20 INFNAME DS CL12 INSTR DS CL30 INZIP DS CL4 INCITY DS CL20 OUTPUT DS 0H DC Y(ENDOUT-OUTPUT) DS CL2 DC X'01' DC AL1(LOGNP) DC AL1(LOGNL) DC AL1(LOGNL) DC AL1(LOGSPA)
DC AL1(LOGEM3) DC C'PLEASE ENTER NAME AND ADDRESS' DC AL1(LOGNL) DC AL1(LOGNL) DC AL1(LOGSPA) DC C' LAST NAME: ' DC AL1(LOGEPA) NAME DS CL20 DC AL1(LOGNL) DC AL1(LOGSPA) DC C' FIRST NAME: ' DC AL1(LOGEPA) FNAME DS CL12 DC AL1(LOGNL) DC AL1(LOGSPA) DC C' STREET: ' DC AL1(LOGEPA) STREET DS CL30 DC AL1(LOGNL) DC AL1(LOGSPA) DC C' ZIP and CITY: ' DC AL1(LOGEPA) DC AL1(LOGNUM) ZIP DS CL4 DC AL1(LOGSPA) DC C' ' DC AL1(LOGEPA) CITY DS CL20 DC AL1(LOGNL) DC AL1(LOGNL) DC AL1(LOGSPA) DC AL1(LOGEM3) DC C'FOR PROGRAM TERMINATION, ENTER "XXXX" FOR LAST NAME' ENDOUT EQU * END
Ablaufprotokoll:
/start-assembh % BLS0500 PROGRAM 'ASSEMBH', VERSION '<ver>' OF '<date>' LOADED % ASS6010 <ver> OF BS2000 ASSEMBH READY //compile source=*library-element(macexmp.lib,wrtrd5), - // compiler-action=module-generation(module-format=llm), - // module-library=macexmp.lib, - // listing=parameters(output=*library-element(macexmp.lib,wrtrd5)) % ASS6011 ASSEMBLY TIME: 314 MSEC % ASS6018 0 FLAGS, 0 PRIVILEGED FLAGS, 0 MNOTES % ASS6019 HIGHEST ERROR-WEIGHT: NO ERRORS % ASS6006 LISTING GENERATOR TIME: 116 MSEC //end % ASS6012 END OF ASSEMBH /start-executable-program library=macexmp.lib,element-or-symbol=wrtrd5, - / prog-mode=*any % BLS0523 ELEMENT 'WRTRD5', VERSION '@' FROM LIBRARY ':2OSG:$QM212.MACEXMP.LIB' IN PROCESS % BLS0524 LLM 'WRTRD5', VERSION ' ' OF '<date> <time>' LOADED %PLEASE ACKNOWLEDGE
PLEASE ENTER NAME AND ADDRESS LAST NAME: .................... FIRST NAME: ........... STREET: ..................... ZIP and STREET: .... .............................. FOR PROGRAM TERMINATION, ENTER "XXXX" FOR LAST NAME . . .