COBOL2002 言語 拡張仕様編


24.3.6 日本語項目の扱い(-JPN,Alnum)

-JPN,Alnumオプションは,日本語項目,日本語編集項目を英数字項目,英数字編集項目として扱う。例えば,PIC N(5)は,PIC X(10)とみなされる。-JPN,Alnumオプションの指定によって日本語の扱いが異なる例を次に示す。

(例1)日本語項目と英数字項目間の転記の相違
       MOVE 英数字項目 TO 日本語項目.
  • -JPN,Alnumオプション指定時:

    英数字項目間の転記の規則に従って転記される。受け取り側作用対象の方が長い場合は,転記が終わった位置より右側の文字位置に半角の空白(X'20')が埋められる。

  • -JPN,Alnumオプション未指定時:

    日本語項目同士の転記でないためコンパイルエラーとなる。

(例2)空白の転記
       01 日本語項目 PIC N(5).
           MOVE SPACE TO 日本語項目.
  • -JPN,Alnumオプション指定時:

    半角の空白(X'20')が転記される。

  • -JPN,Alnumオプション未指定時:

    全角の空白(X'8140')が転記される。

(例3)日本語項目に対するVALUE句
       01 日本語項目 PIC N(2) VALUE '漢字'.
       01 日本語項目 PIC N(2) VALUE ZERO.
  • -JPN,Alnumオプション指定時:

    日本語直接定数,英数字定数,表意定数のどれを指定してもエラーにならない。なお,英数字定数,表意定数(SPACE(S)以外)はメインフレーム(VOS3)のCOBOLでは指定できないため,日本語直接定数と表意定数のSPACE(S)だけを使用した方が良い。

  • -JPN,Alnumオプション未指定時:

    日本語直接定数または表意定数のSPACE(S)でなければならない。したがって,(例3)はコンパイルエラーとなる。

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「9.16.88 VALUE句

(例4)部分参照での相違
       01 NIHONGO PIC N(10) VALUE N'1234567890'.
  • -JPN,Alnumオプション指定時:

    NIHONGO(3 : 4)は,N'23'となる。

  • -JPN,Alnumオプション未指定時:

    NIHONGO(3 : 4)は,N'3456'となる。

(例5)INSPECT文での相違

次のコード表現の場合の例を示す。

N'モ'=X'8382'

N'÷'=X'8180'

N'a'=X'8281'

N'亜'=X'889F'

          :
       01 NIHONGO PIC N(3) VALUE N'モ÷a'.
       01 I       PIC S9(9) COMP VALUE +0.
          :
           INSPECT NIHONGO TALLYING I FOR ALL N'a'
                           REPLACING ALL N'a' BY N'亜'.
          :
  • -JPN,Alnumオプション指定時:

    Iは,2となる。

    NIHONGOは,X'83889F80889F'となる。

  • -JPN,Alnumオプション未指定時:

    Iは,1となる。

    NIHONGOは,N'モ÷亜'となる。

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「10.8.25 INSPECT文

(例6)STRING文での相違
          :
       01 NIHONGO0 PIC N(6) VALUE ALL N'0'.
       01 NIHONGO1 PIC N(2) VALUE ALL N'1'.
       01 NIHONGO2 PIC N(2) VALUE ALL N'2'.
       01 PTR      PIC S9(9) COMP VALUE +3.
          :
           STRING NIHONGO1 DELIMITED BY SIZE
                  NIHONGO2 DELIMITED BY SIZE
             INTO NIHONGO0 WITH POINTER PTR.
          :
  • -JPN,Alnumオプション指定時:

    NIHONGO0は,N'011220'となる。

  • -JPN,Alnumオプション未指定時:

    NIHONGO0は,N'001122'となる。

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「10.8.47 STRING文

(例7)UNSTRING文での相違

次のコード表現の場合の例を示す。

N'モ'=X'8382'

N'÷'=X'8180'

N'a'=X'8281'

          :
       01  NIHONGO1 PIC N(5) VALUE N'モモ÷a÷'.
       01  NIHONGO2 PIC N(3).
          :
           UNSTRING NIHONGO1 DELIMITED BY ALL N'a'
               INTO NIHONGO2 .
          :
  • -JPN,Alnumオプション指定時:

    NIHONGO2は,X'838283202020'となる。

  • -JPN,Alnumオプション未指定時:

    NIHONGO2は,N'モモ÷'となる。

【標準仕様との関連】

COBOL2002 言語 標準仕様編」 「10.8.52 UNSTRING文