1

我在火箭软件网站上找到了LSELECT程序,但我在编译它时遇到了问题。

有人成功了吗?

以下是错误:

:BASIC BS LSELECT

Compiling Unibasic: BS/LSELECT in mode 'm'.
main program: syntax error at or before
<line 126> GETLIST SOURCE.LIST TO 9 ELSE
           -----------------------^
Expecting: array,variable

Warning: there are some statements after END near line 132
error: the following labels are used but have not been defined:
SHOW.MESSAGE
FINISH.UP
BUILD.LIST2
LOAD.TEMP.FILE
CREATE.TEMP.FILE
  near line 243
compilation failed
4

1 回答 1

2

TCL 命令和基本程序有不同的风格。它允许您将代码从不同的遗留系统移植到 Unidata,而不必进行完全重写。此代码是为 Unidata 基本风格编写的。您可以通过执行以下操作在会话中临时切换到该状态:

:BASICTYPE "U"

或者在程序顶部添加一个编译器指令,告诉 Unidata 使用哪个 Basic 子语法。它们都非常接近,只有很小的差异。

$BASICTYPE "U"

https://docs.rocketsoftware.com/nxt/gateway.dll/RKBnew20/unidata/previous%20versions/v7.2/unidata_unibasicapplicationsdevguide_v72.pdf

Pick 样式是一种常见的默认设置,因为在 Unidata 上运行的大部分代码都是从旧的 Pick 或 Pick 兼容系统移植而来的。所以很多应用为了兼容,在LOGIN段中设置了BASICTYPE "P" 和ECLTYPE "P"。根据“HELP BASICTYPE”,M 选项适用于 McDonnell Douglas 或 Reality 口味。

ECLTYPE 是另一个需要调整的常见事物——它控制某些命令参数的处理方式。最有用的是 TO DELIM 或 TO XML,它们仅在 ECLTYPE U 中可用。诀窍是小写命令名称始终在 ECLTYPE U 中进行评估,因此您不必总是来回切换 - 只需使用 lower如果您想要 90 年代的那些“现代”扩展;-)

于 2018-06-12T01:49:34.450 回答