ページの先頭行へ戻る
NetCOBOL V12.1 NetCOBOL ユーザーズガイド(他社COBOL資産移行支援編)
FUJITSU Software

A.2 変換項目詳細

それぞれの変換IDに対し、以下の5つの項目について示しています。

記述例および変換例は、特に断りがない限り、固定形式の正書法で記述しています。

m0101 $文(IF,ELSE,END)の条件判定、コメント化

変換概要

ソース中に記述している以下の$文に対し、指定した条件にしたがって判定します。原始文の選択した部分を翻訳に含めないようコメント化します。

  • $IF文

    • 形式1:$IF 定数名 [NOT] {< | > | =} 値

    • 形式2:$IF 定数名 [NOT] DEFINED

    • 形式3:$IF 指令設定 SET

  • $ELSE文

  • $END文

以降の説明では、これらの文をまとめて条件付き翻訳と呼びます。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
      $IF A DEFINED
          DISPLAY "A is defined".
      $ELSE
          DISPLAY "A is not defined".
      $END
NetCOBOL

定数Aの指定がある場合の変換例は、以下のとおりです。

0--------1--------2--------3--------4--------5--------6--------7--------8
      *IF A DEFINED
            DISPLAY "A is defined".
      *ELSE
      *     DISPLAY "A is not defined".
      *END

定数Aの指定がない場合の変換例は、以下のとおりです。

0--------1--------2--------3--------4--------5--------6--------7--------8
      *IF A DEFINED
      *     DISPLAY "A is defined".
      *ELSE
           DISPLAY "A is not defined".
      *END
補足説明
  • 条件付き翻訳の定数値は、変換情報ファイルに指定します。

    $IF文の形式により、指定形式が異なります。

    • 形式1および形式2:「CONSTANT」で指定します

    • 形式3:「DIRECTIVE」で指定します。

    指定方法の詳細は“A.4 変換情報ファイルの指定情報”の「CONSTANT」および「DIRECTIVE」を参照してください。

  • 翻訳前ソース変換機能における条件付き翻訳では、以下のようなソース中で指定する定数値は有効となりません。

    • 78定数

    • $SET文のCONSTANT指定

    変換情報ファイルで指定するよう変更してください。なお、ソース中で定数値が切り替わるような記述は、プログラム修正が必要となります。

m0102 $DISPLAY文指定時、標準出力へのテキストデータの出力

変換概要

ソースプログラム中の$DISPLAY文に対して、該当行をコメント化し、変換時に指定したテキストデータを変換メッセージ[PRCV-m0102I]として標準出力に出力します。

ただし、条件に従い除外された範囲の$DISPLAY文は除きます。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
      $DISPLAY HELLO WORLD
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
      *DISPLAY HELLO WORLD
変換メッセージ

[翻訳コマンド]

JMN0505I-I PRCV-m0102I HELLO WORLD

[変換コマンド]

PRCV-m0102I HELLO WORLD
補足説明

[翻訳コマンド] 指定したテキストデータは、診断メッセージJMN0505I-Iの埋め込み文字列として表示されます。

m0105 $SET文の変換

変換概要

任意の行に$SET文を記述している場合、重大度コードWの変換メッセージを出力します。このとき、$SET文はコメント化されます。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
      $SET FOLD-COPY-NAME"LOWER"     ← 変換メッセージ PRCV-m0105W
       IDENTIFICATION DIVISION.
       PROGRAM-ID. A.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
      *SET FOLD-COPY-NAME"LOWER"
       IDENTIFICATION DIVISION.
       PROGRAM-ID. A.
変換メッセージ
PRCV-m0105W $SET文で指定されたコンパイラ指令は有効になりません.
補足説明

指定したコンパイラ指令は有効となりません。他社COBOLのコンパイラ指令とNetCOBOLの翻訳オプションの互換性を確認してください。互換性については、“A.3 他社COBOLのコンパイラ指令”を参照してください。

m0107 NetCOBOLで予約語となる語の変換 (「-RV」を付加)

変換概要

他社COBOLでは予約語ではなく、NetCOBOLで予約語である語を変換します。該当する語の後ろに「-RV」を付加します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01 RESUME PIC 9.

           MOVE 0 TO RESUME.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01 RESUME-RV PIC 9.

           MOVE 0 TO RESUME-RV.
補足説明
  • 変換後、同一の名前がすでに定義されているか否かのチェックは行いません。

  • 次に示す位置に記述した場合は変換対象とはしません。

    • プログラム名(PROGRAM-ID段落)

    • 登録集名(COPY命令)

  • 他社COBOLの予約語の種類を変更していた場合、利用者語として使用している語が変換対象とならず、NetCOBOLの翻訳時にエラーとなる場合があります。他社COBOLの予約語をカスタマイズすることで、変換対象を増やすことができます。詳細については“付録C 予約語のカスタマイズ方法”を参照してください。

  • NetCOBOLの予約語は、翻訳オプションRSV(予約語の種類)で指定した予約語に、“COBOL文法書”の“Micro Focus同義語互換モード”で示す予約語が追加されたものとみなします。

    変換結果出力ファイルには、変換IDとともに変換を回避するRSVの値を出力します。

    ** 変換項目情報 **
    行番号 変換ID 重大度コード 詳細情報
             xx  m0107   I                          RESUME RSV(V90)

    上記の例では、"RESUME"はRSV(V90)を指定することで、NetCOBOLの予約語ではなくなります。

    予約語の変換を回避したい場合は、出力されたRSV値の指定を検討してください。

m0113 1カラム目が'', X"00" ~ X"1F" の変換

変換概要

1カラム目に「*」および「X"00" ~ X"1F"」を記述している場合、その行をコメント化します。

ただし、タブ(X"09")、復帰(X"0D")、改行(X"0A")およびデータ終了記号(X"1A")は除きます。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
*01000     MOVE  A  TO  B.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
      *01000    MOVE  A  TO  B.

m0118 251バイトを超える行に対する変換

変換概要

可変形式または自由形式において、他社COBOLのソースレコードの最大長は255バイトです。

一方、NetCOBOLの最大長は251バイトであるため、これを超える行に対して変換メッセージを出力します。

251バイトに収まるよう、語の区切りで行を折り返してください。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8-       …          ----255
       PROCEDURE DIVISION.
           DISPLAY DISPLAY-DATA-X001 DISPLAY-DATA-X002  …  DISPLAY-DATA-X019 DISPLAY-DATA-X00020.
           ↑ 変換メッセージ PRCV-m0118E
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8-       …          ----255
       PROCEDURE DIVISION.
           DISPLAY DISPLAY-DATA-X001 DISPLAY-DATA-X002  …  DISPLAY-DATA-X019 DISPLAY-DATA-X00020.
変換メッセージ
PRCV-m0118E 可変形式または自由形式の最大長(251バイト)を超える行が記述されています.

m0305 SWITCH 0~7の変換

変換概要

機能名「SWITCH 0」~「SWITCH 7」を、「SWITCH-0」~「SWITCH-7」に変換します(「-」を挿入します)。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       SPECIAL-NAMES. 
           SWITCH 0  IS  SW0
           SWITCH 7  IS  SW7
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       SPECIAL-NAMES. 
           SWITCH-0   IS  SW0
           SWITCH-7   IS  SW7

m0306 SWITCH 8の変換

変換概要

機能名「SWITCH 8」を、「SWITCH-8」に変換します(「-」を挿入します)。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       SPECIAL-NAMES. 
           SWITCH 8  IS  SW8        ← 変換メッセージ PRCV-m0306W
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       SPECIAL-NAMES. 
           SWITCH-8  IS  SW8
変換メッセージ
PRCV-m0306W SWITCH-8はSWITCH-0と同義です.同じ外部スイッチを意味します.
補足説明

NetCOBOLでは、SWITCH-8はSWITCH-0と同じ意味になるため、重大度コードWの変換メッセージを出力します。

m0307 NUMERIC SIGN IS TRAILING SEPARATE句の変換

変換概要

特殊名段落にNUMERIC SIGN句を記述している場合、データ記述項(符号付き数字項目(DISPLAY項目)、SIGN句指定なし)の基本項目に、「SIGN IS TRAILING SEPARATE」を挿入します。

なお、元の「NUMERIC SIGN句」はコメント化します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       SPECIAL-NAMES. 
           NUMERIC  SIGN  IS  TRAILING  SEPARATE. 

       01  G. 
         02  A   PIC   9(4).
         02  B   PIC  S9(4)  BINARY.
         02  C   PIC  S9(4)  SIGN LEADING.
         02  D   PIC  S9(4).
         02  E   PIC  S9(4)  DISPLAY. 

       77  F   PIC  S9(4).
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       SPECIAL-NAMES.
      *    NUMERIC  SIGN  IS  TRAILING  SEPARATE. 

       01  G. 
         02  A   PIC   9(4).
         02  B   PIC  S9(4)  BINARY.
         02  C   PIC  S9(4)  SIGN LEADING.
         02  D   PIC  S9(4)  SIGN IS TRAILING SEPARATE.
         02  E   PIC  S9(4)  DISPLAY  SIGN IS TRAILING SEPARATE. 

       77  F   PIC  S9(4)  SIGN IS TRAILING SEPARATE.
補足説明

集団項目に「SIGN句」が記述された場合、従属する項目にも適用されます。

m0310 ASSIGN句のEXTERNAL/DYNAMIC指定の削除

変換概要

ASSIGN句に「EXTERNAL/DYNAMIC」を記述している場合、これらを削除します(コメント化)。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
           SELECT  FILE1  ASSIGN  TO  EXTERNAL  FILE01.
           SELECT  FILE2  ASSIGN  TO  DYNAMIC   FILE02.

       01 FILE02 PIC X(100) VALUE "test.txt".
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
           SELECT  FILE1  ASSIGN  TO 
      *                               EXTERNAL 
                                               FILE01.
           SELECT  FILE2  ASSIGN  TO 
      *                               DYNAMIC
                                               FILE02.

       01 FILE02 PIC X(100) VALUE "test.txt".
補足説明
  • 以下の場合、本変換と同時に複数の変換を実施します。

    ASSIGN句

    条件

    同時に実施される

    変換ID

    DYNAMIC

    ファイル識別名のデータ項目が宣言されていない

    m0311

  • ASSIGN句に「EXTERNAL」を記述している場合、ファイル識別名を環境変数情報名として、プログラム実行時に、入出力処理の対象となるファイルの名前を設定します。ファイル識別名と同名のデータ項目を宣言している場合(m0311によりデータ項目が生成される場合を含む)、データ名に設定されたファイル名のファイルに対して入出力処理が行われることを避けるため、変換はエラーとなります。ファイル識別名またはデータ項目のいずれかを変名し、再度変換処理を実行してください。

m0311 動的ファイル割当てのASSIGN句データ名領域の生成

変換概要

ASSIGN句でファイル識別名として「データ名」を指定しており、かつ、そのデータ名を宣言していない場合、そのデータ名を作業場所節に生成します。

なお、作業場所節の宣言がない場合には、作業場所節を生成します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
           SELECT  FILE1  ASSIGN  TO  FILENAME.

       FD  FILE1.
       01  REC1    PIC X(80).

       WORKING-STORAGE SECTION.
       *> データ部に「FILENAME」の宣言がない。

           MOVE  "A:\FILE1.DAT"  TO  FILENAME.  *> 参照あり
           OPEN  INPUT  FILE1.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
           SELECT  FILE1  ASSIGN  TO  FILENAME.

       FD  FILE1.
       01  REC1    PIC X(80).
                 
       WORKING-STORAGE SECTION.
       01  FILENAME IS GLOBAL  PIC X(65).

           MOVE  "A:\FILE1.DAT"  TO  FILENAME.  *> 参照あり
           OPEN  INPUT  FILE1. 
補足説明
  • データ名は、該当するASSIGN句を記述しているプログラムにGLOBAL属性で生成します。

  • 他社COBOLでは、データ名をプログラム中で明示的に宣言しない場合、COBOL システムが、暗黙的に英数字項目として宣言します(領域長は65バイト)。

    NetCOBOLでは、データ名をプログラム中で明示的に宣言しない場合、外部参照と認識するため、実行時に未定義エラーとなります。

  • ASSIGN句にDYNAMICを指定している、かつ、ファイル識別名のデータ項目を宣言していない場合、m0310の変換も同時に実行します。

m0321 RECORD KEY句の分割キー指定(索引編成)の変換

変換概要

索引ファイルのRECORD KEY/ALTERNATE RECORD KEY句で、分割キーを指定している場合、変換します。また、START文、READ文での参照も変換します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
           SELECT  IXFILE  ASSIGN TO IXFILE2
                           ORGANIZATION IS INDEXED 
                           ACCESS MODE  IS DYNAMIC 
                           RECORD KEY   IS RKEY1=K1  K2
                           ALTERNATE RECORD KEY  IS RKEY2=A1  A2.

           START  IXFILE  KEY IS = RKEY1.

           READ   IXFILE  KEY IS RKEY2.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
           SELECT  IXFILE  ASSIGN  TO  IXFILE2
                           ORGANIZATION IS INDEXED 
                           ACCESS MODE  IS DYNAMIC 
      *                    RECORD KEY IS RKEY1=K1 K2
                           RECORD KEY IS       K1 K2
      *                    ALTERNATE RECORD KEY IS RKEY2=A1 A2.
                           ALTERNATE RECORD KEY IS       A1 A2.
      *     START IXFILE KEY IS = RKEY1.
            START IXFILE KEY IS =
                                  K1 K2.
      *     READ IXFILE KEY IS RKEY2.
            READ IXFILE KEY IS
                                  A1 A2.

m0403 01,77項目へのOCCURS句指定の変換

変換概要

レベル番号01/77のデータ記述項にOCCURS句の指定がある場合、「01 無名項目」を生成し、元のレベル番号を順次繰り下げます。

なお、ファイル節のレベル番号01/77のデータ記述項にOCCURS句の指定がある場合、重大度コードEの変換メッセージを出力します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       DATA DIVISION.
       FILE SECTION.
       FD FILE1.
       01  REC1 OCCURS 10.           ← 変換メッセージ PRCV-m0403E
         02 REC1-1 PIC X.
         02 REC1-2 PIC N.
       WORKING-STORAGE SECTION.
       01  G1  OCCURS  10. 
         02  A   PIC  X. 
         02  B.
           03  B1  PIC  X. 
           03  B2  PIC  X. 
         02  C   PIC X.

       77  G2  OCCURS  10  PIC  X.
           DISPLAY G1.
           DISPLAY G2.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       DATA DIVISION.
       FILE SECTION.
       FD FILE1.
       01  REC1 OCCURS 10.
         02 REC1-1 PIC X.
         02 REC1-2 PIC N.
       WORKING-STORAGE SECTION.
       01. 
         02  G1  OCCURS  10. 
           03  A   PIC  X. 
           03  B.
             04  B1  PIC  X. 
             04  B2  PIC  X. 
           03  C   PIC X.
       01. 
         02  G2  OCCURS  10  PIC  X.

           DISPLAY G1.
           DISPLAY G2.
変換メッセージ
PRCV-m0403E ファイル節のレベル番号01または77のデータ記述項にOCCURS句が指定されています.
補足説明
  • レベル番号が49の場合、50になります(翻訳時にエラーになります)。

  • レベル番号が77の場合、02になります。

  • OCCURS句指定のあるデータ記述項を、手続き部で添字付けをせずに参照している場合、翻訳時にエラーとなります。この場合、添字として1を付加します。

    例 : G1(1)

m0404 数字項目に対するCOMP-XからBINARY変換

変換概要

PIC句の属性が数字項目のUSAGE句の「COMP-X」を「BINARY」に変換します。このとき、桁数はそのままです。

なお、桁数が18桁を超える場合、重大度コードWの変換メッセージを出力します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1   PIC  9(1)  USAGE IS COMP-X.
       01  A2   PIC  9(18) USAGE IS COMP-X.
       01  A3   PIC  9(30) USAGE IS COMP-X.  ← 変換メッセージ PRCV-m0404W
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
      *01  A1   PIC  9(1)  USAGE IS COMP-X.
       01  A1   PIC  9(1)  USAGE IS BINARY.
      *01  A2   PIC  9(18) USAGE IS COMP-X.
       01  A2   PIC  9(18) USAGE IS BINARY.
      *01  A3   PIC  9(30) USAGE IS COMP-X. 
       01  A3   PIC  9(30) USAGE IS BINARY.
変換メッセージ
PRCV-m0404W 18桁を超える数字項目のUSAGE句にCOMP-Xが指定されています.
補足説明
  • 翻訳時に翻訳オプションBINARY(BYTE)が有効となります。

  • PIC句の桁数に定数名を記述している場合、変換は抑止します。

  • 桁数が18桁を超える数字項目の場合、翻訳オプションARITHMETIC(31)の指定が必要です。ただし、ARITHMETIC(31)とBINARY(BYTE)は同時に指定できないため、以下のどちらかの対応を検討してください。

    1. 翻訳オプションARITHMETIC(31)とBINARY(WORD,MLBON)を同時に指定

      注意

      2進項目の領域長は桁数より求められるワード単位となります。2進項目の領域長を意識したプログラムでは、プログラムの動作に影響がある場合があります。なお、27および28桁の場合、翻訳オプションBINARYによる領域長の変更はありません。

    2. 変換メッセージPRCV-m0404Wが出力されたデータ項目の桁数を18桁に収まるよう修正

    翻訳オプションARITHMETICおよびBINARYについては、“NetCOBOL ユーザーズガイド”の“ARITHMETIC(演算モードの指定)”および“BINARY(2進項目の扱い) ”を参照してください。

m0405 英数字項目に対するCOMP-XからBINARY変換

変換概要

PIC句の属性が英数字項目USAGE句の「COMP-X」を「BINARY」に変換します。このとき、バイト数に対応した最大桁数に変換します(数字項目になります)。

英数字項目のバイト数

数字項目の桁数

1バイト

2桁

2バイト

4桁

3バイト

7桁

4バイト

9桁

5バイト

12桁

6バイト

14桁

7バイト

16桁

8バイト

18桁

9~12バイト

28桁(*1)

13バイト

31桁(*1)

14~16バイト

変換できません(*2)

*1:重大度コードWの変換メッセージを出力します。

*2:重大度コードはEレベルで変換は実行されません。手修正が必要となります。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  B1   PIC  X(1)  USAGE IS COMP-X.
       01  B2   PIC  X(2)  USAGE IS COMP-X.
       01  B3   PIC  X(3)  USAGE IS COMP-X.
       01  B4   PIC  X(4)  USAGE IS COMP-X.
       01  B5   PIC  X(5)  USAGE IS COMP-X.
       01  B6   PIC  X(6)  USAGE IS COMP-X.
       01  B7   PIC  X(7)  USAGE IS COMP-X.
       01  B8   PIC  X(8)  USAGE IS COMP-X.
       01  B9   PIC  X(10) USAGE IS COMP-X. ← 変換メッセージ PRCV-m0405W
       01  B10  PIC  X(16) USAGE IS COMP-X. ← 変換メッセージ PRCV-m0405E
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
      *01  B1   PIC  X(1)  USAGE IS COMP-X.
       01  B1   PIC  9(02) USAGE IS BINARY.
      *01  B2   PIC  X(2)  USAGE IS COMP-X.
       01  B2   PIC  9(04) USAGE IS BINARY.
      *01  B3   PIC  X(3)  USAGE IS COMP-X.
       01  B3   PIC  9(07) USAGE IS BINARY.
      *01  B4   PIC  X(4)  USAGE IS COMP-X.
       01  B4   PIC  9(09) USAGE IS BINARY.
      *01  B5   PIC  X(5)  USAGE IS COMP-X.
       01  B5   PIC  9(12) USAGE IS BINARY.
      *01  B6   PIC  X(6)  USAGE IS COMP-X.
       01  B6   PIC  9(14) USAGE IS BINARY.
      *01  B7   PIC  X(7)  USAGE IS COMP-X.
       01  B7   PIC  9(16) USAGE IS BINARY.
      *01  B8   PIC  X(8)  USAGE IS COMP-X.
       01  B8   PIC  9(18) USAGE IS BINARY. 
      *01  B9   PIC  X(10) USAGE IS COMP-X.
       01  B9   PIC  9(28) USAGE IS BINARY. 
       01  B10  PIC  X(16) USAGE IS COMP-X.
変換メッセージ
PRCV-m0405W 8バイトを超える英数字項目のUSAGE句にCOMP-Xが指定されています.
PRCV-m0405E 8バイトを超える英数字項目のUSAGE句にCOMP-Xが指定されています.
補足説明
  • 翻訳時に翻訳オプションBINARY(BYTE)が有効となります。

  • PIC句の桁数に定数名を記述している場合、変換は抑止します。

  • 変換後の桁数が18桁を超える数字項目の場合、翻訳オプションARITHMETIC(31)の指定が必要です。ただし、ARITHMETIC(31)とBINARY(BYTE)は同時に指定できないため、以下のどちらかの対応を検討してください。

    1. 翻訳オプションARITHMETIC(31)とBINARY(WORD,MLBON)を同時に指定

      注意

      2進項目の領域長は桁数より求められるワード単位となります。2進項目の領域長を意識したプログラムでは、プログラムの動作に影響がある場合があります。なお、変換前の英数字項目が12バイトの場合、翻訳オプションBINARYによる領域長の変更はありません。

    2. 変換メッセージPRCV-m0405Wが出力されたデータ項目の桁数を18桁に収まるよう修正

    翻訳オプションARITHMETICおよびBINARYについては、“NetCOBOL ユーザーズガイド”の“ARITHMETIC(演算モードの指定)”および“BINARY(2進項目の扱い)”を参照してください。

m0406 日本語項目に表意定数ZEROまたはQUOTE指定時の変換

変換概要

日本語項目のVALUE句に表意定数ZEROまたはQUOTEが指定されている場合、日本語定数に変換します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A    PIC  N(4)  VALUE  ZERO.
       01  B    PIC  N(4)  VALUE  ALL ZERO.
       01  C    PIC  N(4)  VALUE  QUOTE. 
       01  D    PIC  N(4)  VALUE  ALL QUOTE.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A    PIC  N(4)  VALUE  ALL NC"0".
       01  B    PIC  N(4)  VALUE  ALL NC"0".
       01  C    PIC  N(4)  VALUE  ALL NC"”".
       01  D    PIC  N(4)  VALUE  ALL NC"”".
補足説明
  • 表意定数ZEROはZEROESおよびZEROSを含みます。

  • 表意定数QUOTEはQUOTESを含みます。

m0407 日本語項目に文字定数指定時の変換

変換概要

日本語項目のVALUE句に文字定数を指定している場合、文字定数を日本語定数に変換します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
        01  A    PIC  N(7)  VALUE  "富士通株式会社".
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
        01  A    PIC  N(7)  VALUE  NC"富士通株式会社".
補足説明
  • 文字定数に半角文字が含まれていた場合、日本語項目のエンコードがSJISの場合は翻訳エラーになります。

  • 文字定数を継続指定している場合、重大度コードEの変換メッセージを出力します。

    PRCV-m0407E 日本語項目のVALUE句に指定された継続指定のある文字定数は変換できません.
  • 文字定数が記号定数または名前付き定数の場合、変換対象となりません。

m0509 比較(2進/内部10進:英数字項目)の変換

変換概要

条件式において、以下の属性の場合変換します。

  • 内部10進項目と英数字項目との比較

  • 2進項目と英数字項目との比較

変換対象は、IF文またはEVALUATE文の場合です。PERFORM文(UNTIL指定)またはSEARCH文の場合、重大度コードEの変換メッセージを出力します。このとき、変換は行われません。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A   PIC  X(4).
       01  B   PIC  9(4)  PACKED-DECIMAL.
       01  C   PIC  9(4)  BINARY.

           IF  A = B 
           THEN
             DISPLAY  "*** OK ***" 
           END-IF

           EVALUATE  TRUE
           WHEN  A = B 
             DISPLAY  "*** OK ***" 
           WHEN  A = C 
             DISPLAY  "*** OK ***" 
           WHEN  OTHER 
             DISPLAY  "*** ERROR ***"
           END-EVALUATE

           PERFORM VARYING B FROM 1 BY 1 UNTIL B > A   ← 変換メッセージ PRCV-m0509E
             DISPLAY B
           END-PERFORM
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A  PIC  X(4). 
       01  B  PIC  9(4)  PACKED-DECIMAL. 
       01  C  PIC  9(4)  BINARY. 
       01  GEN--DATA--0001 IS GLOBAL  PIC 9(04). 
       01  GEN--DATA--0002 IS GLOBAL  PIC 9(04). 
       01  GEN--DATA--0003 IS GLOBAL  PIC 9(04). 

      *    IF  A = B
           MOVE  B  TO  GEN--DATA--0001
           IF  A = GEN--DATA--0001 
           THEN
             DISPLAY  "*** OK ***" 
           END-IF

           MOVE  B  TO  GEN--DATA--0002
           MOVE  C  TO  GEN--DATA--0003
           EVALUATE  TRUE
      *    WHEN  A = B
           WHEN  A = GEN--DATA--0002 
             DISPLAY  "*** OK ***" 
      *    WHEN  A = C
           WHEN  A = GEN--DATA--0003 
             DISPLAY  "*** OK ***" 
           WHEN  OTHER 
             DISPLAY  "*** ERROR ***"
           END-EVALUATE

           PERFORM VARYING B FROM 1 BY 1 UNTIL B > A
             DISPLAY B
           END-PERFORM
変換メッセージ
PRCV-m0509E PERFORM文(UNTIL指定)またはSEARCH文に指定された英数字項目と内部10進または2進項目との比較は変換できません.
補足説明
  • 2進項目には、COMP-5形式/COMP-X形式も含みます。

  • データ名は、最外部プログラムにGLOBAL属性で生成します。

  • データ名は、条件式ごとに生成し、条件式の評価の直前で転記処理(2進または内部10進→外部10進)を挿入します。このため、同じ用途のデータ名を複数生成し、不要な転記処理が挿入されることもあります。
    なお、翻訳オプションOPTIMIZEを指定することで、不要な転記処理を削減できます。

  • 生成するデータ名を指定できます。指定方法は“A.4 変換情報ファイルの指定情報”の「GENERATE-DATA-NAME」を参照してください。指定した文字列の語尾に「nnnn」(0001~)の通番を付加します。指定がない場合、「GEN--DATA--」とし、これに通番「nnnn」を付加します。

m0510 比較(2進/内部10進:文字定数)の変換

変換概要

条件式において、以下の属性の場合に変換します。

  • 内部10進項目と文字定数との比較

  • 2進項目と文字定数との比較

変換対象は、IF文またはEVALUATE文の場合です。PERFORM文(UNTIL指定)またはSEARCH文の場合、重大度コードEの変換メッセージを出力します。このとき、変換はしません。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A    PIC  9(4)  PACKED-DECIMAL.
       01  B1   PIC  9(4)  BINARY. 
       01  B2   PIC  9(2)  BINARY. 

           IF  A  =  "0123"
           THEN
             DISPLAY  "*** OK ***" 
           END-IF

           EVALUATE  TRUE
           WHEN  B1 =  "0123"
             DISPLAY  "*** OK ***" 
           WHEN  B2 =  "45"
             DISPLAY  "*** OK ***" 
           WHEN  OTHER 
             DISPLAY  "*** ERROR ***"
           END-EVALUATE

           PERFORM VARYING A FROM 1 BY 1 UNTIL A > "0123"  ← 変換メッセージ PRCV-m0510E
             DISPLAY A
           END-PERFORM
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A    PIC  9(4)  PACKED-DECIMAL. 
       01  B1   PIC  9(4)  BINARY. 
       01  B2   PIC  9(2)  BINARY. 
       01  GEN--DATA-0001 IS GLOBAL  PIC 9(04). 
       01  GEN--DATA-0002 IS GLOBAL  PIC 9(04). 
       01  GEN--DATA-0003 IS GLOBAL  PIC 9(02). 

      *    IF  A  =  "0123"
           MOVE  A  TO  GEN--DATA-0001
           IF  GEN--DATA-0001 = "0123"
           THEN
              DISPLAY  "*** OK ***" 

           END-IF
           MOVE  B1  TO  GEN--DATA-0002 
           MOVE  B2  TO  GEN--DATA-0003 
           EVALUATE  TRUE
      *    WHEN  B1 =  "0123"
           WHEN  GEN--DATA-0002 = "0123"
             DISPLAY  "*** OK ***" 
      *    WHEN  B2 =  "45"
           WHEN  GEN--DATA-0003 = "45"
             DISPLAY  "*** OK ***" 
           WHEN  OTHER 
             DISPLAY  "*** ERROR ***"
           END-EVALUATE

           PERFORM VARYING A FROM 1 BY 1 UNTIL A > "0123"
             DISPLAY A
           END-PERFORM
変換メッセージ
PRCV-m0510E PERFORM文(UNTIL指定)またはSEARCH文に指定された文字定数と内部10進または2進項目との比較は変換できません.
補足説明
  • 2進項目には、COMP-5形式/COMP-X形式も含みます。

  • データ名は、最外部プログラムにGLOBAL属性で生成します。

  • データ名は、条件式ごとに生成し、条件式の評価の直前で転記処理(2進または内部10進→外部10進)を挿入します。このため、同じ用途のデータ名を複数生成し、不要な転記処理が挿入されることもあります。
    なお、翻訳オプションOPTIMIZEを指定することで、不要な転記処理を削減できます。

  • 生成するデータ名を指定できます。指定方法は“A.4 変換情報ファイルの指定情報”の「GENERATE-DATA-NAME」を参照してください。指定した文字列の語尾に「nnnn」(0001~)の通番を付加します。指定がない場合、「GEN--DATA--」とし、これに通番「nnnn」を付加します。

  • 文字定数が記号定数または名前付き定数の場合、変換対象となりません。

m0511 比較(日本語:文字定数)の変換

変換概要

日本語項目と文字定数との比較の場合、「日本語を英数字とみなす」関数呼出しに変換します(関数名:FUNCTION CAST-ALPHANUMERIC)。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1    PIC  N(3).

           IF  A1  =  "ABCDEF" 
           THEN
             DISPLAY  "***  OK ***"
           END-IF
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
        01  A1  PIC  N(3).

      *    IF  A1  =  "ABCDEF" 
           IF  FUNCTION CAST-ALPHANUMERIC(A1)  =  "ABCDEF" 
           THEN
             DISPLAY  "***  OK ***"
           END-IF
補足説明

文字定数が記号定数または名前付き定数の場合、変換対象となりません。

m0512 比較(日本語:英数字項目/外部10進)の変換

変換概要

日本語項目と英数字または外部10進項目との比較の場合、「日本語を英数字とみなす」関数呼出しに変換します(関数名:FUNCTION CAST-ALPHANUMERIC)。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1    PIC  N(3).
       01  A2    PIC  X(6).

        IF  A1  =  A2 
           THEN
             DISPLAY  "***  OK ***"
           END-IF
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1    PIC  N(3).
       01  A2    PIC  X(6).

      *    IF  A1  =  A2 
           IF  FUNCTION CAST-ALPHANUMERIC(A1)  =  A2
           THEN
             DISPLAY  "***  OK ***"
           END-IF

m0513 比較(日本語:表意定数ZEROまたはQUOTE)の変換

変換概要

日本語項目と表意定数ZERO/QUOTEとの比較の場合、表意定数ZERO/QUOTEを日本語定数に変換します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01 A1 PIC N(8).

           IF A1 = ZERO
           THEN
             DISPLAY "***  OK  ***"
           END-IF

           IF A1 = QUOTE
           THEN
             DISPLAY "***  OK  ***"
           END-IF
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01 A1 PIC N(8).

           IF A1 = NC"0"
           THEN
             DISPLAY "***  OK  ***"
           END-IF

           IF A1 = NC"”"
           THEN
             DISPLAY "***  OK  ***"
           END-IF
補足説明
  • 表意定数ZEROはZEROESおよびZEROSを含みます。

  • 表意定数QUOTEはQUOTESを含みます。

m0514 転記(英数字項目→日本語項目)の変換

変換概要

英数字項目から日本語項目への転記の場合、「半角→全角変換」関数呼出しに変換します(関数名:FUNCTION NATIONAL)。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1    PIC  X(6) VALUE "TEST01". 
       01  A2    PIC  N(6). 

           MOVE  A1  TO  A2.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1    PIC  X(6) VALUE "TEST01". 
       01  A2    PIC  N(6). 

      *    MOVE  A1  TO  A2. 
           MOVE  FUNCTION NATIONAL(A1)  TO  A2.

m0515 転記(外部10進項目→日本語項目)の変換

変換概要

外部10進項目から日本語項目への転記の場合、「半角→全角変換」関数呼出しに変換します(関数名:FUNCTION NATIONAL)。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1    PIC  9(6) VALUE 123456. 
       01  A2    PIC  N(6). 

           MOVE  A1  TO  A2.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1    PIC  9(6) VALUE 123456. 
       01  A2    PIC  N(6). 

      *    MOVE  A1  TO  A2. 
           MOVE  FUNCTION NATIONAL(A1)  TO  A2.

m0516 転記(文字定数→日本語項目)の変換

変換概要

文字定数を日本語項目へ転記する場合、文字定数に「NC」を付加し、半角の文字定数を全角に変換して転記するように変換します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(8).

           MOVE  "ABC-日本語"  TO  A1.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(8).

      *    MOVE  "ABC-日本語"  TO  A1.
           MOVE   NC"ABC-日本語"  TO  A1.
補足説明
  • 文字定数を継続指定している場合、重大度コードEの変換メッセージを出力します。

    PRCV-m0516E 継続指定のある文字定数から日本語項目への転記は変換できません.
  • 文字定数が記号定数または名前付き定数の場合、変換対象となりません。

m0517 転記(16進定数→日本語項目)の変換

変換概要

16進定数を日本語項目へ転記する場合、日本語16進定数に変換します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(3).

            MOVE  X"816081628163"  TO  A1.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(3).

      *     MOVE  X"816081628163"  TO  A1. 
            MOVE  NX"816081628163" TO  A1.
補足説明
  • 16進定数を継続指定している場合、重大度コードEの変換メッセージを出力します。

    PRCV-m0517E 継続指定のある16進定数から日本語項目への転記は変換できません.
  • 文字定数が記号定数または名前付き定数の場合、変換対象となりません。

m0518 転記(日本語項目→英数字項目)の変換

変換概要

日本語項目から英数字項目への転記の場合、「日本語を英数字とみなす」関数呼出しに変換します(関数名:FUNCTION CAST-ALPHANUMERIC)。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(3)  VALUE "日本語".
       01  A2  PIC  X(6).

           MOVE  A1  TO  A2.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(3)  VALUE NC"日本語".
       01  A2  PIC  X(6).

      *    MOVE  A1  TO  A2.
           MOVE  FUNCTION CAST-ALPHANUMERIC(A1) TO A2.

m0519 転記(表意定数ZEROまたはQUOTE→日本語項目)の変換

変換概要

表意定数ZERO/QUOTEを日本語項目へ転記する場合、表意定数ZERO/QUOTEを日本語定数に変換します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(8).

            MOVE  ZERO       TO  A1. 
            MOVE  ALL ZERO   TO  A1. 
            MOVE  QUOTE      TO  A1. 
            MOVE  ALL QUOTE  TO  A1.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(8).

            MOVE  ALL NC"0" TO  A1. 
            MOVE  ALL NC"0" TO  A1. 
            MOVE  ALL NC"”" TO  A1. 
            MOVE  ALL NC"”" TO  A1.
補足説明
  • 表意定数ZEROはZEROESおよびZEROSを含みます。

  • 表意定数QUOTEはQUOTESを含みます。

m0520 転記(特殊レジスタ・組込み関数→日本語項目)の変換

変換概要

特殊レジスタ/組込み関数を日本語項目へ転記する場合、重大度コードEの変換メッセージを出力します。このとき、変換は行われません。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  X(8).
       01  A2  PIC  N(8).

            MOVE  CURRENT-DATE  TO  A2.               ← 変換メッセージ PRCV-m0520E
            MOVE  FUNCTION UPPER-CASE (A1)  TO  A2.   ← 変換メッセージ PRCV-m0520E
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  X(8).
       01  A2  PIC  N(8).

            MOVE  CURRENT-DATE  TO  A2.
            MOVE  FUNCTION UPPER-CASE (A1)  TO  A2.
変換メッセージ
PRCV-m0520E 特殊レジスタまたは組込み関数から日本語項目への転記は変換できません.
PRCV-m0520E 特殊レジスタまたは組込み関数から日本語項目への転記は変換できません.

m0521 転記(受取り項目が複数かつ属性が異なる場合)の変換不可

変換概要

転記で、変換対象であるが、受取り側項目が複数記述されており、かつ、それらの属性が異なる場合、重大度コードEの変換メッセージを出力します。このとき、変換は行われません。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(8).
       01  A2  PIC  X(8).
       01  A3  PIC  N(8).

            MOVE  ZERO  TO  A1  A2  A3.      ← 変換メッセージ PRCV-m0521E
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(8).
       01  A2  PIC  X(8).
       01  A3  PIC  N(8).

            MOVE  ZERO  TO  A1  A2  A3.
変換メッセージ
PRCV-m0521E 属性の異なる複数の受取り側項目への転記は変換できません.

m0522 転記(数字定数→日本語項目)の変換

変換概要

数字定数を日本語項目へ転記する場合、数字定数を「NC」を付加し、半角の文字定数を全角に変換して転記するように変換します。ただし、数字だけが転記の対象となります。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(8).

            MOVE  1            TO  A1. 
            MOVE  1.23         TO  A1. 
            MOVE  +1000        TO  A1. 
            MOVE  -0.456       TO  A1.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       01  A1  PIC  N(8).

            MOVE  NC"1"       TO  A1. 
            MOVE  NC"123"   TO  A1. 
            MOVE  NC"1000" TO  A1. 
            MOVE  NC"0456" TO  A1. 
補足説明

文字定数が記号定数または名前付き定数の場合、変換対象となりません。

m0539 INITIALIZEREPLACING句のJAPANESE指定時の変換

変換概要

INITIALIZE文のREPLACING指定に「JAPANESE」の指定がある場合、変換します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
           INITIALIZE  G1   REPLACING  JAPANESE  BY  "あ".
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
      *    INITIALIZE  G1   REPLACING  JAPANESE  BY  "あ".
           INITIALIZE  G1   REPLACING  NATIONAL  BY  NC"あ" 
                                  NATIONAL-EDITED  BY  NC"あ".

m0601 COPY文の展開

変換概要

COPY文を記述している場合、読み込んだ登録集を変換した内容をソースプログラムに展開します。

ただし、COPY文にREPLACING指定がある場合、ソースプログラムに展開しません。

このとき、登録集の変換については、変換ID[m0602]を参照してください。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
        COPY COPY001.

登録集(COPY001)の内容

0--------1--------2--------3--------4--------5--------6--------7--------8
       01 DATA01 PIC X(100).
       01 DATA02 PIC 9(9) COMP-X.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
      * COPY COPY001.
       01 DATA01 PIC X(100).
      *01 DATA02 PIC 9(9) COMP-X.
       01 DATA02 PIC 9(9) BINARY.
補足説明

[変換コマンド] 変換情報ファイルに指定があった場合だけ展開します。指定方法は“A.4 変換情報ファイルの指定情報”の「EXPAND-COPY」を参照してください。

m0602 COPY文のREPLACING指定の変換

変換概要

REPLACING指定のCOPY文が記述されている場合、登録集内の変換処理では、REPLACING指定による置き換えを行いません。

このとき、重大度コードWの変換メッセージを出力します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
        COPY COPY001 REPLACING ==SIZE== BY ==8==.      ← 変換メッセージ PRCV-m0602W

登録集(COPY001)の内容

0--------1--------2--------3--------4--------5--------6--------7--------8
       01 IN-DATA PIC 9(SIZE) COMP-X.    ←REPLACING指定による置き換え後、
                                           変換ID [m0404]に該当する記述
       01 OUT-DATA PIC 9(8)   COMP-X.    ←変換ID [m0404]に該当する記述
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
        COPY COPY001 REPLACING ==SIZE== BY ==8==.

変換後登録集(COPY001)の内容

0--------1--------2--------3--------4--------5--------6--------7--------8
       01 IN-DATA PIC 9(SIZE) COMP-X.  ←REPLACING指定による置き換えを行わないため、
                                         変換ID [m0404]の対象とならない
      *01 OUT-DATA PIC 9(8)   COMP-X.
       01 OUT-DATA PIC 9(8)   BINARY.
変換メッセージ
PRCV-m0602W REPLACING指定のCOPY文が記述されています.REPLACING指定による置き換えを行わずに変換します.
補足説明
  • 変換時にREPLACING指定による置き換えを行わないため、変換結果や翻訳時のREPLACING指定による置き換えが意図した結果とならない場合があります。変換結果を確認し、必要に応じて手修正を実施してください。

  • COPY文の記述形式により、翻訳時に登録集の割り当てでエラーとなる場合があります。エラーとなる記述形式および対処方法については、“2.1.4.1.3 登録集原文ファイルの扱い”の「COPY文のソース展開をしない場合」を参照してください。

  • [翻訳コマンド]翻訳時の登録集内の翻訳エラー検出番号は、変換後の登録集となります。また、デバッグ時の被デバッグプログラムは、変換後の登録集となります。

m0607 REPLACE文範囲内の変換

変換概要

REPLACE文が記述されている場合、変換処理ではREPLACE文による置き換えを行いません。このとき、重大度コードWの変換メッセージを出力します。

他社COBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       REPLACE ==SIZE== BY ==8==.       ← 変換メッセージPRCV-m0607W
       01 IN-DATA PIC 9(SIZE) COMP-X    ←REPLACE文による置き換え後、
                                          変換ID[m0404]に該当する記述
       01 OUT-DATA PIC 9(8)   COMP-X.   ←変換ID[m0404]に該当する記述
       REPLACE OFF.
NetCOBOL
0--------1--------2--------3--------4--------5--------6--------7--------8
       REPLACE ==SIZE== BY ==8==.
       01 IN-DATA PIC 9(SIZE) COMP-X.    ←REPLACING指定による置き換えを行わないため、
                                          変換ID [m0404]の対象とならない
      *01 OUT-DATA PIC 9(8)   COMP-X.
       01 OUT-DATA PIC 9(8)   BINARY.
       REPLACE OFF.
変換メッセージ
PRCV-m0607W REPLACE文が記述されています.REPLACE文による置き換えを行わずに変換します.
補足説明

変換時にREPLACE文による置き換えを行わないため、変換結果や翻訳時のREPLACE文による置き換えが意図した結果とならない場合があります。変換結果を確認し、必要に応じて手修正を実施してください。