Redefinition of Formats
The user should pay particular attention to the REDEFINES clause that may be generated for the ALL-FORMATS or -I-O phrases. Since all formats are redefined on the same area (generally a buffer area), several field names can describe the same area of storage, and unpredictable results can occur if the entire format area is not reinitialized prior to each output operation.
Data items that are subordinate to the data item specified in a MOVE CORRESPONDING statement do not correspond and are not moved when they contain a REDEFINES clause or are subordinate to a redefining item.
To avoid reinitialization, multiple Format 2 COPY statements
(DDS or DD) using -I and -O suffixes can be used to create separate areas
of storage in the Working-Storage or Local-Storage sections for each
format or format type (input or output). READ INTO and WRITE FROM statements
can be used with these record formats. For example:
FD ORDER-ENTRY-SCREEN . . .
01 ORDER-ENTRY-RECORD . . .
.
.
.
WORKING-STORAGE SECTION.
01 ORDSFL-I-FORMAT.
COPY DDS-ORDSFL-I OF DOESCR.
01 ORDSFL-O-FORMAT.
COPY DDS-ORDSFL-O OF DOESCR.
.
.
.
PROCEDURE DIVISION.
.
.
.
READ SUBFILE ORDER-ENTRY-SCREEN NEXT MODIFIED RECORD
INTO ORDSFL-I-FORMAT FORMAT IS "ORDSFL"
AT END SET NO-MODIFIED-SUBFILE-RCD TO TRUE.
.
.
.
MOVE CORR ORDSFL-I TO ORDSFL-O.
REWRITE SUBFILE ORDER-ENTRY-RECORD FROM ORDSFL-O-FORMAT
FORMAT IS "ORDSFL" . . .
.
.
.
Note: The COPY statement can be used in the
File, Working-Storage and Local-Storage Sections, but the results are not
exactly the same. For more information, see Key Generation Examples.