バージョン 8.1.3
 —  ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口  —

ハイパーディスクリプタ出口 01 - 31

ハイパーディスクリプタ出口(ハイパー出口)1~31(HEX01...HEX31)には、ユーザーが指定するディスクリプタ値のアルゴリズムを定義する必要があります(『Adabas ユーティリティマニュアル』を参照)。 ハイパー出口は、ハイパーディスクリプタ値が生成されるたびに、ADACMP ユーティリティまたは Adabas ニュークリアスによりコールされます。 ADACMP は常に、それ自体の ADARUN ステートメントで指定されたハイパーディスクリプタ出口を使用します。 ADAINV ユーティリティによりハイパーディスクリプタ出口が指定されると、Adabas ニュークリアスの ADARUN ステートメントで指定された出口が使用されます。

graphics/hyperdescr_parms_813.png

ハイパーディスクリプタ出口 パラメータ

注意:

  1. ハイパー出口は、ハイパー出口のコール時にアクティブたったものと同じ AMODE 値をコール元プログラムに返す必要があります。
  2. Adabas 8 以降がインストールされていて、ハイパー出口が新しいパラメータリストを使用できるように更新されていない場合、必要なパラメータリストの変更と入力パラメータの変換を行うハイパー出口に、ハイパー出口スタブをリンクすることができます。 ハイパー出口スタブでは、MU または PE はサポートされていません。 詳細は、「ハイパー出口スタブ」を参照してください。
  3. Adabas ニュークリアスまたは ADACMP の起動時に、ハイパー出口がロードされるごとに初期化がコールされます。 詳細は、「ハイパー出口初期化コール」を参照してください。

このドキュメントでは、次のトピックについて説明します。


メインパラメータエリア

パラメータ 内容
0(R1) 予約済み(変更不可)。
4(R1) フルワードのゼロ(変更不可)。
8(R1) 入力パラメータエリアの開始アドレス。
12(R1) 出力パラメータエリアの開始アドレス。 このアドレスは、ユーザー作成のプログラムにより挿入される必要があります。 出力パラメータエリアは、常にユーザーハイパー出口から返す必要があります。 値を返さない場合、アドレスのポイント先は、値エレメントが存在しないことを示すように全体の長さが設定されたヘッダーエレメントになります。

Top of page

入力パラメータエリア(3 番目のパラメータアドレスのポイント先)

graphics/input_parm_area_813.png

ヘッダーエレメントフィールド

LL 入力パラメータエリア全体の長さ(この長さフィールドも含む)
FNR ファイル番号
ISN レコードに割り当てられた ISN
HN ハイパーディスクリプタの名前
F フラグバイト:
  • X'02' の場合は、ファイルに拡張 MU または PE フィールドが存在することを表します。

  • X'80' の場合は、初期化コールを表します。

親エレメントフィールド

FN 親フィールドの名前。
L 親フィールドが FI オプション付きで定義されている場合、VALADDR がポイントする値の長さになります。
I 親フィールドのピリオディックグループのインデックス(4 バイト長)。 親フィールドが PE グループに含まれていない場合、このバイトの値はゼロです。
VALADDR 親フィールドの値のアドレス。 値のフォーマットは、フィールドのオプションにより決定されます。 親フィールドが NU(空値省略)オプションで定義され、このフィールドの値が省略された場合は、入力パラメータエレメントは作成されません。

次の例は、VALADDR により、FI(固定ストレージ)および MU(マルチプルバリュー)オプションの組み合わせで親フィールドにポイントされた値のフォーマットを示します。

graphics/parent_element_fields_813.png

上記の意味は次に示すとおりです。

C MU カウントを表す 1 バイト値。 MY 値の対象が、拡張 MU または PE フィールド付きで定義されたファイルである場合は、拡張カウントが存在する可能性があります。 拡張カウントの詳細については、ADACMP ドキュメントの「圧縮レコード内の 191 を超える MU および PE オカレンスの特定」を参照してください。
*L 16 進値の長さです。この長さには、このフィールド自体の長さ値(1 バイトまたは 2 バイト)も含まれます。 長さが 1~127 の場合に必要なバイト数は 1 です。 長さが 128~255 の場合に必要なバイト数は 2 です。最初のバイトは X'80' に、2 番目のバイトは実際の長さの値に設定されます(次の例の表を参照)。
長さ バイト 1 バイト 2
L=127: x'7F' (x'80')
L=128: (x'80') (x'80')
L=255: (x'80') x'FF'

Top of page

出力パラメータエリア

このエリアを割り当てて、ハイパーディスクリプタユーザー出口の領域全体に適用する必要があります。 このエリアのアドレスは、メインパラメータエリアの 2 番目の位置に配置する必要があります。

このエリアは、8 バイトヘッダーおよび、その後に続く、生成された圧縮形式のハイパーディスクリプタ値で構成されます。

graphics/output_parm_area_813.png

ヘッダーエレメント

LL 出力パラメータエリア全体の長さ(この長さフィールドも含む)。 値を返さない場合、全体の長さは、ヘッダーエレメントの長さに設定されます。
00 予約済みのスペース。 これは、0 に設定する必要があります。
RC リターンコード。 ハイパー出口でゼロ以外の値を設定すると、コールを拒否することを示します。この場合に設定する値としては、"16" が推奨です。 このフィールドがゼロ以外の場合、コールはエラーになり、レスポンスコード 79 が返されます。
ISN ディスクリプタ値に割り当てられた ISN。 元の ISN を変更する場合は、新しい ISN をここに挿入する必要があります。 Adabas ニュークリアスへのリターン時にこれらの 4 バイトに 0 が含まれる場合は、元の ISN が使用されます。 これは 4 バイトのバイナリ値です。

注意:
ハイパー出口が、ヘッダーエレメントの ISN フィールドで ISN を返す場合は、ファイルが USERISN=YES で定義され、ファイルが後でリロードされるときに ISN が割り当て直されるのを防ぎます。

値エレメント

L この次の値の長さ(この長さバイトも含む)。 最大長は、ハイパーディスクリプタに使用されているフォーマットにより決定されます。
インデックスに挿入されるディスクリプタ値。 値は、このハイパーディスクリプタに割り当てられるフォーマットに応じた規則に従っている必要があります。 ハイパーディスクリプタが PE オプションで定義されている場合は、1 バイト PE インデックスを含む 1 つのバイトが値の直後にあり、長さ L に含まれている必要があります。 PE オプションで定義されているハイパーディスクリプタの対象が、拡張 MU または PE フィールド付きで定義されたファイルである場合は、2 バイトの PE インデックスを含む 2 つのバイトが値の直後に続き、長さ L に含まれている必要があります。 ニュークリアスは、パック形式または数値形式の値が正しいかどうかをチェックします。 パックフィールドの正しい符号は、A、C、E、F(正)および B、D(負)です。 ニュークリアスはすべての符合を F または D に変更します。

L
04 R E D  
06 B L U E02 X'02' は PE インデックス
03 123F パック 10 進数の 123
04 123F01 インデックス 1 を持つ PE グループのパック 10 進数の 123
07 B L U E0002 X'0002' は、拡張 MU または PE フィールド付きで定義されたファイルの PE インデックス
05 123F010A インデックス 266 を持つ拡張 PE グループのパック 10 進数の 123

Top of page

空値オプション

NU(空値)オプションは、ハイパーディスクリプタまたは親フィールドに対して指定できます。 起こりうる組み合わせは次のとおりです。

Top of page

ハイパー出口初期化コール

Adabas ニュークリアスまたは ADACMP の起動時に、ハイパー出口がロードされるたびに初期化コールが実行されます。 主要なパラメータエリアは、説明に従って使用する必要があります。 3 番目のパラメータアドレスのポイント先は、ヘッダー長によって後続の値がないことを示す入力パラメータエリアです。 フラグバイトは、初期化コールを表す x'80' に設定されます。 リターン時には、値が返されていないことを示すヘッダー長とともに、4 番目のパラメータアドレスが出力パラメータエリアに設定される必要があります。

Top of page

ハイパー出口スタブ

ハイパー出口スタブの役割は、以前のハイパー出口を変更しなくても Adabas 8 パラメータリストを使用できるようにすることです。 ハイパー出口スタブは、新しいパラメータエリアを使用するために既存のハイパー出口をすぐに更新したくないお客様に向けた一時的な解決方法として用意されています。 拡張 MU または PE フィールドが定義されたファイルが対象の場合には、ハイパー出口スタブは機能しません。このようなファイルに対してハイパー出口スタブがコールされた場合、レスポンスコードが返されます。 ハイパー出口スタブにリンクしたハイパー出口が、以前のバージョンの Adabas で使用されることはありますが、ハイパー出口スタブ自体が Adabas 8 パラメータを使用するハイパー出口で使用されることはありません。

JOBS データセットのサンプルジョブ LNKHEX8 には、ハイパー出口スタブをハイパー出口にリンクするときの例が収録されています。

z/VM 環境では、次の手順に従って、ハイパー出口スタブにリンクするハイパー出口を作成してください。

  1. 付属のテープに収録されているファイル INPUT TEXT を編集します。 3 行目(NAME HEXnnMOD)を、作成するハイパー出口の名前に変更します。 ADARUN HEXnn パラメータに同じ名前を設定してください。 他の行は変更しないようにしてください。 ファイルを保存します。

    INCLUDE LIBDEF(HEXV87,HEXOLD)
    INCLUDE TXTDEF
    NAME HEXnnMOD
    
  2. 次のコマンドを使用してハイパー出口を生成します。

  3. Adabas ニュークリアスを起動する前に、GLOBAL LOADLIB HEXnn を指定してください。

Top of page