DEFでハマったところ その2
またまたDEFでちょっとハマりました。
今回のプチコン3号では、雰囲気的にDEFと配列関係はハマりポイントが多そうな気がしています。
自分が新たにハマったのは、OUT引数のところです。
自作命令を定義した時、OUT引数に変数を設定して自作命令からの値を受け取ることができます。
次のようなコードです。
J=1 FOR I=0 TO 10 CMD I,J OUT J NEXT END DEF CMD A,B OUT C ? A,B IF A<5 THEN C=B*2 ENDIF END
これは文法的には問題なさそうですが、実行時にエラーが発生します。
Type mismatch in 0:3 と出るので、3行目がおかしい、と言っているのですが、途中まで実行できているのになぜかこのエラーが発生します。
3行目がおかしいのでしょうか?
結論から言うと、DEF側の問題です。
DEFの定義中にOUT引数を返さないパスがある時、そのパスを通った時に上記のエラーが発生します。
エラー行が呼び出し元を指しているのでわかりづらいと思います。
メインルーチンにある処理を切り出して自作命令にした時にはまりそうですので覚えておくと時間をムダにせずに済むかもしれません。