MainframeMaster

COBOL Data Representation

Data representation defines how data is stored, formatted, and interpreted in COBOL programs using PICTURE clauses, data types, and storage formats. Learn to represent different kinds of information effectively.

Numeric Data Representation

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
WORKING-STORAGE SECTION. 01 NUMERIC-DATA-REPRESENTATION. 05 INTEGER-NUMBERS. 10 SMALL-INTEGER PIC 9(4). *> 4-digit integer 10 LARGE-INTEGER PIC 9(8). *> 8-digit integer 10 SIGNED-INTEGER PIC S9(6). *> Signed 6-digit integer 05 DECIMAL-NUMBERS. 10 DECIMAL-AMOUNT PIC 9(6)V99. *> 6 digits, 2 decimal places 10 PRECISE-DECIMAL PIC 9(9)V999. *> 9 digits, 3 decimal places 10 SIGNED-DECIMAL PIC S9(7)V99. *> Signed decimal 05 COMPUTATIONAL-NUMBERS. 10 COMP-NUMBER PIC 9(6) COMP. *> Binary representation 10 COMP3-NUMBER PIC 9(6) COMP-3. *> Packed decimal 10 COMP5-NUMBER PIC 9(6) COMP-5. *> Native binary PROCEDURE DIVISION. PERFORM DEMONSTRATE-NUMERIC-REPRESENTATION DEMONSTRATE-NUMERIC-REPRESENTATION. MOVE 1234 TO SMALL-INTEGER MOVE 12345678 TO LARGE-INTEGER MOVE -50000 TO SIGNED-INTEGER MOVE 1500.50 TO DECIMAL-AMOUNT MOVE 123456.789 TO PRECISE-DECIMAL MOVE -7500.25 TO SIGNED-DECIMAL DISPLAY 'Numeric data representation:' DISPLAY 'Small Integer: ' SMALL-INTEGER DISPLAY 'Large Integer: ' LARGE-INTEGER DISPLAY 'Signed Integer: ' SIGNED-INTEGER DISPLAY 'Decimal Amount: ' DECIMAL-AMOUNT DISPLAY 'Precise Decimal: ' PRECISE-DECIMAL DISPLAY 'Signed Decimal: ' SIGNED-DECIMAL.

Represent numeric data using different PICTURE clauses: 9 for digits, V for decimal point, S for sign, and COMP/COMP-3/COMP-5 for different storage formats. Choose appropriate formats for data precision and storage efficiency.

Character Data Representation

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 CHARACTER-DATA-REPRESENTATION. 05 ALPHANUMERIC-DATA. 10 CUSTOMER-NAME PIC X(30). *> Alphanumeric field 10 ADDRESS PIC X(50). *> Alphanumeric field 10 PHONE-NUMBER PIC X(12). *> Alphanumeric field 05 ALPHABETIC-DATA. 10 FIRST-NAME PIC A(15). *> Alphabetic only 10 LAST-NAME PIC A(20). *> Alphabetic only 10 MIDDLE-INITIAL PIC A. *> Single character 05 MIXED-DATA. 10 PRODUCT-CODE PIC X(10). *> Mixed characters 10 SERIAL-NUMBER PIC X(15). *> Mixed characters 10 DESCRIPTION PIC X(100). *> Mixed characters PROCEDURE DIVISION. PERFORM DEMONSTRATE-CHARACTER-REPRESENTATION DEMONSTRATE-CHARACTER-REPRESENTATION. MOVE 'JOHN SMITH' TO CUSTOMER-NAME MOVE '123 MAIN STREET' TO ADDRESS MOVE '(555) 123-4567' TO PHONE-NUMBER MOVE 'JOHN' TO FIRST-NAME MOVE 'SMITH' TO LAST-NAME MOVE 'A' TO MIDDLE-INITIAL MOVE 'PROD-001' TO PRODUCT-CODE MOVE 'SN123456789' TO SERIAL-NUMBER DISPLAY 'Character data representation:' DISPLAY 'Customer Name: ' CUSTOMER-NAME DISPLAY 'Address: ' ADDRESS DISPLAY 'Phone: ' PHONE-NUMBER DISPLAY 'First Name: ' FIRST-NAME DISPLAY 'Last Name: ' LAST-NAME DISPLAY 'Middle Initial: ' MIDDLE-INITIAL DISPLAY 'Product Code: ' PRODUCT-CODE DISPLAY 'Serial Number: ' SERIAL-NUMBER.

Represent character data using X for alphanumeric fields (letters, digits, special characters) and A for alphabetic fields (letters only). Use appropriate field sizes for different data types.

Edited Data Representation

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 EDITED-DATA-REPRESENTATION. 05 CURRENCY-FORMAT. 10 RAW-AMOUNT PIC 9(9)V99. 10 EDITED-AMOUNT PIC $,$$$,$$9.99. *> Currency format 10 SIMPLE-CURRENCY PIC $999.99. *> Simple currency 05 DATE-FORMAT. 10 RAW-DATE PIC 9(8). 10 EDITED-DATE PIC 99/99/9999. *> Date format 10 LONG-DATE PIC 99/99/9999. *> Long date format 05 PHONE-FORMAT. 10 RAW-PHONE PIC 9(10). 10 EDITED-PHONE PIC (999) 999-9999. *> Phone format 10 SIMPLE-PHONE PIC 999-999-9999. *> Simple phone 05 SPECIAL-FORMATS. 10 ZERO-SUPPRESSED PIC ZZZZZ9. *> Zero suppression 10 SIGNED-FORMAT PIC +,$$$,$$9.99. *> Signed format 10 NEGATIVE-FORMAT PIC -,$$$,$$9.99. *> Negative format PROCEDURE DIVISION. PERFORM DEMONSTRATE-EDITED-REPRESENTATION DEMONSTRATE-EDITED-REPRESENTATION. MOVE 1234567.89 TO RAW-AMOUNT MOVE RAW-AMOUNT TO EDITED-AMOUNT MOVE 20231225 TO RAW-DATE MOVE RAW-DATE TO EDITED-DATE MOVE 1234567890 TO RAW-PHONE MOVE RAW-PHONE TO EDITED-PHONE DISPLAY 'Edited data representation:' DISPLAY 'Raw Amount: ' RAW-AMOUNT DISPLAY 'Edited Amount: ' EDITED-AMOUNT DISPLAY 'Raw Date: ' RAW-DATE DISPLAY 'Edited Date: ' EDITED-DATE DISPLAY 'Raw Phone: ' RAW-PHONE DISPLAY 'Edited Phone: ' EDITED-PHONE.

Use edited data representation with special characters for formatting: $ for currency, / for dates, () for phone numbers, Z for zero suppression, and + or - for sign indicators.

Data Storage Formats

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
WORKING-STORAGE SECTION. 01 DATA-STORAGE-FORMATS. 05 DISPLAY-FORMAT. 10 DISPLAY-NUMERIC PIC 9(6). *> Character format 10 DISPLAY-ALPHANUMERIC PIC X(20). *> Character format 05 COMPUTATIONAL-FORMATS. 10 COMP-BINARY PIC 9(6) COMP. *> Binary format 10 COMP-PACKED PIC 9(6) COMP-3. *> Packed decimal 10 COMP-NATIVE PIC 9(6) COMP-5. *> Native binary 05 SPECIAL-FORMATS. 10 INDEX-FORMAT PIC 9(6) INDEX. *> Index value 10 POINTER-FORMAT USAGE POINTER. *> Memory address 10 PROCEDURE-POINTER USAGE PROCEDURE-POINTER. PROCEDURE DIVISION. PERFORM DEMONSTRATE-STORAGE-FORMATS DEMONSTRATE-STORAGE-FORMATS. MOVE 123456 TO DISPLAY-NUMERIC MOVE 'HELLO WORLD' TO DISPLAY-ALPHANUMERIC MOVE 123456 TO COMP-BINARY MOVE 123456 TO COMP-PACKED MOVE 123456 TO COMP-NATIVE DISPLAY 'Data storage formats:' DISPLAY 'Display Numeric: ' DISPLAY-NUMERIC DISPLAY 'Display Alphanumeric: ' DISPLAY-ALPHANUMERIC DISPLAY 'COMP Binary: ' COMP-BINARY DISPLAY 'COMP Packed: ' COMP-PACKED DISPLAY 'COMP Native: ' COMP-NATIVE.

Choose appropriate storage formats based on usage: DISPLAY for character representation, COMP for binary storage, COMP-3 for packed decimal, INDEX for table indexing, and POINTER for memory addresses.

Data Type Conversion

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 DATA-TYPE-CONVERSION. 05 SOURCE-DATA. 10 STRING-NUMBER PIC X(10). 10 NUMERIC-VALUE PIC 9(6). 10 ALPHANUMERIC-DATA PIC X(20). 05 CONVERTED-DATA. 10 CONVERTED-NUMBER PIC 9(6). 10 CONVERTED-STRING PIC X(10). 10 UPPERCASE-DATA PIC X(20). 10 LOWERCASE-DATA PIC X(20). PROCEDURE DIVISION. PERFORM DEMONSTRATE-DATA-TYPE-CONVERSION DEMONSTRATE-DATA-TYPE-CONVERSION. MOVE '123456' TO STRING-NUMBER MOVE 789012 TO NUMERIC-VALUE MOVE 'Hello World' TO ALPHANUMERIC-DATA *> Convert string to numeric MOVE STRING-NUMBER TO CONVERTED-NUMBER *> Convert numeric to string MOVE NUMERIC-VALUE TO CONVERTED-STRING *> Convert to uppercase MOVE FUNCTION UPPER-CASE(ALPHANUMERIC-DATA) TO UPPERCASE-DATA *> Convert to lowercase MOVE FUNCTION LOWER-CASE(ALPHANUMERIC-DATA) TO LOWERCASE-DATA DISPLAY 'Data type conversion:' DISPLAY 'String to Number: ' CONVERTED-NUMBER DISPLAY 'Number to String: ' CONVERTED-STRING DISPLAY 'Uppercase: ' UPPERCASE-DATA DISPLAY 'Lowercase: ' LOWERCASE-DATA.

Convert between different data types using MOVE statements and intrinsic functions. Convert strings to numbers, numbers to strings, and change case using UPPER-CASE and LOWER-CASE functions.

Data Representation Best Practices

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
WORKING-STORAGE SECTION. 01 DATA-REPRESENTATION-BEST-PRACTICES. 05 WELL-DEFINED-DATA. 10 CUSTOMER-ID PIC 9(6). *> Clear numeric ID 10 CUSTOMER-NAME PIC X(30). *> Appropriate size 10 ACCOUNT-BALANCE PIC 9(9)V99. *> Sufficient precision 10 ACCOUNT-STATUS PIC X. *> Single character 88 STATUS-ACTIVE VALUE 'A'. 88 STATUS-INACTIVE VALUE 'I'. 05 CONSISTENT-FORMATS. 10 DATE-FIELD PIC 9(8). *> YYYYMMDD format 10 TIME-FIELD PIC 9(6). *> HHMMSS format 10 AMOUNT-FIELD PIC 9(9)V99. *> Consistent decimal places 05 APPROPRIATE-SIZES. 10 SHORT-FIELD PIC X(10). *> Appropriate for short data 10 MEDIUM-FIELD PIC X(50). *> Appropriate for medium data 10 LONG-FIELD PIC X(200). *> Appropriate for long data PROCEDURE DIVISION. PERFORM DEMONSTRATE-BEST-PRACTICES DEMONSTRATE-BEST-PRACTICES. MOVE 123456 TO CUSTOMER-ID MOVE 'JOHN SMITH' TO CUSTOMER-NAME MOVE 1500.50 TO ACCOUNT-BALANCE MOVE 'A' TO ACCOUNT-STATUS DISPLAY 'Best practices demonstration:' DISPLAY 'Customer ID: ' CUSTOMER-ID DISPLAY 'Customer Name: ' CUSTOMER-NAME DISPLAY 'Account Balance: ' ACCOUNT-BALANCE DISPLAY 'Account Status: ' ACCOUNT-STATUS IF STATUS-ACTIVE DISPLAY 'Account is active' END-IF.

Follow best practices: use appropriate data types and sizes, maintain consistent formats, define clear field purposes, use condition names for flags, and choose efficient storage formats.

Data Representation Documentation

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
WORKING-STORAGE SECTION. 01 DOCUMENTED-DATA-REPRESENTATION. 05 CUSTOMER-MASTER-DATA. *> Customer identification and basic information 10 CUSTOMER-ID PIC 9(6). *> Unique customer identifier (1-999999) 10 CUSTOMER-NAME PIC X(30). *> Customer full name (last, first middle) 10 CUSTOMER-PHONE PIC X(12). *> Customer phone number (XXX-XXX-XXXX) 10 CUSTOMER-EMAIL PIC X(40). *> Customer email address 05 FINANCIAL-DATA. *> Customer financial information 10 ACCOUNT-BALANCE PIC 9(9)V99. *> Current account balance (0-999999.99) 10 CREDIT-LIMIT PIC 9(9)V99. *> Credit limit (0-999999.99) 10 PAYMENT-TERMS PIC X(10). *> Payment terms (NET30, NET60, etc.) PROCEDURE DIVISION. PERFORM DEMONSTRATE-DOCUMENTED-REPRESENTATION DEMONSTRATE-DOCUMENTED-REPRESENTATION. MOVE 123456 TO CUSTOMER-ID MOVE 'JOHN SMITH' TO CUSTOMER-NAME MOVE '555-123-4567' TO CUSTOMER-PHONE MOVE 'john@email.com' TO CUSTOMER-EMAIL MOVE 1500.50 TO ACCOUNT-BALANCE MOVE 5000.00 TO CREDIT-LIMIT MOVE 'NET30' TO PAYMENT-TERMS DISPLAY 'Documented data representation:' DISPLAY 'Customer ID: ' CUSTOMER-ID DISPLAY 'Customer Name: ' CUSTOMER-NAME DISPLAY 'Phone: ' CUSTOMER-PHONE DISPLAY 'Email: ' CUSTOMER-EMAIL DISPLAY 'Balance: ' ACCOUNT-BALANCE DISPLAY 'Credit Limit: ' CREDIT-LIMIT DISPLAY 'Payment Terms: ' PAYMENT-TERMS.

Document data representation with clear comments explaining field purposes, data ranges, formats, and business rules. Include examples and constraints for better understanding and maintenance.

Performance Considerations

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
WORKING-STORAGE SECTION. 01 PERFORMANCE-CONSIDERATIONS. 05 EFFICIENT-DATA-TYPES. 10 COMP-NUMERIC PIC 9(6) COMP. *> Efficient for calculations 10 DISPLAY-NUMERIC PIC 9(6). *> Efficient for display 10 PACKED-DECIMAL PIC 9(6)V99 COMP-3. *> Efficient for financial 05 APPROPRIATE-SIZES. 10 SMALL-FIELD PIC X(10). *> Minimal memory usage 10 MEDIUM-FIELD PIC X(50). *> Balanced size 10 LARGE-FIELD PIC X(200). *> Sufficient for large data 05 STORAGE-OPTIMIZATION. 10 GROUPED-DATA PIC X(100). *> Group related data 10 ALIGNED-DATA PIC X(100). *> Proper alignment PROCEDURE DIVISION. PERFORM DEMONSTRATE-PERFORMANCE-CONSIDERATIONS DEMONSTRATE-PERFORMANCE-CONSIDERATIONS. MOVE 123456 TO COMP-NUMERIC MOVE 123456 TO DISPLAY-NUMERIC MOVE 1234.56 TO PACKED-DECIMAL DISPLAY 'Performance considerations:' DISPLAY 'COMP Numeric: ' COMP-NUMERIC DISPLAY 'Display Numeric: ' DISPLAY-NUMERIC DISPLAY 'Packed Decimal: ' PACKED-DECIMAL.

Consider performance when choosing data representations: use COMP for calculations, DISPLAY for I/O operations, appropriate field sizes for memory usage, and efficient storage formats for different data types.