CL

143. TFRCTLの効果的な使い方

TFRCTL(制御権転送)というコマンドをご存知だろうか?
CALL命令によく似ていてほとんど構造は同じであるが
ちがうところは

CALL命令 ………… 次のスタックにプログラムを呼び出す

TFRCTL命令 ………. 次のプログラムを呼び出すとともに制御権も
そのプログラムに渡す

というちがいである。

それでは何のためにあるいはどのようなときにこのTFRCTLを
使うのだろうか?

                 PGM
                 :
                (表示のための準備)
                 :
                SNDRCVF DSP01
                 :
                 IF (&IN05 *EQ '1')
                   TFRCTL PGM001CL
                 ENDDO

[解説]

このCLPはPGM001CLという名前であるが
CF05=再表示コマンドが押されたときには
TFRCTL PGM001CL としてもう一度このCLP自身を呼び出している。
つまり始めからやり直すということである。
元の位置に戻してやり直すよりはこのCLP自身を最初から
呼び出してやり直したほうが初期化されて間違いがないと
いうことである。
このようなときにCALLではなくTFRTCLを使うことになる。