W Write
W[n][, datei | LINK=WFCB [, C|E|O|BLK] ] [, f-attr|?] [ /[:col:] [ len] [, NS] ] [, SC]
Vom ersten im Sichtfenster angezeigten Satz ausgehend werden n Sätze in die angegebene Write-Datei weggeschrieben. Das Sichtfenster wird um diese n Sätze weiter positioniert.
n Anzahl der in die Write-Datei zu übertragenden Sätze.
Das Zeichen '$' anstelle einer Anzahl n steht für alle Sätze.
Standard: n = 1.
datei Name der Datei, in die die Sätze zu schreiben sind (Write-Datei).
Falls weggelassen: Es wird in die zuletzt angegebene Write-Datei geschrieben.
LINK=WFCB Die Datensätze werden in die mit /FILE ...,LINK=WFCB,... zugewiesene Datei geschrieben.
C Die Ausgabedatei wird nach dem letzten geschriebenen Satz geschlossen.
E Die Ausgabedatei wird mit Open=Extend eröffnet.
O Eine bestehende Ausgabedatei wird überschrieben (Open=Output).
BLK Diese Option ist nur von Bedeutung, falls die aktuelle Display-Datei eine PAM-Datei ist und der Pamkey-Modus eingeschaltet ist (Kommando PK). Durch die Option BLK werden die zu den Pam-Keys gehörigen Blöcke in die Write-Datei übertragen. Standard: Es werden nur die Pam-Keys in die Datei geschrieben.
f-attr Dateiattribute der Write-Datei entsprechend der Syntax eines FILE- oder ADD-FILE-LINK Kommandos.
Beispiel (Parameter gemäß FILE-Kommando):
FCBTYPE=SAM,RECFORM=F,RECSIZE=80,BLKSIZE=(STD,16),SPACE=(120,30),VOLUME=PVT001,DEVICE=D3480
Beispiel (Parameter gemäß ADD-FILE-LINK Kommando):
ACCESS=*SAM,REC-F=*FIX,REC-S=80,BUFFER-L=*STD(16)
? Es wird der SDF-Fragebogen des Kommandos /ADD-FILE-LINK (ADFL) ausgegeben.
Die vorgegebenen Werte der ersten beiden Parameter (LINK-NAME=WFCB und FILE-NAME=...) dürfen nicht verändert oder gelöscht werden.
Standard: Für die Ausgabedatei werden alle Dateiattribute der Display-Datei außer LOGLEN, VALLEN, VALPROP, DSPACE übernommen.
Falls f-attr angegeben, so werden nur diese Attribute für die Ausgabedatei verwendet. Es werden keine Attribute der Display-Datei in die Ausgabedatei übernommen. f-attr kann nicht zusammen mit LINK=WFCB (siehe oben) angegeben werden.
:col: Es wird nur der Teil der Displaysätze ab Spalte :col: weggeschrieben
(:1: = Satzanfang).
Standard: Es werden die vollständigen Datensätze übertragen ( :1: ).
len Es wird ab der angegebenen Spalte/ab Satzanfang in der in len angegebenen Länge geschrieben.
Standard: Es wird in der vollen Länge, d.h. bis zum Satzende weggeschrieben.
NS No Skip. Datensätze, bei denen die Spalte :col: außerhalb des beschriebenen Bereichs liegt, werden bei der Ausgabe in die Write-Datei nicht unterdrückt. Es wird ein Datensatz mit der Länge 4 erzeugt. Sätze dieser Art enthalten ein Satzlängenfeld, jedoch keine Daten.
Standard: Datensätze, bei denen die Spalte :col: außerhalb des beschriebenen Bereichs liegt, werden bei der Ausgabe in die Write-Datei unterdrückt.
SC Ist im Display ein Zeilenlineal eingeblendet (Scale), so wird der Inhalt dieses Zeilenlineals als erster Satz in die Write-Datei geschrieben.
Standard: Das Zeilenlineal wird nicht in die Ausgabedatei aufgenommen.
Hinweise:
Die Write-Datei wird beim Verlassen des Display-Modus über die K1-Taste bzw. Kommando LST automatisch geschlossen. Bei einem nachfolgenden W-Kommando ohne Angabe eines Dateinamens ( W [n] ) wird die zuletzt benutzte Write-Datei im EXTEND-Modus (SAM-Datei) bzw. im INOUT-Modus (ISAM-/PAM-Datei) eröffnet.
Wurde hinter dem Namen der Write-Datei keine der Optionen E/O (Extend/ Overwrite) angegeben, so gilt folgende Regelung:
Falls die Write-Datei im aktuellen CFS-Lauf zum ersten Mal angesprochen wird, so wird als Open-Modus in jedem Fall O (Overwrite) angenommen, d.h. die Datei wird neu angelegt bzw. überschrieben.
Falls in mehreren W / S...=W-Kommandos nacheinander die gleiche Write-Datei angegeben wurde, so wird sie standardmäßig mit Open=Extend eröffnet.
Durch die E-/O-Option kann vom Benutzer ein vom Standardfall abweichender Open-Modus angegeben werden.
Bei ISAM-Dateien können im DUPKEY-Modus (Kommando DUPK) Sätze mit gleichen ISAM-Schlüsseln in die Write-Datei übertragen werden.
Bei ausgeschaltetem DUPKEY-Modus (NDUPK, Standard) wird bei mehreren Sätzen mit gleichen Schlüsseln nur der jeweils letzte in der Write-Datei gespeichert.
Für die Write-Datei ist der DUPKEY-Modus wirksam, der zum Zeitpunkt des Eröffnens der Write-Datei (erstes Write-Kommando) bestand. Ein nachträgliches Umschalten des DUPKEY-Modus hat auf die Write-Datei keine Wirkung, es sei denn, der Display-Modus wird vorübergehend beendet (Drücken der K1-Taste) und danach wieder aufgenommen.
Mit dem Write-Kommando kann eine sequentielle Datei nach einem Schlüsselbegriff aufsteigend sortiert werden:
W9999,datei2,FCBTYPE=ISAM,KEYPOS=kk,KEYLEN=ll
kk und ll bezeichnen den in den Datensätzen der sequentiellen Datei enthaltenen Schlüsselbegriff. Falls mehrere Datensätze mit gleichem Schlüsselbegriff existieren, muß vor Write das Kommando DUPK (siehe oben) eingegeben werden. Die nach dem gewünschten Kriterium sortierte ISAM-Datei kann anschließend wieder in eine sequentielle Datei zurückkonvertiert werden. Die Konvertierung einer SAM-Datei in eine ISAM-Datei mit gleichzeitiger Umsortierung gemäß einem vorgegebenen Schlüsselbegriff kann auch über die Variable Action ONXCONV vorgenommen werden.
Das Write-Kommando ist prinzipiell auch dazu geeignet, mehrere Dateien/Bibliothekselemente in einer Ausgabedatei zusammenzufügen.
Ein einfacheres Mittel hierfür bietet die Variable Action ONXLIST... unter Angabe der NH-Option (No Header). Mehr hierzu auf Seite 5-.
Beispiel:
Die im folgenden aufgeführte CFS-Prozedur sucht in der aktuellen Display-Datei alle Sätze mit einem vorgegebenen String und schreibt n Sätze davor und m Sätze danach in die Datei &W-FILE.
*PROC N,(&ITEM,&W-FILE,&M,&N)
SR
*&ANZ=&M+&N
*&ANZ=&ANZ+1
S,&ITEM
*IF &CFSMSG(1,20) -= '>> SYNTACTICAL ERROR' SKIP .LOOP
*WRITESYS '&CFSMSG'
*SKIP .ENDE2
.LOOP
*IF &CFSMSG(53,3) = 'NOT' SKIP .ENDE
-&M
W&ANZ,&W-FILE
S
*SKIP .LOOP
.ENDE
*K1
.ENDE2
Wegschreiben eines Display-Satzes in eine CFS-Prozedurvariable
W,(&var) [ /[:col:] [ len] ] [ ,L] [ ,KP]
Der erste im Sichtfenster angezeigte Datensatz der Display-Datei wird vollständig oder als Teil in die CFS-Prozedurvariable mit dem angegebenen Namen übertragen.
:col: Es wird nur der Teil des Displaysatzes ab Spalte :col: in die Prozedurvariable übertragen (:1: = Satzanfang).
Standard: Es wird der vollständige Datensätze übertragen.
len Es wird ab der angegebenen Spalte/ab Satzanfang in der in len angegebenen Länge geschrieben.
Standard: Es wird in der vollen Länge, d.h. bis zum Satzende weggeschrieben. Die maximale Länge ist jedoch auf 80 Bytes begrenzt.
L Long. Ist der Datensatz länger als 80 Bytes, so wird für die ersten 80 Bytes zusätzlich eine Variable &var-P0 erzeugt. Für die 2-ten 80 Bytes wird eine Prozedurvariable mit dem Namen &var-P1 generiert, in die die entsprechenden Daten übertragen werden. Dies geht rekursiv bis zur vollen Länge der zu übertragenden Daten (&var-Pn)
KP Keep Position. Bei Pam-Dateien wird nach dem Schreiben der Variablen wieder der gleiche Block angezeigt und nicht wie sonst, auf den nächsten Block weitergeblättert. Zusammen mit dem Kommando SR (Single Record) bewirkt dies eine Reduzierung der IOs.