WRITE WORK FILE

WRITE WORK [FILE]  work-file-number   [VARIABLE]   operand1  [(parameter)]

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 WRITE WORK FILE

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

Dieses Statement kann nur unter Com-plete, CICS und TSO oder im Batch-Modus verwendet werden. Entsprechend JCL- oder Systemkommandos müssen ausgeführt werden, um die Arbeitsdatei zuzuordnen. 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 einer anderen eigenständigen Verarbeitungsschleife oder einem anderen Programm mit einem READ WORK FILE-Statement zu lesen.

Informationen zur Unicode- und Codepage-Unterstützung siehe Arbeitsdateien und Druckdateien in der Unicode- und Codepage-Unterstützung-Dokumentation.

Syntax-Beschreibung WRITE WORK FILE

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:

Gibt die für Natural definierte Nummer der Arbeitsdatei an, die gelesen werden soll.

Die Nummer der Arbeitsdatei ist entweder

  • eine numerische Konstante im Wertebereich 1:32 oder

  • eine mit einer CONSTANT-Klausel definierte numerische Variable des Typs B/N/P/I, die einen Wert im Bereich 1:32 zuweist. Dezimalstellen bei den Typen (N/P) sind nicht erlaubt.

VARIABLE
Variablen-Eintrag:

Es ist möglich, mittels verschiedener WRITE WORK FILE-Statements Datensätze mit verschiedenen Feldern in dieselbe Arbeitsdatei zu schreiben. In diesem Fall muss in allen betreffenden WRITE WORK FILE-Statements das Schlüsselwort VARIABLE angegeben werden. Die Datensätze werden dann mit variablem Format in 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.

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)
parameter
Editiermaske-Parameter:

Als parameter können Sie den Session-Parameter EM bzw. EMU angeben:

EM=
Editiermaske

Einzelheiten zu Editiermasken finden Sie unter dem Session-Parameter EM in der Parameter-Referenz-Dokumentation. Der EM-Parameter kann nicht bei Gruppenoperanden angewendet werden.

EMU=
Unicode-Editiermaske

Einzelheiten zu Unicode-Editiermasken finden Sie unter dem Session-Parameter EMU in der Parameter-Referenz-Dokumentation. Der EMU-Parameter kann nicht bei Gruppenoperanden angewendet werden.

Externe Darstellung der Felder

In der externen Datei werden Felder, die mit einem WRITE WORK FILE-Statement geschrieben werden, entsprechend ihrer internen Definition dargestellt, es sei denn, es wird eine Editiermaske angewendet.

Felder ohne Eingabemasken

Bei Feldern ohne Editiermasken werden die Feldwerte nicht editiert, sondern in ihrem internen Format geschrieben.

  • Format A und B
    Die Anzahl der Bytes in der externen Datei entspricht der im Natural-Programm definierten internen Länge. Es erfolgt keine Editierung und der Wert enthält kein Dezimalzeichen.

  • Format N
    Die Anzahl der Bytes in der externen Datei entspricht der Summe der internen Stellen vor und nach dem Dezimalzeichen. Das Dezimalzeichen ist in der Ausgabe nicht enthalten.

  • Format P
    Die Anzahl der Bytes in der externen Datei entspricht der Summe der Stellen vor und nach dem Dezimalzeichen, plus 1 für das Vorzeichen, geteilt durch 2 und aufgerundet auf das nächste volle Byte.

Anmerkung
Bei Feldern, die ohne Editiermaske geschrieben werden, wird keine Formatkonvertierung durchgeführt.

Beispiele für Felddarstellung (ohne Editiermasken)

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

Felder mit Editiermasken

Bei Anwendung einer Editiermaske wird das Feld zunächst gemäß der angegebenen Editiermaske formatiert, und der resultierende formatierte Wert wird in die Arbeitsdatei geschrieben.

  • In diesem Fall wird die interne Darstellung nicht verwendet.

  • Die Länge des in die Datei geschriebenen Wertes entspricht der Länge der resultierenden formatierten Zeichenkette.

Besonderheiten bei Systemfunktionen

Besonderheiten bei der Verwendung von WRITE WORK FILE für die Natural-Systemfunktionen AVER, NAVER, SUM oder TOTAL finden Sie unter Format- und Längenerfordernisse bei AVER, NAVER, SUM und TOTAL in der Systemfunktionen-Dokumentation.

Verarbeitung großer und dynamischer Variablen

Arbeitsdateityp Verarbeitung
UNFORMATTED Der Arbeitsdateityp UNFORMATTED kann zum Schreiben von Variablen benutzt werden, deren Länge die maximale Datensatzlänge überschreitet. Siehe auch den Abschnitt Workfile-Zugriff bei dynamischen und großen Variablen unter Dynamische und große Variablen benutzen im Leitfaden zur Programmierung.
FORMATTED Eine dynamische Variable wird in ihrer aktuell definierten Länge (einschließlich Länge 0) geschrieben.

Beispiele WRITE WORK FILE

Beispiel 1 - WRITE WORK FILE ohne Editiermaske

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

Beispiel 2 - WRITE WORK FILE mit Editiermaske

** Example 'WWFEX2': WRITE WORK FILE with Edit Mask EM and EMU       
************************************************************************
DEFINE DATA LOCAL                                                       
1 EMPLOY-VIEW VIEW OF EMPLOYEES                                         
  2 PERSONNEL-ID                                                        
  2 NAME                                                                
  2 CITY                                                                
  2 BIRTH                                                               
  2 SALARY (1)                                                          
END-DEFINE                                                              
*                                                                       
FIND EMPLOY-VIEW WITH CITY = 'MADRID'                                   
  WRITE WORK FILE 1                                                     
        PERSONNEL-ID NAME                                               
        BIRTH     (EM=ZD.' 'L(10)' 'YYYY)                               
        SALARY(1) (EMU=999,999€)                                        
END-FIND                                                                
*                                                                       
END