The OF
clause is a fundamental component in COBOL used for qualification and specification purposes. It establishes hierarchical relationships between data items, specifies file associations, and provides context for various COBOL operations. The terms OF
and IN
are interchangeable in most contexts.
Identifies specific data items within structures
Links record descriptions to file definitions
Specifies variable table dimensions
References subordinate items within groups
data-name-1 OF data-name-2 [OF data-name-3] ... data-name-1 IN data-name-2 [IN data-name-3] ...
OF and IN are functionally equivalent.
01 CUSTOMER-RECORD. 05 CUSTOMER-NAME. 10 FIRST-NAME PIC X(20). 10 LAST-NAME PIC X(30). 05 CUSTOMER-ADDRESS. 10 STREET PIC X(40). 10 CITY PIC X(25). 01 SUPPLIER-RECORD. 05 SUPPLIER-NAME. 10 FIRST-NAME PIC X(20). 10 LAST-NAME PIC X(30). PROCEDURE DIVISION. MOVE "JOHN" TO FIRST-NAME OF CUSTOMER-NAME. MOVE "SMITH" TO LAST-NAME IN CUSTOMER-NAME. MOVE "ACME" TO FIRST-NAME OF SUPPLIER-NAME.
Using OF to distinguish between identical subordinate names.
01 COMPANY-DATA. 05 DEPARTMENT. 10 EMPLOYEE. 15 NAME PIC X(30). 15 ID PIC 9(6). 01 PROJECT-DATA. 05 TEAM. 10 EMPLOYEE. 15 NAME PIC X(30). 15 ROLE PIC X(20). PROCEDURE DIVISION. MOVE "ALICE" TO NAME OF EMPLOYEE OF DEPARTMENT. MOVE "BOB" TO NAME OF EMPLOYEE OF TEAM.
Multiple levels of qualification for complex structures.
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT EMPLOYEE-FILE ASSIGN TO "EMPLOYEE.DAT". DATA DIVISION. FILE SECTION. FD EMPLOYEE-FILE RECORD CONTAINS 100 CHARACTERS. 01 EMPLOYEE-RECORD. 05 EMP-ID PIC 9(6). 05 EMP-NAME PIC X(30). 05 EMP-SALARY PIC 9(7)V99. WORKING-STORAGE SECTION. 01 WS-EMPLOYEE-RECORD. 05 WS-EMP-ID PIC 9(6). 05 WS-EMP-NAME PIC X(30). 05 WS-EMP-SALARY PIC 9(7)V99. PROCEDURE DIVISION. READ EMPLOYEE-FILE. MOVE EMPLOYEE-RECORD TO WS-EMPLOYEE-RECORD.
File record automatically associated through FD declaration.
01 SALES-DATA. 05 NUMBER-OF-MONTHS PIC 99. 05 MONTHLY-SALES OCCURS 1 TO 12 TIMES DEPENDING ON NUMBER-OF-MONTHS PIC 9(7)V99. 01 STUDENT-RECORD. 05 COURSE-COUNT PIC 99. 05 COURSE-DATA OCCURS 1 TO 20 TIMES DEPENDING ON COURSE-COUNT. 10 COURSE-CODE PIC X(8). 10 GRADE PIC X(2). PROCEDURE DIVISION. MOVE 6 TO NUMBER-OF-MONTHS OF SALES-DATA. MOVE 15 TO COURSE-COUNT OF STUDENT-RECORD.
Using OF to specify the controlling variable for variable tables.
01 INVENTORY-TABLE. 05 ITEM-DATA OCCURS 100 TIMES. 10 ITEM-CODE PIC X(10). 10 QUANTITY PIC 9(5). 10 PRICE PIC 9(5)V99. 01 MONTHLY-REPORTS. 05 REPORT-DATA OCCURS 12 TIMES. 10 ITEM-DATA OCCURS 50 TIMES. 15 ITEM-CODE PIC X(10). 15 SALES PIC 9(7)V99. PROCEDURE DIVISION. MOVE "ABC123" TO ITEM-CODE OF ITEM-DATA (1). MOVE 500 TO QUANTITY OF ITEM-DATA (1). MOVE "XYZ789" TO ITEM-CODE OF ITEM-DATA (1, 15) OF REPORT-DATA.
Qualifying table elements with subscripts and OF.
01 TEXT-DATA. 05 SOURCE-TEXT PIC X(100). 05 CHAR-COUNT PIC 999. 01 ANALYSIS-DATA. 05 SOURCE-TEXT PIC X(200). 05 WORD-COUNT PIC 999. PROCEDURE DIVISION. INSPECT SOURCE-TEXT OF TEXT-DATA TALLYING CHAR-COUNT OF TEXT-DATA FOR ALL "A". INSPECT SOURCE-TEXT OF ANALYSIS-DATA TALLYING WORD-COUNT OF ANALYSIS-DATA FOR ALL SPACES.
Using OF to distinguish between similar field names in INSPECT.
01 CUSTOMER-DATA. 05 CUSTOMER-NAME PIC X(50). 05 CUSTOMER-ADDRESS PIC X(100). 01 POINTER-DATA. 05 NAME-PTR USAGE IS POINTER. 05 ADDR-PTR USAGE IS POINTER. PROCEDURE DIVISION. SET NAME-PTR TO ADDRESS OF CUSTOMER-NAME. SET ADDR-PTR TO ADDRESS OF CUSTOMER-ADDRESS.
Getting memory addresses of data items.
* COPYBOOK: PERSON-COPY 01 PERSON-RECORD. 05 PERSON-NAME PIC X(30). 05 PERSON-AGE PIC 99. 05 PERSON-PHONE PIC X(15). * MAIN PROGRAM 01 EMPLOYEE-DATA. COPY PERSON-COPY. 05 EMPLOYEE-ID PIC 9(6). 01 CUSTOMER-DATA. COPY PERSON-COPY. 05 CUSTOMER-ID PIC 9(8). PROCEDURE DIVISION. MOVE "JOHN DOE" TO PERSON-NAME OF EMPLOYEE-DATA. MOVE "JANE SMITH" TO PERSON-NAME OF CUSTOMER-DATA.
Qualifying copybook fields in different contexts.
Identical functionality to OF
Identifiers that may require qualification
Table definitions that use OF for DEPENDING ON
Records implicitly qualified by file name