MainframeMaster

COBOL Data Division

The Data Division defines all data structures, variables, files, and data organization used by COBOL programs. Learn to organize data effectively across different sections for structured programming.

Data Division Structure

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DATA DIVISION. FILE SECTION. FD CUSTOMER-FILE. 01 CUSTOMER-RECORD. 05 CUSTOMER-ID PIC 9(6). 05 CUSTOMER-NAME PIC X(30). WORKING-STORAGE SECTION. 01 PROGRAM-VARIABLES. 05 COUNTER PIC 9(4) VALUE 0. 05 EOF-FLAG PIC X VALUE 'N'. LINKAGE SECTION. 01 PARAMETER-AREA. 05 INPUT-PARAM PIC X(50). 05 OUTPUT-PARAM PIC X(50).

The Data Division contains four main sections: FILE SECTION for file definitions, WORKING-STORAGE SECTION for program variables, LINKAGE SECTION for parameter passing, and LOCAL-STORAGE SECTION for temporary variables.

FILE SECTION

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
FILE SECTION. FD CUSTOMER-FILE LABEL RECORDS ARE STANDARD RECORDING MODE IS F BLOCK CONTAINS 0 RECORDS. 01 CUSTOMER-RECORD. 05 CUSTOMER-ID PIC 9(6). 05 CUSTOMER-NAME PIC X(30). 05 CUSTOMER-BALANCE PIC 9(9)V99. FD REPORT-FILE LABEL RECORDS ARE OMITTED RECORDING MODE IS F. 01 REPORT-LINE PIC X(132). FD INDEXED-FILE LABEL RECORDS ARE STANDARD RECORDING MODE IS F ACCESS MODE IS RANDOM ORGANIZATION IS INDEXED RECORD KEY IS CUSTOMER-ID ALTERNATE RECORD KEY IS CUSTOMER-NAME.

Define files in the FILE SECTION using FD (File Description) entries. Specify file characteristics like record format, access mode, organization, and keys. Each file must have corresponding record layouts.

WORKING-STORAGE SECTION

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
WORKING-STORAGE SECTION. 01 PROGRAM-CONSTANTS. 05 MAX-RECORDS PIC 9(4) VALUE 1000. 05 COMPANY-NAME PIC X(20) VALUE 'ACME CORP'. 05 CURRENT-DATE PIC 9(8) VALUE 20231225. 01 PROGRAM-VARIABLES. 05 RECORD-COUNT PIC 9(4) VALUE 0. 05 TOTAL-AMOUNT PIC 9(9)V99 VALUE 0. 05 PROCESSING-FLAG PIC X VALUE 'N'. 88 PROCESSING-ACTIVE VALUE 'Y'. 01 WORK-AREAS. 05 TEMP-AMOUNT PIC 9(9)V99. 05 TEMP-NAME PIC X(30). 05 CALCULATION-RESULT PIC 9(9)V99.

Define program variables, constants, and work areas in WORKING-STORAGE SECTION. These variables persist for the program duration and can be initialized with VALUE clauses. Use 88-level condition names for flags.

LINKAGE SECTION

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
LINKAGE SECTION. 01 PARAMETER-LIST. 05 PARM-LENGTH PIC S9(4) COMP. 05 PARM-DATA PIC X(100). 01 RETURN-AREA. 05 RETURN-CODE PIC 9(4) COMP. 05 RETURN-MESSAGE PIC X(50). 01 SHARED-DATA. 05 SHARED-VARIABLE PIC 9(6). 05 SHARED-FLAG PIC X. PROCEDURE DIVISION USING PARAMETER-LIST RETURN-AREA SHARED-DATA.

Define parameters passed between programs in the LINKAGE SECTION. These data items are shared between calling and called programs. Use appropriate data types and sizes for parameter passing.

LOCAL-STORAGE SECTION

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
LOCAL-STORAGE SECTION. 01 TEMPORARY-VARIABLES. 05 TEMP-COUNTER PIC 9(4). 05 TEMP-AMOUNT PIC 9(9)V99. 05 TEMP-NAME PIC X(30). 01 WORK-BUFFERS. 05 INPUT-BUFFER PIC X(200). 05 OUTPUT-BUFFER PIC X(200). 05 CALCULATION-BUFFER PIC X(100). PROCEDURE DIVISION. *> Local storage variables are automatically initialized *> and cleaned up when the program exits

Use LOCAL-STORAGE SECTION for temporary variables that are automatically initialized and cleaned up. These variables are local to the program and don't persist between program calls.

Data Organization Patterns

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
WORKING-STORAGE SECTION. 01 PROGRAM-STRUCTURE. 05 PROGRAM-CONSTANTS. 10 MAX-RECORDS PIC 9(4) VALUE 1000. 10 DEFAULT-VALUE PIC X(10) VALUE 'DEFAULT'. 05 PROGRAM-VARIABLES. 10 COUNTER PIC 9(4) VALUE 0. 10 FLAG PIC X VALUE 'N'. 05 WORK-AREAS. 10 TEMP-VARIABLE PIC X(20). 10 CALCULATION-AREA PIC 9(9)V99. 05 CONTROL-FIELDS. 10 EOF-FLAG PIC X VALUE 'N'. 88 END-OF-FILE VALUE 'Y'. 10 ERROR-FLAG PIC X VALUE 'N'. 88 ERROR-OCCURRED VALUE 'Y'.

Organize data logically by grouping related items together. Use clear naming conventions and group constants, variables, work areas, and control fields separately for better maintainability.

Data Division Best Practices

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
DATA DIVISION. FILE SECTION. FD INPUT-FILE LABEL RECORDS ARE STANDARD RECORDING MODE IS F. 01 INPUT-RECORD. 05 INPUT-ID PIC 9(6). 05 INPUT-NAME PIC X(30). WORKING-STORAGE SECTION. 01 PROGRAM-CONSTANTS. 05 MAX-RECORDS PIC 9(4) VALUE 1000. 05 COMPANY-NAME PIC X(20) VALUE 'ACME CORP'. 01 PROGRAM-VARIABLES. 05 RECORD-COUNT PIC 9(4) VALUE 0. 05 TOTAL-AMOUNT PIC 9(9)V99 VALUE 0. 01 CONTROL-FIELDS. 05 EOF-FLAG PIC X VALUE 'N'. 88 END-OF-FILE VALUE 'Y'. 05 ERROR-FLAG PIC X VALUE 'N'. 88 ERROR-OCCURRED VALUE 'Y'.

Follow best practices: organize data logically, use meaningful names, group related items, include proper file descriptions, use appropriate data types, and document complex data structures.

Data Division Documentation

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DATA DIVISION. FILE SECTION. *> Customer master file - contains customer information FD CUSTOMER-FILE LABEL RECORDS ARE STANDARD RECORDING MODE IS F. 01 CUSTOMER-RECORD. 05 CUSTOMER-ID PIC 9(6). *> Unique customer identifier 05 CUSTOMER-NAME PIC X(30). *> Customer full name 05 CUSTOMER-BALANCE PIC 9(9)V99. *> Current account balance WORKING-STORAGE SECTION. 01 PROGRAM-CONSTANTS. 05 MAX-RECORDS PIC 9(4) VALUE 1000. *> Maximum records to process 05 COMPANY-NAME PIC X(20) VALUE 'ACME CORP'. *> Company name

Document data division entries with comments explaining the purpose of files, records, and variables. Include descriptions of field purposes, data formats, and business rules for maintainability.