ジャーナル情報の API (QjoRetrieveJournalInformation) による取得 (3) - ジャーナル・オブジェクト情報の取得 -

Key 2 の場合です。

ジャーナルを指定して、どんなオブジェクトがそのジャーナルに登録されているかを調べることができます。

Key 2 Output Section

Offset Type Field
Dec Hex
Note: The following fields are returned when the journaled object information key is specified. Otherwise, they will not be used.
0 0 BINARY(4) Total number of journaled files
4 4 BINARY(4) Total number of journaled members
8 8 BINARY(4) Total number of journaled data areas
12 C BINARY(4) Total number of journaled data queues
16 10 BINARY(4) Total number of journaled integrated file system objects of type *DIR, *STMF, and *SYMLNK
20 14 CHAR(16) Reserved
Note: The following fields repeat for each journaled object that is returned.
    CHAR(10) Object type
    CHAR(10) Object name
    CHAR(10) Object library name
    CHAR(16) Object file identifier
    CHAR(2) Reserved

例によって、取得した情報を DSPLY するだけのシンプルなプログラムです。

     H DFTACTGRP(*NO)                                                            
     **                                                                                             
     D RTVJRNINF2      PR                                                                           
     D  JRN                          10                                                             
     D  LIB                          10                                                             
     D  TYPE                         10                                                             
     D RTVJRNINF2      PI                                                                           
     D  JRN                          10                                                             
     D  LIB                          10                                                             
     D  TYPE                         10                                                             
     **                                                                                             
     D ERRC0100        Ds                  Qualified                                                
     D  ByteProvided                 10i 0 Inz( %Size( ERRC0100 ))                                  
     D  ByteAvail                    10i 0 Inz                                                      
     D  ExcpID                        7a                                                            
     D                                1a                                                            
     D  ExcpData                    128a                                                            
     **                                                                                             
     D i               s             10u 0                                                          
     D ApiRcvSiz       s             10u 0                                                          
     **                                                                                             
     D RJRN0100        Ds                  Based( pJrnInf )  Qualified                              
     D  ByteReturned                 10i 0                                                          
     D  ByteAvail                    10i 0                                                          
     D  OfsKeyInf                    10i 0                                                          
     D  JrnNam                       10a                                                            
     D  JrnLib                       10a                                                            
     D  ASP                          10i 0                                                          
     D  MsgQName                     10a                                                            
     D  MsgQLib                      10a                                                            
     D  MngRcvOpt                     1a                                                            
     D  DltRcvOpt                     1a                                                            
     D  RMVINTENT                     1a                                                            
     D  MINFIXLEN                     1a                                                            
     D  MAXOPT1                       1a                                                            
     D  MAXOPT2                       1a                                                            
     D  MAXOPT3                       1a                                                            
     D  rsvd1                         2a                                                            
     D  JrnType                       1a                                                            
     D  RmtJrnType                    1a                                                            
     D  JrnStatus                     1a                                                            
     D  JrnDlvyMode                   1a                                                            
     D  LclJrnName                   10a                                                            
     D  LclJrnLib                    10a                                                            
     D  LclJrnSys                     8a                                                            
     D  SrcJrnName                   10a                                                            
     D  SrcJrnLib                    10a                                                            
     D  SrcJrnSys                     8a                                                            
     D  RedirRcvLib                  10a                                                            
     D  JrnText                      50a                                                            
     D  MinEntDtaAra                  1a                                                            
     D  MinEntFiles                   1a                                                            
     D  rsvd2                         8a                                                            
     D  JrnCache                      1a                                                            
     D  NbrAtcdRcvs                  10i 0                                                          
     D  AtcdRcvName                  10a                                                            
     D  AtcdRcvLib                   10a                                                            
     D  AtcdLclSys                    8a                                                            
     D  AtcdSrcSys                    8a                                                            
     D  AtcdDualRcv                  10a                                                            
     D  AtcdDRcvlib                  10a                                                            
     D  MngRcvDly                    10i 0                                                          
     D  DltRcvDly                    10i 0                                                          
     D  ASPDevName                   10a                                                            
     D  LclJrnGrp                    10a                                                            
     D  SrcJrnGrp                    10a                                                            
     D  JobNameStored                 1a                                                            
     D  UsrNameStored                 1a                                                            
     D  PgmNameStored                 1a                                                            
     D  LibNameStored                 1a                                                            
     D  SysseqStored                  1a                                                            
     D  RmtAdrStored                  1a                                                            
     D  THDidStored                   1a                                                            
     D  LUWidStored                   1a                                                            
     D  XIDStored                     1a                                                            
     D  rsvd3                         4a                                                            
     D  JrnObjLmt                     1a                                                            
     D  JrnObjTotal                  10u 0                                                          
     D  JrnTblTotal                  10u 0                                                          
     D  JrnMbrTotal                  10u 0                                                          
     D  JrnDATotal                   10u 0                                      Journaled Data Area 
     D  JrnDQTotal                   10u 0                                      Journaled Data Q    
     D  JrnIfsTotal                  10u 0                                                          
     D  JrnAPTotal                   10u 0                                      Journaled AccessPath
     D  JrnCmtTotal                  10u 0                                      CMTDFN              
     D  rsvd4                       104a                                                            
     D  NbrKey                       10i 0                                                          
     **                                                                                             
     D JrnKey          Ds                  Based( pJrnKey )  Qualified                              
     D  Key                          10i 0                                                          
     D  OfsKeyInf                    10i 0                                                          
     D  KeyHdrLen                    10i 0                                                          
     D  Entries                      10i 0                                                          
     D  EntriyLen                    10i 0                                                          
     **                                                                                             
     D JrnKeyHdr2      Ds                  Based( pKeyHdr2 )                                        
     D  TotalJrndTbl                 10i 0                                                          
     D  TotalJrndMbr                 10i 0                                                          
     D  TotalJrndDtaA                10i 0                                      Data Area           
     D  TotalJrndDtaq                10i 0                                      Data Q              
     D  TotalJrndIfs                 10i 0                                                          
     D  rsvd                         16a                                                            
     **                                                                                             
     D JrnKeyEnt2      Ds                  Based( pKeyEnt2 )  Qualified                             
     D  ObjType                      10a                                                            
     D  ObjName                      10a                                                            
     D  ObjLib                       10a                                                            
     D  ObjFID                       16a                                        File ID             
     D  rsvd                          2a                                                            
     **                                                                                             
     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' )                                           
     **                                                                                             
     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 )                         
     **                                                                                             
     D  JrnNameLib     s             20a                                                            
     **                                                                                             
      /Free                                                                                         
                                                                                                    
             *inLR = *on;                                                                           
                                                                                                    
             ApiRcvSiz = 65535;                                                                     
             pJrnInf   = %Alloc( ApiRcvSiz );                                                       
             RJRN0100.ByteAvail = *Zero;                                                            
                                                                                                    
             JrnNameLib = JRN + LIB;                                                                
             If TYPE <> *blanks ;                                                                   
                JrnInfRtv.Data = TYPE ;                                                             
                JrnInfRtv.DataLen = %size(JrnInfRtv.data) ;                                         
             EndIf;                                                                                 
                                                                                                    
             DoU  RJRN0100.ByteAvail <= ApiRcvSiz  or                                               
                  ERRC0100.ByteAvail  > *Zero;                                                      
                                                                                                    
               If  RJRN0100.ByteAvail > ApiRcvSiz;                                                  
                 ApiRcvSiz  = RJRN0100.ByteAvail;                                                   
                 pJrnInf    = %ReAlloc( pJrnInf: ApiRcvSiz );                                       
               EndIf;                                                                               
                                                                                                    
               RtvJrnInf( RJRN0100                                                                  
                        : ApiRcvSiz                                                                 
                        : JrnNameLib                                                                
                        : 'RJRN0100'                                                                
                        : JrnInfRtv                                                                 
                        : ERRC0100                                                                  
                         );                                                                         
              EndDo;                                                                                
                                                                                                    
              If  ERRC0100.ByteAvail = *Zero;                                                       
                                                                                                    
                pJrnKey = pJrnInf                                                                   
                        + RJRN0100.OfsKeyInf + %Size( RJRN0100.NbrKey );                            
                pKeyHdr2 = pJrnKey  + JrnKey.OfsKeyInf;                                             
                pKeyEnt2 = pKeyHdr2 + %Size( JrnKeyHdr2 );                                          
                                                                                                    
                For  i = 1  to JrnKey.Entries;                                                      
                                                                                                    
                    dsply JrnKeyEnt2.ObjType ;                                                      
                    dsply JrnKeyEnt2.ObjName ;                                                      
                    dsply JrnKeyEnt2.ObjLib  ;                                                      
                    dsply JrnKeyEnt2.ObjFID  ;                                                      
                                                                                                    
                  If  i < JrnKey.Entries;                                                           
                    pKeyEnt2 = pKeyEnt2 + JrnKey.EntriyLen;                                         
                  EndIf;                                                                            
                EndFor;                                                                             
                                                                                                    
              EndIf;                                                                                
                                                                                                    
              Dealloc pJrnInf ;                                                                     
                                                                                                    
              return;                                                                               
                                                                                                    
      /End-Free

ジャーナル名と、登録されていることを調べたいオブジェクトのタイプを指定すると、そのジャーナルに登録されている該当のタイプのオブジェクトのリストが返ってきます。

ジャーナルにファイルを追加すると、ちゃんとその分も表示されます。

ちなみに、ファイルを指定して、そのジャーナル等の情報を取得するのは、Retrieve Database File Description (QDBRTVFD) API を使用することで可能です。
ファイル(テーブル)情報の API (QDBRTVFD) による取得 - ジャーナル情報の取得 -」に簡単なサンプルを載せておきました。

[Top Pageに戻る]

Ads by TOK2