ファイル(テーブル)情報の API (QDBRTVFD) による取得 - ジャーナル情報の取得 -

ジャーナル情報の API (QjoRetrieveJournalInformation) による取得 (3) - ジャーナル・オブジェクト情報の取得 -」で、ジャーナルを指定して登録されているファイル(テーブル)を調べられることを見ましたが、
今回は逆に、ファイルを指定して、そのジャーナル等の情報を取得する方法を見てみましょう。

Retrieve Database File Description (QDBRTVFD) API を使用することで可能です。

この API、DSPFD コマンドで取得できるような情報がほとんど取得できるのでかなり使い方が複雑です。

Format of Generated Information

The QDBRTVFD API can be used to provide information in the following formats:
FILD0100 File definition template
FILD0200 Format definition template
FILD0300 Key field information template
FILD0400 Trigger information template

今回のようなファイルの一般的な情報は FILD0100 を使用します。
とりあえずのサンプル、ということで。

     H DFTACTGRP(*NO)                                                                               
     **                                                                                             
     D RTVDBJRN        PR                                                                           
     D  FILE                         10a                                                            
     D  LIB                          10a                                                            
     D  RCDFMT                       10a                                                            
     D RTVDBJRN        PI                                                                           
     D  FILE                         10a                                                            
     D  LIB                          10a                                                            
     D  RCDFMT                       10a                                                            
     **                                                                                             
     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 ApiRcvSiz       s             10u 0                                                          
     **                                                                                             
     D Qdb_Qdbfh       Ds                  Based( pQdb_Qdbfh )  Qualified                           
     D  Qdbfyret                     10i 0                                                          
     D  Qdbfyavl                     10i 0                                                          
     D  Qdbfhflg                      2a                                                            
     D*  Reserved_1    :2                                                                           
     D*  Qdbfhfpl      :1                                                                           
     D*  Reserved_2    :1                                                                           
     D*  Qdbfhfsu      :1                                                                           
     D*  Reserved_3    :1                                                                           
     D*  Qdbfhfky      :1                                                                           
     D*  Reserved_4    :1                                                                           
     D*  Qdbfhflc      :1                                                                           
     D*  Qdbfkfso      :1                                                                           
     D*  Reserved_5    :4                                                                           
     D*  Qdbfigcd      :1                                                                           
     D*  Qdbfigcl      :1                                                                           
     D  Reserved_7                    4a                                                            
     D  Qdbflbnum                     5i 0                                                          
     D  Qdbfkdat                     14a                                                            
     D  Qdbfknum                      5i 0 Overlay( Qdbfkdat: 1 )                                   
     D  Qdbfkmxl                      5i 0 Overlay( Qdbfkdat: *Next )                               
     D  Qdbfkflg                      1a   Overlay( Qdbfkdat: *Next )                               
     D*  Reserved_8    :1                                                                           
     D*  Qdbfkfcs      :1                                                                           
     D*  Reserved_9    :4                                                                           
     D*  Qdbfkfrc      :1                                                                           
     D*  Qdbfkflt      :1                                                                           
     D  Qdbfkfdm                      1a   Overlay( Qdbfkdat: *Next )                               
     D  Reserved_10                   8a   Overlay( Qdbfkdat: *Next )                               
     D  Qdbfhaut                     10a                                                            
     D  Qdbfhupl                      1a                                                            
     D  Qdbfhmxm                      5i 0                                                          
     D  Qdbfwtfi                      5i 0                                                          
     D  Qdbfhfrt                      5i 0                                                          
     D  Qdbfhmnum                     5i 0                                                          
     D  Reserved_11                   9a                                                            
     D  Qdbfbrwt                      5i 0                                                          
     D  Qaaf                          1a                                                            
     D*  Reserved_12   :7                                                                           
     D*  Qdbfpgmd      :1                                                                           
     D  Qdbffmtnum                    5i 0                                                          
     D  Qdbfhfl2                      2a                                                            
     D*  Qdbfjnap      :1                                                                           
     D*  Reserved_13   :1                                                                           
     D*  Qdbfrdcp      :1                                                                           
     D*  Qdbfwtcp      :1                                                                           
     D*  Qdbfupcp      :1                                                                           
     D*  Qdbfdlcp      :1                                                                           
     D*  Reserved_14   :9                                                                           
     D*  Qdbfkfnd      :1                                                                           
     D  Qdbfvrm                       5i 0                                                          
     D  Qaaf2                         2a                                                            
     D*  Qdbfhmcs      :1                                                                           
     D*  Reserved_15   :1                                                                           
     D*  Qdbfknll      :1                                                                           
     D*  Qdbf_nfld     :1                                                                           
     D*  Qdbfvfld      :1                                                                           
     D*  Qdbftfld      :1                                                                           
     D*  Qdbfgrph      :1                                                                           
     D*  Qdbfpkey      :1                                                                           
     D*  Qdbfunqc      :1                                                                           
     D*  Reserved_118  :2                                                                           
     D*  Qdbfapsz      :1                                                                           
     D*  Qdbfdisf      :1                                                                           
     D*  Reserved_68   :1                                                                           
     D*  Reserved_69   :1                                                                           
     D*  Reserved_70   :1                                                                           
     D  Qdbfhcrt                     13a                                                            
     D  Qdbfhtx                      52a                                                            
     D   Reserved_18                  2a   Overlay( Qdbfhtx: 1 )                                    
     D   Qdbfhtxt                    50a   Overlay( Qdbfhtx: *Next )                                
     D  Reserved_19                  13a                                                            
     D  Qdbfsrc                      30a                                                            
     D   Qdbfsrcf                    10a   Overlay( Qdbfsrc: 1 )                                    
     D   Qdbfsrcm                    10a   Overlay( Qdbfsrc: *Next )                                
     D   Qdbfsrcl                    10a   Overlay( Qdbfsrc: *Next )                                
     D  Qdbfkrcv                      1a                                                            
     D  Reserved_20                  23a                                                            
     D  Qdbftcid                      5i 0                                                          
     D  Qdbfasp                       2a                                                            
     D  Qdbfnbit                      1a                                                            
     D*  Qdbfhudt      :1                                                                           
     D*  Qdbfhlob      :1                                                                           
     D*  Qdbfhdtl      :1                                                                           
     D*  Qdbfhudf      :1                                                                           
     D*  Qdbfhlon      :1                                                                           
     D*  Qdbfhlop      :1                                                                           
     D*  Qdbfhdll      :1                                                                           
     D*  Reserved_21   :1                                                                           
     D  Qdbfmxfnum                    5i 0                                                          
     D  Reserved_22                  76a                                                            
     D  Qdbfodic                     10i 0                                                          
     D  Reserved_23                  14a                                                            
     D  Qdbffigl                      5i 0                                                          
     D  Qdbfmxrl                      5i 0                                                          
     D  Reserved_24                   8a                                                            
     D  Qdbfgkct                      5i 0                                                          
     D  Qdbfos                       10i 0                                                          
     D  Reserved_25                   8a                                                            
     D  Qdbfocs                      10i 0                                                          
     D  Reserved_26                   4a                                                            
     D  Qdbfpact                      2a                                                            
     D  Qdbfhrls                      6a                                                            
     D  Reserved_27                  20a                                                            
     D  Qdbpfof                      10i 0                                                          
     D  Qdblfof                      10i 0                                                          
     D  Qdbfssfp                      6a                                                            
     D   Qdbfnlsb                     1a   Overlay( Qdbfssfp: 1 )                                   
     D*   Qdbfsscs     :3                                                                           
     D*   Reserved_103 :5                                                                           
     D   Qdbflang                     3a   Overlay( Qdbfssfp: *Next )                               
     D   Qdbfcnty                     2a   Overlay( Qdbfssfp: *Next )                               
     D  Qdbfjorn                     10i 0                                                          
     D  Qdbfevid                     10i 0                                                          
     D  Reserved_28                  14a                                                            
      **                                                                                            
     D Qdb_Qdbfjoal    Ds                  Qualified  Based( pQdb_Qdbfjoal)                         
     D  Qdbfojrn                     10a                                                            
     D  Qdbfolib                     10a                                                            
     D  Qdbfojpt                      1a                                                            
     D*  Reserved_106  :1                                                                           
     D*  Qdbfjbim      :1                                                                           
     D*  Qdbfjaim      :1                                                                           
     D*  Reserved_107  :1                                                                           
     D*  Qdbfjomt      :1                                                                           
     D*  Reserved_108  :3                                                                           
     D  Qdbfjact                      1a                                                            
     D  Qdbfljrn                     13a                                                            
     D  Reserved_105                 29a                                                            
     **                                                                                             
     D RtvDbfDsc       Pr                  ExtPgm( 'QDBRTVFD' )                                     
     D  RcvVar                    32767a          Options( *VarSize )                               
     D  RcvVarLen                    10i 0 Const                                                    
     D  RtbFilName                   20a                                                            
     D  FmtName                       8a   Const                                                    
     D  FilName                      20a   Const                                                    
     D  RcdFmtName                   10a   Const                                                    
     D  isOVR                         1a   Const                                                    
     D  System                       10a   Const                                                    
     D  FmtType                      10a   Const                                                    
     D  Error                     32767a          Options( *VarSize: *Omit )                        
     **                                                                                             
     D RtnFileName     s             20a                                                            
     D FileName        s             20a                                                            
      /Free                                                                                         
                                                                                                    
        *inLR = *on ;                                                                               
                                                                                                    
        ApiRcvSiz  = 65535;                                                                         
        pQdb_Qdbfh = %Alloc( ApiRcvSiz );                                                           
        Qdb_Qdbfh.Qdbfyavl = *Zero;                                                                 
                                                                                                    
        FileName = FILE + LIB ;                                                                     
        If RCDFMT = *blanks ;                                                                       
           RCDFMT = '*FIRST' ;                                                                      
        EndIf ;                                                                                     
                                                                                                    
        DoU  Qdb_Qdbfh.Qdbfyavl <= ApiRcvSiz       or                                               
             ERRC0100.ByteAvail  > *Zero;                                                           
                                                                                                    
          If  Qdb_Qdbfh.Qdbfyavl > ApiRcvSiz;                                                       
            ApiRcvSiz = Qdb_Qdbfh.Qdbfyavl;                                                         
            pQdb_Qdbfh  = %ReAlloc( pQdb_Qdbfh: ApiRcvSiz );                                        
          EndIf;                                                                                    
                                                                                                    
          RtvDbfDsc( Qdb_Qdbfh                                                                      
                   : ApiRcvSiz                                                                      
                   : RtnFileName                                                                    
                   : 'FILD0100'                                                                     
                   : FileName                                                                       
                   : RcdFmt                                                                         
                   : '0'                                                                            
                   : '*LCL'                                                                         
                   : '*EXT'                                                                         
                   : ERRC0100                                                                       
                   );                                                                               
        EndDo;                                                                                      
                                                                                                    
        If  ERRC0100.ByteAvail = *Zero;                                                             
                                                                                                    
           pQdb_Qdbfjoal = pQdb_Qdbfh + Qdb_Qdbfh.Qdbfjorn;                                         
                                                                                                    
           dsply Qdb_Qdbfjoal.Qdbfojrn ;                                                            
           dsply Qdb_Qdbfjoal.Qdbfolib ;                                                            
           dsply Qdb_Qdbfjoal.Qdbfojpt ;                                                            
           dsply Qdb_Qdbfjoal.Qdbfjact ;                                                            
           dsply Qdb_Qdbfjoal.Qdbfljrn ;                                                            
           // We can get any of header information ..                                               
           dsply Qdb_Qdbfh.Qdbfpact ;                                                               
                                                                                                    
        EndIF;                                                                                      
                                                                                                     
        Dealloc pQdb_Qdbfh ;                                                                     
                                                                                                    
        return;                                                                               
                                                                                                   
      /End-Free

実行結果は↓のようなかんじになります。

[Top Pageに戻る]

Ads by TOK2