Adabas...コマンド処理(Adabas...

68
Adabas ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ バージョン 8.1.3 June 2008

Transcript of Adabas...コマンド処理(Adabas...

  • Adabas

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    バージョン 8.1.3

    June 2008

  • This document applies to Adabas Version 8.1.3 and to all subsequent releases.

    Specifications contained herein are subject to change and these changes will be reported in subsequent release notes or new editions.

    Copyright © Software AG 1971-2008. All rights reserved.

    The name Software AG™, webMethods™, Adabas™, Natural™, ApplinX™, EntireX™ and/or all Software AG product names areeither trademarks or registered trademarks of Software AG and/or Software AG USA, Inc. Other company and product names mentionedherein may be trademarks of their respective owners.

  • 目次

    1 ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口 ........................... 12 ユーザー出口 1(一般処理) .......................................................................................... 33 ユーザー出口 2(デュアルログ処理) ............................................................................ 5

    ユーザー出口 2 コールの処理フロー ......................................................................... 7入力パラメータ .......................................................................................................... 8出力パラメータ ........................................................................................................ 10BS2000 ユーザー出口 2 の起動オプション ............................................................... 10

    4 ユーザー出口 3(ユーザー定義のフォネティック処理) ............................................. 13入力パラメータ ........................................................................................................ 14

    5 ユーザー出口 4(ユーザー生成のログデータ) ........................................................... 15コマンドログフォーマット ...................................................................................... 16

    6 ユーザー出口 5(Adabas Review ハブイベントハンドラ) ........................................ 19入力パラメータ ........................................................................................................ 20出力パラメータ ........................................................................................................ 21

    7 ユーザー出口 6(データ圧縮前のユーザー処理) ........................................................ 23ADACMP のヘッダー処理 ....................................................................................... 25入力パラメータ ........................................................................................................ 26出力パラメータ ........................................................................................................ 26

    8 ユーザー出口 8(オペレータインターフェイス) ........................................................ 27入力パラメータ ........................................................................................................ 29

    9 ユーザー出口 9(ADAULD) ....................................................................................... 3110 ユーザー出口 11(一般処理) ..................................................................................... 33

    入出力パラメータ ..................................................................................................... 3511 ユーザー出口 12(マルチデータセットログの処理) ................................................ 37

    ユーザー出口 12 コールの処理フロー ...................................................................... 39ユーザー出口インターフェイス ............................................................................... 40出力パラメータ ........................................................................................................ 43サンプルのユーザー出口のアクティブ化 ................................................................ 43

    12 ハイパーディスクリプタ出口 01 - 31 .......................................................................... 49メインパラメータエリア .......................................................................................... 51入力パラメータエリア(3 番目のパラメータアドレスのポイント先) ................. 52出力パラメータエリア ............................................................................................. 54空値オプション ........................................................................................................ 55ハイパー出口初期化コール ...................................................................................... 56ハイパー出口スタブ ................................................................................................. 56

    13 照合ディスクリプタ出口 01~08 ................................................................................. 59照合ディスクリプタ出口のインターフェイス ......................................................... 60

    目次 ................................................................................................................................... 63

    iii

  • iv

  • 1 ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    このdocumentでは、ADARUN パラメータの UEXn、HEXnn、および CDXnn を使用してアクティブにするユーザー出口について説明します(ADARUN パラメータについては『Adabas オペレーションマニュアル』を参照)。

    このドキュメントで説明するユーザー出口は次のとおりです。

    使用法ADARUNユーザー出口

    コマンド処理(Adabas ニュークリアス)。この出口はサポートされなくなりました。

    UEX1ユーザー出口 1

    デュアルログの処理UEX2ユーザー出口 2ユーザー定義のフォネティック処理UEX3ユーザー出口 3ユーザー生成のログデータUEX4ユーザー出口 4Adabas Review ハブイベントコントローラUEX5ユーザー出口 5データ圧縮(ADACMP)UEX6ユーザー出口 6オペレータのインターフェイスUEX8ユーザー出口 8データのアンロード(ADAULD)UEX9ユーザー出口 9コマンド処理(Adabas ニュークリアス)。新しく追加されたユーザー出口です。

    UEX11ユーザー出口 11

    マルチログの処理UEX12ユーザー出口 12

    1

  • 使用法ADARUNハイパーディスクリプタ出口

    ハイパーインデックス値作成に関するユーザー設定アルゴリズム

    HEX01 . . HEX311 . . 31

    使用法ADARUN照合ディスクリプタ出口

    対応する照合ディスクリプタの値のエンコードおよびデコードに関するユーザー設定アルゴリズム

    CDX01 . . CDX081 . . 8

    Adabas のその他の出口

    次に示すその他のユーザー出口もサポートされています。

    使用法エントリ名

    ADACDC ユーティリティ処理中に特定の時点で制御を取得できます。 『Adabas ユーティリティマニュアル』を参照してください。

    ADACDCUX

    Adabas Caching Facility 処理中に特定の時点で制御を取得することができます。 AdabasCaching Facility のドキュメントを参照してください。

    ADACSHUX

    ハートビートレコードを調査したり、その調査に使うしきい値と間隔を変更したりできます。 『Adabas DBA リファレンスマニュアル』の「Adabas Online System デモバージョン」を参照してください。

    ADALERTX

    Adabas が提供するもの以外のリカバリアクションを実装できるように、PIN ルーチンのパラメータに値を指定するか、または検出された条件を PIN ルーチンが起動される前に検

    ADASMXIT

    査します。 『Adabas DBA リファレンスマニュアル』の「Adabas Online System デモバージョン」を参照してください。DLOG エリアがオーバーフローしないように、必要なジョブを自動的にサブミットします。 『Adabas Delta Save Facility マニュアル』を参照してください。

    DSFEX1

    Adabas 7 の ADALINK にリンクし、ターゲット、ルーター、または ADALINK 自体がコマンドを処理した後に、制御を受け取ります。 『Adabas インストールマニュアル』を参照してください。

    UEXITA

    Adabas 7 の ADALINK にリンクし、コマンドがルーター 04 コールでターゲットに渡される前に制御を受け取ります。 『Adabas インストールマニュアル』を参照してください。

    UEXITB

    Adabas 8 の ADALINK にリンクし、コマンドがルーター 04 コールでターゲットに渡される前に制御を受け取ります。 『Adabas インストールマニュアル』を参照してください。

    UEXIT1

    Adabas 8 の ADALINK にリンクし、ターゲット、ルーター、または ADALINK 自体がコマンドを処理した後に、制御を受け取ります。 『Adabas インストールマニュアル』を参照してください。

    UEXIT2

    自動的に生成される ADARAI RECOVER JCL が DDJCLOUT に書き込まれる前に変更できるようにします。 『Adabas ユーティリティマニュアル』を参照してください。

    UEXRAI

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口2

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

  • 2 ユーザー出口 1(一般処理)

    ユーザー出口 11 の導入に伴い、ユーザー出口 1 のサポートはなくなりました。 ただし、移行を簡単にするため、サンプルユーザー出口 UEX11UX1 が提供され、既存のユーザー出口 1 の前に挿入してユーザー出口 11 として起動させることができます。 このサンプルは、ACB ダイレクトコールインターフェイスを使用して行われるダイレクトコールでのみ動作します。Adabas 8ACBX ダイレクトコールインターフェイスを使用したダイレクトコールでは動作しません。「ユーザー出口 11」で説明しているように、このユーザー出口は、ユーザー出口 11 の制約を受けます。 特に、変更可能なフィールドは、ファイル番号(CQXFNR)、アディション 2(ACBADD2)、アディション 3(ACBADD3)、およびユーザーエリア(ACBUSER)の各フィールドに制限されます。 他の ACB フィールドを変更しても、CQX に他の変更を加えても、ニュークリアスからは無視されます。 詳細は、サンプルユーザー出口内のコメントを参照してください。既存のユーザー出口 1 とのリンクの方法などが記述されています。 Adabas ニュークリアスの、この移行支援サポートは将来の Adabas リリースでは廃止される予定です。

    3

  • 4

  • 3 ユーザー出口 2(デュアルログ処理)■ ユーザー出口 2 コールの処理フロー ........................................................................................... 7■ 入力パラメータ ............................................................................................................................ 8■ 出力パラメータ .......................................................................................................................... 10■ BS2000 ユーザー出口 2 の起動オプション ................................................................................. 10

    5

  • このユーザー出口は、デュアルログの切り替え時に Adabas ニュークリアスから制御を受け取ります。これは、切り替える前のログを Adabas が再び使用する前に、そのログをコピーすることが目的です。 この切り替えは、デュアルデータプロテクションログまたはデュアルコマンドログがセッションで有効な場合にのみ実行されます。

    ADARES ユーティリティの該当する機能(CLCOPY または PLCOPY)を実行するには、ユーザー出口ルーチンからプロシージャを起動する必要があります。

    ユーザー出口 2 は、次の場合に起動されます。

    ■ PLOG/CLOG をコピーする必要がある場合に、Adabas ニュークリアスが起動されたとき■ 2 つのログデータセットの間で、デュアルコマンドログとデュアルプロテクションログの切り替えが発生したとき

    ■ Adabas ニュークリアスのシャットダウン中

    ユーザー出口には、デュアルログデータセットのステータス情報が渡されます。

    ユーザー出口は、次のうちいずれかの処理を実行できます。

    ■ コールを無視する■ 格納スペースがなくなったログデータセットをコピーするためのジョブ(ADARES ユーティリティ)をサブミットする

    ■ サブミットしたコピージョブが完了するまで待機する

    上書きするデータセットにデータが存在する場合は、"ADAN46 Function not executable" というコンソールメッセージが発行されます。

    ユーザー出口 2 のサンプルは、Adabas のインストール手順を実行すると作成されます。 詳細は、『Adabas インストールマニュアル』を参照してください。

    ユーザー出口が、標準の BASR 14,15 アセンブラ命令を使用してコールされます。 すべてのレジスタは、制御が受け取られときに保存され、Adabas に制御を返す直前にリストアされる必要があります。 「出力パラメータ」で説明しているように、レジスタ 15 にはアクションコードが格納されます。

    このchapterでは、次のトピックについて説明します。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口6

    ユーザー出口 2(デュアルログ処理)

  • ユーザー出口 2 コールの処理フロー

    デュアルログ処理フロー

    7ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 2(デュアルログ処理)

  • 入力パラメータ

    デュアルログ処理ユーザー出口 (2) パラメータ

    アドレスリストの入力パラメータは次のとおりです。

    フルワードアドレスの内容パラメータ

    C/PLOG の識別情報およびフラグ 1/2。0(R1)4 バイトのタイマ 1 フィールド。4(R1)4 バイトのタイマ 2 フィールド。8(R1)現行セッションの PLOG 番号と、それに続けてデータベース ID。12(R1)4 バイト長のエリアで、最初の 2 バイトには PLOG1 の番号が格納され、次の 2 バイトにはPLOG2 の番号が格納されます。

    16(R1)

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口8

    ユーザー出口 2(デュアルログ処理)

  • その他の入力パラメータを次の表に示します。

    使用方法パラメータ

    DD/PLOGR1 および DD/CLOGR1 のステータスフラグ。フラグ 1フラグ 2 DD/PLOGR2 および DD/CLOGR2 のステータスフラグ。フラグの内容は次のとおり:

    データセットはニュークリアスによる上書き処理中

    B'1... ....':

    ニュークリアスのデータセット上書き処理が完了B'.1.. ....' :ADARES によるコピー処理中B'.11. ....' :データセットは空(つまりコピー済み)であり、ニュークリアスによる再使用が可能な状態

    B'0000 0000':

    その他のフラグ 1/2 フィールド値は予約されています。 DD/CLOGR1/2 については、CLOGLAYOUT=5 の場合に X'08' になります。 フラグの 1 ビット目と 2 ビット目の設定は組み合わせることができ、例えば、X'40'、X'20' を組み合わせて X'60' と指定することができます。OPENOUT が指定されている場合、これらのフラグは、OPEN が出力データセットに発行された後に設定されます。OPENOUT が指定されていない場合、フラグの設定は、OPEN の発行前になります。

    セッションステータス

    出口がコールされたときのニュークリアスのステータス情報を格納します。ニュークリアスセッションの起動時にコールされたことを示します。

    X'S'

    ニュークリアスセッションの終了時にコールされたことを示します。

    X'T'

    デュアルプロテクションログの切り替え時にコールされたことを示します。

    X'W'

    ログデータセットの最初のブロックが書き込まれたときのタイムスタンプ(最長で 4 バイトの STCK 命令)。 DD/PLOGR1 および DD/CLOGR1 の場合は TIMER1、DD/PLOGR2および DD/CLOGR2 の場合は TIMER2 になります。

    TIMERn

    現行セッションのプロテクションログ番号(2 バイト)。 この値は PLOG の場合にだけ設定されます。CLOG の場合は X'00' がフィールドに格納されます。

    PLOG

    データベース ID(2 バイト)。DBIDPLOG1 と PLOG2 は、PLOG 番号(それぞれ 2 バイト、合計で 4 バイト)を使用して指定することができます。 前回のニュークリアスセッションが異常終了した場合、この 4

    PLOG1/2

    バイトには、そのセッションの PLOGNUM 値が格納されるため、この値を最初のユーザー出口 2 コールで使用すれば、そのセッションの PLOG をコピーすることができます。後続のセッションでは、これらのバイトに現在の PLOGNUM 値が格納されます。 先行のセッションが異常終了した場合には、ニュークリアス起動フェーズ中に、終了したセッションの PLOG 番号がこの 4 バイトに格納されます。 この PLOG 情報は、正しい PLOG番号をコピー先の PLOG エリアに割り当てるために起動フェーズで必要になります。 その後、出口がコールされると、最新の PLOG 値がこれらのフィールドに格納されます。

    9ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 2(デュアルログ処理)

  • 出力パラメータ

    使用方法パラメータ

    ニュークリアスは処理を続行します。R15 = 0R15 の値は、ユーザー出口 2 を再度コールするまでの待機時間の秒数として扱われます。 この秒数の間、ニュークリアスは割り込み禁止の待機状態になります。 この待機時間の間は、どのコマンドも処理されません。

    R15 > 0

    BS2000 ユーザー出口 2 の起動オプション

    BS2000 システムのユーザー出口 2 を使用している場合には、従来のリリースと異なり、ADARESCLCOPY または PLCOPY ジョブの名前はユーザー出口にハードコードされていません。 したがって、次に説明するように、/ENTER ジョブを指定する方法が 2 つあります。

    方法 1

    完全な /ENTER ジョブコマンドを含むジョブ変数を作成します。 例としては、次のようなものがあります。

    /DCLJV ENTER.ADARES.PLCOPY,LINK=*DDJBPLC/SETJV *DDJBxLC,C'ENTER JOB.ENTER.ADARES.PLCOPY,ST=IMM'

    /ENTER コマンドのすべてのオペランドを使用できます。 /DCLJV ステートメントを指定すると、他の指定よりも優先されます。 必要な場合は、ニュークリアスセッション中にジョブ変数の内容を変更できます。

    リンク名 *DDJBPLC を使用して ADARES PLCOPY ジョブを割り当て、*DDJBCLC を使用してADARES CLCOPY ジョブを割り当てます。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口10

    ユーザー出口 2(デュアルログ処理)

  • 方法 2

    JV 指定を省略します。 ユーザー出口 2 は、次のコマンドを発行するようになります。

    'ENTER RES.E.xLCO'

    Note: BS2000 システムの場合は、ユーザー出口 2 は、ソース要素としてのみ供給されます。

    11ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 2(デュアルログ処理)

  • 12

  • 4 ユーザー出口 3(ユーザー定義のフォネティック処理)

    ■ 入力パラメータ .......................................................................................................................... 14

    13

  • このユーザー出口は、ユーザー定義のフォネティック処理を実行するときに使用できます。 このユーザー出口には、フォネティック処理が必要になるたびに、ADACMP ユーティリティまたは Adabas ニュークリアスから制御が渡されます。

    ユーザー出口では、指定した値から 3 バイトのフォネティックキーが生成されます。 生成されたフォネティックキーのアドレスは、制御が戻ってくる前に 8(R1)に格納しておく必要があります。

    このchapterでは、次のトピックについて説明します。

    入力パラメータ

    レジスタ 1 には、次のパラメータリストのアドレスが格納されます。

    ユーザー定義フォネティックユーザ出口 (3) パラメータ

    フルワードアドレスの内容パラメータ

    フォネティック処理される値を格納する 4 バイト長の領域。0(R1)フォネティック処理される値のアドレス。4(R1)フォネティックキーを格納する 3 バイトの領域。 このアドレスは、ユーザー出口の実行前にゼロに設定されます。実際のアドレスは、ユーザー出口の実行時に設定されます。

    8(R1)

    ユーザー出口が、標準の BASR 14,15 アセンブラ命令を使用してコールされます。 すべてのレジスタは、制御が受け取られときに保存され、Adabas に制御を返す直前にリストアされる必要があります。 R15 の内容は無視されます。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口14

    ユーザー出口 3(ユーザー定義のフォネティック処理)

  • 5 ユーザー出口 4(ユーザー生成のログデータ)■ コマンドログフォーマット ........................................................................................................ 16

    15

  • ユーザー出口 4 は、Adabas コマンドログレコードが書き込まれる直前にコールされます。 このユーザー出口は、ユーザーログデータ(SMF レコード)に必要な専用の統計データを生成する場合、またはログレコードの書き込みを省略する場合に使用できます。

    Note: ユーザー出口 4 は、ADARUN LOGGING=NO が指定されていてもコールされます。ユーザー出口 4 を無効にする方法は、Adabas 実行から ADARUN UEX4 パラメータを削除する方法だけです。

    このchapterでは、次のトピックについて説明します。

    コマンドログフォーマット

    Adabas では、2 種類のコマンドログフォーマットがサポートされています。 使用されるフォーマットは、ADARUN CLOGLAYOUT パラメータによって指定します。

    ■ CLOGLAYOUT=5(デフォルト)は、Adabas 5.2 以上の場合にサポートされます。■ CLOGLAYOUT=8 を指定すると新しいフォーマットが使用されますが、このフォーマットは

    Adabas 8 以上の場合にのみサポートされます。

    どちらのフォーマットも、コマンドログフォーマットの説明に記載されています。

    ユーザー出口とコマンドログの評価プログラムが、使用中のフォーマットを認識していることを確認してから、フォーマットを切り替えるようにしてください。

    ユーザー生成ログデータ ユーザー出口 (4) パラメータ

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口16

    ユーザー出口 4(ユーザー生成のログデータ)

  • アドレスの内容パラメータ

    ログ記録のアクションコードを格納する 1 バイト。 このバイトのコードは次のとおりです。0(R1)

    ■ +00 -- コールごとにレコードを記録するためのアクションコード。 ゼロ以外の値に変更すると、このレコードは DDLOG に書き込まれません。

    ■ +01 -- 予約済み(将来的に使用される予定)■ +02 -- 2 バイトのデータベース ID。

    記録対象のレコード。 このアドレスは、ニュークリアスセッションの最後に出口がコールされた場合は 0 です。

    4(R1)

    Adabas I/O エリアの終点。 このアドレスは、ニュークリアスセッションの最後に出口がコールされた場合は 0 です。

    8(R1)

    コマンドキューエレメント(CQX)。 このアドレスは、ニュークリアスセッションの最後に出口がコールされた場合は 0 です。

    12(R1)

    記録対象のレコードは、ユーザー出口で変更することができます。 また、4(R1)のレコードのアドレスも変更することができます。 ログ記録のアクションコードは、必ず Adabas ニュークリアスに制御が戻る前に指定するようにしてください。

    Caution: レコードを変更する場合、8(R1)に格納されている ADALOG I/O エリアの終了アドレスを超えないようにしてください。

    17ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 4(ユーザー生成のログデータ)

  • 18

  • 6 ユーザー出口 5(Adabas Review ハブイベントハンドラ)

    ■ 入力パラメータ .......................................................................................................................... 20■ 出力パラメータ .......................................................................................................................... 21

    19

  • ユーザー出口 5 は、Adabas Review ハブでイベントが発生したときに、Adabas ニュークリアスからコールされます。

    ここで言うイベントとは、次のものを指します。

    ■ Adabas セッションの開始時に Adabas Review ハブとの接続が確立された■ Adabas セッションの終了時に Adabas Review ハブとの接続が切断された■ コマンドログレコードの送信処理からゼロ以外のリターンコードが返された

    出口は、AMODE=31 の状態で起動された場合、同じ状態で制御を返す必要があります。

    ロギングエラーが発生したときに何らかの対処を行う必要があるため、 出口はエラー発生時にどのように対応するかを判断します。 記録されなかったレコードと、Adabas Review ハブのロギング要求から返されたレスポンスコードが、エラーの対応方法を決めるうえでの判断材料となります。

    このchapterでは、次のトピックについて説明します。

    入力パラメータ

    入力パラメータとして、レジスタ 1 は、次のパラメータリストをポイントします。

    使用方法パラメータ

    0(R1) 出口コールの状態を表します。 このバイトの値は次のとおりです。Adabas Review ハブとの接続開始OAdabas Review ハブとの接続終了CAdabas Review ハブにロギングエラーを送信L

    1(R1) ロギングエラーに対処するためのアクション(開始時と終了時には無視される)。 パラメータリストのこのフィールドには、ロギングエラーの対処として、出口から次の値のいずれかを渡す必要があります。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口20

    ユーザー出口 5(Adabas Review ハブイベントハンドラ)

  • 使用方法パラメータ

    指定した時間だけ待機してから再試行するWロギング処理をすぐに再試行するRロギングエラーを無視し、その結果に関わらず処理を継続する

    I

    ロギングエラーのレスポンスコード。 このレスポンスコードは、『Adabas メッセージおよびコードマニュアル』に記載されている Adabas レスポンスコードと同じです。

    2(R1)

    ロギングエラー発生時にロギングを再試行するまでの待機時間(秒単位)を格納します。このフィールドはフルワードです。

    4(R1)

    Adabas ニュークリアスが Adabas Review ハブに送信しようとしたコマンドログレコードのアドレス。

    8(R1)

    入力パラメータとしての他のレジスタ値

    Adabas ニュークリアスルーチンをコールするためのセーブエリアR13Adabas ニュークリアス内のリターンアドレスR14出口のエントリポイントアドレスR15

    出力パラメータ

    ■ ロギングエラー発生時の値として、出口によって operation フィールドに値が設定される必要があります。 待機の値(W)を選択した場合、ゼロ以外の時刻の値も必要です。

    ■ レジスタ 15 はゼロに設定する必要があります。 また、その他のレジスタは元の値に戻す必要があります。

    21ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 5(Adabas Review ハブイベントハンドラ)

  • 22

  • 7 ユーザー出口 6(データ圧縮前のユーザー処理)■ ADACMP のヘッダー処理 ............................................................................................................ 25■ 入力パラメータ .......................................................................................................................... 26■ 出力パラメータ .......................................................................................................................... 26

    23

  • このユーザー出口を使用すると、ADACMP COMPRESS ユーティリティがレコードを処理する前に、そのレコードに対するユーザー処理を実行することができます。 これは、ADACMPDECOMPRESS ユーティリティから出力された非圧縮レコードの順序および内容を制御するためにも使用できます。このように使用すると、ユーザー出口により、どの非圧縮レコードがADACMP により DDAUSBA データセットに書き込まれるかが制御されます。

    このユーザー出口プログラムは、アランブラまたは COBOL で記述することができます。ADACMP ユーティリティジョブ側で、ADARUN UEX6=program parameter を指定する必要があります。program はユーザープログラムの名前で、parameter はそのプログラムに渡すパラメータです。

    ユーザー出口 6 は、次のイベントのいずれかが発生した直後に、ADACMP COMPRESS ユーティリティ機能からコールされます。これにより、コール時に入力にレコードを追加することができます。

    ■ DDEBAND からレコードが読み込まれたとき。■ DDEBAND でエンドオブファイル条件が発生したとき。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口24

    ユーザー出口 6(データ圧縮前のユーザー処理)

  • ADACMP ユーザー処理 ユーザ出口 (6) パラメータ

    このchapterでは、次のトピックについて説明します。

    ADACMP のヘッダー処理

    パラメータ HEADER=YES が指定された状態で ADACMP が実行される場合、ADACMPCOMPRESS の入力レコードと ADACMP DECOMPRESS の出力レコードの先頭に、32 バイトのADAH および ADAC ヘッダーが付加されます。このヘッダーには、複数の物理レコードのグループが論理レコードとして定義され、この場合には論理レコードの長さは 32 KB を超えることも可能です。 ADAH および ADAC ヘッダーの DSECT は、付属の Adabas 8 SRCE ライブラリのメンバ ADAH および ADAC 内にあります。 これらのヘッダーには、非圧縮データを含む1 つの論理レコードがどのような物理レコードで構成されているのかが定義されています。

    HEADER=YES が指定された状態で、ADACMP とユーザー出口 6 が両方とも実行されている場合、ADACMP はユーザー出口 6 に各物理レコードを渡します。 したがって、ユーザー出口アプリケーション側で、これらのヘッダーを使用して、物理レコードと論理レコードの関係を判断する必要があります。

    ADACMP ヘッダーとレコードのセグメント化の詳細については、「セグメント化されたレコードに関する考慮事項」を参照してください。

    25ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 6(データ圧縮前のユーザー処理)

  • 入力パラメータ

    使用方法パラメータ

    入力レコードのアドレス。 可変長レコードの前にある長さフィールドは無視されます。 このアドレスはフルワードで、ADACMP が DD/EBAND でエンドオブファイルを検出した後にユーザー出口がコールされる場合には -1(X'FFFF FFFF')が格納されます。

    0(R1)

    入力レコード長を格納するフィールドのアドレス。 固定長レコードの場合、この値は論理レコード長になります。 可変長レコードの場合、この値は実際のデータのみの長さ(長さフィー

    4(R1)

    ルド自体を除いた長さ)になります。 このアドレスのポイント先はフルワードで、ADACMPが DD/EBAND でエンドオブファイルを検出した後にユーザー出口がコールされる場合には-1(X'FFFFFFFF')が格納されます。ユーザー出口へのエントリにバイナリの 0 が含まれます(「出力パラメータ」を参照)。8(R1)ユーザー出口へのエントリにバイナリの 0 が含まれます(「出力パラメータ」を参照)。12(R1)ADACMP COMPRESS ユーティリティジョブから渡される FILE パラメータ値のアドレス。このアドレスは、右端(下位)2 バイトに格納されます。 このアドレスはフルワードで、そ

    16(R1)

    の場所と内容がユーザー出口の処理中に変わらないようにする必要があります。 ADACMPCOMPRESS から FILE パラメータ値が渡されない場合、このフルワードは X'00000000' です。

    出力パラメータ

    使用方法パラメータ

    ユーザー出口の出力レコードのアドレス。 このレコードは、ADACMP 圧縮アルゴリズムの入力として使用されます。 このレコードのアドレスは、ユーザー出口がコールされたとき

    8(R1)

    に、常に 8(R1)に格納する必要があります。 リターン時に、このフィールドにバイナリのゼロが格納されると、ADACMP は、入力レコードを無視して処理を続行します。返すレコードの長さを格納するための 4 バイトフィールドのアドレス。 このフィールドのアドレスは、出口がコールされたときに、常に 12(R1)に格納する必要があります。 リター

    12(R1)

    ン時に、このフィールドにバイナリのゼロが格納されると、ADACMP は、レコードを無視して処理を継続します。 12(R1)がポイントする長さフィールド自体の長さは 4 バイトですが、実際に使用される部分は、下位/右端(3~4 バイト目)のハーフワードです。 リターン時にバイト 2 に X'01' が格納されると、次のレコードが DDEBAND から読み込まれる前に出口が再びコールされます。 したがって、DD/EBAND からレコードが読み込まれるごとに、レコードを複数回にわたって ADACMP に返すことができます。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口26

    ユーザー出口 6(データ圧縮前のユーザー処理)

  • 8 ユーザー出口 8(オペレータインターフェイス)■ 入力パラメータ .......................................................................................................................... 29

    27

  • このユーザー出口は Adabas ニュークリアスから制御を受け取ります。受け取るタイミングは、ニュークリアスの起動時または終了時、ニュークリアスまたは Adabas ユーティリティがオペレータからメッセージを受け取ったとき、またはメッセージをオペレータに送信したときです。次の場合に、ユーザー出口 8 を使用して、オペレータに特定の指示を送ることができます。

    ■ ニュークリアスが処理を開始したとき、正常に処理を終了したとき■ Adabas がコンソールメッセージをオペレータに送信するときに、補足情報を付加する場合■ オペレータが入力したコマンドを確認する場合

    ユーザー出口 8 は、次の場合に起動されます。

    ■ (MODE=MULTI の場合のみ)Adabas が起動した後。ニュークリアスがユーザープログラムからのコールに反応できる状態になった直後。 この時点では、ニュークリアスはすでにアクティブになっています。

    ■ Adabas ニュークリアスまたはユーティリティがコンソールオペレータメッセージを発行した直後。 ユーザー出口コールは標準のメッセージ処理に対する追加として機能します。メッセージ自体をユーザー出口の実行中に変更することはできません。

    ■ Adabas ニュークリアスまたはユーティリティがオペレータコマンドを受信した後。 出口は、コマンドが実際に処理される前にコールされます。コール時には、コマンドの実行を拒否したり、別のコマンドに置き換えたりすることもできます。 ただし、コール元のエリアで、コマンドを変更することはできません。

    ■ Adabas ニュークリアスが正常に終了する前。 この時点では、ニュークリアスはすでにアクティブではないため、ニュークリアスをコールすると、レスポンスコード 148 が返されます。また、ニュークリアスが異常終了した場合には、この出口はコールされません。

    オペレータ インターフェース ユーザー出口 (8) パラメータ

    このchapterでは、次のトピックについて説明します。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口28

    ユーザー出口 8(オペレータインターフェイス)

  • 入力パラメータ

    使用方法パラメータ0(R1) コールタイプを格納するバイトのアドレス。コールタイプは、次に示すように S、T、O、

    W の値です。ニュークリアス起動時にコールするSニュークリアス終了時にコールするTニュークリアス/ユーティリティに対するオペレータメッセージ付きでコールする

    O

    オペレータに対するニュークリアス/ユーティリティのメッセージ付きでコールする

    W

    データベース ID を格納するフルワードのアドレス。4(R1)8(R1) コールタイプが O、W のときの可変長メッセージ関連情報のアドレス。 このアドレスの情

    報は、コールタイプに応じて次の形式になります。1 バイトのメッセージ長の後に、英数字のメッセージが続きます。この長さには、長さバイト自体の長さは含まれません。 メッセー

    O

    ジを変更する場合は、8(R1)のポイント先が、リターン時の新しいメッセージを示している必要があります。 このメッセージの構成は、前述のとおりです。 メッセージを出力しない場合は、8(R1)のポイント先が、X'0140' という値の 2 バイトのフィールドになっている必要があります。

    W 8(R1) points to the message, which has the following  structure: DC H'message-length+4' DC H'0' DC  C'message-text'  

    29ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 8(オペレータインターフェイス)

  • 30

  • 9 ユーザー出口 9(ADAULD)

    ユーザー出口 9 は、圧縮レコードが書き込み可能な状態になったときに、ADAULD からコールされます。 ユーザー出口では、レコードを DD/OUT1 と DD/OUT2 のいずれか、または両方に書き込むか、あるいはどちらにも書き込まないかを判定します。

    ADAULD ユーザー出口 (9) パラメータ

    Notes:

    1. DD/OUT1 および DD/OUT2 のブロックサイズが同じでない場合は、ADAULD でエラーが発生します。

    31

  • 3 番目のアドレスがポイントする圧縮レコードの構造は、次のとおりです。

    AL2 (L1) total length (inclusive)AL2 (L2) record length (inclusive)AL4 (ISN)XL (L2 - 8) '...compressed fields...'XL (L1 - L2 - 2) '...DVT entries...'

    ユーザー出口 9 出力制御フロー

    ユーザー出口が、標準の BASR 14,15 アセンブラ命令を使用してコールされます。 すべてのレジスタは、制御を受け取るときに保存され、ADAULD に制御を返す直前にリストアされる必要があります。 R15 の内容は無視されます。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口32

    ユーザー出口 9(ADAULD)

  • 10 ユーザー出口 11(一般処理)■ 入出力パラメータ ...................................................................................................................... 35

    33

  • このユーザー出口は、Adabas ニュークリアスがコマンドを受け取った直後に Adabas から制御を受け取ります。 コマンドのタイプ(シンプルアクセス、コンプレックスアクセス、更新)の判別には使用されますが、コマンド自体は処理されません。

    このユーザー出口の最も一般的な使用法としては、ACBX へのセキュリティパスワードやサイファコードの挿入があります。

    このユーザー出口の機能は、従来のユーザー出口 1 とほぼ同じですが、CQX 構造と ACBX データ構造のコピーがユーザー出口 11 の処理中に使用される点が異なります。ユーザー出口 1 で使用される実際の構造は、ユーザー出口 11 では使用されません。 また、Adabas 8 以降ではユーザー出口 1 はサポートされません。

    ACBX の特定フィールドのみが出口により変更される場合があります。この特定フィールドとしては、ACBXFNR(ファイル番号)、ACBXADD2(アディション 2)、ACBXADD3(アディション 3)および ACBXUSER(ユーザーエリア)が該当します。 他の ACBX フィールドを変更しても、CQX を変更しても、ニュークリアスからは無視されます。 DSECT EX11PARM は、ユーザー出口 11 のパラメータリストをマッピングします。

    ユーザー出口が、標準の BASR 14,15 アセンブラ命令を使用してコールされます。 レジスタ 1 には、パラメータリストのアドレスが格納されます。 すべてのレジスタは、制御が受け取られときに保存され、Adabas に制御を返す直前にリストアされる必要があります。

    Notes:

    1. すべてのユーザー出口は、ユーザー出口のコール時にアクティブだったものと同じプログラム状況ワード(PSW)フィールドをコール元プログラムに返す必要があります。 この要件は、アドレッシングモード(AMODE)、プログラムマスク、問題状況のフラグ、PSW キー、およびアドレススペース制御設定において、特に重要になります。 コンディションコードを保持する必要はありません。 これらの PSW フィールドのいずれかをユーザー出口で変更する場合に、変更前の値を確実に返す方法としては、コードのうち変更部分を BAKR 命令と PR命令で挟み込む方法があります。

    2. コール時に元の ACBX から指定されたファイル番号を変更することはできません。 ユーザー出口でファイル番号を変更する必要がある場合は、その出口に対して作成された ACBX のコピー内の ACBXFNR フィールドを変更してください。

    3. Adabas コントロールブロックのコマンドコードフィールドを変更することはできません。変更しようとすると、レスポンスコードが返されます。

    4. Adabas バッファ記述(ABD)の Adabas バッファの長さは、コールで使用されるため、変更することはできません。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口34

    ユーザー出口 11(一般処理)

  • 入出力パラメータ

    汎用処理 ユーザー出口 (1) パラメータ

    1インジケータ:ユーザー出口 11 のコール前に、フルワードのインジケータエリアがゼロに設定されます。 ユーザー出口 11 コールの出力結果として、最初のインジケータバイトがゼロになった場合、コマンドが実行可能であることを表します。また、ゼロ以外になった場合は、コマンドが実行されないことを示し、レスポンスコード 22 が返されます。2パラメータ長:EX11PARM パラメータリストの長さは 28 バイト以上です。3ACB コピーのアドレス:コマンドが ACBX インターフェイスダイレクトコールを使用する場合は、このアドレスをゼロに設定する必要があります。

    35ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 11(一般処理)

  • 36

  • 11 ユーザー出口 12(マルチデータセットログの処理)

    ■ ユーザー出口 12 コールの処理フロー ........................................................................................ 39■ ユーザー出口インターフェイス ................................................................................................ 40■ 出力パラメータ .......................................................................................................................... 43■ サンプルのユーザー出口のアクティブ化 .................................................................................. 43

    37

  • Note: UEX2 および UEX12 は、Adabas ニュークリアスセッションでは相互に排他的であり、指定できるのはどちらか一方だけです。

    このユーザー出口は、マルチログデータセットの切り替え時に、Adabas ニュークリアスから制御を受け取ります。これは、切り替える前のログデータセットを Adabas が再び使用する前に、そのログデータセットをコピーすることが目的です。 この切り替えは、マルチデータセットのデータプロテクションログと、マルチデータセットのコマンドログのいずれか、または両方がセッションで有効な場合にのみ実行されます。

    ユーザー出口ルーチンの役割は、ADARES ユーティリティの該当機能(CLCOPY またはPLCOPY)を実行するためのプロシージャを起動することです。

    ユーザー出口 12 は、次の場合に起動されます。

    ■ マルチ PLOG/CLOG データセットをコピーする必要がある場合に、Adabas ニュークリアスが起動されたとき

    ■ ログデータセットが切り替えられたとき■ Adabas ニュークリアスのシャットダウン中

    ユーザー出口には、ログのタイプ(PLOG または CLOG)と、マルチログデータセットのステータスに関する情報が渡されます。

    ユーザー出口は、次のうちいずれかの処理を実行できます。

    ■ コールを無視し、Adabas が処理を継続できるように制御を返す■ 格納スペースがなくなったログデータセットをコピーするジョブをサブミットし、コピー元のログデータセットを空のデータセットとして扱う(ADARES ユーティリティ)

    ■ 指定時間だけ待機し、PLOG/CLOG データセットのステータス情報を更新して、ユーザー出口を再度コールするように Adabas に指示する 待機状態の間、処理対象のログタイプに応じたログレコードを生成する可能性があるコマンドは、処理できません。

    ユーザー出口 12 のサンプルは、Adabas のインストール手順を実行すると作成されます。 詳細は、『Adabas インストールマニュアル』を参照してください。

    ユーザー出口が、標準の BASSM R14,R15 アセンブラ命令を使用してコールされます。 すべてのレジスタは、制御が受け取られときに保存され、Adabas に制御を返す直前にリストアされる必要があります。 他のセクションで説明しているように、レジスタ 15 にはアクションコードが格納されます。

    Note: ユーザー出口 12 は、ユーザー出口のコール時にアクティブだったものと同じ AMODE値をコール元プログラムに返す必要があります。 値を返すアセンブラ命令としては、BSM0,R14 が適しています。

    このchapterでは、次のトピックについて説明します。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口38

    ユーザー出口 12(マルチデータセットログの処理)

  • ユーザー出口 12 コールの処理フロー

    マルチ ログ処理フロー

    39ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 12(マルチデータセットログの処理)

  • ユーザー出口インターフェイス

    必要に応じて、ユーザー出口は、それ自体の処理を初期化することができます。 また、ユーザー出口は、そのリソースの状態を記録するために、EX12PARM パラメータブロックのフィールドEX12USER に、任意の値を格納することもできます。 このフィールドは、ユーザー出口が専用で使用するフィールドとして扱われますが、その出口の後続の処理でも使用することができます。 出口が初めてコールされたときに、このフィールドはゼロに設定されますが、それ以降は変更されることはありません。

    終了時は、必要な後処理を行うために、ユーザー出口が再度コールされます。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口40

    ユーザー出口 12(マルチデータセットログの処理)

  • パラメータ

    ユーザー出口 12 パラメータ

    EX12PARM パラメータブロックの DSECT

    MACRO EX12PARM.**********************************************************************.* *.* Name Ex12Parm *.* *.* Component ADABAS User Exit *.* *.* Function Parameter list for User Exit 12 *.* (replacement for User Exit 2 for use when there are *.* more than 2 PLOGs or CLOGs) *.* *.* Parameters None *.* *.* Restrictions None *.* *.* Notes None *.* *.**********************************************************************.*EX12PARM DSECT , User Exit 12 Parameter List*EX12HDR DS 0F Common header section*EX12USER DS F Reserved for the user. This field + is initialized to zero before the + exit is called the first time, and + will not be altered by ADABAS after + that. It can be used to maintain + information across invocations.*EX12LOGT DS X Log typeEX12PLOG EQU C'P' PLOGEX12CLOG EQU C'C' CLOG*EX12TYPE DS X Call type

    41ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 12(マルチデータセットログの処理)

  • EX12TBEG EQU C'S' Nucleus startEX12TSW EQU C'W' Log switchEX12TEND EQU C'T' Nucleus termination DS XL2 Reserved*EX12NLOG DS F Number of logsEX12DBID DS F Database IDEX12NUCI DS F Nucleus ID*EX12PLGN DS F Current session PLOG number + (zero for CLOGs)EX12NCMP DS F Log just completedEX12STAT DS X Flags of next log in sequenceEX12WNUC EQU X'80' Being written by the nucleusEX12FULL EQU X'40' Completed by the nucleusEX12RES EQU X'20' Being copied by ADARESEX12CL5 EQU X'08' CLOGLAYOUT=5EX12UNUS EQU X'00' Unused and/or copied DS XL3 Reserved DS 4F Reserved*EX12HDRL EQU *-EX12HDR Length of header section*EX12ENT DSECT ,EX12LOG DS 0F Start of individual log data set + entries. This section is repeated + for the number of logs specified in + field EX12NLOG*EX12LTIM DS XL8 Time stamp of write to log data setEX12LNUM DS F Number of log data setEX12LFLG DS X Flags (mapped as in EX12STAT) DS XL3 Reserved DS 4F Reserved*EX12LOGL EQU *-EX12LOG Length of a log data set entry** MEND

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口42

    ユーザー出口 12(マルチデータセットログの処理)

  • 出力パラメータ

    使用方法パラメータ

    ニュークリアスは処理を続行します。R15 = 0R15 の値は、ユーザー出口 12 を再度コールするまでの待機時間の秒数として扱われ、その間、すべてのログデータセットのステータスが最新のまま維持されます。 待機状態の間は、ログエントリを作成する可能性があるコマンドは、処理できません。

    R15 > 0

    サンプルのユーザー出口のアクティブ化

    サンプルのユーザー出口は、アセンブラ言語で記述されています。 このサンプルの機能は次のとおりです。

    ■ コールされたログの用途とタイプを示すメッセージを発行します。■ 空ではないすべてのログデータセットのステータスとタイムスタンプを示すメッセージを発行します。

    ■ 格納スペースのないログデータセットが存在し、出口が最後にコールされたときとステータスが異なるログデータセットが 1 つでもある場合は、出口は 80 バイトのレコードを入力ファイルから読み込み、出力ファイルに書き込みます。 ? という文字のオカレンスはすべて、PLOGイベントと CLOG イベントのどちらを処理するために出口が起動されたのかによって、P または C に置き換えられます。 したがって、ログタイプに応じたイベントに基づいて、入力ファイルは正しく処理されます。 通常、入力ファイルにはジョブ制御ステートメントが存在し、出力ファイルの出力先はジョブ実行キューになります。

    ■ 格納スペースが残っているログデータセットが 1 つでもあれば、出口はコール元に戻り、R15をゼロに設定するので、Adabas は処理を継続します。

    ■ どのログデータセットにも格納スペースがない場合、出口はコール元に戻りますが、R15 をゼロ以外に設定するので、Adabas は R15 の秒数だけ待機し、待機時間が終わると、ログデータセットのステータスを最新のまま維持した状態で出口を再びコールします。 デフォルトの待機時間は 30 秒です。

    43ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 12(マルチデータセットログの処理)

  • z/OS

    z/OS では、付属のサンプルユーザー出口 UX12SAMP の形式は、ソースとロードモジュールです。どちらも変更や再アセンブルせずに、そのまま使用することができます。

    ユーザー出口のソースとロードモジュールは、それぞれ Adabas ソースとロードライブラリに収録されています。 ユーザー出口 UX12ASML をアセンブルするジョブは、Adabas ジョブライブラリに収録されています。 また、ジョブライブラリには、サンプルジョブ UX12CJOB も収録されており、カスタマイズしたり、ADARES ユーティリティの PLCOPY または CLCOPY 機能を起動するユーザー出口からサブミットしたりできます。

    サンプルユーザー出口を次のようにしてアクティブにします。

    1. ADARUN NxLOG={2-8} の他に、Adabas ニュークリアスに ADARUN UEX12=UX12SAMPを指定します。

    2. ユーザー出口から DDNAME COPYJOB 配下のジョブをサブミットできるように、ジョブ制御モデルを設定してください。

    DD ステートメントは次のように指定します。

    //INTRDR2 DD SYSOUT=(*,INTRDR)

    Note: PLCOPY または CLCOPY ジョブをサブミットするときに使用する DD ステートメントは、サンプルのユーザー出口 2 でもユーザー出口 12 でも同じです。

    VSE

    VSE では、付属のサンプルユーザー出口 UX12SAMP の形式はソースとフェーズです。どちらも変更や再アセンブルせずに、そのまま使用することができます。

    ソース A.book とフェーズは、Adabas VSE サブライブラリに収録されています。 ユーザー出口UX12ASML.X をアセンブルするジョブは、Adabas サブライブラリにも収録されています。 また、サンプルジョブ UX12CJOB.X も収録されており、カスタマイズしたり、ADARES ユーティリティの PLCOPY または CLCOPY 機能を起動するユーザー出口からサブミットしたりできます。

    サンプルユーザー出口を次のようにしてアクティブにします。

    1. ADARUN NxLOG={2-8} の他に、Adabas ニュークリアスに ADARUN UEX12=UX12SAMPを指定します。

    2. ユーザー出口から DLBL COPYJOB 配下のジョブをサブミットできるように、ジョブ制御モデルを設定してください。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口44

    ユーザー出口 12(マルチデータセットログの処理)

  • BS2000

    BS2000 では、付属のサンプルユーザー出口 UX12SAMP の形式は、ソースとオブジェクトモジュールです。どちらも変更や再アセンブルせずに、そのまま使用することができます。

    ユーザー出口のソースは、Adabas ソースライブラリに収録されています。 ユーザー出口UX12ASML をアセンブルするジョブは、Adabas ジョブライブラリに収録されています。 また、ジョブライブラリには、サンプルジョブ UX12CJOB も収録されており、ADARES ユーティリティの PLCOPY または CLCOPY 機能を起動する UX12SAMP からサブミットすることができます。

    サンプルユーザー出口を次のようにしてアクティブにします。

    1. ADARUN NxLOG={2-8} の他に、Adabas ニュークリアスに ADARUN UEX12=UX12SAMPを指定します。

    2. マシンがジョブ変数を処理できる場合は、Adabas ニュークリアスジョブに次のステートメントを入力してください。

    /SET-JV-LINK LINK-NAME=*DDJBDSF,-/ JV-NAME=#JV.DSF/MODIFY-JV JV-ID=JV-NAME(JV-NAME=#JV.DSF),-/ VALUE='ENTER-JOB FROM-FILE=*LIB-ELEM(,-/LIB=library,ELEM=dsfjob),-/JOB-CLASS=JCDSF'

    ここでは次の内容を表しています。

    ライブラリlibrary手順 2 でカスタマイズしたジョブが存在するメンバdsfjob

    マシンがジョブ変数を処理できない場合は、次のジョブがサブミットされます。

    (ADABAS.SRC,UX12CJBP,J)

    PLCOPY ジョブの場合は上記のとおりです。

    (ADABAS.SRC,UX12CJBC,J)

    CLCOPY ジョブの場合は上記のとおりです。

    データベース ID をパラメータとして指定するサンプルジョブは、Adabas ソースライブラリADAvrs.SRC に収録されています。

    このジョブでは目的を果たせない場合は、付属のソース UX12SAMP を修正してください。

    45ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 12(マルチデータセットログの処理)

  • BS2000 システムのユーザー出口 12 を使用している場合には、従来のリリースと異なり、ADARESCLCOPY または PLCOPY ジョブの名前はユーザー出口にハードコードされていません。 したがって、次に説明するように、/ENTER ジョブを指定する方法が 2 つあります。

    方法 1

    完全な /ENTER ジョブコマンドを含むジョブ変数を作成します。 例としては、次のようなものがあります。

    /DCLJV ENTER.ADARES.PLCOPY,LINK=*DDJBPLC/SETJV *DDJBx12,C'ENTER-PROC(srclib,ux12cjbx),(DB=dbid),J-N=X12COPY'

    ここでは次の内容を表しています。

    UX12CJBx(J) が収録されているライブラリです。x は、PLCOPY ジョブの場合には P、CLCOPYジョブの場合には C にそれぞれ置き換わります。

    srclib

    それぞれのプロシージャジョブの J 要素名です。ux12cjbxこのニュークリアスのデータベース ID です。dbid

    /ENTER コマンドのすべてのオペランドを使用できます。 /DCLJV ステートメントを指定すると、他の指定よりも優先されます。 必要な場合は、ニュークリアスセッション中にジョブ変数の内容を変更できます。

    リンク名 *DDJBPLC を使用して ADARES PLCOPY ジョブを割り当て、*DDJBCLC を使用してADARES CLCOPY ジョブを割り当てます。

    方法 2

    JV 指定を省略します。 ユーザー出口 12 は、次のコマンドを発行するようになります。

    'ENTER-PROC RES.EPdbid.xLCO,(DB=dbid),J-N=xL12'

    データベースを起動する前に、データベースのジョブデッキからジョブ要素を抽出する場合には、次のコードを使用します。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口46

    ユーザー出口 12(マルチデータセットログの処理)

  • /DELETE-FILE RES.EPdbid.CLCO/SET-JOB-STEP/DELETE-FILE RES.EPdbid.PLCO/SET-JOB-STEP/ASS-SYSDTA *SYSCMD/STA-LMS//O srclib//EXT-E (,ux12cjbc,J),RES.EPdbid.CLCO//EXT-E (,ux12cjbp,J),RES.EPdbid.PLCO//END/ASS-SYSDTA *P

    ここでは次の内容を表しています。

    P/CLCOPY データベースのデータベース ID です。この ID は、プロシージャでは &DBID. になります。

    dbid

    テンプレートのコピープロシージャが収録されているソースライブラリです。srclib出口 12 の ADARES CLCOPY ジョブを実行するプロシージャです。ux12cjbc出口 12 の ADARES PLCOPY ジョブを実行するプロシージャです。ux12cjbp

    Note: BS2000 システムの場合、ユーザー出口 12 の供給形態は、ソース要素およびオブジェクト要素の両方です。

    47ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    ユーザー出口 12(マルチデータセットログの処理)

  • 48

  • 12 ハイパーディスクリプタ出口 01 - 31■ メインパラメータエリア ........................................................................................................... 51■ 入力パラメータエリア(3 番目のパラメータアドレスのポイント先) ................................... 52■ 出力パラメータエリア ............................................................................................................... 54■ 空値オプション .......................................................................................................................... 55■ ハイパー出口初期化コール ........................................................................................................ 56■ ハイパー出口スタブ ................................................................................................................... 56

    49

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

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

    Notes:

    1. ハイパー出口は、ハイパー出口のコール時にアクティブたったものと同じ AMODE 値をコール元プログラムに返す必要があります。

    2. Adabas 8 以降がインストールされていて、ハイパー出口が新しいパラメータリストを使用できるように更新されていない場合、必要なパラメータリストの変更と入力パラメータの変換を行うハイパー出口に、ハイパー出口スタブをリンクすることができます。 ハイパー出口スタブでは、MU または PE はサポートされていません。 詳細は、「ハイパー出口スタブ」を参照してください。

    3. Adabas ニュークリアスまたは ADACMP の起動時に、ハイパー出口がロードされるごとに初期化がコールされます。 詳細は、「ハイパー出口初期化コール」を参照してください。

    このchapterでは、次のトピックについて説明します。

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口50

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

  • メインパラメータエリア

    内容パラメータ

    予約済み(変更不可)。0(R1)フルワードのゼロ(変更不可)。4(R1)入力パラメータエリアの開始アドレス。8(R1)出力パラメータエリアの開始アドレス。 このアドレスは、ユーザー作成のプログラムにより挿入される必要があります。 出力パラメータエリアは、常にユーザーハイパー出口から返す

    12(R1)

    必要があります。 値を返さない場合、アドレスのポイント先は、値エレメントが存在しないことを示すように全体の長さが設定されたヘッダーエレメントになります。

    51ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

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

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

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

    入力パラメータエリア全体の長さ(この長さフィールドも含む)LLファイル番号FNRレコードに割り当てられた ISNISNハイパーディスクリプタの名前HNフラグバイト:F

    ■ X'02' の場合は、ファイルに拡張 MU または PE フィールドが存在することを表します。

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

    親エレメントフィールド

    親フィールドの名前。FN親フィールドが FI オプション付きで定義されている場合、VALADDR がポイントする値の長さになります。

    L

    親フィールドのピリオディックグループのインデックス(4 バイト長)。 親フィールドが PEグループに含まれていない場合、このバイトの値はゼロです。

    I

    親フィールドの値のアドレス。 値のフォーマットは、フィールドのオプションにより決定されます。 親フィールドが NU(空値省略)オプションで定義され、このフィールドの値が省略された場合は、入力パラメータエレメントは作成されません。

    VALADDR

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口52

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

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

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

    MU カウントを表す 1 バイト値。 MY 値の対象が、拡張 MU または PE フィールド付きで定義されたファイルである場合は、拡張カウントが存在する可能性があります。 拡張カウントの詳細について

    C

    は、ADACMP ドキュメントの「圧縮レコード内の 191 を超える MU および PE オカレンスの特定」を参照してください。16 進値の長さです。この長さには、このフィールド自体の長さ値(1 バイトまたは 2 バイト)も含まれます。 長さが 1~127 の場合に必要なバイト数は 1 です。 長さが 128~255 の場合に必要なバイト数

    *L

    は 2 です。最初のバイトは X'80' に、2 番目のバイトは実際の長さの値に設定されます(次の例の表を参照)。

    バイト 2バイト 1長さ

    (x'80')x'7F'L=127:

    (x'80')(x'80')L=128:

    x'FF'(x'80')L=255:

    53ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

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

  • 出力パラメータエリア

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

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

    ヘッダーエレメント

    出力パラメータエリア全体の長さ(この長さフィールドも含む)。 値を返さない場合、全体の長さは、ヘッダーエレメントの長さに設定されます。

    LL

    予約済みのスペース。 これは、0 に設定する必要があります。00リターンコード。 ハイパー出口でゼロ以外の値を設定すると、コールを拒否することを示します。この場合に設定する値としては、"16" が推奨です。 このフィールドがゼロ以外の場合、コールはエラーになり、レスポンスコード 79 が返されます。

    RC

    ディスクリプタ値に割り当てられた ISN。 元の ISN を変更する場合は、新しい ISN をここに挿入する必要があります。 Adabas ニュークリアスへのリターン時にこれらの 4 バイトに 0 が含まれる場合は、元の ISN が使用されます。 これは 4 バイトのバイナリ値です。

    ISN

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

    値エレメント

    この次の値の長さ(この長さバイトも含む)。 最大長は、ハイパーディスクリプタに使用されているフォーマットにより決定されます。

    L

    インデックスに挿入されるディスクリプタ値。 値は、このハイパーディスクリプタに割り当てられるフォーマットに応じた規則に従っている必要があります。 ハイパーディスクリプタが PE オプション

    で定義されている場合は、1 バイト PE インデックスを含む 1 つのバイトが値の直後にあり、長さ Lに含まれている必要があります。 PE オプションで定義されているハイパーディスクリプタの対象が、拡張 MU または PE フィールド付きで定義されたファイルである場合は、2 バイトの PE インデックス

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口54

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

  • を含む 2 つのバイトが値の直後に続き、長さ L に含まれている必要があります。 ニュークリアスは、パック形式または数値形式の値が正しいかどうかをチェックします。 パックフィールドの正しい符号は、A、C、E、F(正)および B、D(負)です。 ニュークリアスはすべての符合を F または D に変更します。

    注値L

    R E D04

    X'02' は PE インデックスB L U E0206パック 10 進数の 123123F03インデックス 1 を持つ PE グループのパック 10 進数の 123123F0104X'0002' は、拡張 MU または PE フィールド付きで定義されたファイルの PE インデックス

    B L U E000207

    インデックス 266 を持つ拡張 PE グループのパック 10 進数の 123123F010A05

    空値オプション

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

    ■ ハイパーディスクリプタが NU ではない場合■ 親フィールドは NU ではなく、値は空値です。ハイパー出口がコールされ、空値が渡されます。

    ■ 親フィールドは NU で、値は空値です。ハイパー出口がコールされ、この親フィールドには入力パラメータ要素が作成されません。

    ■ すべての親フィールドは NU で、すべての値は空値です。ハイパー出口がコールされ、どの親フィールドにも入力パラメータ要素が作成されません。

    ■ ハイパーディスクリプタが NU である場合■ 親フィールドは NU ではなく、値は空値です。ハイパー出口がコールされ、空値が渡されます。

    ■ 親フィールドは NU で、その値は空値です。ハイパー出口がコールされ、この親フィールドには入力パラメータ要素が作成されません。

    ■ すべての親フィールドは NU で、すべての値は空値です。ハイパー出口はコールされません。

    55ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

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

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

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

    ハイパー出口スタブ

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

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

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

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

    INCLUDE LIBDEF(HEXV87,HEXOLD)INCLUDE TXTDEFNAME HEXnnMOD

    2. 次のコマンドを使用してハイパー出口を生成します。■ FILEDEF LIBDEF DISK ADAV813 TXTLIB x(x は ADAV813 TXTLIB が収録されているファイルモード)

    ■ FILEDEF TXTDEF DISK HEXnn TEXT x(HEXnn は作成するハイパー出口、x はそのハイパー出口が収録されているファイルモード)

    ■ LKED INPUT (LIBE HEXnn)(HEXnn はハイパー出口が収録される新しい LOADLIB の名前)

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口56

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

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

    57ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

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

  • 58

  • 13 照合ディスクリプタ出口 01~08■ 照合ディスクリプタ出口のインターフェイス .......................................................................... 60

    59

  • 照合ディスクリプタ出口 1~8(CDX01~CDX08)は、該当する照合ディスクリプタの値をエンコードしたり、デコードしたりするときに使用します。

    照合ディスクリプタは、英数字フィールドまたはワイド文字フィールドに定義することができます。 定義した値は、インデックスには保存されますが、レコード自体には保存されません。 値の変換に使用する照合ディスクリプタ出口の数と、照合ディスクリプタの数は、対応関係にあります。

    サンプルとして、照合ディスクリプタ出口 CDXE2A が Adabas ソースデータセットに収録されています。 エンコード機能では EBCDIC から ASCII に変換され、デコード機能では ASCII からEBCDIC に変換されます。

    照合出口には 3 つの機能エントリポイントがあり、これらは次のイベントの発生時にコールされます。

    INITIALIZE 機能

    ■ ニュークリアスセッションの開始■ 照合出口が定義されたときのユーティリティの初期化(ADARUN パラメータ)

    ENCODE 機能

    ■ 親の値の更新/挿入/削除(ニュークリアス)■ 照合ディスクリプタを検索値に指定して検索(ニュークリアス)■ レコードの圧縮(ADACMP)

    DECODE 機能

    ■ 出口が DECODE 機能をサポートする場合のみ、照合 DE によるインデックス(L9)の読み込み(ニュークリアス)

    このchapterでは、次のトピックについて説明します。

    照合ディスクリプタ出口のインターフェイス

    照合ディスクリプタ出口のインターフェイスは、Adabas ソースデータセットの CDXPARMDSECT で定義します。 このインターフェイスには、次の 3 つの機能があります。

    ■ 初期化■ エンコード■ デコード(オプション)

    ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口60

    照合ディスクリプタ出口 01~08

  • 初期化パラメータ

    R1 のポイント先は、コール元の 5 つのストレージエリアをポイントするアドレスのリストです。照合ディスクリプタ出口によって、次の 5 つの設定が行われる必要があります。

    デフォルトのスペース文字(最大 4 バイト)CDXSPCスペース文字のサイズを格納するフルワードCDXSPCLエンコード機能のアドレスCDXENCデコード機能のアドレス。返されたアドレスがゼロの場合、デコードはサポートされていません。 また、L9 処理には照合ディスクリプタを使用できません。

    CDXDEC

    ゼロバイトのバージョン区切り文字列のアドレスCDXVER

    エンコード/デコードのパラメータ

    R1 は、次に示すように、5 つのパラメータ(フルワード)のリストをポイントします。

    入力文字列のアドレスCDXIA入力文字列の長さCDXIL出力文字列のアドレスCDXOA出力エリアのサイズCDXOL返される出力文字列の長さのアドレスCDXARL

    照合ディスクリプタ出口が実行する格納処理は次のとおりです。

    ■ CDXOA が示すアドレスのエリアに出力文字列を格納する■ CDXARL が示すアドレスのフルワードに入力文字列の長さを格納する

    61ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口

    照合ディスクリプタ出口 01~08

  • ユーザー、ハイパーディスクリプタおよび照合ディスクリプタ出口62

    照合ディスクリプタ出口 01~08

  • 索引

    AAdabas Review

    ハブイベント