我对OpenVMS的DCL中的一些语法感到困惑。例如,这些是困扰我的一些行:
$ wo = "write sys$output"
是否为write sys $ output创建符号wo
?
$ 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。太。他们有什么不同?
为什么“和”和“或”被两个点包围? DCL特定的语法?
如果有任何易于理解的免费在线教程,那会不会很好。谢谢大家!
答案 0 :(得分:5)
您要阅读的手册是http://h71000.www7.hp.com/doc/731final/documentation/pdf/ovms_731_users.pdf上的OpenVMS用户手册(特别是第2章)。
答案 1 :(得分:4)
从内存:$ wo = "write sys$output"
如你所说,将wo指定为“write sys $ output”的别名,VMS相当于Unix stdout。
.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究竟是怎么知道的当它看到一行中的两个单引号时......
官方咒语是''符号',用实际的DCL文本替换为符号的值
这将至少让你开始......大多数使用VMS的商店在3环活页夹中都有几百磅的文档。四处询问。
答案 2 :(得分:2)
除了上面提到的文档之外,还有大量信息可以通过HELP HINTS,HELP:=,HELP =和HELP @命令。我相信P9-P16可用于OpenVMS V8.4。
另外,要特别注意全局符号(用加倍等号{==或:==}定义)和局部符号(用单个等号{=或:=}定义)之间的区别。与区分大小写的语言一样,定义A = 1的符号与定义A == 1的符号不同,本地符号可以屏蔽对全局符号的引用 - 也有一些命令如READ和INQUIRE可以创建符号,但我认为它们永远是一个本地符号 - 验证,因为我在记忆中工作。\
命令SET SYMBOL / SCOPE [= {LOCAL | NOLOCAL},{GLOBAL | NOGLOBAL})也会影响您是否可以看到某些类型的符号。
一般情况下,尽可能使用本地符号 - 如果更高级别(调用)命令过程需要访问,或者如果需要在返回交互式DCL时仍然定义的符号,通常只需要全局符号 - 异常是你运行的任何程序,专门读取或写入或创建一个全局符号 - 很少见,但我遇到了一些。
答案 3 :(得分:1)
p1是传递给.com的参数 文件何时执行?多少 参数是否可以提供?
您最多可以传递8个参数。每一个都定义为P1,P2 ... P8
如果您需要8个以上的参数,可以使用
这样的技巧@my_dcl“my_p1”“my_p2”“my_p3”“my_p4”“my_p5”“my_p6”“my_p7”“my_p8 my_p9 my_p10”
在my_dcl
中,P8
将在一个字符串中包含“my_p8 my_p9 my_p10”的值。
$ wo“BILLING_RUN_NUMBER = '' billing_run_number'“
'abc'是否被内容替代 符号abc?为什么''abc' 但不是'abc'?我们可以使用“”吗?
$ if((status .nes。“P”)。和。(状态 .nes。 “M”))。或。 (ftp_status .nes。 “Y”)
单引号意味着翻译字符串的内容。
因此,如果您定义wo = "write sys$output"
你可以使用
wo "Hello World!"
或
'wo "Hello World!"
但是如果你想展示write sys$output Hello World
如果你试试,
wo "'wo Hello World!"
你会得到'wo Hello World!
所以,你必须用单引号将它包围起来。
前两个是转义单引号,最后一个是停止翻译。
wo“''wo'Hello World!”
与其他脚本语言一样,您可以拥有变量...
var_hidden = "Hello world!"
my_var = "var_hidden"
wo 'my_var'
将打印Hello world!