如何将结果存储到HP OpenVMS DCL中的变量?

时间:2016-01-20 02:47:58

标签: openvms dcl

我想将程序的输出保存到变量中。

我使用以下方法,但失败了。

$ PIPE RUN TEST | DEFINE/JOB VALUE @SYS$PIPE $ x = f$logical("VALUE")

我收到了错误:$ PIPE RUN TEST | DEFINE/JOB VALUE @SYS$PIPE $ x = f$logical("VALUE")

参考: How to assign the output of a program to a variable in a DCL com script on VMS?

3 个答案:

答案 0 :(得分:6)

执行此操作的常用方法是将输出写入文件并从文件中读取并将其放入DCL符号(或逻辑)中。虽然不是很明显,但你可以使用PIPE命令做到这一点:

$ pipe r 2words
hello world
$ pipe r 2words |(read sys$pipe line ; line=""""+line+"""" ; def/job value &line )
$ sh log value
   "VALUE" = "hello world" (LNM$JOB_85AB4440)
$

答案 1 :(得分:1)

如果您能够更改程序,请向其添加一些代码,以将所需的值写入符号或逻辑中(请参阅LIB $例程)

答案 2 :(得分:0)

如果你可以修改程序,在程序中使用LIB $ SET_SYMBOL定义DCL的DCL符号(你称之为变量)。这是最干净的方法。如果它确实需要是逻辑的,则存在定义逻辑的系统调用。