プロセルピナ
Top Internet
Mail
Private
Proxy
Capture
Device
Download Config
and
Words
Online
Help
Online
Home
[BACK]
Top > Proserpine Macro > Commands > gosub & return

 
 gosubコマンド、returnコマンド
Macro Top | Commands  



  gosubコマンドでサブルーチンブロックにジャンプした場合、 returnコマンドでジャンプした位置に戻ることができます。
ブロックをサブルーチンとして記述する場合は、必ずreturnコマンドで呼び出し元に戻るようにします。 returnコマンドは省略できません (returnコマンドが無い場合、ブロックを終了しても戻らずに、次の位置にあるブロックを処理します)。

 

gosubコマンド、returnコマンド


gosubコマンドの実行で、それまでの strl[ ]の文字列配列、 intl[ ]の整数値配列、 binl[ ]のバイト列配列 が退避され、 ジャンプ先で新たに strl[ ]、intl[ ]、binl[ ] が用意されます。

returnコマンドで、gosubコマンドで用意された strl[ ]、intl[ ]、binl[ ] は廃棄され、 ジャンプする前に戻った位置で 退避させていた以前の strl[ ]、intl[ ]、binl[ ] が復帰されます。

逆に、 str[ ]の文字列配列、 int[ ]の整数値配列、 bin[ ]のバイト列配列 はグローバルなので、 gosubコマンドでジャンプした先のブロックで値を変更すると、 returnコマンドで戻った後も変更されたままになります。


例1: 単純なgosubコマンド


 

戻り値のあるサブルーチン


returnコマンドには、戻り値を1つ指定することができます。
次の例では、gosubコマンドでジャンプした「gosub.changeAbc」ブロックからの戻り値を str[2] に設定しています。


例2: 戻り値のあるgosubコマンド


 

引数のあるサブルーチン


gosubコマンドには、 ( ) でパラメータを指定することができます。
パラメータは、呼び出し先のローカル配列 strl[ ], intl[ ], binl[ ] に設定されます。
呼び出し先の配列のインデックス0から gosubコマンドでの記述順に設定されます。 これはバイト列をパラメータに指定した場合も同様です。 例えばgosubのパラメータにバイト列 bin["ABC"] を1つ指定した場合、 このパラメータへの呼び出し先でのアクセスは binl[0] で行います。


例3: パラメタと戻り値のあるgosubコマンド



[BACK]
プロセルピナ