1

我正在尝试在主流程和子流程之间传递信息(了解这一切在流程中如何工作)我需要从子流程中获取信息,在这种情况下是 g_start 的值。这是我在网上看到的处理方法,如果有更好的方法请告诉我!

主文件包含

$ define/job/nolog g_start false
$ g_test == 6
$ spawn @test.com
$ if f$trnlnm(g_start) .eqs. true
$ then

文件 test.com 包含:

$ If g_test .nes. 5 
$ then
$ define/job g_start true
$ endif
$ logout

当运行主文件 g_test 时找不到我做错了什么,我没有让数据在主进程和子进程之间来回传递。

4

2 回答 2

1

DCL 符号 ( g_test) 不在进程之间共享。使用共享的逻辑名称,例如在工作表中,将起作用。

可以使用邮箱完成更高级的通信,例如传递消息。

编辑:为了澄清,spawn/symbols将导致符号在创建时被复制到子进程,但这会创建一组新的符号。然后,父进程会顺其自然,任何一个进程中的任何符号更新都会独立发生。

于 2013-02-20T15:47:22.313 回答
0

我能够解决这个问题,我猜是我的错字。

文件 1:

$ define/job g_start false
$ g_test == 6
$ spawn @test.com
$ result = f$trnlnm("g_start")
$ write sys$output ''result'
$ if (''result' .eq. "true")
$ then

文件 2:

$ If g_test .nes. 5 
$ then
$ define/job g_start true
$ endif
$ logout
于 2013-02-20T18:10:41.613 回答