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.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425*> 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.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386*> 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".