それぞれの変換IDに対し、以下の5つの項目について示しています。
変換概要:変換内容の概要を説明します。
他社COBOL:他社COBOLでの記述例を示します。
NetCOBOL:NetCOBOLで翻訳可能な形式に変換した例を示します。
変換メッセージ:重大度コードがW以上の場合に示します。
補足説明:補足説明がある場合に説明します。
記述例および変換例は、特に断りがない限り、固定形式の正書法で記述しています。
m0101 $文(IF,ELSE,END)の条件判定、コメント化
ソース中に記述している以下の$文に対し、指定した条件にしたがって判定します。原始文の選択した部分を翻訳に含めないようコメント化します。
$IF文
形式1:$IF 定数名 [NOT] {< | > | =} 値
形式2:$IF 定数名 [NOT] DEFINED
形式3:$IF 指令設定 SET
$ELSE文
$END文
以降の説明では、これらの文をまとめて条件付き翻訳と呼びます。
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 |
定数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文は除きます。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
$DISPLAY HELLO WORLD |
0--------1--------2--------3--------4--------5--------6--------7--------8 |
*DISPLAY HELLO WORLD |
[翻訳コマンド]
JMN0505I-I PRCV-m0102I HELLO WORLD
[変換コマンド]
PRCV-m0102I HELLO WORLD
[翻訳コマンド] 指定したテキストデータは、診断メッセージJMN0505I-Iの埋め込み文字列として表示されます。
任意の行に$SET文を記述している場合、重大度コードWの変換メッセージを出力します。このとき、$SET文はコメント化されます。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
$SET FOLD-COPY-NAME"LOWER" ← 変換メッセージ PRCV-m0105W IDENTIFICATION DIVISION. PROGRAM-ID. A. |
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」を付加します。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
01 RESUME PIC 9. MOVE 0 TO RESUME. |
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")は除きます。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
*01000 MOVE A TO B. |
0--------1--------2--------3--------4--------5--------6--------7--------8 |
*01000 MOVE A TO B. |
可変形式または自由形式において、他社COBOLのソースレコードの最大長は255バイトです。
一方、NetCOBOLの最大長は251バイトであるため、これを超える行に対して変換メッセージを出力します。
251バイトに収まるよう、語の区切りで行を折り返してください。
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 |
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バイト)を超える行が記述されています.
機能名「SWITCH 0」~「SWITCH 7」を、「SWITCH-0」~「SWITCH-7」に変換します(「-」を挿入します)。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
SPECIAL-NAMES. SWITCH 0 IS SW0 SWITCH 7 IS SW7 |
0--------1--------2--------3--------4--------5--------6--------7--------8 |
SPECIAL-NAMES. SWITCH-0 IS SW0 SWITCH-7 IS SW7 |
機能名「SWITCH 8」を、「SWITCH-8」に変換します(「-」を挿入します)。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
SPECIAL-NAMES. SWITCH 8 IS SW8 ← 変換メッセージ PRCV-m0306W |
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句」はコメント化します。
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). |
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」を記述している場合、これらを削除します(コメント化)。
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". |
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 | ファイル識別名のデータ項目が宣言されていない |
ASSIGN句に「EXTERNAL」を記述している場合、ファイル識別名を環境変数情報名として、プログラム実行時に、入出力処理の対象となるファイルの名前を設定します。ファイル識別名と同名のデータ項目を宣言している場合(m0311によりデータ項目が生成される場合を含む)、データ名に設定されたファイル名のファイルに対して入出力処理が行われることを避けるため、変換はエラーとなります。ファイル識別名またはデータ項目のいずれかを変名し、再度変換処理を実行してください。
m0311 動的ファイル割当てのASSIGN句データ名領域の生成
ASSIGN句でファイル識別名として「データ名」を指定しており、かつ、そのデータ名を宣言していない場合、そのデータ名を作業場所節に生成します。
なお、作業場所節の宣言がない場合には、作業場所節を生成します。
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. |
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文での参照も変換します。
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. |
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. |
レベル番号01/77のデータ記述項にOCCURS句の指定がある場合、「01 無名項目」を生成し、元のレベル番号を順次繰り下げます。
なお、ファイル節のレベル番号01/77のデータ記述項にOCCURS句の指定がある場合、重大度コードEの変換メッセージを出力します。
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. |
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の変換メッセージを出力します。
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 |
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)は同時に指定できないため、以下のどちらかの対応を検討してください。
翻訳オプションARITHMETIC(31)とBINARY(WORD,MLBON)を同時に指定
注意
2進項目の領域長は桁数より求められるワード単位となります。2進項目の領域長を意識したプログラムでは、プログラムの動作に影響がある場合があります。なお、27および28桁の場合、翻訳オプションBINARYによる領域長の変更はありません。
変換メッセージ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レベルで変換は実行されません。手修正が必要となります。
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 |
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)は同時に指定できないため、以下のどちらかの対応を検討してください。
翻訳オプションARITHMETIC(31)とBINARY(WORD,MLBON)を同時に指定
注意
2進項目の領域長は桁数より求められるワード単位となります。2進項目の領域長を意識したプログラムでは、プログラムの動作に影響がある場合があります。なお、変換前の英数字項目が12バイトの場合、翻訳オプションBINARYによる領域長の変更はありません。
変換メッセージPRCV-m0405Wが出力されたデータ項目の桁数を18桁に収まるよう修正
翻訳オプションARITHMETICおよびBINARYについては、“NetCOBOL ユーザーズガイド”の“ARITHMETIC(演算モードの指定)”および“BINARY(2進項目の扱い)”を参照してください。
m0406 日本語項目に表意定数ZEROまたはQUOTE指定時の変換
日本語項目のVALUE句に表意定数ZEROまたはQUOTEが指定されている場合、日本語定数に変換します。
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. |
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を含みます。
日本語項目のVALUE句に文字定数を指定している場合、文字定数を日本語定数に変換します。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
01 A PIC N(7) VALUE "富士通株式会社". |
0--------1--------2--------3--------4--------5--------6--------7--------8 |
01 A PIC N(7) VALUE NC"富士通株式会社". |
文字定数に半角文字が含まれていた場合、日本語項目のエンコードがSJISの場合は翻訳エラーになります。
文字定数を継続指定している場合、重大度コードEの変換メッセージを出力します。
PRCV-m0407E 日本語項目のVALUE句に指定された継続指定のある文字定数は変換できません.
文字定数が記号定数または名前付き定数の場合、変換対象となりません。
条件式において、以下の属性の場合変換します。
内部10進項目と英数字項目との比較
2進項目と英数字項目との比較
変換対象は、IF文またはEVALUATE文の場合です。PERFORM文(UNTIL指定)またはSEARCH文の場合、重大度コードEの変換メッセージを出力します。このとき、変換は行われません。
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 |
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」を付加します。
条件式において、以下の属性の場合に変換します。
内部10進項目と文字定数との比較
2進項目と文字定数との比較
変換対象は、IF文またはEVALUATE文の場合です。PERFORM文(UNTIL指定)またはSEARCH文の場合、重大度コードEの変換メッセージを出力します。このとき、変換はしません。
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 |
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」を付加します。
文字定数が記号定数または名前付き定数の場合、変換対象となりません。
日本語項目と文字定数との比較の場合、「日本語を英数字とみなす」関数呼出しに変換します(関数名:FUNCTION CAST-ALPHANUMERIC)。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
01 A1 PIC N(3). IF A1 = "ABCDEF" THEN DISPLAY "*** OK ***" END-IF |
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 |
文字定数が記号定数または名前付き定数の場合、変換対象となりません。
日本語項目と英数字または外部10進項目との比較の場合、「日本語を英数字とみなす」関数呼出しに変換します(関数名:FUNCTION CAST-ALPHANUMERIC)。
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 |
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を日本語定数に変換します。
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 |
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を含みます。
英数字項目から日本語項目への転記の場合、「半角→全角変換」関数呼出しに変換します(関数名:FUNCTION NATIONAL)。
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. |
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. |
外部10進項目から日本語項目への転記の場合、「半角→全角変換」関数呼出しに変換します(関数名:FUNCTION NATIONAL)。
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. |
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. |
文字定数を日本語項目へ転記する場合、文字定数に「NC」を付加し、半角の文字定数を全角に変換して転記するように変換します。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
01 A1 PIC N(8). MOVE "ABC-日本語" TO A1. |
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 継続指定のある文字定数から日本語項目への転記は変換できません.
文字定数が記号定数または名前付き定数の場合、変換対象となりません。
16進定数を日本語項目へ転記する場合、日本語16進定数に変換します。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
01 A1 PIC N(3). MOVE X"816081628163" TO A1. |
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進定数から日本語項目への転記は変換できません.
文字定数が記号定数または名前付き定数の場合、変換対象となりません。
日本語項目から英数字項目への転記の場合、「日本語を英数字とみなす」関数呼出しに変換します(関数名:FUNCTION CAST-ALPHANUMERIC)。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
01 A1 PIC N(3) VALUE "日本語". 01 A2 PIC X(6). MOVE A1 TO A2. |
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を日本語定数に変換します。
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. |
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の変換メッセージを出力します。このとき、変換は行われません。
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 |
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の変換メッセージを出力します。このとき、変換は行われません。
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 |
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 属性の異なる複数の受取り側項目への転記は変換できません.
数字定数を日本語項目へ転記する場合、数字定数を「NC」を付加し、半角の文字定数を全角に変換して転記するように変換します。ただし、数字だけが転記の対象となります。
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. |
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 INITIALIZE文 REPLACING句のJAPANESE指定時の変換
INITIALIZE文のREPLACING指定に「JAPANESE」の指定がある場合、変換します。
0--------1--------2--------3--------4--------5--------6--------7--------8 |
INITIALIZE G1 REPLACING JAPANESE BY "あ". |
0--------1--------2--------3--------4--------5--------6--------7--------8 |
* INITIALIZE G1 REPLACING JAPANESE BY "あ". INITIALIZE G1 REPLACING NATIONAL BY NC"あ" NATIONAL-EDITED BY NC"あ". |
COPY文を記述している場合、読み込んだ登録集を変換した内容をソースプログラムに展開します。
ただし、COPY文にREPLACING指定がある場合、ソースプログラムに展開しません。
このとき、登録集の変換については、変換ID[m0602]を参照してください。
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. |
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」を参照してください。
REPLACING指定のCOPY文が記述されている場合、登録集内の変換処理では、REPLACING指定による置き換えを行いません。
このとき、重大度コードWの変換メッセージを出力します。
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]に該当する記述 |
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文のソース展開をしない場合」を参照してください。
[翻訳コマンド]翻訳時の登録集内の翻訳エラー検出番号は、変換後の登録集となります。また、デバッグ時の被デバッグプログラムは、変換後の登録集となります。
REPLACE文が記述されている場合、変換処理ではREPLACE文による置き換えを行いません。このとき、重大度コードWの変換メッセージを出力します。
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. |
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文による置き換えが意図した結果とならない場合があります。変換結果を確認し、必要に応じて手修正を実施してください。