z/OSハードウェアなどのビッグエンディアン・マシンでは、CHARVAR(1:1)には
BINVARの最も重要な(上位オーダー)バイトが含まれます。ただし、リトルエンディアン・マシンでは、同じコード
CHARVAR(1:1)には
BINVARの最も重要でない(下位オーダー)バイトが含まれます。これにより確実に動作は変化し、目にする結果もおそらく異なります。ただし、Tuxedo ART Workbench COBOLコンバータでは、このような状況の箇所をすべて検出して修正することはできません(たとえば、上の例は明らかなものですが、多くの複雑なケースが存在します)。これらは手動で処理する必要があります。
ソースの浮動小数点変数型(COMP-1および
COMP-2)は、ターゲット・プラットフォームの同じ型に変換されます。このため、Micro Focus COBOLコンパイラおよびランタイム・システムでは、浮動小数点データ(
COMP-1および
COMP-2変数)をIBM16進形式またはネイティブ(IEEE 754)形式のどちらでも使用できます。
NONATIVEFLOATINGPOINTオプションがコンパイル時に設定されると(デフォルトはtrue)、浮動小数点形式が実行時に選択されます。これは、次のように
MAINFRAME_FLOATING_POINT環境変数または
mainframe_floating_pointチューニング変数(あるいは両方)によって変わります。
|
•
|
ソース・プラットフォームでは、COMP-1型と COMP-2型の表現範囲は同じで、約10 -79から10 76までですが、ターゲット・プラットフォーム(ネイティブでIEEE 754形式をサポート)では、 COMP-1の範囲は約10 -45から10 38、COMP-2の範囲は約10 -323から10 308です。したがって、範囲と制度のトレードオフは両方のプラットフォームで異なります。
|
このような結果から、COMP-1変数を
COMP-2変数で置き換えることで、ごくわずかな誤差を除きソースと同じ動作をターゲットで常に再現できると考えられます。
|
注意:
|
ネイティブIEEE 754形式の使用を決定する場合は、NATIVEFLOATINGPOINTコンパイラ・オプションの設定をお薦めします。これにより、実行時のオプションやチューニング変数にかかわらず、コンパイル時にこの形式の使用が強制されます。したがって、実行時の形式テストが不要になります。
|
デフォルトでは、ソース・プラットフォームでSEQUENTIALであるデータ・ファイルは、ターゲット・プラットフォームでは使用しやすい
LINE SEQUENTIALファイルに変換されます。一般的にこれは適切な選択であり、このようなファイルはターゲットCOBOLシステムで十分にサポートされます。ただし、難点があります。こうしたファイルは本質的に可変レコード・サイズであるため、
REWRITE操作によって予測できない結果が生じて動作が変わる可能性があります(Micro Focus COBOLおよびCOBOL-ITのドキュメントを参照)。特定の
SEQUENTIALファイルを
LINE SEQUENTIALに変換したとき、そのファイルに対する
REWRITE操作が必ず成功するかどうか不確かな場合は、
SEQUENTIALのまま変更しないことをお薦めします。このためには、後で示す
pure-seq-map-file句で参照される構成サブファイルに記述を挿入します。
ソース・プラットフォームでは、型がPOINTERの変数は、メモリー内の4バイト(32ビット)を占めます。64ビットのオペレーティング・システムに基づくすべてのサポート対象ターゲット・プラットフォームでは、このような変数は8バイトを占めます。これにより、次のように様々な動作の違いが発生することがありますが、オラクル社が責任を負うものではありません。
|
•
|
テクニカル再定義: POINTER変数を PIC X(4)または PIC S9(9) COMP変数によって直接再定義して、ポインタ値の表現を操作するために使用する場合は、再定義する変数とそのためのコードを手動で再作成する必要があります。ただし、このようなマシン依存の方法はお薦めしません。
|
|
•
|
構造のアライメント: POINTER変数がバリアント(再定義)を含む構造の一部であり、1つのバリアントの特定の1フィールドが他のバリアントの他のフィールドと同様のアライメントになるように(同じ位置になるように)様々なバリアント(サブ構造)が設計されている場合、 POINTER変数のサイズが変わった後でも、埋め合せるためのフィラーを挿入するなどしてこのプロパティを維持する必要があります。これも手動で処理する必要があります。このように意図されたアライメントは再定義全体で維持する必要があり、他の構造に 移動するときにも維持する必要があります。
|
|
•
|
構造のサイズ: POINTER変数が含まれる構造が、 POINTER変数のサイズが変わる前に、その構造を十分に保持できる大きさの構造化されていない PIC X(…)変数に移される場合、サイズが変わった後もそのままかどうかを確認する必要があります。
|
ソース・プラットフォームとターゲット・プラットフォームの両方で、かわりに明示的なOMITTED項目が渡されたため、あるいは呼出し元が呼出し先の想定よりも少ない引数を渡したために、実際には呼出し元によって渡されないプログラム・パラメータ(Linkage Sectionに定義され、Procedure Divisionの
USING句に指定される)は、呼出し先では
NULLアドレスを持つようになります。したがって、パラメータの値にアクセスする前にパラメータの
ADDRESSが
NULLかどうかをチェックすることは非常に有効であり、お薦めする方法です。
|
•
|
z/OSおよびAIXでは、NULLはアドレス0であり、有効なアドレスとみなされます。したがって、そのパラメータにアクセスすると、そのアドレスに格納されているものが取得されます(予測できない結果が生じる可能性があります)。
|
|
•
|
後出のSTICKY-LINKAGEコンパイラ・オプションの説明も参照してください。
|
NULLポインタ値の表現は、プラットフォームごとに異なる可能性があります。特にソース・プラットフォームとターゲット・プラットフォームの間では、他のすべてのポインタ値のようにサイズが同じにならないというだけでも異なります。この結果、この値の特定の表現を想定しているすべてのプログラムは(たとえば、バイナリ整数値との間でのキャストなど)は、プラットフォームごとに動作が異なる可能性があります。COBOLコンバータが自動的にこの問題を処理することはできません。手動で問題を処理する必要があります。いずれにしても、マシン依存の処理はお薦めしません。
QUERYNO句はDB2のみでサポートされており、Oracle DBではサポートされていません。ターゲットDBがOracle RDBMSの場合、SQL文から
QUERYNOが自動的に削除されます。
COBOLプログラムのSTOP RUN文は自動的に
CALL ARTSTOPRUNに置き換えられます。"
ARTSTOPRUN"は、ランタイム環境で提供されるユーティリティです。
このファイルは、必須のコマンド行オプション-cまたは
-configを使用してCOBOLコンバータに渡されます。変換に影響する様々なスカラー・パラメータが定義され、大規模な構成データ(ファイル名変更など)を含む下位ファイルが指定されます。
値がnoneの場合、ソース・ファイル内のsqlコードは変換されません。ターゲット・コンポーネントに
そのまま転送されます。この句のデフォルト値は
oracleです。後者の場合は、構成ファイルで
sql-rulesを
oracleに設定する必要はありません。
|
•
|
keep-same-file-names句を指定すると、変換されるプログラムとコピー・ファイルのファイル拡張子は、(カタログ化された)ソース・アセットの元のファイルと同じになります。その他の句は指定しても無視されます。
|
|
•
|
target-program-extension句を指定すると、変換されるプログラムには指定のファイル拡張子が付きます。
|
|
•
|
target-copy-extension句を指定すると、変換されるコピー・ファイルには指定のファイル拡張子が付きます。
|
この句は、変換が完了するまでコピー調整プロセスcrpを延期するように指定します。これにより、COBOL変換を複数の同時プロセスで実行できます。デフォルトでは、この句を指定しないと、コピー調整プロセスは、各プログラムの変換が終了するたびすぐに増分的に実行され、単一プロセス実行になります。詳細は、次のコピー調整プロセスを参照してください。
この句は、現在の実行で処理されるすべてのプログラムにEXEC CICS文を標準化するルールを適用し、CICSプリプロセッサなど、Oracle Tuxedo Application Runtime for CICS環境でプログラムを使用する準備を行うようCOBOLコンバータに強制します。
|
•
|
この句を指定するかどうかにかかわらず、1つ以上のEXEC CICS文を含むすべてのプログラムに前述のルールが適用されます。したがって、この句(または同等のコマンド行引数)はCICS環境で使用されるサブプログラム(暗黙のCOMMAREAなど)のみで有効ですが、それ自体がCICS操作を実行することはありません。
|
この句は、LINE SEQUENTIALに変換せずに(レコード)
SEQUENTIALのままにする
SEQUENTIAL論理ファイルのリストを含む下位構成ファイルの場所を指定します。詳細は、
「purely-sequential構成ファイル」を参照してください。file-pathは文字列として指定します。絶対パスまたは相対パスのどちらも可能です。後者の場合は、システム記述ファイルを含むディレクトリに関して相対的に指定します(Tuxedo ART Workbenchツールでの共通の方法)。
COBOLプログラムでは、埋込みSQL文DECLAREと
END DECLAREをペアにする必要がありますが、メインフレームでは
END DECLAREを使用しなくても機能する場合があります。オープン・プラットフォーム上では、2つの文をペアにする必要があります。
rename-copy-map-file句がない場合、またはこのファイルが空の場合、コピーの名前変更は行われません。エラーとなるのは、ファイルが見つからないか読み取れない場合、または同一の
original-copy-name;original-library-nameの組合せがファイルの別の行で別の
new-copy-namesに関連付けられている場合です。このケースでは、コンバータはエラー・メッセージで停止し、プログラムの変換は行われません。ただし、同じディレクトリにある異なる2つのコピー・ファイルの名前が同じターゲット・ファイル名に変更されるかどうかはチェックされないことに注意してください。原則としては、これはコピー調整プロセスで適切に処理されるはずですが、保証のかぎりではありません。
rename-call-map-file句がない場合、またはこのファイルが空の場合、呼出しの名前変更は行われません。エラーとなるのは、ファイルが見つからないか読み取れない場合、または同一のoriginal-call-nameがファイルの別の行で別のnew-call-namesに関連付けられている場合です。このケースでは、コンバータはエラー・メッセージで停止し、プログラムの変換は行われません。ただし、同じディレクトリにある異なる2つのサブプログラムの名前が同じターゲット・ファイル名に変更されるかどうかはチェックされないことに注意してください。
このようなルールのセマンティクスは単純です。プログラムの(ベース)名がプラス記号のprogram_name_regexpのいずれかと一致し、マイナス記号のものとはいずれも一致しない場合、
source_lines_blockと
一致する行ブロックが検出されると、
target_lines_blockで置換されます。
rule_nameは、変換の適用に関連付けられるコメントで使用されます。詳細は、ポストトランスレータの説明を参照してください。
|
注意:
|
ここでの一致は単に、2つの行ブロックの一連のスペースを減らして1つのスペースにするときに、両方のブロックが同一である必要があることを意味します。基本的に同一であれば柔軟に解釈されます。
|
このファイルは、前述のhexa-map-file句に関連します。内容は、16進形式の文字に適用するEBCDIC-to-ASCII変換表です(テキスト形式の文字は、ソース・ファイルそのものと同時に変換されます)。構文は、セミコロンが区切り文字の単純なCSVファイルです。各行の形式を次に示します。
このスクリプトでは、tr-hexa.mapファイルが自動的に現在のディレクトリに生成されます(
PARAMディレクトリの方が適切な選択です)。この生成されたファイル名は、
hexa-map-file属性とともに
file-path値として使用する必要があります。
説明: tr-hexa.mapファイルに書き込まれたメッセージを参照してください
フィラー番号idに、十分なhexa要素が含まれていません: 64ではなく
num
これらのファイルは、conv-ctrl-file句およびalt-key-file句に関連します。これらには、file-to-RDBMS変換に関する情報が含まれます。たとえば、どの論理ファイル(FD)をRDBMS表に変換するかを定義するための情報です(実際、論理ファイルが関連する物理ファイルがそのようなDB表に変換されるため)。これらのファイルはTuxedo ART Workbench File-to-Oracle変換ツールによって自動的に生成されるため、手動で変更しないでください。内容をさらにここで指定することはありません。
どちらの名前も記号です。このような行により、ソース・プラットフォームで(レコード) SEQUENTIALであると想定される特定の論理ファイル(所定のプログラムの所定の
FD)がターゲット・プラットフォームで
LINE SEQUENTIALに変換されることがなくなります。つまり、変更されずにレコード
SEQUENTIALファイルのままになります。こうすることで、このファイルは標準のターゲットプラットフォーム・ユーティリティでの処理に対応しにくくなりますが、無制限の
REWRITE操作をサポートします(前の
LINE SEQUENTIALファイルに対する
REWRITE操作に関する項を参照してください)。これは、z/OSプラットフォームからバイナリ形式で交換されるファイルでも有効です。
SUB1と
SUB2は、両方ともCICSプログラムです。しかし、パフォーマンスを向上させるため、
MAIN1、
SUB1、
SUB2を別々のプロジェクト、たとえば、
MAIN1と
SUB1をプロジェクト1、
SUB2をプロジェクト2に分割することもあります。この場合、ART Workbenchは、プロジェクト1では
SUB2がCICSプログラムであることがわからないため、前述のコードを次のように変更します。
|
•
|
COPY-renamingマップとターゲットのcopy-file拡張子の選択により、ターゲット・コピー・ファイルの名前がソース・ファイルのものと異なることがあります。
|
ファイルORIGCOPY(.s-ext)が複数のバージョンに変換されると、それらのバージョンには
ORIGCOPY(.t-ext)、
ORIGCOPY_V1(.t-ext)、
ORIGCOPY_V2(.t-ext)などのように名前が付けられます。
DISPLAY数値についてオーバーパンチ符号を表すためにASCII規約ではなくEBCDIC規約を使用します。これは、ソース・プラットフォームと同じ規約であるため、このような数値の最後の桁が文字変数によって再定義された場合に動作が大きく変化しません。
デフォルトのACCEPT文が、UNIXの標準入力ファイルではなく、指定した論理ファイルから読み取るようにします。これはソース・プラットフォームと同じ動作であり、ART変換されたKSHスクリプトに適しています。このスクリプトは、
SYSINをCOBOLプログラムの他のファイルと同様に扱います。
デフォルトのDISPLAY文が、UNIXの標準出力ファイルではなく、指定した論理ファイルに書き込むようにします。これはソース・プラットフォームと同じ動作であり、Tuxedo ART Workbenchで変換されたKSHスクリプトに適しています。このスクリプトは、
SYSOUTをCOBOLプログラムの他のファイルと同様に扱います。
範囲が重なるPERFORM文のネストに関してソース・プラットフォームと同じ動作を実現します。デフォルト・オプション
PERFORM-TYPE"MF"はセマンティックがよりクリーンで、実行の効率は高くなりますが、動作が変化する可能性があります。これは検出および診断が困難なため、
PERFORMの範囲の動作に問題がなく、範囲が重なっていないことが明らかでないかぎり、デフォルト設定はお薦めしません。
FDの最初のレコードの直前にある隠された長さ変数を提供して、可変長シーケンシャル・ファイルから読み取ったばかりのレコードの長さを知ることができます(詳細はMicro Focus COBOLのドキュメントを参照)。この方法はソース・プラットフォームで使用できます。このオプションは強く推奨されてはいませんが、これを使用すると同じ動作を再現できます。
デフォルトでEXTERNALファイル割当て方法を使用するようMicro Focus COBOLコンパイラに指示します。この方法では、
SELECT名が、
DD_NAMEという形式の環境変数で実際のファイル名を、探すためのキーとして使用されます。これは、ファイル割当てをプログラムの外部に指定できる(すなわちKSHスクリプトの呼出し)Tuxedo ART Workbenchのために選択するモードです。これは概念においてソースの動作に似ているだけではなく、最も柔軟性の高い方法です。
SYSPUNCH論理ファイルのレコード長を定義します。デフォルト設定(132)はソース・プラットフォームの設定と異なります。
ZEROLENGTHFALSEを設定すると、ゼロ長のグループ項目間、およびゼロ長の項目と表意定数の間の比較はすべてfalseを返します。設定しない場合、それらはすべてtrueを返します。ソース・プラットフォームと同じ動作を再現するには設定する必要があります。
CALL文で参照されるサブプログラムの名前を切り詰めません。これは、Tuxedo ART Workbenchで移行したアセットで必要です。Tuxedo ART Workbenchによって生成されるデータ・アクセス・ルーチンの名前はロング・ネームであるためです。また、将来的にアセットを活用するためにも、ソース・プラットフォームで課せられていた名前の長さ制限を排除することをお薦めします。
COPYディレクティブで参照されるコピー・ファイルの名前を切り詰めません。これは、Tuxedo ART Workbenchで移行したアセットで必要です。Tuxedo ART Workbenchによって生成または挿入されるコピー・ファイルの名前はロング・ネームであるためです。また、将来的にアセットを活用するためにも、ソース・プラットフォームで課せられていた名前の長さ制限を排除することをお薦めします。
コピー・ファイル名をライブラリ・アーカイブ(.lbrファイル)ではなく、単純なパスとして扱います。これは、Tuxedo ART Workbenchで移行されるアセットで必要です。Tuxedo ART Workbenchによって変換または生成されるコピー・ファイルはアーカイブとしてグループ化されないためです。
NOSIGN-FIXUPは、
HOST-NUMCOMPAREおよび
HOST-NUMMOVEディレクティブを使用するときに、メインフレームのコンパイラ・オプション
NUMPROC(PFD)のエミュレーションを提供します。このオプションでは、
NUMPROC(NOPFD)動作の完全なエミュレーションを提供できませんが、最高のパフォーマンスを実現します。
CALL文のサブプログラム名を大文字にマップするようコンパイラに指示します。
COPYディレクティブのコピー・ファイル名を大文字にマップするようコンパイラに指示します。
配列にアクセスするとき、または参照修飾子において、各索引が正しい境界の間にあることをチェックします。これは、IBMコンパイラのSSRANGEオプションに似ています。少なくとも移行テストと運用開始直後の数か月は、これら両方のオプションを設定することを強くお薦めします(
SSRANGEを設定すると
BOUNDも設定されることに注意してください)。この選択には少し問題があります。それは、ソース・プラットフォームで正しく実行しているように見えるいくつかのプログラム(
SSRANGEオプションなし)が停止することがあるためです。ただし、経験によると、停止するプログラムはソース・プラットフォームで偶然作動できていた誤ったプログラムのみです。ターゲット・プラットフォームでは同様に作動しないか、まったく作動しません。このようなプログラムの検出と修正は早く行うのに越したことはありません。同じく、
CHECKオプションの設定も検討してください。これは、様々な(他の)実行時チェックを有効にし、他の一見正常なプログラムを検出できます。
値をBINARY変数(または
COMP、あるいは
COMP-4)に割り当てたときに、指定された
PICサイズの切捨てが行われるかどうかを指定します。これは、IBMコンパイラの
TRUNC(STD)オプションに似ています。ただし、ART COBOLコンバータの現在の仕様では、そのようなすべての変数は
COMP-5変数に変換され、この変数は
TRUNCオプションの対象になりません。前述の
「COMP-5型およびTRUNCコンパイラ・オプションの使用」での説明を参照してください。
QUOTE記号定数が単一引用符と二重引用符のどちらの文字を表すかを選択できます。これは同名のIBMオプションと似ています。ソース・プラットフォームと同じ設定を使用します。
COBOLプログラムでのALTER文の存在を禁止します。
ALTER文は以前使用されていましたが、存在している場合は深刻な問題になります。ART Workbenchでアセットを移行する機会に、残っている
ALTERがあれば削除してしまうことをお薦めします。その後、このオプションを設定して再び使用しないようにし、コンパイルされたコードの効率と安全性を高めます。
重なっているデータ項目間での英数字データの移動動作を制御します。BYTE-MODE-MOVEが指定される場合、データはソースからターゲットに一度に1バイトずつ移動します。
NOBYTE-MODE-MOVEが指定される場合、データは(環境に応じて)一度に2バイトや4バイト(またはそれ以上)のグラニュルでソースからターゲットに移動します。結果として、重なりがグラニュル・サイズよりも小さい場合は、グラニュルを移動するたびに次に移動するグラニュルの一部が上書きされます。
NO-BYTE-MODE-MOVEではパフォーマンスが向上しますが、ソース・プラットフォームで正しく作動しているごく一部のプログラムに正しくないコードが生成されることがあります。比較的互換性が高い設定(
BYTE-MODE-MOVE)から開始し、完全なリグレッション・テストを満足できるまで実行してから、他のオプションを選択して再テストすることをお薦めします。
CANCEL文が無視されないことを指定します。これは同名のIBMオプションに似ています(まったく同じではありません。Micro Focus COBOLのドキュメントを参照してください)。このオプションの設定を強くお薦めします。応用CICSプログラムを実行するART TP Run-timeシステム内のTuxedoサーバーは、
CANCEL文を使用して、それらのプログラムのロードと実行に使用されたメモリーを解放するためです。
NODYNAMが有効になっていると、それらのサーバーが違うプログラムを実行するにつれ使用されるメモリー容量は増加し続けます。
前述の「浮動小数点変数の使用」の説明を参照してください。
トレースに関する文(READY TRACEおよび
RESET TRACE)に従うかどうかを指定します。
|
•
|
DIALECT"MF" (デフォルト): 最もネイティブで効率的な操作モードを設定します。Oracle ARTの目的は、ソース・メインフレームのエミュレートのみではなく、メインフレームにとらわれずにターゲット・プラットフォームのメリットを活用することであるため、これは最適な選択です。Unicodeサポートやオブジェクト指向プログラミングなど、Micro Focus COBOLの最新機能を使用できるようになります。
|
|
•
|
CHARSET" ASCII" (デフォルト): デフォルトの文字セットとコレーティング・シーケンスを、ターゲット・プラットフォームでネイティブにサポートされるものに設定します。これも明らかな選択です。
|
|
•
|
SOURCEFORMAT" FIXED" (デフォルト): 古い標準、固定形式および列ベース形式に従うようコンパイラに指示します。これは、最新化という目的に反するように見えますが、残念ながらOracle Pro*COBOLコンパイラは最新の11gバージョンでさえMicro Focus COBOLのフリー形式との互換性が低いため、正確な動作を保証するために固定形式を必要とします。
|
|
•
|
ALIGN" 8" (デフォルト): 最上位構造(01および77レベル)のアライメントを定義します。構造がソース・プラットフォームと同じレイアウトを維持していることを確認するために必要です。メモリー・サイズのためにコストが若干かかりますが、最適なパフォーマンスを得られます。
|
|
•
|
COMP5-BYTE-ORDER" NATIVE" (デフォルト): COMP-5変数のネイティブ・バイト・オーダーを使用します。C言語およびART TPランタイム・システムとの互換性のために必要です。
|
|
•
|
P64 (明示的に設定): 64ビット・プラットフォーム用にコンパイルします。ARTでサポートされるすべてのターゲット・プラットフォームは64ビットです。
|
|
•
|
SIGN" EBCDIC" (明示的に設定): DISPLAY数値についてオーバーパンチ符号を表すためにASCII規約ではなくEBCDIC規約を使用します。これは、ソース・プラットフォームと同じ規約であるため、このような数値の最後の桁が文字変数によって再定義された場合に動作が大きく変化しません。
|
|
•
|
DEFAULTBYTE" 00" (明示的に設定、前のオプションが指定される場合以外): Working-Storage Sectionにおける未定義のすべての変数を初期化するための値を指定します。ソース・プラットフォームでは、Working-Storage Sectionは公式には暗黙に初期化されないことになっているため、必ずしも必要ではありません。ただし、数値変数を文字変数で再定義すると動作の違いが少なくなることがわかっています。
|
|
•
|
RWHARDPAGE (明示的に設定): 最後の項目がページに印刷された後で、Report Writer制御モジュールが、複数の空白行を出力する通常の処理のかわりにフォーム・フィードを実行します。すべてのUNIXプリンタ・システムはForm Feed文字を正しく処理します。
|
|
•
|
INDDまたは INDD" SYSIN80L" (明示的に設定): デフォルトのACCEPT文が、UNIXの標準入力ファイルではなく、指定した論理ファイルから読み取るようにします。これはソース・プラットフォームと同じ動作であり、ART変換されたKSHスクリプトに適しています。このスクリプトは、SYSINをCOBOLプログラムの他のファイルと同様に扱います。
|
|
•
|
OUTDDまたは OUTDD" SYSOUT80L" (明示的に設定): デフォルトのDISPLAY文が、UNIXの標準出力ファイルではなく、指定した論理ファイルに書き込むようにします。これはソース・プラットフォームと同じ動作であり、ART変換されたKSHスクリプトに適しています。このスクリプトは、SYSOUTをCOBOLプログラムの他のファイルと同様に扱います。
|
|
•
|
HOSTARITHMETIC、 HOST-NUMMOVE"2"、HOST-NUMCOMPARE"2"、ARITHMETIC"ENTCOBOL"、CHECKDIV"ENTCOBOL"、FP-ROUNDING"ENTCOBOL"、REMAINDER"2" (明示的に設定): これらのオプションはすべて、数値変数と数値表現の様々な処理を制御します。これらを設定することで、ソース・プラットフォームとの互換性が最大化されます。
|
|
•
|
IBMCOMP (明示的に設定): 構造のレイアウトについて、ソース・プラットフォームと同じモードであり、メモリー消費が少し増加しますが、最高のパフォーマンス効率を得られるものでもあるword-storageモードをオンにします。
|
|
•
|
ODOSLIDE (明示的に設定): 同じレコード内の可変長表の長さが変わると、その後のデータ項目を移動します。これは、同じレコード内の可変長表の後にあるデータ項目に影響します。つまり、OCCURS DEPENDING句が付いた項目の後にあるが、その項目には従属しない項目です。ODOSLIDEでは、これらの項目は表のサイズに関係なく常に表の直後に続きます。つまり、表のサイズが変わるとアドレスが変わります。NOODOSLIDEでは、これらの項目のアドレスは固定されており、表の最大長として割り当てられた領域が終了してから開始します。ODOSLIDEを設定すると、ソース・プラットフォームと同じ動作になります。
|
|
•
|
PERFORM-TYPE"ENTCOBOL" (明示的に設定): 範囲が重なるPERFORM文のネストに関してソース・プラットフォームと同じ動作を実現します。デフォルト・オプションPERFORM-TYPE"MF"はセマンティックがよりクリーンで、実行の効率は高くなりますが、動作が変化する可能性があります。これは検出および診断が困難なため、PERFORMの範囲の動作に問題がなく、範囲が重なっていないことが明らかでないかぎり、デフォルト設定はお薦めしません。
|
|
•
|
RDW (明示的に設定): FDの最初のレコードの直前にある隠された長さ変数を提供して、可変長シーケンシャル・ファイルから読み取ったばかりのレコードの長さを知ることができます(詳細はMicro Focus COBOLのドキュメントを参照)。この方法はソース・プラットフォームで使用できます。このオプションは強く推奨されてはいませんが、これを使用すると同じ動作を再現できます。
|
|
•
|
RECMODE" ENTCOBOL" (明示的に設定): Micro Focus COBOLコンパイラがソース・コンパイラと同じアルゴリズムを使用して、ファイルが固定長形式か可変長形式(ファイル定義の様々なレコードの長さに基づく)かを判別するように指示します。
|
|
•
|
ASSIGN" EXTERNAL" (明示的に設定): デフォルトでEXTERNALファイル割当て方法を使用するようMicro Focus COBOLコンパイラに指示します。この方法では、SELECT名が、DD_NAMEという形式の環境変数で実際のファイル名を、探すためのキーとして使用されます。これは、ファイル割当てをプログラムの外部に指定できる(すなわちKSHスクリプトの呼出し)ARTのために選択するモードです。これは概念においてソースの動作に似ているだけではなく、最も柔軟性の高い方法です。
|
|
•
|
SYSPUNCH"80" (明示的に設定): SYSPUNCH論理ファイルのレコード長を定義します。デフォルト設定(132)はソース・プラットフォームの設定と異なります。
|
|
•
|
ZEROLENGTHFALSE (明示的に設定): ZEROLENGTHFALSEを設定すると、ゼロ長のグループ項目間、およびゼロ長の項目と表意定数の間の比較はすべてfalseを返します。設定しない場合、それらはすべてtrueを返します。ソース・プラットフォームと同じ動作を再現するには設定する必要があります。
|
|
•
|
NOADV (デフォルト): テキスト・ファイルの特殊なプリンタ制御文字を使用しません。ターゲットプラットフォームの印刷ユーティリティにより、画面表示と同じレイアウトでファイルが印刷されます。
|
|
•
|
NOTRUNCCALLNAME (デフォルト): CALL文で参照されるサブプログラムの名前を切り詰めません。これは、ARTで移行したアセットで必要です。ARTによって生成されるデータ・アクセス・ルーチンの名前はロング・ネームであるためです。また、将来的にアセットを活用するためにも、ソース・プラットフォームで課せられていた名前の長さ制限を排除することをお薦めします。
|
|
•
|
NOTRUNCCOPY (デフォルト): COPYディレクティブで参照されるコピー・ファイルの名前を切り詰めません。これは、ARTで移行したアセットで必要です。ARTによって生成または挿入されるコピー・ファイルの名前はロング・ネームであるためです。また、将来的にアセットを活用するためにも、ソース・プラットフォームで課せられていた名前の長さ制限を排除することをお薦めします。
|
|
•
|
NOCOPYLBR (デフォルト): コピー・ファイル名をライブラリ・アーカイブ(.lbrファイル)ではなく、単純なパスとして扱います。これは、ARTで移行されるアセットで必要です。ARTによって変換または生成されるコピー・ファイルはアーカイブとしてグループ化されないためです。
|
|
•
|
COPYEXT"cpy,cbl" (明示的に設定): COPY文のファイル名が拡張子なしで指定された場合に、コンパイラが探すためのコピー・ファイルのファイル名拡張子を指定します。このデフォルトではない設定はASTで移行されたアセットに適しています。ARTによって生成されるコピー・ファイルには常に.cpy拡張子が付いており、ARTによって変換されるコピー・ファイルにも通常は同じ拡張子が付いているためです。ただし、別の拡張子についてCOBOLコンバータを構成する場合は、それに応じてこのオプションの設定を調整する必要があります。
|
|
•
|
MAPNAME (明示的に設定): コンパイラが、ソース・プラットフォームと互換性を持つようにプログラム名とエントリポイント名を変更します。
|
|
•
|
BOUNDおよび SSRANGEは、配列にアクセスするとき、または参照修飾子において、各索引が正しい境界の間にあることをチェックします。これは、IBMコンパイラのSSRANGEオプションに似ています。少なくとも移行テストと運用開始直後の数か月は、これら両方のオプションを設定することを強くお薦めします(SSRANGEを設定するとBOUNDも設定されることに注意してください)。この選択には少し問題があります。それは、ソース・プラットフォームで正しく実行しているように見えるいくつかのプログラム(SSRANGEオプションなし)が停止することがあるためです。ただし、経験によると、停止するプログラムはソース・プラットフォームで偶然作動できていた誤ったプログラムのみです。ターゲット・プラットフォームでは同様に作動しないか、まったく作動しません。このようなプログラムの検出と修正は早く行うのに越したことはありません。同じく、CHECKオプションの設定も検討してください。これは、様々な(他の)実行時チェックを有効にし、他の一見正常なプログラムを検出できます。
|
|
•
|
TRUNC: 値をBINARY変数(または COMP、あるいは COMP-4)に割り当てたときに、指定されたPICサイズの切捨てが行われるかどうかを指定します。これは、IBMコンパイラの TRUNC(STD)オプションに似ています。ただし、ART COBOLコンバータの現在の仕様では、そのようなすべての変数はCOMP-5変数に変換され、この変数はTRUNCオプションの対象になりません。前述の「COMP-5型およびTRUNCコンパイラ・オプションの使用」での説明を参照してください。
|
|
•
|
APOSTおよび QUOTE: QUOTE記号定数が単一引用符と二重引用符のどちらの文字を表すかを選択できます。これは同名のIBMオプションと似ています。ソース・プラットフォームと同じ設定を使用します。
|
|
•
|
NOALTER: COBOLプログラムでの ALTER文の存在を禁止します。 ALTER文は以前使用されていましたが、存在している場合は深刻な問題になります。ART Workbenchでアセットを移行する機会に、残っている ALTER句があれば削除してしまうことをお薦めします。その後、このオプションを設定して再び使用しないようにし、コンパイルされたコードの効率と安全性を高めます。
|
|
•
|
AREACHECK: Procedure Divisionで領域Aから開始するすべてのトークンを直前のトークンにかかわらずパラグラフまたはセクション・ラベルとしてコンパイラで扱います。 AREACHECKを指定しないと、ピリオドの後のトークンのみがラベルとして扱われます。このディレクティブによりIBMのエラー処理(ラベルの前のピリオドが省略されていても、深刻度の低いメッセージが生成される)との互換性が高まります。そのようなエラーを招くソース・コードは修正することをお薦めします。
|
|
•
|
NOBYTEMODEMOVE: 重なっているデータ項目間での英数字データの移動動作を制御します。 BYTE-MODE-MOVEが指定される場合、データはソースからターゲットに一度に1バイトずつ移動します。 NOBYTE-MODE-MOVEが指定される場合、データは(環境に応じて)一度に2バイトや4バイト(またはそれ以上)のグラニュルでソースからターゲットに移動します。結果として、重なりがグラニュル・サイズよりも小さい場合は、グラニュルを移動するたびに次に移動するグラニュルの一部が上書きされます。 NO-BYTE-MODE-MOVEではパフォーマンスが向上しますが、ソース・プラットフォームで正しく作動しているごく一部のプログラムに正しくないコードが生成されることがあります。比較的互換性が高い設定 (BYTE-MODE-MOVE)から開始し、完全なリグレッション・テストを満足できるまで実行してから、他のオプションを選択して再テストすることをお薦めします。
|
|
•
|
DYNAM: CANCEL文が無視されないことを指定します。これは同名のIBMオプションに似ています(まったく同じではありません。Micro Focus COBOLのドキュメントを参照してください)。応用CICSプログラムを実行するART TP Runtimeシステム内のTuxedoサーバーは、 CANCEL文を使用して、それらのプログラムのロードと実行に使用されたメモリーを解放するため、このオプションの設定を強くお薦めします。 NODYNAMが有効になっていると、それらのサーバーが違うプログラムを実行するにつれ使用されるメモリー容量は増加し続けます。
|
|
•
|
NOFDCLEAR、NOHOSTFD: これらのオプションを有効に設定すると、IBMコンパイラによる FD使用方法の制限が再現されます( FDレコードは OPEN時にのみ割り当てられ、レコードの内容は WRITEの後に失われるなど)。このような制限には意味がないと考え、これらのオプションは使用しないことをお薦めします。
|
|
•
|
NOSEG: セグメント化をオフにし、すべてのセグメント番号を無視します。結果として生成されるプログラムは、オーバーレイなしの1つのプログラムになります。セグメント化は現在ほとんど使用されません。
|
|
•
|
STICKY-LINKAGE"2" / NOSTICKY-LINKAGE: このオプションは、現在の呼出しで新しいリンクが指定されない(実際の引数が指定されない)場合に、プログラムの前の呼出しで実際のデータ項目にリンクされたプログラム・パラメータ(Linkage Sectionの項目)が同じ項目に再リンクされるかどうかを制御します。 STICKY-LINKAGE"2"設定は、特にCICSプログラムに関してソース・プラットフォームの動作との互換性は比較的高いのですが、標準ではなくエラーが発生しやすい傾向があります。また、これはART TPランタイム・システムの特定の機能(特に、共有メモリーのない1つのクラスタ内で実行するいくつかのサーバー上にTPトランザクションを分散する機能)との互換性がない場合があります。このため、最初からデフォルトの NOSTICKY-LINKAGE設定を使用し、リグレッション・テストで検出されるsticky-linkage関連の不具合を修正することを強くお薦めします。また、「NULLアドレスのLinkage-Section引数」を参照してください。
|
|
•
|
LIST: コンパイル・リストの場所と形式を指定します。
|
|
•
|
SETTINGS: コンパイル・リストにすべてのコンパイラ・オプションのリストを含めるかどうかを指定します。
|
|
•
|
TRACE: トレースに関する文(READY TRACEおよびRESET TRACE)に従うかどうかを指定します。
|
|
•
|
WARNING: コンパイル・リストに出力されるエラー・メッセージの冗長性を指定します。
|
|
•
|
FLAG"dialect": コンパイラが、指定されたCOBOLダイアレクトに含まれない構文を検出したときに、言語レベル証明フラグを生成する必要があるかどうかを指定します。
|
動作に影響を及ぼす、設定が必須な主要オプションは、DIALECT"ENTCOBOL"です。実際、このダイアレクト・オプションは、
PERFORM-TYPE"ENTCOBOL"などの多くのサブオプションを設定し、それにより、ターゲット・プログラムは、IBM Enterprise COBOL Compilerによってコンパイルされる元のソース・プログラムと可能なかぎり同じように動作します。
|
•
|
NOADV: テキスト・ファイルの特殊なプリンタ制御文字を使用しません。ターゲットプラットフォームの印刷ユーティリティにより、画面表示と同じレイアウトでファイルが印刷されます。
|
|
•
|
ALIGN"8": 01および77レベルのデータ項目が、最も一般的なメモリー境界で配列されます。
|
|
•
|
BOUND: 配列にアクセスするとき、各索引が正しい境界の間にあることをチェックします。この選択は、ソース・プラットフォームで正しく実行しているように見えるいくつかのプログラムを停止させる可能性があるため、少し問題があります。ただし、経験上、停止するプログラムは、ソース・プラットフォームで偶然作動していたものの、ターゲット・プラットフォームでは同様には動作しなかったであろう誤ったプログラムのみです。このようなプログラムの検出と修正は早く行うのに越したことはありません。
|
|
•
|
COMP-5"2": COMP-5変数のネイティブ・バイト・オーダーを使用します。これは、特にRehosting Workbench CICSランタイム・ルーチンとの互換性のために必要です。
|
|
•
|
NOCOPYLBR: コピー・ファイルは、プレーン・ファイルであり、.lbrライブラリ・ファイルではありません。
|
|
•
|
INTLEVEL"4": 最大38桁の数値変数を許可し、改善された算術動作をより広く使用します。
|
|
•
|
RWHARDPAGE: Report Writerで新しいページにジャンプする場合に、複数の改行を使用するかわりにハードForm Feed (FF)文字を使用します。FFは、すべてのターゲット・プラットフォームの印刷ユーティリティで、新しいページへのジャンプと認識されます。
|
|
•
|
NOTRUNCCALLNAME: Oracle Tuxedo Application Rehosting Workbench COBOLコンバータではより長い名前が使用されるため、ENTCOBOLダイアレクトで通常行われるように、呼び出されたサブプログラムの名前を8文字に切り詰めません(これは、将来の拡張にも適しています)。
|
|
•
|
COPYEXT: コピー・ファイルに使用されるファイル拡張子を指定します。移行時に選択した内容に従って設定します(target-copy-extension構成句を参照してください)。
|
|
•
|
SETTINGS: コンパイル・リストにすべてのコンパイラ・オプションのリストを含めるかどうかを指定します。
|
|
•
|
TRACE: トレースに関する文(READY TRACEおよびRESET TRACE)に従うかどうかを指定します。
|
|
•
|
WARNING: コンパイル・リストに出力されるエラー・メッセージの冗長性を指定します。
|
deferred-copy-reconcil句がコマンド行または構成ファイルに指定されている場合、一度に複数の同時プロセスによってコンバータを実行できます。それ以外の場合、これらの同時プロセスのコピー調整フェーズによって、最終的に調整されたコピー・ファイルのデータベースに対するアクセス競合が発生して、異常終了することがあります。
システム記述ファイルの場所を指定します。Unix/Linuxコマンドで一般的なように、パスとしては絶対パスまたは現在の作業ディレクトリに対する相対パスを指定できます。メイン構成ファイルのパスを含め、多数のTuxedo ART Workbenchツールで使用される他の多くのパスは、このファイルの場所から導出されることに注意してください(次のオプションを参照)。これにより、同じコマンドを様々な作業ディレクトリから実行しやすくなります。
メイン変換構成ファイルの場所を指定します。絶対パスまたは相対パスのどちらも可能です。後者の場合は、システム記述ファイルを含むディレクトリに関して相対的に指定します(Tuxedo ART Workbenchツールでの共通の方法)。
-tce extensionまたは-target-copy-extension extension
-cicsまたは-activate-cics-rules