HIGH-VALUE and HIGH-VALUES represent essential figurative constants within COBOL programming environments, serving as the fundamental specification for maximum character values in data processing operations that require boundary testing, sorting algorithms, data validation routines, and comparison logic. These constants embody the highest possible character value within the character set being utilized, providing sophisticated data manipulation capabilities for establishing upper limits, creating sentinel values, implementing table search algorithms, and supporting comprehensive business logic that demands precise boundary conditions, sorting operations, and data validation mechanisms across diverse enterprise applications requiring robust data handling, predictable comparison results, and maintainable code structures with consistent maximum value representations that ensure reliable program behavior in complex data processing scenarios involving character manipulation, database operations, and file processing tasks.
123456789101112131415161718192021222324252627282930313233343536*> Basic HIGH-VALUE syntax MOVE HIGH-VALUE TO data-item MOVE HIGH-VALUES TO data-item *> Character set representation *> ASCII: X'FF' (255) *> EBCDIC: X'FF' (255) *> Usage examples 01 WS-DATA-FIELDS. 05 WS-NAME PIC X(25). 05 WS-CODE PIC X(10). 05 WS-SEARCH-KEY PIC X(15). 05 WS-TABLE-ENTRY PIC X(20). *> Initialize to highest values MOVE HIGH-VALUE TO WS-NAME MOVE HIGH-VALUES TO WS-CODE MOVE HIGH-VALUE TO WS-SEARCH-KEY *> Comparison operations IF WS-NAME = HIGH-VALUE DISPLAY "Name field contains maximum value" END-IF IF WS-CODE NOT = HIGH-VALUES DISPLAY "Code field has valid data" END-IF *> Table initialization 01 SORT-TABLE. 05 SORT-ENTRY OCCURS 100 TIMES PIC X(20). PERFORM VARYING I FROM 1 BY 1 UNTIL I > 100 MOVE HIGH-VALUE TO SORT-ENTRY(I) END-PERFORM.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174IDENTIFICATION DIVISION. PROGRAM-ID. HIGH-VALUE-EXAMPLES. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-VARIABLES. 05 WS-INPUT-FIELD PIC X(20). 05 WS-COMPARISON-FIELD PIC X(20). 05 WS-COUNTER PIC 9(3). 05 WS-FOUND-FLAG PIC X VALUE 'N'. 01 WS-EMPLOYEE-TABLE. 05 WS-EMPLOYEE OCCURS 50 TIMES. 10 WS-EMP-NAME PIC X(25). 10 WS-EMP-ID PIC 9(6). 10 WS-EMP-SALARY PIC 9(6)V99. 01 WS-SEARCH-TABLE. 05 WS-SEARCH-ENTRY OCCURS 100 TIMES PIC X(15). PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM DEMONSTRATE-HIGH-VALUE-USAGE PERFORM DEMONSTRATE-TABLE-OPERATIONS PERFORM DEMONSTRATE-COMPARISON-LOGIC PERFORM DEMONSTRATE-SORTING-APPLICATIONS STOP RUN. DEMONSTRATE-HIGH-VALUE-USAGE. DISPLAY "=== HIGH-VALUE BASIC USAGE ===" *> Initialize field to HIGH-VALUE MOVE HIGH-VALUE TO WS-INPUT-FIELD DISPLAY "Field initialized to HIGH-VALUE: " WS-INPUT-FIELD *> Check if field contains HIGH-VALUE IF WS-INPUT-FIELD = HIGH-VALUE DISPLAY "Field contains HIGH-VALUE" ELSE DISPLAY "Field does not contain HIGH-VALUE" END-IF *> Move regular data and test MOVE "JOHN SMITH" TO WS-INPUT-FIELD IF WS-INPUT-FIELD = HIGH-VALUE DISPLAY "Field still contains HIGH-VALUE" ELSE DISPLAY "Field now contains: " WS-INPUT-FIELD END-IF DISPLAY SPACES. DEMONSTRATE-TABLE-OPERATIONS. DISPLAY "=== TABLE INITIALIZATION WITH HIGH-VALUE ===" *> Initialize entire table to HIGH-VALUE PERFORM VARYING WS-COUNTER FROM 1 BY 1 UNTIL WS-COUNTER > 100 MOVE HIGH-VALUE TO WS-SEARCH-ENTRY(WS-COUNTER) END-PERFORM DISPLAY "Table initialized with HIGH-VALUE entries" *> Add some real data MOVE "APPLE" TO WS-SEARCH-ENTRY(1) MOVE "BANANA" TO WS-SEARCH-ENTRY(2) MOVE "CHERRY" TO WS-SEARCH-ENTRY(3) MOVE "DATE" TO WS-SEARCH-ENTRY(4) *> Find first HIGH-VALUE entry (indicates end of data) PERFORM VARYING WS-COUNTER FROM 1 BY 1 UNTIL WS-COUNTER > 100 OR WS-SEARCH-ENTRY(WS-COUNTER) = HIGH-VALUE END-PERFORM SUBTRACT 1 FROM WS-COUNTER DISPLAY "Number of actual entries: " WS-COUNTER DISPLAY SPACES. DEMONSTRATE-COMPARISON-LOGIC. DISPLAY "=== COMPARISON OPERATIONS WITH HIGH-VALUE ===" *> Demonstrate comparison behaviors MOVE "ZEBRA" TO WS-COMPARISON-FIELD IF WS-COMPARISON-FIELD < HIGH-VALUE DISPLAY "'" WS-COMPARISON-FIELD "' is less than HIGH-VALUE" ELSE DISPLAY "'" WS-COMPARISON-FIELD "' is not less than HIGH-VALUE" END-IF MOVE HIGH-VALUE TO WS-COMPARISON-FIELD IF WS-COMPARISON-FIELD = HIGH-VALUE DISPLAY "Field equals HIGH-VALUE" END-IF IF WS-COMPARISON-FIELD > "ZZZZZ" DISPLAY "HIGH-VALUE is greater than 'ZZZZZ'" ELSE DISPLAY "HIGH-VALUE is not greater than 'ZZZZZ'" END-IF DISPLAY SPACES. DEMONSTRATE-SORTING-APPLICATIONS. DISPLAY "=== SORTING WITH HIGH-VALUE ===" *> Initialize employee table MOVE "SMITH, JOHN" TO WS-EMP-NAME(1) MOVE "JONES, MARY" TO WS-EMP-NAME(2) MOVE "WILLIAMS, BOB" TO WS-EMP-NAME(3) MOVE "BROWN, SUSAN" TO WS-EMP-NAME(4) *> Fill remaining entries with HIGH-VALUE PERFORM VARYING WS-COUNTER FROM 5 BY 1 UNTIL WS-COUNTER > 50 MOVE HIGH-VALUE TO WS-EMP-NAME(WS-COUNTER) END-PERFORM DISPLAY "Employees in table:" PERFORM VARYING WS-COUNTER FROM 1 BY 1 UNTIL WS-COUNTER > 50 OR WS-EMP-NAME(WS-COUNTER) = HIGH-VALUE DISPLAY " " WS-COUNTER ": " WS-EMP-NAME(WS-COUNTER) END-PERFORM DISPLAY SPACES. *> Demonstrate HIGH-VALUE in data validation VALIDATE-INPUT-DATA. DISPLAY "=== DATA VALIDATION WITH HIGH-VALUE ===" MOVE "VALID DATA" TO WS-INPUT-FIELD PERFORM CHECK-FIELD-VALIDITY MOVE HIGH-VALUE TO WS-INPUT-FIELD PERFORM CHECK-FIELD-VALIDITY MOVE SPACES TO WS-INPUT-FIELD PERFORM CHECK-FIELD-VALIDITY. CHECK-FIELD-VALIDITY. IF WS-INPUT-FIELD = HIGH-VALUE DISPLAY "Field contains HIGH-VALUE (uninitialized or max)" ELSE IF WS-INPUT-FIELD = SPACES DISPLAY "Field contains spaces (empty)" ELSE DISPLAY "Field contains valid data: " WS-INPUT-FIELD END-IF. *> Demonstrate boundary testing BOUNDARY-TESTING. DISPLAY "=== BOUNDARY TESTING WITH HIGH-VALUE ===" *> Test various character comparisons MOVE "A" TO WS-COMPARISON-FIELD PERFORM TEST-CHARACTER-BOUNDARY MOVE "Z" TO WS-COMPARISON-FIELD PERFORM TEST-CHARACTER-BOUNDARY MOVE "9" TO WS-COMPARISON-FIELD PERFORM TEST-CHARACTER-BOUNDARY MOVE HIGH-VALUE TO WS-COMPARISON-FIELD PERFORM TEST-CHARACTER-BOUNDARY. TEST-CHARACTER-BOUNDARY. IF WS-COMPARISON-FIELD = HIGH-VALUE DISPLAY "Character is at maximum boundary" ELSE DISPLAY "Character '" WS-COMPARISON-FIELD(1:1) "' is below maximum boundary" END-IF.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248IDENTIFICATION DIVISION. PROGRAM-ID. ADVANCED-HIGH-VALUE-PATTERNS. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-SEARCH-CONTROL. 05 WS-TABLE-SIZE PIC 9(4) VALUE 1000. 05 WS-ENTRIES-LOADED PIC 9(4) VALUE 0. 05 WS-SEARCH-KEY PIC X(20). 05 WS-FOUND-INDEX PIC 9(4) VALUE 0. 01 WS-CUSTOMER-TABLE. 05 WS-CUSTOMER OCCURS 1000 TIMES INDEXED BY CUST-IDX. 10 WS-CUST-ID PIC X(10). 10 WS-CUST-NAME PIC X(30). 10 WS-CUST-STATUS PIC X. 01 WS-SORT-ARRAY. 05 WS-SORT-ITEM OCCURS 500 TIMES INDEXED BY SORT-IDX. 10 WS-SORT-KEY PIC X(15). 10 WS-SORT-DATA PIC X(50). 01 WS-VALIDATION-FIELDS. 05 WS-MIN-VALUE PIC X(20). 05 WS-MAX-VALUE PIC X(20). 05 WS-TEST-VALUE PIC X(20). 05 WS-VALIDATION-RESULT PIC X(10). PROCEDURE DIVISION. ADVANCED-PROCESSING. PERFORM INITIALIZE-CUSTOMER-TABLE PERFORM DEMONSTRATE-BINARY-SEARCH PERFORM DEMONSTRATE-MERGE-OPERATIONS PERFORM DEMONSTRATE-RANGE-VALIDATION PERFORM DEMONSTRATE-DYNAMIC-SORTING STOP RUN. INITIALIZE-CUSTOMER-TABLE. DISPLAY "=== ADVANCED TABLE INITIALIZATION ===" *> Initialize all entries to HIGH-VALUE for sentinel values PERFORM VARYING CUST-IDX FROM 1 BY 1 UNTIL CUST-IDX > 1000 MOVE HIGH-VALUE TO WS-CUST-ID(CUST-IDX) MOVE HIGH-VALUE TO WS-CUST-NAME(CUST-IDX) MOVE HIGH-VALUE TO WS-CUST-STATUS(CUST-IDX) END-PERFORM *> Load sample data (in sorted order) MOVE "CUST000001" TO WS-CUST-ID(1) MOVE "ANDERSON, JAMES" TO WS-CUST-NAME(1) MOVE "A" TO WS-CUST-STATUS(1) MOVE "CUST000015" TO WS-CUST-ID(2) MOVE "BROWN, PATRICIA" TO WS-CUST-NAME(2) MOVE "A" TO WS-CUST-STATUS(2) MOVE "CUST000027" TO WS-CUST-ID(3) MOVE "DAVIS, MICHAEL" TO WS-CUST-NAME(3) MOVE "I" TO WS-CUST-STATUS(3) MOVE "CUST000043" TO WS-CUST-ID(4) MOVE "JOHNSON, LINDA" TO WS-CUST-NAME(4) MOVE "A" TO WS-CUST-STATUS(4) MOVE "CUST000089" TO WS-CUST-ID(5) MOVE "WILLIAMS, ROBERT" TO WS-CUST-NAME(5) MOVE "A" TO WS-CUST-STATUS(5) MOVE 5 TO WS-ENTRIES-LOADED DISPLAY "Customer table initialized with " WS-ENTRIES-LOADED " entries". DEMONSTRATE-BINARY-SEARCH. DISPLAY "=== BINARY SEARCH WITH HIGH-VALUE SENTINELS ===" MOVE "CUST000027" TO WS-SEARCH-KEY PERFORM BINARY-SEARCH-CUSTOMER MOVE "CUST000999" TO WS-SEARCH-KEY PERFORM BINARY-SEARCH-CUSTOMER. BINARY-SEARCH-CUSTOMER. MOVE 0 TO WS-FOUND-INDEX SET CUST-IDX TO 1 *> Binary search with HIGH-VALUE boundary checking PERFORM VARYING CUST-IDX FROM 1 BY 1 UNTIL CUST-IDX > WS-ENTRIES-LOADED OR WS-CUST-ID(CUST-IDX) = HIGH-VALUE OR WS-CUST-ID(CUST-IDX) = WS-SEARCH-KEY OR WS-CUST-ID(CUST-IDX) > WS-SEARCH-KEY END-PERFORM IF CUST-IDX <= WS-ENTRIES-LOADED AND WS-CUST-ID(CUST-IDX) = WS-SEARCH-KEY MOVE CUST-IDX TO WS-FOUND-INDEX DISPLAY "Found customer: " WS-SEARCH-KEY " at position " WS-FOUND-INDEX DISPLAY " Name: " WS-CUST-NAME(CUST-IDX) ELSE DISPLAY "Customer " WS-SEARCH-KEY " not found" END-IF. DEMONSTRATE-MERGE-OPERATIONS. DISPLAY "=== MERGE OPERATIONS WITH HIGH-VALUE ===" *> Initialize sort array with HIGH-VALUE PERFORM VARYING SORT-IDX FROM 1 BY 1 UNTIL SORT-IDX > 500 MOVE HIGH-VALUE TO WS-SORT-KEY(SORT-IDX) MOVE HIGH-VALUE TO WS-SORT-DATA(SORT-IDX) END-PERFORM *> Add data from customer table to sort array PERFORM VARYING CUST-IDX FROM 1 BY 1 UNTIL CUST-IDX > WS-ENTRIES-LOADED OR WS-CUST-ID(CUST-IDX) = HIGH-VALUE MOVE WS-CUST-NAME(CUST-IDX) TO WS-SORT-KEY(CUST-IDX) STRING "ID:" WS-CUST-ID(CUST-IDX) " STATUS:" WS-CUST-STATUS(CUST-IDX) DELIMITED BY SIZE INTO WS-SORT-DATA(CUST-IDX) END-PERFORM *> Add additional data for merge SET SORT-IDX TO 6 MOVE "GARCIA, MARIA" TO WS-SORT-KEY(SORT-IDX) MOVE "ID:CUST000055 STATUS:A" TO WS-SORT-DATA(SORT-IDX) SET SORT-IDX TO 7 MOVE "MARTINEZ, CARLOS" TO WS-SORT-KEY(SORT-IDX) MOVE "ID:CUST000067 STATUS:A" TO WS-SORT-DATA(SORT-IDX) DISPLAY "Merge operation completed with HIGH-VALUE boundaries". DEMONSTRATE-RANGE-VALIDATION. DISPLAY "=== RANGE VALIDATION WITH HIGH-VALUE ===" *> Set up validation range MOVE LOW-VALUE TO WS-MIN-VALUE MOVE HIGH-VALUE TO WS-MAX-VALUE *> Test various values MOVE "MIDDLE VALUE" TO WS-TEST-VALUE PERFORM VALIDATE-RANGE MOVE HIGH-VALUE TO WS-TEST-VALUE PERFORM VALIDATE-RANGE MOVE LOW-VALUE TO WS-TEST-VALUE PERFORM VALIDATE-RANGE. VALIDATE-RANGE. IF WS-TEST-VALUE >= WS-MIN-VALUE AND WS-TEST-VALUE <= WS-MAX-VALUE IF WS-TEST-VALUE = HIGH-VALUE MOVE "MAX-BOUND" TO WS-VALIDATION-RESULT ELSE IF WS-TEST-VALUE = LOW-VALUE MOVE "MIN-BOUND" TO WS-VALIDATION-RESULT ELSE MOVE "VALID" TO WS-VALIDATION-RESULT END-IF ELSE MOVE "INVALID" TO WS-VALIDATION-RESULT END-IF DISPLAY "Validation result: " WS-VALIDATION-RESULT. DEMONSTRATE-DYNAMIC-SORTING. DISPLAY "=== DYNAMIC SORTING WITH HIGH-VALUE MARKERS ===" *> Implement bubble sort with HIGH-VALUE awareness PERFORM BUBBLE-SORT-WITH-HIGH-VALUE DISPLAY "Sorted customer names:" PERFORM VARYING SORT-IDX FROM 1 BY 1 UNTIL SORT-IDX > 10 OR WS-SORT-KEY(SORT-IDX) = HIGH-VALUE DISPLAY " " SORT-IDX ": " WS-SORT-KEY(SORT-IDX) END-PERFORM. BUBBLE-SORT-WITH-HIGH-VALUE. *> Simple bubble sort that respects HIGH-VALUE boundaries PERFORM VARYING I FROM 1 BY 1 UNTIL I > 9 PERFORM VARYING J FROM 1 BY 1 UNTIL J > (10 - I) *> Stop if we hit HIGH-VALUE (end of data) IF WS-SORT-KEY(J) = HIGH-VALUE OR WS-SORT-KEY(J + 1) = HIGH-VALUE EXIT PERFORM END-IF IF WS-SORT-KEY(J) > WS-SORT-KEY(J + 1) PERFORM SWAP-SORT-ENTRIES END-IF END-PERFORM END-PERFORM. SWAP-SORT-ENTRIES. MOVE WS-SORT-KEY(J) TO TEMP-KEY MOVE WS-SORT-DATA(J) TO TEMP-DATA MOVE WS-SORT-KEY(J + 1) TO WS-SORT-KEY(J) MOVE WS-SORT-DATA(J + 1) TO WS-SORT-DATA(J) MOVE TEMP-KEY TO WS-SORT-KEY(J + 1) MOVE TEMP-DATA TO WS-SORT-DATA(J + 1). *> Advanced HIGH-VALUE utility functions CHECK-TABLE-BOUNDARIES. *> Check if table has reached HIGH-VALUE boundary SET CUST-IDX TO 1 PERFORM UNTIL CUST-IDX > WS-TABLE-SIZE OR WS-CUST-ID(CUST-IDX) = HIGH-VALUE SET CUST-IDX UP BY 1 END-PERFORM IF CUST-IDX <= WS-TABLE-SIZE DISPLAY "Table has available space at position " CUST-IDX ELSE DISPLAY "Table is full (no HIGH-VALUE markers found)" END-IF. COMPRESS-TABLE. *> Remove HIGH-VALUE entries from middle of table MOVE 1 TO WRITE-INDEX PERFORM VARYING READ-INDEX FROM 1 BY 1 UNTIL READ-INDEX > WS-TABLE-SIZE IF WS-CUST-ID(READ-INDEX) NOT = HIGH-VALUE IF WRITE-INDEX NOT = READ-INDEX MOVE WS-CUSTOMER(READ-INDEX) TO WS-CUSTOMER(WRITE-INDEX) END-IF ADD 1 TO WRITE-INDEX END-IF END-PERFORM *> Fill remaining positions with HIGH-VALUE PERFORM VARYING CUST-IDX FROM WRITE-INDEX BY 1 UNTIL CUST-IDX > WS-TABLE-SIZE MOVE HIGH-VALUE TO WS-CUST-ID(CUST-IDX) MOVE HIGH-VALUE TO WS-CUST-NAME(CUST-IDX) MOVE HIGH-VALUE TO WS-CUST-STATUS(CUST-IDX) END-PERFORM SUBTRACT 1 FROM WRITE-INDEX MOVE WRITE-INDEX TO WS-ENTRIES-LOADED DISPLAY "Table compressed. Active entries: " WS-ENTRIES-LOADED.
1234567891011121314151617181920212223242526272829*> Initialize a product table with HIGH-VALUE sentinels 01 PRODUCT-TABLE. 05 PRODUCT-ENTRY OCCURS 50 TIMES. 10 PRODUCT-CODE PIC X(10). 10 PRODUCT-NAME PIC X(25). 10 PRODUCT-PRICE PIC 9(5)V99. *> Initialize table PERFORM VARYING I FROM 1 BY 1 UNTIL I > 50 MOVE HIGH-VALUE TO PRODUCT-CODE(I) MOVE HIGH-VALUE TO PRODUCT-NAME(I) MOVE 0 TO PRODUCT-PRICE(I) END-PERFORM. *> Add sample data MOVE "PROD001" TO PRODUCT-CODE(1) MOVE "LAPTOP COMPUTER" TO PRODUCT-NAME(1) MOVE 1299.99 TO PRODUCT-PRICE(1) MOVE "PROD002" TO PRODUCT-CODE(2) MOVE "WIRELESS MOUSE" TO PRODUCT-NAME(2) MOVE 29.99 TO PRODUCT-PRICE(2) *> Search for end of data PERFORM VARYING I FROM 1 BY 1 UNTIL I > 50 OR PRODUCT-CODE(I) = HIGH-VALUE END-PERFORM. SUBTRACT 1 FROM I. DISPLAY "Number of products: " I.
12345678910111213141516171819202122*> Validate input against HIGH-VALUE boundary 01 INPUT-VALIDATION. 05 USER-INPUT PIC X(20). 05 VALIDATION-FLAG PIC X. PROCEDURE DIVISION. VALIDATE-INPUT. ACCEPT USER-INPUT IF USER-INPUT = HIGH-VALUE DISPLAY "Error: Input contains maximum value" MOVE 'N' TO VALIDATION-FLAG ELSE IF USER-INPUT = LOW-VALUE DISPLAY "Error: Input contains minimum value" MOVE 'N' TO VALIDATION-FLAG ELSE IF USER-INPUT = SPACES DISPLAY "Error: Input is empty" MOVE 'N' TO VALIDATION-FLAG ELSE DISPLAY "Input is valid: " USER-INPUT MOVE 'Y' TO VALIDATION-FLAG END-IF.
In ASCII systems, HIGH-VALUE typically represents character 255 (X'FF')
12345*> ASCII HIGH-VALUE MOVE HIGH-VALUE TO WS-FIELD *> Sets to X'FF' IF WS-FIELD = X'FF' DISPLAY "Field contains ASCII HIGH-VALUE" END-IF
In EBCDIC systems, HIGH-VALUE represents character 255 (X'FF')
12345*> EBCDIC HIGH-VALUE MOVE HIGH-VALUES TO WS-FIELD *> Sets to X'FF' IF WS-FIELD = X'FF' DISPLAY "Field contains EBCDIC HIGH-VALUE" END-IF
What is the primary purpose of HIGH-VALUE in COBOL programming?
Answer: HIGH-VALUE represents the highest possible character value in the character set, used for boundary testing, table initialization, data validation, and establishing upper limits in comparisons and sorting operations.
How can HIGH-VALUE be used in table processing?
Answer: HIGH-VALUE can initialize table entries as sentinels, mark the end of valid data, facilitate binary searches, and serve as boundary markers for sorting and merging operations.
How does HIGH-VALUE compare to other character values?
Answer: HIGH-VALUE is greater than all other character values in the character set. Any comparison with HIGH-VALUE will show that HIGH-VALUE is the maximum possible value.
123456*> Use HIGH-VALUE as table sentinel PERFORM VARYING I FROM 1 BY 1 UNTIL I > TABLE-SIZE OR TABLE-ENTRY(I) = HIGH-VALUE PROCESS TABLE-ENTRY(I) END-PERFORM.
12345678*> Validate against maximum value IF INPUT-VALUE = HIGH-VALUE DISPLAY "Error: Maximum value detected" ELSE IF INPUT-VALUE > VALID-MAX DISPLAY "Error: Value exceeds maximum" ELSE PERFORM PROCESS-VALID-INPUT END-IF.