💻 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.