MSアドベンチャーSDK-コマンドレファレンス



5.2■ コマンド
5.2.01■ Adv_Keys コマンド
5.2.02■ Assignmentステートメント: 変数 = 値
5.2.03■ Baro_Pressureコマンド
5.2.04■ Clouds コマンド
5.2.05■ Clouds, Delete コマンド
5.2.06■ Debug_Window コマンド
5.2.07■ Debug_Print コマンド
5.2.08■ Declare コマンド
5.2.09■ Description コマンド
5.2.10■ East_Longitude コマンド
5.2.11■ Else Command コマンド
5.2.12■ ElseIf...[Then] コマンド
5.2.13■ End コマンド
5.2.14■ EndIf コマンド
5.2.15■ EndWhile コマンド
5.2.16■ For...To コマンド
5.2.17■ GoSub コマンド
5.2.18■ GoTo コマンド
5.2.19■ If...[Then] コマンド
5.2.20■ Label コマンド
5.2.21■ Load_Situation コマンド
5.2.22■ Next コマンド
5.2.23■ North_Latitude コマンド
5.2.24■ On...GoSub コマンド
5.2.25■ On...GoTo コマンド
5.2.26■ OnCrash コマンド
5.2.27■ Onexp_Bool_Change...GoSub コマンド
5.2.28■ Onexp_Change...GoSub Command コマンド
5.2.29■ Onexp_Clear コマンド
5.2.30■ Onexp_True...GoSub コマンド


5.2.01■ Adv_Keys コマンド
Adv_Keysコマンドはアドベンチャーによって使用されるキーリストを制御します。リスト
にあるキーはアドベンチャー内で使用できますが、フライトシミュレータでは有効ではあ
りません。リストにないキーはアドベンチャー内で有効ではありません。

OnKeyコマンドで使用するつもりのキーはAdv_Keysコマンドで登録しておく必要があります。

構文

Adv_Keys Add, key, ... 

キーリストに追加するキーを指定します。(複数指定も可)すでにリストにあるキーは無視さ
れます。

Adv_Keys Delete, key, ... 

キーリストから削除するキーを指定します。(複数指定も可)リストにないキーに対する指定
は無視されます。

Adv_Keys Clear

キーリストから全てのキーを削除します。 

使用例

ADV_KEYS ADD, KV(CTRL "r")

ADV_KEYS DELETE, KV(CTRL "r")

ADV_KEYS CLEAR

次の例の中でkeyと書かれている部分はKey値になります。構文上オプションは括弧[ ]で示さ
れています。

KV([CTRL] [SHIFT] "")

上記の例で以下の値がsingle characterの替わりに使用できます。 
KEYPAD0, KEYPAD1, KEYPAD2, KEYPAD3, KEYPAD4, KEYPAD5, KEYPAD6, KEYPAD7, KEYPAD8, KEYPAD9, KEYPADPERIOD, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12



5.2.02■ Assignmentステートメント: 変数 = 値

変数に特定の値を入れる。

使用例
DECLARE TargetAltitude

TargetAltitude = 500



5.2.03■ Baro_Pressureコマンド

最新のWeatherコマンドによって定義されたフライトシミュレータの天候エリアに気圧(バ
ロメータ)をセットします。

構文

Baro_Pressure pressure , drift

引数
pressure		水銀柱での気圧をインチで指定します。
drift		変化を指定します。driftが真(ゼロでない場合), 値は変化します。driftが
		偽(0)の場合は値は固定になります。

使用例

BARO_PRESSURE 29.92,0



5.2.04■ Clouds コマンド

最新のWeatherコマンドによって定義されたフライトシミュレータの天候エリアに雲の層
(レイヤー)を作成、変更します。また、雲の層にその特徴を与えることができます。雲の層
は三つまで指定することができます。

構文

Clouds layer , base , top , type , coverage , turbulence , deviation , icing

引数
layer		レイヤーの番号を指定します。
base		雲の底の高度(MSL)をフィート単位で指定します。
top		雲の頂上の高度(MSL)をフィート単位で指定します。
type		雲のタイプをキーワードで指定します。
coverage	雲のカバレッジをキーワードで指定します。
turbulence	タービュランスの度合いを0〜255までの数値で指定します。
deviation		偏差をフィート単位で指定します。
icing		アイシング条件を指定するフラグです。0の場合はアイシングなし、
		1でアイシング有りになります。

Note: TYPEパラメータの値によって、他のパラメータの値に制約がでます。

使用例

CLOUDS 1, 10000, 25000, userdefined, scattered1, 0, 0, 0



5.2.05■ Clouds, Delete コマンド

最新のWeatherコマンドによって定義されたフライトシミュレータの天候エリアの雲の層
(レイヤー)を削除します。

構文

Clouds layer , Delete

引数 
layer 		削除する雲の層の番号を指定します。

使用例

CLOUDS 1, DELETE



5.2.06■ Debug_Window コマンド

デバッグウインドウのオン、オフを行います。

構文

Debug_Window on | off

on パラメータによりデバッグウインドウが開かれ、off パラメターにより閉じられます。

使用例

DEBUG_WINDOW ON



5.2.07■ Debug_Print コマンド

デバッグウインドウへプリント出力する。

構文

Debug_Print print-list

引数
print-list は0又はそれ以上の項目で各々の項目はコンマで区切られた文字列または数値で表
します。コマンドの最後がコンマで終った場合はそのテキストは次のPrintコマンドにコンカ
チされます。(メッセージウインドウ上、改行は行われず、最後の行の続きに表示されます。)
詳しい説明はPrint コマンドを参照して下さい。

使用例

'飛行機の高度をデバッグウインドウに出力する
DEBUG_PRINT PLANE_ALT



5.2.08■ Declare コマンド

後続で使用する特定の名前の新しい変数を一つまたは複数作成します。

構文

Declare variable, variable, ... 

引数
variableの名前は文字で始まり文字、数字、アンダースコアが使用できます。

使用例

DECLARE TargetAltitude, actual_alt, Current_Alt1



5.2.09■ Description コマンド

アドベンチャーファイルのヘダーに記入するアドベンチャーの内容説明を指定します。この
内容説明はアドベンチャーとレッスンダイアログボックスに表示されます。

構文

Description string

引数
stringはファイルヘダーに含まれることになる内容説明で、最大で255文字までです。複数行
の内容説明の場合にコンパイラーが各行に付加するスペースを含みます。

参考
Descriptionコマンドは制限文字数に達するまで、何回でも使用できます。
複数のDescriptionコマンドが使用された場合、各文字列の最後にスペースが自動的に追加さ
れます。このスペースも最大文字数にカウントされます。

使用例

DESCRIPTION "This is line one." 

DESCRIPTION "This is the second line." 

結果: This is line one. This is the second line. 



5.2.10■ East_Longitude コマンド

経度を東経で指定する宣言です。負で指定した時は西経となります。

構文

East_Longitude

使用例

'Turkey

NORTH_LATITUDE

EAST_LONGITUDE

'Australia

SOUTH_LATITUDE

EAST_LONGITUDE



5.2.11■ Else Command コマンド

条件による実行です。Ifコマンドとマッチし、以前のElseIfコマンドが条件を満たさず、IFコ
マンドの引数が0でない場合は、次にマッチするElseIf、 Else、 EndIfまで Elseの後続のコマ
ンドが実行されます。

構文

ElseIf 条件 [Then] 

キーワードThenはオプションです。 

使用例

IF PLANE_ALT > 3000 THEN

PRINT "Altitude is greater than 3,000." 
ELSEIF PLANE_ALT > 2000 THEN
	PRINT "Altitude is greater than 2,000." 
ELSEIF PLANE_ALT > 1000
	PRINT "Altitude is greater than 1,000." 
ELSE
	PRINT "Altitude is less than 1,001." 
ENDIF



5.2.12■ ElseIf...[Then] コマンド

後続の命令を条件付きで実行します。Ifコマンドとマッチし、以前のElseIfコマンドが条件
を満たさず、IFコマンドの引数が0でない場合は、次にマッチするElseIf、 Else、 EndIf
まで Elseの後続のコマンドが実行されます。

構文

ElseIf 条件 [Then] 

キーワードThenはオプションです。 

使用例

IF PLANE_ALT > 3000 THEN

PRINT "Altitude is greater than 3,000." 
ELSEIF PLANE_ALT > 2000 THEN
	PRINT "Altitude is greater than 2,000." 
ELSEIF PLANE_ALT > 1000
	PRINT "Altitude is greater than 1,000." 
ELSE
	PRINT "Altitude is less than 1,001." 
ENDIF



5.2.13■ End コマンド

アドベンチャーの論理的な終了マークです。Endコマンドが実行された時にはアドベンチャー
ドライバーはプログラムの最終に達した時と同様、実行を終了します。

構文

End

使用例

IF PLANE_ALT > 4000 THEN

END

ELSE

PRINT "Altitude is less than 4,001." 

ENDIF



5.2.14■ EndIf コマンド

If構造の終了マークです。 

構文

EndIf

使用例

IF PLANE_ALT > 3000

PRINT "Altitude is greater than 3,000." 

ENDIF



5.2.15■ EndWhile コマンド

一般ループです。EndWhileコマンドはマッチするWhileに対し無条件で戻ります。

構文

EndWhile

使用例

WHILE PLANE_BANK > 5

PRINT "Turning left." 

ENDWHILE



5.2.16■ For...To コマンド

繰り返しループです。For...To commandコマンドが含まれる行に続く行がマッチするNext
コマンドまで実行されます。 繰り替えし実行される回数は変数がexpression1から
expression2までの間でexpression3は増分です. 

構文

For variable = expression1 To expression2 [By expression3] 

引数

expression1	ループが開始される時の数を指定します。
expression2	ループが終了する時の数を指定します。
expression3	増分を指定します。これはオプションで指定されない時はデフォルトの
		増分は1になります。

参考

もし、expression1がexpression2より大きく、且つexpression3が負でない場合、
For...To.....Nextの間のコードは実行されません。ループが始まった時、expression2
とexpression3は一度だけ評価され、ループ中の変数の値の変更はループそれ自身
には影響を与えません。
BASICの場合Byの替わりにStepが使われます。

使用例

DECLARE Test_Value

'This example will print 2, 3, 4, 5, 6, 7, 8, 9, 10. 

FOR Test_Value = 2 TO 10

PRINT "Test value = ",Test_Value

NEXT Test_Value

'This example will print 2, 4, 6, 8, 10. 

FOR Test_Value = 2 TO 10 BY 2

PRINT "Test value = ",Test_Value

NEXT Test_Value

'This example will print 5, 4, 3, 2, 1. 

FOR Test_Value = 5 TO 1 BY -1

PRINT "Test value = ",Test_Value

NEXT Test_Value



5.2.17■ GoSub コマンド

サブルーチンをコールします。GoSubコマンドが使用された時には、特定のラベルのついた
部分まで飛び、Returnコマンドがでてくるまで、それが実行されます。 Returnコマンドが出
てきた所で、Gosubに続く所に実行ポイントが戻ります。

構文

GoSub label

引数
labelはLabelコマンドによって定義されます。 

参考

サブルーチンは50段階までのネストが認められます。

使用例

'もし、飛行機の高度が5000以上の時にはprint文が実行され、その後、END文が実行される。

IF PLANE_ALT > 5000 THEN

	GOSUB subAlt_5K

ENDIF

END

subAlt_5K: 

	PRINT "Altitude is greater than 5,000." 

	RETURN



5.2.18■ GoTo コマンド

特定のラベルへの即時分岐コマンドです。

構文

GoTo label

引数
labelはLabelコマンドによって定義されます。

参考

Goto以外の制御構造が望ましいですが、いくつかのタスクはGotoコマンドでないと実現で
きません。例えば、大きなエラーが発生した時、アドベンチャーを終了させるのに
GoTo MAIN_ENDコマンドを使用することができます。しかしながら、複数のGotoコマンド
を使用するとコードをトレースすることが困難になります。

使用例

'もし、飛行機の高度が5000以上であれば、END文をスキップしてPRINT文を実行し6000かど
うかをチェックします。

IF PLANE_ALT > 5000 THEN

	GOTO subAlt_5K

ENDIF

END

subAlt_5K: 

	PRINT "Altitude is greater than 5,000." 

IF PLANE_ALT = 6000 THEN

	PRINT "Aircraft altitude equals 6,000." 

ENDIF



5.2.19■ If...[Then] コマンド

後続の命令を条件付きで実行します。条件文が0でなければ、If...[Then] コマンドは後続の
コマンドをマッチするElseIf, Else, EndIfがある部分まで実行します。

構文

If expression [ Then ] 

キーワードThenはオプションです。 

使用例

'この二つは同じ内容になります。

IF PLANE_ALT = 6000 THEN

	PRINT "Aircraft altitude equals 6,000." 

ENDIF

IF PLANE_ALT = 6000

	PRINT "Aircraft altitude equals 6,000." 

ENDIF



5.2.20■ Label コマンド

GoTo, GoSub, OnCrash GoSub等のコマンドが分岐すべきコード中のマーカーを指定します。
GoSubのないOnCrashコマンドはlabelを使用する必要はありません。コマンドによっては
ラベル名の後の内容が異なっていても、一種類のラベル名しか許容しないものがあります。

構文

Label : 

参考

・ラベル名は文字で始まり文字、数字、アンダースコアが使用できます。 
・ラベル名はユニークでなければなりません。但し、ラベル名と変数名は同じ名前が使用で
   きます。
・ラベルはGoto命令の前でも後でもどこにでも置くことができます。

使用例

'MAIN_ENDというラベルをGotoコマンドの後ろに置いたケース。 

GOTO MAIN_END

MAIN_END: 

	END

'GOTO命令をMAIN_ENDというラベルの後に置いたケース 

MAIN_END: 

	END

GOTO MAIN_END



5.2.21■ Load_Situation コマンド

stringによって指定されたシチュエーションファイルをロードします。ドライバーは最初に
カレントディレクトリーをサーチし、その後Situationディレクトリーをサーチし、その後、
Pilotsディレクトリーをサーチします。

構文

Load_Situation string

引数
stringにシチュエーションファイルを指定します。

使用例

'FS98のデフォルトシチュエーションをロードします。

LOAD_SITUATION "FS98"



5.2.22■ Next コマンド

Forループの終了マークです。

構文

Next variable

引数
variableはオプションです。指定した場合はForコマンドで指定した変数と同じでないといけ
ません。

使用例

DECLARE Test_Value

'This example will print 1, 2, 3, 4, 5.

FOR Test_Value = 1 TO 5

	PRINT "Test value = ",Test_Value

NEXT Test_Value



5.2.23■ North_Latitude コマンド

緯度を北緯で指定する宣言です。負で指定した時は南緯となります。

構文

North_Latitude

Example

'Canada

NORTH_LATITUDE

WEST_LONGITUDE

'Turkey

NORTH_LATITUDE

EAST_LONGITUDE



5.2.24■ On...GoSub コマンド

条件文を評価し、整数に置き換えます。結果が0であればGoSubでlabel0を実行し、1であれば
label1を実行するという具合です。

構文

On expression GoSub label0, label1, ...

引数
labelパラメータはLabelコマンドによって定義します。

参考

もし、値が0より小さいかラベルの数と等しいか大きい場合、サブルーチンコールは行われず、
後続の命令が実行されます。この場合はエラーにはなりません。

使用例

DECLARE iSeg

FOR iSeg = 1 TO 4

	ON iSeg GOSUB subSeg1, subSeg2, subSeg3, subSeg4

NEXT iSeg

SubSeg1:

	'Some code...

	RETURN

SubSeg2:

	'Some code...

	RETURN

SubSeg3:

	'Some code...

	RETURN

SubSeg4:

	'Some code...

	RETURN



5.2.25■ On...GoTo コマンド

条件文を評価し、整数に置き換えます。結果が0であればlabel0に分岐し、1であればlabel1に
分岐するという具合です。

構文

On expression GoTo label0, label1, ...

引数 
labelパラメータはLabelコマンドによって定義します。

参考

もし、値が0より小さいかラベルの数と等しいか大きい場合、分岐は行われず、後続の命令
が実行されます。この場合はエラーにはなりません。

使用例

DECLARE iSeg

FOR iSeg = 1 TO 4

	ON iSeg GOTO subSeg1, subSeg2, subSeg3, subSeg4

NEXT iSeg

SubSeg1:

	'Some code...

SubSeg2:

	'Some code...

SubSeg3:

	'Some code...

SubSeg4:

	'Some code...



5.2.26■ OnCrash コマンド

ユーザーの機体がクラッシュした時にフライトシミュレータの通常のクラッシュ時の扱いと
異なる特別の取り扱いを行いたい場合に、特別のサブルーチンコールのラベル名を指定します。

構文

OnCrash [GoSub label]

引数
label名はLabelコマンドによって定義します。

参考

GoSub labelを指定しなかった場合はOnCrashコマンドは取り消され、フライトシミュレータ
の通常のクラッシュ時の扱いとなります。

使用例

ONCRASH GOSUB subBent

SubBent:

	PRINT "You really bent the airplane this time."

	RETURN



5.2.27■ Onexp_Bool_Change...GoSub コマンド

イベントリストに後続のイベントを追加します。また、条件が偽から真に変わった時に
label1がコールされます。label2が指定された時には条件が真から偽に変わった時にコール
されます。イベント起動コマンドとどれだけ頻繁にインタープリターが条件判断を行うか
はイベント起動プログラミングの項目を参照して下さい。

構文

Onexp_Bool_Change expression GoSub label1, [label2]

使用例

ONEXP_BOOL_CHANGE ON_GROUND GOSUB subON_GRND, subAirborne 

subON_GRND:

	PRINT "Nice landing."

	RETURN

SubAirborne:

	PRINT "Now you are flying."

	RETURN



5.2.28■ Onexp_Change...GoSub Command コマンド

イベントリストに後続のイベントを追加します。また、条件が新しい値に変わった時に
labelがコールされます。イベント起動コマンドとどれだけ頻繁にインタープリターが条件
判断を行うかはイベント起動プログラミングの項目を参照して下さい。

構文

Onexp_Change expression GoSub label

使用例

ONEXP_CHANGE ADF_FREQ GOSUB subADF_Chng

subADF_Chng:

	ONEXP_CLEAR subADF_Chng

	PRINT "Tune the ADF to 362 for the LOM."

	RETURN



5.2.29■ Onexp_Clear コマンド

イベントリストからそのlabelを参照するイベントを削除します。labelが指定されない場合は
全てのイベントをイベントリストから削除します。

構文

Onexp_Clear [label]

使用例

ONEXP_TRUE ON_GROUND GOSUB subON_GRND 

subON_GRND:

	'Clears the event so it only is triggered once.

	ONEXP_CLEAR subON_GRND

	PRINT "Nice landing."

	RETURN



5.2.30■ Onexp_True...GoSub コマンド

イベントリストに後続のイベントを追加します。また、条件が偽でない場合、label1がコール
されます。label2が指定されている場合、条件が偽の場合にコールされます。イベント起動コ
マンドとどれだけ頻繁にインタープリターが条件判断を行うかはイベント起動プログラミング
の項目を参照して下さい。

構文

Onexp_True expression GoSub label1, [label2]

使用例

DECLARE iAlt_Time

ONEXP_TRUE NOT INRANGE(PLANE_ALT, 4800, 5200) GOSUB subAlt_Msg, subAlt_Reset

subAlt_Msg:

	IF ELAPSED_TIME > iAlt_Time

		PRINT "Check your altitude."

		iAlt_Time = ELAPSED_TIME + 15

	ENDIF

	RETURN

subAlt_Reset:

	IF INRANGE(PLANE_ALT, 4900, 5100) THEN

	iAlt_Time = 0

	ENDIF

	RETURN




Last Update 1999/1/7