Data conversion transforms data between different types and formats. Learn to convert between numeric and character formats, change data representations, and handle format transformations in COBOL programs.
12345678910111213141516WORKING-STORAGE SECTION. 01 NUMERIC-FIELD PIC 9(6) VALUE 123456. 01 CHARACTER-FIELD PIC X(6). 01 FORMATTED-FIELD PIC X(10). PROCEDURE DIVISION. *> Basic numeric to character conversion MOVE NUMERIC-FIELD TO CHARACTER-FIELD DISPLAY 'Numeric as character: ' CHARACTER-FIELD *> Formatted conversion with editing MOVE NUMERIC-FIELD TO FORMATTED-FIELD DISPLAY 'Formatted: ' FORMATTED-FIELD *> Using intrinsic functions MOVE FUNCTION NUMVAL(NUMERIC-FIELD) TO CHARACTER-FIELD.
Convert numeric fields to character format using MOVE statements. COBOL automatically handles the conversion based on the target field's PICTURE clause. Use editing characters for formatted output.
12345678910111213141516171819WORKING-STORAGE SECTION. 01 CHARACTER-FIELD PIC X(6) VALUE '123456'. 01 NUMERIC-FIELD PIC 9(6). 01 VALIDATION-FLAG PIC X VALUE 'N'. PROCEDURE DIVISION. *> Validate before conversion IF CHARACTER-FIELD IS NUMERIC MOVE CHARACTER-FIELD TO NUMERIC-FIELD MOVE 'Y' TO VALIDATION-FLAG DISPLAY 'Converted to numeric: ' NUMERIC-FIELD ELSE DISPLAY 'Error: Non-numeric data in character field' END-IF. *> Using intrinsic functions IF FUNCTION NUMVAL(CHARACTER-FIELD) > 0 MOVE FUNCTION NUMVAL(CHARACTER-FIELD) TO NUMERIC-FIELD END-IF.
Convert character fields to numeric format after validating the data. Use class conditions to check if character data is numeric before conversion. Use intrinsic functions for more complex conversions.
1234567891011121314151617181920WORKING-STORAGE SECTION. 01 DISPLAY-NUMERIC PIC 9(6) VALUE 123456. 01 COMP-NUMERIC PIC 9(6) COMP. 01 COMP3-NUMERIC PIC 9(6) COMP-3. 01 COMP5-NUMERIC PIC 9(6) COMP-5. PROCEDURE DIVISION. *> Convert between numeric formats MOVE DISPLAY-NUMERIC TO COMP-NUMERIC DISPLAY 'DISPLAY to COMP: ' COMP-NUMERIC MOVE COMP-NUMERIC TO COMP3-NUMERIC DISPLAY 'COMP to COMP-3: ' COMP3-NUMERIC MOVE COMP3-NUMERIC TO COMP5-NUMERIC DISPLAY 'COMP-3 to COMP-5: ' COMP5-NUMERIC *> Convert back to display format MOVE COMP5-NUMERIC TO DISPLAY-NUMERIC DISPLAY 'COMP-5 to DISPLAY: ' DISPLAY-NUMERIC.
Convert between different numeric formats: DISPLAY (character), COMP (binary), COMP-3 (packed decimal), and COMP-5 (native binary). Each format has different storage requirements and performance characteristics.
123456789101112131415161718192021222324252627WORKING-STORAGE SECTION. 01 YYYYMMDD-DATE PIC 9(8) VALUE 20231225. 01 MMDDYYYY-DATE PIC X(10). 01 DDMMYYYY-DATE PIC X(10). 01 DISPLAY-DATE PIC X(12). PROCEDURE DIVISION. *> Convert YYYYMMDD to MM/DD/YYYY STRING YYYYMMDD-DATE(5:2) '/' YYYYMMDD-DATE(7:2) '/' YYYYMMDD-DATE(1:4) INTO MMDDYYYY-DATE END-STRING *> Convert YYYYMMDD to DD/MM/YYYY STRING YYYYMMDD-DATE(7:2) '/' YYYYMMDD-DATE(5:2) '/' YYYYMMDD-DATE(1:4) INTO DDMMYYYY-DATE END-STRING *> Convert to readable format STRING YYYYMMDD-DATE(5:2) '/' YYYYMMDD-DATE(7:2) '/' YYYYMMDD-DATE(1:4) INTO DISPLAY-DATE END-STRING.
Convert date formats using reference modification and STRING statements. Transform between YYYYMMDD, MM/DD/YYYY, DD/MM/YYYY, and other date formats for different display and processing requirements.
1234567891011121314151617WORKING-STORAGE SECTION. 01 MIXED-CASE PIC X(20) VALUE 'Hello World'. 01 UPPER-CASE PIC X(20). 01 LOWER-CASE PIC X(20). PROCEDURE DIVISION. *> Convert to uppercase MOVE FUNCTION UPPER-CASE(MIXED-CASE) TO UPPER-CASE DISPLAY 'Uppercase: ' UPPER-CASE *> Convert to lowercase MOVE FUNCTION LOWER-CASE(MIXED-CASE) TO LOWER-CASE DISPLAY 'Lowercase: ' LOWER-CASE *> Convert specific portions MOVE FUNCTION UPPER-CASE(MIXED-CASE(1:5)) TO UPPER-CASE(1:5) DISPLAY 'Partial uppercase: ' UPPER-CASE.
Convert character case using intrinsic functions UPPER-CASE and LOWER-CASE. These functions handle mixed-case text and can be applied to entire fields or specific portions using reference modification.
123456789101112131415161718192021WORKING-STORAGE SECTION. 01 AMOUNT PIC 9(9)V99 VALUE 123456789. 01 CURRENCY-DISPLAY PIC X(15). 01 CURRENCY-SYMBOL PIC X VALUE '$'. PROCEDURE DIVISION. *> Convert to currency format STRING CURRENCY-SYMBOL AMOUNT(1:3) ',' AMOUNT(4:3) ',' AMOUNT(7:3) '.' AMOUNT(10:2) INTO CURRENCY-DISPLAY END-STRING DISPLAY 'Currency format: ' CURRENCY-DISPLAY *> Alternative using editing 01 EDITED-AMOUNT PIC $,$$$,$$9.99. MOVE AMOUNT TO EDITED-AMOUNT DISPLAY 'Edited amount: ' EDITED-AMOUNT.
Convert numeric amounts to currency format with symbols, commas, and decimal places. Use STRING statements for custom formatting or PICTURE editing characters for standard currency display.
123456789101112131415161718192021222324252627VALIDATE-AND-CONVERT. *> Validate numeric data IF INPUT-FIELD IS NUMERIC MOVE INPUT-FIELD TO NUMERIC-FIELD DISPLAY 'Valid numeric conversion' ELSE DISPLAY 'Error: Non-numeric data' MOVE 0 TO NUMERIC-FIELD END-IF. *> Validate alphabetic data IF NAME-FIELD IS ALPHABETIC MOVE FUNCTION UPPER-CASE(NAME-FIELD) TO UPPER-NAME DISPLAY 'Valid alphabetic conversion' ELSE DISPLAY 'Error: Non-alphabetic data in name field' MOVE SPACES TO UPPER-NAME END-IF. *> Validate date format IF DATE-FIELD IS NUMERIC AND FUNCTION LENGTH(DATE-FIELD) = 8 MOVE DATE-FIELD TO VALID-DATE DISPLAY 'Valid date format' ELSE DISPLAY 'Error: Invalid date format' MOVE 0 TO VALID-DATE END-IF.
Validate data before conversion to ensure data integrity. Check data types, lengths, and formats before performing conversions. Provide meaningful error messages and default values for invalid data.
12345678910111213141516*> Efficient conversion patterns *> Use COMP fields for calculations 01 CALCULATION-FIELD PIC 9(9)V99 COMP. 01 DISPLAY-FIELD PIC 9(9)V99. *> Convert only when needed IF DISPLAY-REQUIRED = 'Y' MOVE CALCULATION-FIELD TO DISPLAY-FIELD DISPLAY 'Amount: ' DISPLAY-FIELD END-IF. *> Batch conversions for efficiency PERFORM CONVERT-BATCH-DATA VARYING I FROM 1 BY 1 UNTIL I > RECORD-COUNT MOVE NUMERIC-DATA(I) TO CHARACTER-DATA(I) END-PERFORM.
Optimize conversion performance by using appropriate data types for calculations, converting only when necessary, and batching conversions for efficiency. Consider memory usage and processing time for large datasets.