FORTRANでメソッド(元サブルーチン)を書く時,
いろいろな場合を想定して,
なるべく汎用的なメソッド(元サブルーチン)にしようとすると,
引数がどんどん増えて困ることがある.
大事な引数は2-3個なのに,
どうでもよいような引数がずらずらと並んでいると,
それだけで call .... と書く手が重くなってくる.
そのような時にENTRY文を使うと解決できる場合がある. ENTRY文とは, メソッド(元サブルーチン)の途中から実行を始めるための文である.
*−−−−−- main program −−−−−- REAL X(10) ....... CALL TABLE(X, 10) ....... END *−−−−−−−−−−−−−−−- SUBROUTINE TABLE(X,N) REAL X(N) DATA IOU /6/ SAVE WRITE(IOU,'(10F12.4)') X RETURN ENTRY IOUSET(IOU0) IOU = IOU0 RETURN END
このメソッド(元サブルーチン)tableは
1次元配列xを出力するものであるが,
tableだけを呼べば,
DATA文で指定されたiouの機番(6)に出力される.
ファイルなど別の機番に出力させたい場合は,
table を呼ぶ前にiouset を呼んで,
iouを書き換えておけばよい.
つまり, 1つのメソッド(元サブルーチン)に,
印刷すべき変数だけを与える入口と,
その他のパラメータを設定する入口の, 2つの入口を作るわけである.
ここで, 注意すべきことはSUBROUTINE文またはENTRY文で指定された引数は, そのSUBROUTINE文またはENTRY文から入った時でないと使えないことである. 例えば, このプログラムのENTRY文から入った時(iousetが呼ばれた時), 変数n を引用することはできない. 同じように, tableが呼ばれた時にiou0を引用することはできないので, iousetが呼ばれたときにiouに代入しておかなければならない. また, このようなプログラムでもSAVE文とDATA文は不可欠である.