基本的なPAWの使い方を解説してきましたが、PAWは対話型のプログラムなの でユーザがキーボードからコマンドを入力することで作業をします。オンライ ンのような決まった解析を行なう場合、毎度同じようにヒストグラムを定義し たりオプションを設定したりするコマンドを入力するのはいやですね。こうい うときマクロを用意すると強力です。マクロはPAWのコマンドを羅列しただけ のもので構いません。それをファイルに書いておいてMAC RO/EXECコマンドで 実行させます。
PAW > EXEC MYMACRO
この例ではmymacro.kumacというファイルが読みだされます。UNIXではファイ ル名は小文字に変換されます。kumacはKUIP・MACROの意味です。一つのファイ ルの中に複数のマクロを定義することが出来ますが、その時はマクロを識別す るコマンドをファイルの中に書いておきます。
* mymacro.kumac
MACRO START
...色々なPAWのコマンドをここに
RETURN
MACRO FINISH
...ここも同様
RETURN
呼び出すときはファイル名にマクロ名を#で挟んで指定します。
PAW > EXEC MYMACRO#FINISH
などとなります。
マクロファイルの中では変数を使うことが出来ます。変数の定義は代入文の ように書いて
MODE = CALIBRATION
MESSAGE mode = [MODE]
変数モードが値CALIBRATIONに設定され、次のKUIP/MESSAGEコマンドで参照さ れています。変数の参照は[]で囲みます。特殊な変数として[1]、[2]などはマ クロが呼び出されたときの引数となります。[#]が引数の数、[*]は引数を全部 つないだもの、[@]はマクロからのリターンステータスを表します。
PAW > EDIT DEMO
MESSAGE ARGUMENT GIVEN = [1]
PAW > EXEC DEMO HELLO
ARGUMENT GIVEN = HELLO
変数の値をユーザにたずねることも出来ます。
READ VAR1
プログラム言語のようなフローコントロールも色々あります。
GOTO ラベル *'ラベル'にジャンプ
ラベル: *ラベル'ラベル'
IF 表現 THEN *おなじみのIF
命令
ELSEIF 表現 THEN
命令
ELSE
命令
ENDIF
CASE 表現 IN *Cのcaseに似ている
(候補1) 命令
(候補2) 命令
(*) 命令 *星はワイルドカード、Cのdefault:と同じ働き
ENDCASE
ON ERROR GOTO ラベル *例外処理
DO i = 1, 100 *iも変数だから参照するときは[i]
命令
ENDDO
FOR 変数 IN 表現1 表現2 表現3... *変数にそれぞれ代入。
*さっきの[*]を表現1におくと引数全部
WHILE 表現 DO
命令
ENDWHILE
REPEAT
命令
UNTIL 表現
BREAKL * ループから抜ける。
EXITM * マクロから抜ける。ステータスコード可
以上はマクロファイルの中で使われるものを解説してきました。それ以外に 有用なのはKUIPのシステム関数です。マクロの中でヒストグラムやグラフ、環 境など様々な情報を取り出すことが出来ます。詳しくはHELP FUNCTIONで見て ください。関数は$で始まります。例えば
$DATE 本日の日付
$TIME 只今の時刻
$HEXIST(ID) ヒストグラムが存在すれば1
$HTITLE(ID) ヒストグラムのタイトル
$VLEN(name) ベクトルの寸法
などなど。