我真的对 OpenVMS 的 DCL 中的一些语法感到困惑。例如,这些是一些让我感到困惑的行:
$ wo = "write sys$output"
它是否创建了一个符号 wo
用于写入 sys$output?
$ billing_run_number == p1
p1
是在执行时传递给.com 文件的参数吗?可以提供多少个参数?
$ wo "BILLING_RUN_NUMBER = ''billing_run_number'"
''abc' 是否被符号 abc 的内容所取代?为什么是“abc”而不是“abc”?我们可以使用“”吗?
$ if ((status .nes. "P") .and. (status .nes. "M")) .or. (ftp_status .nes. "Y")
.nes.
是什么意思?平等的?我也看过.ne。 , .eqs。也。它们有什么不同?
为什么“and”和“or”被两个点包围?特定于 DCL 的语法?
最佳答案
从内存中:$ wo = "write sys$output"
就像你说的那样,将 wo 指定为 "write sys$output"的别名,VMS 相当于 Unix 标准输出。
.nes.
是“不等于字符串”,而 .ne.
是数字“不等于”。
p1 是您猜到的(第一个)参数。我不记得它是从 p1 到 p9 还是更多,或者是否没有任意限制。 p0 可能是程序名称,如 Python 的 sys.argv[0]。
一个命令过程最多接受 8 个参数,称为 P1 .. P8。
单引号 (') 插入以下变量名称,因此 wo "BILLING_RUN_NUMBER = ''billing_run_number'"
将输出,例如 BILLING_RUN_NUMBER = '42'
,假设 p1 等于 42。我不记得当 DCL 看到这样的连续两个单引号时如何知道该怎么做...
官方的咒语是''symbol',将实际的DCL文本替换为symbol的值
这至少可以帮助您入门...大多数使用 VMS 的商店在 3 环 Binder 中都有几百磅的文档。四处打听。
关于openvms - OpenVMS 中的 DCL 符号语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6568618/