Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
💻 COBOL

COBOL Character Set Handling

Intermediate 🕑 10 min read 👁 0 views

COBOL Character Set Handling

Handle different character encodings in COBOL programs.

EBCDIC vs ASCII

  • Mainframe COBOL uses EBCDIC
  • Distributed COBOL often uses ASCII
  • Collating sequences differ

Collating Sequence

```cobol OBJECT-COMPUTER. computer-name PROGRAM COLLATING SEQUENCE IS STANDARD-1. ```

Character Conversion

```cobol INSPECT WS-DATA CONVERTING 'abcdefghijklmnopqrstuvwxyz' TO 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'. ```

Hex Values

```cobol MOVE X'00' TO WS-NULL. MOVE X'40' TO WS-EBCDIC-SPACE. ```

NATIONAL Data

For Unicode: ```cobol 01 WS-UNICODE PIC N(20) USAGE NATIONAL. ```

CODEPAGE Compiler Option

```cobol CBL CODEPAGE(1140) ``` Specifies source code encoding.

Best Practices

  • Know your platform's encoding
  • Use NATIONAL for Unicode
  • Test with special characters

Code Example

       IDENTIFICATION DIVISION.
       PROGRAM-ID. CHARSET-DEMO.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-TEXT PIC X(26) VALUE 'abcdefghijklmnopqrstuvwxyz'.
       01 WS-UPPER PIC X(26) VALUE 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.
       01 WS-DATA PIC X(20) VALUE 'Hello World 123'.
       01 WS-HEX-SPACE PIC X VALUE X'40'.
       01 WS-HEX-NULL PIC X VALUE X'00'.
       PROCEDURE DIVISION.
      * Convert to uppercase
           INSPECT WS-DATA CONVERTING
               'abcdefghijklmnopqrstuvwxyz'
               TO 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
           DISPLAY 'Uppercase: ' WS-DATA
           
      * Replace special chars
           INSPECT WS-DATA REPLACING ALL X'40' BY '-'
           DISPLAY 'Replaced: ' WS-DATA
           
           STOP RUN.