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

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

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

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

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

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

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

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

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

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

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


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

graphics/dual_log_flow.png

デュアルログ処理フロー

Top of page

入力パラメータ

graphics/dual_log_parms.png

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

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

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

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

パラメータ 使用方法
フラグ 1 DD/PLOGR1 および DD/CLOGR1 のステータスフラグ。
フラグ 2
DD/PLOGR2 および DD/CLOGR2 のステータスフラグ。フラグの内容は次のとおり:
B'1... ....': データセットはニュークリアスによる上書き処理中
B'.1.. ....' : ニュークリアスのデータセット上書き処理が完了
B'.11. ....' : ADARES によるコピー処理中
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' デュアルプロテクションログの切り替え時にコールされたことを示します。
TIMERn ログデータセットの最初のブロックが書き込まれたときのタイムスタンプ(最長で 4 バイトの STCK 命令)。 DD/PLOGR1 および DD/CLOGR1 の場合は TIMER1、DD/PLOGR2 および DD/CLOGR2 の場合は TIMER2 になります。
PLOG 現行セッションのプロテクションログ番号(2 バイト)。 この値は PLOG の場合にだけ設定されます。CLOG の場合は X'00' がフィールドに格納されます。
DBID データベース ID(2 バイト)。
PLOG1/2 PLOG1 と PLOG2 は、PLOG 番号(それぞれ 2 バイト、合計で 4 バイト)を使用して指定することができます。 前回のニュークリアスセッションが異常終了した場合、この 4 バイトには、そのセッションの PLOGNUM 値が格納されるため、この値を最初のユーザー出口 2 コールで使用すれば、そのセッションの PLOG をコピーすることができます。 後続のセッションでは、これらのバイトに現在の PLOGNUM 値が格納されます。 先行のセッションが異常終了した場合には、ニュークリアス起動フェーズ中に、終了したセッションの PLOG 番号がこの 4 バイトに格納されます。 この PLOG 情報は、正しい PLOG 番号をコピー先の PLOG エリアに割り当てるために起動フェーズで必要になります。 その後、出口がコールされると、最新の PLOG 値がこれらのフィールドに格納されます。

Top of page

出力パラメータ

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

Top of page

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

BS2000 システムのユーザー出口 2 を使用している場合には、従来のリリースと異なり、ADARES CLCOPY または 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 ジョブを割り当てます。

方法 2

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

'ENTER   RES.E.xLCO'

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

Top of page