OpenVMS - пакет для проверки, работает ли последняя версия скрипта
Можно ли кодировать пакетный скрипт, чтобы проверить, что версии не были добавлены с тех пор, как эта была поставлена в очередь, и если это так, запустите обновленный скрипт.
Я мог бы сделать это, создавая сценарий, но это означало бы 2 сценария для каждого сценария, который у меня есть.
Спасибо за любую помощь.
3 ответа
f$environment и f$search - лексические функции, которые вы можете использовать. Мой пример удаляет версию с f$extract, но вы можете использовать f$parse.
$ this = f$environment("PROCEDURE")
$ write sys$output "This is ", this
$ noversion = f$extract (0,f$locate(";",this),this)
$ write sys$output "without version it is ", noversion
$ latest = f$search (noversion)
$ write sys$output "latest version is ", latest
$ if this .nes. latest -
then $ write sys$output "There is a new version!"
Для вашей типичной самоподачи пакетной работы важно как минимум удалить версию перед повторной отправкой, чтобы подобрать текущую версию. Вот пример использования F$ELEMENT (оооочень проще, чем F$PARSE:-).
$ redo = "submit/log/noprint/noti/queue=" + -
f$getqui("DISPLAY_QUEUE","QUEUE_NAME","*","THIS_JOB")
$ restart = "tomorrow + 07:00:00" ! First daily run, Alter as needed.
$ if time.lts."12:00" then restart = "17:00:00" ! Second daily run, Alter as needed.
$ redo /after="''restart'"/para=("''p1'","''p2'","''p3'") 'f$elem(0,";",f$environment("procedure"))
Затем, как отправитель / изменитель командного файла, вы решаете, будет ли уже запланированный следующий запуск использовать новую версию или текущую версию, которая запомнена через идентификатор файла, а не его имя. Если вы хотите начать использовать новую версию немедленно, просто используйте
$ COPY /OVER my-script.com ;-1 /LOG
%COPY-I-OVERLAY, MY-SCRIPT.COM;35 being overwritten
%COPY-S-COPIED, MY-SCRIPT.COM;36 copied to MY-SCRIPT.COM;35 (5 blocks)
Ура, Хейн
Вы можете отправить процедуру "куртки", которая не выполняет ничего, кроме запуска самой процедуры.
Куртка Процедура JACKET.COM
$ SUBMIT/AFTER= [...] JACKET.COM
$ @REAL_PROCEDURE "''P1'" "''P2'" "''P3'" [...]
JACKET.COM никогда не обновляется. Текущая версия REAL_PROCEDURE.COM будет запущена при выполнении пакетного задания.