Информация DCL между процессом и подпроцессом

Я пытаюсь передать информацию между основным процессом и подпроцессом (узнавая, как все это работает в процессе), мне нужно получить информацию из подпроцесса, в данном случае это значение 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 не обнаруживается, что я делаю не так, что я не получаю данные для передачи между основными процессами и подпроцессами.

2 ответа

Решение

Символы DCL (g_test) не разделяются между процессами. Использование общих логических имен, например, в таблице заданий, будет работать.

Более сложные коммуникации, например, передача сообщений, могут осуществляться с использованием почтовых ящиков.

РЕДАКТИРОВАТЬ: чтобы уточнить, spawn/symbols приведет к копированию символов в подпроцесс при создании, но это создаст новый набор символов. Затем родительский процесс идет своим путем, и любые обновления символов в любом процессе происходят независимо.

Я смог решить это, опечатка с моей стороны, я думаю.

Файл 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
Другие вопросы по тегам