我的一亩三分地 我就喜欢!
13fen  设为主页
 收藏本站
 
当前位置: > 一亩三分地:首页 > 操作系统 > 服务器 > 关于文件的ShareODP和USROPN
热门文章排行
热门文章排行 启动与关闭服务器(12-28)
服务器应用:用serv-u建立FTP一(11-16)
破解局域网内不能互访的六大经典问题(12-28)
Windows中IIS内FTP服务器高级配置(11-16)
怎样设置域名的DNS服务器(11-16)
精采文章排行
精采文章排行 在Windows Server 2003中为Web站点(11-16)
IP基础--DNS协定(11-16)
怎样设置域名的DNS服务器(11-16)
DNS—bind安装与配置的关键技术揭秘(11-16)
Exchange Server 服务器通讯端口(11-16)
技术专题推荐
网管论坛交流
 

关于文件的ShareODP和USROPN 

作者:   来源:   点击:   日期:2006-11-17

       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的文件。



文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·服务器安全技巧七则 ·异常IPL的原因归纳
·从五大方面为Win2003操作系统提速 ·如何集成Linux、Apache、PHP4、FastCGI、
·彻底掌握IIS6.0功能及应用详解<3> ·彻底掌握IIS6.0功能及应用详解<4>

   文章评论:(条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:一分  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。