给UsrOpn和自动打开文件有什么不同?哪个更有效..我们必须给UsrOpn什么,因为程序本身在I / O操作期间打开它。请用例子来解释我。
答案 0 :(得分:4)
正如USROPN关键字的文档中所述,目的是让程序员(RPG)控制文件首次打开。
例如:
答案 1 :(得分:4)
区别在于“时机”。在计算规范开始运行之前发生自动打开。当您在计算规范中执行OPEN指令时,UsrOpn将打开。
除非周围的节目已知,否则more effective
都不是。当您需要他们的行为时,每个都是有效的实际上没有一个是必要的,因为可以使用其他编程方法,例如,在调用RPG程序之前设置覆盖,以便可以省略UsrOpn。
答案 2 :(得分:3)
请记住,USROPN对文件何时关闭没有影响。关闭文件的RPG规则对于所有文件都是相同的。 http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzasd/impcls.htm
答案 3 :(得分:2)
除了别人提供的......
一个考虑因素:使用USROPN是手段,以确保声明的文件不会自动打开。编写User-Open规范是唯一的有效方法,可确保永远不会打开文件。无论周期与线性相关的AFaIK。
http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzasd/sc09250895.htm%23wq136
隐式打开文件 ...
如果在特定的处理代码路径期间不会为任何I / O引用该文件,则永远不需要打开声明的文件。由于缺少隐式打开文件,根据USROPN规范,为该file.mbr创建开放数据路径(ODP)会对该声明文件挂起可选 OPEN语句。
不必要地打开数据库文件成员,即创建ODP,昂贵。因此,当程序具有无意在该ODP上执行I / O的代码路径时,最好避免使用ODP创建。再次...... USROPN规范允许延迟OPEN直到需要OPEN,或允许可能不会对该文件发出OPEN。当一个可能永远不会引用I / O的文件缺少USROPN规范时,该文件将被隐式打开,这意味着尽管从未使用过,但仍会创建ODP;也就是说,程序本身就会进行浪费的昂贵操作,然后也可能是隐性关闭的近距离活动费用。
http://www-01.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzasd/sc09250896.htm%23wq137
隐式关闭文件 ...
切向考虑:通过相同的控制手段,存在使OPEN有效地按需而不是在初始化阶段产生操作费用的机会;即避免活动前载。在某些程序中,延迟开放的能力可能具有价值。