IBM Support

PH70652: NON-DISPLAY CHARACTERS CAUSE IGZ0335W IN COBOL JSON PARSE

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • According to the JSON specification, control characters (UTF-8
    range 0x000x1F) must either be escaped or are not allowed.
    However, the COBOL runtime is inadvertently mapping these
    disallowed UTF-8 control characters to incorrect EBCDIC values.
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED: Users of Enterprise COBOL V6.4 and later     *
    *                 releases running programs which parse        *
    *                 JSON text using the JSON PARSE statement     *
    *                 with the ENCODING phrase.                    *
    ****************************************************************
    * PROBLEM DESCRIPTION: When the JSON PARSE statement processes *
    *                      JSON text containing select EBCDIC      *
    *                      characters (such as X'060708090A'),     *
    *                      the COBOL Runtime unexpectedly issues   *
    *                      message IGZ0335W, identifying the       *
    *                      JSON text as invalid.                   *
    ****************************************************************
    * RECOMMENDATION: Install the provided PTF.                    *
    ****************************************************************
    Per JSON standards, Unicode control characters
    (U+0000 through U+001F) must be escaped. The COBOL Runtime
    maps them to incorrect EBCDIC characters during
    its validity checking process. Consequently, EBCDIC characters
    which do not require escaping are erroneously
    rejected, issuing IGZ0335W.
    
    For example, in the following program, IGZ0335W is issued
    even though the EBCDIC characters specified in X'060708090A'
    do not require escaping.
    
    CBL CP(1140)
    IDENTIFICATION DIVISION.
    PROGRAM-ID. DEMO.
    DATA DIVISION.
    WORKING-STORAGE SECTION.
    01 JSON-TEXT PIC X(50) VALUE ' '.
    01 KEY1 PIC X(10).
    PROCEDURE DIVISION.
        STRING ' {"KEY1": "'
                X'060708090A'
               ' "}'
        DELIMITED SIZE INTO JSON-TEXT
        JSON PARSE JSON-TEXT INTO KEY1
             WITH DETAIL
             ENCODING 1140
        GOBACK.
    
    Actual output:
    
    IGZ0335W During execution of the JSON PARSE statement on line
    18 of program DEMO, the JSON text in KEY1 was found to be
    invalid. At offset 11, X'06' was found, but one of NON-CONTROL
    CHARACTERS (Value X'00' - X'3F') was expected.
    
    COB0604T/K COB0605T/K
    

Problem conclusion

  • The COBOL Runtime logic has been corrected to properly map
    Unicode control characters to their corresponding EBCDIC
    equivalents.
    
    The following table defines the specific UTF-8 to EBCDIC
    mappings for characters that must be escaped:
    
    Mapping from UTF-8 to EBCDIC(UTF-8 -> EBCDIC):
    00 -> 00 : NUL (Null)
    01 -> 01 : SOH (Start of Heading)
    02 -> 02 : STX (Start of Text)
    03 -> 03 : ETX (End of Text)
    04 -> 37 : EOT (End of Transmission)
    05 -> 2D : ENQ (Enquiry)
    06 -> 2E : ACK (Acknowledge)
    07 -> 2F : BEL (Bell)
    08 -> 16 : BS  (Backspace)
    09 -> 05 : HT  (Horizontal Tabulation)
    0A -> 25 : LF  (Line Feed)
    0B -> 0B : VT  (Vertical Tabulation)
    0C -> 0C : FF  (Form Feed)
    0D -> 0D : CR  (Carriage Return)
    0E -> 0E : SO  (Locking Shift One (Shift Out))
    0F -> 0F : SI  (Locking Shift Zero (Shift In))
    10 -> 10 : DLE (Data Link Escape)
    11 -> 11 : DC1 (Device Control One)
    12 -> 12 : DC2 (Device Control Two)
    13 -> 13 : DC3 (Device Control Three)
    14 -> 3C : DC4 (Device Control Four)
    15 -> 3D : NAK (Negative Acknowledge)
    16 -> 32 : SYN (Synchronous Idle)
    17 -> 26 : ETB (End of Transmission Block)
    18 -> 18 : CAN (Cancel)
    19 -> 19 : EM  (End of Medium)
    1A -> 3F : SUB (Substitute)
    1B -> 27 : ESC (Escape)
    1C -> 1C : IFS (Information File Separator)
    1D -> 1D : IGS (Group Separator)
    1E -> 1E : IRS (Record Separator)
    1F -> 1F : IUS (Unit Separator)
    
    For more information, see the following IBM reference:
    
    COBOL Language Reference
    > PROCEDURE DIVISION
    >> PROCEDURE DIVISION statements
    >>> JSON PARSE statement
    >>>> Control character mapping table between UTF-8 and EBCDIC
    
    COB0604T/K COB0605T/K
    

Temporary fix

Comments

APAR Information

  • APAR number

    PH70652

  • Reported component name

    LE ENT COBOL LI

  • Reported component ID

    568819812

  • Reported release

    7F0

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2026-03-24

  • Closed date

    2026-04-17

  • Last modified date

    2026-05-02

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    UO07528 UO07529 UO07530

Modules/Macros

  • IGZBXITA IGZCCCHK IGZCEV4  IGZCFREM IGZCGETM IGZCJNI2 IGZCLOAD
    IGZGLUE  IGZLLIBV IGZRIDT  IGZRTMON IGZSETRT IGZTRUE  IGZXAPI
    IGZXCA31 IGZXCDA  IGZXD24  IGZXDMR  IGZXJNI2 IGZXLPIO IGZXLPKA
    IGZXLPKB IGZXLPKC IGZXLPKD IGZXLPKE IGZXLPKF IGZXLPKG IGZXPK2
    

Fix information

  • Fixed component name

    LE ENT COBOL LI

  • Fixed component ID

    568819812

Applicable component levels

  • R7D0 PSY UO07528

       UP26/04/28 P F604

  • R7E0 PSY UO07529

       UP26/04/28 P F604

  • R7F0 PSY UO07530

       UP26/04/28 P F604

Fix is available

  • Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SS6SG3","label":"Enterprise COBOL for z\/OS"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7F0","Line of Business":{"code":"LOB70","label":"Z TPS"}}]

Document Information

Modified date:
02 May 2026