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*----------------------------------------------------+                          

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