<< 前へ        次へ >>

ID : 472

引数付きでプロシージャを呼び出す

プロシージャからCallステートメントやRunステートメントを使ってタスク内の他のプロシージャを呼び出すことができます。

プロシージャ宣言で引数を呼び出し元に要求するかを指定します。

Sub aaa(ByRef bbb As Integer)

上記の例はaaaプロシージャは整数型の引数bbb付きであることを表します。

引数の数は合わせてください。引数の省略はできません。

引数をプロシージャに渡す方法は以下の2種類があります。

参照渡し
ByRefで指定します。呼び出し先のプロシージャで渡された変数の値を変更したときに、呼び出し元の変数も変更されます。
値渡し
ByValで指定します。呼び出し先のプロシージャで渡された変数の値を変更しても、呼び出し元の変数は変更されません。

Callステートメントは参照渡しと値渡しの両方を指定できますが、Runステートメントは値渡しのみ指定できます。Runステートメントで呼び出したプロシージャが参照渡しを指定していた場合はエラーです。

参照渡しの例

Sub aaa
	dim bbb As Integer
	bbb = 10
	Call ccc(bbb)
	PrintDbg bbb 'bbbは11です。
End Sub

Sub ccc(ByRef ddd As Integer)
	ddd = ddd + 1
End Sub

値渡しの例

Sub aaa
	Dim bbb As Integer
	bbb = 10
	Call ccc(bbb)
	PrintDbg bbb 'bbbは10です。
End Sub

Sub ccc(ByVal ddd As Integer)
	ddd = ddd + 1
End Sub

注意事項

引数を渡せない場合

呼び出したプロシージャが要求している引数を渡さない場合はエラーです。

以下の場合には引数付で呼び出せないので呼び出されるプロシージャは引数を要求しないようにしてください。

  • I/Oからの起動
  • 特権タスクの電源立上げ時の起動設定対象ファイル
  • 特権タスクの自動モード切替時の起動設定対象ファイル

ID : 472

<< 前へ        次へ >>