- 论坛徽章:
- 0
|
使用RPG中的Subfile实现纪录的滚动显示
【转】使用RPG中的Subfile实现纪录的滚动显示。
一般的程序开发语言都能实现滚动显示,开发人员经常使用它来显示大量的信息,RPG也能实现这个功能,本文主要介绍RPG用subfile实现纪录的滚动显示。
Subfile是显示文件中的临时存储区,用subfile可以在一个画面上显示很多条信息,用subfile可以实现数据的输入、更新、查询。
下面举一个具体的例子来说明:
CODE:[Copy to clipboard]Columns . . . : 1 71 Browse CHINAUNIX/QDDSSRC
SEU==>; SQLSFLSRTD
FMT A* .....A*. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7
*************** Beginning of data *************************************
0000.10 A*%%TS SD 20041121 114503 CHINAUNIX REL-V5R1M0 5722-WDS
0000.20 A*%%EC
0000.30 A DSPSIZ(24 80 *DS3)
0000.40 A PRINT
0000.50 A ERRSFL
0000.60 A CA03
0000.70 A CA12
0000.80 A CF04
0000.90 A*
0001.00 A R SFL1
0001.10 A*%%TS SD 20041121 114503 CHINAUNIX REL-V5R1M0 5722-WDS
0001.20 A 1 3'PGM:SQLSFLSRTR'
0001.30 A 1 27'DYNAMIC'
0001.40 A 1 35'SORT'
0001.50 A 1 40'WITH'
0001.60 A 1 45'EMBEDDED'
0001.70 A 1 54'SQL'
0001.80 A 1 71'DD/DD/DD'
0001.90 A 2 3'DSPF:SQLSFLSRTD'
0002.00 A 2 71'TT:TT:TT'
0002.10 A 4 3'LAST'
0002.20 A 4 8'NAME'
0002.30 A 4 28'FIRST'
0002.40 A 4 34'NAME'
0002.50 A 4 52'MI'
0002.60 A 4 61'NICK'
0002.70 A 4 66'NAME'
0002.80 A*
0002.90 A R SF1CTL
0003.00 A*%%TS SD 20041121 114105 CHINAUNIX REL-V5R1M0 5722-WDS
0003.10 A OVERLAY
0003.20 A 4 2'LAST NAME'
0003.30 A DSPATR(HI)
0003.40 A 4 27'FIRST NAME'
0003.50 A DSPATR(HI)
0003.60 A 4 51'MI'
0003.70 A DSPATR(HI)
0003.80 A 4 60'NICK NAME'
0003.90 A DSPATR(HI)
0004.00 A 1 2'PGM:SQLSFLSRTR'
0004.10 A COLOR(GRN)
0004.20 A 2 2'DSPF:SQLSFLSRTD'
0004.30 A COLOR(GRN)
0004.40 A 1 26'DYNAMIC SORT WITH EMBEDDED
0004.50 A DSPATR(HI)
0004.60 A 1 70DATE
0004.70 A EDTCDE(Y)
0004.80 A 2 70TIME
0004.90 A R FKEY1
0005.00 A*%%TS SD 20041121 102735 CHINAUNIX REL-V5R1M0 5722-WDS
0005.10 A 23 2'F3=EXIT'
0005.20 A COLOR(BLU)
0005.30 A 23 12'F4=PROMPT'
0005.40 A COLOR(BLU)
0005.50 A 23 24'F12=CANCEL'
0005.60 A COLOR(BLU)
0005.70 A R WINDOW1
0005.80 A*%%TS SD 20041121 103159 CHINAUNIX REL-V5R1M0 5722-WDS
0005.90 A WINDOW(*DFT 11 25)
0006.00 A RMVWDW
0006.10 A TAB1 1A B 3 2
0006.20 A 3 5'LAST NAME'
0006.30 A TAB2 1A B 4 2
0006.40 A 4 5'FIRST NAME'
0006.50 A TAB3 1A B 5 2
0006.60 A 5 5'MIDDLE INITIAL'
0006.70 A TAB4 1A B 6 2
0006.80 A 6 5'NICK NAME'
0006.90 A 10 1'F3=EXIT'
0007.00 A COLOR(BLU)
0007.10 A 10 11'F12=CANCEL'
0007.20 A COLOR(BLU)
0007.30 A 1 3'SELECT A SORT FIELD'
****************** End of data ****************************************
F3=Exit F5=Refresh F9=Retrieve F10=Cursor F11=Toggle F12=Cancel
F16=Repeat find F24=More keys
这个DDS文件是一个显示文件,它由四个记录格式(record format)组成。
1. SFL1
2. SF1CTL
3. FKEY1
4. WINDOW1
这里的SFL1、SF1CTL控制了subfile的信息,subfile中常用的关键字有:
SFL,SFLCTL,SFLDSPCTL,SFLDSP,SFLSIZ,SFPAG,SFLEND,OVERLAY。
下面结合这个例子介绍它的含义。
1.SFL
SFL用于标示subfile的记录格式。
例如:这个记录格式中有四个字段,这四个字段分别是要显示的内容。它定义了在画面中的显示位置,
以及从哪个表中取出这些字段。
例如:
0006.00 A DBLNAM R O 5 2REFFLD(DBLNAM SQLSFLPF)
DBLNAM是表SQLSFLPF中的一个字段,它的现实位置为(5,2)
2.SFLCTL
它是一个记录级的关键字,它规定了记录格式是subfile的控制记录格式:
例如:
0011.00 A R SF1CTL SFLCTL(SFL1)
SFLCTL必须在SFL后出现。
SFL定义subfile中的记录格式,而SFLCTL定义如何显示、清除、删除和初始化subfile。
程序向SFL发送输出操作来建立subfile。程序也向SFLCTL发送输出操作,为各个subfile键字设置可选指示器,
来显示、清除、删除及初始化subfile。
3.SFLDSPCTL
它是一个记录级的关键字,用在SFL中,当程序向SFCTL发送输出操作时,OS/400程序显示SFLCTL中的字段。
如果此键字不使用可选指示器,在每次对子文件控制 记录格式所作的输出操作都要显示子文件控制记录。
为了控制哪些字段可以被显示或何时被显示,SFLDSPCTL通常和指示器一同使用。
例如:
0015.00 A N31 SFLDSPCTL
4.SFLDSP
它是一个记录级的关键字,它控制什么时候从subfile中取出一屏记录来进行显示,通常用指示器来控制何时进行显示。
例如:
0014.00 A N32 SFLDSP
注意:SFLDSPCTL和SFLDSP通常一起使用.
5.SFLSIZ
规定subfile中所准许的最大记录数,最大值为9999。
例如:
0012.00 A SFLSIZ(0050)
6.SFLPAG
规定每页上可以显示多少条记录。
例如
0012.00 A SFLPAG(0017)
7.SFLEND
它是记录层键字,用在SFLCTL中,允许在subfile翻卷条所在显示的右下方显示加号(+)或
标记(More…或Bottom)加号(+)或标记More…表示工作站用户可以通过按PageUp键来去掉标记,显示更多的记录。
例如:
0017.00 A 90 SFLEND(*MORE)
8.OVERLAY
规定在输入显示文件之前,不用将整个屏幕都删除。
执行结果如下:
CODE:[Copy to clipboard] DYNAMIC SORT WITH EMBEDDED SQL
PGM:SQLSFLSRTR 4-07-21
DSP:SQLSFLSRTR 14:54:24
LAST NAME FIRST NAME MI NICK NAME
100 100 1 100
101 101 1 101
102 102 1 102
103 103 1 103
104 104 1 104
105 105 1 105
106 106 1 106
107 107 1 107
108 108 1 108
109 109 1 109
201 201 1 201
202 202 1 202
203 203 1 203
204 204 1 204
205 205 1 205
206 206 1 206
207 207 1 207
More...
F3=EXIT F4=PROMPT F12=CANCEL
1)SDA编辑画面:
CODE:[Copy to clipboard] Work with Display Records
File . . . . . . : QDDSSRC Member . . . . . . : SQLSFLSRTD
Library . . . . : CHINAUNIX Source type . . . : DSPF
Type options, press Enter.
1=Add 2=Edit comments 3=Copy 4=Delete
7=Rename 8=Select keywords 12=Design image
Opt Order Record Type Related Subfile Date DDS Error
10 SFL1 RECORD 11/21/04
20 SF1CTL RECORD 11/21/04
30 FKEY1 RECORD 11/21/04
40 WINDOW1 WINDOW 11/21/04
Bottom
F3=Exit F12=Cancel F14=File-level keywords
F15=File-level comments F17=Subset F24=More keys
(C) COPYRIGHT IBM CORP. 1981, 2000.
2)通过F4键所调出的选择画面:
CODE:[Copy to clipboard]
............................................
: SELECT A SORT FIELD :
: :
: B LAST NAME :
: B FIRST NAME :
: B MIDDLE INITIAL :
: B NICK NAME :
: :
: :
: :
: F3=EXIT F12=CANCEL :
: :
:..........................................:
3)主菜单界面:
CODE:[Copy to clipboard]PGM:SQLSFLSRTR DYNAMIC SORT WITH EMBEDDED SQL DD/DD/DD
DSPF:SQLSFLSRTD TT:TT:TT
LAST NAME FIRST NAME MI NICK NAME
F3=EXIT F4=PROMPT F12=CANCEL
【声明】这个代码不是AS06、AS07教材中的代码,所以我也没办法提供PF、RPG IV程序代码,不过我们可以作为练习自己写,以实现输入、更新、查询功能,这样印象就会更深,同时写出来的人可以把代码贴出来互相比较差异。
原文地址 http://bbs.chinaunix.net/viewthr ... p;extra=&page=1 |
|