示例: 获取并转换代码页标识

以下示例演示了如何使用可调用服务 _iwzGetLocaleCP 和 _iwzGetCCSID 分别获取当前使用的区域设置和EBCDIC代码页,并将代码页ID转换为相应的CCSID。


cbl pgmname(lm)
       Identification Division.
       Program-ID.  "Samp1".
       Data Division.
       Working-Storage Section.
       01 locale-in-effect.
          05 ll-cc             pic x(5).
          05 filler-period     pic x.
          05 ASCII-CP          Pic x(14).
       01 EBCDIC-CP            pic x(10).
       01 CCSID                pic s9(5) comp-5.
       01 RC                   pic s9(5) comp-5.
       01 n                    pic 99.

       Procedure Division.
       Get-locale-and-codepages section.
       Get-locale.
           Display "Start Samp1."
           Call "_iwzGetLocaleCP"
             using locale-in-effect, EBCDIC-CP
           Move 0 to n
           Inspect locale-in-effect
             tallying n for characters before initial x'00'
           Display "locale in effect: " locale-in-effect (1 : n)
           Move 0 to n
          Inspect EBCDIC-CP
             tallying n for characters before initial x'00'
          Display "EBCDIC code page in effect: "
            EBCDIC-CP (1 : n).

      Get-CCSID-for-EBCDIC-CP.
          Call "_iwzGetCCSID" using EBCDIC-CP, CCSID returning RC
          Evaluate RC
            When 0
              Display "CCSID for " EBCDIC-CP (1 : n) " is " CCSID
            When 1
              Display EBCDIC-CP (1 : n)
                      " does not have a CCSID value."
            When other
              Display EBCDIC-CP (1 : n) " is not a valid code page."
          End-Evaluate.

      Done.
          Goback.

如果将语言环境设置为 ja_JP.IBM-943 (set LC_ALL=ja_JP.IBM-943) ,样本程序的输出为:


Start Samp1.
locale in effect: ja_JP.IBM-943
EBCDIC code page in effect: IBM-1399
CCSID for IBM-1399 is 0000001399