MainframeMaster

COBOL Data Organization Concepts

Data organization in COBOL involves designing and structuring data layouts to efficiently represent business information, support processing requirements, and optimize storage utilization. This includes hierarchical data structures, group and elementary items, level number organization, and data grouping strategies. Understanding data organization concepts is essential for building maintainable and efficient COBOL applications.

Understanding Data Organization

Data organization in COBOL encompasses the design and structure of data layouts using level numbers, hierarchical relationships, and logical grouping of related data items. Proper data organization improves program readability, facilitates data processing, and supports efficient storage and retrieval operations. Different organization patterns are appropriate for different business requirements and processing scenarios.

Hierarchical Data Structures

1. Level Number Organization

Level numbers in COBOL define the hierarchical structure of data, with 01 being the highest level for record descriptions and higher numbers representing subordinate levels. Level numbers create parent-child relationships and determine data grouping and organization. Understanding level number organization is fundamental to effective data structure design.

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
IDENTIFICATION DIVISION. PROGRAM-ID. DATA-ORGANIZATION-BASICS. *> This program demonstrates basic data organization concepts DATA DIVISION. WORKING-STORAGE SECTION. *> Basic hierarchical data structure 01 CUSTOMER-RECORD. 05 CUSTOMER-ID PIC 9(5). 05 CUSTOMER-INFO. 10 CUSTOMER-NAME. 15 LAST-NAME PIC X(20). 15 FIRST-NAME PIC X(15). 15 MIDDLE-INITIAL PIC X(1). 10 CUSTOMER-ADDRESS. 15 STREET-ADDRESS PIC X(30). 15 CITY PIC X(20). 15 STATE PIC X(2). 15 ZIP-CODE PIC X(10). 05 CUSTOMER-FINANCIAL. 10 ACCOUNT-BALANCE PIC 9(8)V99. 10 CREDIT-LIMIT PIC 9(8)V99. 10 PAYMENT-HISTORY. 15 LAST-PAYMENT-DATE PIC 9(8). 15 PAYMENT-AMOUNT PIC 9(6)V99. 15 PAYMENT-STATUS PIC X(1). 88 PAYMENT-CURRENT VALUE 'C'. 88 PAYMENT-OVERDUE VALUE 'O'. 01 EMPLOYEE-RECORD. 05 EMPLOYEE-ID PIC 9(6). 05 EMPLOYEE-PERSONAL. 10 EMPLOYEE-NAME. 15 EMP-LAST-NAME PIC X(25). 15 EMP-FIRST-NAME PIC X(20). 10 EMPLOYEE-ADDRESS. 15 EMP-STREET PIC X(35). 15 EMP-CITY PIC X(25). 15 EMP-STATE PIC X(2). 15 EMP-ZIP PIC X(10). 05 EMPLOYEE-WORK. 10 DEPARTMENT PIC X(15). 10 JOB-TITLE PIC X(25). 10 SALARY-INFO. 15 CURRENT-SALARY PIC 9(7)V99. 15 SALARY-GRADE PIC 9(2). 15 BONUS-ELIGIBLE PIC X(1). 88 BONUS-YES VALUE 'Y'. 88 BONUS-NO VALUE 'N'. 01 INVENTORY-RECORD. 05 ITEM-ID PIC X(10). 05 ITEM-DESCRIPTION. 10 ITEM-NAME PIC X(30). 10 ITEM-CATEGORY PIC X(15). 10 ITEM-SUBCATEGORY PIC X(20). 05 ITEM-INVENTORY. 10 QUANTITY-ON-HAND PIC 9(6). 10 QUANTITY-ORDERED PIC 9(6). 10 REORDER-POINT PIC 9(5). 10 UNIT-COST PIC 9(6)V99. 05 ITEM-SUPPLIER. 10 SUPPLIER-ID PIC X(8). 10 SUPPLIER-NAME PIC X(25). 10 SUPPLIER-CONTACT PIC X(20). PROCEDURE DIVISION. DATA-ORGANIZATION-MAIN. DISPLAY 'Data Organization Concepts Demonstration' DISPLAY '=======================================' *> Demonstrate hierarchical data access PERFORM DEMONSTRATE-HIERARCHICAL-ACCESS *> Demonstrate data grouping PERFORM DEMONSTRATE-DATA-GROUPING *> Demonstrate level number relationships PERFORM DEMONSTRATE-LEVEL-RELATIONSHIPS STOP RUN. DEMONSTRATE-HIERARCHICAL-ACCESS. *> Demonstrate hierarchical data access DISPLAY 'Hierarchical Data Access:' *> Initialize customer record MOVE 12345 TO CUSTOMER-ID MOVE 'Smith' TO LAST-NAME MOVE 'John' TO FIRST-NAME MOVE 'A' TO MIDDLE-INITIAL MOVE '123 Main Street' TO STREET-ADDRESS MOVE 'New York' TO CITY MOVE 'NY' TO STATE MOVE '10001' TO ZIP-CODE MOVE 1500.50 TO ACCOUNT-BALANCE MOVE 5000.00 TO CREDIT-LIMIT MOVE 20231201 TO LAST-PAYMENT-DATE MOVE 150.00 TO PAYMENT-AMOUNT MOVE 'C' TO PAYMENT-STATUS *> Display hierarchical data DISPLAY 'Customer Record Structure:' DISPLAY ' Level 01: CUSTOMER-RECORD' DISPLAY ' Level 05: CUSTOMER-ID = ' CUSTOMER-ID DISPLAY ' Level 05: CUSTOMER-INFO' DISPLAY ' Level 10: CUSTOMER-NAME' DISPLAY ' Level 15: LAST-NAME = ' LAST-NAME DISPLAY ' Level 15: FIRST-NAME = ' FIRST-NAME DISPLAY ' Level 15: MIDDLE-INITIAL = ' MIDDLE-INITIAL DISPLAY ' Level 10: CUSTOMER-ADDRESS' DISPLAY ' Level 15: STREET-ADDRESS = ' STREET-ADDRESS DISPLAY ' Level 15: CITY = ' CITY DISPLAY ' Level 15: STATE = ' STATE DISPLAY ' Level 15: ZIP-CODE = ' ZIP-CODE DISPLAY ' Level 05: CUSTOMER-FINANCIAL' DISPLAY ' Level 10: ACCOUNT-BALANCE = ' ACCOUNT-BALANCE DISPLAY ' Level 10: CREDIT-LIMIT = ' CREDIT-LIMIT DISPLAY ' Level 10: PAYMENT-HISTORY' DISPLAY ' Level 15: LAST-PAYMENT-DATE = ' LAST-PAYMENT-DATE DISPLAY ' Level 15: PAYMENT-AMOUNT = ' PAYMENT-AMOUNT DISPLAY ' Level 15: PAYMENT-STATUS = ' PAYMENT-STATUS DISPLAY ' '. DEMONSTRATE-DATA-GROUPING. *> Demonstrate data grouping concepts DISPLAY 'Data Grouping Concepts:' *> Initialize employee record MOVE 100001 TO EMPLOYEE-ID MOVE 'Johnson' TO EMP-LAST-NAME MOVE 'Mary' TO EMP-FIRST-NAME MOVE '456 Oak Avenue' TO EMP-STREET MOVE 'Chicago' TO EMP-CITY MOVE 'IL' TO EMP-STATE MOVE '60601' TO EMP-ZIP MOVE 'Information Technology' TO DEPARTMENT MOVE 'Senior Developer' TO JOB-TITLE MOVE 75000.00 TO CURRENT-SALARY MOVE 12 TO SALARY-GRADE MOVE 'Y' TO BONUS-ELIGIBLE *> Display grouped data DISPLAY 'Employee Record Grouping:' DISPLAY ' Personal Information Group:' DISPLAY ' Name: ' EMP-FIRST-NAME ' ' EMP-LAST-NAME DISPLAY ' Address: ' EMP-STREET ', ' EMP-CITY ', ' EMP-STATE ' ' EMP-ZIP DISPLAY ' Work Information Group:' DISPLAY ' Department: ' DEPARTMENT DISPLAY ' Job Title: ' JOB-TITLE DISPLAY ' Salary Information Group:' DISPLAY ' Current Salary: $' CURRENT-SALARY DISPLAY ' Salary Grade: ' SALARY-GRADE IF BONUS-YES DISPLAY ' Bonus Eligible: Yes' ELSE DISPLAY ' Bonus Eligible: No' END-IF DISPLAY ' '. DEMONSTRATE-LEVEL-RELATIONSHIPS. *> Demonstrate level number relationships DISPLAY 'Level Number Relationships:' *> Initialize inventory record MOVE 'ITEM001' TO ITEM-ID MOVE 'Laptop Computer' TO ITEM-NAME MOVE 'Electronics' TO ITEM-CATEGORY MOVE 'Computers' TO ITEM-SUBCATEGORY MOVE 25 TO QUANTITY-ON-HAND MOVE 10 TO QUANTITY-ORDERED MOVE 5 TO REORDER-POINT MOVE 1200.00 TO UNIT-COST MOVE 'SUPP001' TO SUPPLIER-ID MOVE 'Tech Supply Co' TO SUPPLIER-NAME MOVE 'John Smith' TO SUPPLIER-CONTACT *> Display level relationships DISPLAY 'Inventory Record Level Relationships:' DISPLAY ' Level 01: INVENTORY-RECORD (Root Level)' DISPLAY ' Level 05: ITEM-ID = ' ITEM-ID DISPLAY ' Level 05: ITEM-DESCRIPTION (Group Item)' DISPLAY ' Level 10: ITEM-NAME = ' ITEM-NAME DISPLAY ' Level 10: ITEM-CATEGORY = ' ITEM-CATEGORY DISPLAY ' Level 10: ITEM-SUBCATEGORY = ' ITEM-SUBCATEGORY DISPLAY ' Level 05: ITEM-INVENTORY (Group Item)' DISPLAY ' Level 10: QUANTITY-ON-HAND = ' QUANTITY-ON-HAND DISPLAY ' Level 10: QUANTITY-ORDERED = ' QUANTITY-ORDERED DISPLAY ' Level 10: REORDER-POINT = ' REORDER-POINT DISPLAY ' Level 10: UNIT-COST = $' UNIT-COST DISPLAY ' Level 05: ITEM-SUPPLIER (Group Item)' DISPLAY ' Level 10: SUPPLIER-ID = ' SUPPLIER-ID DISPLAY ' Level 10: SUPPLIER-NAME = ' SUPPLIER-NAME DISPLAY ' Level 10: SUPPLIER-CONTACT = ' SUPPLIER-CONTACT DISPLAY ' ' DISPLAY 'Level Number Rules:' DISPLAY ' - Level 01: Record description (highest level)' DISPLAY ' - Level 05: Major group items' DISPLAY ' - Level 10: Sub-group items' DISPLAY ' - Level 15: Elementary items (lowest level)' DISPLAY ' - Higher numbers = lower in hierarchy' DISPLAY ' - Group items contain other items' DISPLAY ' - Elementary items contain actual data'.

This example demonstrates basic data organization concepts including hierarchical data structures, level number organization, data grouping, and level relationships. The program shows how to design data structures using level numbers to create logical hierarchies, group related data together, and access data at different levels of the hierarchy. The examples illustrate customer, employee, and inventory record structures with proper level number organization.

2. Advanced Data Organization

Advanced data organization involves complex hierarchical structures, data redefinition, conditional data organization, and optimization techniques. These advanced concepts provide more sophisticated ways to organize data and handle complex business requirements efficiently.

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
IDENTIFICATION DIVISION. PROGRAM-ID. ADVANCED-DATA-ORGANIZATION. *> This program demonstrates advanced data organization concepts DATA DIVISION. WORKING-STORAGE SECTION. *> Advanced hierarchical structure with redefinition 01 TRANSACTION-RECORD. 05 TRANSACTION-ID PIC 9(8). 05 TRANSACTION-TYPE PIC X(1). 88 CASH-TRANSACTION VALUE 'C'. 88 CHECK-TRANSACTION VALUE 'K'. 88 CREDIT-TRANSACTION VALUE 'R'. 05 TRANSACTION-DATA. 10 TRANSACTION-AMOUNT PIC 9(8)V99. 10 TRANSACTION-DATE PIC 9(8). 10 TRANSACTION-TIME PIC 9(6). 05 PAYMENT-METHOD REDEFINES TRANSACTION-DATA. 10 PAYMENT-AMOUNT PIC 9(8)V99. 10 PAYMENT-DATE PIC 9(8). 10 PAYMENT-TIME PIC 9(6). 05 TRANSACTION-DETAILS. 10 CASH-DETAILS. 15 CASH-RECEIVED PIC 9(8)V99. 15 CHANGE-GIVEN PIC 9(8)V99. 15 CASHIER-ID PIC X(5). 10 CHECK-DETAILS. 15 CHECK-NUMBER PIC X(10). 15 CHECK-BANK PIC X(20). 15 CHECK-ROUTING PIC X(9). 10 CREDIT-DETAILS. 15 CARD-NUMBER PIC X(16). 15 CARD-TYPE PIC X(10). 15 AUTHORIZATION PIC X(8). 01 COMPLEX-STRUCTURE. 05 STRUCTURE-HEADER. 10 STRUCTURE-TYPE PIC X(1). 88 SIMPLE-STRUCTURE VALUE 'S'. 88 COMPLEX-STRUCTURE-VALUE VALUE 'C'. 10 STRUCTURE-SIZE PIC 9(4). 10 STRUCTURE-VERSION PIC X(3). 05 STRUCTURE-DATA OCCURS 1 TO 100 TIMES DEPENDING ON STRUCTURE-SIZE. 10 DATA-ELEMENT. 15 ELEMENT-ID PIC 9(6). 15 ELEMENT-TYPE PIC X(1). 88 NUMERIC-ELEMENT VALUE 'N'. 88 TEXT-ELEMENT VALUE 'T'. 88 DATE-ELEMENT VALUE 'D'. 15 ELEMENT-VALUE. 20 NUMERIC-VALUE PIC 9(10)V99. 20 TEXT-VALUE PIC X(50). 20 DATE-VALUE PIC 9(8). 01 CONDITIONAL-ORGANIZATION. 05 ORGANIZATION-TYPE PIC X(1). 88 HIERARCHICAL-ORG VALUE 'H'. 88 FLAT-ORGANIZATION VALUE 'F'. 88 NETWORK-ORGANIZATION VALUE 'N'. 05 ORGANIZATION-DATA. 10 HIERARCHICAL-DATA. 15 ROOT-NODE PIC X(20). 15 CHILD-NODES OCCURS 5 TIMES. 20 NODE-ID PIC 9(3). 20 NODE-VALUE PIC X(15). 10 FLAT-DATA. 15 FLAT-RECORDS OCCURS 10 TIMES. 20 RECORD-ID PIC 9(4). 20 RECORD-DATA PIC X(30). 10 NETWORK-DATA. 15 NETWORK-NODES OCCURS 8 TIMES. 20 NODE-ID PIC 9(3). 20 CONNECTIONS PIC 9(3) OCCURS 5 TIMES. 01 OPTIMIZATION-CONTROLS. 05 ACCESS-PATTERN PIC X(1). 88 SEQUENTIAL-ACCESS VALUE 'S'. 88 RANDOM-ACCESS VALUE 'R'. 88 INDEXED-ACCESS VALUE 'I'. 05 CACHE-SIZE PIC 9(4). 05 BUFFER-SIZE PIC 9(4). PROCEDURE DIVISION. ADVANCED-ORGANIZATION-MAIN. DISPLAY 'Advanced Data Organization Demonstration' DISPLAY '======================================' *> Demonstrate redefinition concepts PERFORM DEMONSTRATE-REDEFINITION *> Demonstrate conditional organization PERFORM DEMONSTRATE-CONDITIONAL-ORGANIZATION *> Demonstrate optimization techniques PERFORM DEMONSTRATE-OPTIMIZATION-TECHNIQUES STOP RUN. DEMONSTRATE-REDEFINITION. *> Demonstrate data redefinition concepts DISPLAY 'Data Redefinition Concepts:' *> Initialize transaction record MOVE 12345678 TO TRANSACTION-ID MOVE 'C' TO TRANSACTION-TYPE MOVE 150.75 TO TRANSACTION-AMOUNT MOVE 20231201 TO TRANSACTION-DATE MOVE 143000 TO TRANSACTION-TIME *> Access data through different redefinitions DISPLAY 'Transaction Record:' DISPLAY ' Transaction ID: ' TRANSACTION-ID DISPLAY ' Transaction Type: ' TRANSACTION-TYPE IF CASH-TRANSACTION DISPLAY ' Cash Transaction Details:' DISPLAY ' Amount: $' TRANSACTION-AMOUNT DISPLAY ' Date: ' TRANSACTION-DATE DISPLAY ' Time: ' TRANSACTION-TIME *> Access through payment method redefinition DISPLAY ' Payment Method (Redefined):' DISPLAY ' Payment Amount: $' PAYMENT-AMOUNT DISPLAY ' Payment Date: ' PAYMENT-DATE DISPLAY ' Payment Time: ' PAYMENT-TIME END-IF DISPLAY ' Redefinition Benefits:' DISPLAY ' - Same storage area, different views' DISPLAY ' - Efficient memory usage' DISPLAY ' - Flexible data interpretation' DISPLAY ' '. DEMONSTRATE-CONDITIONAL-ORGANIZATION. *> Demonstrate conditional data organization DISPLAY 'Conditional Data Organization:' *> Initialize conditional organization MOVE 'H' TO ORGANIZATION-TYPE IF HIERARCHICAL-ORG DISPLAY 'Hierarchical Organization:' MOVE 'ROOT' TO ROOT-NODE MOVE 1 TO NODE-ID(1) MOVE 'Child1' TO NODE-VALUE(1) MOVE 2 TO NODE-ID(2) MOVE 'Child2' TO NODE-VALUE(2) MOVE 3 TO NODE-ID(3) MOVE 'Child3' TO NODE-VALUE(3) DISPLAY ' Root Node: ' ROOT-NODE DISPLAY ' Child Nodes:' PERFORM VARYING NODE-INDEX FROM 1 BY 1 UNTIL NODE-INDEX > 3 DISPLAY ' Node ' NODE-ID(NODE-INDEX) ': ' NODE-VALUE(NODE-INDEX) END-PERFORM ELSE IF FLAT-ORGANIZATION DISPLAY 'Flat Organization:' PERFORM VARYING FLAT-INDEX FROM 1 BY 1 UNTIL FLAT-INDEX > 5 MOVE FLAT-INDEX TO RECORD-ID(FLAT-INDEX) STRING 'Record ' DELIMITED BY SIZE FLAT-INDEX DELIMITED BY SIZE ' Data' DELIMITED BY SIZE INTO RECORD-DATA(FLAT-INDEX) END-STRING DISPLAY ' Record ' RECORD-ID(FLAT-INDEX) ': ' RECORD-DATA(FLAT-INDEX) END-PERFORM ELSE IF NETWORK-ORGANIZATION DISPLAY 'Network Organization:' PERFORM VARYING NET-INDEX FROM 1 BY 1 UNTIL NET-INDEX > 3 MOVE NET-INDEX TO NODE-ID(NET-INDEX) DISPLAY ' Node ' NODE-ID(NET-INDEX) ' connections:' PERFORM VARYING CONN-INDEX FROM 1 BY 1 UNTIL CONN-INDEX > 3 MOVE CONN-INDEX + NET-INDEX TO CONNECTIONS(NET-INDEX, CONN-INDEX) DISPLAY ' -> ' CONNECTIONS(NET-INDEX, CONN-INDEX) END-PERFORM END-PERFORM END-IF END-IF END-IF DISPLAY ' '. DEMONSTRATE-OPTIMIZATION-TECHNIQUES. *> Demonstrate optimization techniques DISPLAY 'Data Organization Optimization:' *> Initialize optimization controls MOVE 'S' TO ACCESS-PATTERN MOVE 1000 TO CACHE-SIZE MOVE 512 TO BUFFER-SIZE DISPLAY 'Optimization Techniques:' DISPLAY ' 1. Access Pattern Optimization:' IF SEQUENTIAL-ACCESS DISPLAY ' - Sequential access pattern selected' DISPLAY ' - Data organized for sequential processing' DISPLAY ' - Minimize random access operations' ELSE IF RANDOM-ACCESS DISPLAY ' - Random access pattern selected' DISPLAY ' - Data organized for direct access' DISPLAY ' - Optimize for key-based retrieval' ELSE IF INDEXED-ACCESS DISPLAY ' - Indexed access pattern selected' DISPLAY ' - Data organized with indexes' DISPLAY ' - Balance sequential and random access' END-IF END-IF END-IF DISPLAY ' 2. Memory Optimization:' DISPLAY ' - Cache size: ' CACHE-SIZE ' records' DISPLAY ' - Buffer size: ' BUFFER-SIZE ' bytes' DISPLAY ' - Group related data together' DISPLAY ' - Minimize data movement' DISPLAY ' 3. Processing Optimization:' DISPLAY ' - Align data with processing requirements' DISPLAY ' - Use appropriate data types' DISPLAY ' - Minimize data conversion' DISPLAY ' - Optimize for frequent operations' DISPLAY ' 4. Storage Optimization:' DISPLAY ' - Pack data efficiently' DISPLAY ' - Use redefinition for multiple views' DISPLAY ' - Minimize unused space' DISPLAY ' - Consider data compression'.

This example demonstrates advanced data organization concepts including data redefinition, conditional organization, and optimization techniques. The program shows how to use REDEFINES to create multiple views of the same data area, implement conditional data organization based on data types, and apply optimization techniques for different access patterns. The examples illustrate transaction records with redefinition, conditional organizational structures, and optimization strategies for efficient data processing.

Data Organization Best Practices

1. Design Principles

Effective data organization follows specific design principles including logical grouping, consistent naming conventions, appropriate level numbers, and efficient storage utilization. These principles ensure maintainable, readable, and efficient data structures that support business requirements and processing needs.

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
IDENTIFICATION DIVISION. PROGRAM-ID. DATA-ORGANIZATION-BEST-PRACTICES. *> This program demonstrates data organization best practices DATA DIVISION. WORKING-STORAGE SECTION. *> Best practice data organization example 01 WELL-ORGANIZED-RECORD. 05 RECORD-HEADER. 10 RECORD-TYPE PIC X(1). 88 CUSTOMER-RECORD VALUE 'C'. 88 ORDER-RECORD VALUE 'O'. 88 PRODUCT-RECORD VALUE 'P'. 10 RECORD-VERSION PIC X(3). 10 RECORD-SIZE PIC 9(4). 05 PRIMARY-KEY. 10 KEY-PREFIX PIC X(2). 10 KEY-NUMBER PIC 9(8). 05 BUSINESS-DATA. 10 CUSTOMER-DATA. 15 CUSTOMER-NAME. 20 LAST-NAME PIC X(25). 20 FIRST-NAME PIC X(20). 20 MIDDLE-INITIAL PIC X(1). 15 CUSTOMER-CONTACT. 20 PHONE-NUMBER PIC X(12). 20 EMAIL-ADDRESS PIC X(40). 20 MAILING-ADDRESS. 25 STREET-ADDRESS PIC X(35). 25 CITY PIC X(25). 25 STATE PIC X(2). 25 ZIP-CODE PIC X(10). 10 ORDER-DATA. 15 ORDER-INFORMATION. 20 ORDER-DATE PIC 9(8). 20 ORDER-TIME PIC 9(6). 20 ORDER-STATUS PIC X(1). 88 ORDER-PENDING VALUE 'P'. 88 ORDER-PROCESSED VALUE 'R'. 88 ORDER-SHIPPED VALUE 'S'. 88 ORDER-DELIVERED VALUE 'D'. 15 ORDER-FINANCIAL. 20 ORDER-TOTAL PIC 9(8)V99. 20 TAX-AMOUNT PIC 9(6)V99. 20 SHIPPING-COST PIC 9(5)V99. 20 DISCOUNT-AMOUNT PIC 9(6)V99. 10 PRODUCT-DATA. 15 PRODUCT-INFORMATION. 20 PRODUCT-NAME PIC X(40). 20 PRODUCT-CATEGORY PIC X(20). 20 PRODUCT-SKU PIC X(15). 15 PRODUCT-INVENTORY. 20 QUANTITY-ON-HAND PIC 9(6). 20 REORDER-POINT PIC 9(5). 20 UNIT-COST PIC 9(6)V99. 20 UNIT-PRICE PIC 9(6)V99. 05 AUDIT-INFORMATION. 10 CREATION-DATE PIC 9(8). 10 CREATION-TIME PIC 9(6). 10 CREATED-BY PIC X(8). 10 LAST-MODIFIED-DATE PIC 9(8). 10 LAST-MODIFIED-TIME PIC 9(6). 10 LAST-MODIFIED-BY PIC X(8). 01 ORGANIZATION-GUIDELINES. 05 NAMING-CONVENTIONS. 10 CONVENTION-TYPE PIC X(1). 88 DESCRIPTIVE-NAMES VALUE 'D'. 88 CONSISTENT-NAMES VALUE 'C'. 88 HIERARCHICAL-NAMES VALUE 'H'. 05 LEVEL-NUMBER-RULES. 10 LEVEL-01-USAGE PIC X(20). 10 LEVEL-05-USAGE PIC X(20). 10 LEVEL-10-USAGE PIC X(20). 10 LEVEL-15-USAGE PIC X(20). PROCEDURE DIVISION. BEST-PRACTICES-MAIN. DISPLAY 'Data Organization Best Practices Demonstration' DISPLAY '============================================' *> Demonstrate naming conventions PERFORM DEMONSTRATE-NAMING-CONVENTIONS *> Demonstrate level number usage PERFORM DEMONSTRATE-LEVEL-NUMBER-USAGE *> Demonstrate logical grouping PERFORM DEMONSTRATE-LOGICAL-GROUPING STOP RUN. DEMONSTRATE-NAMING-CONVENTIONS. *> Demonstrate naming conventions DISPLAY 'Naming Convention Best Practices:' *> Initialize naming convention guidelines SET DESCRIPTIVE-NAMES TO TRUE DISPLAY '1. Descriptive Names:' DISPLAY ' - Use meaningful, descriptive names' DISPLAY ' - Avoid abbreviations when possible' DISPLAY ' - Examples: CUSTOMER-NAME, ORDER-DATE, PRODUCT-SKU' DISPLAY ' ' SET CONSISTENT-NAMES TO TRUE DISPLAY '2. Consistent Naming:' DISPLAY ' - Use consistent naming patterns' DISPLAY ' - Follow established conventions' DISPLAY ' - Examples: All dates end with -DATE' DISPLAY ' - Examples: All amounts end with -AMOUNT' DISPLAY ' ' SET HIERARCHICAL-NAMES TO TRUE DISPLAY '3. Hierarchical Naming:' DISPLAY ' - Reflect data hierarchy in names' DISPLAY ' - Use prefixes for related groups' DISPLAY ' - Examples: CUSTOMER-NAME, ORDER-DATE, PRODUCT-SKU' DISPLAY ' '. DEMONSTRATE-LEVEL-NUMBER-USAGE. *> Demonstrate level number usage DISPLAY 'Level Number Usage Best Practices:' *> Initialize level number rules MOVE 'Record Description' TO LEVEL-01-USAGE MOVE 'Major Group Items' TO LEVEL-05-USAGE MOVE 'Sub-Group Items' TO LEVEL-10-USAGE MOVE 'Elementary Items' TO LEVEL-15-USAGE DISPLAY 'Level Number Guidelines:' DISPLAY ' Level 01: ' LEVEL-01-USAGE DISPLAY ' - Highest level for record descriptions' DISPLAY ' - Defines complete data record' DISPLAY ' - Must have unique name' DISPLAY ' ' DISPLAY ' Level 05: ' LEVEL-05-USAGE DISPLAY ' - Major logical groupings' DISPLAY ' - Primary data sections' DISPLAY ' - Examples: CUSTOMER-DATA, ORDER-DATA' DISPLAY ' ' DISPLAY ' Level 10: ' LEVEL-10-USAGE DISPLAY ' - Sub-groups within major groups' DISPLAY ' - Related data elements' DISPLAY ' - Examples: CUSTOMER-NAME, ORDER-INFORMATION' DISPLAY ' ' DISPLAY ' Level 15: ' LEVEL-15-USAGE DISPLAY ' - Individual data elements' DISPLAY ' - Actual data values' DISPLAY ' - Must have PICTURE clause' DISPLAY ' - Examples: LAST-NAME, ORDER-DATE' DISPLAY ' '. DEMONSTRATE-LOGICAL-GROUPING. *> Demonstrate logical grouping DISPLAY 'Logical Grouping Best Practices:' *> Initialize well-organized record MOVE 'C' TO RECORD-TYPE MOVE 'V01' TO RECORD-VERSION MOVE 0256 TO RECORD-SIZE MOVE 'CU' TO KEY-PREFIX MOVE 12345678 TO KEY-NUMBER MOVE 'Smith' TO LAST-NAME MOVE 'John' TO FIRST-NAME MOVE 'A' TO MIDDLE-INITIAL MOVE '555-123-4567' TO PHONE-NUMBER MOVE 'john.smith@email.com' TO EMAIL-ADDRESS MOVE '123 Main Street' TO STREET-ADDRESS MOVE 'New York' TO CITY MOVE 'NY' TO STATE MOVE '10001' TO ZIP-CODE MOVE 20231201 TO CREATION-DATE MOVE 090000 TO CREATION-TIME MOVE 'SYSTEM' TO CREATED-BY MOVE 20231201 TO LAST-MODIFIED-DATE MOVE 090000 TO LAST-MODIFIED-TIME MOVE 'SYSTEM' TO LAST-MODIFIED-BY DISPLAY 'Logical Grouping Principles:' DISPLAY '1. Group Related Data:' DISPLAY ' - CUSTOMER-NAME groups name components' DISPLAY ' - CUSTOMER-CONTACT groups contact information' DISPLAY ' - MAILING-ADDRESS groups address components' DISPLAY ' ' DISPLAY '2. Separate Concerns:' DISPLAY ' - BUSINESS-DATA separated from AUDIT-INFORMATION' DISPLAY ' - Different record types in separate groups' DISPLAY ' - Primary key separate from business data' DISPLAY ' ' DISPLAY '3. Hierarchical Structure:' DISPLAY ' - Clear parent-child relationships' DISPLAY ' - Logical data flow' DISPLAY ' - Easy navigation and access' DISPLAY ' ' DISPLAY '4. Consistent Organization:' DISPLAY ' - Similar patterns across record types' DISPLAY ' - Standardized level usage' DISPLAY ' - Predictable data layout' DISPLAY ' ' DISPLAY 'Example Record Structure:' DISPLAY ' RECORD-HEADER (Level 05)' DISPLAY ' RECORD-TYPE, RECORD-VERSION, RECORD-SIZE' DISPLAY ' PRIMARY-KEY (Level 05)' DISPLAY ' KEY-PREFIX, KEY-NUMBER' DISPLAY ' BUSINESS-DATA (Level 05)' DISPLAY ' CUSTOMER-DATA (Level 10)' DISPLAY ' CUSTOMER-NAME (Level 15)' DISPLAY ' LAST-NAME, FIRST-NAME, MIDDLE-INITIAL' DISPLAY ' CUSTOMER-CONTACT (Level 15)' DISPLAY ' PHONE-NUMBER, EMAIL-ADDRESS, MAILING-ADDRESS' DISPLAY ' AUDIT-INFORMATION (Level 05)' DISPLAY ' CREATION-DATE, CREATION-TIME, CREATED-BY' DISPLAY ' LAST-MODIFIED-DATE, LAST-MODIFIED-TIME, LAST-MODIFIED-BY'.

This example demonstrates data organization best practices including naming conventions, level number usage, and logical grouping principles. The program shows how to design well-organized data structures using descriptive names, consistent naming patterns, appropriate level numbers, and logical grouping of related data. The example illustrates a comprehensive record structure that follows best practices for maintainability, readability, and efficiency.

Best Practices for Data Organization

Common Data Organization Patterns