The ALPHABETIC class represents one of COBOL's most fundamental and essential character validation mechanisms, serving as the cornerstone for data classification, input validation, and advanced text processing in business applications. Far more than a simple character test, the ALPHABETIC class embodies COBOL's comprehensive approach to data integrity by providing precise control over character validation, text classification, data quality assurance, and sophisticated input processing that enable applications to handle diverse textual data while maintaining the accuracy and reliability characteristics that make COBOL ideal for enterprise data processing environments requiring strict data validation.
In enterprise computing environments, the ALPHABETIC class serves as a critical component for advanced data validation, enabling developers to create sophisticated business applications that handle complex text processing requirements, multi-language character sets, data quality validation, and international text standards. Its capabilities extend far beyond simple character checking to encompass sophisticated validation patterns, locale-aware processing, data cleansing operations, and integration with modern text processing systems that are essential for applications requiring comprehensive character validation and sophisticated text processing capabilities.
The ALPHABETIC class implements a comprehensive character validation and classification architecture that abstracts the complex relationship between character data and business validation requirements. This architecture encompasses multiple validation modes, character classification strategies, locale-aware processing algorithms, and data quality mechanisms that work together to provide flexible, efficient, and reliable character validation capabilities suitable for production business applications that must handle diverse textual data requirements and validation standards.
At its core, the ALPHABETIC class manages the intricate interaction between character data and validation logic by providing standardized mechanisms for character classification, data quality assessment, and validation rule enforcement. This includes sophisticated character analysis algorithms that handle different character sets and encodings, automatic validation optimization, and quality assurance mechanisms that ensure accurate data classification while maintaining optimal performance characteristics.
The architectural design of the ALPHABETIC class reflects COBOL's emphasis on data integrity and maintainability while providing the flexibility necessary for advanced character validation. Unlike simple character checking mechanisms in other languages, the ALPHABETIC class provides comprehensive validation control, locale-aware processing, and data quality features that enable developers to create sophisticated text processing applications while maintaining the reliability and accuracy characteristics that are essential for business-critical data validation.
In enterprise environments, the ALPHABETIC class enables sophisticated text processing patterns that handle the complex requirements of business applications including multi-language text validation, international character processing, data quality assurance, and integration with modern content management systems. These patterns must balance validation accuracy with processing performance while supporting the scalability and reliability requirements of modern business systems.
Modern enterprise applications implement layered text validation architectures where ALPHABETIC classes work in conjunction with data quality engines, content processing systems, and distributed validation frameworks. This layered approach enables applications to optimize character validation across different data sources while maintaining consistent validation characteristics and providing comprehensive text processing capabilities that adapt to varying business requirements and international standards.
The integration of ALPHABETIC classes with contemporary text processing systems enables sophisticated validation patterns including real-time character validation, automated data cleansing mechanisms, and multi-format text processing strategies. These patterns support the data quality and processing requirements of modern business systems while leveraging COBOL's proven character validation capabilities and reliability features.
The ALPHABETIC class's performance characteristics are crucial for applications that must handle large text volumes, support high-frequency validation operations, and maintain optimal character processing accuracy across diverse computing environments. Performance optimization involves careful design of validation patterns, efficient character lookup strategies, and coordination with system-level text processing optimization features including character encoding management and validation caching.
Advanced accuracy management includes comprehensive validation verification that ensures character classification remains accurate under varying data conditions, automatic validation adjustment that maintains data quality during character set changes, and classification verification mechanisms that ensure correct character analysis throughout complex text processing operations. These accuracy features enable COBOL applications to maintain high data quality even when performing complex character validation and text processing tasks.
Character validation optimization planning for ALPHABETIC class usage requires understanding both current and projected text processing requirements, character set analysis, and validation performance constraints. Modern implementations support intelligent validation that adapts to character distribution patterns, automatic optimization that adjusts validation strategies based on text characteristics, and comprehensive monitoring that provides visibility into validation performance and accuracy metrics.
The ALPHABETIC class provides multiple syntax forms designed to handle different character validation scenarios and text processing requirements. Understanding these variations and their appropriate applications is crucial for creating efficient, reliable character validation systems that can handle the diverse textual data requirements of enterprise applications.
12345678910111213141516171819*> Basic ALPHABETIC class test IF CUSTOMER-NAME IS ALPHABETIC DISPLAY "Valid alphabetic name" ELSE DISPLAY "Invalid characters in name" END-IF. *> Negative test IF CUSTOMER-NAME IS NOT ALPHABETIC DISPLAY "Name contains non-alphabetic characters" PERFORM HANDLE-INVALID-NAME END-IF. *> Multiple field validation IF FIRST-NAME IS ALPHABETIC AND LAST-NAME IS ALPHABETIC DISPLAY "Both names are valid" ELSE DISPLAY "One or both names contain invalid characters" END-IF.
Basic character validation provides standard alphabetic character checking with positive and negative test capabilities.
1234567891011121314151617181920212223242526*> Conditional validation based on field type EVALUATE FIELD-TYPE WHEN 'NAME' IF INPUT-FIELD IS ALPHABETIC PERFORM PROCESS-NAME-FIELD ELSE PERFORM REJECT-INVALID-NAME END-IF WHEN 'DESCRIPTION' IF INPUT-FIELD IS ALPHABETIC PERFORM PROCESS-DESCRIPTION ELSE PERFORM HANDLE-DESCRIPTION-ERROR END-IF END-EVALUATE. *> Complex conditional validation IF RECORD-TYPE = 'PERSON' IF FIRST-NAME IS ALPHABETIC AND LAST-NAME IS ALPHABETIC AND MIDDLE-INITIAL IS ALPHABETIC PERFORM PROCESS-PERSON-RECORD ELSE PERFORM VALIDATE-NAME-COMPONENTS END-IF END-IF.
Conditional validation enables dynamic character checking based on context and business logic requirements.
12345678910111213141516171819202122232425262728*> Validation with error handling PERFORM VARYING FIELD-INDEX FROM 1 BY 1 UNTIL FIELD-INDEX > NUMBER-OF-FIELDS IF TEXT-FIELD(FIELD-INDEX) IS NOT ALPHABETIC MOVE FIELD-INDEX TO ERROR-FIELD-NUMBER PERFORM LOG-VALIDATION-ERROR ADD 1 TO VALIDATION-ERROR-COUNT END-IF END-PERFORM. *> Batch validation processing PERFORM VALIDATE-ALL-TEXT-FIELDS IF VALIDATION-ERROR-COUNT = 0 PERFORM PROCESS-VALIDATED-RECORD ELSE PERFORM HANDLE-VALIDATION-FAILURES END-IF. *> Locale-aware validation IF LANGUAGE-CODE = 'EN' IF ENGLISH-TEXT IS ALPHABETIC PERFORM PROCESS-ENGLISH-TEXT END-IF ELSE IF LANGUAGE-CODE = 'FR' IF FRENCH-TEXT IS ALPHABETIC PERFORM PROCESS-FRENCH-TEXT END-IF END-IF.
Advanced validation patterns provide sophisticated character checking with error handling, batch processing, and internationalization support.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737IDENTIFICATION DIVISION. PROGRAM-ID. COMPREHENSIVE-ALPHABETIC-DEMO. *> Comprehensive demonstration of ALPHABETIC class applications *> Covering character validation, data quality, and text processing ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT VALIDATION-REPORT ASSIGN TO "VALIDATION-REPORT.TXT" ORGANIZATION IS LINE SEQUENTIAL. SELECT TEXT-INPUT-FILE ASSIGN TO "TEXT-DATA.DAT" ORGANIZATION IS SEQUENTIAL. DATA DIVISION. FILE SECTION. FD VALIDATION-REPORT. 01 REPORT-RECORD PIC X(132). FD TEXT-INPUT-FILE. 01 TEXT-INPUT-RECORD. 05 RECORD-ID PIC X(10). 05 RECORD-TYPE PIC X(5). 05 TEXT-FIELDS. 10 FIRST-NAME PIC X(20). 10 LAST-NAME PIC X(25). 10 MIDDLE-INITIAL PIC X(1). 10 COMPANY-NAME PIC X(40). 10 DESCRIPTION PIC X(100). 10 COMMENTS PIC X(200). WORKING-STORAGE SECTION. *> Validation control variables 01 VALIDATION-CONTROLS. 05 VALIDATION-MODE PIC X(10) VALUE "STRICT". 88 STRICT-VALIDATION VALUE "STRICT". 88 LENIENT-VALIDATION VALUE "LENIENT". 88 CUSTOM-VALIDATION VALUE "CUSTOM". 05 CURRENT-FIELD-NAME PIC X(20). 05 VALIDATION-PHASE PIC X(15) VALUE "INITIALIZATION". 88 INIT-PHASE VALUE "INITIALIZATION". 88 PROCESSING-PHASE VALUE "PROCESSING". 88 REPORTING-PHASE VALUE "REPORTING". 05 LANGUAGE-CODE PIC X(2) VALUE "EN". 05 CHARACTER-SET PIC X(10) VALUE "ASCII". *> Validation statistics 01 VALIDATION-STATISTICS. 05 TOTAL-RECORDS PIC 9(8) VALUE 0. 05 VALID-RECORDS PIC 9(8) VALUE 0. 05 INVALID-RECORDS PIC 9(8) VALUE 0. 05 TOTAL-FIELDS PIC 9(10) VALUE 0. 05 VALID-FIELDS PIC 9(10) VALUE 0. 05 INVALID-FIELDS PIC 9(10) VALUE 0. 05 VALIDATION-ERRORS PIC 9(8) VALUE 0. *> Field validation tracking 01 FIELD-VALIDATION-STATUS. 05 FIRST-NAME-VALID PIC X(1) VALUE 'N'. 88 FIRST-NAME-OK VALUE 'Y'. 88 FIRST-NAME-ERROR VALUE 'N'. 05 LAST-NAME-VALID PIC X(1) VALUE 'N'. 88 LAST-NAME-OK VALUE 'Y'. 88 LAST-NAME-ERROR VALUE 'N'. 05 MIDDLE-INITIAL-VALID PIC X(1) VALUE 'N'. 88 MIDDLE-INITIAL-OK VALUE 'Y'. 88 MIDDLE-INITIAL-ERROR VALUE 'N'. 05 COMPANY-NAME-VALID PIC X(1) VALUE 'N'. 88 COMPANY-NAME-OK VALUE 'Y'. 88 COMPANY-NAME-ERROR VALUE 'N'. 05 DESCRIPTION-VALID PIC X(1) VALUE 'N'. 88 DESCRIPTION-OK VALUE 'Y'. 88 DESCRIPTION-ERROR VALUE 'N'. 05 COMMENTS-VALID PIC X(1) VALUE 'N'. 88 COMMENTS-OK VALUE 'Y'. 88 COMMENTS-ERROR VALUE 'N'. *> Report line definitions 01 VALIDATION-HEADER. 05 FILLER PIC X(50) VALUE SPACES. 05 FILLER PIC X(32) VALUE "ALPHABETIC VALIDATION REPORT". 05 FILLER PIC X(50) VALUE SPACES. 01 FIELD-VALIDATION-LINE. 05 FILLER PIC X(5) VALUE "FIELD: ". 05 VLD-FIELD-NAME PIC X(20). 05 FILLER PIC X(10) VALUE " STATUS: ". 05 VLD-STATUS PIC X(10). 05 FILLER PIC X(10) VALUE " VALUE: ". 05 VLD-FIELD-VALUE PIC X(50). 05 FILLER PIC X(27) VALUE SPACES. 01 ERROR-DETAIL-LINE. 05 FILLER PIC X(10) VALUE "ERROR: ". 05 ERR-RECORD-ID PIC X(10). 05 FILLER PIC X(10) VALUE " FIELD: ". 05 ERR-FIELD-NAME PIC X(20). 05 FILLER PIC X(15) VALUE " DESCRIPTION: ". 05 ERR-DESCRIPTION PIC X(60). 05 FILLER PIC X(7) VALUE SPACES. 01 STATISTICS-LINE. 05 FILLER PIC X(15) VALUE "STATISTICS: ". 05 STAT-DESCRIPTION PIC X(30). 05 FILLER PIC X(5) VALUE ": ". 05 STAT-VALUE PIC Z,ZZ9,ZZ9. 05 FILLER PIC X(70) VALUE SPACES. 01 SECTION-BREAK-LINE. 05 FILLER PIC X(132) VALUE ALL "-". *> Advanced validation variables 01 ADVANCED-VALIDATION. 05 CHARACTER-ANALYSIS. 10 ALPHA-COUNT PIC 9(5) VALUE 0. 10 SPACE-COUNT PIC 9(5) VALUE 0. 10 SPECIAL-COUNT PIC 9(5) VALUE 0. 10 TOTAL-CHARS PIC 9(5) VALUE 0. 05 VALIDATION-RULES. 10 ALLOW-SPACES PIC X(1) VALUE 'Y'. 88 SPACES-ALLOWED VALUE 'Y'. 88 SPACES-FORBIDDEN VALUE 'N'. 10 ALLOW-HYPHENS PIC X(1) VALUE 'Y'. 88 HYPHENS-ALLOWED VALUE 'Y'. 88 HYPHENS-FORBIDDEN VALUE 'N'. 10 ALLOW-APOSTROPHES PIC X(1) VALUE 'Y'. 88 APOSTROPHES-ALLOWED VALUE 'Y'. 88 APOSTROPHES-FORBIDDEN VALUE 'N'. 05 QUALITY-METRICS. 10 FIELD-COMPLETENESS PIC 9(3)V99 VALUE 0. 10 VALIDATION-ACCURACY PIC 9(3)V99 VALUE 0. 10 DATA-QUALITY-SCORE PIC 9(3)V99 VALUE 0. *> Working variables 01 WORK-VARIABLES. 05 WS-COUNTER PIC 9(6). 05 WS-CHAR-POSITION PIC 9(5). 05 WS-CURRENT-CHAR PIC X(1). 05 WS-FIELD-LENGTH PIC 9(5). 05 WS-VALIDATION-RESULT PIC X(1). 05 WS-ERROR-MESSAGE PIC X(100). PROCEDURE DIVISION. MAIN-PROCESSING. DISPLAY "=== Comprehensive ALPHABETIC Class Demonstration ===". DISPLAY " ". PERFORM INITIALIZE-VALIDATION-SYSTEM PERFORM DEMONSTRATE-BASIC-ALPHABETIC-TESTS PERFORM DEMONSTRATE-ADVANCED-VALIDATION PERFORM DEMONSTRATE-BATCH-VALIDATION PERFORM DEMONSTRATE-QUALITY-ANALYSIS PERFORM DEMONSTRATE-INTERNATIONAL-VALIDATION PERFORM FINALIZE-VALIDATION-SYSTEM DISPLAY " ". DISPLAY "ALPHABETIC class demonstration completed successfully". STOP RUN. INITIALIZE-VALIDATION-SYSTEM. DISPLAY "1. Initializing Validation System:". DISPLAY " ================================". *> Set validation mode SET STRICT-VALIDATION TO TRUE. SET INIT-PHASE TO TRUE. *> Initialize validation rules SET SPACES-ALLOWED TO TRUE. SET HYPHENS-ALLOWED TO TRUE. SET APOSTROPHES-ALLOWED TO TRUE. *> Initialize statistics MOVE 0 TO TOTAL-RECORDS VALID-RECORDS INVALID-RECORDS TOTAL-FIELDS VALID-FIELDS INVALID-FIELDS VALIDATION-ERRORS. *> Open report file OPEN OUTPUT VALIDATION-REPORT. *> Write report header WRITE REPORT-RECORD FROM VALIDATION-HEADER. WRITE REPORT-RECORD FROM SECTION-BREAK-LINE. DISPLAY " Validation system initialized". DISPLAY " Validation mode: " VALIDATION-MODE. DISPLAY " Language code: " LANGUAGE-CODE. DISPLAY " Character set: " CHARACTER-SET. DISPLAY " ". DEMONSTRATE-BASIC-ALPHABETIC-TESTS. DISPLAY "2. Basic ALPHABETIC Tests:". DISPLAY " ========================". SET PROCESSING-PHASE TO TRUE. PERFORM TEST-SIMPLE-ALPHABETIC-VALIDATION PERFORM TEST-NEGATIVE-ALPHABETIC-VALIDATION PERFORM TEST-CONDITIONAL-ALPHABETIC-VALIDATION PERFORM TEST-MULTIPLE-FIELD-VALIDATION. TEST-SIMPLE-ALPHABETIC-VALIDATION. DISPLAY " Simple Alphabetic Validation:". *> Test valid alphabetic data MOVE "JOHN" TO FIRST-NAME. MOVE "FIRST-NAME" TO CURRENT-FIELD-NAME. IF FIRST-NAME IS ALPHABETIC SET FIRST-NAME-OK TO TRUE MOVE "VALID" TO VLD-STATUS DISPLAY " " FIRST-NAME " is alphabetic: VALID" ELSE SET FIRST-NAME-ERROR TO TRUE MOVE "INVALID" TO VLD-STATUS DISPLAY " " FIRST-NAME " is alphabetic: INVALID" END-IF. PERFORM WRITE-VALIDATION-RESULT. *> Test invalid alphabetic data MOVE "JOHN123" TO FIRST-NAME. IF FIRST-NAME IS ALPHABETIC SET FIRST-NAME-OK TO TRUE MOVE "VALID" TO VLD-STATUS DISPLAY " " FIRST-NAME " is alphabetic: VALID" ELSE SET FIRST-NAME-ERROR TO TRUE MOVE "INVALID" TO VLD-STATUS DISPLAY " " FIRST-NAME " is alphabetic: INVALID" ADD 1 TO VALIDATION-ERRORS END-IF. PERFORM WRITE-VALIDATION-RESULT. WRITE-VALIDATION-RESULT. MOVE CURRENT-FIELD-NAME TO VLD-FIELD-NAME. MOVE FIRST-NAME TO VLD-FIELD-VALUE. WRITE REPORT-RECORD FROM FIELD-VALIDATION-LINE. TEST-NEGATIVE-ALPHABETIC-VALIDATION. DISPLAY " Negative Alphabetic Validation:". *> Test with NOT ALPHABETIC MOVE "ABC123" TO COMPANY-NAME. MOVE "COMPANY-NAME" TO CURRENT-FIELD-NAME. IF COMPANY-NAME IS NOT ALPHABETIC SET COMPANY-NAME-ERROR TO TRUE MOVE "INVALID" TO VLD-STATUS DISPLAY " " COMPANY-NAME " contains non-alphabetic: TRUE" PERFORM LOG-VALIDATION-ERROR USING "Contains numeric characters" ELSE SET COMPANY-NAME-OK TO TRUE MOVE "VALID" TO VLD-STATUS DISPLAY " " COMPANY-NAME " is purely alphabetic: TRUE" END-IF. MOVE CURRENT-FIELD-NAME TO VLD-FIELD-NAME. MOVE COMPANY-NAME TO VLD-FIELD-VALUE. WRITE REPORT-RECORD FROM FIELD-VALIDATION-LINE. LOG-VALIDATION-ERROR USING ERROR-MSG. 01 ERROR-MSG PIC X(60). MOVE RECORD-ID TO ERR-RECORD-ID. MOVE CURRENT-FIELD-NAME TO ERR-FIELD-NAME. MOVE ERROR-MSG TO ERR-DESCRIPTION. WRITE REPORT-RECORD FROM ERROR-DETAIL-LINE. ADD 1 TO VALIDATION-ERRORS. TEST-CONDITIONAL-ALPHABETIC-VALIDATION. DISPLAY " Conditional Alphabetic Validation:". *> Test different validation based on field type PERFORM VARYING WS-COUNTER FROM 1 BY 1 UNTIL WS-COUNTER > 3 EVALUATE WS-COUNTER WHEN 1 MOVE "SMITH" TO LAST-NAME MOVE "LAST-NAME" TO CURRENT-FIELD-NAME IF LAST-NAME IS ALPHABETIC DISPLAY " Last name validation: PASSED" ADD 1 TO VALID-FIELDS ELSE DISPLAY " Last name validation: FAILED" ADD 1 TO INVALID-FIELDS END-IF WHEN 2 MOVE "J" TO MIDDLE-INITIAL MOVE "MIDDLE-INITIAL" TO CURRENT-FIELD-NAME IF MIDDLE-INITIAL IS ALPHABETIC DISPLAY " Middle initial validation: PASSED" ADD 1 TO VALID-FIELDS ELSE DISPLAY " Middle initial validation: FAILED" ADD 1 TO INVALID-FIELDS END-IF WHEN 3 MOVE "ACME CORP" TO COMPANY-NAME MOVE "COMPANY-NAME" TO CURRENT-FIELD-NAME *> Company names may contain spaces PERFORM VALIDATE-COMPANY-NAME END-EVALUATE ADD 1 TO TOTAL-FIELDS END-PERFORM. VALIDATE-COMPANY-NAME. *> Custom validation for company names allowing spaces MOVE 0 TO ALPHA-COUNT SPACE-COUNT SPECIAL-COUNT. MOVE FUNCTION LENGTH(COMPANY-NAME) TO WS-FIELD-LENGTH. PERFORM VARYING WS-CHAR-POSITION FROM 1 BY 1 UNTIL WS-CHAR-POSITION > WS-FIELD-LENGTH MOVE COMPANY-NAME(WS-CHAR-POSITION:1) TO WS-CURRENT-CHAR IF WS-CURRENT-CHAR IS ALPHABETIC ADD 1 TO ALPHA-COUNT ELSE IF WS-CURRENT-CHAR = SPACE ADD 1 TO SPACE-COUNT ELSE ADD 1 TO SPECIAL-COUNT END-IF END-PERFORM. IF SPECIAL-COUNT = 0 DISPLAY " Company name validation: PASSED (alphabetic + spaces)" ADD 1 TO VALID-FIELDS ELSE DISPLAY " Company name validation: FAILED (special characters)" ADD 1 TO INVALID-FIELDS PERFORM LOG-VALIDATION-ERROR USING "Contains special characters" END-IF. TEST-MULTIPLE-FIELD-VALIDATION. DISPLAY " Multiple Field Validation:". *> Set up test data MOVE "JANE" TO FIRST-NAME. MOVE "DOE" TO LAST-NAME. MOVE "M" TO MIDDLE-INITIAL. *> Validate all name fields together IF FIRST-NAME IS ALPHABETIC AND LAST-NAME IS ALPHABETIC AND MIDDLE-INITIAL IS ALPHABETIC DISPLAY " All name fields validation: PASSED" SET FIRST-NAME-OK TO TRUE SET LAST-NAME-OK TO TRUE SET MIDDLE-INITIAL-OK TO TRUE ADD 3 TO VALID-FIELDS ELSE DISPLAY " All name fields validation: FAILED" PERFORM VALIDATE-INDIVIDUAL-NAME-FIELDS END-IF. ADD 3 TO TOTAL-FIELDS. VALIDATE-INDIVIDUAL-NAME-FIELDS. IF FIRST-NAME IS NOT ALPHABETIC DISPLAY " First name contains invalid characters" SET FIRST-NAME-ERROR TO TRUE ADD 1 TO INVALID-FIELDS ELSE SET FIRST-NAME-OK TO TRUE ADD 1 TO VALID-FIELDS END-IF. IF LAST-NAME IS NOT ALPHABETIC DISPLAY " Last name contains invalid characters" SET LAST-NAME-ERROR TO TRUE ADD 1 TO INVALID-FIELDS ELSE SET LAST-NAME-OK TO TRUE ADD 1 TO VALID-FIELDS END-IF. IF MIDDLE-INITIAL IS NOT ALPHABETIC DISPLAY " Middle initial contains invalid characters" SET MIDDLE-INITIAL-ERROR TO TRUE ADD 1 TO INVALID-FIELDS ELSE SET MIDDLE-INITIAL-OK TO TRUE ADD 1 TO VALID-FIELDS END-IF. DEMONSTRATE-ADVANCED-VALIDATION. DISPLAY "3. Advanced Validation Techniques:". DISPLAY " ================================". PERFORM DEMONSTRATE-CHARACTER-ANALYSIS PERFORM DEMONSTRATE-CUSTOM-VALIDATION-RULES PERFORM DEMONSTRATE-CONTEXT-AWARE-VALIDATION. DEMONSTRATE-CHARACTER-ANALYSIS. DISPLAY " Character Analysis:". *> Analyze character composition MOVE "MARY O'CONNOR" TO DESCRIPTION. MOVE "DESCRIPTION" TO CURRENT-FIELD-NAME. PERFORM ANALYZE-CHARACTER-COMPOSITION. DISPLAY " Field: " DESCRIPTION. DISPLAY " Alphabetic characters: " ALPHA-COUNT. DISPLAY " Space characters: " SPACE-COUNT. DISPLAY " Special characters: " SPECIAL-COUNT. DISPLAY " Total characters: " TOTAL-CHARS. *> Calculate quality metrics COMPUTE FIELD-COMPLETENESS = (ALPHA-COUNT / TOTAL-CHARS) * 100. DISPLAY " Alphabetic percentage: " FIELD-COMPLETENESS "%". ANALYZE-CHARACTER-COMPOSITION. MOVE 0 TO ALPHA-COUNT SPACE-COUNT SPECIAL-COUNT TOTAL-CHARS. MOVE FUNCTION LENGTH(DESCRIPTION) TO WS-FIELD-LENGTH. PERFORM VARYING WS-CHAR-POSITION FROM 1 BY 1 UNTIL WS-CHAR-POSITION > WS-FIELD-LENGTH MOVE DESCRIPTION(WS-CHAR-POSITION:1) TO WS-CURRENT-CHAR ADD 1 TO TOTAL-CHARS IF WS-CURRENT-CHAR IS ALPHABETIC ADD 1 TO ALPHA-COUNT ELSE IF WS-CURRENT-CHAR = SPACE ADD 1 TO SPACE-COUNT ELSE ADD 1 TO SPECIAL-COUNT END-IF END-PERFORM. DEMONSTRATE-CUSTOM-VALIDATION-RULES. DISPLAY " Custom Validation Rules:". *> Test with different rule configurations MOVE "JEAN-CLAUDE" TO FIRST-NAME. MOVE "FIRST-NAME" TO CURRENT-FIELD-NAME. *> Test with hyphens allowed SET HYPHENS-ALLOWED TO TRUE. PERFORM CUSTOM-ALPHABETIC-VALIDATION. IF WS-VALIDATION-RESULT = 'Y' DISPLAY " " FIRST-NAME " with hyphens allowed: VALID" ELSE DISPLAY " " FIRST-NAME " with hyphens allowed: INVALID" END-IF. *> Test with hyphens forbidden SET HYPHENS-FORBIDDEN TO TRUE. PERFORM CUSTOM-ALPHABETIC-VALIDATION. IF WS-VALIDATION-RESULT = 'Y' DISPLAY " " FIRST-NAME " with hyphens forbidden: VALID" ELSE DISPLAY " " FIRST-NAME " with hyphens forbidden: INVALID" END-IF. CUSTOM-ALPHABETIC-VALIDATION. MOVE 'Y' TO WS-VALIDATION-RESULT. MOVE FUNCTION LENGTH(FIRST-NAME) TO WS-FIELD-LENGTH. PERFORM VARYING WS-CHAR-POSITION FROM 1 BY 1 UNTIL WS-CHAR-POSITION > WS-FIELD-LENGTH OR WS-VALIDATION-RESULT = 'N' MOVE FIRST-NAME(WS-CHAR-POSITION:1) TO WS-CURRENT-CHAR IF WS-CURRENT-CHAR IS ALPHABETIC CONTINUE ELSE IF WS-CURRENT-CHAR = SPACE AND SPACES-ALLOWED CONTINUE ELSE IF WS-CURRENT-CHAR = '-' AND HYPHENS-ALLOWED CONTINUE ELSE IF WS-CURRENT-CHAR = "'" AND APOSTROPHES-ALLOWED CONTINUE ELSE MOVE 'N' TO WS-VALIDATION-RESULT END-IF END-PERFORM. DEMONSTRATE-CONTEXT-AWARE-VALIDATION. DISPLAY " Context-Aware Validation:". *> Different validation based on record type MOVE "PERSON" TO RECORD-TYPE. EVALUATE RECORD-TYPE WHEN "PERSON" PERFORM VALIDATE-PERSON-FIELDS WHEN "COMPANY" PERFORM VALIDATE-COMPANY-FIELDS WHEN "PRODUCT" PERFORM VALIDATE-PRODUCT-FIELDS END-EVALUATE. VALIDATE-PERSON-FIELDS. DISPLAY " Validating person fields with strict rules". MOVE "ELIZABETH" TO FIRST-NAME. MOVE "JOHNSON" TO LAST-NAME. IF FIRST-NAME IS ALPHABETIC AND LAST-NAME IS ALPHABETIC DISPLAY " Person name validation: PASSED" ADD 2 TO VALID-FIELDS ELSE DISPLAY " Person name validation: FAILED" ADD 2 TO INVALID-FIELDS END-IF. ADD 2 TO TOTAL-FIELDS. VALIDATE-COMPANY-FIELDS. DISPLAY " Validating company fields with lenient rules". MOVE "ACME CORPORATION" TO COMPANY-NAME. PERFORM VALIDATE-COMPANY-NAME. VALIDATE-PRODUCT-FIELDS. DISPLAY " Validating product fields with custom rules". MOVE "PREMIUM WIDGET" TO DESCRIPTION. PERFORM ANALYZE-CHARACTER-COMPOSITION. IF SPECIAL-COUNT = 0 DISPLAY " Product description validation: PASSED" ADD 1 TO VALID-FIELDS ELSE DISPLAY " Product description validation: FAILED" ADD 1 TO INVALID-FIELDS END-IF. ADD 1 TO TOTAL-FIELDS. DEMONSTRATE-BATCH-VALIDATION. DISPLAY "4. Batch Validation Processing:". DISPLAY " =============================". PERFORM SIMULATE-BATCH-PROCESSING PERFORM GENERATE-VALIDATION-SUMMARY. SIMULATE-BATCH-PROCESSING. DISPLAY " Simulating batch validation processing:". *> Simulate processing multiple records PERFORM VARYING WS-COUNTER FROM 1 BY 1 UNTIL WS-COUNTER > 10 STRING "REC" WS-COUNTER DELIMITED BY SIZE INTO RECORD-ID *> Generate test data EVALUATE WS-COUNTER WHEN 1 THRU 3 MOVE "VALID" TO FIRST-NAME MOVE "NAME" TO LAST-NAME WHEN 4 THRU 6 MOVE "INVALID123" TO FIRST-NAME MOVE "NAME456" TO LAST-NAME WHEN 7 THRU 10 MOVE "MIXED" TO FIRST-NAME MOVE "DATA" TO LAST-NAME END-EVALUATE PERFORM VALIDATE-RECORD ADD 1 TO TOTAL-RECORDS END-PERFORM. VALIDATE-RECORD. MOVE 'Y' TO WS-VALIDATION-RESULT. *> Validate all text fields in record IF FIRST-NAME IS NOT ALPHABETIC MOVE 'N' TO WS-VALIDATION-RESULT PERFORM LOG-VALIDATION-ERROR USING "First name not alphabetic" END-IF. IF LAST-NAME IS NOT ALPHABETIC MOVE 'N' TO WS-VALIDATION-RESULT PERFORM LOG-VALIDATION-ERROR USING "Last name not alphabetic" END-IF. IF WS-VALIDATION-RESULT = 'Y' ADD 1 TO VALID-RECORDS DISPLAY " Record " RECORD-ID ": VALID" ELSE ADD 1 TO INVALID-RECORDS DISPLAY " Record " RECORD-ID ": INVALID" END-IF. GENERATE-VALIDATION-SUMMARY. DISPLAY " Validation Summary:". WRITE REPORT-RECORD FROM SECTION-BREAK-LINE. MOVE "TOTAL RECORDS PROCESSED" TO STAT-DESCRIPTION. MOVE TOTAL-RECORDS TO STAT-VALUE. WRITE REPORT-RECORD FROM STATISTICS-LINE. MOVE "VALID RECORDS" TO STAT-DESCRIPTION. MOVE VALID-RECORDS TO STAT-VALUE. WRITE REPORT-RECORD FROM STATISTICS-LINE. MOVE "INVALID RECORDS" TO STAT-DESCRIPTION. MOVE INVALID-RECORDS TO STAT-VALUE. WRITE REPORT-RECORD FROM STATISTICS-LINE. MOVE "VALIDATION ERRORS" TO STAT-DESCRIPTION. MOVE VALIDATION-ERRORS TO STAT-VALUE. WRITE REPORT-RECORD FROM STATISTICS-LINE. DISPLAY " Total records: " TOTAL-RECORDS. DISPLAY " Valid records: " VALID-RECORDS. DISPLAY " Invalid records: " INVALID-RECORDS. DISPLAY " Validation errors: " VALIDATION-ERRORS. DEMONSTRATE-QUALITY-ANALYSIS. DISPLAY "5. Data Quality Analysis:". DISPLAY " ======================". PERFORM CALCULATE-QUALITY-METRICS PERFORM GENERATE-QUALITY-REPORT. CALCULATE-QUALITY-METRICS. *> Calculate validation accuracy IF TOTAL-RECORDS > 0 COMPUTE VALIDATION-ACCURACY = (VALID-RECORDS / TOTAL-RECORDS) * 100 ELSE MOVE 0 TO VALIDATION-ACCURACY END-IF. *> Calculate field completeness IF TOTAL-FIELDS > 0 COMPUTE FIELD-COMPLETENESS = (VALID-FIELDS / TOTAL-FIELDS) * 100 ELSE MOVE 0 TO FIELD-COMPLETENESS END-IF. *> Calculate overall data quality score COMPUTE DATA-QUALITY-SCORE = (VALIDATION-ACCURACY + FIELD-COMPLETENESS) / 2. GENERATE-QUALITY-REPORT. DISPLAY " Data Quality Metrics:". DISPLAY " Validation accuracy: " VALIDATION-ACCURACY "%". DISPLAY " Field completeness: " FIELD-COMPLETENESS "%". DISPLAY " Data quality score: " DATA-QUALITY-SCORE "%". WRITE REPORT-RECORD FROM SECTION-BREAK-LINE. MOVE "VALIDATION ACCURACY %" TO STAT-DESCRIPTION. MOVE VALIDATION-ACCURACY TO STAT-VALUE. WRITE REPORT-RECORD FROM STATISTICS-LINE. MOVE "FIELD COMPLETENESS %" TO STAT-DESCRIPTION. MOVE FIELD-COMPLETENESS TO STAT-VALUE. WRITE REPORT-RECORD FROM STATISTICS-LINE. MOVE "DATA QUALITY SCORE %" TO STAT-DESCRIPTION. MOVE DATA-QUALITY-SCORE TO STAT-VALUE. WRITE REPORT-RECORD FROM STATISTICS-LINE. DEMONSTRATE-INTERNATIONAL-VALIDATION. DISPLAY "6. International Validation:". DISPLAY " ==========================". PERFORM TEST-MULTILINGUAL-VALIDATION PERFORM TEST-CHARACTER-SET-VALIDATION. TEST-MULTILINGUAL-VALIDATION. DISPLAY " Multilingual Validation:". *> Test English validation MOVE "EN" TO LANGUAGE-CODE. MOVE "ENGLISH" TO FIRST-NAME. IF FIRST-NAME IS ALPHABETIC DISPLAY " English text validation: PASSED" ELSE DISPLAY " English text validation: FAILED" END-IF. *> Test French validation (simulated) MOVE "FR" TO LANGUAGE-CODE. MOVE "FRANCAIS" TO FIRST-NAME. IF FIRST-NAME IS ALPHABETIC DISPLAY " French text validation: PASSED" ELSE DISPLAY " French text validation: FAILED" END-IF. TEST-CHARACTER-SET-VALIDATION. DISPLAY " Character Set Validation:". *> Test ASCII character set MOVE "ASCII" TO CHARACTER-SET. MOVE "STANDARD" TO DESCRIPTION. IF DESCRIPTION IS ALPHABETIC DISPLAY " ASCII character validation: PASSED" ELSE DISPLAY " ASCII character validation: FAILED" END-IF. *> Test extended character set (simulated) MOVE "EXTENDED" TO CHARACTER-SET. MOVE "EXTENDED" TO DESCRIPTION. IF DESCRIPTION IS ALPHABETIC DISPLAY " Extended character validation: PASSED" ELSE DISPLAY " Extended character validation: FAILED" END-IF. FINALIZE-VALIDATION-SYSTEM. DISPLAY "7. Finalizing Validation System:". DISPLAY " ===============================". SET REPORTING-PHASE TO TRUE. *> Write final summary WRITE REPORT-RECORD FROM SECTION-BREAK-LINE. MOVE "VALIDATION PROCESSING COMPLETE" TO REPORT-RECORD. WRITE REPORT-RECORD. *> Close report file CLOSE VALIDATION-REPORT. DISPLAY " Final Validation Statistics:". DISPLAY " Total records processed: " TOTAL-RECORDS. DISPLAY " Total fields validated: " TOTAL-FIELDS. DISPLAY " Overall validation accuracy: " VALIDATION-ACCURACY "%". DISPLAY " Data quality score: " DATA-QUALITY-SCORE "%". DISPLAY " Validation system finalized successfully". DISPLAY " ".