外部関数

外部関数は、別のMルーチンが値を返すために呼び出すことができる、Mサブルーチンです。

外部関数のフォーマットは次のとおりです。

$$[label][^routinename]([expr|.lname[,...]])

Mは、外部関数のために$TESTをスタックします。これは、パラメータを持つDOコマンドと外部関数とは、2つの大きな違いの一つです。外部関数からのリターンで、呼び出されるルーチンによって実行されたアクションに関係なく、Mは、外部関数の前にそれがあった状態に$TESTの値を復元します。

Mは、引数を持って明示的にQUITコマンドで終了する外部関数を実装するルーチンが必要です。Mは、外部関数の値として、QUITコマンドの引数の値を返します。これは、パラメータを持つDOコマンドと外部関数との間の、もう一つの大きな違いです。それは、外部コールのメカニズムを介してパッケージ内のC関数を呼び出すことができるようになりました。

例:

POWER(V,X,S,T);extrinsic to raise to a power
;ignores fractional powers
SET T=1,S=0
IF X<0 SET X=-X,S=1
FOR X=1:1:X S T=T*V
QUIT $S(S:1/T,1:T)
GTM> WRITE $$^POWER(3,4)
81
GTM>
[注意] 注意

POWER ルーチンは、ローカルの作業変数を保護するために、"期待される : expected" 実要素リスト(actuallist)よりも長いフォーマルリスト(formallist)を使用しています。そのような習慣は、あなたの施設の基準によっては、奨励されたり落胆されたりすることがあります。

inserted by FC2 system