RPG

559. RPGで再帰呼出しを可能にするには

ILE-RPGプログラムでも部品展開などのツリー構造のデータを
ツリーに従ってすべて読みたい場合は
再び自分自身のプログラムをツリーを読み取る中で
呼び出す必要が出てくる。
このような親から自分を再び子として呼び出す手法を
再帰呼出しと言う。
かつては再帰呼出しは禁じられていたが
コンパイルの方法によって再帰呼出しは実行可能となる。

[再帰呼出しがエラーになるコンパイル]

CRTBNDRPG PGM(OBJLIBB/MYPGM) SRCFILE(SRCLIB/QRPGLESRC) AUT(*ALL)

[再帰呼出しが可能になるコンパイル]

CRTBNDRPG PGM(OBJLIBB/MYPGM) SRCFILE(SRCLIB/QRPGLESRC) DFTACTGRP(*NO)
 ACTGRP(*NEW) AUT(*ALL)     

[解説]

このように

                                                 
DFTACTGRP(*NO) ACTGRP(*NEW)

を指定すれば再帰呼出しもエラーにはならずに実行することができる。

ILE-RPGのコンパイルはすべての場合においても

DFTACTGRP(*NO) ACTGRP(*NEW)

を指定しておけばこのような再帰呼出しのエラーを避けることができる。