使用CL As400命令抑制文件IO

使用CL As400命令抑制文件IO,io,ibm-midrange,cl,Io,Ibm Midrange,Cl,最近,我的组织委托我修改AS400系统上的一个大型程序。因为我以前没有使用过系统的这一部分,所以我想通过调试器运行它,以了解它是如何工作的——但是有人告诉我,即使在开发环境中运行这个程序也可能导致不必要的数据库更改 因此,我希望使用CL命令来抑制我在训练中遇到的文件IO。不幸的是,我忘记了它的名字,无法再访问我的培训资源,也无法在网上找到任何东西。我的描述是否与任何已知命令相对应(或者在这种情况下是否有任何其他我认为有用的命令)?如果您的所有物理文件都记录有图像(*两者),则数据库中所做的每个更

最近,我的组织委托我修改AS400系统上的一个大型程序。因为我以前没有使用过系统的这一部分,所以我想通过调试器运行它,以了解它是如何工作的——但是有人告诉我,即使在开发环境中运行这个程序也可能导致不必要的数据库更改


因此,我希望使用CL命令来抑制我在训练中遇到的文件IO。不幸的是,我忘记了它的名字,无法再访问我的培训资源,也无法在网上找到任何东西。我的描述是否与任何已知命令相对应(或者在这种情况下是否有任何其他我认为有用的命令)?

如果您的所有物理文件都记录有图像(*两者),则数据库中所做的每个更改都会被记录,并且可以使用RMVJRNCHG在程序启动之前返回

所以你必须运行STRJRNPF。。。图像(*两者)一次

在调用程序之前,
CHGJRN。。。JRNRCV(*GEN)
,它将记录新接收器中的更改

当您想要返回到上一个状态时,请运行
RMVJRNCHG

但是记住

  • 如果您的应用程序不支持RGZPFM或CLRPFM,则无法返回
  • 它仅适用于dabase文件,不适用于数据区、其他对象或ifs文件
  • 你最好确保你有一个备份,你可以/知道如何实际恢复
  • 你最好是唯一的应用程序活动用户
  • 您最好先使用RMVJRNCHG,了解它的工作原理及其发送的消息

  • OVRDBF
    命令的
    INHWRT
    参数用于禁止写入、更新和删除文件,顾名思义。请注意,如果试图阻止整个应用程序的更新,则必须对每个文件应用覆盖。如果应用程序写入一个表,然后运行依赖于表中数据的代码,那么这也不会起作用


    实际上,除了一个单一用途的程序之外,我从来没有见过
    INHWRT

    我认为处理这一问题的常用方法是调整库列表,以便您可以在不同的库中更新副本,而不是更新生产文件。如果文件组织得太差,无法执行此操作,则可以列出所有可能受影响的文件,并在程序启动之前将其覆盖到QTEMP副本。如果程序显式调用包含库名称的文件或表,这将允许您通过文件覆盖机制而不是库来控制它


    从给出的警告字里行间可以看出,我怀疑开发人员不信任使用这两种技术的文件位置或编码风格的一致性。您真的应该彻底阅读代码,看看这些技术中的任何一种是否有效,或者是否可能进行允许它们有效的更改,以便以适当隔离的方式测试更改。

    有OVRDBF INHWRT(*是)。我们以前也是这样的谢谢,谢谢it@RockBoro你应该加上这个答案。你所说的不必要的改变是什么意思。你是说你的程序可以更新生产数据,即使它运行在DEV环境中吗?不确定,我在一个小团队里,我的同事不是一个详细的解释,如果有人在文件中做任何其他无关的工作,那也会丢失,然后有数据一致性的问题要考虑。我更关心的是,开发人员测试可以更新生产数据。听起来应该首先固定,而不是仅仅用一个创可贴覆盖。