ID : 5279
CallByName
機能
プロシージャを呼び出し、実行します。Callコマンドと異なり、プロシージャ名に式を使用することができます。
構文
CallByName プロシージャ名[, 引数リスト[,戻り値]]
指定項目
- プロシージャ名
- 呼び出すプロシージャ名を文字列型データで指定します。
- 引数リスト
- プロシージャに渡す引数をバリアント(Variant)型の配列で指定します。
- 戻り値
- 戻り値を入れる変数を、呼び出すプロシージャの戻り値の型に合わせて指定します。この指定はFunctionプロシージャで戻り値がある場合にのみ有効で、他の場合は無視されます。
解説
プログラム実行時にプロシージャ名として指定した式を評価してプロシージャ名を動的に作り出してCallします。名前が連番になっているプログラムをまとめてCallするのに便利です。
関連項目
Call、その他はCallと同じ。
注意事項
Callを参照してください。
CallByNameはCallと異なり、参照渡し(ByRef)に対応していません。呼び出すプロシージャの引数が参照渡し(ByRef)で指定された場合は、値渡し(ByVal)が指定されたとして処理されます。
参照渡し(ByRef)、値渡し(ByVal)については、プログラマーズマニュアルの「引数付きでプロシージャを呼び出す」を参照してください。
用例
下記の例ではFor文をFunctionプロシージャHoge1~Hoge5を使って動的に名前を作成しCallしています。Hoge1~Hoge5の
引数が3つあるのでCallByNameでは要素が3つの配列を定義しています。
'!TITLE "式を使ったプロシージャの呼び出し、実行"
'Pro1.pcs
Sub Main
TakeArm Keep = 0
Dim lRes As Integer
Dim n As Integer
'プロシージャ名Hoge1~Hoge5を式を使って作成し呼び出す
For n = 1 To 5
'プロシージャに渡す引数は配列で指定
CallByName "Hoge" & n, Array( "Hoge" & n, n, P[n] ), lRes
PrintDbg lRes
Next
End Sub
Function Hoge1( ByVal sVal As String, ByVal lCnt As Integer,
ByVal posCur As Position ) As Integer
Hoge1 = lCnt
End Function
Function Hoge2( ByVal sVal As String, ByVal lCnt As Integer,
ByVal posCur As Position ) As Integer
Hoge2 = lCnt
End Function
Function Hoge3( ByVal sVal As String, ByVal lCnt As Integer,
ByVal posCur As Position ) As Integer
Hoge3 = lCnt
End Function
Function Hoge4( ByVal sVal As String, ByVal lCnt As Integer,
ByVal posCur As Position ) As Integer
Hoge4 = lCnt
End Function
Function Hoge5( ByVal sVal As String, ByVal lCnt As Integer,
ByVal posCur As Position ) As Integer
Hoge5 = lCnt
End Function
ID : 5279