2013-08-08 8 views
5

私は古いqbasicコードに取り組んでいます。これは、すべてのGotoステートメントの混乱です。次の行が常に戻ることを修正しますか?クイック基本コロンラインセパレータ

IF FLAG = 0 THEN TARGET = X: GOSUB 55000: TEMP = XI - TEMP2: RETURN 

これを正しく理解すれば、コロンは同じ行のステートメントを区切ります。 ifは、TARGET = Xにのみ関連します.GOSUB、TEMP =、およびRETURNは常に実行されます。正しい?非常に次の行が

IF FLAG = 1 THEN STEP = X: GOSUB 115000 

を読み取り、第二文のラベルがGOTOで使用されることはありませんので、私はそれが今までに実行になるだろうことを見ることができないので、私の混乱の

一部があります。

+1

「Nibbles」または「Gorilla」ですか? –

+0

@JoeEnosどちらもありません。古いIEEEコードです。 –

+0

少なくともPL/Iではありませんが、['if then then then else; else else = if; '](http://wiki.tcl.tk/14057?redir=13395)。現代の言語は理由のためにキーワードを予約しています... ;-) –

答えて

5

はい、あなたの評価は正しいと思います。コロンは、同じ行に複数のステートメントを持つステートメント区切り文字です。あなたのサブルーチンが55000のリターンであると仮定すると、この行も同様に返されます。

私は間違っていました。唯一End of programqb64.netプリント上

if 1=2 then print "Never printed" : print "how about this?" 
print "End of program" 

:このプログラムを実行します。私は文法の詳細がQbasicのものと同じであると想定していますが、それはリバースエンジニアリングの努力です。

このコードは、あらかじめQBasicスタイルで書かれています(たとえば、GOSUBと行番号を使用)。 QBasic(remline.bas、私はそれが呼ばれたと信じています)には、この種のプログラムをより新しいスタイルに翻訳するのに役立つスクリプトがよくあります。私はそれを自分で使ったことはありません。

+0

ありがとうございました。私は、スパゲッティコードより悪いのは、スパゲッティコードの書き方が悪いということです。 –

+0

私の前提が間違っていると思われるこのリンクが見つかりました。 http://stackoverflow.com/questions/367325/vb-net-if-statement-and-the-colon –

+0

さて、私は[qb64.net](http://qb64.net)でそれをテストしましたが、それは明らかに今実装にオンラインインタフェースがあり、私が間違っていたことが判明しました。私に私の応答を編集できるように私に知らせてくれてありがとう:)。 – Troy