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ソースはどのようなものかを理解して頂けたと思う。
