我想将程序的输出保存到变量中。
我使用以下方法,但失败了。
$ PIPE RUN TEST | DEFINE/JOB VALUE @SYS$PIPE
$ x = f$logical("VALUE")
我收到一个错误:%DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters
\WORLD\
我想将程序的输出保存到变量中。
我使用以下方法,但失败了。
$ PIPE RUN TEST | DEFINE/JOB VALUE @SYS$PIPE
$ x = f$logical("VALUE")
我收到一个错误:%DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters
\WORLD\
执行此操作的常用方法是将输出写入文件并从文件中读取并将其放入 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 符号(您正在调用的变量)。这是最干净的方法。如果它真的需要是逻辑的,那么有定义逻辑的系统调用。