#//=============================================================================
#//Sample.batが引数無しで実行された時に使い方を表示する。
Usage
		Usage				goto
						PrintStr			"USAGE: dSnrSeqS.exe Sample.txt Sample.tcl ?-v? ?tableName? ?trigName?"
						PrintStr			"       or"
						PrintStr			"       dSnrSeqS.exe Sample.bin Sample.tcl ?-v? ?tableName? ?trigName?"
		end
end
#//=============================================================================
#//マルチステートメントのサンプル
MultiStmt;	set		.set;		end
.set;		PrintStr	"ok";		end
#//=============================================================================
#//'def'命令のサンプル
#//当サンプルでのみ、'def'を省略しない例を示します。
#//当サンプル以外では、全て、'def'を省略しています。
Def
		Trg1				goto				.Trg1								#//┬シーケンス名に.ローカルラベルを使用する例
		Trg2				goto				.Trg2								#//┘
		Trg3				goto				Def_Trg3							#//┬シーケンス名にグローバルラベルを使用する例
		Trg4				goto				Def_Trg4							#//┘
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def		.Trg1																#//'def'を省略せずに.ローカルラベルを使用してシーケンスを定義する例
		SnrSeqCh_SetTblNo		1,table Def_Tbl1
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg2																		#//'def'を省略して.ローカルラベルを使用してシーケンスを定義する例
		SnrSeqCh_SetTblNo		1,table Def_Tbl2
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def		Def_Trg3															#//'def'を省略せずにグローバルラベルを使用してシーケンスを定義する例
		SnrSeqCh_SetTblNo		1,table Def_Tbl3
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Def_Trg4																	#//'def'を省略してグローバルラベルを使用してシーケンスを定義する例
		SnrSeqCh_SetTblNo		1,table Def_Tbl4
end
#//-----------------------------------------------------------------------------
def		Def_Tbl1															#//'def'を省略せずにテーブルを定義する例
		set				goto
						PrintStr			"ok"
		end
end
#//-----------------------------------------------------------------------------
Def_Tbl2																	#//'def'を省略してテーブルを定義する例
		set				goto
						PrintStr			"ok"
		end
end
#//-----------------------------------------------------------------------------
def		@@																#//'def'を省略せずに@ローカルラベルを使用してシーケンスを定義する例
		PrintStr			"@@ above Def_Tbl3 called"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Def_Tbl3
		set				goto
						call				@F								#//@ローカルラベルで定義されたシーケンスを呼び出す例
		end
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@																		#//'def'を省略して@ローカルラベルを使用してシーケンスを定義する例
		PrintStr			"@@ between Def_Tbl3 and Def_Tbl4 called"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Def_Tbl4
		set				goto
						call				@B								#//@ローカルラベルで定義されたシーケンスを呼び出す例
						call				@F								#//@ローカルラベルで定義されたシーケンスを呼び出す例
		end
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@																		#//'def'を省略して@ローカルラベルを使用してシーケンスを定義する例
		PrintStr			"@@ below Def_Tbl4 called"
end
#//=============================================================================
#//'end'命令のサンプル
#//End
#//⇒'end'命令の個別テストは有りません。
#//=============================================================================
#//'on goto'命令のサンプル
OnGoto
		Trg1								.Trg1								#//テーブル外でシーケンスを定義する例
		Trg2				goto												#//テーブル内でシーケンスを定義する例。gotoは省略不可。
						PrintStr			"ok"
		end
	on	Trg3				goto				.Trg3								#//テーブル外でシーケンスを定義する例。onを省略しない書式。
	on	Trg4				goto												#//テーブル内でシーケンスを定義する例。onを省略しない書式。
						PrintStr			"ok"
		end
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1
		PrintStr			"ok"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg3
		PrintStr			"ok"
end
#//=============================================================================
#//'on exec'命令のサンプル
OnExec
		Trg1				exec				.Trg1								#//テーブル外でシーケンスを定義する例
		Trg2				exec												#//テーブル内でシーケンスを定義する例。
						PrintStr			"ok"
		end
	on	Trg3				exec				.Trg3								#//テーブル外でシーケンスを定義する例。onを省略しない書式。
	on	Trg4				exec												#//テーブル内でシーケンスを定義する例。onを省略しない書式。
						PrintStr			"ok"
		end
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1
		PrintStr			"ok"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg3
		PrintStr			"ok"
end
#//=============================================================================
#//'lock','unlock'命令のサンプル(gotoバージョン)
Lock1
		#//ドライバー。(これを起動して下さい。)
		Trg1				goto
						SnrSeqCh_SetTblNo		1,table Lock1
						#//単純な例
						PrintStr			"---"
						SnrSeqCh_SendTrig		1,trig Trg1_1a							#//10フレームロックする。
						wait
						SnrSeqCh_SendTrig		1,trig Trg1_2							#//ロックが解除されるまで(10-1)フレーム遅れて.Trg1_2が開始する。
						wait				100
						#//アンロック付きシーケンス起動の例
						PrintStr			"---"
						SnrSeqCh_SendTrig		1,trig Trg1_1a							#//10フレームロックする。
						wait
						SnrSeqCh_SendTrig		1,trig Trg1_3							#//unlockが付いているので強制的にアンロックして即.Trg1_3が開始する。
						wait				100
						#//アンロックのみのトリガの例
						PrintStr			"---"
						SnrSeqCh_SendTrig		1,trig Trg1_1a							#//10フレームロックする。
						wait
						SnrSeqCh_SendTrig		1,trig Trg1_4							#//明示的にアンロックのみを行う。
						SnrSeqCh_SendTrig		1,trig Trg1_2							#//既にアンロックされているので即.Trg1_2が開始する。
						#//
						PrintStr			"---"
						SnrSeqCh_SendTrig		1,trig Trg1_1a							#//10フレームロックする。
						wait
						SnrSeqCh_SendTrig		1,trig Trg1_1a							#//(10-1)フレーム遅れて開始し、新たに10フレームロックする。
						wait
						SnrSeqCh_SendTrig		1,trig Trg1_2							#//(10-1)フレーム遅れて開始する。
		end
		#//テスト用。(直接起動しないで下さい。)
		Trg1_1a				goto				.Trg1_1				lock	10			#//lockを省略しない書式。	┬どちらでも同じ。
		Trg1_1b				goto				.Trg1_1					10			#//lockを省略する書式。		┘
		Trg1_2				goto				.Trg1_2
		Trg1_3		unlock		goto				.Trg1_3
		Trg1_4		unlock
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		PrintStr			".Trg1_1 called"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_2
		PrintStr			".Trg1_2 called"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_3
		PrintStr			".Trg1_3 called"
end
#//=============================================================================
#//'lock','unlock'命令のサンプル(execバージョン)
Lock2
		#//ドライバー。(これを起動して下さい。)
		Trg1				exec
						SnrSeqCh_SetTblNo		1,table Lock2
						#//単純な例
						PrintStr			"---"
						SnrSeqCh_SendTrig		1,trig Trg1_1a							#//10フレームロックする。
						wait
						SnrSeqCh_SendTrig		1,trig Trg1_2							#//ロックが解除されるまで(10-1)フレーム遅れて.Trg1_2が開始する。
						wait				100
						#//アンロック付きシーケンス起動の例
						PrintStr			"---"
						SnrSeqCh_SendTrig		1,trig Trg1_1a							#//10フレームロックする。
						wait
						SnrSeqCh_SendTrig		1,trig Trg1_3							#//unlockが付いているので強制的にアンロックして即.Trg1_3が開始する。
						wait				100
						#//アンロックのみのトリガの例
						PrintStr			"---"
						SnrSeqCh_SendTrig		1,trig Trg1_1a							#//10フレームロックする。
						wait
						SnrSeqCh_SendTrig		1,trig Trg1_4							#//明示的にアンロックのみを行う。
						SnrSeqCh_SendTrig		1,trig Trg1_2							#//既にアンロックされているので即.Trg1_2が開始する。
						#//
						PrintStr			"---"
						SnrSeqCh_SendTrig		1,trig Trg1_1a							#//10フレームロックする。
						wait
						SnrSeqCh_SendTrig		1,trig Trg1_1a							#//(10-1)フレーム遅れて開始し、新たに10フレームロックする。
						wait
						SnrSeqCh_SendTrig		1,trig Trg1_2							#//(10-1)フレーム遅れて開始する。
		end
		#//テスト用。(直接起動しないで下さい。)
		Trg1_1a				exec				.Trg1_1				lock	10			#//lockを省略しない書式。	┬どちらでも同じ。
		Trg1_1b				exec				.Trg1_1					10			#//lockを省略する書式。		┘
		Trg1_2				exec				.Trg1_2
		Trg1_3		unlock		exec				.Trg1_3
		Trg1_4		unlock
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		PrintStr			".Trg1_1 called"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_2
		PrintStr			".Trg1_2 called"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_3
		PrintStr			".Trg1_3 called"
end
#//=============================================================================
#//'exit'命令のサンプル
Exit
		Trg1								.Trg1
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1
		PrintStr			"before .Trg1_1"										#//実行されます。
		call				.Trg1_1
		PrintStr			"after  .Trg1_1"										#//実行されません。
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		PrintStr			"before .Trg1_2"										#//実行されます。
		call				.Trg1_2
		PrintStr			"after  .Trg1_2"										#//実行されません。
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_2
		PrintStr			"before exit"											#//実行されます。
		exit
		PrintStr			"after  exit"											#//実行されません。
end
#//=============================================================================
#//'escape'命令のサンプル
Escape
		#//ドライバー。(これを起動して下さい。)
		Trg1				goto
						SnrSeqCh_SetTblNo		1,table Escape
						SnrSeqCh_SendTrig		1,trig Trg1_1
						wait				15
						SnrSeqCh_Stop			1
		end
		#//テスト用。(直接起動しないで下さい。)
		Trg1_1								.Trg1_1
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		PrintStr			"A"				ensure								#//┐
		wait				10												#//├アトミック
		PrintStr			"B"				ensure								#//┘
		escape
		PrintStr			"C"				ensure								#//┐
		wait				10												#//├アトミック		#//このタイミングで停止されると、
		PrintStr			"D"				ensure								#//┘
		escape																			#//ここまで実行されて終了します。escapeが無ければ最後まで実行されます。
		PrintStr			"E"				ensure								#//┐
		wait				10												#//├アトミック
		PrintStr			"F"				ensure								#//┘
end
#//=============================================================================
#//'wait'命令のサンプル
#//Wait
#//⇒'wait'命令の個別テストは有りません。
#//=============================================================================
#//'wait for'命令のサンプル
WaitFor
		#//ドライバー。(これを起動して下さい。)
		Trg1				goto
						SnrSeqCh_SetTblNo		1,table WaitFor
						SetVar				"Foo",0
						SnrSeqCh_SendTrig		1,trig Trg1_1
						wait				10
						SetVar				"Foo",1
						wait				100
						SnrSeqCh_SendTrig		1,trig Trg1_2
						wait				10
						SetVar				"Foo",0
		end
		#//テスト用。(直接起動しないで下さい。)
		Trg1_1								.Trg1_1
		Trg1_2								.Trg1_2
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		wait				GetVar("Foo")											#//「wait for GetVar("Foo")」と書いても同じです。関数に引数が無い場合は「()」を書いても書かなくても構いません。
		PrintStr			".Trg1_1 ok"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_2
		wait				not GetVar("Foo")										#//「wait for not GetVar("Foo")」と書いても同じです。
		PrintStr			".Trg1_2 ok"
end
#//=============================================================================
#//'fork','join'命令のサンプル
Fork
		#//ドライバー。(これを起動して下さい。)
		Trg1				goto
						SnrSeqCh_SetTblNo		1,table Fork
						SnrSeqCh_SendTrig		1,trig Trg1_1
		end
		#//テスト用。(直接起動しないで下さい。)
		Trg1_1								.Trg1_1
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		fork
						fork
										repeat				5
														PrintStr				"              Child2"
														wait					30
										end
						end
						repeat				5
										PrintStr				"       Child1"
										wait					20
						end
		end
		repeat				5
						PrintStr				"Parent"
						wait					10
		end
		join
		PrintStr			"ok"
end
#//=============================================================================
#//'hide'命令のサンプル
Hide
		#//ドライバー。(これを起動して下さい。)
		Trg1				goto
						SnrSeqCh_SetTblNo		1,table Hide
						SnrSeqCh_SendTrig		1,trig Trg1_1
						wait				not SnrSeqCh_GetStat(1)
						PrintStr			"ok"
						wait				100
		end
		#//テスト用。(直接起動しないで下さい。)
		Trg1_1								.Trg1_1
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		repeat				5
						PrintStr			"pre hide"
						wait				10
		end
		hide
		wait
		repeat				5
						PrintStr			"post hide"
						wait				10
		end
end
#//=============================================================================
#//'goto'命令のサンプル
Goto
		Trg1				.Trg1
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1
		PrintStr			"before call"
		call				.Trg1_1												#//呼び出し先でgoto命令がスタックをリセットするので、このcallは戻りません。
		PrintStr			"after  call"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		PrintStr			"before goto"
		goto				.Trg1_2
		PrintStr			"after  goto"											#//ここには来ません。
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_2
		PrintStr			"ok"
end
#//=============================================================================
#//'call'命令のサンプル
Call
		Trg1				.Trg1
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1
		PrintStr			"before call 1"
		call				.Trg1_1
		PrintStr			"after  call 1"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		PrintStr			"before call 2"
		call				.Trg1_2
		PrintStr			"after  call 2"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_2
		PrintStr			"ok"
end
#//=============================================================================
#//'if'命令のサンプル
If
		Trg1				goto
						SetVar				"Foo1",1
						SetVar				"Foo2",1
						SetVar				"Foo3",1
						SetVar				"Bar",0
						call				.Trg1_1
						SetVar				"Foo1",0
						call				.Trg1_1
						SetVar				"Foo2",0
						call				.Trg1_1
						SetVar				"Foo3",0
						call				.Trg1_1
		end
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		if				GetVar("Foo1")
						PrintStr			"Foo1"
		elif				GetVar("Foo2")											#//elifブロックは無くても構いません。
						PrintStr			"Foo2"
		elif				GetVar("Foo3")
						PrintStr			"Foo3"
						if				GetVar("Bar")							#//ネストの例
										PrintStr		"Bar is true"
						else
										PrintStr		"Bar is false"
						end
		else																#//elseブロックは無くても構いません。
						PrintStr			"No match"
		end
end
#//=============================================================================
#//'if not'命令のサンプル
IfNot
		Trg1				goto
						SetVar				"Foo1",0
						SetVar				"Foo2",0
						SetVar				"Foo3",0
						SetVar				"Bar",1
						call				.Trg1_1
						SetVar				"Foo1",1
						call				.Trg1_1
						SetVar				"Foo2",1
						call				.Trg1_1
						SetVar				"Foo3",1
						call				.Trg1_1
		end
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		if				not GetVar("Foo1")
						PrintStr			"Foo1"
		elif				not GetVar("Foo2")										#//elifブロックは無くても構いません。
						PrintStr			"Foo2"
		elif				not GetVar("Foo3")
						PrintStr			"Foo3"
						if				not GetVar("Bar")						#//ネストの例
										PrintStr		"Bar is false"
						else
										PrintStr		"Bar is true"
						end
		else																#//elseブロックは無くても構いません。
						PrintStr			"No match"
		end
end
#//=============================================================================
#//'unless'命令のサンプル
#//この例では示しませんが、'unless not'も可能です。
Unless
		Trg1				goto
						SetVar				"Foo",0
						SetVar				"Bar",1
						call				.Trg1_1
						SetVar				"Foo",1
						call				.Trg1_1
		end
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		unless				GetVar("Foo")
						PrintStr			"Foo"
		else																#//elseブロックは無くても構いません。
						PrintStr			"No match"
						unless				GetVar("Bar")							#//ネストの例
										PrintStr		"Bar is false"
						else
										PrintStr		"Bar is true"
						end
		end
end
#//=============================================================================
#//'case of'命令のサンプル
CaseOf
		Trg1				goto
						SetVar				"Foo",1
						SetVar				"Bar",1
						call				.Trg1_1
						SetVar				"Foo",2
						call				.Trg1_1
						SetVar				"Foo",3
						call				.Trg1_1
		end
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		case				GetVar("Foo")											#//「case GetVar("Foo") of」と書いても同じです。
		1
						PrintStr			"Foo is 1"
		2
						PrintStr			"Foo is 2"
						case				GetVar("Bar")							#//ネストの例
						1
										PrintStr			"Bar is 1"
						2
										PrintStr			"Bar is 2"
						else
										PrintStr			"No match"
						end
		else
						PrintStr			"No match"
		end
end
#//=============================================================================
#//'repeat','break'命令のサンプル
Repeat
		#//ドライバー。(これを起動して下さい。)
		Trg1				goto
						SnrSeqCh_SetTblNo		1,table Repeat
						#//無限repeatのテスト
						SnrSeqCh_SendTrig		1,trig Trg1_1
						wait				10
						SnrSeqCh_Stop			1								#//強制停止
						wait				100
						#//一段breakのテスト
						SnrSeqCh_SendTrig		1,trig Trg1_2
						wait				not SnrSeqCh_GetStat(1)
						wait				100
						#//多段breakのテスト
						SnrSeqCh_SendTrig		1,trig Trg1_3
						wait				not SnrSeqCh_GetStat(1)
						#//call先でのbreakのテスト
						SnrSeqCh_SendTrig		1,trig Trg1_4
						wait				not SnrSeqCh_GetStat(1)
						#//有限repeatのテスト
						SnrSeqCh_SendTrig		1,trig Trg1_4
						wait				not SnrSeqCh_GetStat(1)
		end
		#//テスト用。(直接起動しないで下さい。)
		Trg1_1								.Trg1_1
		Trg1_2								.Trg1_2
		Trg1_3								.Trg1_3
		Trg1_4								.Trg1_4
		Trg1_5								.Trg1_5
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		PrintStr			".Trg1_1 start"
		repeat
						wait
		end
		PrintStr			".Trg1_1 end"											#//ここには来ません。
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_2
		PrintStr			".Trg1_2 start"
		SetVar				"Foo",10
		repeat
						unless				GetVar("Foo")
										break								#//一段breakの例。「break 1」と書いても同じです。
						end
						AddVar				"Foo",-1 & 255
						wait
		end
		PrintStr			".Trg1_2 end"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_3
		PrintStr			".Trg1_3 start"
		SetVar				"Foo",10
		repeat
						repeat
										unless				GetVar("Foo")
														break 2				#//二段breakの例。この例ではrepeatスタックが二段なので「break 3」はエラーになります。
										end
										AddVar				"Foo",-1 & 255
										wait
						end
		end
		PrintStr			".Trg1_3 end"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_4
		PrintStr			".Trg1_4 start"
		SetVar				"Foo",10
		repeat
						call				.Trg1_4_1
						AddVar				"Foo",-1 & 255
						wait
		end
		PrintStr			".Trg1_4 end"
end
.Trg1_4_1
		unless				GetVar("Foo")
						break												#//call先でのbreakの例。break命令はrepeatスタックだけを数えるのでcallを挟んでも関係有りません。この例は一段breakですが多段breakでも同様です。
		end
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_5
		PrintStr			".Trg1_5 start"
		repeat				10												#//この例では示しませんが、有限repeatに対してもbreak命令は、無限repeatの例と同様に使用出来ます。
						wait
		end
		PrintStr			".Trg1_5 end"
end
#//=============================================================================
#//'while','while not','until','until not'命令のサンプル
While
		#//ドライバー。(これを起動して下さい。)
		Trg1				goto
						SnrSeqCh_SetTblNo		1,table While
						SetVar				"Foo",1
						SnrSeqCh_SendTrig		1,trig Trg1_1
						#//while命令のテスト
						wait				10
						SetVar				"Foo",0
						#//while not命令のテスト
						wait				10
						SetVar				"Foo",1
						#//until not命令のテスト
						wait				10
						SetVar				"Foo",0
						#//until命令のテスト
						wait				10
						SetVar				"Foo",1
		end
		#//テスト用。(直接起動しないで下さい。)
		Trg1_1								.Trg1_1
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		while				GetVar("Foo")
						wait
		end
		PrintStr			"while ok"
		while				not GetVar("Foo")
						wait
		end
		PrintStr			"while not ok"
		until				not GetVar("Foo")
						wait
		end
		PrintStr			"until not ok"
		until				GetVar("Foo")
						wait
		end
		PrintStr			"until ok"
end
#//=============================================================================
#//'act'命令のサンプル
Act
		#//ドライバー。(これを起動して下さい。)
		Trg1				goto
						SnrSeqCh_SetTblNo		1,table Act
						#//次のトリガで割り込む例。
						SnrSeqCh_SendTrig		1,trig Trg1_1
						wait				5
						SnrSeqCh_SendTrig		1,trig Trg1_2
						wait				not SnrSeqCh_GetStat(1)
						#//明示的な停止で割り込む例。
						SnrSeqCh_SendTrig		1,trig Trg1_1
						wait				5
						SnrSeqCh_Stop			1
						wait				not SnrSeqCh_GetStat(1)
						#//clrトリガで割り込む例。
						SnrSeqCh_SendTrig		1,trig Trg1_1
						wait				5
						SnrSeqCh_SetTbl			1,"NULL"
						wait				not SnrSeqCh_GetStat(1)
						#//
						SnrSeqCh_SetTblNo		1,table Act
						#//停止時はrepeatを抜ける例。
						SnrSeqCh_SendTrig		1,trig Trg1_3
						wait				5
						SnrSeqCh_SendTrig		1,trig Trg1_2
						wait				not SnrSeqCh_GetStat(1)
						#//停止時はwhileを抜ける例。
						SnrSeqCh_SendTrig		1,trig Trg1_4
						wait				5
						SnrSeqCh_SendTrig		1,trig Trg1_2
						wait				not SnrSeqCh_GetStat(1)
						#//停止時はwait forを抜ける例。
						SnrSeqCh_SendTrig		1,trig Trg1_5
						wait				5
						SnrSeqCh_SendTrig		1,trig Trg1_2
						wait				not SnrSeqCh_GetStat(1)
						#//actで呼び出される関数の戻り値はwaitとなる事を示す例。
						SnrSeqCh_SendTrig		1,trig Trg1_6
						wait				not SnrSeqCh_GetStat(1)
		end
		#//テスト用。(直接起動しないで下さい。)
		Trg1_1								.Trg1_1
		Trg1_2								.Trg1_2
		clr								.Trg1_2
		Trg1_3								.Trg1_3
		Trg1_4								.Trg1_4
		Trg1_5								.Trg1_5
		Trg1_6								.Trg1_6
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_1
		act				PrintStr(".Trg1_1 ok")										#//┬どちらでも同じです。引数が無い場合は「()」を書いても書かなくても構いません。
		PrintStr			".Trg1_1 ok"											#//┘
		wait				10
		PrintStr			"A"
		wait				10												#//この途中で有効なトリガが送信され、シーケンスが切り替えられ、現在のシーケンスが停止されても・・・
		PrintStr			"B"				ensure								#//最後まで(厳密にはescapeまで)走査され、その途中にあるensure付き命令は実行されます。
		wait				10
		PrintStr			"C"
		wait				10
		PrintStr			"D"				ensure
		wait				10
		PrintStr			"E"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_2
		PrintStr			".Trg1_2 ok"
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_3
		PrintStr			".Trg1_3 start"			ensure
		repeat				100												#//5回目で割り込まれて抜ける。
						PrintStr			"in repeat"			ensure
						wait
		end
		PrintStr			".Trg1_3 end"			ensure
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_4
		PrintStr			".Trg1_4 start"			ensure
		SetVar				"Foo",1
		while				GetVar("Foo")											#//5回目で割り込まれて抜ける。
						PrintStr			"in repeat"			ensure
						wait
		end
		PrintStr			".Trg1_4 end"			ensure
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_5
		PrintStr			".Trg1_5 start"			ensure
		SetVar				"Foo",1
		wait				not GetVar("Foo")										#//5フレームで割り込まれて抜ける。
		PrintStr			".Trg1_5 end"			ensure
end
#//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.Trg1_6
		SetVar				"Foo",0
		PrintStr			"before return 0"
		GetVar				"Foo"												#//戻り値が0なのでwait 0となる。
		PrintStr			"after  return 0"
		SetVar				"Foo",1
		PrintStr			"before return 1"
		GetVar				"Foo"												#//戻り値が1なのでwait 1となる。
		PrintStr			"after  return 1"
		SetVar				"Foo",10
		PrintStr			"before return 10"
		GetVar				"Foo"												#//戻り値が10なのでwait 10となる。
		PrintStr			"after  return 10"
		act				SetVar("Foo",10)
		act				PrintStr("before return 10")
		act				GetVar("Foo")											#//戻り値が10なのでwait 10となる。(actを省略してもしなくても動作に違いは有りません。)
		act				PrintStr("after  return 10")
end
