谁有好点的subfile教程

发表于:2007-05-26来源:作者:点击数: 标签:
谁有好点的subfile教程 nhxingliang 回复于:2005-08-01 15:25:47 我也想要!!! 我的邮箱nhxingliang@126.COM nhxingliang 回复于:2005-08-01 15:27:19 我也想要!!! 我的邮箱nhxingliang@126.COM fairyboy 回复于:2005-08-01 15:54:56 偶有,不给 快

谁有好点的subfile教程

 nhxingliang 回复于:2005-08-01 15:25:47
我也想要!!!


我的邮箱nhxingliang@126.COM

 nhxingliang 回复于:2005-08-01 15:27:19
我也想要!!!


我的邮箱nhxingliang@126.COM

 fairyboy 回复于:2005-08-01 15:54:56
偶有,不给

 快乐狗 回复于:2005-08-01 16:18:22
我也想要哦

 majorz 回复于:2005-08-01 17:25:25
[quote:79197d6f55="fairyboy"]偶有,不给[/quote:79197d6f55]

 快拿出來,交'槍'不殺!

 fairyboy 回复于:2005-08-01 20:13:28
看个样本程序,自己再写一个,不就OK了

 wildfish 回复于:2005-08-01 20:40:31
来人啊,拉出去tjjtds

 mamei 回复于:2005-08-01 22:57:30
我有个比较好的样板,是我自己写的,看起来很清楚的,适合初学者学习!!!

可惜在这里贴,会乱的!!!

大家想个办法!!

 快乐狗 回复于:2005-08-02 07:53:59
弄个图形放上来嘛,就不会乱了

 babyggyy 回复于:2005-08-02 08:49:25
TT

 fairyboy 回复于:2005-08-02 08:50:13
[quote:206b33d59a="mamei"]我有个比较好的样板,是我自己写的,看起来很清楚的,适合初学者学习!!!

可惜在这里贴,会乱的!!!

大家想个办法!![/quote:206b33d59a]


来人啊,拉出去tjjtds

 mamei 回复于:2005-08-02 13:19:18
楼上的:TJJTDS是乜意思???

 fairyboy 回复于:2005-08-02 21:43:38
1:最简单的SUBFILE的应用。
2:带窗口的SUBFILE的应用。
3:指定光标位置显示相应的SUBFILE的应用。
4:3种翻页方式显示多画面的SUBFILE的应用。
我这边有样本代码,附每条语句的详细解释和相应的RPG代码相结合。
就是不给,TJJTDS也不给~~~~

 fairyboy 回复于:2005-08-02 21:46:21
[code:1:bd6bb7919f]
*************** Beginning of data *************************************
     A                                                 DSPSIZ(24 80 *DS3)         
     A          R HEAD                                                 
     A                                           2   1DATE                       
     A                                                  EDTCDE(Y)                  
     A                                           2 69TIME                       
     A                                           2 34'显示文件记录'           
     A*****************************************************************
     A          R SUBF                             SFL                        
     A             FLD001         5A  O  9 16
     A             FLD002       20A  O  9 28                      
     A*****************************************************************
     A          R SUBFC                           SFLCTL(SUBF)               
     A                                                  SFLSIZ(9999)               
     A                                                  SFLPAG(0010)               
     A  30                                            SFLDSP                     
     A  31                                            SFLDSPCTL                  
     A  32                                            SFLCLR                     
     A  33                                            SFLEND(*MORE)              
     A                                                  OVERLAY                    
     A                                                  CA12(12 'EXIT')            
     A                                           7 15'字段1'                 
     A                                                  COLOR(WHT)                 
     A                                           7 27'字段2'                 
     A                                                  COLOR(WHT)                 
     A*****************************************************************
     A          R FOOT                                                 
     A                                                  OVERLAY                    
     A                                         24 11'F12=EXIT'                 
     A                                                  COLOR(BLU)                 
****************** End of data ****************************************
[/code:1:bd6bb7919f]

 fairyboy 回复于:2005-08-02 21:46:58
【注】
(1) 第一个画面HEAD注解:
(a) 第一行表明显示尺寸,一般就这么写;
(b) 第二行的R表示接下来是一个记录,记录名是HEAD,有点象PF的定义,不过在DSPF里的记录代表
  一个画面;
(c) 第三行的DATE是系统关键字,表示日期,该句意思是在第2行第1列显示系统日期;
(d) 第四行的EDTCDE表示编辑字,EDTCDE(Y)表示系统日期按照“MM/DD/YY”格式显示;
(e) 第五行的TIME是系统关键字,表示时间,该句意思是在第2行第69列显示系统时间;
(f) 第六行意思是在第2行第34列显示字符窜"显示文件记录"。

(2) 第二个画面SUBF注解:
(a) 第一行的R和上面一样,也代表这是一个画面,名字是SUBF;
  后面的SFL是系统关键字,表示该画面是SUBFILE;
(b) 第二行表示在画面第9行第16列显示长度为5的字段FLD001,5是长度,A表示该字段是字符型,
  O表示该字段只用于输出;
(c) 第三行与上一行类似。

(3) 第三个画面SUBFC注解:
(a) 第一行的R和上面一样,也代表这是一个画面,名字是SUBFC,
  SFLCTL是系统关键字,SFLCTL(SUBF)表示该记录是用来对画面SUBF显示的控制,
  一般定义了SUBFILE之后,都要定义这个记录的;
(b) 第二行的SFLSIZ用来说明SUBF的记录数,这里我把它定义为最大9999;
(c) 第三行的SFLPAG用来说明每页显示的记录条数,这里我把定义为10笔;
(d) 第四、五、六行的SFLDSP是用来显示记录的,SFLDSPCTL用来控制显示的,
  SFLCLR用来清除显示的记录的,一般都需要给他们加上指示器,这里分别是30、31、32;
(e) 第七行的SFLEND用来声明每页下方的提示,这里用*MORE来表示,如果还有下一页的话,下方
  就显示”More……“,否则,就显示”Bottom“,这里也用个指示器33;
(f) 第八行的OVERLAY表示显示该记录之前不要清除上一屏,即保留;
(g) 第九行的CA12表示在这个画面里我可以用键盘按键F12,对应的指示器是12,
  这里你可以根据自己需要使用别的按键,例如CA03;
(h) 第十一行的COLOR是系统关键字,用来给上面显示的字符窜设置显示颜色,
  这里用BLU,表示字符窜”字段1“显示为蓝色;

(4) 第四个画面FOOT注解参考上面三点即可,在此不在累赘。

 fairyboy 回复于:2005-08-02 21:47:29
[code:1:74b14d41dc]
*************** Beginning of data *************************************
     FMYPF       IF  E           K        DISK                            
     FMYDSPF  CF  E                    WORKSTN                         
     F                                                                                   RRN   KSFILE SUBF        
     C           *IN12      DOWEQ'0'                                    
     C                          WRITEHEAD                                   
     C                          WRITEFOOT                                   
     C                          EXSR CLRSFL                                 
     C                          EXSR REDRCD                                 
     C                          ENDDO                                       
     C*                                                                
     C                          SETON                               LR                
     C*****************************************************************
     C           CLRSFL    BEGSR                                       
     C*                                                                
     C                          Z-ADD0              RRN     40                   
     C                          MOVEA'0011'    *IN,30                       
     C                          WRITESUBFC                                  
     C*                                                                
     C                          ENDSR                                       
     C*****************************************************************
     C           REDRCD    BEGSR                                       
     C*                                                                
     C           *LOVAL    SETLLFMYPF                                  
     C                           READ FMYPF                    90            
     C           *IN90      DOWEQ'0'                                    
     C                          ADD  1         RRN                          
     C                          WRITESUBF                                   
     C                          READ FMYPF                    90            
     C                          ENDDO                                       
     C*                                                                
     C                          SETON                     30                
     C           RRN         IFEQ 0                                      
     C                          SETOF                     30                
     C                          ENDIF                                       
     C                          MOVEA'10'      *IN,31                       
     C                          EXFMTSUBFC                                  
     C*                                                                
     C                          ENDSR                                       
****************** End of data ****************************************
[/code:1:74b14d41dc]

 fairyboy 回复于:2005-08-02 21:52:07
只说一下,里面的 MOVEA'0011'    *IN,30,这是数组附值,表示把’0011‘其中的’0‘给*IN30,’0‘给*IN31,’1‘给*IN32,’1‘给*IN33。
还有为什么ADD 1  RRN,再WRITE,因为RRN这里面表示记录号,如果没有加1,就会重复使用,系统会报错。

以上是1:简单的SUBFILE的应用部分。

下面是第2种,带窗口的SUBFILE的应用。

 fairyboy 回复于:2005-08-02 21:58:10
A                                      DSPSIZ(24 80 *DS3)
     A                                      REF(*LIBL/ALGSYS)
     A                                      CHGINPDFT(CS)
     A                                      MSGLOC(24)
     A                                      PRINT
     A          R SCRN0
     A                                      WINDOW(10 40 12 34)
     A                                      WDWBORDER((*COLOR WHT) (*DSPATR RI)-
     A                                       (*CHAR '        '))
     A          R SCRN2                     SFL
     A                                      KEEP
     A            SVSEL          1A  H
     A            S2SEL          1A  B  3  2COLOR(TRQ)
     A            S2DTA          1   B  3  5
     A            S2PRC          1   B  3  9
     A            DISYS     R        O  3 12COLOR(WHT)
     A            DISYSN    R        O  3 23REFFLD(RALGSYS/DISYSN *LIBL/ALGSYS)
     A                                      COLOR(PNK)
     A          R SCRN1                     SFLCTL(SCRN2)
     A                                      SFLSIZ(0007)
     A                                      SFLPAG(0006)
     A                                      WINDOW(SCRN0)
     A                                      CF01
     A                                      CF07
     A                                      KEEP
     A                                      BLINK
     A                                      OVERLAY
     A N50 51                               SFLDSP
     A N50                                  SFLDSPCTL
     A  50                                  SFLCLR
     A            SFSTRT         4S 0H      SFLRCDNBR
     A                                  1  4'Dta'
     A                                      COLOR(WHT)
     A                                  1  8'Prc'
     A                                      COLOR(WHT)
     A                                  2  2'X Y/N Y/N System     Name      '
     A                                      COLOR(WHT)
     A                                      DSPATR(UL)
     A          R SCRN3
     A*%%TS  SD  19950824  095816  KLUCK       REL-V3R1M0  5763-PW1
     A                                      WINDOW(SCRN0)
     A                                 10  2'F1=Return'
     A                                      COLOR(WHT)
     A                                 10 13'''X''=Select'
     A                                      COLOR(WHT)
     A                                 10 25'F7=Aclearcase/" target="_blank" >ccept'
     A                                      COLOR(WHT)
     A                                 11 23'Roll Active'
     A                                      COLOR(WHT)
     A* ------------------------------------------------------------------------
     A* These records are required for seamless Window activation.
     A* No Program I/O shound ever be done to these records.
     A* ------------------------------------------------------------------------
     A          R SCRN4                     CLRL(*NO)
     A                                      OVERLAY
     A                                      FRCDTA
     A          R SCRN5                     ASSUME
     A                                      OVERLAY
     A                                      PUTOVR
     A                                  1  3' '

 fairyboy 回复于:2005-08-02 22:15:06
1到5行,没什么好说的,只是其中的MSGLOC(24)表示,信息显示固定在屏幕的24行处显示。
第7行,指定窗口的大小,第8行WDWBORDER((*COLOR WHT) (*DSPATR RI)- 
    A                                       (*CHAR '        ')) 
指定窗口边框显示的形式,具体效果自己可以去试,在这不多说了。


再重点说一下 SFSTRT         4S 0H      SFLRCDNBR 这句的作用,SFLRCDNBR表示子文件的记录号,这个值要和在RPG中定义的那个
RRN  KSFILE XXX,XXX是指在显示文件里那个SFLCTL。区分开来,这里的SFSTRT是用来显示SUBFILE的页,就是说,RRN在哪一页,就显示那一页。


概括的说就是指定要显示的子文件页是由这个字段的相对记录号的记录所在页。


先说到这,其余的大家自己研究吧,请高手指正上面我说错的地方。

 fairyboy 回复于:2005-08-02 22:18:37
再补充说一句,MOVEA*ALL’0‘ *IN,30可以吧30以后的指示器,一次全部置*OFF。

睡了。

 qingzhou 回复于:2005-08-02 23:09:04
看来要设为精华鼓励鼓励,很难得~~~ :mrgreen:
继续写、不要停,也不要这么早就睡觉了。。。 :m01:

 fairyboy 回复于:2005-08-03 08:41:32
[quote:47f4053612="qingzhou"]看来要设为精华鼓励鼓励,很难得~~~ :mrgreen:
继续写、不要停,也不要这么早就睡觉了。。。 :m01:[/quote:47f4053612]


啊~精华?好象没偶的份捏,白辛苦咧.

 magic_007 回复于:2005-08-03 11:29:44
[quote:fad11a96c5]啊~精华?好象没偶的份捏,白辛苦咧.[/quote:fad11a96c5]
fairyboy老兄,那个精华是给你的,不白辛苦,大家的眼睛是雪亮的 :em02:  我只是要更多的知识来充实自己.先谢谢了

 majorz 回复于:2005-08-03 14:09:12
fairyboy大哥: 很不錯,繼續啊,很是期待啊

 54CatFish 回复于:2005-08-04 09:17:58
[quote:7f33fdafb9="magic_007"]谁有好点的subfile教程[/quote:7f33fdafb9]

我有,可惜是纸介质的,没有电子版的

原文转自:http://www.ltesting.net