MainframeMaster

COBOL Tutorial

COBOL ALPHANUMERIC Class

The ALPHANUMERIC class condition represents one of COBOL's most versatile and comprehensive character classification mechanisms, serving as the primary tool for validating mixed alphanumeric content, enforcing flexible data quality standards, and implementing sophisticated character-based validation rules in business applications. Far more than a simple mixed character test, the ALPHANUMERIC 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 flexibility and reliability characteristics that make COBOL ideal for enterprise data processing environments requiring comprehensive alphanumeric character validation capabilities.

In enterprise computing environments, the ALPHANUMERIC class serves as a critical foundation for advanced data validation, enabling developers to create sophisticated business applications that handle flexible data entry requirements, implement alphanumeric naming conventions, enforce mixed-format data standards, and validate business identifiers that combine letters and numbers according to specific corporate 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 alphanumeric validation and enterprise data standardization capabilities that support both alphabetic and numeric content.

ALPHANUMERIC Class Usage and Syntax

Basic ALPHANUMERIC Testing

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
*> Basic ALPHANUMERIC validation IF PRODUCT-CODE IS ALPHANUMERIC DISPLAY "Product code format is valid" ELSE DISPLAY "Invalid product code format" END-IF. *> Negative test for validation IF CUSTOMER-ID IS NOT ALPHANUMERIC DISPLAY "Customer ID must contain only letters and numbers" PERFORM VALIDATION-ERROR-ROUTINE END-IF. *> Combined validation conditions IF ACCOUNT-NUMBER IS ALPHANUMERIC AND LENGTH OF ACCOUNT-NUMBER BETWEEN 8 AND 12 PERFORM PROCESS-VALID-ACCOUNT ELSE PERFORM REJECT-INVALID-ACCOUNT END-IF.

Basic ALPHANUMERIC testing validates that fields contain only letters and numbers.

Business Identifier 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
27
28
29
*> Employee ID validation ACCEPT EMPLOYEE-ID FROM CONSOLE. IF EMPLOYEE-ID IS NOT ALPHANUMERIC DISPLAY "Error: Employee ID must be letters and numbers only" MOVE "INVALID" TO VALIDATION-STATUS PERFORM GET-EMPLOYEE-ID-AGAIN END-IF. *> Batch validation of multiple identifiers PERFORM VARYING ID-INDEX FROM 1 BY 1 UNTIL ID-INDEX > NUMBER-OF-IDS IF IDENTIFIER-LIST(ID-INDEX) IS NOT ALPHANUMERIC MOVE "Y" TO ID-VALIDATION-ERROR MOVE ID-INDEX TO ERROR-ID-POSITION EXIT PERFORM END-IF END-PERFORM. *> Mixed data type processing EVALUATE TRUE WHEN INPUT-FIELD IS ALPHANUMERIC PERFORM PROCESS-MIXED-IDENTIFIER WHEN INPUT-FIELD IS ALPHABETIC PERFORM PROCESS-TEXT-ONLY WHEN INPUT-FIELD IS NUMERIC PERFORM PROCESS-NUMERIC-ONLY WHEN OTHER PERFORM PROCESS-SPECIAL-FORMAT END-EVALUATE.

Business identifier validation using ALPHANUMERIC for employee IDs and mixed data formats.

Advanced Pattern Recognition

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
*> Extract alphanumeric segments from mixed content MOVE 0 TO ALPHANUMERIC-SEGMENT-COUNT. PERFORM VARYING SEGMENT-POS FROM 1 BY 1 UNTIL SEGMENT-POS > INPUT-LENGTH MOVE INPUT-STRING(SEGMENT-POS:1) TO CURRENT-CHAR IF CURRENT-CHAR IS ALPHANUMERIC ADD 1 TO ALPHANUMERIC-SEGMENT-COUNT MOVE CURRENT-CHAR TO CLEAN-SEGMENT(ALPHANUMERIC-SEGMENT-COUNT) END-IF END-PERFORM. *> Data cleansing and format standardization MOVE "Y" TO DATA-IS-CLEAN. MOVE 0 TO CLEAN-POSITION. PERFORM VARYING CHECK-POS FROM 1 BY 1 UNTIL CHECK-POS > FIELD-LENGTH MOVE INPUT-FIELD(CHECK-POS:1) TO TEST-CHAR IF TEST-CHAR IS ALPHANUMERIC ADD 1 TO CLEAN-POSITION MOVE TEST-CHAR TO CLEAN-FIELD(CLEAN-POSITION:1) ELSE MOVE "N" TO DATA-IS-CLEAN END-IF END-PERFORM. *> Password strength validation IF PASSWORD-FIELD IS ALPHANUMERIC PERFORM ANALYZE-PASSWORD-STRENGTH IF PASSWORD-STRENGTH = "WEAK" DISPLAY "Password should contain special characters" END-IF END-IF.

Advanced pattern recognition using ALPHANUMERIC for data cleansing and validation.

Comprehensive Example

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
IDENTIFICATION DIVISION. PROGRAM-ID. ALPHANUMERIC-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. *> Comprehensive test suite 01 ALPHANUMERIC-TEST-SUITE. 05 TEST-SCENARIOS OCCURS 25 TIMES. 10 TEST-VALUE PIC X(30). 10 EXPECTED-RESULT PIC X(1). 10 SCENARIO-DESC PIC X(50). *> Validation performance metrics 01 VALIDATION-METRICS. 05 TOTAL-TESTS-RUN PIC 9(5) VALUE 0. 05 SUCCESSFUL-TESTS PIC 9(5) VALUE 0. 05 FAILED-TESTS PIC 9(5) VALUE 0. 05 ACCURACY-RATE PIC 9(3)V99 VALUE 0. *> Character composition analysis 01 CHARACTER-COMPOSITION. 05 ALPHABETIC-COUNT PIC 9(5) VALUE 0. 05 NUMERIC-COUNT PIC 9(5) VALUE 0. 05 MIXED-COUNT PIC 9(5) VALUE 0. 05 SPECIAL-CHAR-COUNT PIC 9(5) VALUE 0. 05 WHITESPACE-COUNT PIC 9(5) VALUE 0. 05 TOTAL-CHAR-COUNT PIC 9(5) VALUE 0. *> Business data examples 01 BUSINESS-ENTITIES. 05 CUSTOMER-ID PIC X(15). 05 PRODUCT-SKU PIC X(20). 05 EMPLOYEE-NUMBER PIC X(12). 05 ORDER-REFERENCE PIC X(18). 05 TRANSACTION-ID PIC X(16). 05 BATCH-NUMBER PIC X(10). *> Validation result tracking 01 VALIDATION-TRACKING. 05 ENTITY-NAME PIC X(25). 05 ENTITY-VALUE PIC X(50). 05 VALIDATION-OUTCOME PIC X(10). 05 DETAILED-ANALYSIS PIC X(100). 05 FIRST-INVALID-CHAR PIC X(1). 05 INVALID-CHAR-POS PIC 9(3) VALUE 0. *> Processing variables 01 PROCESSING-VARIABLES. 05 CURRENT-TEST-INDEX PIC 9(3) VALUE 0. 05 CHAR-POSITION PIC 9(3) VALUE 0. 05 FIELD-LENGTH PIC 9(3) VALUE 0. 05 CURRENT-CHARACTER PIC X(1). *> Data quality rules 01 DATA-QUALITY-RULES. 05 ALLOW-MIXED-CASE PIC X(1) VALUE "Y". 88 MIXED-CASE-OK VALUE "Y". 88 MIXED-CASE-NOT-OK VALUE "N". 05 REQUIRE-ALPHANUMERIC PIC X(1) VALUE "Y". 88 ALPHANUMERIC-REQUIRED VALUE "Y". 88 ALPHANUMERIC-OPTIONAL VALUE "N". PROCEDURE DIVISION. MAIN-PROCESSING. DISPLAY "=== ALPHANUMERIC Class Demonstration ===". DISPLAY " ". PERFORM INITIALIZE-TEST-SCENARIOS PERFORM EXECUTE-VALIDATION-TESTS PERFORM ANALYZE-CHARACTER-COMPOSITION PERFORM VALIDATE-BUSINESS-ENTITIES PERFORM DEMONSTRATE-DATA-CLEANSING PERFORM DISPLAY-COMPREHENSIVE-ANALYSIS DISPLAY " ". DISPLAY "ALPHANUMERIC validation demonstration completed". STOP RUN. INITIALIZE-TEST-SCENARIOS. DISPLAY "1. Initializing Test Scenarios:". DISPLAY " ============================". *> Test case 1: Pure alphabetic MOVE "ABCDEF" TO TEST-VALUE(1). MOVE "Y" TO EXPECTED-RESULT(1). MOVE "Pure alphabetic characters" TO SCENARIO-DESC(1). *> Test case 2: Pure numeric MOVE "123456" TO TEST-VALUE(2). MOVE "Y" TO EXPECTED-RESULT(2). MOVE "Pure numeric characters" TO SCENARIO-DESC(2). *> Test case 3: Mixed alphanumeric MOVE "ABC123" TO TEST-VALUE(3). MOVE "Y" TO EXPECTED-RESULT(3). MOVE "Mixed letters and numbers" TO SCENARIO-DESC(3). *> Test case 4: Employee ID format MOVE "EMP12345" TO TEST-VALUE(4). MOVE "Y" TO EXPECTED-RESULT(4). MOVE "Employee ID format" TO SCENARIO-DESC(4). *> Test case 5: Product SKU MOVE "PROD567ABC" TO TEST-VALUE(5). MOVE "Y" TO EXPECTED-RESULT(5). MOVE "Product SKU format" TO SCENARIO-DESC(5). *> Test case 6: Contains spaces (invalid) MOVE "ABC 123" TO TEST-VALUE(6). MOVE "N" TO EXPECTED-RESULT(6). MOVE "Contains space character" TO SCENARIO-DESC(6). *> Test case 7: Contains special chars (invalid) MOVE "ABC-123" TO TEST-VALUE(7). MOVE "N" TO EXPECTED-RESULT(7). MOVE "Contains hyphen character" TO SCENARIO-DESC(7). *> Test case 8: Mixed case letters MOVE "AbC123" TO TEST-VALUE(8). MOVE "Y" TO EXPECTED-RESULT(8). MOVE "Mixed case letters with numbers" TO SCENARIO-DESC(8). *> Test case 9: Single character MOVE "A" TO TEST-VALUE(9). MOVE "Y" TO EXPECTED-RESULT(9). MOVE "Single alphabetic character" TO SCENARIO-DESC(9). *> Test case 10: Single digit MOVE "5" TO TEST-VALUE(10). MOVE "Y" TO EXPECTED-RESULT(10). MOVE "Single numeric character" TO SCENARIO-DESC(10). *> Test case 11: Account number format MOVE "ACC987654321" TO TEST-VALUE(11). MOVE "Y" TO EXPECTED-RESULT(11). MOVE "Account number format" TO SCENARIO-DESC(11). *> Test case 12: Batch reference MOVE "BATCH2023001" TO TEST-VALUE(12). MOVE "Y" TO EXPECTED-RESULT(12). MOVE "Batch reference number" TO SCENARIO-DESC(12). *> Test case 13: Contains punctuation (invalid) MOVE "TEST.123" TO TEST-VALUE(13). MOVE "N" TO EXPECTED-RESULT(13). MOVE "Contains period character" TO SCENARIO-DESC(13). *> Test case 14: Long alphanumeric string MOVE "VERYLONGIDENTIFIER12345" TO TEST-VALUE(14). MOVE "Y" TO EXPECTED-RESULT(14). MOVE "Long alphanumeric identifier" TO SCENARIO-DESC(14). *> Test case 15: Empty field MOVE SPACES TO TEST-VALUE(15). MOVE "N" TO EXPECTED-RESULT(15). MOVE "Empty field" TO SCENARIO-DESC(15). DISPLAY " Initialized 15 comprehensive test scenarios". DISPLAY " ". EXECUTE-VALIDATION-TESTS. DISPLAY "2. Executing Validation Tests:". DISPLAY " ============================". PERFORM VARYING CURRENT-TEST-INDEX FROM 1 BY 1 UNTIL CURRENT-TEST-INDEX > 15 MOVE TEST-VALUE(CURRENT-TEST-INDEX) TO ENTITY-VALUE IF ENTITY-VALUE IS ALPHANUMERIC MOVE "VALID" TO VALIDATION-OUTCOME ELSE MOVE "INVALID" TO VALIDATION-OUTCOME END-IF ADD 1 TO TOTAL-TESTS-RUN EVALUATE TRUE WHEN EXPECTED-RESULT(CURRENT-TEST-INDEX) = "Y" AND VALIDATION-OUTCOME = "VALID" ADD 1 TO SUCCESSFUL-TESTS DISPLAY " Test " CURRENT-TEST-INDEX ": PASS - '" ENTITY-VALUE "'" DISPLAY " Scenario: " SCENARIO-DESC(CURRENT-TEST-INDEX) WHEN EXPECTED-RESULT(CURRENT-TEST-INDEX) = "N" AND VALIDATION-OUTCOME = "INVALID" ADD 1 TO SUCCESSFUL-TESTS DISPLAY " Test " CURRENT-TEST-INDEX ": PASS - '" ENTITY-VALUE "' correctly rejected" WHEN OTHER ADD 1 TO FAILED-TESTS DISPLAY " Test " CURRENT-TEST-INDEX ": FAIL - '" ENTITY-VALUE "' unexpected result" END-EVALUATE END-PERFORM. COMPUTE ACCURACY-RATE = (SUCCESSFUL-TESTS / TOTAL-TESTS-RUN) * 100. DISPLAY " ". DISPLAY " Test Execution Summary:". DISPLAY " Total tests executed: " TOTAL-TESTS-RUN. DISPLAY " Successful tests: " SUCCESSFUL-TESTS. DISPLAY " Failed tests: " FAILED-TESTS. DISPLAY " Accuracy rate: " ACCURACY-RATE "%". DISPLAY " ". ANALYZE-CHARACTER-COMPOSITION. DISPLAY "3. Character Composition Analysis:". DISPLAY " ===============================". MOVE "Product123ABC!@#" TO ENTITY-VALUE. MOVE 0 TO ALPHABETIC-COUNT NUMERIC-COUNT MIXED-COUNT SPECIAL-CHAR-COUNT WHITESPACE-COUNT. COMPUTE FIELD-LENGTH = FUNCTION LENGTH(FUNCTION TRIM(ENTITY-VALUE)). DISPLAY " Analyzing string: '" ENTITY-VALUE "'". DISPLAY " Total length: " FIELD-LENGTH " characters". PERFORM VARYING CHAR-POSITION FROM 1 BY 1 UNTIL CHAR-POSITION > FIELD-LENGTH MOVE ENTITY-VALUE(CHAR-POSITION:1) TO CURRENT-CHARACTER EVALUATE TRUE WHEN CURRENT-CHARACTER IS ALPHABETIC ADD 1 TO ALPHABETIC-COUNT WHEN CURRENT-CHARACTER IS NUMERIC ADD 1 TO NUMERIC-COUNT WHEN CURRENT-CHARACTER = SPACE ADD 1 TO WHITESPACE-COUNT WHEN OTHER ADD 1 TO SPECIAL-CHAR-COUNT END-EVALUATE END-PERFORM. COMPUTE TOTAL-CHAR-COUNT = ALPHABETIC-COUNT + NUMERIC-COUNT + SPECIAL-CHAR-COUNT + WHITESPACE-COUNT. COMPUTE MIXED-COUNT = ALPHABETIC-COUNT + NUMERIC-COUNT. DISPLAY " Character composition breakdown:". DISPLAY " Alphabetic characters: " ALPHABETIC-COUNT. DISPLAY " Numeric characters: " NUMERIC-COUNT. DISPLAY " Alphanumeric total: " MIXED-COUNT. DISPLAY " Special characters: " SPECIAL-CHAR-COUNT. DISPLAY " Whitespace characters: " WHITESPACE-COUNT. DISPLAY " Total characters: " TOTAL-CHAR-COUNT. IF MIXED-COUNT = TOTAL-CHAR-COUNT DISPLAY " Classification: PURE ALPHANUMERIC" DISPLAY " ALPHANUMERIC class result: TRUE" ELSE DISPLAY " Classification: CONTAINS NON-ALPHANUMERIC" DISPLAY " ALPHANUMERIC class result: FALSE" END-IF. DISPLAY " ". VALIDATE-BUSINESS-ENTITIES. DISPLAY "4. Business Entity Validation:". DISPLAY " ============================". *> Initialize sample business data MOVE "CUST12345ABC" TO CUSTOMER-ID. MOVE "PROD789XYZ001" TO PRODUCT-SKU. MOVE "EMP2023001" TO EMPLOYEE-NUMBER. MOVE "ORD20231215ABC" TO ORDER-REFERENCE. MOVE "TXN987654321" TO TRANSACTION-ID. MOVE "BATCH001" TO BATCH-NUMBER. DISPLAY " Business Entity Validation Requirements:". DISPLAY " - Customer IDs must be alphanumeric only". DISPLAY " - Product SKUs must be alphanumeric only". DISPLAY " - Employee numbers must be alphanumeric". DISPLAY " - Order references must be alphanumeric". DISPLAY " - Transaction IDs must be alphanumeric". DISPLAY " - Batch numbers must be alphanumeric". DISPLAY " ". *> Validate customer ID MOVE "CUSTOMER-ID" TO ENTITY-NAME. MOVE CUSTOMER-ID TO ENTITY-VALUE. PERFORM VALIDATE-ALPHANUMERIC-ENTITY. *> Validate product SKU MOVE "PRODUCT-SKU" TO ENTITY-NAME. MOVE PRODUCT-SKU TO ENTITY-VALUE. PERFORM VALIDATE-ALPHANUMERIC-ENTITY. *> Validate employee number MOVE "EMPLOYEE-NUMBER" TO ENTITY-NAME. MOVE EMPLOYEE-NUMBER TO ENTITY-VALUE. PERFORM VALIDATE-ALPHANUMERIC-ENTITY. *> Validate order reference MOVE "ORDER-REFERENCE" TO ENTITY-NAME. MOVE ORDER-REFERENCE TO ENTITY-VALUE. PERFORM VALIDATE-ALPHANUMERIC-ENTITY. *> Validate transaction ID MOVE "TRANSACTION-ID" TO ENTITY-NAME. MOVE TRANSACTION-ID TO ENTITY-VALUE. PERFORM VALIDATE-ALPHANUMERIC-ENTITY. *> Validate batch number MOVE "BATCH-NUMBER" TO ENTITY-NAME. MOVE BATCH-NUMBER TO ENTITY-VALUE. PERFORM VALIDATE-ALPHANUMERIC-ENTITY. DISPLAY " ". VALIDATE-ALPHANUMERIC-ENTITY. MOVE 0 TO INVALID-CHAR-POS. MOVE SPACES TO FIRST-INVALID-CHAR DETAILED-ANALYSIS. IF ENTITY-VALUE IS ALPHANUMERIC MOVE "VALID" TO VALIDATION-OUTCOME STRING "Entity contains only letters and numbers" DELIMITED BY SIZE INTO DETAILED-ANALYSIS ELSE MOVE "INVALID" TO VALIDATION-OUTCOME PERFORM FIND-FIRST-NON-ALPHANUMERIC-CHAR STRING "Non-alphanumeric character '" FIRST-INVALID-CHAR "' found at position " INVALID-CHAR-POS DELIMITED BY SIZE INTO DETAILED-ANALYSIS END-IF. DISPLAY " " ENTITY-NAME ": '" ENTITY-VALUE "' - " VALIDATION-OUTCOME. DISPLAY " Analysis: " DETAILED-ANALYSIS. FIND-FIRST-NON-ALPHANUMERIC-CHAR. COMPUTE FIELD-LENGTH = FUNCTION LENGTH(FUNCTION TRIM(ENTITY-VALUE)). PERFORM VARYING CHAR-POSITION FROM 1 BY 1 UNTIL CHAR-POSITION > FIELD-LENGTH OR INVALID-CHAR-POS > 0 MOVE ENTITY-VALUE(CHAR-POSITION:1) TO CURRENT-CHARACTER IF CURRENT-CHARACTER IS NOT ALPHANUMERIC MOVE CHAR-POSITION TO INVALID-CHAR-POS MOVE CURRENT-CHARACTER TO FIRST-INVALID-CHAR END-IF END-PERFORM. DEMONSTRATE-DATA-CLEANSING. DISPLAY "5. Data Cleansing Demonstration:". DISPLAY " ==============================". DISPLAY " Data cleansing using ALPHANUMERIC validation:". *> Test various data cleansing scenarios MOVE "ID-123-ABC" TO ENTITY-VALUE. DISPLAY " Input: '" ENTITY-VALUE "'". PERFORM CLEAN-NON-ALPHANUMERIC-DATA. MOVE "PROD@567#XYZ" TO ENTITY-VALUE. DISPLAY " Input: '" ENTITY-VALUE "'". PERFORM CLEAN-NON-ALPHANUMERIC-DATA. MOVE "USER 123 NAME" TO ENTITY-VALUE. DISPLAY " Input: '" ENTITY-VALUE "'". PERFORM CLEAN-NON-ALPHANUMERIC-DATA. MOVE "CLEAN123DATA" TO ENTITY-VALUE. DISPLAY " Input: '" ENTITY-VALUE "'". PERFORM CLEAN-NON-ALPHANUMERIC-DATA. DISPLAY " ". CLEAN-NON-ALPHANUMERIC-DATA. MOVE SPACES TO DETAILED-ANALYSIS. MOVE 0 TO CHAR-POSITION. COMPUTE FIELD-LENGTH = FUNCTION LENGTH(FUNCTION TRIM(ENTITY-VALUE)). PERFORM VARYING CHAR-POSITION FROM 1 BY 1 UNTIL CHAR-POSITION > FIELD-LENGTH MOVE ENTITY-VALUE(CHAR-POSITION:1) TO CURRENT-CHARACTER IF CURRENT-CHARACTER IS ALPHANUMERIC STRING DETAILED-ANALYSIS CURRENT-CHARACTER DELIMITED BY SIZE INTO DETAILED-ANALYSIS END-IF END-PERFORM. IF ENTITY-VALUE IS ALPHANUMERIC DISPLAY " Output: '" ENTITY-VALUE "' (no changes needed)" ELSE DISPLAY " Output: '" DETAILED-ANALYSIS "' (cleaned)" DISPLAY " Status: Non-alphanumeric characters removed" END-IF. DISPLAY-COMPREHENSIVE-ANALYSIS. DISPLAY "6. Comprehensive Analysis Summary:". DISPLAY " ===============================". DISPLAY " ALPHANUMERIC Class Characteristics:". DISPLAY " - Validates letters (A-Z, a-z) and digits (0-9)". DISPLAY " - Returns TRUE for any combination of letters/numbers". DISPLAY " - Spaces and special characters cause FALSE result". DISPLAY " - Empty fields return FALSE". DISPLAY " - Most flexible of the character class tests". DISPLAY " ". DISPLAY " Business Applications:". DISPLAY " - Customer ID validation". DISPLAY " - Product SKU verification". DISPLAY " - Employee number validation". DISPLAY " - Account number checking". DISPLAY " - Transaction ID validation". DISPLAY " - Mixed identifier formats". DISPLAY " ". DISPLAY " Data Quality Benefits:". DISPLAY " - Flexible validation for mixed content". DISPLAY " - Support for alphanumeric identifiers". DISPLAY " - Data cleansing operations". DISPLAY " - Format standardization". DISPLAY " - Input sanitization". DISPLAY " ". DISPLAY " Performance Results:". DISPLAY " Total validations performed: " TOTAL-TESTS-RUN. DISPLAY " Overall accuracy achieved: " ACCURACY-RATE "%". DISPLAY " Character analysis completed successfully".

Best Practices and Guidelines

Recommended Practices

  • Use ALPHANUMERIC for flexible mixed-content validation
  • Apply for customer IDs, product codes, and employee numbers
  • Combine with length validation for comprehensive checking
  • Implement data cleansing routines for input sanitization
  • Use for password basic validation before complexity checks
  • Test with representative business identifier formats
  • Document validation rules and accepted formats clearly
  • Consider case-sensitivity requirements for your application

Common Pitfalls

  • Forgetting that spaces and punctuation invalidate results
  • Not handling empty fields which always return FALSE
  • Using when stricter validation (pure numeric) is needed
  • Poor error reporting without character position details
  • Not considering international alphanumeric characters
  • Accepting too broad input when specific format required
  • Missing validation on data import and conversion
  • Not testing edge cases with mixed character combinations

Related COBOL Concepts

  • ALPHABETIC - Class condition for alphabetic characters only
  • NUMERIC - Class condition for numeric characters only
  • ALPHABETIC-UPPER - Class condition for uppercase letters
  • ALPHABETIC-LOWER - Class condition for lowercase letters
  • CLASS - User-defined character classes
  • IF statement - Conditional testing using class conditions
  • INSPECT - Character examination and transformation
  • FUNCTION TRIM - String trimming functions