代码之家  ›  专栏  ›  技术社区  ›  ime

在非周期程序中设置*inlr是否有任何影响?

  •  2
  • ime  · 技术社区  · 7 年前

    我最近偶然发现了一个服务程序,其中在显式关闭文件后使用*inlr=*on(代码如下)。这对我来说太过分了。据我所知,是rpg循环处理资源的释放。因此,如果没有循环(即在具有主/非主h规范的程序中),*inlr=*on没有任何影响,但是。。。我还没有找到任何确认,由于周期相关的问题对我来说是非常新的,我可能错过了一些东西。。。

    if %open(file);      
      close file;        
    endif;                  
    *inlr = *on;            
    return *on; 
    
    3 回复  |  直到 7 年前
        1
  •  4
  •   Charles    7 年前

    简而言之,没有。

    这个 RPG IV Programmer's Guide

    当控制规范中规定了MAIN或NOMAIN时,不会为子过程生成循环代码。

    其他参考文献
    post to the RPG mailing list )

    线性主程序将在计算结束时结束。你 可以 如果需要,可以设置为*INLR,但它不会执行任何与周期相关的操作,例如关闭文件。

    http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frzasd%2Fsc09250802.htm

        2
  •  3
  •   jmarkmurphy    7 年前

    在线性主模块或nomain模块中, *inlr 没有效果。据我所知,这方面没有明确的文档,但 ILE RPG Programmer's Guide

    在控制规范中规定。

    *inlr公司

        3
  •  -1
  •   lou wilkinson    7 年前

    试试这个:

    cl程序调用rpg程序

        pgm
        call testlrr
        call testlrr
        call testlrr
        endpgm
    

    然后这是rpg

        ctl-opt  dftactgrp(*no) actgrp('QILE');
    
        dcl-pr TESTLRR   extpgm('TESTLRR');
        end-pr;
    
        dcl-pi TESTLRR;
        end-pi;
    
        dcl-s counter      zoned(5:0);
    
        counter = counter + 5;
    
        dsply counter;
    
        return;            
    

    对您可以通过激活组、inz语句等来处理它。。。。但是,inlr非常便宜,也非常简单。