This document covers the following topics:
For explanations of the symbols used in the syntax diagram, see Syntax Symbols.
Belongs to Function Group: Control of Work Files / PC Files
WRITE WORK FILE statement is used to write records to a
physical sequential work file.
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
For Unicode and code page support, see Work Files and Print Files on Windows, UNIX and OpenVMS Platforms in the Unicode and Code Page Support documentation.
Operand Definition Table:
|Operand||Possible Structure||Possible Formats||Referencing Permitted||Dynamic Definition|
When using the work file types ENTIRECONNECTION or TRANSFER, operand1 may neither be of format C, nor G.
Syntax Element Description:
Work File Number:
The work file number (as defined to Natural) to be used.
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)
Fields to Be Written:
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)
WRITE WORK FILE 1 GROUP1(*)
is equivalent to
WRITE WORK FILE 1 GROUP1.FIELD1(*) GROUP1.FIELD2(*)
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)
Fields written with a
WRITE WORK FILE statement are
represented in the external file according to their internal definition. No
editing is performed on the field values.
For fields of format A and B, the number of bytes in the external file is the same as the internal length definition as defined in the Natural program. No editing is performed and a decimal point is not represented in the value.
For fields of format N, the number of bytes on the external file is the sum of internal positions before and after the decimal point. The decimal point is not represented on the external file.
For fields of format P, the number of bytes on the external file is the sum of positions before and after the decimal point, plus 1 for the sign, divided by 2, rounded upward to a full byte.
No format conversion is performed for fields that are written to a work file.
Examples of field representations:
|Field Definition||Output Record|
For the special considerations that apply when
FILE is used for the Natural system function
Requirements for AVER, NAVER, SUM and TOTAL in the
System Functions documentation.
|Work File Type||Handling|
||The work file types
||The work file type
||The work file type
Large and dynamic variables can be written into work files or read
from work files using the two work file types
For the work file type
||The maximum field/record length is 32766 bytes for dynamic and large variables. Dynamic variables are supported. X-arrays are not allowed and will result in an error message.|
** 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