关于AS400的基本问题

时间:2015-05-09 03:06:12

标签: ibm-midrange

给UsrOpn和自动打开文件有什么不同?哪个更有效..我们必须给UsrOpn什么,因为程序本身在I / O操作期间打开它。请用例子来解释我。

4 个答案:

答案 0 :(得分:4)

正如USROPN关键字的文档中所述,目的是让程序员(RPG)控制文件首次打开。

例如:

  • 使用ADDPFM在运行时创建新文件成员。
  • 使用OVRDBF在运行时选择特定文件,成员或更改其他文件参数。
  • 在将记录读入程序之前,使用OPNQRYF对文件进行排序,过滤或以其他方式操作。

答案 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有效地按需而不是在初始化阶段产生操作费用的机会;即避免活动前载。在某些程序中,延迟开放的能力可能具有价值。