そのスクリプト。
HSP3.1b2以降ではコンパイル時の最適化処理により
#module "test1" ; エラー対策? #deffunc b return *test mes "test@test1" return #global #module "test2" #deffunc a gosub *test@test1 return #global a b ; なぜか呼び出さないとエラーになる stop
その内部で定義されている命令・関数が
一度も呼び出されることの無いモジュールは
コンパイルされなくなったようです。
上記のスクリプトの場合どこかで命令 b を呼び出さないと
test1 モジュールの部分はコンパイルされません。
よってその内部のラベル *test@test1 は存在しないものと
みなされコンパイル時にエラーが出ます。
(コンパイラが b を呼び出していると認識すればよいので
実際に b の呼び出しを実行する必要はありません。
上記のスクリプトなら stop のあと b を呼び出すように
書き換えても動作します。)
#cmpopt optcode 0 で最適化をやめれば
命令 b の定義、および呼び出しを行わなくても
エラーは出なくなります・・・。