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進数 | ||
0 |
0 |
BINARY(4) |
返されるバイト数 |
4 |
4 |
BINARY(4) |
使用可能なバイト数 |
8 |
8 |
CHAR(10) |
データ・ベース・ファイル名 |
18 |
12 |
CHAR(10) |
ライブラリー名 |
28 |
1C |
CHAR(10) |
メンバー名 |
38 |
26 |
CHAR(10) |
ファイル属性 |
48 |
30 |
CHAR(10) |
ソース・タイプ |
58 |
3A |
CHAR(13) |
作成日時 |
71 |
47 |
CHAR(13) |
最後のソースを変更した日時 |
84 |
54 |
CHAR(50) |
メンバー・テキスト記述 |
134 |
86 |
CHAR(1) |
ソース・ファイル |
■ MBRD0200 形式
| オフセット | タイプ | フィールド | |
|---|---|---|---|
| 10進数 | 16進数 | ||
0 |
0 |
OBJD0200 形式からのすべての情報 |
|
135 |
87 |
CHAR(13) |
ソース・ファイルの更新日時 |
136 |
88 |
CHAR(13) |
オブジェクト保管日時 |
140 |
89 |
CHAR(13) |
オブジェクト復元日時 |
144 |
8A |
CHAR(10) |
作成者のユーザー・プロフィール |
148 |
8C |
CHAR(8) |
オブジェクトが作成されたシステム |
152 |
90 |
CHAR(7) |
リセット日付 |
156 |
9C |
BINARY(4) |
保管サイズ |
160 |
A0 |
BINARY(4) |
保管順序番号 |
173 |
AD |
CHAR(10) |
記憶域 |
186 |
BA |
CHAR(10) |
保管コマンド |
199 |
C7 |
CHAR(71) |
保管ボリュームID |
206 |
CE |
CHAR(10) |
保管装置 |
212 |
D4 |
CHAR(10) |
保管ファイル名 |
216 |
D8 |
CHAR(10) |
保管ファイル・ライブラリー名 |
223 |
DF |
CHAR(17) |
保管ラベル |
230 |
E6 |
CHAR(9) |
システム・レベル |
232 |
E8 |
CHAR(16) |
コンパイラー |
236 |
EC |
CHAR(8) |
オブジェクト・レベル |
240 |
F0 |
CHAR(1) |
ユーザーの変更 |
244 |
F4 |
CHAR(16) |
ライセンス・プログラム |
248 |
F8 |
CHAR(10) |
プログラム一時修正(PTF) |
252 |
FC |
CHAR(10) |
プログラム診断依頼書(APAR) |
■ MBRD0300 形式
| オフセット | タイプ | フィールド | |
|---|---|---|---|
| 10進数 | 16進数 | ||
0 |
0 |
OBJD0200 形式からのすべての情報 |
|
266 |
10A |
CHAR(1) |
結合メンバー |
267 |
10B |
CHAR(1) |
アクセス・パスの保守 |
268 |
10C |
CHAR(10) |
SQL ファイル・タイプ |
278 |
116 |
CHAR(1) |
予約済み |
279 |
117 |
CHAR(1) |
読み取り操作の許可 |
280 |
118 |
CHAR(1) |
書き出し操作の許可 |
281 |
119 |
CHAR(1) |
更新操作の許可 |
282 |
11A |
CHAR(1) |
削除操作の許可 |
283 |
11B |
CHAR(1) |
予約済み |
284 |
11C |
BIBARY(4) |
書出しの置換えを行なうレコード |
288 |
120 |
BIBARY(4) |
削除レコードの許容最大パーセント |
292 |
124 |
BIBARY(4) |
レコードの初期数 |
296 |
128 |
BIBARY(4) |
レコードの増分数 |
300 |
12C |
BIBARY(4) |
増分の最大数 |
304 |
130 |
BIBARY(4) |
増分の現行数 |
308 |
134 |
BIBARY(4) |
レコード容量 |
312 |
138 |
CHAR(10) |
レコード様式選択プログラム |
322 |
142 |
CHAR(10) |
ライブラリー |
332 |
14C |
BIBARY(4) |
制約索引の数 |
334 |
14E |
BIBARY(4) |
制約索引情報までのオフセット |
338 |
153 |
CHAR(46) |
予約済み |
384 |
180 |
CHAR(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*----------------------------------------------------+
によってエラー・メッセージが出力されるように対処している。
この例はサンプルとはいえ十分なエラー・モニターも行なわれているのである。
