Learn about ENCODING in COBOL, including character set handling, data representation, and internationalization support.
ENCODING in COBOL determines how character data is represented in memory and files. It is crucial for proper data handling, especially in international applications or when dealing with multiple systems.
12345678910111213141516ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CUSTOMER-FILE ASSIGN TO "CUSTFILE" ORGANIZATION IS LINE SEQUENTIAL CODE-SET IS UTF-8. DATA DIVISION. FILE SECTION. FD CUSTOMER-FILE RECORDING MODE IS V RECORD IS VARYING IN SIZE. 01 CUSTOMER-RECORD. 05 CUSTOMER-NAME PIC N(50). 05 CUSTOMER-ADDR PIC N(100).
1234567WORKING-STORAGE SECTION. 01 WS-UTF8-DATA PIC X(100). 01 WS-NATIONAL-DATA PIC N(50). PROCEDURE DIVISION. MOVE FUNCTION NATIONAL-OF(WS-UTF8-DATA, UTF-8) TO WS-NATIONAL-DATA
1234567891011121314151617WORKING-STORAGE SECTION. 01 WS-SOURCE-DATA PIC X(100). 01 WS-UTF8-DATA PIC X(200). 01 WS-UTF16-DATA PIC N(100). 01 WS-EBCDIC-DATA PIC X(100). PROCEDURE DIVISION. *> Convert from EBCDIC to UTF-8 MOVE FUNCTION DISPLAY-OF( FUNCTION NATIONAL-OF( WS-SOURCE-DATA, EBCDIC), UTF-8) TO WS-UTF8-DATA *> Convert from UTF-8 to UTF-16 MOVE FUNCTION NATIONAL-OF( WS-UTF8-DATA, UTF-8) TO WS-UTF16-DATA
Processing international characters with proper encoding:
123456789101112131415161718WORKING-STORAGE SECTION. 01 WS-INTERNATIONAL. 05 WS-JAPANESE PIC N(10). 05 WS-CHINESE PIC N(10). 05 WS-KOREAN PIC N(10). 01 WS-UTF8-OUTPUT PIC X(60). PROCEDURE DIVISION. *> Convert to UTF-8 for output MOVE FUNCTION DISPLAY-OF( WS-JAPANESE, UTF-8) TO WS-UTF8-OUTPUT(1:20) MOVE FUNCTION DISPLAY-OF( WS-CHINESE, UTF-8) TO WS-UTF8-OUTPUT(21:20) MOVE FUNCTION DISPLAY-OF( WS-KOREAN, UTF-8) TO WS-UTF8-OUTPUT(41:20)
12345678910111213141516171819202122232425WORKING-STORAGE SECTION. 01 WS-SOURCE PIC X(100). 01 WS-TARGET PIC N(50). 01 WS-ERROR-FLAG PIC X VALUE 'N'. 88 CONVERSION-ERROR VALUE 'Y'. 88 CONVERSION-SUCCESS VALUE 'N'. PROCEDURE DIVISION. MOVE 'N' TO WS-ERROR-FLAG PERFORM CONVERT-DATA IF CONVERSION-ERROR PERFORM HANDLE-CONVERSION-ERROR ELSE PERFORM PROCESS-CONVERTED-DATA END-IF. CONVERT-DATA. MOVE FUNCTION NATIONAL-OF( WS-SOURCE, UTF-8) TO WS-TARGET ON EXCEPTION SET CONVERSION-ERROR TO TRUE NOT ON EXCEPTION CONTINUE END-CONVERT
123456789101112131415161718192021222324WORKING-STORAGE SECTION. 01 WS-EXCHANGE-BUFFER. 05 WS-BUFFER-DATA PIC X(1000). 05 WS-BUFFER-ENC PIC X(10). 01 WS-INTERNAL-DATA PIC N(500). PROCEDURE DIVISION. *> Determine source encoding EVALUATE WS-BUFFER-ENC WHEN "UTF-8" MOVE FUNCTION NATIONAL-OF( WS-BUFFER-DATA, UTF-8) TO WS-INTERNAL-DATA WHEN "ASCII" MOVE FUNCTION NATIONAL-OF( WS-BUFFER-DATA, ASCII) TO WS-INTERNAL-DATA WHEN "EBCDIC" MOVE FUNCTION NATIONAL-OF( WS-BUFFER-DATA, EBCDIC) TO WS-INTERNAL-DATA WHEN OTHER PERFORM HANDLE-UNKNOWN-ENCODING END-EVALUATE