СИСТЕМА ВЫЗОВА С ИСПОЛЬЗОВАНИЕМ WS-COMMAND, не работающая с микрофокусом COBOL на корпоративном сервере

У меня есть требование вызвать сценарий powershell из микрофокуса COBOL, работающего на корпоративном сервере.

Пример скрипта ниже:

echo "Hello World " | Out-File -FilePath           
 "C:\test.txt"

Я добавил powershell для выполнения из пакетного скрипта, как показано ниже:

powershell.exe "C:\cbtest.ps1"

Структура WS-COMMAND следующая:

01 WS-COMMAND.
   05 COMMAND        PIC X(50) VALUE 
       "/c C:\test.bat".
   05 NULL-VALUE     PIC X VALUE X'00.

Но когда я запускаю программу COBOL из задания на сервере microfocus, на несколько миллисекунд появляется небольшое окно командной строки, но ничего не происходит.

Пожалуйста, дайте мне знать, что я делаю неправильно.


person Sushovan Dutta    schedule 26.11.2018    source источник
comment
У меня нет опыта работы с мэйнфреймами, COBOL или JCL, но ваш последний фрагмент кода выглядит так, как будто он должен запускаться cmd.exe /c C:\test.bat, что в основном означает: запустить cmd.exe, запустить в нем скрипт C:\test.bat и закрыть (/c) после завершения скрипта. Доступен ли вообще PowerShell в среде, в которой вы собираетесь его запускать?   -  person Ansgar Wiechers    schedule 26.11.2018
comment
да, но CALL SYSTEM сам по себе вызывает cmd.exe, используя последнюю команду, я думаю. Вот почему я только что использовал /c C:\test.bat. Да, powershell доступен в среде, как будто я запускаю команду cmd /c C:\test.bat в меню «Выполнить», она правильно запускает powershell.   -  person Sushovan Dutta    schedule 26.11.2018
comment
Вы пытались запустить powershell.exe с полным путем в командном файле?   -  person Ansgar Wiechers    schedule 26.11.2018
comment
Насколько я знаю, CALL SYSTEM делает внутренний вызов system(), и запуск /c здесь не поможет... Если вы хотите вызвать powershell.exe, просто сделайте это. Пожалуйста, повторите тестирование и опубликуйте фактический образец кода. Подсказка: после CALL SYSTEM сделайте что-нибудь с RETURN-CODE (например, MOVE RETURN-CODE TO PIC-9-08-USAGE-DISPLAY-var DISPLAY PIC-9-08-USAGE-DISPLAY-var UPON SYSERR (или файл или что-то еще) и исследуйте код, который должен дать вам подсказку о том, что не так.   -  person Simon Sobisch    schedule 26.11.2018


Ответы (1)


Попробуйте изменить

PIC X VALUE X'00.

To

PIC X VALUE X'00'.
person DiscoAstroid    schedule 26.11.2018
comment
Отсутствующий апостроф был опечаткой при вводе вопроса о SO и не имеет никакого отношения к проблеме, по которой запрашивается помощь. Если бы это была проблема в исходном коде, она была бы обнаружена как синтаксическая ошибка и исправлена ​​до публикации фрагмента кода. - person Rick Smith; 26.11.2018