The ALPHABETIC-LOWER class condition represents one of COBOL's most precise and essential character classification mechanisms, serving as the primary tool for validating lowercase alphabetic content, enforcing data quality standards, and implementing sophisticated character-based validation rules in business applications. Far more than a simple character test, the ALPHABETIC-LOWER class embodies COBOL's comprehensive approach to data validation by providing precise control over character classification, input validation, data quality assurance, and complex string analysis that enable applications to handle diverse data validation requirements while maintaining the accuracy and reliability characteristics that make COBOL ideal for enterprise data processing environments requiring rigorous character validation capabilities.
In enterprise computing environments, the ALPHABETIC-LOWER class serves as a critical foundation for advanced data validation, enabling developers to create sophisticated business applications that handle strict data entry requirements, implement character-based business rules, enforce naming conventions, and validate user input according to specific formatting standards. Its capabilities extend far beyond simple character checking to encompass sophisticated validation workflows, dynamic data classification, conditional processing logic, and integration with modern data quality systems that are essential for applications requiring comprehensive character validation and data integrity management capabilities.
123456789101112131415161718*> Basic ALPHABETIC-LOWER validation IF INPUT-FIELD IS ALPHABETIC-LOWER DISPLAY "Field contains only lowercase letters" ELSE DISPLAY "Field contains non-lowercase characters" END-IF. *> Negative test IF INPUT-FIELD IS NOT ALPHABETIC-LOWER DISPLAY "Field validation failed" PERFORM ERROR-HANDLING END-IF. *> Combined with other conditions IF INPUT-FIELD IS ALPHABETIC-LOWER AND LENGTH OF INPUT-FIELD > 3 PERFORM PROCESS-VALID-INPUT END-IF.
Basic ALPHABETIC-LOWER testing validates that fields contain only lowercase alphabetic characters.
12345678910111213141516171819202122232425*> User input validation ACCEPT USER-NAME FROM CONSOLE. IF USER-NAME IS NOT ALPHABETIC-LOWER DISPLAY "Error: Name must be lowercase letters only" PERFORM GET-USER-INPUT-AGAIN END-IF. *> Field-by-field validation PERFORM VARYING WS-INDEX FROM 1 BY 1 UNTIL WS-INDEX > 10 IF CUSTOMER-NAME(WS-INDEX:1) IS NOT ALPHABETIC-LOWER MOVE "Y" TO VALIDATION-ERROR-FLAG EXIT PERFORM END-IF END-PERFORM. *> Conditional processing based on character type EVALUATE TRUE WHEN INPUT-FIELD IS ALPHABETIC-LOWER PERFORM PROCESS-LOWERCASE-DATA WHEN INPUT-FIELD IS ALPHABETIC-UPPER PERFORM PROCESS-UPPERCASE-DATA WHEN OTHER PERFORM PROCESS-MIXED-DATA END-EVALUATE.
Data validation patterns use ALPHABETIC-LOWER for input validation and character classification.
12345678910111213141516171819202122232425*> Analyze each character in a string PERFORM VARYING CHAR-POSITION FROM 1 BY 1 UNTIL CHAR-POSITION > LENGTH OF INPUT-STRING MOVE INPUT-STRING(CHAR-POSITION:1) TO CURRENT-CHAR IF CURRENT-CHAR IS ALPHABETIC-LOWER ADD 1 TO LOWERCASE-COUNT ELSE IF CURRENT-CHAR IS ALPHABETIC-UPPER ADD 1 TO UPPERCASE-COUNT ELSE IF CURRENT-CHAR IS NUMERIC ADD 1 TO NUMERIC-COUNT ELSE ADD 1 TO SPECIAL-COUNT END-IF END-PERFORM. *> Find first non-lowercase character MOVE 0 TO ERROR-POSITION. PERFORM VARYING WS-POS FROM 1 BY 1 UNTIL WS-POS > FIELD-LENGTH OR ERROR-POSITION > 0 IF INPUT-DATA(WS-POS:1) IS NOT ALPHABETIC-LOWER MOVE WS-POS TO ERROR-POSITION END-IF END-PERFORM.
Character-by-character analysis enables detailed string validation and error reporting.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371IDENTIFICATION DIVISION. PROGRAM-ID. ALPHABETIC-LOWER-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. *> Input data for testing 01 TEST-DATA-TABLE. 05 TEST-ENTRIES OCCURS 15 TIMES. 10 TEST-STRING PIC X(20). 10 EXPECTED-RESULT PIC X(10). *> Validation results 01 VALIDATION-RESULTS. 05 TOTAL-TESTS PIC 9(3) VALUE 0. 05 PASSED-TESTS PIC 9(3) VALUE 0. 05 FAILED-TESTS PIC 9(3) VALUE 0. *> Character analysis counters 01 CHARACTER-ANALYSIS. 05 LOWERCASE-COUNT PIC 9(3) VALUE 0. 05 UPPERCASE-COUNT PIC 9(3) VALUE 0. 05 NUMERIC-COUNT PIC 9(3) VALUE 0. 05 SPECIAL-COUNT PIC 9(3) VALUE 0. 05 SPACE-COUNT PIC 9(3) VALUE 0. 05 TOTAL-CHARS PIC 9(3) VALUE 0. *> Detailed validation fields 01 DETAILED-VALIDATION. 05 FIELD-NAME PIC X(20). 05 FIELD-VALUE PIC X(50). 05 VALIDATION-STATUS PIC X(10). 05 ERROR-POSITION PIC 9(3) VALUE 0. 05 ERROR-CHARACTER PIC X(1). 05 VALIDATION-MESSAGE PIC X(100). *> Sample business data 01 CUSTOMER-DATA. 05 CUSTOMER-ID PIC X(10). 05 FIRST-NAME PIC X(20). 05 LAST-NAME PIC X(25). 05 MIDDLE-INITIAL PIC X(1). 05 DEPARTMENT-CODE PIC X(15). 05 USER-ID PIC X(12). *> Control variables 01 CONTROL-VARIABLES. 05 WS-COUNTER PIC 9(3) VALUE 0. 05 WS-INDEX PIC 9(3) VALUE 0. 05 WS-POSITION PIC 9(3) VALUE 0. 05 CURRENT-CHAR PIC X(1). 05 FIELD-LENGTH PIC 9(3) VALUE 0. *> Business rule flags 01 BUSINESS-RULES. 05 STRICT-VALIDATION PIC X(1) VALUE "Y". 88 STRICT-MODE VALUE "Y". 88 LENIENT-MODE VALUE "N". 05 ALLOW-SPACES PIC X(1) VALUE "N". 88 SPACES-ALLOWED VALUE "Y". 88 SPACES-NOT-ALLOWED VALUE "N". PROCEDURE DIVISION. MAIN-PROCESSING. DISPLAY "=== ALPHABETIC-LOWER Class Demonstration ===". DISPLAY " ". PERFORM INITIALIZE-TEST-DATA PERFORM DEMONSTRATE-BASIC-VALIDATION PERFORM DEMONSTRATE-CHARACTER-ANALYSIS PERFORM DEMONSTRATE-BUSINESS-VALIDATION PERFORM DEMONSTRATE-ERROR-REPORTING PERFORM DISPLAY-VALIDATION-SUMMARY DISPLAY " ". DISPLAY "ALPHABETIC-LOWER demonstration completed". STOP RUN. INITIALIZE-TEST-DATA. DISPLAY "1. Initializing Test Data:". DISPLAY " =======================". *> Initialize test strings with various character combinations MOVE "hello" TO TEST-STRING(1). MOVE "VALID" TO EXPECTED-RESULT(1). MOVE "world" TO TEST-STRING(2). MOVE "VALID" TO EXPECTED-RESULT(2). MOVE "Hello" TO TEST-STRING(3). MOVE "INVALID" TO EXPECTED-RESULT(3). MOVE "WORLD" TO TEST-STRING(4). MOVE "INVALID" TO EXPECTED-RESULT(4). MOVE "test123" TO TEST-STRING(5). MOVE "INVALID" TO EXPECTED-RESULT(5). MOVE "hello world" TO TEST-STRING(6). MOVE "INVALID" TO EXPECTED-RESULT(6). MOVE "abc" TO TEST-STRING(7). MOVE "VALID" TO EXPECTED-RESULT(7). MOVE "xyz" TO TEST-STRING(8). MOVE "VALID" TO EXPECTED-RESULT(8). MOVE "test!" TO TEST-STRING(9). MOVE "INVALID" TO EXPECTED-RESULT(9). MOVE "programming" TO TEST-STRING(10). MOVE "VALID" TO EXPECTED-RESULT(10). MOVE "data-entry" TO TEST-STRING(11). MOVE "INVALID" TO EXPECTED-RESULT(11). MOVE "validation" TO TEST-STRING(12). MOVE "VALID" TO EXPECTED-RESULT(12). MOVE "" TO TEST-STRING(13). MOVE "INVALID" TO EXPECTED-RESULT(13). MOVE "a" TO TEST-STRING(14). MOVE "VALID" TO EXPECTED-RESULT(14). MOVE "Test@Case" TO TEST-STRING(15). MOVE "INVALID" TO EXPECTED-RESULT(15). DISPLAY " Test data initialized with 15 test cases". DISPLAY " ". DEMONSTRATE-BASIC-VALIDATION. DISPLAY "2. Basic ALPHABETIC-LOWER Validation:". DISPLAY " ===================================". PERFORM VARYING WS-COUNTER FROM 1 BY 1 UNTIL WS-COUNTER > 15 MOVE TEST-STRING(WS-COUNTER) TO FIELD-VALUE IF FIELD-VALUE IS ALPHABETIC-LOWER MOVE "VALID" TO VALIDATION-STATUS ELSE MOVE "INVALID" TO VALIDATION-STATUS END-IF ADD 1 TO TOTAL-TESTS IF VALIDATION-STATUS = EXPECTED-RESULT(WS-COUNTER) ADD 1 TO PASSED-TESTS DISPLAY " Test " WS-COUNTER ": '" FIELD-VALUE "' - " VALIDATION-STATUS " (CORRECT)" ELSE ADD 1 TO FAILED-TESTS DISPLAY " Test " WS-COUNTER ": '" FIELD-VALUE "' - " VALIDATION-STATUS " (WRONG - Expected: " EXPECTED-RESULT(WS-COUNTER) ")" END-IF END-PERFORM. DISPLAY " ". DISPLAY " Basic validation completed". DISPLAY " Total tests: " TOTAL-TESTS. DISPLAY " Passed: " PASSED-TESTS. DISPLAY " Failed: " FAILED-TESTS. DISPLAY " ". DEMONSTRATE-CHARACTER-ANALYSIS. DISPLAY "3. Character Analysis:". DISPLAY " ===================". MOVE "Hello World 123!" TO FIELD-VALUE. MOVE 0 TO LOWERCASE-COUNT UPPERCASE-COUNT NUMERIC-COUNT SPECIAL-COUNT SPACE-COUNT. COMPUTE FIELD-LENGTH = FUNCTION LENGTH(FUNCTION TRIM(FIELD-VALUE)). DISPLAY " Analyzing string: '" FIELD-VALUE "'". PERFORM VARYING WS-POSITION FROM 1 BY 1 UNTIL WS-POSITION > FIELD-LENGTH MOVE FIELD-VALUE(WS-POSITION:1) TO CURRENT-CHAR EVALUATE TRUE WHEN CURRENT-CHAR IS ALPHABETIC-LOWER ADD 1 TO LOWERCASE-COUNT WHEN CURRENT-CHAR IS ALPHABETIC-UPPER ADD 1 TO UPPERCASE-COUNT WHEN CURRENT-CHAR IS NUMERIC ADD 1 TO NUMERIC-COUNT WHEN CURRENT-CHAR = SPACE ADD 1 TO SPACE-COUNT WHEN OTHER ADD 1 TO SPECIAL-COUNT END-EVALUATE END-PERFORM. COMPUTE TOTAL-CHARS = LOWERCASE-COUNT + UPPERCASE-COUNT + NUMERIC-COUNT + SPECIAL-COUNT + SPACE-COUNT. DISPLAY " Character breakdown:". DISPLAY " Lowercase letters: " LOWERCASE-COUNT. DISPLAY " Uppercase letters: " UPPERCASE-COUNT. DISPLAY " Numeric digits: " NUMERIC-COUNT. DISPLAY " Spaces: " SPACE-COUNT. DISPLAY " Special characters: " SPECIAL-COUNT. DISPLAY " Total characters: " TOTAL-CHARS. IF LOWERCASE-COUNT = TOTAL-CHARS DISPLAY " Result: String is ALL LOWERCASE" ELSE IF UPPERCASE-COUNT = TOTAL-CHARS DISPLAY " Result: String is ALL UPPERCASE" ELSE DISPLAY " Result: String is MIXED CASE" END-IF. DISPLAY " ". DEMONSTRATE-BUSINESS-VALIDATION. DISPLAY "4. Business Data Validation:". DISPLAY " ==========================". *> Initialize sample customer data MOVE "CUST001" TO CUSTOMER-ID. MOVE "john" TO FIRST-NAME. MOVE "smith" TO LAST-NAME. MOVE "a" TO MIDDLE-INITIAL. MOVE "engineering" TO DEPARTMENT-CODE. MOVE "johnsmith" TO USER-ID. DISPLAY " Customer Data Validation Rules:". DISPLAY " - First name must be lowercase letters only". DISPLAY " - Last name must be lowercase letters only". DISPLAY " - Middle initial must be lowercase letter". DISPLAY " - Department code must be lowercase letters". DISPLAY " - User ID must be lowercase letters only". DISPLAY " ". *> Validate first name MOVE "FIRST-NAME" TO FIELD-NAME. MOVE FIRST-NAME TO FIELD-VALUE. PERFORM VALIDATE-ALPHABETIC-LOWER-FIELD. *> Validate last name MOVE "LAST-NAME" TO FIELD-NAME. MOVE LAST-NAME TO FIELD-VALUE. PERFORM VALIDATE-ALPHABETIC-LOWER-FIELD. *> Validate middle initial MOVE "MIDDLE-INITIAL" TO FIELD-NAME. MOVE MIDDLE-INITIAL TO FIELD-VALUE. PERFORM VALIDATE-ALPHABETIC-LOWER-FIELD. *> Validate department code MOVE "DEPARTMENT-CODE" TO FIELD-NAME. MOVE DEPARTMENT-CODE TO FIELD-VALUE. PERFORM VALIDATE-ALPHABETIC-LOWER-FIELD. *> Validate user ID MOVE "USER-ID" TO FIELD-NAME. MOVE USER-ID TO FIELD-VALUE. PERFORM VALIDATE-ALPHABETIC-LOWER-FIELD. DISPLAY " ". VALIDATE-ALPHABETIC-LOWER-FIELD. MOVE 0 TO ERROR-POSITION. MOVE SPACES TO ERROR-CHARACTER VALIDATION-MESSAGE. IF FIELD-VALUE IS ALPHABETIC-LOWER MOVE "VALID" TO VALIDATION-STATUS MOVE "Field contains only lowercase letters" TO VALIDATION-MESSAGE ELSE MOVE "INVALID" TO VALIDATION-STATUS PERFORM FIND-FIRST-INVALID-CHARACTER STRING "Invalid character '" ERROR-CHARACTER "' at position " ERROR-POSITION DELIMITED BY SIZE INTO VALIDATION-MESSAGE END-IF. DISPLAY " " FIELD-NAME ": '" FIELD-VALUE "' - " VALIDATION-STATUS. DISPLAY " " VALIDATION-MESSAGE. FIND-FIRST-INVALID-CHARACTER. COMPUTE FIELD-LENGTH = FUNCTION LENGTH(FUNCTION TRIM(FIELD-VALUE)). PERFORM VARYING WS-POSITION FROM 1 BY 1 UNTIL WS-POSITION > FIELD-LENGTH OR ERROR-POSITION > 0 MOVE FIELD-VALUE(WS-POSITION:1) TO CURRENT-CHAR IF CURRENT-CHAR IS NOT ALPHABETIC-LOWER MOVE WS-POSITION TO ERROR-POSITION MOVE CURRENT-CHAR TO ERROR-CHARACTER END-IF END-PERFORM. DEMONSTRATE-ERROR-REPORTING. DISPLAY "5. Error Reporting and Detailed Analysis:". DISPLAY " =======================================". *> Test problematic inputs MOVE "Test123" TO FIELD-VALUE. DISPLAY " Analyzing: '" FIELD-VALUE "'". PERFORM DETAILED-CHARACTER-VALIDATION. MOVE "HELLO" TO FIELD-VALUE. DISPLAY " Analyzing: '" FIELD-VALUE "'". PERFORM DETAILED-CHARACTER-VALIDATION. MOVE "hello world" TO FIELD-VALUE. DISPLAY " Analyzing: '" FIELD-VALUE "'". PERFORM DETAILED-CHARACTER-VALIDATION. MOVE "data-entry" TO FIELD-VALUE. DISPLAY " Analyzing: '" FIELD-VALUE "'". PERFORM DETAILED-CHARACTER-VALIDATION. DISPLAY " ". DETAILED-CHARACTER-VALIDATION. COMPUTE FIELD-LENGTH = FUNCTION LENGTH(FUNCTION TRIM(FIELD-VALUE)). MOVE 0 TO WS-POSITION. IF FIELD-VALUE IS ALPHABETIC-LOWER DISPLAY " Status: VALID (all lowercase letters)" ELSE DISPLAY " Status: INVALID" DISPLAY " Issues found:". PERFORM VARYING WS-POSITION FROM 1 BY 1 UNTIL WS-POSITION > FIELD-LENGTH MOVE FIELD-VALUE(WS-POSITION:1) TO CURRENT-CHAR IF CURRENT-CHAR IS NOT ALPHABETIC-LOWER EVALUATE TRUE WHEN CURRENT-CHAR IS ALPHABETIC-UPPER DISPLAY " Position " WS-POSITION ": '" CURRENT-CHAR "' is uppercase" WHEN CURRENT-CHAR IS NUMERIC DISPLAY " Position " WS-POSITION ": '" CURRENT-CHAR "' is numeric" WHEN CURRENT-CHAR = SPACE DISPLAY " Position " WS-POSITION ": space character" WHEN OTHER DISPLAY " Position " WS-POSITION ": '" CURRENT-CHAR "' is special character" END-EVALUATE END-IF END-PERFORM END-IF. DISPLAY-VALIDATION-SUMMARY. DISPLAY "6. Validation Summary:". DISPLAY " ===================". DISPLAY " ALPHABETIC-LOWER class characteristics:". DISPLAY " - Tests for lowercase letters a-z only". DISPLAY " - Returns TRUE only if ALL characters are lowercase". DISPLAY " - Spaces, numbers, and special chars make it FALSE". DISPLAY " - Empty fields return FALSE". DISPLAY " - Case-sensitive validation". DISPLAY " ". DISPLAY " Common use cases:". DISPLAY " - User input validation". DISPLAY " - Data quality checking". DISPLAY " - Business rule enforcement". DISPLAY " - Character classification". DISPLAY " - Format validation".