免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: milanfeng
打印 上一主题 下一主题

如何读取subfile里记录的记录?organization 为 Transaction [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-08-23 11:44 |只看该作者
在RPG中可以用先用SETLL定位,任何READ就可以了.

论坛徽章:
0
12 [报告]
发表于 2007-08-23 12:14 |只看该作者
谢谢大家的回复.

楼上的,请教用 read ... next modifed 和 rewrite 的具体做法.

例如:
在subfile中,我是不是该这样做:

用来定位带'u'的record
read subfile filename format is 'format001'
read subfile filename next modified.

Move subfile_name to window_name
Move subfile_salary to window_salary

Move space to subfile_option
rewrite subfile filename

是上面这样吗?

论坛徽章:
0
13 [报告]
发表于 2007-08-23 12:28 |只看该作者
原帖由 jskyzz 于 2007-8-23 11:12 发表
rewrite清楚了那个u
再次读subfile next modified 能读到上次有  U 而这次 U被清除的那一条记录
感觉好混乱


所以要用SFLNXTCHG,  在REWRITE清除'U'的时候 置 SFLNXTCHG = OFF

GOOD LUCK.

论坛徽章:
0
14 [报告]
发表于 2007-08-23 12:49 |只看该作者
ok  明白你的意思了   多谢

论坛徽章:
0
15 [报告]
发表于 2007-08-23 13:34 |只看该作者

回复 #7 digitalchina 的帖子

有道理,受用。

论坛徽章:
0
16 [报告]
发表于 2007-08-23 14:18 |只看该作者
原帖由 digitalchina 于 2007-8-23 10:18 发表
我觉得循环读取的方法不好,  因为SUBFIEL 可能有9999条数据,而用户实际只打了一个'U' , 你却去读9999条逐条进行判断,  程序的性能不好.

循环是不好。效率不高。但是要是现在有1000笔记录,在第999笔记录之前都键入了U,在第1000笔记录上键入了非法字符(比如键入‘K‘),这个时候怎么办?是不是还得把刚才rewrite进去的那999笔记录全部吐出?前提是:一旦键入了非法字符,整个操作将不能进行。
感觉这样也好不了多少。觉得还是两个循环思路比较清晰,容易接受。当然,效率确实低。

论坛徽章:
0
17 [报告]
发表于 2007-08-23 14:50 |只看该作者
各位,

按照 read ... next modified 的方式我还是没调试出来,能否给个例子? 不一定要完整的例子,几条指令(按顺序)就够了,谢谢.

论坛徽章:
0
18 [报告]
发表于 2007-08-23 17:28 |只看该作者
Display 文件
A          R subfiles                  SFL         
A  70                                  SFLNXTCHG   
A            DOPTS          1   B  7  2            
A            DEMPNOS        6  0O  7  4            
A            DDEPTS         2  0O  7 12            
A            DLASTNMS      20   O  7 20            
A            DFIRSTNMS     20   O  7 43            
A            DSALARYS       6  2O  7 65            
A          R subfilec                  SFLCTL(subfiles)         
A                                      ROLLDOWN(82 'ROLL DOWN')
A                                      OVERLAY                 
A                                      PROTECT                 
A                                      SFLSIZ(13)              
A                                      SFLPAG(12)              
A  83                                  SFLDSP                  
A  84                                  SFLDSPCTL               
A  85                                  SFLCLR                  
A  99                                  SFLEND(*MORE)           
A            WDPOS          4S 0H      SFLRCDNBR               
...............

程序:
01 Indic-Area.
     03  In70    Pic 1   INDIC 70  .      
         88 Sub-Change       value B'1'.  
         88 Not-Sub-Change   value B'0'.  
..............

WINSETVL-BEG
      Move 1 To Sub-Num                                         
      Set Sub-Change To True.                                   
->    Read Subfile filename Next Modified Record            
      At End Go To WINSETVL-END                                 
         Move names   Of subfiles-O    To namew   of window-O
         Move salarys Of subfiles-O    To salaryw of window-O
      End-Read.                                                
     Set Not-Sub-Change To True.

WINSETVL-END

单步调试至标记为"->"时候,发现它的内容不是记录的信息,而是subfile里的指示器信息,
估计是之前执行"Write Screen-Record From subfile-O Format Is 'subfilec' Indicators are Indic-Area"
所保留的结果。

请问如何才能实现定位至标记为“U”的记录,谢谢。

论坛徽章:
0
19 [报告]
发表于 2007-08-24 12:05 |只看该作者
有人能够指点一下吗?

论坛徽章:
0
20 [报告]
发表于 2007-08-24 12:33 |只看该作者
原帖由 july1732 于 2007-8-23 14:18 发表

循环是不好。效率不高。但是要是现在有1000笔记录,在第999笔记录之前都键入了U,在第1000笔记录上键入了非法字符(比如键入‘K‘),这个时候怎么办?是不是还得把刚才rewrite进去的那999笔记录全部吐出?前 ...



DSPF 中直接设置CHECK ,   VAL LIST  'U' ,  不是U 就会直接报错,程序不用处理.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP