Call
ファンクションをサブルーチンとして呼び出します。
書式
Call ファンクション名 [(引数のリスト)]
パラメーター
- ファンクション名
- 呼び出すファンクション名を指定します。
- 引数のリスト
- ファンクション宣言で指定された引数のリストを指定します。引数は、下記の書式を使用してください。省略可能です。[ByRef]変数名[( )]、または数式
- ByRef
- 呼び出すファンクションの変数を参照する場合は、ByRefを指定します。この場合、ファンクション内での引数の変更を呼び出し側の変数に反映させることができます。参照で渡された値は変更できます。ByValを指定して変数を参照する場合、ファンクション宣言内でも変数をByRef指定する必要があります。
解説
Call命令により、Function...Fendが定義するファンクションに、プログラム制御を移します。Call命令により、プログラムの実行は現在のファンクションから、Call命令が指定するファンクションに移行します。プログラムは、Exit FunctionかFendが見つかるまで、そのまま呼び出されたファンクションで続行します。そして、Call命令の次のステートメントで、制御はもとのファンクションに戻ります。
Callキーワードや引数の括弧は、省略してもかまいません。下記例を参照してください。
Call MyFunc(1, 2)
MyFunc 1, 2
DLL (ダイナミックリンクライブラリー)で定義されている外部ファンクションを呼び出すことも可能です。詳細はDeclareステートメントを参照してください。
ファンクション内でサブルーチンを実行するには、GoSub...Returnを使ってください。
引数として変数を指定することもできます。ByRefパラメーターを指定し、ファンクション内での引数の変更を呼出側変数に反映させることができます。
ByRefパラメーターを指定する場合、ファンクション定義 (Function文)や、DLLファンクション定義(Declare文)の引数リストでも同様にByRefを指定する必要があります。
配列変数を引数として渡すときには、ByRefが必須となります。
参照
Function...Fend, GoSub...Return
Call使用例
[File1: MAIN.PRG]
Function main
Call InitRobot
Fend
[File2: INIT.PRG]
Function InitRobot
If Motor = Off Then
Motor On
EndIf
Power High
Speed 50
Accel 75, 75
Fend