MainframeMaster

COBOL Tutorial

COBOL PROGRAM-ID

COBOL PROGRAM-ID represents fundamental program identification and comprehensive naming specification capabilities within enterprise development environments, providing essential program identification mechanisms for systematic application organization, enhanced metadata management features for professional development workflows, and intelligent naming conventions that enable precise program identification, optimal program organization strategies, and systematic program management while maintaining naming consistency, ensuring unique program identification, and enabling flexible program architectures across business applications requiring exact program specification, comprehensive identification metadata, and reliable program naming throughout sophisticated enterprise development scenarios and professional programming environments.

Basic PROGRAM-ID Usage

Program Identification Patterns
Standard and advanced PROGRAM-ID specifications
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
*> Basic PROGRAM-ID specifications and naming conventions IDENTIFICATION DIVISION. *> 1. Simple PROGRAM-ID specification PROGRAM-ID. CUSTOMER-PROCESSING. *> 2. PROGRAM-ID with descriptive business name PROGRAM-ID. ACCOUNTS-RECEIVABLE-REPORT. *> 3. PROGRAM-ID with system prefix PROGRAM-ID. SYS-FINANCIAL-CALCULATOR. *> 4. PROGRAM-ID with version indicator PROGRAM-ID. PAYROLL-PROCESSOR-V2. *> 5. PROGRAM-ID with department code PROGRAM-ID. HR-EMPLOYEE-MAINTENANCE. *> 6. PROGRAM-ID with application domain PROGRAM-ID. INV-STOCK-MANAGEMENT. *> 7. PROGRAM-ID with INITIAL clause (for reentrant programs) PROGRAM-ID. UTILITY-DATE-CONVERTER INITIAL. *> 8. PROGRAM-ID with RECURSIVE clause PROGRAM-ID. MATH-FACTORIAL-CALC RECURSIVE. *> 9. PROGRAM-ID with COMMON clause (for nested programs) PROGRAM-ID. SHARED-ERROR-HANDLER COMMON. *> 10. Complex PROGRAM-ID with multiple clauses PROGRAM-ID. BATCH-PROCESSOR INITIAL RECURSIVE. *> Demonstration of proper naming conventions IDENTIFICATION DIVISION. PROGRAM-ID. ENTERPRISE-CUSTOMER-MGMT. AUTHOR. Enterprise Development Team. DATE-WRITTEN. 2024-01-15. DATE-COMPILED. REMARKS. Comprehensive customer management system demonstrating proper PROGRAM-ID naming conventions and specifications. Program naming follows enterprise standards: - Descriptive business function name - Hyphen-separated word components - Maximum 30 character limit - Unique within application domain This program handles: - Customer data validation - Account balance processing - Report generation - Error handling and logging. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-Z15. OBJECT-COMPUTER. IBM-Z15. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-PROGRAM-IDENTIFICATION. 05 WS-PROGRAM-NAME PIC X(30) VALUE "ENTERPRISE-CUSTOMER-MGMT". 05 WS-PROGRAM-VERSION PIC X(10) VALUE "1.2.3". 05 WS-PROGRAM-TYPE PIC X(15) VALUE "MAIN-PROGRAM". 05 WS-PROGRAM-AUTHOR PIC X(30) VALUE "Enterprise Development Team". 01 WS-NAMING-VALIDATION. 05 WS-NAME-LENGTH PIC 9(2) VALUE 0. 05 WS-NAME-VALID PIC X VALUE 'Y'. 88 VALID-NAME VALUE 'Y'. 88 INVALID-NAME VALUE 'N'. 05 WS-NAMING-ERROR PIC X(50). 01 WS-PROGRAM-METADATA. 05 WS-BUSINESS-DOMAIN PIC X(20) VALUE "CUSTOMER-MANAGEMENT". 05 WS-FUNCTIONAL-AREA PIC X(20) VALUE "ACCOUNT-PROCESSING". 05 WS-SYSTEM-PREFIX PIC X(10) VALUE "ENT". 05 WS-MODULE-TYPE PIC X(15) VALUE "BATCH-PROCESSOR". PROCEDURE DIVISION. MAIN-PROGRAM-ID-DEMO. DISPLAY "=== PROGRAM-ID DEMONSTRATION ===" DISPLAY "Program: " WS-PROGRAM-NAME DISPLAY "Version: " WS-PROGRAM-VERSION DISPLAY "Type: " WS-PROGRAM-TYPE PERFORM DEMONSTRATE-NAMING-CONVENTIONS PERFORM VALIDATE-PROGRAM-NAMES PERFORM DISPLAY-METADATA-EXAMPLES DISPLAY "=== PROGRAM-ID DEMO COMPLETE ===" STOP RUN. DEMONSTRATE-NAMING-CONVENTIONS. DISPLAY " " DISPLAY "📋 PROGRAM-ID NAMING CONVENTIONS" DISPLAY "================================" DISPLAY "Current Program Details:" DISPLAY " Program Name: " WS-PROGRAM-NAME DISPLAY " Business Domain: " WS-BUSINESS-DOMAIN DISPLAY " Functional Area: " WS-FUNCTIONAL-AREA DISPLAY " System Prefix: " WS-SYSTEM-PREFIX DISPLAY " Module Type: " WS-MODULE-TYPE DISPLAY " " DISPLAY "✅ Best Practice Examples:" DISPLAY " CUSTOMER-ACCOUNT-INQUIRY" DISPLAY " PAYROLL-WEEKLY-PROCESSOR" DISPLAY " INVENTORY-STOCK-REPORT" DISPLAY " HR-EMPLOYEE-ONBOARDING" DISPLAY " FIN-BUDGET-CALCULATOR" DISPLAY " " DISPLAY "❌ Poor Naming Examples:" DISPLAY " PROG1 (too generic)" DISPLAY " CUSTOMERACCOUNTINQUIRYPROCESS (too long)" DISPLAY " Cust-Acct (inconsistent case)" DISPLAY " PROGRAM- (ends with hyphen)" DISPLAY " 123CUSTOMER (starts with digit)". VALIDATE-PROGRAM-NAMES. DISPLAY " " DISPLAY "🔍 PROGRAM NAME VALIDATION" DISPLAY "==========================" *> Test various program names PERFORM TEST-PROGRAM-NAME WITH "CUSTOMER-PROCESSING" PERFORM TEST-PROGRAM-NAME WITH "PAYROLL-CALC" PERFORM TEST-PROGRAM-NAME WITH "VERY-LONG-PROGRAM-NAME-EXCEEDS-LIMITS" PERFORM TEST-PROGRAM-NAME WITH "123INVALID" PERFORM TEST-PROGRAM-NAME WITH "VALID-NAME-" PERFORM TEST-PROGRAM-NAME WITH "GOOD-PROGRAM-NAME". TEST-PROGRAM-NAME. USING PROGRAM-NAME-TO-TEST. MOVE 'Y' TO WS-NAME-VALID MOVE SPACES TO WS-NAMING-ERROR *> Check length MOVE FUNCTION LENGTH(FUNCTION TRIM(PROGRAM-NAME-TO-TEST)) TO WS-NAME-LENGTH IF WS-NAME-LENGTH > 30 MOVE 'N' TO WS-NAME-VALID MOVE "Name exceeds 30 character limit" TO WS-NAMING-ERROR END-IF IF WS-NAME-LENGTH = 0 MOVE 'N' TO WS-NAME-VALID MOVE "Name cannot be empty" TO WS-NAMING-ERROR END-IF *> Check first character IF PROGRAM-NAME-TO-TEST(1:1) IS NUMERIC MOVE 'N' TO WS-NAME-VALID MOVE "Name cannot start with digit" TO WS-NAMING-ERROR END-IF *> Check last character IF PROGRAM-NAME-TO-TEST(WS-NAME-LENGTH:1) = "-" MOVE 'N' TO WS-NAME-VALID MOVE "Name cannot end with hyphen" TO WS-NAMING-ERROR END-IF *> Display results DISPLAY "Testing: '" PROGRAM-NAME-TO-TEST "'" DISPLAY " Length: " WS-NAME-LENGTH " characters" IF VALID-NAME DISPLAY " ✅ Valid program name" ELSE DISPLAY " ❌ Invalid: " WS-NAMING-ERROR END-IF DISPLAY " ". DISPLAY-METADATA-EXAMPLES. DISPLAY "📊 PROGRAM METADATA EXAMPLES" DISPLAY "============================" PERFORM SHOW-PROGRAM-CATEGORY WITH "MAIN-PROGRAMS" PERFORM SHOW-PROGRAM-CATEGORY WITH "SUBPROGRAMS" PERFORM SHOW-PROGRAM-CATEGORY WITH "UTILITY-PROGRAMS" PERFORM SHOW-PROGRAM-CATEGORY WITH "REPORT-PROGRAMS". SHOW-PROGRAM-CATEGORY. USING CATEGORY-NAME. DISPLAY " " DISPLAY "📂 " CATEGORY-NAME ":" EVALUATE CATEGORY-NAME WHEN "MAIN-PROGRAMS" DISPLAY " CUSTOMER-MASTER-UPDATE" DISPLAY " MONTHLY-SALES-PROCESSOR" DISPLAY " YEAR-END-CLOSING-JOB" DISPLAY " DAILY-TRANSACTION-LOAD" WHEN "SUBPROGRAMS" DISPLAY " DATE-VALIDATION-MODULE" DISPLAY " CURRENCY-CONVERTER" DISPLAY " TAX-CALCULATION-ROUTINE" DISPLAY " ADDRESS-STANDARDIZER" WHEN "UTILITY-PROGRAMS" DISPLAY " FILE-BACKUP-UTILITY" DISPLAY " DATA-COMPRESSION-TOOL" DISPLAY " LOG-FILE-ANALYZER" DISPLAY " SYSTEM-HEALTH-CHECKER" WHEN "REPORT-PROGRAMS" DISPLAY " FINANCIAL-SUMMARY-RPT" DISPLAY " CUSTOMER-AGING-REPORT" DISPLAY " INVENTORY-STATUS-RPT" DISPLAY " EMPLOYEE-PAYROLL-RPT" END-EVALUATE.
Program Identification
Naming Conventions
Metadata

Advanced PROGRAM-ID Features

Special Program Attributes and Nested Programs
INITIAL, RECURSIVE, COMMON clauses and program hierarchies
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
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
*> Advanced PROGRAM-ID features and nested program examples IDENTIFICATION DIVISION. PROGRAM-ID. ADVANCED-PROGRAM-DEMO INITIAL RECURSIVE. AUTHOR. Advanced Development Team. REMARKS. Demonstrates advanced PROGRAM-ID features including INITIAL clause for reentrant behavior, RECURSIVE clause for recursive calls, and nested program organization. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-Z15. OBJECT-COMPUTER. IBM-Z15. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-PROGRAM-ATTRIBUTES. 05 WS-IS-INITIAL PIC X VALUE 'Y'. 88 PROGRAM-IS-INITIAL VALUE 'Y'. 05 WS-IS-RECURSIVE PIC X VALUE 'Y'. 88 PROGRAM-IS-RECURSIVE VALUE 'Y'. 05 WS-NESTING-LEVEL PIC 9(2) VALUE 0. 01 WS-RECURSIVE-DATA. 05 WS-FACTORIAL-INPUT PIC 9(3) VALUE 0. 05 WS-FACTORIAL-RESULT PIC 9(10) VALUE 1. 05 WS-RECURSION-DEPTH PIC 9(3) VALUE 0. 01 WS-PROGRAM-STATISTICS. 05 WS-CALL-COUNT PIC 9(6) VALUE 0. 05 WS-NESTED-CALLS PIC 9(4) VALUE 0. 05 WS-RECURSIVE-CALLS PIC 9(4) VALUE 0. PROCEDURE DIVISION. MAIN-ADVANCED-DEMO. DISPLAY "=== ADVANCED PROGRAM-ID FEATURES ===" PERFORM DEMONSTRATE-INITIAL-BEHAVIOR PERFORM DEMONSTRATE-RECURSIVE-CALLS PERFORM DEMONSTRATE-NESTED-PROGRAMS PERFORM DISPLAY-PROGRAM-STATISTICS DISPLAY "=== ADVANCED DEMO COMPLETE ===" GOBACK. DEMONSTRATE-INITIAL-BEHAVIOR. DISPLAY " " DISPLAY "🔄 INITIAL CLAUSE DEMONSTRATION" DISPLAY "===============================" ADD 1 TO WS-CALL-COUNT DISPLAY "Program call #" WS-CALL-COUNT IF PROGRAM-IS-INITIAL DISPLAY "✅ Program has INITIAL clause" DISPLAY " - Working-Storage initialized on each call" DISPLAY " - Program state reset between calls" DISPLAY " - Suitable for reentrant processing" ELSE DISPLAY "⚠️ Program does not have INITIAL clause" DISPLAY " - Working-Storage retains values" DISPLAY " - Program state persists between calls" END-IF DISPLAY "Current call count: " WS-CALL-COUNT. DEMONSTRATE-RECURSIVE-CALLS. DISPLAY " " DISPLAY "🔁 RECURSIVE CLAUSE DEMONSTRATION" DISPLAY "=================================" IF PROGRAM-IS-RECURSIVE DISPLAY "✅ Program has RECURSIVE clause" DISPLAY " - Can call itself directly or indirectly" DISPLAY " - Supports recursive algorithms" MOVE 5 TO WS-FACTORIAL-INPUT PERFORM CALCULATE-FACTORIAL DISPLAY "Factorial calculation example:" DISPLAY " Input: " WS-FACTORIAL-INPUT DISPLAY " Result: " WS-FACTORIAL-RESULT DISPLAY " Recursion depth: " WS-RECURSION-DEPTH ELSE DISPLAY "⚠️ Program does not have RECURSIVE clause" DISPLAY " - Cannot call itself" DISPLAY " - Recursive calls would cause errors" END-IF. CALCULATE-FACTORIAL. ADD 1 TO WS-RECURSION-DEPTH ADD 1 TO WS-RECURSIVE-CALLS DISPLAY " Recursive call depth: " WS-RECURSION-DEPTH DISPLAY " Calculating factorial of: " WS-FACTORIAL-INPUT IF WS-FACTORIAL-INPUT <= 1 MOVE 1 TO WS-FACTORIAL-RESULT DISPLAY " Base case reached: result = 1" ELSE COMPUTE WS-FACTORIAL-RESULT = WS-FACTORIAL-INPUT * WS-FACTORIAL-RESULT SUBTRACT 1 FROM WS-FACTORIAL-INPUT *> Recursive call (simulated for demonstration) DISPLAY " Recursive call with: " WS-FACTORIAL-INPUT PERFORM CALCULATE-FACTORIAL END-IF SUBTRACT 1 FROM WS-RECURSION-DEPTH. DEMONSTRATE-NESTED-PROGRAMS. DISPLAY " " DISPLAY "📦 NESTED PROGRAM DEMONSTRATION" DISPLAY "===============================" DISPLAY "Calling nested utility programs:" CALL "DATE-UTILITY" ADD 1 TO WS-NESTED-CALLS CALL "MATH-UTILITY" ADD 1 TO WS-NESTED-CALLS CALL "STRING-UTILITY" ADD 1 TO WS-NESTED-CALLS DISPLAY "Nested program calls completed: " WS-NESTED-CALLS. DISPLAY-PROGRAM-STATISTICS. DISPLAY " " DISPLAY "📊 PROGRAM EXECUTION STATISTICS" DISPLAY "===============================" DISPLAY "Program Name: ADVANCED-PROGRAM-DEMO" DISPLAY "Attributes:" DISPLAY " - INITIAL: " WS-IS-INITIAL DISPLAY " - RECURSIVE: " WS-IS-RECURSIVE DISPLAY " " DISPLAY "Execution Metrics:" DISPLAY " Total calls: " WS-CALL-COUNT DISPLAY " Nested calls: " WS-NESTED-CALLS DISPLAY " Recursive calls: " WS-RECURSIVE-CALLS DISPLAY " Maximum recursion depth: " WS-RECURSION-DEPTH. *> ================================================================ *> NESTED UTILITY PROGRAMS *> ================================================================ IDENTIFICATION DIVISION. PROGRAM-ID. DATE-UTILITY COMMON. REMARKS. Common nested program for date operations. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-DATE-WORK. 05 WS-CURRENT-DATE PIC X(8). 05 WS-FORMATTED-DATE PIC X(10). PROCEDURE DIVISION. DATE-UTILITY-MAIN. DISPLAY " 📅 DATE-UTILITY executing..." MOVE FUNCTION CURRENT-DATE(1:8) TO WS-CURRENT-DATE STRING WS-CURRENT-DATE(1:4) "/" WS-CURRENT-DATE(5:2) "/" WS-CURRENT-DATE(7:2) DELIMITED BY SIZE INTO WS-FORMATTED-DATE DISPLAY " Current date: " WS-FORMATTED-DATE GOBACK. END PROGRAM DATE-UTILITY. IDENTIFICATION DIVISION. PROGRAM-ID. MATH-UTILITY COMMON. REMARKS. Common nested program for mathematical operations. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-MATH-WORK. 05 WS-NUMBER-1 PIC 9(3) VALUE 25. 05 WS-NUMBER-2 PIC 9(3) VALUE 15. 05 WS-RESULT PIC 9(6) VALUE 0. PROCEDURE DIVISION. MATH-UTILITY-MAIN. DISPLAY " 🧮 MATH-UTILITY executing..." ADD WS-NUMBER-1 TO WS-NUMBER-2 GIVING WS-RESULT DISPLAY " " WS-NUMBER-1 " + " WS-NUMBER-2 " = " WS-RESULT MULTIPLY WS-NUMBER-1 BY WS-NUMBER-2 GIVING WS-RESULT DISPLAY " " WS-NUMBER-1 " × " WS-NUMBER-2 " = " WS-RESULT GOBACK. END PROGRAM MATH-UTILITY. IDENTIFICATION DIVISION. PROGRAM-ID. STRING-UTILITY COMMON. REMARKS. Common nested program for string operations. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-STRING-WORK. 05 WS-INPUT-STRING PIC X(30) VALUE "Hello COBOL World". 05 WS-OUTPUT-STRING PIC X(30). 05 WS-STRING-LENGTH PIC 9(3) VALUE 0. PROCEDURE DIVISION. STRING-UTILITY-MAIN. DISPLAY " 🔤 STRING-UTILITY executing..." MOVE FUNCTION LENGTH(FUNCTION TRIM(WS-INPUT-STRING)) TO WS-STRING-LENGTH MOVE FUNCTION UPPER-CASE(WS-INPUT-STRING) TO WS-OUTPUT-STRING DISPLAY " Input: '" WS-INPUT-STRING "'" DISPLAY " Length: " WS-STRING-LENGTH DISPLAY " Upper: '" WS-OUTPUT-STRING "'" GOBACK. END PROGRAM STRING-UTILITY. END PROGRAM ADVANCED-PROGRAM-DEMO. *> ================================================================ *> PROGRAM NAMING STANDARDS *> ================================================================ IDENTIFICATION DIVISION. PROGRAM-ID. NAMING-STANDARDS-GUIDE. AUTHOR. Standards Committee. REMARKS. Comprehensive guide to enterprise PROGRAM-ID naming standards and organizational conventions. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NAMING-STANDARDS. 05 WS-STANDARD-CATEGORIES OCCURS 8 TIMES. 10 WS-CATEGORY-NAME PIC X(20). 10 WS-NAMING-PATTERN PIC X(30). 10 WS-EXAMPLE-NAME PIC X(30). 10 WS-DESCRIPTION PIC X(50). 01 WS-DOMAIN-PREFIXES. 05 WS-PREFIX-COUNT PIC 9(2) VALUE 6. 05 WS-DOMAIN-PREFIX OCCURS 6 TIMES. 10 WS-PREFIX-CODE PIC X(5). 10 WS-PREFIX-DOMAIN PIC X(25). 10 WS-PREFIX-EXAMPLE PIC X(30). PROCEDURE DIVISION. NAMING-STANDARDS-DEMO. DISPLAY "=== PROGRAM-ID NAMING STANDARDS ===" PERFORM LOAD-NAMING-STANDARDS PERFORM DISPLAY-NAMING-CATEGORIES PERFORM DISPLAY-DOMAIN-PREFIXES PERFORM SHOW-COMPLETE-EXAMPLES DISPLAY "=== NAMING STANDARDS COMPLETE ===" STOP RUN. LOAD-NAMING-STANDARDS. *> Load naming categories MOVE "BATCH-PROGRAMS" TO WS-CATEGORY-NAME(1) MOVE "DOMAIN-FUNCTION-TYPE" TO WS-NAMING-PATTERN(1) MOVE "PAYROLL-WEEKLY-BATCH" TO WS-EXAMPLE-NAME(1) MOVE "Scheduled batch processing programs" TO WS-DESCRIPTION(1) MOVE "ONLINE-PROGRAMS" TO WS-CATEGORY-NAME(2) MOVE "SYSTEM-MODULE-FUNC" TO WS-NAMING-PATTERN(2) MOVE "CICS-CUSTOMER-INQUIRY" TO WS-EXAMPLE-NAME(2) MOVE "Interactive online transaction programs" TO WS-DESCRIPTION(2) MOVE "UTILITY-PROGRAMS" TO WS-CATEGORY-NAME(3) MOVE "UTIL-FUNCTION-TYPE" TO WS-NAMING-PATTERN(3) MOVE "UTIL-FILE-CONVERTER" TO WS-EXAMPLE-NAME(3) MOVE "General purpose utility programs" TO WS-DESCRIPTION(3) MOVE "REPORT-PROGRAMS" TO WS-CATEGORY-NAME(4) MOVE "RPT-BUSINESS-PERIOD" TO WS-NAMING-PATTERN(4) MOVE "RPT-SALES-MONTHLY" TO WS-EXAMPLE-NAME(4) MOVE "Report generation programs" TO WS-DESCRIPTION(4) MOVE "SUBPROGRAMS" TO WS-CATEGORY-NAME(5) MOVE "FUNC-PURPOSE-MOD" TO WS-NAMING-PATTERN(5) MOVE "CALC-INTEREST-MODULE" TO WS-EXAMPLE-NAME(5) MOVE "Reusable subprogram modules" TO WS-DESCRIPTION(5) MOVE "TEST-PROGRAMS" TO WS-CATEGORY-NAME(6) MOVE "TEST-COMPONENT-NUM" TO WS-NAMING-PATTERN(6) MOVE "TEST-VALIDATION-01" TO WS-EXAMPLE-NAME(6) MOVE "Testing and quality assurance programs" TO WS-DESCRIPTION(6) *> Load domain prefixes MOVE "HR" TO WS-PREFIX-CODE(1) MOVE "HUMAN RESOURCES" TO WS-PREFIX-DOMAIN(1) MOVE "HR-EMPLOYEE-ONBOARDING" TO WS-PREFIX-EXAMPLE(1) MOVE "FIN" TO WS-PREFIX-CODE(2) MOVE "FINANCIAL SYSTEMS" TO WS-PREFIX-DOMAIN(2) MOVE "FIN-ACCOUNTS-PAYABLE" TO WS-PREFIX-EXAMPLE(2) MOVE "INV" TO WS-PREFIX-CODE(3) MOVE "INVENTORY MANAGEMENT" TO WS-PREFIX-DOMAIN(3) MOVE "INV-STOCK-REPLENISH" TO WS-PREFIX-EXAMPLE(3) MOVE "CRM" TO WS-PREFIX-CODE(4) MOVE "CUSTOMER RELATIONSHIP" TO WS-PREFIX-DOMAIN(4) MOVE "CRM-LEAD-TRACKING" TO WS-PREFIX-EXAMPLE(4) MOVE "SYS" TO WS-PREFIX-CODE(5) MOVE "SYSTEM OPERATIONS" TO WS-PREFIX-DOMAIN(5) MOVE "SYS-BACKUP-MANAGER" TO WS-PREFIX-EXAMPLE(5) MOVE "RPT" TO WS-PREFIX-CODE(6) MOVE "REPORTING SYSTEMS" TO WS-PREFIX-DOMAIN(6) MOVE "RPT-EXECUTIVE-DASH" TO WS-PREFIX-EXAMPLE(6). DISPLAY-NAMING-CATEGORIES. DISPLAY " " DISPLAY "📋 NAMING CATEGORIES AND PATTERNS" DISPLAY "==================================" PERFORM VARYING WS-CATEGORY-INDEX FROM 1 BY 1 UNTIL WS-CATEGORY-INDEX > 6 DISPLAY " " DISPLAY "📂 " WS-CATEGORY-NAME(WS-CATEGORY-INDEX) DISPLAY " Pattern: " WS-NAMING-PATTERN(WS-CATEGORY-INDEX) DISPLAY " Example: " WS-EXAMPLE-NAME(WS-CATEGORY-INDEX) DISPLAY " Purpose: " WS-DESCRIPTION(WS-CATEGORY-INDEX) END-PERFORM. DISPLAY-DOMAIN-PREFIXES. DISPLAY " " DISPLAY "🏷️ DOMAIN PREFIXES" DISPLAY "==================" PERFORM VARYING WS-PREFIX-INDEX FROM 1 BY 1 UNTIL WS-PREFIX-INDEX > 6 DISPLAY " " DISPLAY WS-PREFIX-CODE(WS-PREFIX-INDEX) " - " WS-PREFIX-DOMAIN(WS-PREFIX-INDEX) DISPLAY " Example: " WS-PREFIX-EXAMPLE(WS-PREFIX-INDEX) END-PERFORM. SHOW-COMPLETE-EXAMPLES. DISPLAY " " DISPLAY "✅ COMPLETE NAMING EXAMPLES" DISPLAY "===========================" DISPLAY " " DISPLAY "Enterprise Application Programs:" DISPLAY " MAIN-CUSTOMER-PROCESSOR" DISPLAY " BATCH-MONTHLY-BILLING" DISPLAY " ONLINE-ORDER-ENTRY" DISPLAY " RPT-QUARTERLY-SALES" DISPLAY " UTIL-DATA-MIGRATION" DISPLAY " " DISPLAY "Domain-Specific Programs:" DISPLAY " HR-PAYROLL-CALCULATION" DISPLAY " FIN-BUDGET-ANALYSIS" DISPLAY " INV-WAREHOUSE-MGMT" DISPLAY " CRM-CONTACT-SYNC" DISPLAY " SYS-LOG-ARCHIVER" DISPLAY " " DISPLAY "Modular Components:" DISPLAY " CALC-TAX-ROUTINE" DISPLAY " VALID-ADDRESS-CHECK" DISPLAY " FORMAT-PHONE-NUMBER" DISPLAY " CONVERT-DATE-FORMAT" DISPLAY " ENCRYPT-SENSITIVE-DATA". END PROGRAM NAMING-STANDARDS-GUIDE.

PROGRAM-ID Features and Capabilities

Basic Identification
  • • Unique program naming
  • • 30-character limit
  • • Alphanumeric and hyphens
  • • Must start with letter
Advanced Attributes
  • • INITIAL clause for reentrancy
  • • RECURSIVE clause for recursion
  • • COMMON clause for nesting
  • • Program behavior modification
Naming Standards
  • • Domain-specific prefixes
  • • Functional area identification
  • • Program type indicators
  • • Enterprise conventions
Program Organization
  • • Nested program support
  • • Modular architecture
  • • Component identification
  • • System integration

Best Practices