« RZ1Basic v0.1.0 公開 | トップページ | ハイテックにあったテンプレートについて(2) »

ハイテックにあったテンプレートについて(1)

ハイテックのダウンロードサイトにいくつかのテンプレートファイルがありますが、RZ1Basicで、このテンプレートのような長いソースコードでもちゃんとコンパイルできるようにといろいろやっていて気がついたところを報告します。
まず、
Overall Template Program version 1.00
モーションテンプレートファイル(太極拳)update 06/05/31
モーションテンプレートファイル(盆踊り)update 06/05/31
の3つに共通して書かれている「robo_voltage」のコード部分ですが、
'================================================
robot_voltage: ' [ 10 x Value / 256 = Voltage]
DIM v AS BYTE
A = AD(6)
IF A < 148 THEN ' 5.8v
FOR v = 0 TO 2
OUT 52,1
DELAY 200
OUT 52,0
DELAY 200
NEXT v
RETURN
'================================================
呼び出しは、コメントアウトされているのですが、コンパイルすると上記の部分もコンパイルされています。でも、この部分の「IF A<148 THEN」のIF文に対して、ENDIFがありません。たぶん

NEXT v
ENDIF
RETURN

が正解なのかな???

でも、roboBASICはENDIFがなくてもコンパイルしてしまいます。
試しに、

DIM A AS BYTE
IF A>0 THEN
A=0

をコンパイルすると、エラーになります。ENDIFがないとコンパイルできない見たいなんですが、

DIM A AS BYTE
IF A>0 THEN
A=0

IF A>0 THEN
A=0
ENDIF

をコンパイルすると、通ります。
さらに

DIM A AS BYTE
GOSUB test
END

test:
IF A>0 THEN
A=0
RETURN

をコンパイルすると、エラーになりますが、

DIM A AS BYTE
GOSUB test
END

test:
IF A>0 THEN
A=0
RETURN

IF A>0 THEN
ENDIF

とすると、通ります。
つまり、RETURNがあろうがなかろうが、どこかのIF文のENDIFを認識してしまっているようです。この部分、コメントアウトしているのは、ENDIFを入れてないことに気がついてなくて、変な挙動をしてしまうため、コメントアウトしてあるのかなぁ??

RZ1Basicは、このままではコンパイルは通らないように作ってありますので、この使われていない、robo_voltageの部分を削除するか、ENDIFを書き加えてコンパイルして下さい。

 

|

« RZ1Basic v0.1.0 公開 | トップページ | ハイテックにあったテンプレートについて(2) »

ROBOBASIC講座」カテゴリの記事

工作・改造・解析」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/221673/16476255

この記事へのトラックバック一覧です: ハイテックにあったテンプレートについて(1):

« RZ1Basic v0.1.0 公開 | トップページ | ハイテックにあったテンプレートについて(2) »