Rational Developer for System z
Enterprise PL/I for z/OS, Version 3.8, コンパイラーおよびランタイム 移行ガイド

PLICALLB に関する考慮事項

言語環境プログラムは、PLICALLB エントリー・ポイントを使用する PL/I アプリケーション をサポートします。 次の表に、OS PL/I と言語環境プログラムとの間での PLICALLB パラメーターの マッピングを示します。

表 8. PLICALLB 引数リストのサポートの相違点
OS PL/I 言語環境プログラム
非マルチタスキング・プログラム、 またはマルチタスキング・プログラム内の大タスク の、ISA ストレージの長さの アドレス STACK(init_size ) にマップされます。
ISA ストレージのアドレス 初期 STACK セグメントとして使用されます。
各サブタスクに対する ISA ストレージの長さのアドレス NONIPTSTACK(init_size) にマップされます。
並行サブタスクの最大数のアドレス PLITASKCOUNT(max_thread) にマップされます。
次のランタイム・オプションを指定できる、オプション・ワードの アドレス:
REPORT
SPIE|STAE
COUNT
FLOW
HEAP サブオプション
TASKHEAP サブオプション
次のようにサポートされます。
 
REPORT は RPTSTG にマップされます。
SPIE|STAE は TRAP にマップされます。
COUNT は無視されます。
FLOW は無視されます。
HEAP(,,KEEP|FREE)|(,,ANY|BELOW)
THREADHEAP(,,KEEP|FREE)|(,,ANY|BELOW)
非マルチタスキング・プログラム、または マルチタスキング・プログラム内の大タスクの、HEAP ストレージ の長さのアドレス HEAP(init_size) にマップされます。
HEAP ストレージのアドレス 初期 HEAP セグメントとして使用されます。
非マルチタスキング・プログラム、または マルチタスキング・プログラム内の大タスクの、HEAP 増分 のアドレス HEAP(,incr_size) にマップされます。
サブタスクの HEAP のアドレス THREADHEAP(,increment) にマップされます。
非マルチタスキング・プログラム、または マルチタスキング・プログラム内の大タスクの、ISA 増分 のアドレス STACK(,incr_size) にマップされます。
各サブタスクの ISA 増分の アドレス (非タスキング・アプリケーションの場合はオプション) NONIPTSTACK(,incr_size) にマップされます。

PLICALLB エントリー・ポイントを介して上記の引数リストを渡す際に、 リストの引数はアドレスを指しているか、または 0 でなければなりません。 引数の高位ビットが ON であることは、引数リストの最後を 表します。 R1 には引数リストのアドレスが格納されている必要があります。

言語環境プログラムの環境では、PLICALLB エントリー・ポイントを介して渡される ランタイム・オプションは、アプリケーションの起動時に指定される オプションとして処理され、CEEUOPT オプションまたは PLIXOPT オプション より優先順位が高くなります。 アセンブラー・ユーザー出口を使用して、PLICALLB の呼び出しによって 渡されるランタイム・オプションを変更することはできません。

要約すると、渡されるランタイム・オプションは、言語環境プログラムのオプションの 指定方法において、次の優先順位を 持ちます (高いほうから順)。

  1. インストール時に定義され、オーバーライド不可能属性を持つ オプション
  2. PLICALLB エントリー・ポイントを介して指定されたオプション
  3. PLIXOPT ストリングまたは CEEUOPT 内で指定されたオプション
  4. インストール時に定義された、オプションのデフォルト

PL/I メインルーチンに渡されるユーザー引数の優先順位は、 次のとおりです (最高から最低の順)。

  1. アセンブラー・ユーザー出口の CXIT_PARM または AUE_PARM から の出力
  2. PLICALLB エントリーを介して渡されるユーザー引数
注:
アセンブラー・ユーザー出口の CXIT_PARM または AUE_PARM への 入力は、PLICALLB パラメーター・リストの最初の引数、つまり ユーザー引数アドレスのベクトルのアドレス です。

言語環境プログラムは、16M ラインより上のストレージの使用を推奨しています。 OS PL/I との互換性のために、言語環境プログラムはユーザー提供の ISA ストレージ と HEAP ストレージを、STACK と HEAP にマップします。 ただし、このマッピングを使用する場合 でも、言語環境プログラムは GETMAIN をいくつか実行する必要があります。 ユーザー提供の ISA/HEAP ストレージは通常 16M ラインより下にあるので、 言語環境プログラムの環境では、16M ラインより下のストレージがすぐに消費される 可能性があります。 言語環境プログラムによるストレージの管理方法については、「z/OS 言語環境プログラム プログラミング・ガイド」を参照してください。

言語環境プログラムによるストレージの管理方法は、OS PL/I とは異なります。言語環境プログラムは、OS PL/I がサポート する ISA と HEAP よりも多くのカテゴリーにストレージを分割します。 その結果、ユーザーが提供した OS PL/I の ISA または HEAP ストレージ を言語環境プログラムの STACK または HEAP ストレージにマップするためには、ランタイムに GETMAIN を必要とします。 さらに、言語環境プログラムでは、ユーザーの提供した ISA または HEAP ストレージの 長さが 8 バイトの倍数となっており、アドレスがダブルワードの境界に来ていることを 確認するために診断が行われます。

また、言語環境プログラムは、ユーザーが提供した ISA または HEAP ストレージの位置が、STACK または HEAP ランタイム・オプションでの位置指定に一致するようにします。 ユーザーが提供した HEAP ストレージは、次のすべて があてはまる場合には無視されます。

  1. ユーザーが提供したヒープ・ストレージが 16M ラインより上にある。
  2. HEAP オプションの ANYWHERE サブオプションが有効である。
  3. メインプログラムが AMODE(24) にある。

言語環境プログラムは、16M ラインより下のストレージを、HEAP オプションで 指定された init_sz24 および incr_sz24 サブオプションを使用して割り振ります。

次の環境では、言語環境プログラムによる PLICALLB のサポートは利用できません。


Terms of use | Feedback

This information center is powered by Eclipse technology. (http://www.eclipse.org)