STACK (CICS)
STACK は、スレッドの
スタック・ストレージの割り振りを制御します。上方成長スタック内にある一般的な項目は、C または PL/I 自動変数、COBOL LOCAL-STORAGE データ項目、および COBOL ライブラリー・ルーチンの作業域です。
共通アンカー域 (CAA) および他の制御ブロックに必要なストレージは、初期スタック・セグメントおよび初期ヒープの割り振り前に個別に割り振られます。
選択されている言語が COBOL のみの場合、STACK の値は (64K,64K,ANY,KEEP,,) に変更されます。
STACK には、以下のサブオプションがあります。
- 初期サイズ (上方成長): 初期上方成長スタック・セグメントのサイズ。連続するストレージの最も近い 8 バイトの倍数に切り上げられます。
- 初期サイズ単位 (上方成長): 初期サイズを指定する単位 (K、M)。
- 増分サイズ (上方成長): 上方成長スタック・エリアの後に続く増分の最小サイズ。これは、最も近い 8 バイトの倍数に切り上げられます。
- 増分サイズ単位 (上方成長): 増分サイズを指定する単位 (K、M)。
- ANYWHERE または BELOW
ANYWHERE は、スタック・ストレージをストレージのどこにでも割り振ることができることを指定します。境界の上に使用可能なストレージがない場合、言語環境プログラムは境界の下のストレージを取得します。
BELOW は、スタック・ストレージを、24 ビット・アドレッシングでアクセス可能な、ストレージの 16 MB 境界の下に割り振ることを指定します。
- KEEP または FREE:
FREE は、スタック内の最後のストレージが解放されたときに、STACK 増分に割り振られたストレージを解放することを指定します。初期ライブラリー・スタック・セグメントは、エンクレーブが終了するまで解放されません。
KEEP は、スタック内の最後のストレージが解放されたときに、STACK 増分に割り振られたストレージを解放しないことを指定します。
注:
- XPLINK 環境でアプリケーションが実行されている場合、STACK ランタイム・オプションは強制的に STACK(,,ANYWHERE,,,) になります。このアクションでは、スタック・ストレージをストレージのどこにでも割り振ることができることを示すために、ANYWHERE|BELOW オプションのみが変更されます。このアクションを指示するメッセージは発行されません。
- ALL31(OFF) で実行されているアプリケーションでは STACK(,,BELOW,,,) を指定する必要があり、スタック・ストレージがアプリケーションによってアドレス可能であることを確認しなければなりません。
- PL/I 考慮事項: 16MB 境界よりも上の PL/I 自動ストレージは、言語環境プログラム STACK オプションの制御下でサポートされます。言語環境プログラム・スタックが境界よりも上にあると、PL/I テンポラリー (ダミー引き数) およびパラメーター・リスト (再入可能/再帰可能ブロック) は境界よりも上に常駐します。
個々のブロックのスタック・フレーム・サイズは、
16 MB に制限されます。スタック・フレーム拡張もまた 16 MB に制限されます。そのため、自動集合、一時変数、またはダミー引き数のサイズを、16 MB を超えるものにすることはできません。この制約に違反すると、予測不能な結果を招くおそれがあります。
- 16 MB 境界の上の、CICS 用の最大初期サイズおよび増分サイズは、1 ギガバイト (1024 MB) です。この制限は CICS のリリースによって異なります。
- z/OS UNIX システム・サービス考慮事項: STACK オプションは、初期スレッドのユーザー・スタックの特性を指定します。特にこのオプションは、初期スレッドのユーザー・スタックの初期サイズを取得します。
増分サイズを指示する特性、ANYWHERE、および KEEP、または FREE は、pthread_create を使用して作成されたスレッドに適用されます。言語環境プログラムは、pthread_create 関数で指定された、スレッドの属性オブジェクトから初期スタック・サイズを取得します。スレッドの属性オブジェクトで設定されるデフォルト・サイズは、STACK ランタイム・オプションの初期サイズから取得されます。
z/OS UNIX での STACK の推奨デフォルト設定は、STACK(12K,12K,ANYWHERE,KEEP) です。