Команда PIPE позволяет вам выполнять конвейерную обработку Unix, но DCL не является bash. Получить вывод, назначенный символу, довольно сложно. Каждый сегмент PIPE выполняется в отдельном подпроцессе (например, Unix), и нет способа вернуть символ из подпроцесса. AFAIK, нет bash-эквивалента назначения stdout переменной.
Типичный подход - записать (перенаправить) вывод в файл и затем прочитать его обратно:
$ PIPE perl p.pl > temp.txt
$ open t temp.txt
$ read t x
$ close t
Другой подход заключается в назначении возвращаемого значения в качестве логического задания, которое совместно используется всеми подпроцессами. Это можно сделать как однострочник с использованием ТРУБЫ:
$ PIPE perl p.pl | DEFINE/JOB RET_VALUE @SYS$PIPE
$ x = f$logical("RET_VALUE")
Поскольку «RET_VALUE» является общим для всех процессов в задании, вы должны быть осторожны с побочными эффектами.