新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 操作系统 > Unix系统 > AS400教程 > 正文:关于文件的 ShareODP 和 USROPN

关于文件的 ShareODP 和 USROPN

新客网 XKER.COM 2008-02-21 来源:新客网Unix系统 aeiou 收藏本文

  【新客网AS400教程】1.ShareODP:
  在PF或者LF编译的时候,有个SHARE(Share Open Data Path)的参数,控制该文件是否共享其打开路径。
  假如指定SHARE为*NO的话,程序在每次打开一个文件的时候,都会为该文件建立一次访问路径;假如指定SHARE为*YES的话,程序在第一次打开该文件的时候,系统建立该文件的访问路径,在同一个ActiveGroup中再打开该文件时,就不再重新建立该文件的访问路径,而是共享使用之前建立的路径,从而提高了程序运行的速度。
  一般在编译的时候该参数设置为*NO,即不是共享打开。在需要共享打开的时候,使用OVRDBF对该参数进行更改。

  使用ShareODP需要注重的一些东西:
  1).由于在不同的ActiveGroup之间不能ShareODP,所以假如几个程序在编译的时候没有加入到同一个ActivationGroup中,ShareODP就不会有什么效果。
  2).假如PGMA打开FILEA并定位到了第一条记录,然后PGMA调用PGMB;PGMB也打开了FILEA并直接读FILEA,将读到第二条记录;PGMB运行完后PGMA又继续读FILEA下一条记录,此时它读到的将是第三条记录。而假如没有ShareODP的话,PGMA两次读到的会是第一条和第二条记录,PGMB读到的会是第一条记录。

  ActiveGroup:
  在CRTPGM 的时候,有个参数ACTGRP(ActivationGroup),控制该PGM在运行的时候属于哪个ActiveGroup。假如指定*NEW,则该PGM会重新建立一个ActiveGroup;假如指定为*CALLER,则该PGM会与调用它的PGM使用同一个ActiveGroup。

  2.UserOpen:
  RPG程序在使用F表引用外部文件的时候,有一个KeyWords是USROPN。
  在没有使用USROPN的时候:系统会在每次运行该程序的时候自动打开所引用的文件;一般可以通过设置*LR为*ON来自动关闭文件,但是假如是SubProcedure,系统不会自动关闭所打开的文件。
  假如指定了USROPN:则系统不再控制文件的打开与关闭,由用户手工进行文件的OPEN与CLOSE;假如一个模块已经打开还没有关闭文件的情况下,该模块将不能再对该文件做打开的操作。
  USROPN比系统自动打开文件要慢一些。在打开同一个文件5000次的情况下,USROPN使用了400毫秒,系统自动打开只用了4毫秒。

  使用UserOpen需要注重的一些东西:
  1).在OPEN之前最好使用 %OPEN(FileName) 检查要打开的文件是否已经打开,假如没有打开再执行OPEN的操作。
  2).CLOSE *ALL的命令可以关闭本模块打开的所有文件。假如一个文件没有指定为USROPN,Close *ALL也将关闭该文件。并且假如该模块是不参与RPG Cycle的程序,如一个SubProcedure,则在第二次运行本模块的时候,该文件将不会再自动打开,此时假如再对该文件做操作,就会出错。所以最好指定文件名来CLOSE,并注重只关闭USROPN的文件。

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐