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