トピック
STiNGER STiNGER8901

EXECが実行できません><

検証用のプロジェクトがこちらです。 N3352XP3 使うときに何か宣言が必要だったでしょうか?
0そうだね
プレイ済み
返信[1]
親投稿
H0に DIM H[512] がないために、7行目でエラーになっているのではないでしょうか。 なお、SLOTが違うと変数の名前が同じでも違う変数として扱われるようです。
1そうだね
プレイ済み
返信[2]
親投稿
omusubi▲ omusubi_p
H0の H[I] を全て VAR("1:H")[I] にすれば、とりあえず動くようになります。 (LOCATEの設定できる範囲を超えてしまうので、そこでエラーが出ますよ。 プチコン3号の仕様上、変数や命令を入れる箱はSLOTごとに別ものとして作られるようです。 なので、名前が同じHでも、厳密にはスロットに応じて0:Hや1:Hなんです。 同じスロットでは番号を省略しても問題がないのは、「同じスロットから呼び出す場合は同じスロット番号の変数や命令だと見なす」という暗黙のルールがあるとでも言いましょうか。だから、今回の場合コンピュータはHを0:Hだと勘違いして、配列変数Hが宣言されてないよ(DIM H[512]がないよ)とエラーを吐いています。
0そうだね
プレイ済み
返信[3]
親投稿
つばさ☆ nsm2116
VAR関数使おう。
0そうだね
プレイ済み
返信[4]
親投稿
omusubi▲ omusubi_p
ちなみに、H1のBEEPやWAITも実行されないのは、実際にプログラムを実行する前にまず変数や命令に間違いがないかをチェックしているからです。その事前のチェック段階でエラーとなり止まるから、BEEPも鳴らないわけです。 異なるスロットの変数や命令を呼び出すときに、全部「VAR("1:H")」なんて書くのは面倒だったりするでしょう? なので、こういう呼び出し方は、どうしてもという特殊な場合にしか使わないのが良いです。そのためにCOMMON DEFがDEFとは別に用意されていて、別のスロットから値が欲しい場合には、COMMON DEFの返り値を経由して受け取るのが標準的な方法になると思います。
0そうだね
プレイ済み
返信[5]
親投稿
STiNGER STiNGER8901
配列変数がスロットを跨がないで済むやり方を考えてみます。 有難うございました。
0そうだね
プレイ済み