REDEFINES Clause
Problem Description
Use REDEFINES to interpret same storage in multiple ways.
Expected Output
Single storage, multiple interpretations
Hints
REDEFINES shares storage between different field definitions.
Solution
IDENTIFICATION DIVISION.
PROGRAM-ID. REDEFTEST.
DATA DIVISION.
WORKING-STORAGE SECTION.
* Original definition
01 WS-DATE-NUM PIC 9(8) VALUE 20240115.
* REDEFINES as formatted date
01 WS-DATE-FMT REDEFINES WS-DATE-NUM.
05 WS-YEAR PIC 9(4).
05 WS-MONTH PIC 9(2).
05 WS-DAY PIC 9(2).
* Another example - numeric as alphanumeric
01 WS-AMOUNT PIC 9(7)V99 VALUE 1234567.89.
01 WS-AMT-X REDEFINES WS-AMOUNT PIC X(9).
* Union-like structure
01 WS-RESPONSE PIC X(1) VALUE "Y".
01 WS-RESP-NUM REDEFINES WS-RESPONSE PIC 9(1).
PROCEDURE DIVISION.
DISPLAY "DATE AS NUMBER: " WS-DATE-NUM.
DISPLAY "YEAR: " WS-YEAR.
DISPLAY "MONTH: " WS-MONTH.
DISPLAY "DAY: " WS-DAY.
DISPLAY "AMOUNT NUMERIC: " WS-AMOUNT.
DISPLAY "AMOUNT AS CHARS: " WS-AMT-X.
* Change and see both views
MOVE 2025 TO WS-YEAR.
MOVE 12 TO WS-MONTH.
MOVE 25 TO WS-DAY.
DISPLAY "NEW DATE: " WS-DATE-NUM.
STOP RUN.
Explanation:
REDEFINES lets you view same memory as different data types.