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 будет запущена при выполнении пакетного задания.

Другие вопросы по тегам