CL

73. 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 のソース・タイプを
表示するプログラムである。

0001.00              PGM                                                                 
0002.00 /*---------------------------------------------------------*/                    
0003.00 /*   TESTMBRDCL :   メンバー記述の検索                     */                    
0004.00 /*---------------------------------------------------------*/                    
0005.00              DCL        VAR(&MSG) TYPE(*CHAR) LEN(132)                           
0006.00              DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7)                           
0007.00              DCL        VAR(&MSGF) TYPE(*CHAR) LEN(10)                           
0008.00              DCL        VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)                        
0009.00              DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(132)                        
0010.00              DCL        VAR(&TYPE) TYPE(*CHAR) LEN(1)                            
0011.00              DCL        VAR(&RCVVAR) TYPE(*CHAR) LEN(1024)                       
0012.00              DCL        VAR(&RCVLEN) TYPE(*CHAR) LEN(4) +                        
0013.00                           VALUE(X'00000400')                                     
0014.00              DCL        VAR(&APIERR) TYPE(*CHAR) LEN(116) +                      
0015.00                           VALUE(X'000074') /* 2 進数  */                         
0016.00              DCL        VAR(&NULL4) TYPE(*CHAR) LEN(4) +                         
0017.00                           VALUE(X'00000000')                                     
0018.00              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))                  
0019.00                                                                                  
0020.00              RTVJOBA    TYPE(&TYPE)                                              
0021.00              CALL       PGM(QUSRMBRD) PARM(&RCVVAR &RCVLEN +                     
0022.00                           'MBRD0100' 'QRPGLESRC PGMRLIB   ' +                    
0023.00                           'AAI006    ' '0' &APIERR)                              
0024.00              IF         COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO)              
0025.00              GOTO       APIERR                                                   
0026.00              ENDDO                                                               
0027.00              SNDPGMMSG  MSG('SRCTYPE = ' *CAT %SST(&RCVVAR 49 +                  
0028.00                           10)) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG)                    
0029.00              RETURN                                                              
0030.00                                                                                  
0031.00  APIERR:                                                                         
0032.00              CHGVAR     VAR(&MSGID) VALUE(%SST(&APIERR 9 7))                     
0033.00              CHGVAR     VAR(&MSGF) VALUE('QCPFMSG   ')                           
0034.00              CHGVAR     VAR(&MSGDTA) VALUE(%SST(&APIERR 17 100))                 
0035.00              RTVMSG     MSGID(&MSGID) MSGF(QCPFMSG) MSGDTA(&MSGDTA) +            
0036.00                           MSG(&MSG)                                              
0037.00              GOTO       SNDMSG                                                   
0038.00  ERROR:      RCVMSG     MSGTYPE(*LAST) RMV(*NO) MSG(&MSG)                        
0039.00  SNDMSG:                                                                         
0040.00              IF         COND(&TYPE *EQ '0') THEN(DO)                             
0041.00              SNDPGMMSG  MSG(&MSG) TOMSGQ(*SYSOPR) MSGTYPE(*COMP)                 
0042.00              ENDDO                                                               
0043.00              ELSE       CMD(DO)                                                  
0044.00              SNDPGMMSG  MSG(&MSG) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG)                 
0045.00              ENDDO                                                               
0046.00              ENDPGM                                                              
【解説】

QUSRMBRD を使用しているのは

0021.00              CALL       PGM(QUSRMBRD) PARM(&RCVVAR &RCVLEN +                     
0022.00                           'MBRD0100' 'QRPGLESRC PGMRLIB   ' +                    
0023.00                           'AAI006    ' '0' &APIERR)                              

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

0027.00              SNDPGMMSG  MSG('SRCTYPE = ' *CAT %SST(&RCVVAR 49 +                  
0028.00                           10)) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG)                    

によって取り出して表示している。

QUSRMBRD の実行でエラーが発生すれば

0031.00  APIERR:                                                                         
0032.00              CHGVAR     VAR(&MSGID) VALUE(%SST(&APIERR 9 7))                     
0033.00              CHGVAR     VAR(&MSGF) VALUE('QCPFMSG   ')                           
0034.00              CHGVAR     VAR(&MSGDTA) VALUE(%SST(&APIERR 17 100))                 
0035.00              RTVMSG     MSGID(&MSGID) MSGF(QCPFMSG) MSGDTA(&MSGDTA) +            
0036.00                           MSG(&MSG)                                              
0037.00              GOTO       SNDMSG                                                   

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