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)
を指定しておけばこのような再帰呼出しのエラーを避けることができる。
