是否可以对批处理脚本进行编码以检查是否已添加任何版本,因为这个版本已排队,如果是,则运行更新的脚本。
我可以通过对其进行子脚本编写来实现这一点,但这意味着每个脚本都有2个脚本。
感谢您的帮助。
答案 0 :(得分: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!"
答案 1 :(得分: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"))
接下来,作为命令文件的提交者/更换者,您可以决定已安排的下一次运行是使用新版本还是当前版本,而不是通过文件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)
干杯, 海因
答案 2 :(得分:0)
你可以提交一件"夹克"除了运行实际程序之外什么都不做的程序。
夹克程序JACKET.COM
$ SUBMIT/AFTER= [...] JACKET.COM
$ @REAL_PROCEDURE "''P1'" "''P2'" "''P3'" [...]
JACKET.COM永远不会更新。 当批处理作业执行时,将运行当前版本的REAL_PROCEDURE.COM。