La commande PIPE vous permet de faire un pipeline Unix-ish, mais DCL n'est pas bash. Obtenir la sortie assignée à un symbole est difficile. Chaque segment PIPE s'exécute dans un sous-processus séparé (comme Unix) et il n'y a aucun moyen de renvoyer un symbole d'un sous-processus. AFAIK, il n'y a pas d'équivalent bash d'assignation de stdout à une variable.
L'approche typique est d'écrire (redirection) la sortie vers un fichier, puis le relire:
$ PIPE perl p.pl > temp.txt
$ open t temp.txt
$ read t x
$ close t
Une autre approche consiste à attribuer la valeur de retour comme un travail logique qui est partagée par tous les sous-processus. Cela peut être fait comme une doublure en utilisant PIPE:
$ PIPE perl p.pl | DEFINE/JOB RET_VALUE @SYS$PIPE
$ x = f$logical("RET_VALUE")
Depuis le « RET_VALUE » est partagée par tous les processus du travail, vous devez être prudent d'effets secondaires.
Merci, votre deuxième approche est ce que je cherchais. Quelque chose d'un peu mieux que d'utiliser des fichiers. – Jason