免费注册 查看新帖 |

Chinaunix

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

RETURN与SETON LR结束程序区别 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-24 16:17 |只看该作者 |倒序浏览
RETURN结束不会强迫内存中数据写入磁盘,
而SETON LR结束时会强迫内存中的数据写入磁盘.

比如一个输出文件, 400缺省方式是BLOCK方式输出,即当数据记录数满一个BLOCK块时才会把这一块的记录写入到时磁盘. 假若当用RETURN结束程序时,最后一个BLOCK块并没有满, 那么这最后一个BLOCK的记录就不会立即写入磁盘.  假若随后有其他作业需要用到该文件, 那么这个不完整的数据文件就有可能让这个作业运行出现错误.

每个PF文件属性后面都有一个属性叫
Records to force a write,
在这里面也可以设定记录条数,当改变记录条数达到这个数时,会强制写入磁盘.  假若这里设置条数为1, 那么每次改变或增加一条记录,就会立即写入磁盘. 但这样就增加了I/O次数, BLOCK输出方式也失去了意义. 但可以确保有RETURN结束的程序不会引起其他程序因数据原因出错.

因此,使用RETURN结束程序一定要小心.

论坛徽章:
0
2 [报告]
发表于 2006-06-24 16:22 |只看该作者
好贴,终于明白这两者的区别了,但是我们是set on LR和Return一起用

还有,记得刚开始写程序时,有一次用set on LR,忘了写Return,结果F3时不会退出,这又是怎么回事呢?

论坛徽章:
0
3 [报告]
发表于 2006-06-24 18:04 |只看该作者
我的观点:
SETON LR 正像楼主说的那样,但不是结束程序。
RETUN 才是结束程序的命令

论坛徽章:
0
4 [报告]
发表于 2006-06-24 23:04 |只看该作者
我们也是一起使用。我也同意2楼的说法。

论坛徽章:
0
5 [报告]
发表于 2006-06-25 09:37 |只看该作者
仅仅用return, 程序不会被purge出内存. 对于那些不涉及数据操作仅实现某些功能的公共函数,用return特别有效率.

论坛徽章:
0
6 [报告]
发表于 2006-06-29 16:13 |只看该作者
那想再问一下, FREE呢?是指将程序PURGE的意思吗?和RETURN有什么异同?

论坛徽章:
0
7 [报告]
发表于 2006-06-29 16:49 |只看该作者
现在新的RPGLE好象没有FREE操作码了? 现在FREE被用作"/FREE"自由格式标识了.

印象中老的RPG似乎有FREE? 它常用在程序中call一个程序之后, 加FREE,把所调程序purge出内存. 现在400内存一般都比较大,系统管理越来越自动化,能够自动管理内存中作业,比如能够把频繁调用的程序自动驻留内存一段时间,把不用的作业自动purge出内存, FREE也越来越没有多大意义.所以现在的RPGLE好象也找不到这个操作码了?

[ 本帖最后由 blogliou 于 2006-6-29 17:18 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2006-07-03 16:04 |只看该作者
明白了。

论坛徽章:
0
9 [报告]
发表于 2006-07-06 17:02 |只看该作者
明白了。我是说以前的很多老程序都有个FREE,但是转成ILE的版本后都被注释了。

论坛徽章:
0
10 [报告]
发表于 2006-07-14 13:27 |只看该作者
原帖由 tianyi 于 2006-6-24 18:04 发表
我的观点:
SETON LR 正像楼主说的那样,但不是结束程序。
RETUN 才是结束程序的命令

同意。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP