💻 COBOL
COBOL Dynamic Length Items
Advanced 🕑 12 min read
👁 0 views
COBOL Dynamic Length Items
Dynamic length items change size based on content, reducing memory usage for variable data.
OCCURS DEPENDING ON
```cobol 01 VARIABLE-TABLE. 05 TABLE-COUNT PIC 99. 05 TABLE-ENTRY OCCURS 1 TO 100 TIMES DEPENDING ON TABLE-COUNT. 10 ENTRY-DATA PIC X(20). ```
Working with ODO
- Set count before accessing
- Count determines actual size
- Cannot exceed maximum
Variable-Length Records
```cobol 01 VAR-RECORD. 05 REC-LENGTH PIC 9(4) COMP. 05 REC-DATA. 10 FIXED-PART PIC X(20). 10 VAR-PART PIC X(1) OCCURS 1 TO 980 DEPENDING ON REC-LENGTH. ```
OCCURS UNBOUNDED
```cobol 01 WS-TABLE. 05 WS-ITEM PIC X(10) OCCURS UNBOUNDED DEPENDING ON WS-COUNT. ```
Memory Considerations
Size calculated at runtime based on DEPENDING ON variable.
Code Example
IDENTIFICATION DIVISION.
PROGRAM-ID. DYNAMIC-LEN-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-TABLE.
05 WS-COUNT PIC 99 VALUE 5.
05 WS-ITEMS OCCURS 1 TO 20 TIMES
DEPENDING ON WS-COUNT.
10 ITEM-CODE PIC X(5).
10 ITEM-DESC PIC X(20).
01 WS-IDX PIC 99.
PROCEDURE DIVISION.
* Set actual size
MOVE 5 TO WS-COUNT
* Populate items
PERFORM VARYING WS-IDX FROM 1 BY 1
UNTIL WS-IDX > WS-COUNT
MOVE WS-IDX TO ITEM-CODE(WS-IDX)
MOVE 'DESCRIPTION' TO ITEM-DESC(WS-IDX)
END-PERFORM
* Increase size
ADD 3 TO WS-COUNT
DISPLAY 'New count: ' WS-COUNT
STOP RUN.