WRITE WORK [FILE] work-file-number [VARIABLE] operand1
[(parameter)] |
|||||||||||||||||||||||||||||||||||
This document covers the following topics:
For an explanation of the symbols used in the syntax diagram, see Syntax Symbols.
Related Statements: DEFINE WORK FILE
| READ WORK FILE | CLOSE WORK FILE
| DOWNLOAD PC
FILE
Belongs to Function Group: Control of Work Files / PC Files
The WRITE WORK FILE statement is used to write records to a physical
sequential work file.
This statement can only be used within a program to be executed under Com-plete,
CICS, or TSO, or in batch mode. Appropriate JCL or system commands must be executed to
allocate the work file. For further information, see the Operations
documentation. For information on work file assignments, see profile parameter WORK in the
Parameter Reference.
It is possible to create a work file in one program or processing loop and to read the
same file in a subsequent independent processing loop or in a subsequent program using the
READ WORK FILE statement.
Note
For Unicode and code page support, see Work
Files and Print Files in the Unicode and
Code Page Support documentation.
Operand Definition Table:
| Operand | Possible Structure | Possible Formats | Referencing Permitted | Dynamic Definition | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1
|
C | S | A | G | N | A | U | N | P | I | F | B | D | T | L | C | G | yes | no | |
Note
Neither Format C nor Format G is valid for Natural Connection.
Syntax Element Description:
| Syntax Element | Description | |
|---|---|---|
work-file-number
|
Work File Number: The work file number (as defined
to Natural) to be used.
The work file number is either
|
|
VARIABLE
|
Variable Entry:
It is possible to write records with different fields to the same work file
with different When the operand list includes a dynamic variable (that could change in size
for different executions of the Variable Index Range:
When writing an array to a work file, you can specify a variable index range for the array. For example: WRITE WORK FILE work-file-number VARIABLE #ARRAY (I:J) |
|
operand1
|
Fields to Be Written:
With An array may be referenced completely or partially to select the occurrences that are to be written to the work file. Group Operands to be Written:
A group may be referenced using the group name. All fields belonging to the referenced group will be written to the work file, the sequence is determined by the sequence of the fields in the group. Fields resulting from a redefinition of the referenced group are not written to the work file. If the referenced group is defined as an array, the individual fields of the group are written to the work file as arrays in the definition sequence. For the group definition 1 GROUP1 (1:3)
2 FIELD1 (A2)
2 FIELD2 (A3)
1 REDEFINE GROUP1
2 FIELD3 (A15)
the statement WRITE WORK FILE 1 GROUP1(*) is equivalent to WRITE WORK FILE 1 GROUP1.FIELD1(*) GROUP1.FIELD2(*) The statement WRITE WORK FILE 1 GROUP1.FIELD3 is equivalent to WRITE WORK FILE 1 GROUP1.FIELD1(1) GROUP1.FIELD2(1)
GROUP1.FIELD1(2) GROUP1.FIELD2(2)
GROUP1.FIELD1(3) GROUP1.FIELD2(3)
|
|
parameter
|
Edit Mask Parameters: As
parameter, you can specify the session
parameters EM
or EMU:
|
|
EM= |
Edit Mask:
For details on edit masks, see the session parameter |
|
EMU= |
Unicode Edit Mask:
For details on unicode edit masks, see the session parameter |
|
Fields written with a WRITE WORK FILE statement are represented in the
external file according to their internal definition unless an edit mask is applied.
For fields written without edit masks, no editing is performed on the field values and they are written in their internal format:
Format A and B: The number of bytes in the external file is the same as the internal length defined in the Natural program. No editing is performed, and a decimal point is not included in the value.
Format N: The number of bytes in the external file equals the sum of the internal positions before and after the decimal point. The decimal point is not included in the output.
Format P: The number of bytes in the external file equals the sum of positions before and after the decimal point, plus 1 for the sign, divided by 2, and rounded up to the next full byte.
Note
No format conversion is performed for fields that are written without edit
masks.
Examples of field representations (without edit masks):
| Field Definition | Output Record |
|---|---|
#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 |
When an edit mask is applied to a field, the field value is converted using the specified edit mask and the resulting formatted value is written to the work file.
The internal representation is not used in this case.
The length of the value written to the file corresponds to the length of the resulting formatted string.
For the special considerations that apply when WRITE WORK FILE is used for
the Natural system function AVER, NAVER, SUM or TOTAL, see Format/Length
Requirements for AVER, NAVER, SUM and TOTAL in the
System Functions documentation.
| Work File Type | Handling |
|---|---|
UNFORMATTED
|
Work file type UNFORMATTED can be used to write variables whose
size exceeds the maximum record length. See also Work File Access With
Large and Dynamic Variables.
|
FORMATTED
|
A dynamic variable is written in its currently defined length (including length 0). |
This section covers the following topics:
** 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
** 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