翻訳前ソース変換機能の使用方法について、移行・開発作業の流れに沿って説明します。
他社COBOLからの移行資産をもとに、入力となるユーザ資産を準備します。
他社COBOLから移行するソースプログラムを用意します。
対象のプログラムについて、以下の情報を確認します。
COPY文の有無
COPY文が記述されている場合、取り込まれる登録集原文を特定します。“2.1.3.1.2 変換元登録集原文”を参照してください。
コンパイラ指令を使用している場合、以下のどれかの対応が必要です。
変換オプションとして対応が可能なもの
変換オプションは、変換情報ファイルに指定します。“2.1.3.1.3 変換情報ファイル”を参照してください。
翻訳オプションとして対応が可能なもの
[翻訳コマンド]
すべての対応する翻訳オプションを変換実行時に指定します。
[変換コマンド]
変換時に有効となる翻訳オプションだけ、変換実行時に指定する必要があります。
なお、有効とならない翻訳オプションを指定した場合もエラーにはなりません。
翻訳オプションの指定方法については、“2.1.3.4.3 翻訳オプション”を参照してください。
NetCOBOLに互換のあるオプションが存在しないもの
移行前と同じ動作が実現できるか、別途調査・検討が必要です。
コンパイラ指令ごとの互換性については“A.3 他社COBOLのコンパイラ指令”を参照してください。
変換元ソースプログラムにCOPY文を記述している場合、取り込まれる登録集原文を特定します。
他社COBOLとNetCOBOLでは、登録集ファイルのフォルダの検索順序や拡張子のデフォルト値が異なります。
特に同名の登録集ファイルが複数フォルダに存在する場合や、拡張子の異なる登録集ファイルが存在する場合、移行前とは異なる登録集ファイルが取り込まれる場合があります。
正しい登録集ファイルが取り込まれるように、指定方法の変更や、必要に応じてプログラム資産のフォルダ構成の見直しをしてください。
例:カレントフォルダとサブフォルダに同名の登録集ファイルが存在する場合
NetCOBOLの指定方法については、“2.1.3.4.1 登録集ファイルのフォルダ指定および拡張子指定”を参照してください。
翻訳前ソース変換機能では、変換オプションにより、変換仕様を指定することができます。
変換情報ファイルは、変換オプションを指定するテキストファイルです。
以下のような変換元ソースプログラムを変換する場合、変換情報ファイルは必須です。
変換オプションとして互換のあるコンパイラ指令を使用している
定数値を比較した$IF文(*1)を記述している
コンパイラ指令を指定した$IF文(*1)を記述している
*1 : $IF文についての詳細は変換ID[m0101]を参照してください。
ここでは、変換情報ファイルの形式について説明します。
変換情報ファイルの文字コードは、ANSIコードページ(シフトJIS)またはBOM付きUTF-8です。
変換情報ファイルは、共通部といくつかのセクションから構成されます。
変換情報ファイルの内容を以下に示します。
「変換オプション名 = 指定値」をオプション情報といいます。
[1] プログラムに共通するオプション情報を記述します。共通部に記述したオプション情報は、すべてのプログラムで有効になります。変換するプログラムのプログラム名と同じ名前を持つセクションに、共通部と同じ変換オプション名を記述した場合、セクションに記述した内容が有効になります。
[2] プログラムごとのオプション情報の開始を表します。セクション名には、変換元ソースプログラムの拡張子を除いた名前を指定します。PROGRAM-IDではないことに注意してください。
[3] プログラムごとのオプション情報を記述します。
参照
変換オプションの詳細については“A.4 変換情報ファイルの指定情報”を参照してください。
注意
1つの行に2個以上のオプション情報を記述することはできません。
1つのセクションに、同一の変換オプション名を複数個指定しないでください。同一の変換オプション名を複数個指定した場合の動作については保証されません。
変換情報ファイル中のコメントの記述方法
行の先頭に;(セミコロン)がある場合、セミコロンから改行までの間はコメントとして認識されます。
コメント行が多い場合、コメント行の読み飛ばし処理のために、処理速度が低下する可能性があります。
入力となるユーザ資産の準備ができたら、翻訳前ソース変換機能の変換処理を実行します。以下の使用方法ごとに変換処理の実行例を示します。
[翻訳コマンド] COBOLコマンドを使用する
[翻訳コマンド] NetCOBOL Studioを使用する
[変換コマンド] COBPRECONVコマンドを使用する
COBOLコマンドはNetCOBOLコマンドプロンプト上で実行します。
翻訳前ソース変換機能を利用する場合、-CVオプションを指定します。-CVオプションは以下の形式で指定します。
-CV{変換種別}[,変換情報ファイル名]
変換元ソースプログラムが記述された文法の種別を指定します。
指定値 | 意味 |
---|---|
m | Micro Focus COBOL |
変換情報ファイル名
変換仕様を変更したい場合、カンマに続いて変換情報ファイルのパス名を指定します。
詳細は、“NetCOBOL ユーザーズガイド”の“-CV(翻訳前ソース変換機能を使用する指定)”を参照してください。
例
C:\COBOL>COBOL -M -CVm -I.\cpy test.cob
test.cobを変換して、変換後ソースプログラムを作成します。
変換後ソースプログラムを主プログラムとして翻訳して、目的プログラムtest.objを出力します。
C:\COBOL>COBOL -CVm -WC,"SRF(FIX)" -I.\copy test.cob test.cob 8: JMN0503I-S PRCV-ER108S COBOL登録集'COPY001'が割り当てられていません. 最大重大度コードは S で,変換したプログラム数は 1 本です. JMN0020I-U 原始プログラムファイルが空です. 翻訳を中止します.
COBOLコマンドは、変換・翻訳結果や診断メッセージなどの情報を、コマンドプロンプト画面に表示します。
COBOLプロジェクトを新規作成します。
プロジェクト内のCOBOLソースファイルとして、変換元ソースプログラムを登録します。
“NetCOBOL Studio ユーザーズガイド”の“翻訳オプションの設定”にしたがって、[翻訳オプション]ページから、翻訳オプションPRECONVを指定します。変換仕様を変更したい場合、翻訳オプションPRECONVに変換情報ファイルのパス名を指定します。
ビルドします。
診断メッセージは[問題]ビューに表示されます。[問題]ビューで翻訳エラー情報をダブルクリックするか、コンテキストメニューから[ジャンプ]を選択すると、変換元のソースプログラムがエディタに表示されます。
参照
“NetCOBOL ユーザーズガイド”の“PRECONV(翻訳前ソース変換機能の使用の可否)”
“NetCOBOL Studioユーザーズガイド”の“COBOLプログラムのビルド”
“NetCOBOL Studioユーザーズガイド”の“翻訳エラーの修正”
COBPRECONVコマンドは、NetCOBOLコマンドプロンプト上で実行します。変換元ソースプログラムをNetCOBOLで翻訳可能なソースプログラムに変換するコマンドです。
COBPRECONVコマンドは、以下の形式で指定します。
COBPRECONV -CV{変換種別}[,変換情報ファイル名] -o出力フォルダ名 [-f] [翻訳コマンドのオプション] ファイル名…
-CVオプションの指定形式は、COBOLコマンドと同じです。
-oオプションには、存在するフォルダ名を指定します。
-fオプションを指定した場合、出力する変換後ソースファイルおよび登録集ファイルと、同名ファイルが存在する場合、上書きして出力します。
翻訳コマンドのオプションは、-I、-P、-dp、および-WCのみ指定できます。
詳細は、“NetCOBOL ユーザーズガイド”の“COBPRECONVコマンド”を参照してください。
例
C:\COBOL>COBPRECONV -CVm -I.\cpy -o.\out test.cob
test.cobを変換して、-oで指定したフォルダに変換後ソースプログラムtest.cobを出力します。
C:\COBOL>COBPRECONV -CVm -I.\cpy -o.\out test1.cob test2.cob
test1.cobとtest2.cobを変換して、-oで指定したフォルダに変換後ソースプログラムtest1.cobとtest2.cobを出力します。
COBPRECONVコマンドは、変換結果や診断メッセージなどの情報を、コマンドプロンプト画面に表示します。
変換結果の確認方法について説明します。
翻訳前ソース変換機能は、変換項目ごとに以下の重大度コードを持ちます。
重大度コード | 変換処理 | 意味 |
---|---|---|
I | 変換する | 変換仕様にしたがって変換します。 |
W | 変換する | 変換仕様にしたがって変換します。 しかし、変換結果が利用者の意図どおりかどうかを確認する必要があります。 |
E | 変換しない | 変換しません。別途修正が必要になります。 |
また、変換処理の過程でエラーを検出した場合、その重度により以下のレベルの変換メッセージを出力します。
重大度コード | レベル |
---|---|
I | 通知メッセージ |
W | 軽度のエラー |
E | 中程度のエラー |
S | 重度のエラー |
U | 致命的なエラー |
変換をした変換項目の重大度と検出したエラーの重大度から「最大重大度コード」が決定します。
翻訳前ソース変換機能では、変換項目ごとに変換IDを付加しています。
変換IDは、変換結果出力ファイルに対象となる変換元ソースプログラムまたは登録集原文の行番号とともに出力します。
変換IDは、以下の5文字の英数字です。
nxxyy
n:-CVオプションで指定した変換種別を示します。
xx:以下の機能別IDを示します。
01:全般規程
02:見出し部
03:環境部
04:データ部
05:手続き部
06:原始文操作
yy:通番
以下のどちらかの場合に、変換メッセージを標準出力に表示します。
重大度コードがW以上の変換項目を検出
変換処理の過程でエラーを検出
メッセージ番号 メッセージ内容
メッセージ番号は次のように表示されます。
PRCV-xxxxxS
PRCV:翻訳前ソース変換機能の変換メッセージであることを示します。
xxxxx:
a.の場合「変換ID」を設定します。変換IDについては、“2.1.3.3.2 変換ID”を参照してください。
b.の場合「ERnnn」を設定します。nnnはメッセージの通し番号を示します。
S:重大度コードを表示します。
以下の形式で変換メッセージを表示します。
メッセージの形式
ファイル名 行番号: 変換メッセージ
重大度コード別に以下の翻訳時メッセージのメッセージ本文として変換メッセージを埋め込みます。
重大度コード | 翻訳時メッセージ |
---|---|
I | JMN0500I-I |
W | JMN0501I-W |
E | JMN0502I-E |
S | JMN0503I-S |
U | JMN0504I-U |
このとき、ファイル名および行番号を以下のように表示します。
ファイル名 行番号: JMN05xxI-S 変換メッセージ
最大重大度コードがE以下の場合、変換が終了し、変換後ソースプログラムを出力します。
以下のフォルダに変換元ソースプログラムと同じファイル名で出力します。
変換元ソースプログラムのあるフォルダ配下の「.preconv」フォルダに出力します。「.preconv」フォルダが存在しない場合、新規にフォルダを作成します。この出力フォルダは変更できます。変更方法は、変換情報ファイルの「WORKDIR」を参照してください。
変換元ソースプログラムにCOPY文を記述している場合、変換した登録集原文の内容を、変換後ソースプログラム中に展開します。変換後登録集原文は作成しません。
変換元ソースプログラムにCOPY文を記述している場合、デフォルトでは-oで指定したフォルダに変換後登録集原文を出力します。変換オプションの指定により、登録集原文の内容をソースプログラムに展開できます。指定方法は“A.4 変換情報ファイルの指定情報”の「EXPAND-COPY」を参照してください。
注意
COPY文にパス名を指定している場合、-oで指定したフォルダとは異なるフォルダに出力する場合があります。詳細は“2.1.4.1.3 登録集原文ファイルの扱い”を参照してください。
変換後登録集原文がすでに存在する場合、デフォルトではエラーになります。変換後登録集原文を上書きする場合は-fオプションを指定してください。
複数の変換元ソースプログラムから1つの登録集を取り込んでいる場合も同様です。デフォルトでは2番目以降の変換元ソースプログラムの変換時にエラーとなります。-fオプションを指定した場合、変換後登録集原文を上書き作成しますが、内容の同一性確認は行いません。
異なる変換仕様で登録集原文を出力する場合、出力フォルダを変更するか、ソースプログラム中に展開するように指定してください。
変換箇所および変換内容を確認する場合、変換結果出力ファイルを出力します。
出力するための指定方法については、“2.1.3.4.2 変換結果出力ファイルの出力および出力先の指定”を参照してください。
変換結果出力ファイルには、変換対象となった変換元ソースプログラムの行番号と変換IDを出力します。“A.2 変換項目詳細”を参照し、変換IDから変換内容を確認します。
変換結果出力ファイルの詳細は“付録B 変換結果出力ファイル”を参照してください。
参考
[翻訳コマンド]翻訳リストの出力指定(-Pオプションまたは翻訳オプションPRINT)と翻訳オプションSOURCEを指定して翻訳すると、変換結果出力ファイルにソースプログラムリストを出力します。ソースプログラムリストは変換後ソースプログラムの内容が出力されます。
翻訳前ソース変換機能では、COBOLコンパイラに指示する翻訳オプションや環境変数指定のうち、変換時のソース解釈に影響する指定については、同じ指定形式をサポートしています。
登録集機能(COPY文)を記述しているソースプログラムを変換する場合、必要に応じて指定します。
フォルダの検索順序や拡張子のデフォルト値は他社COBOLと異なる場合があるため、必ず確認してください。
NetCOBOLは、登録集ファイルのフォルダを以下の順で検索します。
参照
各指定方法の詳細は、“NetCOBOL ユーザーズガイド”を参照してください。
-I(登録集ファイルのフォルダの指定)
LIB(登録集ファイルのフォルダの指定)
環境変数の設定
翻訳前ソース変換機能では、変換結果をファイルに出力して確認できます。このファイルを「変換結果出力ファイル」と呼びます。
[翻訳コマンド] NetCOBOLでは、翻訳結果に関する各種リストを確認するファイルとして、翻訳リストを出力します。翻訳前ソース変換機能では、翻訳リストの出力指定があった場合、翻訳リストと同一ファイルに変換結果を出力します。
翻訳オプション | 意味 | NetCOBOLユーザーズガイドの参照先 |
---|---|---|
[翻訳コマンド] PRINT | 各種翻訳リストの出力 および出力先の指定 | -P(各種翻訳リストの出力および出力先の指定) PRINT(各種翻訳リストの出力の可否および出力先の指定) |
翻訳リストファイルのフォルダの指定 | -dp(翻訳リストファイルのフォルダの指定) |
注意
変換結果出力ファイルは、翻訳リストファイルと同一ファイルです。
指定方法を確認する際、“NetCOBOL ユーザーズガイド”の参照先では「翻訳リストファイル」を「変換結果出力ファイル」に読み替えてください。
変換時に有効となる翻訳オプションについて説明します。記載のない翻訳オプションは、変換結果に影響しません。
翻訳オプション | 意味 | 変換時の解釈 |
---|---|---|
実行時コード系 | 実行時のコード系判定で使用します。 | |
予約語の種類 | NetCOBOLでだけ予約語となる語の置換で使用します。 | |
ソースファイルのコード系 | 変換元ソースプログラムおよび登録集原文ファイル解析時のコード系判定で使用します。 | |
正書法の種類 | 変換元ソースプログラムの正書法の指定で使用します。(*1) | |
タブの扱い | 変換元ソースプログラム中に記述されたタブコードの扱いを指定します。 本指定に従い、タブコードを8または4カラム単位の空白に変換します。本指定は、値としてのタブ値にも有効となります。 |
*1:翻訳オプションSRFの第2オペランドは指定できません。COBOLソースプログラムと登録集ファイルの正書法は同一とみなします。
翻訳オプションの指定方法と優先順位は以下のとおりです。
-WCオプションによる指定
コマンドオプションによる指定
[翻訳コマンド] NetCOBOL Studioの[翻訳オプション]ページによる指定
指定方法の詳細は、“NetCOBOL ユーザーズガイド”の“翻訳オプションの指定方法と優先順位”を参照してください。
翻訳前ソース変換機能では、予約語ファイルの定義に従い、変換前ソースプログラム中の語が予約語か否か、判定しています。
デフォルトでは、他社COBOLの言語仕様に、予約語として記載されているすべての語を予約語としています。
また、他社COBOLでは、コンパイラ指令により、予約語の種類を変更できます。
このような場合、利用者が、予約語として扱ってほしくない語(利用者語として使用している語)を予約語ファイルから外すことで、不具合が生じないようにカスタマイズする必要があります。
翻訳前ソース変換機能では、以下のカスタマイズ方法を用意しています。
個々の予約語に対し、予約語から外す語を指定する方法
予約語ファイルを直接編集します。詳細は、“付録C 予約語のカスタマイズ方法”を参照してください。
翻訳前ソース変換機能では、他社COBOLのデフォルト動作となる翻訳オプションの指定については、翻訳時に自動で有効となるよう、翻訳オプション制御情報を変換後ソースプログラム中に生成します。
翻訳オプション制御情報(#OPTIONS)は、有効とする翻訳オプションを通知するための情報です。なお、翻訳オプション制御情報(#OPTIONS)で指定された翻訳オプションの優先順位は、他の指定方法よりも低くなります。
自動で有効となる翻訳オプションについては、“2.1.4.1.2 移行に適した翻訳オプション”の変換種別ごとの仕様を確認してください。