手続き

手続きには以下のものがあります。いずれもEND文で終了します。

1)初期処理用手続き PROLOGUE~END
2)終了処理用手続き EPILOGUE~END
3)一般手続き ACTION~END
4)一般手続き MACTION~END
5)一般手続き FUNC~END

∇式中での手続き呼び出し

一般手続きは値を戻すことができ、〈式〉の中で以下の形式で呼び出せます。

†値はEXIT文で指定します。

〈手続き名〉(【〈引数式〉… 】)

†引数を持たない手続きでも“(”,“ )”は省略できません。

例: SET A=B+ mul(a,b)

PROLOGUE

初期処理用の手続きを定義します。マイクロスクリプトのウィンドウを最初に開いたときに一度だけ実行されます。1つのウィンドウの中に1つだけ存在する手続きです。

通常PROLOGUE手続きの中に、SCENE文APPEAR文を使って初期表示や各種の初期化を行います。

PROLOGUE手続きはなくてもかまいません。ただしこの場合、ウィンドウを開いた直後には、その中に何も表示されません。

プログラム例

VERSION 3
PROLOGUE
SCENE 背景 タイトル #SCENE文
END

EPILOGUE

終了処理用の手続きを定義します。PROLOGUE手続きと同様に、1つのウィンドウの中に1つだけ存在する手続きです。

ウィンドウが閉じられるときに一度だけ実行されます。マイクロスクリプトのウィンドウが閉じられるのは、以下のいずれかの場合です。

*[終了]メニューが選ばれた。または、ピクトグラムがダブルクリックされた。
*FINISH文が実行された。

EPILOGUE手続きが起動されると、それまで並列に動いていたスクリプトはすべて強制終了し、スレッドは1個だけになり、EPILOGUE手続きを実行します。

EPILOGUE手続きの中のスクリプト、あるいはEPILOGUE手続きの中からCALL文によって呼び出された手続きの中のスクリプトは、中断なしに実行されます。具体的には、以下の動作をします。

*WAIT文VWAIT文RSWAIT文SLEEP文のように待ちに入る文を実行しても、待たずにすぐに終了する。
*EXECUTE文によってスクリプトの並列起動を指示しても実行されない。
*この範囲のスクリプトを実行中はポインタは湯のみになっており、ユーザへの制御が渡らない。

特に終了処理が必要ない場合は、EPILOGUE手続きはなくてもかまいません。

プログラム例

VERSION 3
EPILOGUE
VCLOSE #VCLOSE文
END

ACTION 〈手続き名〉【〈イベント〉】

並列に実行される手続きで、複数実行できない一般手続きを定義します。定義した手続きは、イベントまたはEXECUTE文を使って起動されます。

†ACTION文で定義された手続きの1つを、並列して複数実行(多重起動)しても無視されます。多重起動を有効にするには、MACTION文で定義します。

†ACTION文で定義した手続きも、CALL文または式中の手続き呼び出しにより逐次実行できますが、FUNC文で定義して区別することをお勧めします。

∇〈手続き名〉

手続きに与えられる引数を参照するため、手続き内でのみ有効な名前です。

*手続きに与えられる引数を参照するため、手続き内でのみ有効な名前。同じ名前が大域変数にある場合、その大域変数は手続き内では参照できない。
*引数名は手続に与えられる引数の受け渡しに使う。また、手続き内の局所変数としても使える。
*引数は手続き内の局所変数と合計で最大256個まで持つことができる。
*引数として配列変数も指定できる。配列変数の引数は配列へのポインタの意味となる。手続き内での配列への値の設定は引数として指定した配列自体に設定される。
*引数として部分配列は指定できない。
*引数名の直後に、VARIABLE文と同様に引数の型を指定することができる。指定しない場合は汎用型となる。
*手続きからは値を1つだけ戻すことはできるが、2つ以上の値を戻したい場合は、引数に配列変数を指定して行う。

†型の指定は、プログラム実行時のエラーチェックを助けるため、できるだけ指定することが望ましい。

†引数を指定しない場合でも、8個の引数があるとみなされ、システム変数$ARG[0]~$ARG[7]で参照することもできる。

∇〈イベント〉

〈イベント〉を指定すると、そのイベントの発生によって手続きが実行されます。〈イベント〉を指定された手続きを、CALL文、またはEXECUTE文によって実行することも可能です。

イベントに対応するセグメントとして、〈セグメント名〉を複数記述することができます。

〈イベント名〉〈セグメント名〉…

†〈セグメント名〉を複数個記述した場合、ACTION文で定義した手続きは多重の実行ができないため、実行中の状態で発生したイベントは捨てられます。

イベントの発生により起動された〈手続き〉には以下の引数が渡されます。

†MENUイベントには引数は渡されません。

1番目:イベントの発生したセグメント自体
2番目:イベントの発生したセグメントの番号(セグメントの記述順番を示す0~Nの番号)
3番目:イベントの発生したX座標値
4番目:イベントの発生したY座標値(座標値はウィンドウの左上の点を(0,0)とした相対座標値)

例:ACTION ボタン(s, n,x,y)PRESS S1,S2,S3

S1でプレスした時:
s:S1 (“SET s=S1”と同じ)
n:0
x:X座標値
y:Y座標値

S2でプレスした時:
s:S2 (“SET s=S2”と同じ)
n:1
x:X座標値
y:Y座標値

S3でプレスした時:
s:S3 (“SET s=S3”と同じ)
n:2
x:X座標値
y:Y座標値

〈イベント〉は以下のいずれかであり、省略することができます。省略した場合には、単なる手続き(サブルーチン)の定義になります。

PRESS 〈セグメント名〉
〈セグメント名〉をPD(ポインティングデバイス)でプレスしたときにこの手続きを実行する。

CLICK 〈セグメント名〉
〈セグメント名〉をPDでクリックしたときにこの手続きを実行する。

DCLICK 〈セグメント名〉
〈セグメント名〉をPDでダブルクリックしたときにこの手続きを実行する。

QPRESS 〈セグメント名〉
〈セグメント名〉をPDでクリックプレスしたときにこの手続きを実行する。

MENU "〈メニュー項目文字列〉"
〈メニュー項目文字列〉を[操作]メニューに登録し、このメニュー項目が選択されたら、この手続きを実行する。
メニュー項目名の先頭が@の場合、@の直後の1文字はメニュー文字になる。

例:
MENU "動作-1" #動作-1というメニューを登録
MENU "@X動作-2"#動作-2というメニューを登録し、Xというメニュー文字を登録する。

最大8個まで[操作]メニューに登録できる。

†MENUイベントから起動された手続きには特に引数は渡されません。

†メニュー文字に設定できる文字は、システムスクリプトの文字に限ります。

KEY

マイクロスクリプトのウィンドウが最前面に出ている時に、何かキーが押されたら、この手続きを実行する。ただし、INPUT文またはKINPUT文により文字セグメントを入力状態にしている場合は、文字キー・[Backspace]キー・[Delete]キー以外のキーが押されたときのみこの手続きを実行する。たとえば、[Tab]キーや[Enter]キーなどが押されたときである。
左[Ctrl]キーと他のキーを組み合わせて押した場合は、この手続きは実行されない。

起動された手続きには、以下の引数が渡される。

1番目:押されたキーコード($KEYと同じ)
2番目:押されたときのメタキー/PD状態($KSTATと同じ)

例: ACTION キー(k,ks)KEY
kにはキーコードの値が入る。
ksにはメタキー/PD状態が入る。

セグメントを作るためにグループ化された図形データの中で、セグメト名文字枠を除いたすべての図形要素を含む最小の領域を、“セグメントの領域”と呼びます。イベントの対象となる領域は、この長方形領域全体となるため、実際に図形が存在しない位置でもイベントとして認識されます。

セグメントの領域

1つのセグメントに対して、PRESS・CLICK・DCLICK・QPRESSのイベントに対応する手続きを必要なだけ登録することができます。

PRESS・CLICK・DCLICK・QPRESSのイベントは、指定したセグメントがSCENE文またはAPPEAR文で表示状態になっているときのみ有効となります。

仮身セグメントには、DCLICKのイベントに対応する手続きとして、その仮身セグメントを実行する手続きが最初から定義されます。したがって、PDで仮身をダブルクリックすることにより、そのダブルクリック起動アプリケーションが実行されます。ピクトグラム以外の部分のダブルクリックも有効です。

プログラム例

VERSION 3
VARIABLE 標準価格:I,支払額:I
PROLOGUE
SET 標準価格=1000
EXECUTE 支払額計算(標準価格)
END
#消費税(5%)を加算した支払金額を求める手続き
ACTION 支払額計算(価格:I)
SET 支払額=価格*105/100
MESG "価格=%d 支払=%d",標準価格,支払額

END

出力
価格=1000 支払=1050

プログラム例

#セグメントSがクリックされたら、左右に揺らす手続き
ACTION 揺らす CLICK S
MOVE S :-10,0
MOVE S :20,0
MOVE S :-10,0
END

プログラム例

#セグメントT3がクリックされたら、T1とT2の文字セグメントの内容を加算して、T3に表示する手続き
ACTION 加算 CLICK T3
TEXT T3,“%d“,T1.V+T2.V
END

MACTION 〈手続き名〉【(〈引数名〉…)】【〈イベント〉】

並列に実行される手続きで、複数実行できる一般手続きを定義します。イベントまたはEXECUTE文を使って起動されます。

MACTION文は、複数実行出来る手続きを定義できる以外は、ACTION文と同じです。

∇多重起動

1つの手続きを並列して複数実行できます。これを多重起動と呼びます。多重起動された手続きを一意的に区別するために“手続き番号”を使います。

FUNC 〈手続き名〉【(〈引数名〉…)】

CALL文または式中の手続き呼び出しによって逐次実行される手続きを定義します。

〈引数名〉については、ACTION文と同じです。

END

手続きの記述が終了したことを示します。

前のページへ定義 次のページへ代入・条件判断・繰り返し

ページの先頭へ戻る

HOME > サポート情報 > 取扱説明書 > 手続き