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

How to store a result to a variable in HP OpenVMS DCL?

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

我使用了下面的方法,但是失败了。

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

我得到一个错误:<code>%DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters \WORLD\

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

执行此操作的通常方法是将输出写入文件并从文件中读取并将其放入 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)
$

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

如果可以修改程序,在程序中使用LIB$SET_SYMBOL为DCL定义一个DCL符号(你所说的变量)。这是最干净的方法。如果真的需要逻辑,那么有定义逻辑的系统调用。