3

是否可以编写一个批处理脚本来检查自从这个版本排队以来没有添加任何版本,如果是这样,请运行更新的脚本。

我可以通过为其编写子脚本来做到这一点,但这意味着我拥有的每个脚本都有 2 个脚本。

谢谢你的帮助。

4

3 回答 3

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!"
于 2014-04-30T14:50:12.563 回答
1

对于典型的自提交批处理作业,最重要的是在重新提交之前至少剥离版本以获取当时的当前版本。这是一个使用 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"))

接下来,作为命令文件的提交者/更改者,您决定已经安排的下一次运行是使用新版本还是使用通过 FILE-ID 而不是其名称记住的当前版本。如果您想立即开始使用新版本,只需使用

$ 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)

干杯,海因

于 2014-05-01T02:30:24.553 回答
0

您可以提交一个“夹克”程序,除了运行实际程序之外什么都不做。

夹克程序 JACKET.COM

 $ SUBMIT/AFTER= [...] JACKET.COM
 $ @REAL_PROCEDURE "''P1'" "''P2'" "''P3'" [...]

JACKET.COM 永远不会更新。当前版本的 REAL_PROCEDURE.COM 将在批处理作业执行时运行。

于 2017-10-29T19:07:04.597 回答