PCHECK - オブジェクト呼び出しステートメントのパラメータチェック

この Natural プロファイルパラメータは、Natural のコンパイラを制御するために使用されます。

可能な設定 ON コンパイラが、CALLNATPERFORMINPUT USING MAPPROCESS PAGE USING、ヘルプルーチン呼び出しなど、オブジェクト呼び出しステートメントで指定されたパラメータの数値、フォーマット、長さ、および配列の添字の限度をチェックします。また、DEFINE DATA PARAMETER ステートメントの OPTIONAL 機能もパラメータチェックで考慮されます。

パラメータチェックは、呼び出しステートメントのパラメータと呼び出されるオブジェクトの DEFINE DATA PARAMETER 定義の比較に基づいています。

このチェックを行うには、次の条件が必須です。

  • 呼び出されるオブジェクトの名前が、英数字の変数としてではなく英数字の定数として定義されている。

  • 呼び出されるオブジェクトが、カタログ化オブジェクトとして利用可能である。

これに該当しない場合、PCHECK=ON には何の効力もありません。

CATALL コマンドを PCHECK=ON で使用する場合の問題点

CATALL コマンドを PCHECK=ON に指定して使用するときは、次の点を考慮する必要があります。

CATALL プロセスが開始すると、Natural オブジェクトがコンパイルされる順序は、まずオブジェクトのタイプが優先され、次にオブジェクトのアルファベット名で決定されます。使用されるオブジェクトタイプの順序は、次のとおりです。DDM、GDA、LDA、PDA、クラス、マップ、外部サブルーチン、サブプログラム、機能、アダプタ、ヘルプルーチン、プログラム。同じタイプのオブジェクトでは、名前のアルファベット順によって、オブジェクトがカタログされる順序が決定されます。

上述したように、オブジェクト呼び出しステートメントのパラメータは、呼び出されたオブジェクトのコンパイル後の形に対してチェックされます。呼び出し元オブジェクト(コンパイル中であり、オブジェクト呼び出しステートメントを含むオブジェクト)が呼び出されたオブジェクトの前にカタログ化された場合にオブジェクト呼び出しステートメントと呼び出されたオブジェクト内のパラメータが変更された場合、PCHECK の結果が正しくない可能性があります。この場合、呼び出されたオブジェクトの新しいオブジェクトイメージは、まだ CATALL コマンドによって生成されていません。

これにより、オブジェクト呼び出しステートメントの新しいパラメータレイアウトが、呼び出されたサブプログラムの DEFINE DATA PARAMETER ステートメントの古いパラメータレイアウトと比較されることになります。

解決策:

  • コンパイラオプション PCHECKOFF に設定します。

  • ライブラリ全体に対し、CATALL で全体コンパイルを実行するか、1 つまたは少数のオブジェクトが変更された場合、これらのオブジェクトに対して別々にコンパイルを実行します。

  • コンパイラオプション PCHECK=ON を設定します。

  • ライブラリ全体に対し、システムコマンド CATALL の機能 CHECK を有効にして一般的なコンパイルを実行します。

OFF パラメータチェックは実行されません。
デフォルト設定 OFF  
ダイナミックな指定  
セッション内の指定  
適用可能なステートメント OPTIONS  
適用可能なコマンド PCHECK システムコマンドのオプション COMPOPT