外部関数定義 ☆☆

 外部関数定義は,EXTERNAL FUNCTION行で始まりEND FUNCTION行で終わる。外部関数定義は,主プログラムや他の外部手続きの外部に書かなければならない。これは,END行以降に,入れ子にならないように書くということである。

10 DECLARE EXTERNAL FUNCTION P
20 PRINT P(8,3)
30 END
100 EXTERNAL FUNCTION P(n,r)
110 LET a=1
120 FOR k=1 TO r
130    LET a=a*(n-k+1)
140 NEXT k
150 LET P=a
160 END FUNCTION

END行までの部分,すなわち,10行から30行までが主プログラム。残りの100行以降が外部関数定義。
EXTERNAL FUNCTION行には,関数名と,もし,存在すれば引数を括弧で括って書く。引数が複数ある場合は,コンマで区切る。
関数定義部で関数値を決定するために150行のような形式のLET文を用いる。等号の左辺には関数名のみを書くことに注意。
外部関数定義で定義された関数を呼び出すプログラム単位には,その名前が関数名であることをコンパイラに知らせるために10行に示すような形式の宣言文を書く。
 外部関数定義は変数について主プログラムと独立の存在である。上の例で説明すると,主プログラムにn, r, a, kなどの変数があったとしても,それは外部関数Pのものとは別の変数であるので,関数Pを呼び出すことにより干渉を受けることはない。
<Note>
組込み関数と同名の関数を定義したとき,その関数名を外部関数名とする宣言文を書かないプログラム単位では組込み関数が有効になる。

次のプログラムで100行を削除すると,110行のSQRは組込み関数のSQRを意味することになる。
100 DECLARE EXTERNAL FUNCTION SQR
110 PRINT SQR(4)
120 END
200 EXTERNAL FUNCTION SQR(x)
210 LET SQR=x^2
220 END FUNCTION