ジャーナル情報の API (QjoRetrieveJournalInformation) による取得 (1) - 概要と準備 -

概要

ジャーナル情報を取得するには Retrieve Journal Information (QjoRetrieveJournalInformation) API という API を使います。

  Required Parameter Group:

1 Receiver variable Output Char(*)
2 Length of receiver variable Input Binary(4)
3 Qualified journal name Input Char(20)
4 Format name Input Char(8)
5 Journal information to retrieve Input Char(*)

  Omissible Parameter:

6 Error Code I/O Char(*)

   Service Program Name: QJOURNAL

   Header File: QSYSINC/H.QJOURNAL

   Default Public Authority: *USE

   Threadsafe: Yes

↑のような仕様になっているので、たとえば↓のように定義します。

     D RtvJrnInf       Pr                  ExtProc( 'QjoRetrieveJournal-                            
     D                                     Information' )                                           
     D  RcvVar                    65535a   Options( *VarSize )                                      
     D  RcvVarLen                    10i 0 Const                                                    
     D  JrnName                      20a   Const                                                    
     D  FmtName                       8a   Const                                                    
     D  InfToRtv                  65535a   Const Options( *VarSize )                                
     D  Error                     32767a         Options( *VarSize: *Omit )

それで↓のように呼び出すわけですね。

               RtvJrnInf( RJRN0100                                                                  
                        : ApiRcvSiz                                                                 
                        : JrnNameLib                                                                
                        : 'RJRN0100'                                                                
                        : JrnInfRtv                                                                 
                        : ERRC0100                                                                  
                         );          

この API では Key を指定することで取得する情報のタイプを変えられるようになっています。(V5R4 時点)

Keys

Key Input Type Field
1 N/A Journal receiver directory information
2 CHAR(10) Journaled object information
3 CHAR(38) Remote journal information

どんな情報が取得できるかは、"Field" の内容を見ればわかると思いますが…

Key が 1 の場合は、ファイルを指定して、ジャーナルされているジャーナル名、ジャーナル・レシーバ名などを取得することができ、
Key が 2 の場合は、ジャーナルを指定して、ジャーナルされているファイルやオブジェクトにどんなものがあるか、といったものを取得することができます。
Key が 3 の場合は、遠隔ジャーナル関連の情報の取得ができるようになっています。

Key のところの指定を変更するだけで、プロシージャの定義や呼び出し方はまったく同じです。(もちろん、取得してきた情報の処理の仕方は異なりますが)

具体的に言うと、5つめの引数である "Journal information to retrieve" にあたるものの内容を変更して、同一の呼び出しを行います。

               RtvJrnInf( RJRN0100                                                                  
                        : ApiRcvSiz                                                                 
                        : JrnNameLib                                                                
                        : 'RJRN0100'                                                                
                        : JrnInfRtv                                                                 
                        : ERRC0100                                                                  
                         );

Key が 1 の場合は、↓のように Key にあたる部分を 1 で初期化しておきます。

     D JrnInfRtv       Ds                  Qualified                                                
     D  NbrVarRcd                    10i 0 Inz( 1 )                                                 
     D  VarRcdLen                    10i 0 Inz( 12 )                                                
     D  Key                          10i 0 Inz( 1 )                                                 
     D  DataLen                      10i 0 Inz( 0 )                                                 

Key が 2 の場合は、↓のように Key にあたる部分を 2 で初期化しておきます。
他の場所の初期化の仕方も異なってきていることに注意してください。

     D JrnInfRtv       Ds                  Qualified                                                
     D  NbrVarRcd                    10i 0 Inz( 1 )                                                 
     D  VarRcdLen                    10i 0 Inz( 22 )                                                
     D  Key                          10i 0 Inz( 2 )                                                 
     D  DataLen                      10i 0 Inz( %size( JrnInfRtv.Data ))                            
     D  Data                         10a   inz( '*FILE' )

Key が 3 の場合は、↓のように Key にあたる部分を 3 で初期化しておきます。
こちらも、他の場所の初期化の仕方が異なってきているのがわかりますね。

     D JrnInfRtv       Ds                  Qualified                                                
     D  NbrVarRcd                    10i 0 Inz( 1 )                                                 
     D  VarRcdLen                    10i 0 Inz( 60 )                                                
     D  Key                          10i 0 Inz( 3 )                                                 
     D  DataLen                      10i 0 Inz( %Size( JrnInfRtv.Data ))                            
     D  Data                                                                                        
     D   RdbDirEinf                  18a   Overlay( Data )         Inz( '*ALL' )                    
     D   RmtJrnName                  20a   Overlay( Data: *Next )  Inz( '*ALL' )

もちろん、どの Key でも共通して取得できる情報はあります。
↓です。

RJRN0100

Offset Type Field
Dec Hex
0 0 BINARY(4) Bytes returned
4 4 BINARY(4) Bytes available
8 8 BINARY(4) Offset to key information
12 C CHAR(10) Journal name
22 16 CHAR(10) Journal library name
32 20 BINARY(4) Auxiliary storage pool (ASP)
36 24 CHAR(10) Message queue name
46 2E CHAR(10) Message queue library name
56 38 CHAR(1) Manage receiver option
57 39 CHAR(1) Delete receiver option
58 3A CHAR(1) Receiver size option *RMVINTENT
59 3B CHAR(1) Receiver size option *MINFIXLEN
60 3C CHAR(1) Receiver size option *MAXOPT1
61 3D CHAR(1) Receiver size option *MAXOPT2
62 3E CHAR(1) Receiver size option *MAXOPT3
63 3F CHAR(2) Reserved
65 41 CHAR(1) Journal type
66 42 CHAR(1) Remote journal type
67 43 CHAR(1) Journal state
68 44 CHAR(1) Journal delivery mode
69 45 CHAR(10) Local journal name
79 4F CHAR(10) Local journal library name
89 59 CHAR(8) Local journal system
97 61 CHAR(10) Source journal name
107 6B CHAR(10) Source journal library name
117 75 CHAR(8) Source journal system
125 7D CHAR(10) Redirected receiver library name
135 87 CHAR(50) Journal text
185 B9 CHAR(1) Minimize entry specific data for data areas
186 BA CHAR(1) Minimize entry specific data for files
187 BB CHAR(8) Reserved
195 C3 CHAR(1) Journal Cache
196 C4 BINARY(4) Number of attached journal receivers
200 C8 CHAR(10) Attached journal receiver name
210 D2 CHAR(10) Attached journal receiver library name
220 DC CHAR(8) Local journal system associated with the attached journal receiver
228 E4 CHAR(8) Source journal system associated with the attached journal receiver
236 EC CHAR(10) Attached dual journal receiver name
246 F6 CHAR(10) Attached dual journal receiver library name
256 100 BINARY(4) Manage receiver delay
260 104 BINARY(4) Delete receiver delay
264 108 CHAR(10) ASP device name
274 112 CHAR(10) Local journal ASP group name
284 11C CHAR(10) Source journal ASP group name
294 126 CHAR(1) Fixed length data JOB
295 127 CHAR(1) Fixed length data USR
296 128 CHAR(1) Fixed length data PGM
297 129 CHAR(1) Fixed length data PGMLIB
298 12A CHAR(1) Fixed length data SYSSEQ
299 12B CHAR(1) Fixed length data RMTADR
300 12C CHAR(1) Fixed length data THD
301 12D CHAR(1) Fixed length data LUW
302 12E CHAR(1) Fixed length data XID
Start of change303 12F CHAR(4) Reserved
307 133 CHAR(1) Journaled object limit
308 134 BINARY(4) UNSIGNED Total number of journaled objects
312 138 BINARY(4) UNSIGNED Total number of journaled files
316 13C BINARY(4) UNSIGNED Total number of journaled members
320 140 BINARY(4) UNSIGNED Total number of journaled data areas
324 144 BINARY(4) UNSIGNED Total number of journaled data queues
328 148 BINARY(4) UNSIGNED Total number of journaled integrated file system objects of type *DIR, *STMF, and *SYMLNK
332 14C BINARY(4) UNSIGNED Total number of journaled access paths
336 150 BINARY(4) UNSIGNED Total number of commitment definitions
340 154 BINARY(4) UNSIGNED Journal recovery count
344 158 CHAR(104) Reserved End of change
448 1C0 BINARY(4) Number of keys in key section
Note:These fields repeat for each key specified.
BINARY(4) Key
BINARY(4) Offset to start of key information
BINARY(4) Length of key information header section
BINARY(4) Number of entries
BINARY(4) Length of each entry in key information list section

準備

まずは準備としてテスト用のジャーナルレシーバーとジャーナルを作成します。

テストに使用するファイル(テーブル)をジャーナルに登録しましょう。

ファイル(テーブル)のジャーナリングを開始させておきます。

以上でとりあえずの準備は完了です。

[Top Pageに戻る]

Ads by TOK2