スマイルブーム小林です。
動作を確認してみました。
マギーさんのアドバイスのようにUSE部分をEXECにすることで解決します。
◎エラーになる原因
USE 1ではSLOT1のプログラムテキストを内部的な実行コードへ変換だけ行います。変換しか行わないのでプログラム先頭にあるOPTION命令もVAR命令も実行されません。
OPTION STRICTが実行されていないので、SLOT1のプログラム内で宣言ナシの変数利用はエラーにならず、INIT_1のS$とINIT_2のVは、その場で生成された変数として実行されます。
INIT_3には宣言のない配列の利用が含まれているためエラーとなっています。
◎EXECにすると動く理由
EXECは、USE 1を実行後にRUN 1を実行するような動きを行うため、RUNによって、SLOT1内の先頭にある OPTION2つとVAR命令が実行されて、その下のCOMMON DEFは実行されずプログラムの終わりに達してEND扱いとなりSLOT0に処理が戻ります。
※EXECはENDまで行くとEXEC実行もとに処理が戻ります
ちょっと特殊で分かりにくいですが、SLOT 1に置いたプログラムを初期化してから使う感覚でUSEの代わりにEXECを利用すると使いやすいと思います。
3そうだね プレイ済み