MainframeMaster

COBOL Data Processing

Data processing encompasses comprehensive manipulation, transformation, and analysis of data using various COBOL operations. Learn arithmetic processing, string manipulation, file operations, and data validation techniques.

Arithmetic Data Processing

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
WORKING-STORAGE SECTION. 01 ARITHMETIC-PROCESSING. 05 INPUT-DATA. 10 AMOUNT-1 PIC 9(6)V99. 10 AMOUNT-2 PIC 9(6)V99. 10 AMOUNT-3 PIC 9(6)V99. 05 PROCESSED-DATA. 10 TOTAL-AMOUNT PIC 9(9)V99. 10 AVERAGE-AMOUNT PIC 9(6)V99. 10 PERCENTAGE PIC 9(3)V99. 10 DISCOUNT-AMOUNT PIC 9(6)V99. PROCEDURE DIVISION. PERFORM ARITHMETIC-DATA-PROCESSING ARITHMETIC-DATA-PROCESSING. MOVE 1000.50 TO AMOUNT-1 MOVE 1500.75 TO AMOUNT-2 MOVE 2000.25 TO AMOUNT-3 *> Calculate total amount ADD AMOUNT-1 AMOUNT-2 AMOUNT-3 GIVING TOTAL-AMOUNT *> Calculate average DIVIDE TOTAL-AMOUNT BY 3 GIVING AVERAGE-AMOUNT *> Calculate percentage COMPUTE PERCENTAGE = (AMOUNT-1 / TOTAL-AMOUNT) * 100 *> Calculate discount MULTIPLY TOTAL-AMOUNT BY 0.10 GIVING DISCOUNT-AMOUNT DISPLAY 'Arithmetic processing results:' DISPLAY 'Total Amount: ' TOTAL-AMOUNT DISPLAY 'Average Amount: ' AVERAGE-AMOUNT DISPLAY 'Percentage: ' PERCENTAGE '%' DISPLAY 'Discount: ' DISCOUNT-AMOUNT.

Perform arithmetic data processing using ADD, SUBTRACT, MULTIPLY, DIVIDE, and COMPUTE statements. Calculate totals, averages, percentages, and other mathematical operations for data analysis.

String Data Processing

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
WORKING-STORAGE SECTION. 01 STRING-PROCESSING. 05 INPUT-STRINGS. 10 FIRST-NAME PIC X(15). 10 LAST-NAME PIC X(20). 10 MIDDLE-INITIAL PIC X. 10 PHONE-NUMBER PIC X(12). 05 PROCESSED-STRINGS. 10 FULL-NAME PIC X(40). 10 FORMATTED-PHONE PIC X(14). 10 INITIALS PIC X(5). 10 DISPLAY-NAME PIC X(50). PROCEDURE DIVISION. PERFORM STRING-DATA-PROCESSING STRING-DATA-PROCESSING. MOVE 'JOHN' TO FIRST-NAME MOVE 'SMITH' TO LAST-NAME MOVE 'A' TO MIDDLE-INITIAL MOVE '1234567890' TO PHONE-NUMBER *> Concatenate full name STRING FIRST-NAME ' ' LAST-NAME INTO FULL-NAME END-STRING *> Format phone number STRING '(' PHONE-NUMBER(1:3) ') ' PHONE-NUMBER(4:3) '-' PHONE-NUMBER(7:4) INTO FORMATTED-PHONE END-STRING *> Create initials STRING FIRST-NAME(1:1) '.' MIDDLE-INITIAL '.' LAST-NAME(1:1) '.' INTO INITIALS END-STRING *> Create display name STRING FULL-NAME ' (' FORMATTED-PHONE ')' INTO DISPLAY-NAME END-STRING DISPLAY 'String processing results:' DISPLAY 'Full Name: ' FULL-NAME DISPLAY 'Formatted Phone: ' FORMATTED-PHONE DISPLAY 'Initials: ' INITIALS DISPLAY 'Display Name: ' DISPLAY-NAME.

Process string data using STRING statements for concatenation and formatting. Combine multiple strings, format data for display, and create structured output from individual components.

Data Validation and Cleaning

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
WORKING-STORAGE SECTION. 01 DATA-VALIDATION-CLEANING. 05 RAW-DATA. 10 CUSTOMER-ID PIC X(10). 10 CUSTOMER-NAME PIC X(30). 10 CUSTOMER-PHONE PIC X(15). 10 CUSTOMER-EMAIL PIC X(40). 05 CLEANED-DATA. 10 VALID-CUSTOMER-ID PIC 9(6). 10 CLEANED-CUSTOMER-NAME PIC X(30). 10 FORMATTED-PHONE PIC X(12). 10 VALIDATED-EMAIL PIC X(40). 05 VALIDATION-FLAGS. 10 ID-VALID PIC X. 10 NAME-VALID PIC X. 10 PHONE-VALID PIC X. 10 EMAIL-VALID PIC X. PROCEDURE DIVISION. PERFORM DATA-VALIDATION-CLEANING DATA-VALIDATION-CLEANING. MOVE ' 123456 ' TO CUSTOMER-ID MOVE 'john smith ' TO CUSTOMER-NAME MOVE '(123) 456-7890' TO CUSTOMER-PHONE MOVE 'john@email.com' TO CUSTOMER-EMAIL *> Clean and validate customer ID PERFORM CLEAN-CUSTOMER-ID *> Clean customer name PERFORM CLEAN-CUSTOMER-NAME *> Format phone number PERFORM FORMAT-PHONE-NUMBER *> Validate email PERFORM VALIDATE-EMAIL DISPLAY 'Data validation and cleaning results:' DISPLAY 'Valid ID: ' VALID-CUSTOMER-ID DISPLAY 'Cleaned Name: ' CLEANED-CUSTOMER-NAME DISPLAY 'Formatted Phone: ' FORMATTED-PHONE DISPLAY 'Validated Email: ' VALIDATED-EMAIL. CLEAN-CUSTOMER-ID. *> Remove spaces and validate numeric INSPECT CUSTOMER-ID REPLACING ALL SPACES BY ZEROS IF CUSTOMER-ID IS NUMERIC MOVE CUSTOMER-ID TO VALID-CUSTOMER-ID MOVE 'Y' TO ID-VALID ELSE MOVE 'N' TO ID-VALID END-IF.

Implement data validation and cleaning procedures to ensure data quality. Remove unwanted characters, validate data formats, and clean data for consistent processing.

Data Transformation

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
WORKING-STORAGE SECTION. 01 DATA-TRANSFORMATION. 05 SOURCE-DATA. 10 SOURCE-DATE PIC 9(8). 10 SOURCE-AMOUNT PIC 9(9)V99. 10 SOURCE-STATUS PIC X. 05 TRANSFORMED-DATA. 10 FORMATTED-DATE PIC X(10). 10 CURRENCY-AMOUNT PIC X(15). 10 STATUS-DESCRIPTION PIC X(20). 05 TRANSFORMATION-RULES. 10 DATE-FORMAT PIC X(10) VALUE 'MM/DD/YYYY'. 10 CURRENCY-SYMBOL PIC X VALUE '$'. 10 DECIMAL-PLACES PIC 9 VALUE 2. PROCEDURE DIVISION. PERFORM DATA-TRANSFORMATION-OPERATION DATA-TRANSFORMATION-OPERATION. MOVE 20231225 TO SOURCE-DATE MOVE 1500.50 TO SOURCE-AMOUNT MOVE 'A' TO SOURCE-STATUS *> Transform date format STRING SOURCE-DATE(5:2) '/' SOURCE-DATE(7:2) '/' SOURCE-DATE(1:4) INTO FORMATTED-DATE END-STRING *> Transform amount to currency format STRING CURRENCY-SYMBOL SOURCE-AMOUNT INTO CURRENCY-AMOUNT END-STRING *> Transform status code to description EVALUATE SOURCE-STATUS WHEN 'A' MOVE 'ACTIVE' TO STATUS-DESCRIPTION WHEN 'I' MOVE 'INACTIVE' TO STATUS-DESCRIPTION WHEN 'S' MOVE 'SUSPENDED' TO STATUS-DESCRIPTION WHEN OTHER MOVE 'UNKNOWN' TO STATUS-DESCRIPTION END-EVALUATE DISPLAY 'Data transformation results:' DISPLAY 'Formatted Date: ' FORMATTED-DATE DISPLAY 'Currency Amount: ' CURRENCY-AMOUNT DISPLAY 'Status Description: ' STATUS-DESCRIPTION.

Transform data from one format to another using STRING statements, EVALUATE statements, and formatting rules. Convert dates, format currency, and transform codes to descriptions.

Batch Data Processing

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
WORKING-STORAGE SECTION. 01 BATCH-PROCESSING. 05 BATCH-CONTROL. 10 BATCH-SIZE PIC 9(4) VALUE 1000. 10 RECORDS-PROCESSED PIC 9(6) VALUE 0. 10 RECORDS-SUCCESSFUL PIC 9(6) VALUE 0. 10 RECORDS-FAILED PIC 9(6) VALUE 0. 05 BATCH-STATISTICS. 10 TOTAL-AMOUNT PIC 9(12)V99 VALUE 0. 10 AVERAGE-AMOUNT PIC 9(9)V99. 10 PROCESSING-TIME PIC 9(6). 10 SUCCESS-RATE PIC 9(3)V99. PROCEDURE DIVISION. PERFORM BATCH-DATA-PROCESSING BATCH-DATA-PROCESSING. MOVE FUNCTION CURRENT-TIME TO START-TIME OPEN INPUT INPUT-FILE OPEN OUTPUT OUTPUT-FILE PERFORM UNTIL EOF READ INPUT-FILE AT END SET EOF TO TRUE NOT AT END ADD 1 TO RECORDS-PROCESSED PERFORM PROCESS-SINGLE-RECORD IF PROCESSING-SUCCESSFUL ADD 1 TO RECORDS-SUCCESSFUL WRITE OUTPUT-RECORD FROM PROCESSED-RECORD ELSE ADD 1 TO RECORDS-FAILED END-IF END-READ END-PERFORM CLOSE INPUT-FILE OUTPUT-FILE MOVE FUNCTION CURRENT-TIME TO END-TIME COMPUTE PROCESSING-TIME = END-TIME - START-TIME COMPUTE SUCCESS-RATE = (RECORDS-SUCCESSFUL / RECORDS-PROCESSED) * 100 DISPLAY 'Batch processing completed:' DISPLAY 'Records processed: ' RECORDS-PROCESSED DISPLAY 'Records successful: ' RECORDS-SUCCESSFUL DISPLAY 'Records failed: ' RECORDS-FAILED DISPLAY 'Success rate: ' SUCCESS-RATE '%' DISPLAY 'Processing time: ' PROCESSING-TIME ' seconds'.

Implement batch data processing for handling large volumes of data efficiently. Process records in batches, track statistics, monitor success rates, and measure processing performance.

Data Aggregation and Summarization

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
WORKING-STORAGE SECTION. 01 DATA-AGGREGATION. 05 TRANSACTION-DATA. 10 TRANSACTION-AMOUNT PIC 9(9)V99. 10 TRANSACTION-DATE PIC 9(8). 10 TRANSACTION-TYPE PIC X. 05 AGGREGATED-DATA. 10 DAILY-TOTAL PIC 9(12)V99 VALUE 0. 10 MONTHLY-TOTAL PIC 9(12)V99 VALUE 0. 10 YEARLY-TOTAL PIC 9(12)V99 VALUE 0. 10 TRANSACTION-COUNT PIC 9(8) VALUE 0. 05 SUMMARY-STATISTICS. 10 AVERAGE-TRANSACTION PIC 9(9)V99. 10 MAX-TRANSACTION PIC 9(9)V99 VALUE 0. 10 MIN-TRANSACTION PIC 9(9)V99 VALUE 999999.99. PROCEDURE DIVISION. PERFORM DATA-AGGREGATION-OPERATION DATA-AGGREGATION-OPERATION. *> Process transactions and aggregate data PERFORM UNTIL EOF READ TRANSACTION-FILE AT END SET EOF TO TRUE NOT AT END ADD TRANSACTION-AMOUNT TO DAILY-TOTAL ADD TRANSACTION-AMOUNT TO MONTHLY-TOTAL ADD TRANSACTION-AMOUNT TO YEARLY-TOTAL ADD 1 TO TRANSACTION-COUNT *> Track min/max values IF TRANSACTION-AMOUNT > MAX-TRANSACTION MOVE TRANSACTION-AMOUNT TO MAX-TRANSACTION END-IF IF TRANSACTION-AMOUNT < MIN-TRANSACTION MOVE TRANSACTION-AMOUNT TO MIN-TRANSACTION END-IF END-READ END-PERFORM *> Calculate average IF TRANSACTION-COUNT > 0 DIVIDE YEARLY-TOTAL BY TRANSACTION-COUNT GIVING AVERAGE-TRANSACTION END-IF DISPLAY 'Data aggregation results:' DISPLAY 'Daily Total: ' DAILY-TOTAL DISPLAY 'Monthly Total: ' MONTHLY-TOTAL DISPLAY 'Yearly Total: ' YEARLY-TOTAL DISPLAY 'Transaction Count: ' TRANSACTION-COUNT DISPLAY 'Average Transaction: ' AVERAGE-TRANSACTION DISPLAY 'Max Transaction: ' MAX-TRANSACTION DISPLAY 'Min Transaction: ' MIN-TRANSACTION.

Perform data aggregation and summarization by calculating totals, averages, counts, and statistical measures. Track min/max values and generate comprehensive summaries from transaction data.

Data Processing Error Handling

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
WORKING-STORAGE SECTION. 01 PROCESSING-ERROR-HANDLING. 05 ERROR-CONTROL. 10 ERROR-COUNT PIC 9(4) VALUE 0. 10 MAX-ERRORS PIC 9(4) VALUE 100. 10 PROCESSING-STATUS PIC X. 88 PROCESSING-SUCCESS VALUE 'S'. 88 PROCESSING-FAILED VALUE 'F'. 05 ERROR-TYPES. 10 VALIDATION-ERROR PIC 9(4) VALUE 0. 10 CALCULATION-ERROR PIC 9(4) VALUE 0. 10 I-O-ERROR PIC 9(4) VALUE 0. PROCEDURE DIVISION. PERFORM PROCESSING-WITH-ERROR-HANDLING PROCESSING-WITH-ERROR-HANDLING. MOVE 'S' TO PROCESSING-STATUS PERFORM UNTIL EOF OR PROCESSING-FAILED READ INPUT-FILE AT END SET EOF TO TRUE NOT AT END PERFORM VALIDATE-RECORD IF VALIDATION-SUCCESSFUL PERFORM PROCESS-RECORD IF PROCESSING-SUCCESSFUL WRITE OUTPUT-RECORD ELSE ADD 1 TO CALCULATION-ERROR ADD 1 TO ERROR-COUNT END-IF ELSE ADD 1 TO VALIDATION-ERROR ADD 1 TO ERROR-COUNT END-IF *> Check error threshold IF ERROR-COUNT > MAX-ERRORS MOVE 'F' TO PROCESSING-STATUS DISPLAY 'Error threshold exceeded - stopping processing' END-IF END-READ END-PERFORM DISPLAY 'Processing error summary:' DISPLAY 'Total errors: ' ERROR-COUNT DISPLAY 'Validation errors: ' VALIDATION-ERROR DISPLAY 'Calculation errors: ' CALCULATION-ERROR DISPLAY 'I/O errors: ' I-O-ERROR.

Implement comprehensive error handling for data processing operations. Track different error types, monitor error thresholds, and provide detailed error reporting for troubleshooting.

Performance Optimization

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
WORKING-STORAGE SECTION. 01 PERFORMANCE-OPTIMIZATION. 05 OPTIMIZATION-METRICS. 10 PROCESSING-TIME PIC 9(6). 10 RECORDS-PER-SECOND PIC 9(6). 10 MEMORY-USAGE PIC 9(8). 10 I-O-OPERATIONS PIC 9(6). 05 OPTIMIZATION-TECHNIQUES. 10 BATCH-SIZE PIC 9(4) VALUE 1000. 10 BUFFER-SIZE PIC 9(6) VALUE 10000. 10 PARALLEL-PROCESSING PIC X VALUE 'N'. PROCEDURE DIVISION. PERFORM OPTIMIZED-DATA-PROCESSING OPTIMIZED-DATA-PROCESSING. MOVE FUNCTION CURRENT-TIME TO START-TIME MOVE 0 TO I-O-OPERATIONS *> Use optimized processing techniques PERFORM PROCESS-IN-BATCHES MOVE FUNCTION CURRENT-TIME TO END-TIME COMPUTE PROCESSING-TIME = END-TIME - START-TIME COMPUTE RECORDS-PER-SECOND = RECORDS-PROCESSED / PROCESSING-TIME DISPLAY 'Performance optimization results:' DISPLAY 'Processing time: ' PROCESSING-TIME ' seconds' DISPLAY 'Records per second: ' RECORDS-PER-SECOND DISPLAY 'I/O operations: ' I-O-OPERATIONS DISPLAY 'Memory usage: ' MEMORY-USAGE ' bytes'.

Optimize data processing performance using batch processing, efficient I/O operations, memory management, and performance monitoring. Measure and improve processing rates for better efficiency.