免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2028 | 回复: 4
打印 上一主题 下一主题

请教sub-file的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-07 21:28 |只看该作者 |倒序浏览
显示文件的代码如下

*----------------------------------------------------------------
A          R SFDATA                    SFL                       
A            CUSNUM    R        O  4  5                          
A            CUSNAM    R        O  4 15                          
A            CUSPHN    R        O  4 50                          
*----------------------------------------------------------------
A          R SFCTL                     SFLCTL(SFDATA)            
A                                      SFLPAG(0015)              
A                                      SFLSIZ(0045)              
A                                      OVERLAY                  
A N50                                  SFLCLR                    
A  50                                  SFLDSP                    
A  50                                  SFLDSPCTL                 
A  50                                  SFLEND(*MORE)            
A                                  2  4'Salesperson#'            
A            SLSPER    R        O  2 17EDTCDE(4)                 
A                                  3  4'Customer#'               
A                                  3 15'Name'                    
A                                  3 50'Phone#'           


RPG程序中有个清空子文件的子程序如下,在load记录之前执行
C     CLRSF         BEGSR                                             
  * Clear the subfile by writing a SFCTL record with Indicator 50 Off
C                   MOVE      *OFF          *IN50                     
C                   WRITE     SFCTL                                   
C                   MOVE      *ON           *IN50                     
  * Set the record number variable to zero                             
C                   MOVE      *ZERO         REC#              4 0     
C                   ENDSR                                             
  *---------------------------------------------------------------------
子程序的意思首先是执行SFLCLR ,不明白这里的write的意思,还没有查询到记录呢怎么就write呢?
不要这句代码我再执行以下程序,报错了,好像是报有重复记录,请前辈赐教

论坛徽章:
0
2 [报告]
发表于 2012-05-07 22:53 |只看该作者
本帖最后由 cuilei286 于 2012-05-07 23:06 编辑

这个write是清空subfile的作用。。。。关键在这个N50上面,*off的时候write就等于清空子文件了。

论坛徽章:
0
3 [报告]
发表于 2012-05-08 09:36 |只看该作者
write并不一定就代表往subfile里边写新内容,任何subfile内容包括指示器如果发生了变化,只有通过write才能生效。你这里就是先清空一下subfile。

论坛徽章:
0
4 [报告]
发表于 2012-05-08 09:48 |只看该作者
谢谢楼上两位,主要还是帮助清空

论坛徽章:
0
5 [报告]
发表于 2012-05-09 11:48 |只看该作者
本帖最后由 yayuyo 于 2012-05-09 11:49 编辑

其实这里关键要理解write的作用。
如果对画面上栏位属性的做了设置,比如设置某个IN,让某个栏位反白
要想实现这个效果,RPG将IN设置好之后,要通过write DSPF对应的Record,才能得到对应效果。

那有些时候并没用write,用的是EXFMT,那为什么也能实现呢?

其实EXFMT可以看成先write,再read,所以实际上也是做了write的动作的

如果只对DSPF做write,屏幕是不会变化的
只有read的时候,才会将最新的屏幕显示给用户,等待用户输入

以上是个人理解。有不对的请指教哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP