IMS スパース索引出口

IMS スパース索引出口は、2 次索引の生成を抑制します。これはメインフレーム機能のエミュレーションです。

呼び出し
IMS スパース索引出口は実行時に呼び出されます。
コーディング要件
アプリケーション プログラムが、1 つまたは複数の索引付け関係で索引ソース セグメントの役割を持つセグメントの呼び出しを発行すると、DL/I 索引メンテナンス ルーチンが呼び出されます。Enterprise Server は次のセグメント呼び出しをサポートします。
DLET
索引付けセグメントが既存の索引ソース セグメントに対応して作成されます。この呼び出しが null 値テストを渡す場合、索引出口ルーチンが呼び出されます。このルーチンは、この索引付けセグメントが索引中で表示対象になるかどうかを示します。表示対象の場合、実際の索引付けセグメントが検索され削除されます。それ以外の場合、削除は行われません。
ISRT
索引付けセグメントが、挿入されるセグメントに対応するように作成されます。また null テストおよび出口ルーチン テストが実行されます。いずれによっても索引付けの抑制が示されない場合、索引付けが索引に挿入されます。
REPL
置き換えで変更されるフィールドに応じて、DLET 呼び出しと ISRT 呼び出しの組み合わせ、シンプルな置き換え、または NOP になります。索引ソース セグメント (ISS) のフィールドが、索引付けされたデータまたは後続のデータを変更する REPL 呼び出しによって変更される場合、既存の索引付けセグメントが削除され新しいセグメントが挿入されます。索引エディタ ルーチンが操作ごとに呼び出されます。ISS での変更がソース データ フィールドに影響する場合、索引出口ルーチンによって索引付けが抑制されたことが示されない限り、索引付けセグメントで置き換え操作が実行されます。ISS 置き換えによって索引付けセグメントに何も変更がない場合は、処理は行われません。
索引の抑制
出口ルーチンによる索引付けの抑制は、一貫していなければなりません。同じ索引付けセグメントを 2 つの異なる時点で調べることはできず、抑制が示されるのは 1 回のみに限られます。索引付けセグメントにユーザー データが含まれる場合、このユーザー データを使用して抑制を評価することはできません。これは、実際の索引付けセグメントが新しいセグメント挿入の直前に出口ルーチンによって調べられるからです。置き換えと削除が行われる場合、プロトタイプのみが渡されます。このプロトタイプには定数、索引付きデータ、後続のデータ、重複データ、追加されたシンボリック ポインターが含まれます。このため、索引抑制はどのようなユーザー データにも基づいてはなりません。

スパース索引出口ルーチンは戻りコードを発行し、現在の索引ポインター セグメントがその索引に属すること、または抑制される必要があることを示します。出口ルーチンは、どの IMS 制御ブロックも、または索引付けセグメント中のどのフィールドも変更してはなりません。

Enterprise Developer にはサンプルのスパース索引出口 SPARSRTN.cbl が用意されています。このファイルは、デフォルトでは %PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\IMS\Classic\Examples ディレクトリにあります。