问题描述
对于 HP Time-Shared BASIC 中的以下代码,我想知道第 2270 行:
2180 INPUT X
2190 IF X=1 THEN 2210
2200 LET X=2
2210 LET X=X+1
2220 IF X=3 THEN 2260
2230 IF B>39 THEN 2260
[irrelevant code lines removed for clarity]
2260 X1=X1*(-1)
2270 GOTO X OF 2290,2540,2720
基于此代码库中的其他示例,似乎 GOTO [variable] OF [line1,line2,...] 似乎相当于 if X == 1 GOTO LINE 1;如果 X == 2,转到第 2 行,依此类推
我找到了相关的维基百科位“通过 GOTO/OF 和 GOSUB/OF 语句计算流控制”,但我希望更清楚。
谁能确认一下?
谢谢,
迦勒
解决方法
幸运的是,维基百科页面有一个指向所有原始文档的链接:
http://www.bitsavers.org/pdf/hp/2000TSB/
这包括完整的语言参考:
http://www.bitsavers.org/pdf/hp/2000TSB/22687-90001_AccessBasic9-75.pdf
第 11-40 页关于 GOTO/OF 的内容
转到数字表达式 OF 语句编号列表
...
当使用 GO TO 语句的第二种形式时,数字表达式被计算并四舍五入为整数“n”。然后将控制权转移到语句编号列表中的“第n个”语句编号,其中语句编号列表 em> 是一个或多个以逗号分隔的语句编号。如果没有与数值表达式的值对应的语句号,则忽略GO TO语句并执行GO TO语句后面的语句
这似乎证实了你的猜测