我的DCL如下(TEST.EXE只打印输入)
$ DEFINE DCL$PATH SYS$DISK:[],SYS$LOGIN:,SYS$SYSTEM:
$ PIPE TEST.EXE abc | DEFINE/JOB RET_VALUE @SYS$PIPE
$ x = f$logical("RET_VALUE")
$ WRITE SYS$OUTPUT x
我想让这个DCL显示结果是“abc”。 但是这个DCL结果将显示“ABC”。
我尝试在DCL中添加“SET PROCESS / CASE_LOOKUP = SENSITIVE”,但不可行。
有没有人有任何建议或提示?非常感谢。
答案 0 :(得分:3)
您是否检查How to store a result to a variable in HP OpenVMS DCL?中接受的答案是否有助于此问题?
管道中的DEFINE命令为DEFINE/JOB RET_VALUE abc
,DCL将其更改为DEFINE/JOB RET_VALUE ABC
。当引用等价名称时,DCL不会更改为大写,这将是DEFINE/JOB RET_VALUE "abc"
。但是,当您编写"@SYS$PIPE"
时,您将字符串@SYS$PIPE
作为等价名称。换句话说,在字符串中,重定向器@
不再起作用。因此,您必须按原样从SYS$PIPE
获取字符串,例如使用READ
,如链接答案中所示。
PS:...您可能希望从管道命令中删除.exe
中的test.exe
。