WRITE WORK FILE

WRITE WORK [FILE]  work-file-number   [VARIABLE]   operand1  

Dieses Dokument behandelt folgende Themen:

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Verwandte Statements: DEFINE WORK FILE | READ WORK FILE | CLOSE WORK FILE | DOWNLOAD PC FILE

Gehört zur Funktionsgruppe: Verarbeitung von Arbeitsdateien/PC-Dateien


Funktion

Das Statement WRITE WORK FILE dient dazu, Datensätze auf eine physisch-sequentielle Arbeitsdatei (Work File) zu schreiben.

Auf Großrechnern kann dieses Statement nur im Batch-Betrieb oder unter Com-plete, TSO und TIAM verwendet werden. Entsprechend JCL- oder Systemkommandos müssen ausgeführt werden, um die Arbeitsdatei zuzuweisen. Weitere Informationen siehe Operations-Dokumentation. Siehe auch Profilparameter WORK in der Parameter-Referenz.

Es ist möglich, in einem Programm oder einer Verarbeitungsschleife eine Arbeitsdatei zu erstellen und diese dann in einem anderen Programm oder einer anderen eigenständigen Verarbeitungsschleife mit einem READ WORK FILE-Statement zu lesen.

Anmerkung:
Bezüglich Unicode-Support siehe Work Files and Print Files on Mainframe Platforms in der Unicode and Code Page Support-Dokumentation.

Syntax-Beschreibung

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1 C S A G  N A U N P I F B D T L C G   ja nein

Anmerkung:
Bei Natural Connection gilt weder Format C noch Format G.

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
work-file-number
Arbeitsdateinummer:

Die für Natural definierte Nummer der Arbeitsdatei, die verwendet werden soll.

VARIABLE
Variablen-Eintrag:

Es ist möglich, mittels verschiedener WRITE WORK FILE-Statements Datensätze mit verschiedenen Feldern auf dieselbe Arbeitsdatei zu schreiben. In diesem Fall müssen alle betreffenden WRITE WORK FILE-Statements das Schlüsselwort VARIABLE enthalten; die Datensätze werden dann mit variablem Format auf die externe Datei geschrieben. Natural schreibt alle Ausgabedateien in variablen Blöcken (es sei denn, Sie geben in der Ausführungs-JCL Datensatzformat und Blockgröße an).

Wenn die Operanden-Liste eine dynamische Variable enthält (die je nach Ausführungsart des WRITE WORK FILE-Statements eine andere Größe annimmt), muss der VARIABLE-Eintrag in allen WRITE WORK FILE-Statements angegeben werden.

Variabler Indexbereich:

Wenn Sie ein Array auf eine Arbeitsdatei schreiben, können Sie für das Array einen variablen Indexbereich angeben. Zum Beispiel:

WRITE WORK FILE work-file-number VARIABLE #ARRAY (I:J)
operand1
In die Arbeitsdatei zu schreibende Felder:

Als operand1 geben Sie die Felder an, die in die Arbeitsdatei geschrieben werden sollen. Dies können entweder Datenbankfelder, Benutzervariablen, Systemvariablen und/oder Felder sein, die mit einem READ WORK FILE-Statement von einer anderen Arbeitsdatei gelesen wurden.

Aus einer Redefinition resultierende Felder werden nicht in die Arbeitsdatei geschrieben.

Ein Array kann vollständig oder teilweise referenziert werden, um die Ausprägungen auszuwählen, die in die Arbeitsdatei geschrieben werden sollen.

In die Arbeitsdatei zu schreibende Gruppenoperanden:

Eine Gruppe von Feldern kann unter Angabe des Gruppennamens referenziert werden. Alle zu der referenzierten Gruppe gehörenden Felder werden in die Arbeitsdatei geschrieben; die Reihenfolge, in der dies geschieht, wird durch die Reihenfolge der Felder in der Gruppe bestimmt. Aus einer Redefinition der referenzierten Gruppe resultierende Felder werden nicht in die Arbeitsdatei geschrieben. Falls die referenzierte Gruppe als Array definiert ist, werden die einzelnen Felder der Gruppe als Arrays in der Reihenfolge der Definition in die Arbeitsdatei geschrieben.

Für die Gruppendefinition

  1 GROUP1 (1:3)
    2 FIELD1 (A2) 
    2 FIELD2 (A3)
  1 REDEFINE GROUP1
    2 FIELD3 (A15)

ist das Statement

  WRITE WORK FILE 1 GROUP1(*) 

gleichbedeutend mit

  WRITE WORK FILE 1 GROUP1.FIELD1(*) GROUP1.FIELD2(*)

Das Statement

  WRITE WORK FILE 1 GROUP1.FIELD3

ist gleichbedeutend mit

  WRITE WORK FILE 1 GROUP1.FIELD1(1) GROUP1.FIELD2(1)
                    GROUP1.FIELD1(2) GROUP1.FIELD2(2)
                    GROUP1.FIELD1(3) GROUP1.FIELD2(3)

Externe Darstellung der Felder

Mit einem WRITE WORK FILE-Statement auf eine Arbeitsdatei geschriebene Felder werden auf der externen Datei entsprechend ihrer internen Definition dargestellt. Die Feldwerte werden nicht verändert.

Bei Feldern der Formate A oder B entspricht die Anzahl der Bytes auf der externen Datei der programminternen Längendefinition. Die Feldwerte werden nicht verändert; ein Komma (Dezimalpunkt) wird nicht wiedergegeben.

Bei Feldern des Formats N ergibt sich die Anzahl der Bytes auf der externen Datei aus der Summe der Stellen vor und nach dem Komma. Das Komma (Dezimalpunkt) wird auf der externen Datei nicht wiedergegeben.

Bei Feldern des Formats P ergibt sich die Anzahl der Bytes auf der externen Datei aus der Summe der Stellen vor und nach dem Komma plus einer Stelle für das Vorzeichen, geteilt durch 2, wobei auf ganze Bytes aufgerundet wird.

Anmerkung:
Beim Schreiben von Feldern auf eine Arbeitsdatei erfolgt keine Umsetzung von Feldformaten.

Beispiele für Felddarstellung:

Felddefinition Ausgabelänge
#FIELD1 (A10) 10 Bytes
#FIELD2 (B15) 15 Bytes
#FIELD3 (N1.3) 4 Bytes
#FIELD4 (N0.7) 7 Bytes
#FIELD5 (P1.2) 2 Bytes
#FIELD6 (P6.0) 4 Bytes

Anmerkung:
Wenn die Systemfunktionen AVER, NAVER, SUM oder TOTAL für numerische Felder (Format N oder P) auf eine Arbeitsdatei geschrieben werden, vergrößert sich intern die Länge dieser Felder um eine Stelle (z.B.: SUM eines Feldes vom Format P3 wird auf P4 verlängert). Dies ist beim Lesen der Arbeitsdatei zu berücksichtigen.

Verarbeitung großer und dynamischer Variablen

Arbeitsdateityp Verarbeitung
UNFORMATTED Auf Großrechnern kann der Arbeitsdateityp UNFORMATTED zum Schreiben von Variablen benutzt werden, deren Länge die maximale Datensatzlänge überschreitet. Siehe auch den Abschnitt Zugriff auf Arbeitsdateien mit großen und dynamischen Variablen.
FORMATTED Eine dynamische Variable wird in ihrer aktuell definierten Länge (einschließlich Länge 0) geschrieben.

Beispiel

** Example 'WWFEX1': WRITE WORK FILE                                    
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 PERSONNEL-ID                                                        
  2 NAME                                                                
END-DEFINE                                                              
*                                                                       
FIND EMPLOY-VIEW WITH CITY = 'LONDON'                                   
  WRITE WORK FILE 1                                                     
        PERSONNEL-ID NAME                                              
END-FIND                                                                
*                                                                       
END