内部手続きと外部手続き

 内部関数定義,内部副プログラム,内部絵定義,handler区を内部手続き定義という。
 また,外部関数定義,外部副プログラム,外部絵定義を外部手続き定義という。
 さらに,主プログラムと外部手続き定義をプログラム単位という。

 内部手続き定義は,プログラム単位の内部に書かれる手続き定義で,変数やoption base, option angleなどの宣言をプログラム単位と共有する。
 プログラム単位は,独立した存在で,引数以外の変数や宣言を共有することはない。

例1 内部手続き

100  FUNCTION fact(n)
110    LET p=1
120    FOR i=1 TO n
130        LET p=i*p
140    NEXT i
150    LET fact=p
160  END FUNCTION
170  FOR i=1 TO 10
180     PRINT fact(i)
190  NEXT i
200  END  

 100行から160行までの関数定義はnの階乗を計算するものである。
 しかし,120行から140行のforループが実行されると,170行から180行のforループが用いているiの値も変わってしまうため,意図したようには動作しない。


例2 外部手続き

160 DECLARE EXTERNAL FUNCTION fact
170 FOR i=1 TO 10
180    PRINT fact(i)
190 NEXT i
200 END 
300 EXTERNAL FUNCTION fact(n)
310 LET p=1
320 FOR i=1 TO n
330    LET p=i*p
340 NEXT i
350 LET fact=p
360 END FUNCTION

 170行から190行までのforループで用いられる変数iと300行以降の関数定義部で用いられる変数iは別物であるので,干渉せずに実行される。