DFUを最後に生成するときに次のようにDSPFの保管を指定すると
DSPFソースを生成してくれる。
_
DFU プログラム定義の終了 選択項目を入力して,実行キーを押してください。 プログラムの保管 . . . . . . . Y Y=YES, N=NO プログラムの実行 . . . . . . . Y Y=YES, N=NO 選択項目 Y=YES の場合 実行のタイプ . . . . . . . 1 1= 変更, 2= 表示 プログラムの変更 . . . . . . . N Y=YES, N=NO DDS ソースの保管 . . . . . . . Y Y=YES, N=NO プログラムの保管 Y=YES の場合 プログラム . . . . . . . . . @HINSHU 名前 ライブラリー . . . . . . . QTROBJ 名前, *CURLIB, . . . 権限 . . . . . . . . . . . . *CHANGE 名前, *LIBCRTAUT, . . . テキスト . . . . . . . . . . @HINSHU DDS ソースの保管 Y=YES の場合 ソース・ファイル . . . . . . QDSPSRC 名前 ライブラリー . . . . . . . QTRSRC 名前, *CURLIB, . . . ソース・メンバー . . . . . . @HINSHU 名前
[解説]
DSPFソース・ファイルの名前だけでなく必ずDDS ソースの保管も併せて Yに指定しないと
DDSソースは生成されない。
生成されたDSPFソースは次のとおりです。
[DFUによって生成されたDSPFソースの例]
0001.00 A*%%TS SD 20240427 102752 QTR REL-V7R1M0 5770-WDS 0002.00 A*%%EC 0003.00 A DSPSIZ(24 80 *DS3) 0004.00 A PRINT 0005.00 A HELP 0006.00 A HLPSCHIDX(*LIBL/QHPW1) 0007.00 A ALTHELP 0008.00 A HLPTITLE(' データ入力画面 ') 0009.00 A HLPPNLGRP('DFU/DESL/GEN' QHDZDF1) 0010.00 A R B100000 SFL 0011.00 A*%%TS SD 20240427 102752 QTR REL-V7R1M0 5770-WDS 0012.00 A CHANGE(01) 0013.00 A SETOF(02) 0014.00 A SETOF(03) 0015.00 A SETOF(04) 0016.00 A SETOF(05) 0017.00 A SETOF(06) 0018.00 A SETOF(07) 0019.00 A SETOF(08) 0020.00 A SETOF(09) 0021.00 A SETOF(10) 0022.00 A SETOF(11) 0023.00 A SETOF(12) 0024.00 A SETOF(13) 0025.00 A SETOF(14) 0026.00 A SETOF(15) 0027.00 A SETOF(16) 0028.00 A SETOF(17) 0029.00 A SETOF(18) 0030.00 A SETOF(19) 0031.00 A SETOF(20) 0032.00 A SETOF(21) 0033.00 A SETOF(22) 0034.00 A SETOF(23) 0035.00 A SETOF(24) 0036.00 A SETOF(25) 0037.00 A SETOF(30) 0038.00 A SETOF(31) 0039.00 A SETOF(32) 0040.00 A SETOF(33) 0041.00 A SETOF(34) 0042.00 A SETOF(35) 0043.00 A SETOF(36) 0044.00 A SETOF(37) 0045.00 A SETOF(38) 0046.00 A SETOF(39) 0047.00 A SETOF(40) 0048.00 A SETOF(41) 0049.00 A SETOF(42) 0050.00 A SETOF(43) 0051.00 A SETOF(44) 0052.00 A SETOF(45) 0053.00 A SETOF(46) 0054.00 A SETOF(47) 0055.00 A SETOF(48) 0056.00 A SETOF(49) 0057.00 A SETOF(50) 0058.00 A SETOF(51) 0059.00 A SETOF(52) 0060.00 A SETOF(53) 0061.00 A SETOF(54) 0062.00 A SETOF(55) 0063.00 A SETOF(56) 0064.00 A SETOF(57) 0065.00 A SETOF(58) 0066.00 A SETOF(59) 0067.00 A SETOF(60) 0068.00 A SETOF(61) 0069.00 A SETOF(62) 0070.00 A SETOF(63) 0071.00 A SETOF(64) 0072.00 A SETOF(65) 0073.00 A SETOF(66) 0074.00 A SETOF(67) 0075.00 A SETOF(68) 0076.00 A SETOF(69) 0077.00 A SETOF(70) 0078.00 A SETOF(71) 0079.00 A SETOF(72) 0080.00 A SETOF(73) 0081.00 A SETOF(74) 0082.00 A SETOF(75) 0083.00 A SETOF(76) 0084.00 A SETOF(77) 0085.00 A SETOF(78) 0086.00 A SETOF(79) 0087.00 A SETOF(80) 0088.00 A SETOF(81) 0089.00 A SETOF(82) 0090.00 A SETOF(83) 0091.00 A SETOF(84) 0092.00 A SETOF(85) 0093.00 A SETOF(86) 0094.00 A SETOF(87) 0095.00 A SETOF(88) 0096.00 A SETOF(89) 0097.00 A SETOF(90) 0098.00 A SETOF(91) 0099.00 A SETOF(92) 0100.00 A SETOF(93) 0101.00 A SETOF(94) 0102.00 A SETOF(95) 0103.00 A SETOF(96) 0104.00 A SETOF(97) 0105.00 A SETOF(98) 0106.00 A SETOF(99) 0107.00 A 01 SFLNXTCHG 0108.00 A 4 2' 商品コード :' 0109.00 A N16 DSPATR(HI) 0110.00 A N04 DSPATR(ND) 0111.00 A B100000000 10A B 4 16CHGINPDFT 0112.00 A CHECK(FE) 0113.00 A 08 DSPATR(RI) 0114.00 A N04 DSPATR(ND) 0115.00 A 22 DSPATR(PR) 0116.00 A N22 DSPATR(UL) 0117.00 A 26N22 DSPATR(PC) 0118.00 A CHANGE(26) 0119.00 A 09 DUP(02) 0120.00 A 23 DSPATR(HI) 0121.00 A 05 06N21 CHECK(ER) 0122.00 A 5 2' 商品名 :' 0123.00 A 24 17 DSPATR(HI) 0124.00 A N17 DSPATR(ND) 0125.00 A B100000001 24O B 5 16CHGINPDFT 0126.00 A CHECK(FE) 0127.00 A 03 DSPATR(RI) 0128.00 A N17 DSPATR(ND) 0129.00 A N19 DSPATR(PR) 0130.00 A 19 DSPATR(UL) 0131.00 A 27 19 DSPATR(PC) 0132.00 A CHANGE(27) 0133.00 A 09 DUP(02) 0134.00 A 23 17 DSPATR(HI) 0135.00 A 6 2' 単価 :' 0136.00 A 24 17 DSPATR(HI) 0137.00 A N17 DSPATR(ND) 0138.00 A B100000002 7S 0B 6 16CHGINPDFT 0139.00 A CHECK(RB) 0140.00 A 03 DSPATR(RI) 0141.00 A N17 DSPATR(ND) 0142.00 A N19 DSPATR(PR) 0143.00 A 19 DSPATR(UL) 0144.00 A 28 19 DSPATR(PC) 0145.00 A CHANGE(28) 0146.00 A 09 DUP(02) 0147.00 A 23 17 DSPATR(HI) 0148.00 A 7 2' 品種コード :' 0149.00 A 24 17 DSPATR(HI) 0150.00 A N17 DSPATR(ND) 0151.00 A B100000003 4A B 7 16CHGINPDFT 0152.00 A CHECK(FE) 0153.00 A 03 DSPATR(RI) 0154.00 A N17 DSPATR(ND) 0155.00 A N19 DSPATR(PR) 0156.00 A 19 DSPATR(UL) 0157.00 A 29 19 DSPATR(PC) 0158.00 A CHANGE(29) 0159.00 A 09 DUP(02) 0160.00 A 23 17 DSPATR(HI) 0161.00 A 05 06 02 0162.00 AO 05 06 12 CHECK(ER) 0163.00 A ' ' 0164.00 A R C100000 SFLCTL(B100000) 0165.00 A*%%TS SD 20240427 102752 QTR REL-V7R1M0 5770-WDS 0166.00 A BLINK 0167.00 A CHANGE(27) 0168.00 A SETOF(01) 0169.00 A 02 CF02(02) 0170.00 A 03 CA03(03) 0171.00 A 04 CF04(04) 0172.00 A 05 CA05(05) 0173.00 A 06 CA06(06) 0174.00 A 07 CF07(07) 0175.00 A 08 CF08(08) 0176.00 A 09 CF09(09) 0177.00 A 10 CF10(10) 0178.00 A 11 CF11(11) 0179.00 A 12 CF12(12) 0180.00 A 13 CF13(13) 0181.00 A 14 CF14(14) 0182.00 A 15 CF15(15) 0183.00 A 16 CF16(16) 0184.00 A 17 CF17(17) 0185.00 A 18 CF18(18) 0186.00 A 19 CF19(19) 0187.00 A 20 CF20(20) 0188.00 A 21 CF21(21) 0189.00 A 22 CA22(22) 0190.00 A 23 CF23(23) 0191.00 A 24 CF24(24) 0192.00 A 25 PAGEDOWN(25) 0193.00 A 26 PAGEUP(26) 0194.00 A 33 HOME(33) 0195.00 A SETOF(29) 0196.00 A SETOF(30) 0197.00 A SETOF(31) 0198.00 A SETOF(32) 0199.00 A SETOF(34) 0200.00 A SETOF(35) 0201.00 A SFLSIZ(0001) 0202.00 A SFLPAG(0001) 0203.00 A 30 SFLDSPCTL 0204.00 A 28 SFLDSP 0205.00 A 27 SFLCLR 0206.00 A 31 SFLINZ 0207.00 A 29 SFLDLT 0208.00 A 32 LOCK 0209.00 A H HLPPNLGRP('DFU/DESL/TIMO' QHDZDF1) 0210.00 A HLPARA(01 001 01 080) 0211.00 A H HLPPNLGRP('DFU/DESL/FOFI' QHDZDF1) 0212.00 A HLPARA(02 001 02 080) 0213.00 A H HLPPNLGRP('DFU/DESL/FKEY' QHDZDF1) 0214.00 A HLPARA(22 001 23 080) 0215.00 A 1 2'@SHOHIN 0216.00 A ' 0217.00 A 1 49' モード . . :' 0218.00 A C1000005 14A O 1 66 0219.00 A 2 2' 様式 . . . . :' 0220.00 A C1000007 10A B 2 21 0221.00 A 42 DSPATR(PC) 0222.00 A 42 DSPATR(RI) 0223.00 A CHANGE(28) 0224.00 A 2 49' ファイル . :' 0225.00 A C1000012 10A O 2 66 0226.00 A R ERRMSG SFL 0227.00 A*%%TS SD 20240427 102752 QTR REL-V7R1M0 5770-WDS 0228.00 A SFLMSGRCD(24) 0229.00 A DUMMY1 SFLMSGKEY 0230.00 A DUMMY2 SFLPGMQ(10) 0231.00 A R ERRCTL SFLCTL(ERRMSG) 0232.00 A*%%TS SD 20240427 102752 QTR REL-V7R1M0 5770-WDS 0233.00 A OVERLAY 0234.00 A BLINK 0235.00 A SETOF(01) 0236.00 A 02 CF02(02) 0237.00 A 03 CA03(03) 0238.00 A 04 CF04(04) 0239.00 A 05 CA05(05) 0240.00 A 06 CA06(06) 0241.00 A 07 CF07(07) 0242.00 A 08 CF08(08) 0243.00 A 09 CF09(09) 0244.00 A 10 CF10(10) 0245.00 A 11 CF11(11) 0246.00 A 12 CF12(12) 0247.00 A 13 CF13(13) 0248.00 A 14 CF14(14) 0249.00 A 15 CF15(15) 0250.00 A 16 CF16(16) 0251.00 A 17 CF17(17) 0252.00 A 18 CF18(18) 0253.00 A 19 CF19(19) 0254.00 A 20 CF20(20) 0255.00 A 21 CF21(21) 0256.00 A 22 CA22(22) 0257.00 A 23 CF23(23) 0258.00 A 24 CF24(24) 0259.00 A 25 PAGEDOWN(25) 0260.00 A 26 PAGEUP(26) 0261.00 A 33 HOME(33) 0262.00 A SETOF(27) 0263.00 A SETOF(28) 0264.00 A SETOF(29) 0265.00 A SETOF(30) 0266.00 A SETOF(31) 0267.00 A SETOF(32) 0268.00 A SETOF(34) 0269.00 A SETOF(35) 0270.00 A SFLSIZ(0020) 0271.00 A SFLPAG(0001) 0272.00 A 30 SFLDSPCTL 0273.00 A 28 SFLDSP 0274.00 A 27 SFLCLR 0275.00 A 31 SFLINZ 0276.00 A 29 SFLDLT 0277.00 A 32 LOCK 0278.00 A 34 SFLEND 0279.00 A MSGQ SFLPGMQ(10) 0280.00 A R FKEYS 0281.00 A*%%TS SD 20240427 102752 QTR REL-V7R1M0 5770-WDS 0282.00 A OVERLAY 0283.00 A BLINK 0284.00 A SETOF(01) 0285.00 A 02 CF02(02) 0286.00 A 03 CA03(03) 0287.00 A 04 CF04(04) 0288.00 A 05 CA05(05) 0289.00 A 06 CA06(06) 0290.00 A 07 CF07(07) 0291.00 A 08 CF08(08) 0292.00 A 09 CF09(09) 0293.00 A 10 CF10(10) 0294.00 A 11 CF11(11) 0295.00 A 12 CF12(12) 0296.00 A 13 CF13(13) 0297.00 A 14 CF14(14) 0298.00 A 15 CF15(15) 0299.00 A 16 CF16(16) 0300.00 A 17 CF17(17) 0301.00 A 18 CF18(18) 0302.00 A 19 CF19(19) 0303.00 A 20 CF20(20) 0304.00 A 21 CF21(21) 0305.00 A 22 CA22(22) 0306.00 A 23 CF23(23) 0307.00 A 24 CF24(24) 0308.00 A 25 PAGEDOWN(25) 0309.00 A 26 PAGEUP(26) 0310.00 A 33 HOME(33) 0311.00 A SETOF(29) 0312.00 A SETOF(30) 0313.00 A SETOF(31) 0314.00 A SETOF(32) 0315.00 A SETOF(34) 0316.00 A SETOF(35) 0317.00 A 32 LOCK 0318.00 A 22 2'F3= 終了 F5= 最新 + 0319.00 A 表示 F6= 様式の選択 - 0320.00 A ' 0321.00 A COLOR(BLU) 0322.00 A 23 2'F9= 挿入 F10= 入力 - 0323.00 A F11= 変更 - 0324.00 A ' 0325.00 A COLOR(BLU) 0326.00 A 48 DSPATR(ND)
[解説]
全体の構成は次のようになっている。
_
表示レコード | 内容 | 説明 |
---|---|---|
R B100000 | SFLレード | すべての表示画面を表示するレコード |
R C100000 | SFLCTL(B100000) | B100000 の SFLコントロール |
R ERRMSG | ERRMSG | SFLPGMQ のエラー・メッセージSFLレコード |
R ERRCTL | SFLCTL(ERRMSG) | ERRMSG のSFLコントロール |
R FKEYS | 機能キー | すべての機能キーの表示 |
特徴としてすべての表示を同じSFLレコード(B100000)で初期画面も明細画面も
共通してこのSFLレコードだけで行っている。
初期画面も実はこのSFLレコードであり明細画面も同じSFLレコードである。
それぞれの場面で DSPATR(ND) によって制御している。
初期画面では標識17がOFFであるので明細のフィールドは表示されない。
しかし明細画面では標識17を ON にして残りのフィールドすべてを表示する。
ただし誤りがひとつあってSFLCTL C100000 には OVERLAYキー・ワードが
抜けている。恐らくDFUの実行時には内部処理として 強制的に OVERLAYを
行っているのであろうが RPG ではこのままでは正しく表示されない。
また特徴的であるのはエラー・メッセージの出力に ERRMSG や SFLMSGキー・ワードではなく
PGMMSGQ というSFLメッセージを採用していることである。
PGMMSGQ は複数のメッセージを同時に表示してメッセージをスクロールして
表示することができるのだが使い方が難しくてあまり普及していない。
このサイトでは PGMMSGQ の使い方の紹介を予定しているがほとんどの紹介サイトは
誤りでそれらを参考にしても PGMMSGQ は動作しない。
それは紹介している本人が実際は実現できていないのにマニュアルだけを読んで
こうすれば動作するはずだとして公開しているのがほとんどだからである。
DFUでPGMMSGQを使っているのはIBM製品として最も高度な機能を盛り込みたかったのだろうと
推測している。
しかし感心できないのは
0201.00 A SFLSIZ(0001) 0202.00 A SFLPAG(0001)
の部分である。せっかくSFLを使っているのにSFLSIZとSFLPAGを同じ数値に定義して
しまっているのでSFLの自動拡張機能が使えていない。
つまり ROLLUPの機能だけでなく ROLLDWNの機能も記述しなければならず
無駄な記述とパフォーマンスの低下を招いてしまう。
もうひとつ SFLRCDNBR が定義されていないことである。
例えば
A DSPREC 4S 0H SFLRCDNBR(CURSOR)
のように表示したい SFLレコードを特定して表示するには SFLRCDNBR が
必要となる。
DFUを作った開発者はSFLのことを周知していなかったと思われる。
DFUが生成したDSPFソースはどのようなものかを理解して頂けたと思う。