印刷ファイル( PRTF ) の属性を調べるコマンド( RTVPRTFA = Retrieve PRTF Attribute ) を
紹介する。
画面装置ファイルの属性を取得する API ( QDFRTVFD ) や データ・ベース・ファイルの
属性を取得する API ( QDBRTVFD ) は存在しているが、印刷ファイル( PRTF ) の属性を
取得する API ( QDFRPRTA ) が登場するのは OS:Ver6.1 になってからのことである。
しかも残念ながら、この API もまだ完全には正しく動作していないのと、
古い OS リリースでは、この API は存在していない。
( API の場合は公開されていなくても古いリリースでも存在している場合がある。)
印刷 ファイル(PRTF) の属性を調べるコマンド( RTVPRTFA ) は実はライブラリーQUSRTOOL の中で
サンプルとして提供されていたのだが V3R6M0 で廃止されてしまっていて今では
入手することはできない。
米国の BBS でも「誰か RTVPRTFA のソースを持っていませんか ?」の呼びかけがあるが
応答は依然としてない。
RTVPRTFA コマンドを実際に作ろうと思えば
DSPFD FILE(QGPL/QPRINT) TYPE(*ATR) OUTPUT(*OUTFILE) FILEATR(*PRTF) OUTFILE((QTEMP/DSPFD)
のようにして PRTF の属性を QTEMP に出力して、このファイルを解析する、という単純な手法で
実現できることは容易に想像はつくものの数多くの面倒な作業が待っているので
誰もやりたがらない、というのが現実だろう。
そこで、ここでは敢えてこの方法で 印刷ファイル(PRTF) の属性を取得するコマンド: RTVPRTFA を
この方法で記述したものを紹介する。
----------------------------------------------------------------------------------
0001.00 CMD PROMPT(' 印刷ファイル属性の検索 ')
0002.00 PARM KWD(PRTF) TYPE(PRTF) +
0003.00 PROMPT(' 印刷ファイル ')
0004.00 PRTF: QUAL TYPE(*NAME) LEN(10) MIN(1)
0005.00 QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) +
0006.00 SPCVAL((*LIBL) (*CURLIB)) +
0007.00 PROMPT(' ライブラリー ')
0008.00 PARM KWD(RTNLIB) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
0009.00 PROMPT(' ライブラリー ')
0010.00 PARM KWD(WAITFILE) TYPE(*CHAR) LEN(6) +
0011.00 RTNVAL(*YES) PROMPT(' 最大ファイル待機時間 ')
0012.00 PARM KWD(SHARE) TYPE(*CHAR) LEN(4) RTNVAL(*YES) +
0013.00 PROMPT(' オープン・データ・パス共用 ')
0014.00 PARM KWD(LVLCHK) TYPE(*CHAR) LEN(4) RTNVAL(*YES) +
0015.00 PROMPT(' レコード様式レベルの検査 ')
0016.00 PARM KWD(CRTDAT) TYPE(*CHAR) LEN(6) RTNVAL(*YES) +
0017.00 PROMPT(' 作成日 ')
0018.00 PARM KWD(CRTTIM) TYPE(*CHAR) LEN(6) RTNVAL(*YES) +
0019.00 PROMPT(' 作成時刻 ')
0020.00 PARM KWD(NBRFMTS) TYPE(*DEC) LEN(5 0) +
0021.00 RTNVAL(*YES) PROMPT(' レコード様式の数 ')
0022.00 PARM KWD(FLDLVL) TYPE(*CHAR) LEN(1) RTNVAL(*YES) +
0023.00 PROMPT(' フィールド・レベル ')
024.00 PARM KWD(DEV) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
025.00 PROMPT(' 装置 ')
026.00 PARM KWD(MAXDEV) TYPE(*DEC) LEN(3 0) RTNVAL(*YES) +
027.00 PROMPT(' 装置の最大数 ')
028.00 PARM KWD(SPOOL) TYPE(*CHAR) LEN(4) RTNVAL(*YES) +
029.00 PROMPT(' データのスプール ')
030.00 PARM KWD(FOLD) TYPE(*CHAR) LEN(4) RTNVAL(*YES) +
031.00 PROMPT(' レコードの折り返し ')
032.00 PARM KWD(RPLUNPRT) TYPE(*CHAR) LEN(4) +
033.00 RTNVAL(*YES) PROMPT(' 印刷不能文字の処置 ')
034.00 PARM KWD(RPLUNPRTC) TYPE(*CHAR) LEN(2) +
035.00 RTNVAL(*YES) PROMPT(' 置換え文字 ')
036.00 PARM KWD(CPI) TYPE(*DEC) LEN(3 1) RTNVAL(*YES) +
037.00 PROMPT('1 インチ当たりの文字数 ')
038.00 PARM KWD(LPI) TYPE(*DEC) LEN(3 1) RTNVAL(*YES) +
039.00 PROMPT(' 行/インチ ')
040.00 PARM KWD(ALIGN) TYPE(*CHAR) LEN(4) RTNVAL(*YES) +
041.00 PROMPT(' ページの位置合わせ ')
042.00 PARM KWD(DEVTYPE) TYPE(*CHAR) LEN(10) +
043.00 RTNVAL(*YES) PROMPT(' 印刷装置タイプ ')
044.00 PARM KWD(PAGLEN) TYPE(*DEC) LEN(3 0) RTNVAL(*YES) +
045.00 PROMPT(' 長さ -- 1 ページ当たりの行数 ')
046.00 PARM KWD(PAGWTH) TYPE(*DEC) LEN(3 0) RTNVAL(*YES) +
047.00 PROMPT(' 幅 -- 1 行当たりの文字数 ')
0048.00 PARM KWD(OVERFLOW) TYPE(*DEC) LEN(3 0) +
0049.00 RTNVAL(*YES) PROMPT(' オーバーフロー行番号 ')
0050.00 PARM KWD(PAGRTT) TYPE(*CHAR) LEN(5) RTNVAL(*YES) +
0051.00 PROMPT(' ページ回転度数 ')
0052.00 PARM KWD(PRTTXT) TYPE(*CHAR) LEN(30) RTNVAL(*YES) +
0053.00 PROMPT(' 印刷テキスト ')
0054.00 PARM KWD(JUSTIFY) TYPE(*CHAR) LEN(3) RTNVAL(*YES) +
0055.00 PROMPT(' ハードウェア位置調整 ')
0056.00 PARM KWD(CTLCHAR) TYPE(*CHAR) LEN(5) RTNVAL(*YES) +
0057.00 PROMPT(' 制御文字 ')
0058.00 PARM KWD(PRTQLTY) TYPE(*CHAR) LEN(6) RTNVAL(*YES) +
0059.00 PROMPT(' 印刷品質 ')
0060.00 PARM KWD(FORMFEED) TYPE(*CHAR) LEN(8) +
0061.00 RTNVAL(*YES) PROMPT(' 用紙送り ')
0062.00 PARM KWD(DRAWER) TYPE(*CHAR) LEN(8) RTNVAL(*YES) +
0063.00 PROMPT(' ソース用紙入れ ')
0064.00 PARM KWD(FONT) TYPE(*CHAR) LEN(10) RTNVAL(*YES) +
0065.00 PROMPT(' フォント ')
0066.00 PARM KWD(GRPCHRSET) TYPE(*CHAR) LEN(10) +
0067.00 RTNVAL(*YES) PROMPT(' グラフ文字セット ')
0068.00 PARM KWD(CODEPAGE) TYPE(*CHAR) LEN(10) +
0069.00 RTNVAL(*YES) PROMPT(' コード・ページ ')
0070.00 PARM KWD(DUPLEX) TYPE(*CHAR) LEN(7) RTNVAL(*YES) +
0071.00 PROMPT(' 両面印刷 ')
0072.00 PARM KWD(MULTIUP) TYPE(*DEC) LEN(2 0) +
0073.00 RTNVAL(*YES) PROMPT(' 面当たりページ数 ')
0074.00 PARM KWD(UOM) TYPE(*CHAR) LEN(5) RTNVAL(*YES) +
0075.00 PROMPT(' 単位 ')
0076.00 PARM KWD(DECFMT) TYPE(*CHAR) LEN(5) RTNVAL(*YES) +
0077.00 PROMPT('10 進数形式 ')
0078.00 PARM KWD(REDUCE) TYPE(*CHAR) LEN(5) RTNVAL(*YES) +
0079.00 PROMPT(' 出力の減少 ')
0080.00 PARM KWD(TBLREFCHR) TYPE(*CHAR) LEN(4) +
0081.00 RTNVAL(*YES) PROMPT(' テーブル参照文字 ')
0082.00 PARM KWD(CCSID) TYPE(*DEC) LEN(5 0) RTNVAL(*YES) +
0083.00 PROMPT(CCSID)
0084.00 PARM KWD(TEXT) TYPE(*CHAR) LEN(50) RTNVAL(*YES) +
0085.00 PROMPT(' テキスト ')
----------------------------------------------------------------------------------
CRTCMD CMD(MYLIB/RTVPRTFA) PGM(MYLIB/RTVPRTFACL) SRCFILE(PGMRLIB/QCMDSRC)
ALLOW(*BPGM *IPGM) AUT(*ALL)
------------------------------------------------------------------------------------
0001.00 PGM PARM(&PRTFFLIB &RTNLIB &WAITFILE &SHARE +
0002.00 &LVLCHK &CRTDAT &CRTTIM &NBRFMTS &FLDLVL +
0003.00 &DEV &MAXDEV &SPOOL &FOLD &RPLUNPRT +
0004.00 &RPLUNPRTC &CPI &LPI &ALIGN &DEVTYPE +
0005.00 &PAGLEN &PAGWTH &OVERFLOW &PAGRTT &PRTTXE +
0006.00 &JUSTIFY &CTLCHAR &PRTQLTY &FORMFEED +
0007.00 &DRAWER &FONT &GRPCHRSET &CODEPAGE +
0008.00 &DUPLEX &MULTIUP &UOM &DECFMT &REDUCE +
0009.00 &TBLREFCHR &CCSID &TEXT)
0010.00 /*---------------------------------------------------------*/
0011.00 /* RTVPRTFA : 印刷ファイル属性の検索 */
0012.00 /*---------------------------------------------------------*/
0013.00 DCL VAR(&PRTFFLIB) TYPE(*CHAR) LEN(20)
0014.00 DCL VAR(&PRTF) TYPE(*CHAR) LEN(10)
0015.00 DCL VAR(&PRTFLIB) TYPE(*CHAR) LEN(10)
0016.00 DCL VAR(&RTNLIB) TYPE(*CHAR) LEN(10)
0017.00 DCL VAR(&RTBLIB) TYPE(*CHAR) LEN(10)
0018.00 DCL VAR(&WAITFILE) TYPE(*DEC) LEN(5 0)
0019.00 DCL VAR(&SHARE) TYPE(*CHAR) LEN(4)
0020.00 DCL VAR(&LVLCHK) TYPE(*CHAR) LEN(4)
0021.00 DCL VAR(&CRTDAT) TYPE(*CHAR) LEN(6)
0022.00 DCL VAR(&CRTTIM) TYPE(*CHAR) LEN(6)
0023.00 DCL VAR(&NBRFMTS) TYPE(*DEC) LEN(5 0)
0024.00 DCL VAR(&FLDLVL) TYPE(*CHAR) LEN(1)
0025.00 DCL VAR(&DEV) TYPE(*CHAR) LEN(10)
0026.00 DCL VAR(&MAXDEV) TYPE(*DEC) LEN(3 0)
0027.00 DCL VAR(&SPOOL) TYPE(*CHAR) LEN(4)
0028.00 DCL VAR(&FOLD) TYPE(*CHAR) LEN(4)
0029.00 DCL VAR(&RPLUNPRT) TYPE(*CHAR) LEN(4)
0030.00 DCL VAR(&RPLUNPRTC) TYPE(*CHAR) LEN(2)
0031.00 DCL VAR(&CPI) TYPE(*DEC) LEN(3 1)
0032.00 DCL VAR(&LPI) TYPE(*DEC) LEN(3 1)
0033.00 DCL VAR(&ALIGN) TYPE(*CHAR) LEN(4)
0034.00 DCL VAR(&DEVTYPE) TYPE(*CHAR) LEN(10)
0035.00 DCL VAR(&PAGLEN) TYPE(*DEC) LEN(3 0)
0036.00 DCL VAR(&PAGWTH) TYPE(*DEC) LEN(3 0)
0037.00 DCL VAR(&OVERFLOW) TYPE(*DEC) LEN(3 0)
0038.00 DCL VAR(&PAGRTT) TYPE(*CHAR) LEN(5)
0039.00 DCL VAR(&PRTTXE) TYPE(*CHAR) LEN(30)
0040.00 DCL VAR(&JUSTIFY) TYPE(*CHAR) LEN(3)
0041.00 DCL VAR(&CTLCHAR) TYPE(*CHAR) LEN(5)
0042.00 DCL VAR(&PRTQLTY) TYPE(*CHAR) LEN(5)
0043.00 DCL VAR(&FORMFEED) TYPE(*CHAR) LEN(8)
0044.00 DCL VAR(&DRAWER) TYPE(*CHAR) LEN(8)
0045.00 DCL VAR(&FONT) TYPE(*CHAR) LEN(10)
0046.00 DCL VAR(&GRPCHRSET) TYPE(*CHAR) LEN(10)
0047.00 DCL VAR(&CODEPAGE) TYPE(*CHAR) LEN(10)
0048.00 DCL VAR(&DUPLEX) TYPE(*CHAR) LEN(7)
0049.00 DCL VAR(&MULTIUP) TYPE(*DEC) LEN(2 0)
0050.00 DCL VAR(&UOM) TYPE(*CHAR) LEN(5)
0051.00 DCL VAR(&DECFMT) TYPE(*CHAR) LEN(5)
0052.00 DCL VAR(&REDUCE) TYPE(*CHAR) LEN(5)
0053.00 DCL VAR(&TBLREFCHR) TYPE(*CHAR) LEN(4)
0054.00 DCL VAR(&TEXT) TYPE(*CHAR) LEN(50)
0055.00 DCL VAR(&TYPE) TYPE(*CHAR) LEN(1)
0056.00 DCL VAR(&MSG) TYPE(*CHAR) LEN(80)
0057.00 DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
0058.00 DCL VAR(&MSGF) TYPE(*CHAR) LEN(10)
0059.00 DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)
0060.00 DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(132)
0061.00 DCL VAR(&MSGKEY) TYPE(*CHAR) LEN(4)
0062.00 DCL VAR(&CCSID) TYPE(*DEC) LEN(5 0)
0063.00 DCL VAR(&PRDFMT) TYPE(*CHAR) LEN(1)
0064.00 DCL VAR(&PRCSID) TYPE(*DEC) LEN(5 0)
0065.00 DCLF FILE(QTEMP/DSPFD)
0066.00 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR))
0067.00 MONMSG MSGID(MCH3601)
0068.00
0069.00 RTVJOBA TYPE(&TYPE)
0070.00 CHGVAR VAR(&PRTF) VALUE(%SST(&PRTFFLIB 01 10))
0071.00 CHGVAR VAR(&PRTFLIB) VALUE(%SST(&PRTFFLIB 11 10))
0072.00 DSPFD FILE(&PRTFLIB/&PRTF) TYPE(*ATR) +
0073.00 OUTPUT(*OUTFILE) FILEATR(*PRTF) +
0074.00 OUTFILE(QTEMP/DSPFD) OUTMBR(*FIRST *REPLACE)
0075.00 RCVF RCDFMT(QWHFDPRT)
0076.00 MONMSG MSGID(CPF0684) EXEC(GOTO CMDLBL(ERROR))
0077.00 CHGVAR VAR(&RTNLIB) VALUE(&PRLIB)
0078.00 CHGVAR VAR(&WAITFILE) VALUE(&PRWAIT)
0079.00 IF COND(&PRSHAR = 'Y') THEN(CHGVAR VAR(&SHARE) +
0080.00 VALUE('*YES'))
0081.00 ELSE CMD(CHGVAR VAR(&SHARE) VALUE('*NO '))
0082.00 IF COND(&PRLVLC = 'Y') THEN(CHGVAR VAR(&LVLCHK) +
0083.00 VALUE('*YES'))
0084.00 ELSE CMD(CHGVAR VAR(&LVLCHK) VALUE('*NO '))
0085.00 CHGVAR VAR(&CRTDAT) VALUE(&PRRDAT)
0086.00 CHGVAR VAR(&CRTTIM) VALUE(&PRRTIM)
0087.00 CHGVAR VAR(&NBRFMTS) VALUE(&PRNOFM)
0088.00 CHGVAR VAR(&DEV) VALUE(&PRAQDV)
0089.00 CHGVAR VAR(&MAXDEV) VALUE(&PRMXDV)
0090.00 CHGVAR VAR(&FLDLVL) VALUE(&PRFLS)
0091.00 IF COND(&PRSPOL = 'Y') THEN(CHGVAR VAR(&SPOOL) +
0092.00 VALUE('*YES'))
0093.00 ELSE CMD(CHGVAR VAR(&SPOOL) VALUE('*NO '))
0094.00 IF COND(&PRFOLD = 'Y') THEN(CHGVAR VAR(&FOLD) +
0095.00 VALUE('*YES'))
0096.00 ELSE CMD(CHGVAR VAR(&FOLD) VALUE('*NO '))
0097.00 IF COND(&PRRPLU = 'Y') THEN(CHGVAR +
0098.00 VAR(&RPLUNPRT) VALUE('*YES'))
0099.00 ELSE CMD(CHGVAR VAR(&RPLUNPRT) VALUE('*NO '))
0100.00 CHGVAR VAR(&RPLUNPRTC) VALUE(&PRRPUC)
0101.00 CHGVAR VAR(&CPI) VALUE(&PRCPI)
0102.00 CHGVAR VAR(&LPI) VALUE(&PRLPI)
0103.00 IF COND(&PRALGN = 'Y') THEN(CHGVAR VAR(&ALIGN) +
0104.00 VALUE('*YES'))
0105.00 ELSE CMD(CHGVAR VAR(&ALIGN) VALUE('*NO '))
0106.00 IF COND(&PRDEVT = '0') THEN(CHGVAR +
0107.00 VAR(&DEVTYPE) VALUE('*DEVD '))
0108.00 ELSE CMD(IF COND(&PRDEVT = '1') THEN(CHGVAR +
0109.00 VAR(&DEVTYPE) VALUE('*COR ')))
0110.00 ELSE CMD(IF COND(&PRDEVT = '2') THEN(CHGVAR +
0111.00 VAR(&DEVTYPE) VALUE('*AUT ')))
0112.00 CHGVAR VAR(&PAGLEN) VALUE(&PRFSZL)
0113.00 CHGVAR VAR(&PAGWTH) VALUE(&PRFSZW)
0114.00 CHGVAR VAR(&OVERFLOW) VALUE(&PROVRF)
0115.00 CHGVAR VAR(&PAGRTT) VALUE(&PRPGRT)
0116.00 CHGVAR VAR(&PRTTXE) VALUE(&PRTXT)
0117.00 CHGVAR VAR(&JUSTIFY) VALUE(&PRJUST)
0118.00 IF COND(&PRCTLC = 'N') THEN(CHGVAR +
0119.00 VAR(&CTLCHAR) VALUE('*NONE'))
0120.00 ELSE CMD(IF COND(&PRCTLC = 'F') THEN(CHGVAR +
0121.00 VAR(&CTLCHAR) VALUE('*FCFC')))
0122.00 ELSE CMD(IF COND(&PRCTLC = 'M') THEN(CHGVAR +
0123.00 VAR(&CTLCHAR) VALUE('*MACH')))
0124.00 IF COND(&PRQLTY = 'S') THEN(CHGVAR +
0125.00 VAR(&PRTQLTY) VALUE('*STD '))
0126.00 ELSE CMD(IF COND(&PRQLTY = 'D') THEN(CHGVAR +
0127.00 VAR(&PRTQLTY) VALUE('*DRAFT')))
0128.00 ELSE CMD(IF COND(&PRQLTY = 'N') THEN(CHGVAR +
0129.00 VAR(&PRTQLTY) VALUE('*NLQ ')))
0130.00 ELSE CMD(IF COND(&PRQLTY = 'F') THEN(CHGVAR +
0131.00 VAR(&PRTQLTY) VALUE('*FSTDR')))
0132.00 CHGVAR VAR(&FORMFEED) VALUE(&PRFMFD)
0133.00 CHGVAR VAR(&DRAWER) VALUE(&PRDRAW)
0134.00 CHGVAR VAR(&FONT) VALUE(&PRFCHS)
0135.00 IF COND(&PRCHST = 0) THEN(CHGVAR +
0136.00 VAR(&GRPCHRSET) VALUE('*DEVD '))
0137.00 ELSE CMD(IF COND(&PRCHST = 1) THEN(CHGVAR +
0138.00 VAR(&GRPCHRSET) VALUE('*SYSVAL ')))
0139.00 ELSE CMD(IF COND(&PRCHST = 2) THEN(CHGVAR +
0140.00 VAR(&GRPCHRSET) VALUE('*JOBCCSID ')))
0141.00 ELSE CMD(IF COND(&PRCHST = 3) THEN(CHGVAR +
0142.00 VAR(&GRPCHRSET) VALUE('*CHRIDCTL ')))
0143.00 IF COND(&PRCDPG = 0) THEN(CHGVAR VAR(&CODEPAGE) +
0144.00 VALUE('*DEVD '))
0145.00 ELSE CMD(IF COND(&PRCDPG = 1) THEN(CHGVAR +
0146.00 VAR(&CODEPAGE) VALUE('*SYSVAL ')))
0147.00 ELSE CMD(IF COND(&PRCDPG = 2) THEN(CHGVAR +
0148.00 VAR(&CODEPAGE) VALUE('*JOBCCSID ')))
0149.00 ELSE CMD(IF COND(&PRCDPG = 3) THEN(CHGVAR +
0150.00 VAR(&CODEPAGE) VALUE('*CHRIDCTL ')))
0151.00 IF COND(&PRDPLX = 'Y') THEN(CHGVAR VAR(&DUPLEX) +
0152.00 VALUE('*YES '))
0153.00 ELSE CMD(CHGVAR VAR(&DUPLEX) VALUE('*NO '))
0154.00 IF COND(&PRUNIT = 'I') THEN(CHGVAR VAR(&UOM) +
0155.00 VALUE('*INCH'))
0156.00 ELSE CMD(IF COND(&PRUNIT = 'C') THEN(CHGVAR +
0157.00 VAR(&UOM) VALUE('*CM ')))
0158.00 IF COND(&PRDFMT = 'J') THEN(CHGVAR VAR(&DECFMT) +
0159.00 VALUE('*JOB '))
0160.00 ELSE CMD(IF COND(&PRDFMT = 'F') THEN(CHGVAR +
0161.00 VAR(&DECFMT) VALUE('*FILE')))
0162.00 CHGVAR VAR(&MULTIUP) VALUE(&PRMULT)
0163.00 IF COND(&PRREDUC = 'T') THEN(CHGVAR +
0164.00 VAR(&REDUCE) VALUE('*TEXT'))
0165.00 ELSE CMD(IF COND(&PRREDUC = 'N') THEN(CHGVAR +
0166.00 VAR(&REDUCE) VALUE('*NONE')))
0167.00 IF COND(&PRTBRF = 'Y') THEN(CHGVAR +
0168.00 VAR(&TBLREFCHR) VALUE('*YES'))
0169.00 ELSE CMD(CHGVAR VAR(&TBLREFCHR) VALUE('*NO '))
0170.00 CHGVAR VAR(&CCSID) VALUE(&PRCSID)
0171.00 CHGVAR VAR(&TEXT) VALUE(&PRTXT)
0172.00 RETURN
0173.00
0174.00 ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) +
0175.00 MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) +
0176.00 MSGFLIB(&MSGFLIB)
0177.00 SNDMSG:
0178.00 IF COND(&MSGID *EQ ' ') THEN(DO)
0179.00 SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&MSG) +
0180.00 TOMSGQ(*TOPGMQ) MSGTYPE(*ESCAPE)
0181.00 ENDDO
0182.00 ELSE CMD(DO)
0183.00 SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
0184.00 MSGDTA(&MSGDTA) TOMSGQ(*TOPGMQ) +
0185.00 MSGTYPE(*ESCAPE)
0186.00 ENDDO
0187.00 ENDPGM
---------------------------------------------------------------------------------------------------
0065.00 DCLF FILE(QTEMP/DSPFD)
とファイル定義されているのでコンパイルの前には
DSPFD FILE(QGPL/QPRINT) TYPE(*ATR) OUTPUT(*OUTFILE) FILEATR(*PRTF) OUTFILE((QTEMP/DSPFD)
のようにして QTEMP/DSPFD を作成しておく必要がある。
その後で
CRTCLPGM PGM(MYLIB/PRTFACL) SRCFILE(PGMRLIB/QCLSRC) AUT(*ALL)
のようにしてコンバイルする。
コマンド RTVPRTFA は、次のように印刷ファイルの任意の属性を取得することができる。
例えば RTVPRTFA WAITFILE(&WAITFILE) のようにして待ち時間だけを取得することもできる。
しかし CLP: RTVPRTFACL の中では WAITFILE だけでなく他の多くのパラメータも処理しているが
エラーにならないのは、RTVPRTFACL での
0067.00 MONMSG MSGID(MCH3601)
の記述である。これは上位のプログラムが RTVPRTFA コマンドの参照していないパラメータを
CLP: RTVPRTFACL が処理しようとすると MCH3601 のポインター・エラーが発生する。
MONMSG MSGID(MCH3601) は MCH3601 のエラーが発生しても、無視して次のステップの処理に
進むことを意味している。
この MONMSG 記述によって任意のパラメータだけを指示することができるようになっているのである。
これもコマンドのひとつのテクニックとして覚えておいて頂きたい。
※ RTVPRTFA コマンドは Spoolライター Ver5.0 に実装を予定している。