ここでは、変換種別ごとの仕様について説明します。
変換種別は、変換元ソースプログラムが記述された文法を表します。-CVオプションに指定します。
翻訳前ソース変換機能では、以下の変換種別をサポートしています。
変換種別 | -CVの指定値 |
---|---|
Micro Focus COBOL | m |
“付録A Micro Focus COBOLからの移行リファレンス”を参照してください。
NetCOBOLは、他社COBOLからの移行プログラムに適した翻訳オプションを用意しています。必要に応じて、プログラムの翻訳時に指定してください。
翻訳オプション | 意味 | #OPTIONS |
---|---|---|
ARITHMETIC(31) | 31桁拡張演算モードを使用します。 | - (*1) |
BINARY(BYTE) | 2進データの基本項目をバイト単位の領域長(1~8)に割り付けます。 | ○ (*2) |
FLAG(E) | Eレベル以上の診断メッセージを表示します。 | - (*3) |
FILELIT(ENV) | ファイル識別名定数をファイル識別名として扱います。 | - |
INITVALUE(20) | 作業場所節データのVALUE句なし項目を英数字空白(X"20")で初期化します。 | ○ |
MF(ALL) | Micro Focus互換モードを指定します。 | ○ |
SRF(FIX) | COBOLソースプログラムおよび登録集ファイルの正書法を固定形式にします。 | ○ |
○:自動で有効となる翻訳オプション
-:自動で有効とならない翻訳オプション
*1:18桁を超える数字項目を使用している場合に必要です。ただし、ARITHMETIC(31)と、BINARY(BYTE)またはBINARY(WORD,MLBOFF)は同時に指定できません。2進項目の領域長に関する影響を確認のうえ、ARITHMETIC(31)とBINARY(WORD,MLBON)を同時に指定してください。
*2:変換時に翻訳オプションBINARY(WORD)を指定した場合は出力しません。指定した翻訳オプションBINARYの値が有効となります。
*3:移行時の非互換に関する診断メッセージを出力する場合があるため、自動で有効となりません。なお、FLAGには、他社COBOLでも同解釈となる診断メッセージを除外して表示する第2オペランドを用意しています。NetCOBOL固有の診断メッセージのすべてを確認できるFLAG(I,MF)の指定を推奨します。
他社COBOLとNetCOBOLでは、指定方法や検索順序は異なりますが、登録集ファイルのフォルダおよび拡張子を正しく指定することで、移行前と同じ登録集ファイルを入力できます。
[参照] “2.1.3.4.1 登録集ファイルのフォルダ指定および拡張子指定”
ただし、一部のCOPY文の記述形式には非互換があります。
翻訳前ソース変換機能では、これらの非互換を吸収して、同じ登録集ファイルを入力できるようにしています。
COPY文の記述形式 | 変換元登録集原文のパス名(*1) | COPY文のソース展開をしない場合 | ||||
---|---|---|---|---|---|---|
変換後登録集原文のパス名(*2) | 翻訳時の注意(*4) | |||||
原文名 | COPY f1. | dir2\F1.cp2 | F1.cp2 | - | ||
原文名定数 | パス名なし | 拡張子なし | COPY "f1". | dir2\f1.cp2 | f1.cp2 | 注1 |
拡張子 | COPY "f1.cp1" | dir2\f1.cp1 | f1.cp1 | - | ||
COPY f1.cp1. | dir2¥F1.CP1 | F1.CP1 | 注2 | |||
相対パス | 拡張子 | COPY "dir1\f1". | dir1\f1.cp2 | f1.cp2 | 注1 | |
COPY dir1\f1. | DIR1¥F1.cp2 | F1.cp2 | 注1 | |||
拡張子 | COPY "dir1\f1.cp1". | dir1\f1.cp1 | f1.cp1 | - | ||
COPY dir1\f1.cp1. | DIR1\F1.CP1 | F1.CP1 | 注2 | |||
絶対パス | 拡張子 | COPY "D:\dir1\f1". | D:\dir1\f1.cp2 | f1.cp2 | 注3 | |
COPY D:\dir1\f1. | D:¥DIR1¥F1.cp2 | F1.cp2 | 注2 | |||
拡張子 | COPY "D:\dir1\f1.cp1". | D:\dir1\f1.cp1 | f1.cp1 | 注3 | ||
COPY D:\dir1\f1.cp1. | D:¥DIR1¥F1.CP1 | F1.CP1 | 注2 | |||
IN/OF指定 | COPY f1 IN subdir. COPY f1 OF subdir. COPY f1 IN "subdir". COPY f1 OF "subdir". | subdir\F1.cp2 パスが存在しない場合(*3) dir2\F1.cp2 | F1.cp2 | 注4 |
*1:登録集ファイルのパス名指定として「dir2」、拡張子指定として「cp2」を指定した場合の結果です。
*2:-oオプションで指定したフォルダに変換元登録集原文と同名のファイルを作成します。なお、異なるパスに存在する同名の変換元登録集原文を取り込んでいる場合、デフォルトでは2番目以降の変換後登録集原文の出力時にエラーとなります。-fオプションを指定した場合、変換後登録集原文を上書き作成しますが、内容の同一性確認は行いません。このような場合、ソースプログラム中に展開するように指定してください。
*3:パス名を含むCOPY文の指定で、指定された登録集ファイルが存在しない場合、登録集ファイルのパス名指定のフォルダ(ここでは「dir2」)が検索対象となります。
*4:COPY文のソース展開をしない場合、翻訳前にソース修正が必要となる場合があります。
注1:原文名定数に拡張子のない登録集名を指定している場合、拡張子を追加します。
注2:原文名定数指定で引用符を省略している場合、引用符を追加します。
注3:絶対パス名を含む場合、パス名を変更します。
注4:COPY文にIN/OF指定がある場合、IN/OF指定を削除し、パス名を含む原文名定数に変更します。