RPG

195. API : QUSRMBRD : メンバー記述の検索

QUSRMBRD はファイルのメンバーの記述情報を検索する API である。

ファイルメンバーの記述情報の検索 ( QUSRMBRD )API

パラメータ

必須パラメータ・グループ:

1.レシーバー変数出力Char(*)
2.レシーバー変数長入力Binary(4)
3.形式名入力Char(8)
4.修飾データ・ベースファイル名入力Char(20)の配列(*)
5.データ・ベース・メンバー名入力Char(10)
6.一時変更処理入力Char(1)

任意選択パラメータ:

7.エラー・コード入出力Char(*)

任意選択パラメータ:

8.メンバー検索処理入力Char(*)

QUSRMBRD は形式名によって戻されるレシーバー変数 ( 戻り変数 ) の内容とその長さが変わります。

形式名

MBRD0100 形式・・・・・・メンバー名および基本的なソース情報
MBRD0200 形式・・・・・・メンバー名および拡張情報
MBRD0300 形式・・・・・・メンバー名および完全な情報

修飾データ・ベース名

ファイル名 ( 10桁 ) + ライブラリー名 ( 10桁 ) で表現する。
ライブラリー名 には *CURLIB, *LIBL の指定も可。

データ・ベース・メンバー名

ファイルのメンバー名を指定する。
*FIRST または *LAST の使用も可。

一時変更処理

0 : 一時変更を行なわない を指定すること。

■ MBRD0100 形式

オフセットタイプフィールド
10進数16進数
00BINARY(4)返されるバイト数
44BINARY(4)使用可能なバイト数
88CHAR(10)データ・ベース・ファイル名
1812CHAR(10)ライブラリー名
281CCHAR(10)メンバー名
3826CHAR(10)ファイル属性
4830CHAR(10)ソース・タイプ
583ACHAR(13)作成日時
7147CHAR(13)最後のソースを変更した日時
8454CHAR(50)メンバー・テキスト記述
13486CHAR(1)ソース・ファイル

■ MBRD0200 形式

オフセットタイプフィールド
10進数16進数
00OBJD0200 形式からのすべての情報
13587CHAR(13)ソース・ファイルの更新日時
13688CHAR(13)オブジェクト保管日時
14089CHAR(13)オブジェクト復元日時
1448ACHAR(10)作成者のユーザー・プロフィール
1488CCHAR(8)オブジェクトが作成されたシステム
15290CHAR(7)リセット日付
1569CBINARY(4)保管サイズ
160A0BINARY(4)保管順序番号
173ADCHAR(10)記憶域
186BACHAR(10)保管コマンド
199C7CHAR(71)保管ボリュームID
206CECHAR(10)保管装置
212D4CHAR(10)保管ファイル名
216D8CHAR(10)保管ファイル・ライブラリー名
223DFCHAR(17)保管ラベル
230E6CHAR(9)システム・レベル
232E8CHAR(16)コンパイラー
236ECCHAR(8)オブジェクト・レベル
240F0CHAR(1)ユーザーの変更
244F4CHAR(16)ライセンス・プログラム
248F8CHAR(10)プログラム一時修正(PTF)
252FCCHAR(10)プログラム診断依頼書(APAR)

■ MBRD0300 形式

オフセットタイプフィールド
10進数16進数
00OBJD0200 形式からのすべての情報
26610ACHAR(1)結合メンバー
26710BCHAR(1)アクセス・パスの保守
26810CCHAR(10)SQL ファイル・タイプ
278116CHAR(1)予約済み
279117CHAR(1)読み取り操作の許可
280118CHAR(1)書き出し操作の許可
281119CHAR(1)更新操作の許可
28211ACHAR(1)削除操作の許可
28311BCHAR(1)予約済み
28411CBIBARY(4)書出しの置換えを行なうレコード
288120BIBARY(4)削除レコードの許容最大パーセント
292124BIBARY(4)レコードの初期数
296128BIBARY(4)レコードの増分数
30012CBIBARY(4)増分の最大数
304130BIBARY(4)増分の現行数
308134BIBARY(4)レコード容量
312138CHAR(10)レコード様式選択プログラム
322142CHAR(10)ライブラリー
33214CBIBARY(4)制約索引の数
33414EBIBARY(4)制約索引情報までのオフセット
338153CHAR(46)予約済み
384180CHAR(112)配列レコード様式および基本ファィル・リスト
**CHAR(320)配列制約索引情報
【 サンプル・ソース:TESTMBRD 】

これはソース・ファイル PGMRLIB/QRPGLESRC のメンバー AAI006 のソース・タイプを
表示するプログラムである。

00001.00 H DATEDIT(*YMD/)                                                                
0002.00 F********** QUSROBJD : メンバー記述の検索  ****************************          
0003.00 F*   QUSRMBRD のサンプル                                                         
0004.00 F**********************************************************************          
0005.00  /COPY QSYSINC/QRPGLESRC,QUSRMBRD                                                
0006.00 D SRCSRCLIB       S             20A   INZ('QRPGLESRC PGMRLIB   ')                
0007.00 D CPFMSG          C                   CONST('QCPFMSG   *LIBL     ')              
0008.00 D RCVLEN          S              4B 0 INZ(%SIZE(QUSM0100))                       
0009.00                                                                                  
0010.00 D APIERR          DS                                                             
0011.00 D  GETBYT                 1      4B 0 INZ(160)                                   
0012.00 D  AVLBYT                 5      8B 0 INZ(0)                                     
0013.00 D  MSGID                  9     15                                               
0014.00 D  MSGDTA                17    160                                               
0015.00                                                                                  
0016.00 D SPCBIN          DS                                                             
0017.00 D  MSGDTALEN                     4B 0 INZ(100)                                   
0018.00 D  PGMSTKCNT                     4B 0 INZ(1)                                     
0019.00                                                                                  
0020.00 C*----------------------------------------------------+                          
0021.00 C                   CALL      QUSRMBRD                                           
0022.00 C                   PARM                    QUSM0100                             
0023.00 C                   PARM                    RCVLEN                               
0024.00 C                   PARM      'MBRD0100'    FOTMAT            8                  
0025.00 C                   PARM                    SRCSRCLIB                            
0026.00 C                   PARM      'AAI006    '  MBR              10                  
0027.00 C                   PARM      '0'           REPLACE           1                  
0028.00 C                   PARM                    APIERR                               
0029.00 C*----------------------------------------------------+                          
0030.00 C     AVLBYT        IFEQ      *ZEROS                                             
0031.00 C     'SRCTYP='     CAT(P)    QUSST00:0     DSP40            40                  
0032.00 C     DSP40         DSPLY                   ANS               1                  
0033.00 C                   ELSE                                                         
0034.00 C                   MOVEL     CPFMSG        MSGFILLIB                            
0035.00 C*----------------------------------------------------+                          
0036.00 C                   CALL      'QMHSNDPM'                           99            
0037.00 C                   PARM                    MSGID                                
0038.00 C                   PARM                    MSGFILLIB        20                  
0039.00 C                   PARM                    MSGDTA                               
0040.00 C                   PARM                    MSGDTALEN                            
0041.00 C                   PARM      '*COMP     '  MSGTYPE          10                  
0042.00 C                   PARM      '*PGMBDY   '  PGMQUE           10                  
0043.00 C                   PARM                    PGMSTKCNT                            
0044.00 C                   PARM                    MSGKEY            4                  
0045.00 C                   PARM                    APIERR                               
0046.00 C*----------------------------------------------------+                          
0047.00 C                   END                                                          
0048.00 C                   MOVE      *ON           *INLR                                
0049.00 C                   RETURN                                                       
【解説】

QUSRMBRD を使用しているのは

00020.00 C*----------------------------------------------------+                         
0021.00 C                   CALL      QUSRMBRD                                           
0022.00 C                   PARM                    QUSM0100                             
0023.00 C                   PARM                    RCVLEN                               
0024.00 C                   PARM      'MBRD0100'    FOTMAT            8                  
0025.00 C                   PARM                    SRCSRCLIB                            
0026.00 C                   PARM      'AAI006    '  MBR              10                  
0027.00 C                   PARM      '0'           REPLACE           1                  
0028.00 C                   PARM                    APIERR                               
0029.00 C*----------------------------------------------------+                          

であり、レシーバー変数 mbrd0100 からソース・タイプを

0031.00 C     'SRCTYP='     CAT(P)    QUSST00:0     DSP40            40                  
0032.00 C     DSP40         DSPLY                   ANS               1                  

によって取り出して表示している。
レシーバー変数 QUSM0100 は

0005.00  /COPY QSYSINC/QRPGLESRC,QUSRMBRD                                                

とあるように、このメンバーの中で定義されている。
QUSRMBRD の実行でエラーが発生すれば

0035.00 C*----------------------------------------------------+                          
0036.00 C                   CALL      'QMHSNDPM'                           99            
0037.00 C                   PARM                    MSGID                                
0038.00 C                   PARM                    MSGFILLIB        20                  
0039.00 C                   PARM                    MSGDTA                               
0040.00 C                   PARM                    MSGDTALEN                            
0041.00 C                   PARM      '*COMP     '  MSGTYPE          10                  
0042.00 C                   PARM      '*PGMBDY   '  PGMQUE           10                  
0043.00 C                   PARM                    PGMSTKCNT                            
0044.00 C                   PARM                    MSGKEY            4                  
0045.00 C                   PARM                    APIERR                               
0046.00 C*----------------------------------------------------+                          

によってエラー・メッセージが出力されるように対処している。
この例はサンプルとはいえ十分なエラー・モニターも行なわれているのである。