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

耗尽温柔 提交于 2019-12-02 06:42:21

问题


I want to save the output of a program to a variable.

I use the following approach ,but fail.

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

I got an error:%DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters \WORLD\

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


回答1:


The usual way to do this is to write the output to a file and read from the file and put that into a DCL symbol (or logical). Although not obvious, you can do this with the PIPE command was well:

$ 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)
$



回答2:


IF you are able to change the program, add some code to it to write the required values into symbols or logicals (see LIB$ routines)




回答3:


If you can modify the program, using LIB$SET_SYMBOL in the program defines a DCL symbol (what you are calling a variable) for DCL. That's the cleanest way to do this. If it really needs to be a logical, then there are system calls that define logicals.



来源:https://stackoverflow.com/questions/34890693/how-to-store-a-result-to-a-variable-in-hp-openvms-dcl

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!