我真的被OpenVMS的DCL中的一些语法搞糊涂了。例如,以下是一些让我感到困惑的代码:
$ wo = "write sys$output"是否为写入sys$ wo创建符号输出?
$ billing_run_number == p1在执行.com文件时,p1是否是传递给该文件的参数?可以提供多少个参数?
$ 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的语法?
这将是很好,如果有任何免费的在线教程是容易理解的。谢谢大家!
发布于 2011-07-05 21:48:09
您可以在http://hp.com/go/vms上在线找到虚拟机管理系统文档
您想要阅读的手册是http://h71000.www7.hp.com/doc/731final/documentation/pdf/ovms_731_users.pdf上的OpenVMS用户手册(特别是第2章)。
发布于 2011-07-04 15:57:01
从内存:正如您所说,$ wo = "write sys$output"将wo指定为"write sys$output“的别名,这相当于Unix stdout。
与数字“不等于”的.ne.相比,.nes.“不等于字符串”。
正如您所猜到的,p1是一个(第一个)参数。我不记得它是通过p9还是更多的p1,或者是否没有任意的限制。p0可能是程序名,就像Python的sys.argv一样。
命令过程最多可接受8个参数,称为P1。P8。
单引号(')插入以下变量名,因此wo "BILLING_RUN_NUMBER = ''billing_run_number'"将输出,例如BILLING_RUN_NUMBER = '42',假设p1等于42。当DCL在一行中看到两个单引号时,我已经记不清它是如何知道该怎么做的了……
正式的咒语是'' symbol‘’将实际的DCL文本替换为symbol的值
这至少能让你开始..。大多数使用VMS的商店都有几百磅的三环活页夹文档。四处打听一下。
发布于 2011-07-05 21:19:32
是在执行.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 =‘’帐单运行编号‘“
'' abc‘’是否被符号abc的内容所取代?为什么是“abc”而不是“abc”?我们能用"“吗?
$ if ((状态为.nes。"P") .and。(状态为.nes。"M")) .or。(ftp_status .nes."Y")
单引号表示翻译字符串的内容。
因此,如果您定义wo = "write sys$output"
您可以使用
wo "Hello World!"或
'wo "Hello World!"但是如果你想向write sys$output Hello World展示
如果你试过,
wo "'wo Hello World!"你会得到wo 'wo Hello World!
所以,你必须用单引号把它括起来。
前两个是转义的单引号,最后一个表示停止翻译。
wo "''wo‘Hello World!“
像其他脚本语言一样,你可以使用变量变量...
var_hidden = "Hello world!"
my_var = "var_hidden"
wo 'my_var'将打印Hello world!
https://stackoverflow.com/questions/6568618
复制相似问题