Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
💻 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.