Windows版dishでは問題ないのですが、Android版でエラーが発生します。
下のスクリプトですと、
logcatで確認したところ、10行目に当たる場所で エラー40 ("関数の戻り値が設定されていません") が出ています。
つまり、このreturnがユーザー定義関数における最後のreturnだと解釈されています。
#include "hsp3dish.as" #module mod1 #defcfunc test logmes "run command \"test\"..." gosub *LAB1 return 0 *LAB1 logmes "jumped to *LAB1 in mod1" return #global k = test() logmes "OK."
それならばと、上のスクリプトの10行目のreturnの右隣に 0 を置いて"関数の戻り値"とすると、
下のスクリプトになりますが、
logcatで確認したところ、おそらく7行目のreturnでしょうか?ここで エラー10 (サブルーチン外のreturnは無効です) と出ます。
つまり、このreturnはgosubによるサブルーチンジャンプのreturnではないと解釈されています。
#include "hsp3dish.as" #module mod1 #defcfunc test logmes "run command \"test\"..." gosub *LAB1 return 0 *LAB1 logmes "jumped to *LAB1 in mod1" return 0 #global k = test() logmes "OK."
この件に関して、私はhsp3dishの不具合ではないかと考えておりますが、いかがでしょうか?