Я полагаю, что вашей проблемой, вероятно, является отсутствие пробела перед вашей переменной.Вы, вероятно, также должны использовать «user@xyz.com», а не просто «xyz.com».Я написал бы ваш код следующим образом:
define variable emailAdress as character no-undo initial "user@xyz.com".
define variable cmd as character no-undo.
cmd = echo "Please see attached report" | mail -s "Test email message" -a /tmp/newuireport.csv -r "New UI Report <noreply@rentokil-initial.com>" &1'.
os-command silent value( substitute( cmd, emailAdress )).
Обратите внимание, что между концом текста темы и символом "1" есть пробел. Я думаю, что, скорее всего, ваш исходный код пойдет не так.
Использование SUBSTITUTE и OS-COMMAND делает ваш код более гибким и переносимым - он больше не привязан к команде UNIX, и вы можете довольно легко абстрагировать текст команды с помощью дополнительных переменных, если вы делаете это таким образом.
Вы можете подумать, что ваш код никогда не будет выполняться где-либо еще, но ничего не стоит быть платформенно-нейтральным.Использование UNIX явно связывает ваш код с UNIX, и для этого нет веских причин.Нейтральные по отношению к платформе операторы OS- * существуют на языке уже очень давно.По крайней мере, с v6, если я правильно помню.