MainframeMaster

COBOL Tutorial

COBOL PROMPT

COBOL PROMPT represents advanced user interaction and comprehensive input guidance capabilities within interactive programming environments, providing sophisticated prompt display mechanisms for intuitive user communication, enhanced input collection features for streamlined data entry workflows, and intelligent user guidance patterns that enable precise input prompting, optimal user experience design, and systematic interaction management while maintaining input clarity, ensuring effective user guidance, and enabling flexible interaction architectures across business applications requiring exact user prompting, comprehensive input validation, and reliable user communication throughout sophisticated enterprise interaction scenarios and professional user interface development.

Basic PROMPT Usage

Interactive Input with PROMPT
Fundamental PROMPT techniques for user interaction
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
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
*> Basic PROMPT usage with ACCEPT statements IDENTIFICATION DIVISION. PROGRAM-ID. PROMPT-DEMONSTRATION. AUTHOR. Interactive Development Team. REMARKS. Comprehensive demonstration of PROMPT usage for user interaction and data collection in COBOL programs. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-Z15. OBJECT-COMPUTER. IBM-Z15. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-USER-INPUT-DATA. 05 WS-CUSTOMER-NAME PIC X(30). 05 WS-CUSTOMER-ID PIC X(8). 05 WS-ACCOUNT-BALANCE PIC S9(7)V99. 05 WS-PHONE-NUMBER PIC X(15). 05 WS-EMAIL-ADDRESS PIC X(50). 05 WS-BIRTH-DATE PIC X(10). 01 WS-PROMPT-CONTROLS. 05 WS-CONTINUE-FLAG PIC X VALUE 'Y'. 88 CONTINUE-ENTRY VALUE 'Y'. 88 STOP-ENTRY VALUE 'N'. 05 WS-VALID-INPUT PIC X VALUE 'N'. 88 INPUT-IS-VALID VALUE 'Y'. 88 INPUT-IS-INVALID VALUE 'N'. 05 WS-RETRY-COUNT PIC 9(2) VALUE 0. 01 WS-PROMPT-MESSAGES. 05 WS-NAME-PROMPT PIC X(40) VALUE "Enter customer name (30 chars max): ". 05 WS-ID-PROMPT PIC X(40) VALUE "Enter customer ID (8 chars): ". 05 WS-BALANCE-PROMPT PIC X(40) VALUE "Enter account balance ($): ". 05 WS-PHONE-PROMPT PIC X(40) VALUE "Enter phone number (xxx-xxx-xxxx): ". 05 WS-EMAIL-PROMPT PIC X(40) VALUE "Enter email address: ". 05 WS-DATE-PROMPT PIC X(40) VALUE "Enter birth date (MM/DD/YYYY): ". 01 WS-VALIDATION-RESULTS. 05 WS-ERROR-MESSAGE PIC X(80). 05 WS-SUCCESS-COUNT PIC 9(3) VALUE 0. 05 WS-ERROR-COUNT PIC 9(3) VALUE 0. PROCEDURE DIVISION. MAIN-PROMPT-DEMO. DISPLAY "=== COBOL PROMPT DEMONSTRATION ===" DISPLAY "Interactive Customer Data Entry System" DISPLAY " " PERFORM COLLECT-CUSTOMER-DATA PERFORM DISPLAY-COLLECTED-DATA PERFORM DISPLAY-COLLECTION-SUMMARY DISPLAY "=== PROMPT DEMO COMPLETE ===" STOP RUN. COLLECT-CUSTOMER-DATA. DISPLAY "πŸ“‹ CUSTOMER DATA COLLECTION" DISPLAY "===========================" DISPLAY " " PERFORM COLLECT-CUSTOMER-NAME PERFORM COLLECT-CUSTOMER-ID PERFORM COLLECT-ACCOUNT-BALANCE PERFORM COLLECT-PHONE-NUMBER PERFORM COLLECT-EMAIL-ADDRESS PERFORM COLLECT-BIRTH-DATE. COLLECT-CUSTOMER-NAME. MOVE 0 TO WS-RETRY-COUNT MOVE 'Y' TO WS-CONTINUE-FLAG PERFORM UNTIL STOP-ENTRY OR INPUT-IS-VALID ADD 1 TO WS-RETRY-COUNT IF WS-RETRY-COUNT > 3 DISPLAY "❌ Too many invalid attempts for customer name" MOVE 'N' TO WS-CONTINUE-FLAG EXIT PERFORM END-IF DISPLAY WS-NAME-PROMPT WITH NO ADVANCING ACCEPT WS-CUSTOMER-NAME PERFORM VALIDATE-CUSTOMER-NAME IF INPUT-IS-INVALID DISPLAY "⚠️ " WS-ERROR-MESSAGE DISPLAY "Please try again..." DISPLAY " " ELSE DISPLAY "βœ… Customer name accepted: " WS-CUSTOMER-NAME ADD 1 TO WS-SUCCESS-COUNT END-IF END-PERFORM. VALIDATE-CUSTOMER-NAME. MOVE 'Y' TO WS-VALID-INPUT MOVE SPACES TO WS-ERROR-MESSAGE *> Check if name is empty IF WS-CUSTOMER-NAME = SPACES MOVE 'N' TO WS-VALID-INPUT MOVE "Customer name cannot be empty" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT EXIT PARAGRAPH END-IF *> Check for minimum length IF FUNCTION LENGTH(FUNCTION TRIM(WS-CUSTOMER-NAME)) < 2 MOVE 'N' TO WS-VALID-INPUT MOVE "Customer name must be at least 2 characters" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT EXIT PARAGRAPH END-IF *> Check for valid characters (letters and spaces only) IF WS-CUSTOMER-NAME NOT ALPHABETIC MOVE 'N' TO WS-VALID-INPUT MOVE "Customer name must contain only letters and spaces" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT END-IF. COLLECT-CUSTOMER-ID. MOVE 0 TO WS-RETRY-COUNT MOVE 'Y' TO WS-CONTINUE-FLAG IF STOP-ENTRY EXIT PARAGRAPH END-IF PERFORM UNTIL STOP-ENTRY OR INPUT-IS-VALID ADD 1 TO WS-RETRY-COUNT IF WS-RETRY-COUNT > 3 DISPLAY "❌ Too many invalid attempts for customer ID" MOVE 'N' TO WS-CONTINUE-FLAG EXIT PERFORM END-IF DISPLAY WS-ID-PROMPT WITH NO ADVANCING ACCEPT WS-CUSTOMER-ID PERFORM VALIDATE-CUSTOMER-ID IF INPUT-IS-INVALID DISPLAY "⚠️ " WS-ERROR-MESSAGE DISPLAY "Please try again..." DISPLAY " " ELSE DISPLAY "βœ… Customer ID accepted: " WS-CUSTOMER-ID ADD 1 TO WS-SUCCESS-COUNT END-IF END-PERFORM. VALIDATE-CUSTOMER-ID. MOVE 'Y' TO WS-VALID-INPUT MOVE SPACES TO WS-ERROR-MESSAGE *> Check exact length IF FUNCTION LENGTH(FUNCTION TRIM(WS-CUSTOMER-ID)) NOT = 8 MOVE 'N' TO WS-VALID-INPUT MOVE "Customer ID must be exactly 8 characters" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT EXIT PARAGRAPH END-IF *> Check for alphanumeric characters IF WS-CUSTOMER-ID NOT ALPHANUMERIC MOVE 'N' TO WS-VALID-INPUT MOVE "Customer ID must contain only letters and numbers" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT END-IF. COLLECT-ACCOUNT-BALANCE. MOVE 0 TO WS-RETRY-COUNT MOVE 'Y' TO WS-CONTINUE-FLAG IF STOP-ENTRY EXIT PARAGRAPH END-IF PERFORM UNTIL STOP-ENTRY OR INPUT-IS-VALID ADD 1 TO WS-RETRY-COUNT IF WS-RETRY-COUNT > 3 DISPLAY "❌ Too many invalid attempts for account balance" MOVE 'N' TO WS-CONTINUE-FLAG EXIT PERFORM END-IF DISPLAY WS-BALANCE-PROMPT WITH NO ADVANCING ACCEPT WS-ACCOUNT-BALANCE PERFORM VALIDATE-ACCOUNT-BALANCE IF INPUT-IS-INVALID DISPLAY "⚠️ " WS-ERROR-MESSAGE DISPLAY "Please try again..." DISPLAY " " ELSE DISPLAY "βœ… Account balance accepted: $" WS-ACCOUNT-BALANCE ADD 1 TO WS-SUCCESS-COUNT END-IF END-PERFORM. VALIDATE-ACCOUNT-BALANCE. MOVE 'Y' TO WS-VALID-INPUT MOVE SPACES TO WS-ERROR-MESSAGE *> Check for reasonable range IF WS-ACCOUNT-BALANCE < -99999.99 OR WS-ACCOUNT-BALANCE > 9999999.99 MOVE 'N' TO WS-VALID-INPUT MOVE "Account balance must be between -$99,999.99 and $9,999,999.99" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT END-IF. COLLECT-PHONE-NUMBER. MOVE 0 TO WS-RETRY-COUNT MOVE 'Y' TO WS-CONTINUE-FLAG IF STOP-ENTRY EXIT PARAGRAPH END-IF PERFORM UNTIL STOP-ENTRY OR INPUT-IS-VALID ADD 1 TO WS-RETRY-COUNT IF WS-RETRY-COUNT > 3 DISPLAY "❌ Too many invalid attempts for phone number" MOVE 'N' TO WS-CONTINUE-FLAG EXIT PERFORM END-IF DISPLAY WS-PHONE-PROMPT WITH NO ADVANCING ACCEPT WS-PHONE-NUMBER PERFORM VALIDATE-PHONE-NUMBER IF INPUT-IS-INVALID DISPLAY "⚠️ " WS-ERROR-MESSAGE DISPLAY "Please try again..." DISPLAY " " ELSE DISPLAY "βœ… Phone number accepted: " WS-PHONE-NUMBER ADD 1 TO WS-SUCCESS-COUNT END-IF END-PERFORM. VALIDATE-PHONE-NUMBER. MOVE 'Y' TO WS-VALID-INPUT MOVE SPACES TO WS-ERROR-MESSAGE *> Basic phone number validation (simplified) IF WS-PHONE-NUMBER = SPACES MOVE 'N' TO WS-VALID-INPUT MOVE "Phone number cannot be empty" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT EXIT PARAGRAPH END-IF *> Check minimum length IF FUNCTION LENGTH(FUNCTION TRIM(WS-PHONE-NUMBER)) < 10 MOVE 'N' TO WS-VALID-INPUT MOVE "Phone number must be at least 10 characters" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT END-IF. COLLECT-EMAIL-ADDRESS. MOVE 0 TO WS-RETRY-COUNT MOVE 'Y' TO WS-CONTINUE-FLAG IF STOP-ENTRY EXIT PARAGRAPH END-IF PERFORM UNTIL STOP-ENTRY OR INPUT-IS-VALID ADD 1 TO WS-RETRY-COUNT IF WS-RETRY-COUNT > 3 DISPLAY "❌ Too many invalid attempts for email address" MOVE 'N' TO WS-CONTINUE-FLAG EXIT PERFORM END-IF DISPLAY WS-EMAIL-PROMPT WITH NO ADVANCING ACCEPT WS-EMAIL-ADDRESS PERFORM VALIDATE-EMAIL-ADDRESS IF INPUT-IS-INVALID DISPLAY "⚠️ " WS-ERROR-MESSAGE DISPLAY "Please try again..." DISPLAY " " ELSE DISPLAY "βœ… Email address accepted: " WS-EMAIL-ADDRESS ADD 1 TO WS-SUCCESS-COUNT END-IF END-PERFORM. VALIDATE-EMAIL-ADDRESS. MOVE 'Y' TO WS-VALID-INPUT MOVE SPACES TO WS-ERROR-MESSAGE *> Basic email validation (simplified) IF WS-EMAIL-ADDRESS = SPACES MOVE 'N' TO WS-VALID-INPUT MOVE "Email address cannot be empty" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT EXIT PARAGRAPH END-IF *> Check for @ symbol IF FUNCTION REVERSE(WS-EMAIL-ADDRESS) NOT CONTAINS "@" MOVE 'N' TO WS-VALID-INPUT MOVE "Email address must contain @ symbol" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT END-IF. COLLECT-BIRTH-DATE. MOVE 0 TO WS-RETRY-COUNT MOVE 'Y' TO WS-CONTINUE-FLAG IF STOP-ENTRY EXIT PARAGRAPH END-IF PERFORM UNTIL STOP-ENTRY OR INPUT-IS-VALID ADD 1 TO WS-RETRY-COUNT IF WS-RETRY-COUNT > 3 DISPLAY "❌ Too many invalid attempts for birth date" MOVE 'N' TO WS-CONTINUE-FLAG EXIT PERFORM END-IF DISPLAY WS-DATE-PROMPT WITH NO ADVANCING ACCEPT WS-BIRTH-DATE PERFORM VALIDATE-BIRTH-DATE IF INPUT-IS-INVALID DISPLAY "⚠️ " WS-ERROR-MESSAGE DISPLAY "Please try again..." DISPLAY " " ELSE DISPLAY "βœ… Birth date accepted: " WS-BIRTH-DATE ADD 1 TO WS-SUCCESS-COUNT END-IF END-PERFORM. VALIDATE-BIRTH-DATE. MOVE 'Y' TO WS-VALID-INPUT MOVE SPACES TO WS-ERROR-MESSAGE *> Basic date format validation (MM/DD/YYYY) IF WS-BIRTH-DATE = SPACES MOVE 'N' TO WS-VALID-INPUT MOVE "Birth date cannot be empty" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT EXIT PARAGRAPH END-IF *> Check format length IF FUNCTION LENGTH(FUNCTION TRIM(WS-BIRTH-DATE)) NOT = 10 MOVE 'N' TO WS-VALID-INPUT MOVE "Birth date must be in MM/DD/YYYY format" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT EXIT PARAGRAPH END-IF *> Check for slash separators IF WS-BIRTH-DATE(3:1) NOT = "/" OR WS-BIRTH-DATE(6:1) NOT = "/" MOVE 'N' TO WS-VALID-INPUT MOVE "Birth date must use / separators (MM/DD/YYYY)" TO WS-ERROR-MESSAGE ADD 1 TO WS-ERROR-COUNT END-IF. DISPLAY-COLLECTED-DATA. DISPLAY " " DISPLAY "πŸ“Š COLLECTED CUSTOMER DATA" DISPLAY "==========================" IF CONTINUE-ENTRY DISPLAY "βœ… Data collection completed successfully" DISPLAY " " DISPLAY "Customer Information:" DISPLAY " Name: " WS-CUSTOMER-NAME DISPLAY " ID: " WS-CUSTOMER-ID DISPLAY " Balance: $" WS-ACCOUNT-BALANCE DISPLAY " Phone: " WS-PHONE-NUMBER DISPLAY " Email: " WS-EMAIL-ADDRESS DISPLAY " Birth Date: " WS-BIRTH-DATE ELSE DISPLAY "❌ Data collection was incomplete" DISPLAY "Some fields may contain invalid or missing data" END-IF. DISPLAY-COLLECTION-SUMMARY. DISPLAY " " DISPLAY "πŸ“ˆ COLLECTION STATISTICS" DISPLAY "========================" DISPLAY "Successful entries: " WS-SUCCESS-COUNT DISPLAY "Validation errors: " WS-ERROR-COUNT IF WS-SUCCESS-COUNT = 6 DISPLAY "βœ… All data fields collected successfully" ELSE DISPLAY "⚠️ Some data fields were not collected" END-IF.
User Interaction
Data Collection
Input Validation

Advanced PROMPT Techniques

Dynamic Prompting and Menu Systems
Advanced user interaction patterns with dynamic prompts
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
377
378
379
380
381
382
383
384
385
386
*> Advanced PROMPT techniques for menu systems and dynamic interaction IDENTIFICATION DIVISION. PROGRAM-ID. ADVANCED-PROMPT-SYSTEM. AUTHOR. Advanced Interface Team. REMARKS. Demonstrates advanced prompting techniques including dynamic menu systems, conditional prompts, and sophisticated user interaction patterns. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. IBM-Z15. OBJECT-COMPUTER. IBM-Z15. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-MENU-SYSTEM-DATA. 05 WS-CURRENT-MENU PIC X(20) VALUE "MAIN". 05 WS-MENU-CHOICE PIC X(1). 05 WS-SUBMENU-CHOICE PIC X(2). 05 WS-EXIT-SYSTEM PIC X VALUE 'N'. 88 EXIT-REQUESTED VALUE 'Y'. 88 CONTINUE-SYSTEM VALUE 'N'. 01 WS-DYNAMIC-PROMPTS. 05 WS-PROMPT-PREFIX PIC X(20). 05 WS-PROMPT-SUFFIX PIC X(30). 05 WS-FULL-PROMPT PIC X(80). 05 WS-USER-NAME PIC X(20) VALUE "Guest". 05 WS-SESSION-TIME PIC X(8). 01 WS-BUSINESS-FUNCTIONS. 05 WS-CUSTOMER-COUNT PIC 9(6) VALUE 0. 05 WS-ORDER-COUNT PIC 9(6) VALUE 0. 05 WS-PRODUCT-COUNT PIC 9(6) VALUE 0. 05 WS-TRANSACTION-COUNT PIC 9(6) VALUE 0. 01 WS-CONTEXT-DATA. 05 WS-CURRENT-CUSTOMER PIC X(8) VALUE SPACES. 05 WS-CURRENT-ORDER PIC X(10) VALUE SPACES. 05 WS-OPERATION-MODE PIC X(15) VALUE "INTERACTIVE". 05 WS-SECURITY-LEVEL PIC 9 VALUE 1. 01 WS-PROMPT-TEMPLATES. 05 WS-WELCOME-TEMPLATE PIC X(50) VALUE "Welcome {USER}, please select an option: ". 05 WS-CONTEXT-TEMPLATE PIC X(60) VALUE "{USER} [{CONTEXT}] - Choose action: ". 05 WS-ERROR-TEMPLATE PIC X(40) VALUE "Invalid choice. Please try again: ". 05 WS-CONFIRM-TEMPLATE PIC X(40) VALUE "Confirm {ACTION} (Y/N): ". PROCEDURE DIVISION. MAIN-ADVANCED-PROMPT-SYSTEM. DISPLAY "=== ADVANCED PROMPT SYSTEM ===" PERFORM INITIALIZE-PROMPT-SYSTEM PERFORM MAIN-MENU-LOOP PERFORM CLEANUP-PROMPT-SYSTEM DISPLAY "=== PROMPT SYSTEM COMPLETE ===" STOP RUN. INITIALIZE-PROMPT-SYSTEM. DISPLAY "πŸš€ Initializing Advanced Prompt System..." PERFORM GET-USER-CREDENTIALS PERFORM SET-SESSION-CONTEXT PERFORM LOAD-BUSINESS-DATA DISPLAY "βœ… Prompt system initialized for user: " WS-USER-NAME. GET-USER-CREDENTIALS. STRING "Enter your name (or press Enter for Guest): " DELIMITED BY SIZE INTO WS-FULL-PROMPT DISPLAY WS-FULL-PROMPT WITH NO ADVANCING ACCEPT WS-USER-NAME IF WS-USER-NAME = SPACES MOVE "Guest" TO WS-USER-NAME END-IF DISPLAY "πŸ‘‹ Hello, " WS-USER-NAME "!". SET-SESSION-CONTEXT. MOVE FUNCTION CURRENT-DATE(9:6) TO WS-SESSION-TIME MOVE "MAIN" TO WS-CURRENT-MENU DISPLAY "Session started at: " WS-SESSION-TIME DISPLAY "Security level: " WS-SECURITY-LEVEL. LOAD-BUSINESS-DATA. *> Simulate loading business data MOVE 1250 TO WS-CUSTOMER-COUNT MOVE 850 TO WS-ORDER-COUNT MOVE 450 TO WS-PRODUCT-COUNT MOVE 2100 TO WS-TRANSACTION-COUNT DISPLAY "πŸ“Š Business data loaded:" DISPLAY " Customers: " WS-CUSTOMER-COUNT DISPLAY " Orders: " WS-ORDER-COUNT DISPLAY " Products: " WS-PRODUCT-COUNT DISPLAY " Transactions: " WS-TRANSACTION-COUNT. MAIN-MENU-LOOP. PERFORM UNTIL EXIT-REQUESTED PERFORM DISPLAY-MAIN-MENU PERFORM GET-MENU-CHOICE PERFORM PROCESS-MENU-SELECTION END-PERFORM. DISPLAY-MAIN-MENU. DISPLAY " " DISPLAY "β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”" DISPLAY "β”‚ BUSINESS MANAGEMENT SYSTEM β”‚" DISPLAY "β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€" DISPLAY "β”‚ User: " WS-USER-NAME " β”‚" DISPLAY "β”‚ Time: " WS-SESSION-TIME " β”‚" DISPLAY "β”‚ Mode: " WS-OPERATION-MODE " β”‚" DISPLAY "β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€" DISPLAY "β”‚ 1. Customer Management β”‚" DISPLAY "β”‚ 2. Order Processing β”‚" DISPLAY "β”‚ 3. Product Catalog β”‚" DISPLAY "β”‚ 4. Transaction History β”‚" DISPLAY "β”‚ 5. Reports and Analytics β”‚" DISPLAY "β”‚ 6. System Administration β”‚" DISPLAY "β”‚ 9. Exit System β”‚" DISPLAY "β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜". GET-MENU-CHOICE. *> Create dynamic prompt with user name STRING WS-USER-NAME ", enter your choice (1-6, 9): " DELIMITED BY SPACE INTO WS-FULL-PROMPT DISPLAY WS-FULL-PROMPT WITH NO ADVANCING ACCEPT WS-MENU-CHOICE DISPLAY "Selected option: " WS-MENU-CHOICE. PROCESS-MENU-SELECTION. EVALUATE WS-MENU-CHOICE WHEN "1" PERFORM CUSTOMER-MANAGEMENT-MENU WHEN "2" PERFORM ORDER-PROCESSING-MENU WHEN "3" PERFORM PRODUCT-CATALOG-MENU WHEN "4" PERFORM TRANSACTION-HISTORY-MENU WHEN "5" PERFORM REPORTS-ANALYTICS-MENU WHEN "6" PERFORM SYSTEM-ADMINISTRATION-MENU WHEN "9" PERFORM CONFIRM-EXIT WHEN OTHER PERFORM HANDLE-INVALID-CHOICE END-EVALUATE. CUSTOMER-MANAGEMENT-MENU. DISPLAY " " DISPLAY "πŸ‘₯ CUSTOMER MANAGEMENT" DISPLAY "======================" MOVE "CUSTOMER" TO WS-CURRENT-MENU PERFORM DISPLAY-CUSTOMER-SUBMENU PERFORM GET-SUBMENU-CHOICE PERFORM PROCESS-CUSTOMER-SELECTION. DISPLAY-CUSTOMER-SUBMENU. DISPLAY " " DISPLAY "β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”" DISPLAY "β”‚ CUSTOMER OPERATIONS β”‚" DISPLAY "β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€" DISPLAY "β”‚ Current Customers: " WS-CUSTOMER-COUNT " β”‚" DISPLAY "β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€" DISPLAY "β”‚ 1. Add New Customer β”‚" DISPLAY "β”‚ 2. Update Customer Information β”‚" DISPLAY "β”‚ 3. Search Customer Records β”‚" DISPLAY "β”‚ 4. Customer Account Summary β”‚" DISPLAY "β”‚ 5. Customer Communication History β”‚" DISPLAY "β”‚ 8. Return to Main Menu β”‚" DISPLAY "β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜". GET-SUBMENU-CHOICE. *> Create contextual prompt STRING WS-USER-NAME " [" WS-CURRENT-MENU "] - Choose action (1-5, 8): " DELIMITED BY SIZE INTO WS-FULL-PROMPT DISPLAY WS-FULL-PROMPT WITH NO ADVANCING ACCEPT WS-SUBMENU-CHOICE. PROCESS-CUSTOMER-SELECTION. EVALUATE WS-SUBMENU-CHOICE WHEN "1" PERFORM ADD-NEW-CUSTOMER WHEN "2" PERFORM UPDATE-CUSTOMER-INFO WHEN "3" PERFORM SEARCH-CUSTOMER-RECORDS WHEN "4" PERFORM CUSTOMER-ACCOUNT-SUMMARY WHEN "5" PERFORM CUSTOMER-COMMUNICATION WHEN "8" MOVE "MAIN" TO WS-CURRENT-MENU WHEN OTHER PERFORM HANDLE-INVALID-SUBMENU-CHOICE END-EVALUATE. ADD-NEW-CUSTOMER. DISPLAY " " DISPLAY "βž• ADD NEW CUSTOMER" DISPLAY "===================" PERFORM GET-CUSTOMER-DETAILS PERFORM CONFIRM-CUSTOMER-CREATION IF WS-MENU-CHOICE = "Y" ADD 1 TO WS-CUSTOMER-COUNT DISPLAY "βœ… Customer added successfully" DISPLAY "New customer count: " WS-CUSTOMER-COUNT ELSE DISPLAY "❌ Customer creation cancelled" END-IF. GET-CUSTOMER-DETAILS. DISPLAY "Please enter customer details:" *> Dynamic prompts for customer data STRING "Enter Customer ID (8 chars) for " WS-USER-NAME ": " DELIMITED BY SIZE INTO WS-FULL-PROMPT DISPLAY WS-FULL-PROMPT WITH NO ADVANCING ACCEPT WS-CURRENT-CUSTOMER DISPLAY "Customer ID entered: " WS-CURRENT-CUSTOMER. CONFIRM-CUSTOMER-CREATION. STRING "Confirm customer creation (Y/N) " WS-USER-NAME ": " DELIMITED BY SIZE INTO WS-FULL-PROMPT DISPLAY WS-FULL-PROMPT WITH NO ADVANCING ACCEPT WS-MENU-CHOICE. UPDATE-CUSTOMER-INFO. DISPLAY " " DISPLAY "✏️ UPDATE CUSTOMER INFORMATION" DISPLAY "==============================" PERFORM GET-CUSTOMER-ID-TO-UPDATE PERFORM DISPLAY-UPDATE-CONFIRMATION DISPLAY "Customer update completed". GET-CUSTOMER-ID-TO-UPDATE. STRING "Enter Customer ID to update (current user: " WS-USER-NAME "): " DELIMITED BY SIZE INTO WS-FULL-PROMPT DISPLAY WS-FULL-PROMPT WITH NO ADVANCING ACCEPT WS-CURRENT-CUSTOMER. DISPLAY-UPDATE-CONFIRMATION. DISPLAY "Updating customer: " WS-CURRENT-CUSTOMER STRING "Confirm update for customer " WS-CURRENT-CUSTOMER " (Y/N): " DELIMITED BY SIZE INTO WS-FULL-PROMPT DISPLAY WS-FULL-PROMPT WITH NO ADVANCING ACCEPT WS-MENU-CHOICE. SEARCH-CUSTOMER-RECORDS. DISPLAY " " DISPLAY "πŸ” SEARCH CUSTOMER RECORDS" DISPLAY "==========================" DISPLAY "Search functionality would be implemented here" DISPLAY "Press Enter to continue..." ACCEPT WS-MENU-CHOICE. CUSTOMER-ACCOUNT-SUMMARY. DISPLAY " " DISPLAY "πŸ“Š CUSTOMER ACCOUNT SUMMARY" DISPLAY "===========================" DISPLAY "Account summary functionality would be implemented here" DISPLAY "Press Enter to continue..." ACCEPT WS-MENU-CHOICE. CUSTOMER-COMMUNICATION. DISPLAY " " DISPLAY "πŸ“ž CUSTOMER COMMUNICATION HISTORY" DISPLAY "=================================" DISPLAY "Communication history would be implemented here" DISPLAY "Press Enter to continue..." ACCEPT WS-MENU-CHOICE. ORDER-PROCESSING-MENU. DISPLAY " " DISPLAY "πŸ“¦ ORDER PROCESSING" DISPLAY "===================" DISPLAY "Order processing with " WS-ORDER-COUNT " orders available" DISPLAY "Press Enter to return to main menu..." ACCEPT WS-MENU-CHOICE. PRODUCT-CATALOG-MENU. DISPLAY " " DISPLAY "πŸ›οΈ PRODUCT CATALOG" DISPLAY "==================" DISPLAY "Product catalog with " WS-PRODUCT-COUNT " products available" DISPLAY "Press Enter to return to main menu..." ACCEPT WS-MENU-CHOICE. TRANSACTION-HISTORY-MENU. DISPLAY " " DISPLAY "πŸ’³ TRANSACTION HISTORY" DISPLAY "======================" DISPLAY "Transaction history with " WS-TRANSACTION-COUNT " transactions" DISPLAY "Press Enter to return to main menu..." ACCEPT WS-MENU-CHOICE. REPORTS-ANALYTICS-MENU. DISPLAY " " DISPLAY "πŸ“ˆ REPORTS AND ANALYTICS" DISPLAY "========================" DISPLAY "Reports and analytics functionality" DISPLAY "Press Enter to return to main menu..." ACCEPT WS-MENU-CHOICE. SYSTEM-ADMINISTRATION-MENU. IF WS-SECURITY-LEVEL < 3 DISPLAY " " DISPLAY "❌ ACCESS DENIED" DISPLAY "================" DISPLAY "Insufficient security level for system administration" DISPLAY "Your level: " WS-SECURITY-LEVEL " (Required: 3+)" DISPLAY "Press Enter to continue..." ACCEPT WS-MENU-CHOICE ELSE DISPLAY " " DISPLAY "βš™οΈ SYSTEM ADMINISTRATION" DISPLAY "=======================" DISPLAY "System administration functionality" DISPLAY "Press Enter to return to main menu..." ACCEPT WS-MENU-CHOICE END-IF. CONFIRM-EXIT. DISPLAY " " STRING "Are you sure you want to exit, " WS-USER-NAME "? (Y/N): " DELIMITED BY SIZE INTO WS-FULL-PROMPT DISPLAY WS-FULL-PROMPT WITH NO ADVANCING ACCEPT WS-MENU-CHOICE IF WS-MENU-CHOICE = "Y" OR WS-MENU-CHOICE = "y" SET EXIT-REQUESTED TO TRUE DISPLAY "πŸ‘‹ Goodbye, " WS-USER-NAME "!" ELSE DISPLAY "Continuing with the system..." END-IF. HANDLE-INVALID-CHOICE. DISPLAY " " DISPLAY "❌ Invalid menu choice: '" WS-MENU-CHOICE "'" DISPLAY "Please select a valid option (1-6, 9)" DISPLAY "Press Enter to continue..." ACCEPT WS-MENU-CHOICE. HANDLE-INVALID-SUBMENU-CHOICE. DISPLAY " " DISPLAY "❌ Invalid submenu choice: '" WS-SUBMENU-CHOICE "'" DISPLAY "Please select a valid option" DISPLAY "Press Enter to continue..." ACCEPT WS-MENU-CHOICE. CLEANUP-PROMPT-SYSTEM. DISPLAY " " DISPLAY "🧹 Cleaning up prompt system..." MOVE SPACES TO WS-USER-NAME MOVE SPACES TO WS-CURRENT-MENU MOVE SPACES TO WS-CURRENT-CUSTOMER DISPLAY "βœ… Prompt system cleanup completed".

PROMPT Features and Capabilities

Basic Prompting
  • β€’ Simple user prompts
  • β€’ Input guidance messages
  • β€’ WITH PROMPT clause
  • β€’ Clear user instructions
Dynamic Prompting
  • β€’ Context-sensitive prompts
  • β€’ Variable message content
  • β€’ User-specific messaging
  • β€’ Conditional prompt display
Menu Systems
  • β€’ Interactive menu interfaces
  • β€’ Hierarchical navigation
  • β€’ Choice validation
  • β€’ Error handling
Validation Integration
  • β€’ Input validation loops
  • β€’ Error message display
  • β€’ Retry mechanisms
  • β€’ Data quality assurance

Best Practices

Related Pages