Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

WRTRD - Kombinierte Ein-/Ausgabe

&pagelevel(3)&pagelevel

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-
Modus

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
(Operand satz2).

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"
Die Initialisierungswerte sind einem mit MF=L erzeugten Datenbereich zu entnehmen.
Bei RC=OLD wird kein Returncode im Standardheader übergeben.

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
(Operand satz2).

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
Länge.
Die Eingabenachricht wird von einem MSV-Terminal mit einem Header versehen. Hat die
Nachricht bereits die Länge des Systempuffers, wird durch Voranstellen dieses Headers
die Nachricht abgeschnitten.

X'10'

Ausgabesatz abgeschnitten. Die Länge des auszugebenden Satzes überschreitet die Größe
des Puffers für die Datenstation.
Die überschüssigen Zeichen werden nicht ausgegeben.

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)
Bei 3270-Datenstationen: Eingabelänge verkürzt.

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
ist durch TIAM/VTSU korrigiert worden.

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:
Der Wert des Operanden TIMER ist nicht im erlaubten Intervall von
10 bis 3600 Sekunden.

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:
Eingabesatz wurde abgeschnitten.

X'00'

X'40'

X'0010'

Abschneiden des Ausgabesatzes.

X'00'

X'40'

X'0014'

BREAK im WRTRD.
Wird während einer Schreib-/Lese-Operation ein „BREAK“ erkannt und
ist RC=NEW, wird dem Anwender der Returncode X'00400014' geliefert.
Ist RC=OLD, wird der TU-Befehlszähler auf den Anfang der Makroauflösung
zurückgesetzt, sodass nach der Behandlung der Unterbrechung
der Makroaufruf wiederholt werden kann.

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-
TEND=YES auftreten.

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:
Ein-/Ausgabe-Serialisierungsfehler.

X'0A'

X'40'

X'0038'

Fehler im Zusammenhang mit POSIX:
Wenn die LOGON-Task im Systemmodus ist, sind keine Ein-/Ausgaben
von mit fork() erzeugten Prozessen möglich.



X'24'

VTSU-Fehler. Außer Maincode (rechtes Byte) siehe Fehlerinformation
im VTSUCB-Header.

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 
 .
 .
 .