楽 屋 裏
e-Gadget
原因不明のループ脱出について、カシオからの回答が得られました。
発端は以下のコードでの異常動作です。
問題プログラム1While 1
20→C
Do
Dsz C
LpWhile 1
WhileEndこれは、最後のWhileEndでSyntax ERROR が発生します。
問題プログラム2Do
20→C
Do
Dsz C
LpWhile 1
LpWhile 1この場合は、Syntax ERORR の表示はないものの、外側の LoWhile から外側のDo へ戻りません。
カシオの回答では、
1.2重ループ構造という条件は無い。Dsz/Isz/⇒で偽の場合に、次のコマンドをスキップするという
仕様のため、次の条件の場合にSynERRORとなる。
・条件1: DoやWhileを用いたループがあること
・条件2:ループ脱出に Dsz/Isz/⇒を利用すること
・条件3:Dsz/Isz/⇒ の次のコマンドが、LpwileかWhileEndであることこれまでのところ、Do / While ループの脱出に Dsz / Isz / ⇒ を使っても、2重ループでなければ問題発生の経験が無いので、本質はここだけにないと思われます。
2. 制御のスタック管理において、古くからあるDsz/Isz/⇒ と 後で実装された DoループやWhileループで整合性がとれないのが原因ではないかと想像される件については、その通りであって、従来のコマンドを慣れ親しんだユーザーを配慮し、従来仕様をあえて残したとのこと。3. Goto 0:Lbl 0 による回避策についてこれについては、私の質問の仕方に問題があったため、改めて質問をする予定です。
Santaro様が見つけられた Goto の謎が、項目1に対する理解を深めるものと思いますので、引き続きカシオとの対話を続けようと思います。
Santaro様によるGoto の謎については、以下のエントリーに続くコメントにあります。
楽屋裏 - 多重ループの謎 以上、報告でした。
⇒
その後のカシオとのやりとりから得られた結論応援クリックをお願いします。励みになるので...
Kuさん
> casioからの回答、ついに来ましたか。藤堂様の言うように、回答がちゃんと帰ってくるのは嬉しいです。
はい、きちんと取り組んでくれるので、ありがたいです。
こうやってカシオファンが増えることもあるのですね。
CasioBasic入門では、ちょっと先になりますが、ちょっとおもしろいネタを紹介する予定です。
たぶんこんな機能を電卓プログラムで実装した例は無いかも知れないと言う感じのものです。
私は、とても重宝しています。
最近は、学校や教育関係の方が当ブログをご覧頂くようになってきており、ちょっとうれしいのですが、ネタ漏洩を避けるため、新ネタ公開までお待ちくださいね。
...って予告編で引っ張ってみて、すみません(^_^;)
Santaro様
> カシオから回答が来たようですね。
> まだ微妙に釈然としない感じは残りますけど、藤堂様もおっしゃられてますようにちゃんと調べて回答してもらえるということがポイント高いです。
本当にそうですね。今回の面倒な問い合わせに対して、まじめに取り組んでくれたのは、私の中でのカシオの重みが大いに増しました。
あとはgotoの謎に絡んだ部分を、問い合わせるつもりです。
仕事が立て込んでいるので、なかなか質問内容をまとめられていないのですが、時間をみて問い合わせします。
毎日通勤電車で電卓プログラミングで遊んでいるのですが、最近はその暇もなく、色々読み物や考え事をしています。先週は一度も電卓でプログラムを触っていません。
CasioBasic入門は、書きためている内容をアップしているだけですが、そろそろ蓄えが無くなってきそう(^^;)
気長にお待ちください。
>
>
> >整合性がとれないのが原因ではないかと想像される件については、その通りであって、
>
> つまるところ、これがエラーになる本質的な原因ということですね。
> ただ、これらのエラーがすべてSyntax ERRORとして出るからややこしいのであって、Stack ERRORとかNe ERRORとして出てくれると分かりやすかったところです。
>
>
> >従来のコマンドを慣れ親しんだユーザーを配慮し、従来仕様をあえて残したとのこと。
>
> 大文字のFX時代からの伝統的なコマンドなので残してもらえたのはすごく評価できます。
> そして、ただ残ってるだけじゃなく速度的な優位性があるのもポイント高いです。
>
>
> >3. Goto 0:Lbl 0 による回避策について
>
> Dsz/Isz/⇒の仕様として条件成立で次の命令をスキップするだけというのが仕様だとすれば、Gotoが若干特別な実装をされてるというのが現状一番納得できるところでしょうかね。
>
> そのあたり踏み込んで回答がもらえると完全決着ですね。
>
>
>
>
> 藤堂様、こんにちは!
>
> >カシオは、質問をすれば、時間がかかっても回答してもらえるので、それからカシオの製品を愛用するようになりました。
>
> ユーザーにちゃんと向き合ってくれる姿勢はとってもよいですね。
> 関数電卓は昔からカシオばかりでしたけど、それ以外でもカシオ製品の割合が増えていきそうです。
藤堂様
> 昔から使ってきた人との互換を保つためも、理由だったんですね。カシオは、質問をすれば、時間がかかっても回答してもらえるので、それからカシオの製品を愛用するようになりました。
以前の機能を残してくれているのは、大変ありがたいです。
特に動作速度が速いと言う点はポイント高いです。
今回カシオのカスタマーサポートを初めて利用しましたが、面倒な内容にもかかわらず、まじめに取り組んでくれるのでとても好印象です。
考えてみると、電卓以外にカシオ製品使っていないですが、ちょっと考えが変わりそうです。
ちなみに、電子辞書は欲しい英語県警の辞書があるのはSIIのみ、デジカメは極端な接写機能が必要なので、リコーかソニー...などと、機能面からメーカーを決めています。欲しい機能が無ければしかたないのですが、そうでない場合はカシオも検討に入れようかと...
やす様、こんばんは。
casioからの回答、ついに来ましたか。藤堂様の言うように、回答がちゃんと帰ってくるのは嬉しいです。
管理人様、こんにちは!
カシオから回答が来たようですね。
まだ微妙に釈然としない感じは残りますけど、藤堂様もおっしゃられてますようにちゃんと調べて回答してもらえるということがポイント高いです。
>整合性がとれないのが原因ではないかと想像される件については、その通りであって、
つまるところ、これがエラーになる本質的な原因ということですね。
ただ、これらのエラーがすべてSyntax ERRORとして出るからややこしいのであって、Stack ERRORとかNe ERRORとして出てくれると分かりやすかったところです。
>従来のコマンドを慣れ親しんだユーザーを配慮し、従来仕様をあえて残したとのこと。
大文字のFX時代からの伝統的なコマンドなので残してもらえたのはすごく評価できます。
そして、ただ残ってるだけじゃなく速度的な優位性があるのもポイント高いです。
>3. Goto 0:Lbl 0 による回避策について
Dsz/Isz/⇒の仕様として条件成立で次の命令をスキップするだけというのが仕様だとすれば、Gotoが若干特別な実装をされてるというのが現状一番納得できるところでしょうかね。
そのあたり踏み込んで回答がもらえると完全決着ですね。
藤堂様、こんにちは!
>カシオは、質問をすれば、時間がかかっても回答してもらえるので、それからカシオの製品を愛用するようになりました。
ユーザーにちゃんと向き合ってくれる姿勢はとってもよいですね。
関数電卓は昔からカシオばかりでしたけど、それ以外でもカシオ製品の割合が増えていきそうです。
昔から使ってきた人との互換を保つためも、理由だったんですね。カシオは、質問をすれば、時間がかかっても回答してもらえるので、それからカシオの製品を愛用するようになりました。