以前マクロ・関数を用いたときは、説明なしに用いました。ここでは、マクロと関数をもう少し詳しく説明してみます。
(1) マクロ
IGORの特徴は、マウスで操作が出来、一方同様の操作がコマンド入力で出来ることです。同じような操作を行う場合は、コマンド入力を一まとめにして使うことが出来ればと願うものです。マクロはそのような願いをかなえるしくみです。ただし、マクロは単に同じコマンドを出すだけではなく、制御することも可能です。たとえば、1から10までをプリントするマクロは、
macro p10()
variable tn
tn=1
do
print tn
tn=tn+1
while (tn <= 10)
end
最初のmacroの行のあとに変数の宣言が必要ですが、その間に空白行があるとエラーとなるので注意。
マクロは一行一行処理するので処理速度は速くありません。ためしに入れた数値から、その数値から1000だけ大きい数値までを足し合わせるマクロを書いてみましょう。
macro macorSum100(t)
variable t
variable tn
variable sum
tn=t
sum=0
do
sum = sum + tn
tn=tn+1
while (tn <= t+100)
print sum
end
(2) 関数
関数はマクロとよく似ていますが、実際使ってみるとその差がわかります。マクロが一行ずつ解釈して仕事をするのに対して、関数ではコンパイルをします。すなわち実行時に解釈するのではなく、コンピュータの言葉に変換してしまってから実行します。上のマクロと同内容の関数を作って走らせて見ましょう。
function functionSum100(t)
variable t
variable tn
variable sum
tn=t
sum=0
do
sum = sum + tn
tn=tn+1
while (tn <= t+100)
print sum
end
速さの違いが分かりましたか?