MainframeMaster

COBOL Tutorial

COBOL ALPHABETIC Class

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.

Understanding ALPHABETIC Class Architecture

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.

Comprehensive ALPHABETIC Class Capabilities:

  • Character Validation: Sophisticated mechanisms for validating alphabetic characters including case-insensitive checking, locale-aware validation, and international character set support.
  • Data Classification: Advanced data classification including character type detection, text pattern recognition, and content analysis with automatic categorization.
  • Input Validation: Comprehensive input validation capabilities including real-time checking, batch validation, and data quality assessment with error reporting.
  • Locale Support: Sophisticated internationalization that handles different languages, character sets, and cultural text processing requirements with automatic adaptation.
  • Quality Assurance: Advanced data quality features including validation reporting, error detection, and data cleansing recommendations for text processing workflows.
  • Performance Optimization: Comprehensive validation optimization including character lookup acceleration, validation caching, and processing efficiency improvements.
  • Integration Support: Seamless integration with COBOL data structures, file processing systems, and modern text processing frameworks with standardized validation interfaces.
  • Error Handling: Advanced validation error handling and reporting tools that provide detailed insights into character validation failures and data quality issues.

Enterprise Text Processing Patterns

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.

Performance and Accuracy Considerations

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.

ALPHABETIC Class Syntax and Applications

Complete ALPHABETIC Class Syntax Forms

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.

Basic Character Validation

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
*> 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.

Conditional Validation

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
*> 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.

Advanced Validation Patterns

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
*> 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.

Comprehensive ALPHABETIC Class Examples

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
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
IDENTIFICATION 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 " ".

Best Practices and Guidelines

Recommended Practices

  • Use ALPHABETIC class for strict character validation in name fields
  • Implement comprehensive validation error handling and reporting
  • Design flexible validation rules that adapt to different data types
  • Use batch validation for processing large datasets efficiently
  • Test validation logic with diverse character sets and languages
  • Implement data quality metrics to monitor validation effectiveness
  • Document validation rules and character acceptance criteria
  • Use conditional validation based on business context

Common Pitfalls

  • Overly strict validation rejecting valid international characters
  • Missing validation for fields that should contain only letters
  • Inadequate error handling for validation failures
  • Not considering spaces and punctuation in name validation
  • Poor performance with character-by-character validation
  • Inconsistent validation rules across similar fields
  • Not testing with real-world data variations
  • Ignoring locale-specific character requirements

Related COBOL Concepts

  • NUMERIC - Complementary class for numeric character validation
  • ALPHABETIC-UPPER - Uppercase alphabetic character validation
  • ALPHABETIC-LOWER - Lowercase alphabetic character validation
  • ALPHANUMERIC - Combined alphabetic and numeric validation
  • CLASS - Custom character class definitions
  • INSPECT - Character analysis and manipulation
  • FUNCTION - Built-in functions for character testing
  • PICTURE - Data type definitions with character constraints