%P= |
各 %P=
コマンドは次のコールにのみ適用され、コールオプションはコールからのリターン時に無条件にリセットされます。
そのため、関連する CALL
ステートメントの直前に %P=
を指定することを強くお勧めします。
Natural CICS インターフェイスを使用している場合、コマンド %P=S(C)
、%P=V
、%P=C(C)
、%P=U
、および %P=UT
を使用すると、Natural プログラムが CALL
ステートメントで Natural 以外のプログラムを呼び出す際に適用される特殊なオプションを設定できます。 他の環境では、これらのコマンドは無視されます。
Natural IMS/TM インターフェイスを使用している場合、コマンド %P=I
を使用すると、Natural プログラムが CALL
ステートメントで Natural 以外のプログラムを呼び出す際に適用される特殊なオプションを設定できます。 他の環境では、このコマンドは無視されます。
Natural 以外のプログラムの呼び出しの詳細については、『ステートメント』ドキュメントの CALL
ステートメントを参照してください。
以下では次のコマンドオプションについて説明します。
このコマンドは、Natural CICS インターフェイスを使用している場合にのみ適用されます。
通常、Natural プログラムで CICS 環境下の Natural 以外のプログラムを呼び出す場合、コールは EXEC CICS LINK
要求によって実行されます。
コールに標準リンクを使用する場合は、端末コマンド %P=S
を発行します。 この場合、呼び出されるプログラムは、標準レジスタ使用を含む標準リンク規則に準拠している必要があります。
このコマンドは、Natural CICS インターフェイスを使用している場合にのみ適用されます。
通常、Natural プログラムで CICS 環境下の Natural 以外のプログラムを呼び出す場合、コールは EXEC CICS LINK
要求によって実行されます。
この端末コマンドを使用すると、Natural CICS インターフェイスにより、標準リンク規則で Natural 以外のプログラムが呼び出されますが、パラメータは CICS LINK
と同様に渡されます。つまり、Register 1 によって、CICS EIB のアドレスを保持しているパラメータリストおよび CICS COMMAREA が示されます。
注意:
%P=SC
は %P=C
と組み合わせることができます。
EXEC CICS RETURN
によって呼び出し元に戻さないようにする必要があります。 アセンブラプログラムは DFHEIRET
マクロコールによって戻す必要があります。 COBOL プログラムは GOBACK
ステートメントによって戻す必要があります。
このコマンドは、z/OS、z/VSE、および BS2000/OSD の Natural CICS インターフェイスおよび Natural バッチサーバー環境など、複数のセッションで同じリージョンのスレッドを共有する Natural 環境に適用されます。
通常、Natural プログラムから Natural 以外のプログラムを呼び出すと、呼び出されたプログラムは会話型の端末 I/O を発行し、Natural スレッドはユーザーがデータを入力するまでブロックされます。
%P=V
を使用すると、Natural スレッドをブロックされないようにすることができます。この端末コマンドを指定した場合、Natural プログラムから呼び出されたプログラムに渡されるパラメータデータは Natural スレッドからコピーされ、スレッドはコールの前にロールアウトされます。
その後、スレッドは別のユーザーが使用できるようになります。 呼び出されたプログラムから呼び出した Natural プログラムへのリターン時には、スレッドが再びロールバックされ、変更されたデータエリアがスレッドにコピーされて、Natural 処理が続行されます。
注意:
CALL
ステートメントで指定されたパラメータのみがスレッドからコピーされ、スレッドに戻されます。
このコマンドは、Natural CICS インターフェイスを使用している場合にのみ適用されます。
通常、Natural プログラムで CICS 環境下の Natural 以外のプログラムを呼び出す場合、CALL
ステートメントのパラメータアドレスリストのアドレスは COMMAREA で渡されます。 パラメータアドレスリストのアドレスではなくパラメータ値自体を COMMAREA で渡す場合は、コールの前に端末コマンド %P=C
を発行します。
これにより、例えば、呼び出される CICS プログラムの DPL を使用することができます。別の CICS リージョンにある CICS プログラムは、%P=C
でのみ呼び出すことができます。"呼び出し側" のリージョンにあるアドレスは "呼び出された" リージョンからアクセスできないため、代わりにパラメータ値を渡す必要があります。
%P=C
を使用した場合、パラメータは TWA では渡されず、パラメータ値のみが CICS COMMAREA で渡されます。 CALL
ステートメントのパラメータリストのすべてのパラメータが、その配置に関係なく互いに隣接してコピーされます。 結果として COMMAREA の長さは個々のパラメータの長さの合計になります。このことは、渡される配列のオカレンス数を決定する際に考慮する必要があります。
パラメータは、呼び出されたプログラムからのリターン時にコピーで戻されます。
重複フィールドが渡された場合または同じフィールドが複数回渡された場合、これらのフィールドを呼び出されたプログラムに対して "読み取り専用" にする必要があります。読み取り専用にしなかった場合、呼び出し元のプログラムにパラメータ値が戻ってきたときに予測できない結果が発生することがあります。
%P=C
には、グループ配列を渡すことができないという制約があります。
01 #GROUP (2) 02 #FIELD1 (A1) 02 #FIELD2 (P7)
代わりに個々の配列として渡します。
01 #GROUP 02 #FIELD1 (A1/2) 02 #FIELD2 (P7/2)
または、グループ配列を再定義します。
01 #GROUP 01 REDEFINE #GROUP 02 #ARRAY (A1/10)
その後、CALL
ステートメントで配列名を指定します。
注意:
%P=S
と %P=C
の両方を発行した場合、%P=C
が無視されます。
CNTCALL
が YES
に設定されている場合、パラメータ値のデータ長が 32 KB を超えると COMMAREA ではなく CICS コンテナが渡されます。この機能には、CICS Transaction Server for z/OS バージョン 3.1 以降が必要です。
このコマンドは、Natural CICS インターフェイスを使用している場合にのみ適用されます。
この機能には、CICS Transaction Server for z/OS バージョン 3.1 以降が必要です。
%P=C
と %P=CC
の違いは、パラメータ値が CICS コンテナで即座に渡されるという点です。 32 KB の長さ制限以外のすべての制約がそのまま適用されます。
このコマンドは、Natural のインストール時に、IBM 言語環境(LE)の呼び出し規則をサポートするオプションを設定した場合にのみ適用されます。
このコマンドを使用すると、LE ダイナミックメインプログラムのコールの後、制御は Natural に戻ります。
デフォルトでは、LE ダイナミックメインプログラムが呼び出された場合、呼び出されたプログラムの処理が完了した後、制御は Natural に戻りません。 プログラムの処理が完了した後に制御を戻すには、プログラムを呼び出す前に %P=L
を使用する必要があります。
Natural で IBM 言語環境(LE)サブプログラムをサポートする方法については、『オペレーション』ドキュメントの「LE サブプログラム」を参照してください。
注意:
CICS 環境では、LE メインプログラムがサポートされていないため、%P=L
および %P=LS
は同じ意味を持ちます。
このコマンドは、Natural のインストール時に、IBM 言語環境(LE)の呼び出し規則をサポートするオプションを設定した場合にのみ適用されます。
このコマンドを使用すると、Natural 以外のダイナミックまたはスタティックなプログラムが LE の呼び出し規則、つまり、Register 12 で LE CAA のアドレスを保持する標準リンク規則を介して呼び出されます。
Natural で IBM 言語環境(LE)サブプログラムをサポートする方法については、『オペレーション』ドキュメントの「LE サブプログラム」を参照してください。
このコマンドは、Natural IMS/TM インターフェイスを使用している場合にのみ適用されます。
%P=I
は、次の CALL
ステートメントで PCB アドレスが 3GL プログラムに渡されることを Natural に示します。 Natural から 3GL プログラムに直接 PCB のアドレスを渡すことはできないため、特殊な規則を使用して、3GL に渡すパラメータに
PCB の位置または名前が含まれていることを Natural に示します。 フィールドがこの規則を満たしている場合、Natural によって、指定されたパラメータのアドレスの代わりに PCB のアドレスが、呼び出された 3GL プログラムに渡されます。
フォーマット A8 または A12 のスカラフィールドのみ、PCB 仕様であるかどうかがチェックされます。 PCB 仕様を含むフィールドは、次の規則に準拠している必要があります。
A8 フィールドには文字列 'PCB=nnnn'
が含まれている必要があります。nnnn は PSB アドレスリスト内の PCB の位置を示す 4 桁の数字です。
A12 フィールドには文字列 'PCB=name'
が含まれている必要があります。name は、Natural IMS/TM のインストール時に NIMLPCB マクロで定義されている 8 文字の PCB 名です。
例:
次のステートメントに対して %P=I
を実行します。
CALL 'MY3GL' USING 'PCB=MYPCB ' 'PCB=0004' PARAM
次のパラメータが 3GL プログラム MY3GL に渡されます。
PCB のアドレスと、マクロ NIMLPCB で指定されている "MYPCB" という名前
PSB アドレスリスト内の 4 番目の PCB のアドレス
Natural フィールド PARAM のアドレス
PCB 仕様が不正な場合、次のリターンコードが RET
システム関数によって返されます。
リターンコード | 説明 |
---|---|
-4 | フォーマット 'PCB=nnnn' に指定した値 nnnn が数値ではありません。
|
-8 | 指定した PCB 名がマクロ NIMLPCB で定義されていません。 |
-12 | 位置番号 nnnn で指定された PCB が PSB アドレスリストに存在しません。 |
このコマンドは、Natural CICS インターフェイスを使用している場合にのみ適用されます。
このコマンドを使用すると、Natural により DPL 経由で呼び出される CICS プログラムで独自の処理単位が使用され、この処理単位が Natural へのリターン時にコミットされます。つまり、呼び出されたプログラムによって実行されたリカバリ可能なリソースへの変更が、Natural によるリカバリ可能なリソースへの変更とは無関係に、コミットまたはロールバックされます。 CICS の側から見ると、このコマンドは SYNCONRETURN オプション付きの EXEC CICS LINK を発生させます。
このコマンドは %P=U
とほとんど同じ意味を持ちますが、例外が 1 点あります。
%P=U
の場合、呼び出されたプログラムからのリターン時に、NORMAL 以外のすべての CICS 条件で、理由コードを含む Natural NAT0920 エラーメッセージが表示されます。この理由コードは EXEC CICS LINK コマンドのレスポンスコードです。
%P=UT
の場合、CICS ROLLEDBACK レスポンスコードはエラーにならず、NORMAL として許容および処理されます。