SETLL READE用于带前缀的文件

the*_*112 0 rpgle ibm-midrange

在RPGLE程序中读取文件时,我遇到了这个奇怪的问题.

fmosdp00   if   e           k disk    prefix(xx:2)              

  SetLL ('HF':'30':'032':'SK':'0095320':'002':0:0001) mosdp00a; 
  Reade ('HF':'30':'032':'SK':'0095320':'002':0) mosdp00a;      

  *Inlr = *On;  
Run Code Online (Sandbox Code Playgroud)

上面的SETLL和READE似乎没有根据需要设置MOSDP00文件的字段值.

当我在调试模式下运行该程序并在READE上执行EVAL XXMORD(MOSDP00字段)时,它是空白的.

但是如果我使用任何这些字段添加一些操作,例如DSPLY XXMORD,那么程序似乎设置了这个字段值.

有人可以帮助理解这一点.

jma*_*phy 7

RPG编译器优化了未使用的变量.因此,在调试中,如果您尝试查看仅由记录格式隐式定义但未在程序中使用的变量的值,则您将看不到值.前缀不是问题.添加DSPLY XXMORD操作时,您添加了字段的用法,这阻止了编译器对其进行优化.这允许您在Debug中查看该字段.如果您尝试使用未使用的记录格式的其他字段,它将在调试中再次显示为空白.

  • 添加h-spec选项`debug(*INPUT)`让编译器加载所有字段.. https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzasd/hdebug.htm (3认同)