トピック
しんいち stgf1080
ENDIF
3そうだね
プレイ済み
返信[1]
親投稿
ひろきち henahenachoco
改行のルールを全ては把握していないのですが、 ? U と NEXT は別のセンテンスなので改行が必要で、 そうするとNEXTがIFで条件を満たした場合の処理なのかどうかわからずエラー、 なのかなと認識しました。
0そうだね
プレイ済み
返信[2]
親投稿
おちゃめ ochame_nako
プチコン3号、プチコンBIGでは処理の高速化のため実行前に構文チェックが行われます。その際にFOR~NEXT、WHILE~WEND等の対にして使用するものの片方をIF文中に記述していたら検出してくれないためNEXTはIFとは別の行(明確にIFではないことが分かる行)に書く必要があります。 どうしてもプログラムを1行で記述したいという意図がある場合には察しのようにENDIFが必ず必要になります。 ちなみにプチコンmkIIでは実行の際に逐次構文チェックが行われていたため普通にIF文中にNEXTが使用可能でした。 処理の都合によっては特定条件下でFOR~NEXTの途中だけど「FOR~NEXTを終了させたい」「FORに戻りたい」という場合にこのIFとNEXTの組み合わせは便利でしたがプチコン3号、プチコンBIGにはBREAKとCONTINUEが使えるためそれを活用すれば問題ありません。
2そうだね
プレイ済み
返信[3]
親投稿
しんいち stgf1080
コメント、解説ありがとうございます。 かつて高速化のために仕様変更された経緯があったんですね(ほとんど困ってないし、むしろ高速化なら大歓迎です)。 1行で記述する場合、ENDIF省略可というよりは、IF文を終わらせるのはENDIFか改行のみ。と理解することにしました(いくらコロンやスペース入れても終わらないと)。 今回、マルチステートメント関係でいろいろ試していて気が付いたのですが、1行で複数の命令を記述する場合、コロンじゃなくて単にスペースでも区切れるんですね。  I=10 J=20 K=I MOD 5 ? I,J,K このように記述してもちゃんと実行されてました。 #おっと、あまり変な記述方法は紹介しない方が #いいのかな。何となくお勧めできない感じが^^;
2そうだね
プレイ済み