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

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

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

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

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

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

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

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

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

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

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

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


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

graphics/multi_log_flow.png

マルチ ログ処理フロー

Top of page

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

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

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

パラメータ

graphics/ue12parms.png

ユーザー出口 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 type
EX12PLOG EQU     C'P'                PLOG
EX12CLOG EQU     C'C'                CLOG
*
EX12TYPE DS    X                   Call type
EX12TBEG EQU     C'S'                Nucleus start
EX12TSW  EQU     C'W'                Log switch
EX12TEND EQU     C'T'                Nucleus termination
         DS    XL2                 Reserved
*
EX12NLOG DS    F                   Number of logs
EX12DBID DS    F                   Database ID
EX12NUCI DS    F                   Nucleus ID
*
EX12PLGN DS    F                   Current session PLOG number         +
                                     (zero for CLOGs)
EX12NCMP DS    F                   Log just completed
EX12STAT DS    X                   Flags of next log in sequence
EX12WNUC EQU     X'80'               Being written by the nucleus
EX12FULL EQU     X'40'               Completed by the nucleus
EX12RES  EQU     X'20'               Being copied by ADARES
EX12CL5  EQU     X'08'               CLOGLAYOUT=5
EX12UNUS 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 set
EX12LNUM DS    F                   Number of log data set
EX12LFLG DS    X                   Flags (mapped as in EX12STAT)
         DS    XL3                 Reserved
         DS    4F                  Reserved
*
EX12LOGL EQU   *-EX12LOG           Length of a log data set entry
*
*
         MEND

Top of page

出力パラメータ

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

Top of page

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

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

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)

注意:
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 配下のジョブをサブミットできるように、ジョブ制御モデルを設定してください。

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 ライブラリ
    dsfjob 手順 2 でカスタマイズしたジョブが存在するメンバ

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

(ADABAS.SRC,UX12CJBP,J)

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

(ADABAS.SRC,UX12CJBC,J)

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

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

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

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

方法 1

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

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

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

srclib UX12CJBx(J) が収録されているライブラリです。x は、PLCOPY ジョブの場合には P、CLCOPY ジョブの場合には C にそれぞれ置き換わります。
ux12cjbx それぞれのプロシージャジョブの J 要素名です。
dbid このニュークリアスのデータベース ID です。

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

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

方法 2

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

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

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

/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

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

dbid P/CLCOPY データベースのデータベース ID です。この ID は、プロシージャでは &DBID. になります。
srclib テンプレートのコピープロシージャが収録されているソースライブラリです。
ux12cjbc 出口 12 の ADARES CLCOPY ジョブを実行するプロシージャです。
ux12cjbp 出口 12 の ADARES PLCOPY ジョブを実行するプロシージャです。

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

Top of page