INITIALIZE Statement
INITIALIZE Statement
- INITIALIZE sets the variables with system-defined initial values based on their data types.
- It's functionally equivalent to one or more MOVE statements.
- It is a convenient way to reset the full copybook, and group variable, ensuring that they start with predictable values.
Syntax -
INITIALIZE group-variable-1 [group-variable-2 ...]
[REPLACING ALPHABETIC |
ALPHANUMERIC |
ALPHANUMERIC-EDITED |
NUMERIC |
NUMERIC-EDITED
DATA BY {literal-1} ALL {literal-2}]
Note! All statements coded in [ ] are optional.
Parameters -
- group-variable-1, group-variable-2, ...- The variable names we wish to initialize.
- REPLACING - Optional. It is used to replace default initializing values with new ones.
- NUMERIC DATA - Specifies that numeric variable initalized with literal-1 value instead of ZEROES. Similarly, ALPHABETIC DATA, ALPHANUMERIC DATA, ...
- BY literal-1 - Specifies the new literal-1 value to initialize the variables.
- ALL literal-2 - Specifies the new literal-2 value to initialize non-numeric variables.
How INITIALIZE Works?
- For NUMERIC fields (like PIC 9), they are set to zeros.
- For ALPHANUMERIC fields (like PIC X), they are set to spaces.
- For ALPHABETIC fields (like PIC A), they are set to spaces.
- For ALPHA-NUMERIC EDITED and NUMERIC EDITED fields, they retain their specific edit symbols, and other positions are set to zeros or spaces as appropriate.
- FILLER items, redefined items, and items with USAGE are not initialized by the INITIALIZE statement.
Practical Example -
Scenario - Initialize usage in COBOL program.
Code -
----+----1----+----2----+----3----+----4----+----5----+
...
WORKING-STORAGE SECTION.
01 WS-VAR.
05 WS-NAME PIC X(20).
05 FILLER PIC X(05).
05 WS-GENDER PIC X(01).
05 FILLER PIC X(05).
05 WS-TODAY PIC 9(08).
05 FILLER PIC X(01).
...
PROCEDURE DIVISION.
MOVE ALL '-' TO WS-VAR.
DISPLAY 'BEFORE INIT: ' WS-VAR.
INITIALIZE WS-VAR.
DISPLAY 'AFTER INIT: ' WS-VAR.
...
Output -
BEFORE INIT: ---------------------------------------- AFTER INIT: ----- -----00000000-