S~ SHUTDOWN.BCK SHUTDOWN.BCK%BACKUP/LOG *.* SHUTDOWN.BCK/SAV/INTER $PERROT @hZKIV5.4 _IPNVAX:: S _$1$DUA0: V5.3 ~ $*[SYS$SHUTDOWN]SHUTDOWN$LAYERED.DAT;1+,n./ 4"-W0123KPWO56 WH7`kH89G@HJ   XAAXAAAXAAXAAXAAXCAXCAXCACAXCACACAXCACAXCACAXCACAZO\ O @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*D@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$ set nocontrol=y$ set noverify#%SYSTEM-F-TIMEOUT, device timeout: DECNET job terminated at 18-SEP-1991 17:32:18.05 Accounting information:N Buffered I/O count: 85 Peak working set size: 526N Direct I/O count: 37 Peak page file size: 2843N Page faults: 514 Mounted volumes: 0O Charged CPU time: 0 00:00:01.44 Elapsed time: 0 00:00:13.66@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$ set nocontrol=y$ set noverify#%SYSTEM-F-TIMEOUT, device timeout: DECNET job terminated at 19-SEP-1991 18:12:59.21 Accounting information:N Buffered I/O count: 48 Peak working set size: 390N Direct I/O count: 15 Peak page file size: 2452N Page faults: 349 Mounted volumes: 0O Charged CPU time: 0 00:00:00.58 Elapsed time: 0 00:00:06.83Si un imprevu vous empeche d'assurer votre shift, il vous appartient deGtrouver un remplacant et pas seulement de barrer votre nom sur la listeHaffichee. Les heures de debut et fin de shift sont egalement imperativesFet doivent etre respectees independamment de tout autre consideration.GLa non observation de cette autodiscipline conduit a la desorganisationAet a une inefficacite dangeureuse pour le succes de l'experience.JJe vous rappelle enfin que, les operations de routine de mise en route quiJn'ont pas besoin de faisceau, doivent etre effectuees a partir du lundi 23ASeptembre, et qu'elles doivent etre terminees samedi 28 Septembre@au matin de facon a se laisser encore 2 jours pour les surprisesLeventuelles. Il m'apparait hautement imprudent de tout miser sur le week-endEdu 28-29 Septembre qui doit etre reserve pour les incidents imprevus.FLe programme de redemarrage, a partir de l'arrivee du faisceau, est lesuivant:, 1. 1 shift de reglage du faisceau2 2. 1 shif  $write sys$output "ESSAI1"$exit JO\ O AXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXC# .shut]shutdown$Xll@Xaa@Xyy@Xered.datDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCCCXC NBpP'`IPN$EVE:EVEIPNV5.TPU$SECTION TPU$COMMAND*.1STXBEXBAhXBAhXBAhBAhXBAhXAAXAAXAAXAAXCAXCXPpAX CX CXAAXAAX:Pour suivre le deroulement du shutdown, modifier la ligne: CX CX$ $shutdrv$verbose = shutdrv$false CXparpAXAAXSAXSEXBAXBAXSEXrAXCXCXCXCXCXtruepAXAAXAAXAAXSAXAAXBXBAXBAXBAXBAXBXBXBXAAXAAXAAXAAX CXCAXCACACAXCACAXCACACAXCACAXCXCXCXCXCXCXtester l'enchenement sans Xee@Xxx@Xee@Xcc@Xuu@Xtt@Xee@Xrr@X @Xll@Xee@Xss@X @Xpp@Xrr@Xoo@Xcc@Xee@Xdd@Xuu@Xrr@Xee@Xss@X,,@XlAXlAlAXlAlAXlAlAlAXlAlAXlAlAXlAlAlAXlAlAXlAXlAXlAlAlAXlAlAXlAlAXlAXlAXpAXpAXCAXCACAXCACACAXCACAXCACACAXCACACACACACACACACAXCXCXCXCXCXCXCXexecutCAXCAXCACAXCACACAXCACAXCACAXCACAXCACACAXCXCXCXCXCXtrueBAXBA$*[SYS$SHUTDOWN]SHUTDOWN$LAYERED.FDL;1+,!;./@ 4Hn-W0123KPWO567GF7H89G@HJSYSTEM SOURCE VAX/VMSFILE ALLOCATION 15 BEST_TRY_CONTIGUOUS no BUCKET_SIZE 2 CLUSTER_SIZE 3 CONTIGUOUS no EXTENSION 0 FILE_MONITORING no GLOBAL_BUFFER_COUNT 0H NAME "sys$common:[sys$shutdown]shutdown$layered.dat" ORGANIZATION indexed! OWNER [SYSTEM]H PROTECTION (system:RWED, owner:RWED, group:RWED, world:RE)RECORD BLOCK_SPAN yes CARRIAGE_CONTROL none! FORMAT variable SIZE 433AREA 0 ALLOCATION 15 BUCKET_SIZE 2 EXTENSION 0KEY 0 CHANGES no DATA_KEY_COMPRESSION yes DATA_RECORD_COMPRESSION yes DATA_AREA 0 DATA_FILL 100 DUPLICATES yes INDEX_AREA 0 INDEX_COMPRESSION yes INDEX_FILL 100 LEVEL1_INDEX_AREA 0 NAME "" NULL_KEY no PROLOG 3 SEG0_LENGTH 12 SEG0_POSITION 0 TYPE stringKEY 1 CHANGES yes DATA_KEY_COMPRESSION yes DATA_AREA 0 DATA_FILL 100 DUPLICATES no INDEX_AREA 0 INDEX_COMPRESSION yes INDEX_FILL 100 LEVEL1_INDEX_AREA 0 NAME "" NULL_KEY no SEG0_LENGTH 79 SEG0_POSITION 13 TYPE string#*[SYS$SHUTDOWN]SHUTDOWN$README.1ST;1+,Z. /@ 4P -W0123KPWO 56-H7:H89G@HJ P================================================================================FShutdown similaire au startup configurable avec SYSMAN, mode d'emploi:F======================================================================HCette utilitaire permet de gerer les procedures d'un shutdown de la memeGfacon que celles du startup a travers une base de donnee accessible viaGla commande STARTUP de SYSMAN (avec les memes avantages de modularite).GSe reporter donc a l'utilisation de SYSMAN-STARTUP pour details utiles.7Le saveset SHUTDOWN.BCK contient les fichiers suivants:2 SHUTDOWN$SHUTDOWN.COM : la procedure de shutdownG SHUTDOWN$LAYERED.DAT : un fichier de description des produits (vide)L SHUTDOWN$LAYERED.FDL : un fichier FDL pour recreer celui-ci si necessaire" SHUTDOWN$README.1ST : ce texteMCes fichiers (ainsi que ceux a executer) sont supposes etre dans un directoryMappele SYS$SYSDEVICE:[VMS$COMMON.SYS$SHUTDOWN]. Si non, modifier la procedure(et le FDL) en consequence.MCe shutdown est directement tire du SYS$SYSTEM:STARTUP.COM. Le fonctionnementNen a ete conserve. En particulier, les modes d'appel sont exactement les memesO(DIRECT, BATCH, CALLED, SPAWN et ANY). Mais faire attention que selon l'endroitMou est appelee cette procedure, le queue-manager est peut-etre deja stoppe etNles logins interdits (facheux pour les modes Batch et Spawn...) (ce qui est le"cas si applee dans SYSHUTDWN.COM).<Pour definir/modifier la database sous SYSMAN, commencer par $MC SYSMANN SYSMAN> STARTUP SET DATABASE SYS$COMMON:[SYS$SHUTDOWN]SHUTDOWN$LAYERED.DATKLes commandes suivantes seront toujours "SYSMAN> STARTUP quelquechose ...." Pour les Phases, deux solutions:L - conserver les memes noms de phases que pour le startup. C'est plus simpleI (meme fichier de phases), mais les noms ne sont peut-etre pas adaptes.J - creer un autre fichier de phases (par exemple SHUTDOWN$PHASES.DAT) avecI son editeur favori (c'est un fichier texte sequentiel) et y donner les4 noms de phases que l'ont veut (un nom par ligne).F Dans ce cas, faire attention de redefinir le logique STARTUP$PHASES/ avant de lancer SYSMAN pour que cela marche:H $ DEFINE STARTUP$PHASES SYS$COMMON:[SYS$SHUTDOWN]SHUTDOWN$PHASES.DAT $ MC SYSMAN SYSMAN> etc... $ DEASSIGN STARTUP$PHASESH par exemple (il est tres fortement deconseille de modifier le fichier standard VMS$PHASES.DAT).M La procedure de shutdown prend ce fichier s'il existe, sinon elle prend le/ fichier SYS$STARTUP:VMS$PHASES.DAT standard.CInclure dans la procedure SYS$MANAGER:SYSHUTDWN.COM une ligne avec:5 $ @SYS$COMMON:[SYS$SHUTDOWN]SHUTDOWN$SHUTDOWN.COM:Pour suivre le deroulement du shutdown, modifier la ligne:H $shutdrv$verbose = shutdrv$false par $shutdrv$verbose = shutdrv$trueKPour tester l'enchainement sans executer les procedures, modifier la ligne:F $shutdrv$execut = shutdrv$true par $shutdrv$execut = shutdrv$falseGet executer shutdown$shutdown.com directement (sans faire le shutdown).-Pour infos, avis, reproches: DECUSF::PERROT_B3 ou PERROT@IPNCLS.IN2P3.FR2 ou PERROT@FRIPN51.BITNETP================================================================================%*[SYS$SHUTDOWN]SHUTDOWN$SHUTDOWN.COM;1+,./@ 4-W0123KPWO56H7Y H89G@HJ$$shutdrv$saved_verify = 'f$verify(0)Y$write sys$output f$fao("%SHUTDRV-I-SHUTDOWN, VMS site specific shutdown begun at !%D",0)-$shutdrv$saved_msg = f$environment("MESSAGE")1$shutdrv$saved_default = f$environment("DEFAULT") $set noon2$set message/facility/severity/identification/text $shutdrv$say := write sys$output$shutdrv$phase = ""$shutdrv$false = 0$shutdrv$true = -1)$shutdrv$this_node = f$getsyi("NODENAME").$shutdrv$process_count = f$getjpi("","PRCCNT")$shutdrv$no_param[0,7] = 7$shutdrv$end_param[0,7] = 10$shutdrv$end_field[0,7] = 13$shutdrv$execut = shutdrv$true $shutdrv$verbose = shutdrv$false-$if shutdrv$verbose then shutdrv$say f$fao( -X"%SHUTDRV-I-STARTING, Executing SHUTDOWN_DRIVER on node !AS at !%D",shutdrv$this_node,0)$if .not.shutdrv$execut then -Eshutdrv$say f$fao("%SHUTDRV-D-DEBUGMODE, Running in **DEBUG** mode.")$shutdrv$phase_pos = 0$shutdrv$phase_len = 12$shutdrv$mode_pos = 12$shutdrv$mode_len = 1$shutdrv$file_pos = 13$shutdrv$file_len = 79$shutdrv$param_pos = 93$shutdrv$enable_flag = "E"$shutdrv$disable_flag = "D"@$define/system/exec/nolog sys$shutdown sys$common:[sys$shutdown]L$define/system/exec/nolog shutdown$layered sys$shutdown:shutdown$layered.dat8$define/system/exec/nolog shutdown$list shutdown$layered2$test=f$search("sys$shutdown:shutdown$phases.dat")$if test .eqs. ""$thenD$define/system/exec/nolog shutdown$phases sys$startup:vms$phases.dat$elseJ$define/system/exec/nolog shutdown$phases sys$shutdown:shutdown$phases.dat$endif%$shutdrv$param = "Initial Parameters" $if f$type(shutdrv$invoc).eqs.""$then$shutdrv$invoc == 1$else#$shutdrv$invoc == shutdrv$invoc + 1$endif?$shutdrv$phase_name = "shutdrv$phase" + f$string(shutdrv$invoc)C$shutdrv$product_name = "shutdrv$product" + f$string(shutdrv$invoc)$shutdrv$shutdown_file = 0$next_open_file:W$shutdrv$comp_file = f$trnlnm("shutdown$list","lnm$system_table",shutdrv$shutdown_file)9$if shutdrv$comp_file .eqs. "" then goto count_comp_files$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-OPENCOMP, opening component file !UB, !AS", shutdrv$shutdown_file, shutdrv$comp_file)_$open/share/error=comp_error 'shutdrv$product_name'_'shutdrv$shutdown_file' 'shutdrv$comp_file'2$shutdrv$shutdown_file = shutdrv$shutdown_file + 1$goto count_comp_files $comp_error:|$shutdrv$say f$fao("%SHUTDRV-E-OPENFAIL, failure opening component file !UB, !AS", shutdrv$shutdown_file, shutdrv$comp_file)N$shutdrv$say f$fao("%SHUTDRV-I-CONTINUING, continuing with partial file list")$count_comp_files:/$shutdrv$comp_files = shutdrv$shutdown_file - 1\$if f$trnlnm(shutdrv$phase_name,"lnm$process_table").nes."" then $ close 'shutdrv$phase_name4$open/share=read 'shutdrv$phase_name SHUTDOWN$PHASES $get_phase:C$read/end=done_all_phases 'shutdrv$phase_name shutdrv$current_phase$if shutdrv$verbose then -Tshutdrv$say f$fao("!/%SHUTDRV-I-STRTPHAS, Starting phase !AS",shutdrv$current_phase)9$define/nolog shutdown$phase_name 'shutdrv$current_phase'$shutdrv$num_batch_jobs = 0$shutdrv$shutdown_file = 0$goto first_file $next_file:K$if shutdrv$shutdown_file .eq. shutdrv$comp_files then goto done_this_phase2$shutdrv$shutdown_file = shutdrv$shutdown_file + 1 $first_file:p$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-INDXFILE, using indexed file !UB", shutdrv$shutdown_file)$shutdrv$first = shutdrv$true $get_product:$if shutdrv$first$then-$read/end=next_file/error=read_error/nolock -h/index=0/key='shutdrv$current_phase' 'shutdrv$product_name'_'shutdrv$shutdown_file' shutdrv$product_info$shutdrv$first = shutdrv$false$elseo$read/end=next_file/error=read_error/nolock 'shutdrv$product_name'_'shutdrv$shutdown_file' shutdrv$product_info$endif $goto cont $read_error:$shutdrv$error_code == $status$$if shutdrv$error_code.eq.%X000182B2$then-$if shutdrv$verbose then shutdrv$say f$fao( -?"%SHUTDRV-I-EMTYPHAS, phase !AS has no entries in file !UB.", -,shutdrv$current_phase,shutdrv$shutdown_file)$goto next_file$endifI$shutdrv$say "%SHUTDRV-F-FATALERR, fatal error reading shutdown database"$exit shutdrv$error_code$cont:$if shutdrv$param.nes.""$then$shutdrv$x1 = p1$shutdrv$x2 = p2$shutdrv$x3 = p3$shutdrv$x4 = p4$shutdrv$x5 = p5$shutdrv$x6 = p6$shutdrv$x7 = p7$shutdrv$x8 = p8$endifg$shutdrv$phase = f$edit(f$extract(shutdrv$phase_pos,shutdrv$phase_len,shutdrv$product_info),"COLLAPSE")?$if shutdrv$phase.nes.shutdrv$current_phase then goto next_fileQ$shutdrv$mode = f$extract(shutdrv$mode_pos,shutdrv$mode_len,shutdrv$product_info)e$shutdrv$filen = f$edit(f$extract(shutdrv$file_pos,shutdrv$file_len,shutdrv$product_info),"COLLAPSE")E$shutdrv$param_end = f$locate(shutdrv$end_field,shutdrv$product_info)f$shutdrv$param = f$extract(shutdrv$param_pos,shutdrv$param_end-shutdrv$param_pos,shutdrv$product_info)E$shutdrv$flag = f$extract(shutdrv$param_end+1,1,shutdrv$product_info)K$shutdrv$node = ","+f$extract(shutdrv$param_end+2,200,shutdrv$product_info) $run_file:*$if (shutdrv$flag.eqs.shutdrv$enable_flag)$then1$if (shutdrv$node.eqs.",*") then goto verify_filek$if f$locate(","+shutdrv$this_node+",", shutdrv$node+",") .lt. f$length(shutdrv$node) then goto verify_file$else+$if (shutdrv$flag.eqs.shutdrv$disable_flag)$then#$if (shutdrv$node.nes.",*") .and. -Sf$locate(","+shutdrv$this_node+",", shutdrv$node+",") .gt. f$length(shutdrv$node) -then goto verify_file$elseR$shutdrv$say f$fao("%SHUTDRV-E-BADFLAG, bad enable/disable flag !AS",shutdrv$flag)$endif$endif$goto get_product $verify_file:;$if f$search("SYS$SHUTDOWN:''shutdrv$filen'").nes."" then -goto file_validT$shutdrv$say f$fao("%SHUTDRV-E-NOSUCHFILE, File SYS$SHUTDOWN:!AS does not exist.", -shutdrv$filen)$goto get_product $file_valid:-$if shutdrv$param.eqs."" then goto check_type$shutdrv$param_num = 1$shutdrv$pos = 0$loop:?$if f$extract(shutdrv$pos,1,shutdrv$param).nes.shutdrv$no_param$thenT$shutdrv$pos2 = f$locate(shutdrv$end_param,f$extract(shutdrv$pos,200,shutdrv$param))$shutdrv$pos3 = 0"$s hutdrv$x'shutdrv$param_num' = "" $get_quotes:j$shutdrv$pos4 = f$locate("""",f$extract(shutdrv$pos+shutdrv$pos3,shutdrv$pos2-shutdrv$pos3,shutdrv$param))/$if shutdrv$pos4.ne.shutdrv$pos2 - shutdrv$pos3E$then shutdrv$x'shutdrv$param_num' = shutdrv$x'shutdrv$param_num' + -Gf$extract(shutdrv$pos+shutdrv$pos3,shutdrv$pos4+1,shutdrv$param) + """"/$shutdrv$pos3 = shutdrv$pos3 + shutdrv$pos4 + 1$goto get_quotes$endif$shutdrv$x'shutdrv$param_num' = shutdrv$x'shutdrv$param_num' + f$extract(shutdrv$pos+shutdrv$pos3,shutdrv$pos2-shutdrv$pos3,shutdrv$param)-$shutdrv$pos = shutdrv$pos + shutdrv$pos2 + 1$else$shutdrv$pos = shutdrv$pos + 1$endif*$shutdrv$param_num = shutdrv$param_num + 1)$if shutdrv$param_num.le.8 then goto loop $check_type:4$shutdrv$file_type = f$parse(shutdrv$filen,,,"TYPE")h$shutdrv$command2 = " """+shutdrv$x1+""" """+shutdrv$x2+""" """+shutdrv$x3+""" """+shutdrv$x4+""" """+ -Gshutdrv$x5+""" """+shutdrv$x6+""" """+shutdrv$x7+""" """+shutdrv$x8+""" $if shutdrv$file_type.eqs.".COM"$then1$shutdrv$command = "@SYS$SHUTDOWN:"+shutdrv$filen%$else if shutdrv$file_type.eqs.".EXE"$then1$shutdrv$foreign = "$SYS$SHUTDOWN:"+shutdrv$filen%$shutdrv$command = "shutdrv$foreign "$elseU$shutdrv$say f$fao("%SHUTDRV-E-BADTYPE, invalid file type in file !AS",shutdrv$filen)$goto get_product$endif$endif$goto option_'shutdrv$modeb$shutdrv$say f$fao("%SHUTDRV-E-BADMODE, invalid mode !AS for file !AS",shutdrv$mode,shutdrv$filen)$goto get_product $option_d:T$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-DIRECT, !AS",shutdrv$command)>$if shutdrv$execut then $ 'shutdrv$command' 'shutdrv$command2'$goto get_product $option_s:`$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-SPAWN, Spawn/nowait !AS",shutdrv$command)K$if shutdrv$execut then $ spawn/nowait 'shutdrv$command' 'shutdrv$command2'$goto get_product $option_b:3$if shutdrv$file_type.eqs.".COM" then $ goto batch2L$shutdrv$say "%SHUTDRV-E-NOTCOM, BATCH mode can only be used for .COM files"O$shutdrv$say f$fao("-SHUTDRV-E-BADFILE, invalid filename is !AS",shutdrv$filen)$goto get_product$batch2:4$shutdrv$num_batch_jobs = shutdrv$num_batch_jobs + 1I$shutdrv$command = f$extract(1,f$length(shutdrv$command),shutdrv$command)^$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-BATCH, Submit/name=Shutdown$!ZB !AS", -'shutdrv$num_batch_jobs,shutdrv$command)I$if shutdrv$execut then $ submit/name=shutdown$'shutdrv$num_batch_jobs' -/noprint/log=sys$shutdown -/param=("''shutdrv$x1'","''shutdrv$x2'","''shutdrv$x3'","''shutdrv$x4'","''shutdrv$x5'","''shutdrv$x6'","''shutdrv$x7'","''shutdrv$x8'") -'shutdrv$command'$goto get_product $option_a:Q$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-ANY, !AS",shutdrv$command)=$if shutdrv$execut then $ 'shutdrv$command''shutdrv$command2'$goto get_product $option_c:[$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-CALLED, ignoring !AS",shutdrv$filen)$goto get_product$done_this_phase:$on error then goto synch_error$wait_for_batch:9$if shutdrv$num_batch_jobs.eq.0 then goto done_batch_wait$if shutdrv$verbose then -Lshutdrv$say f$fao("%SHUTDRV-I-SYNCH, synchronizing with job SHUTDOWN$!ZB", -shutdrv$num_batch_jobs)%$set message/nofac/noide/nosev/notext.$synchronize shutdown$'shutdrv$num_batch_jobs'$set message/fac/ide/sev/text$decrement_num_batch:4$shutdrv$num_batch_jobs = shutdrv$num_batch_jobs - 1$goto wait_for_batch $synch_error:$shutdrv$error_code == $status$set message/fac/ide/sev/textC$if shutdrv$error_code.ne.%X10048042 then $ exit shutdrv$error_code$on error then goto synch_error$goto decrement_num_batch$done_batch_wait:$on error then continue$wait_for_subprocess:Q$if f$getjpi("","PRCCNT").eq.shutdrv$process_count then goto done_subprocess_wait$if shutdrv$verbose then -Pshutdrv$say f$fao("%SHUTDRV-I-WAITSUB, waiting for subprocess completion(s)...")$wait 00:00:02$goto wait_for_subprocess$done_subprocess_wait:$goto get_phase$done_all_phases:$close 'shutdrv$phase_name$shutdrv$shutdown_file = 0$next_close_file:5$close 'shutdrv$product_name'_'shutdrv$shutdown_file'1$if shutdrv$shutdown_file .lt. shutdrv$comp_files$then2$shutdrv$shutdown_file = shutdrv$shutdown_file + 1$goto next_close_file$endif#$set default 'shutdrv$saved_default$set message 'shutdrv$saved_msgm$if shutdrv$verbose then shutdrv$say f$fao("!/%SHUTDRV-I-DRVEND, site specific shutdown finished at !%D!/",0) $exit %x1 $exit_fatal:$exit %x103a0004@t~ SHUTDOWN.BCKC SHUTDOWN.BCK%BACKUP/LOG *.* SHUTDOWN.BCK/SAV/INTER $PERROT @hZKIV5.4 _IPNVAX:: S _$1$DUA0: V5.3 ~ $*[SYS$SHUTDOWN]SHUTDOWN$LAYERED.DAT;1+,n./ 4"-W0123KPWO56 WH7`kH89G@HJ   XAAXAAAXAAXAAXAAXCAXCAXCACAXCACACAXCACAXCACAXCACAZO\ O @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*D@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$ set nocontrol=y$ set noverify#%SYSTEM-F-TIMEOUT, device timeout: DECNET job terminated at 18-SEP-1991 17:32:18.05 Accounting information:N Buffered I/O count: 85 Peak working set size: 526N Direct I/O count: 37 Peak page file size: 2843N Page faults: 514 Mounted volumes: 0O Charged CPU time: 0 00:00:01.44 Elapsed time: 0 00:00:13.66@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$ set nocontrol=y$ set noverify#%SYSTEM-F-TIMEOUT, device timeout: DECNET job terminated at 19-SEP-1991 18:12:59.21 Accounting information:N Buffered I/O count: 48 Peak working set size: 390N Direct I/O count: 15 Peak page file size: 2452N Page faults: 349 Mounted volumes: 0O Charged CPU time: 0 00:00:00.58 Elapsed time: 0 00:00:06.83Si un imprevu vous empeche d'assurer votre shift, il vous appartient deGtrouver un remplacant et pas seulement de barrer votre nom sur la listeHaffichee. Les heures de debut et fin de shift sont egalement imperativesFet doivent etre respectees independamment de tout autre consideration.GLa non observation de cette autodiscipline conduit a la desorganisationAet a une inefficacite dangeureuse pour le succes de l'experience.JJe vous rappelle enfin que, les operations de routine de mise en route quiJn'ont pas besoin de faisceau, doivent etre effectuees a partir du lundi 23ASeptembre, et qu'elles doivent etre terminees samedi 28 Septembre@au matin de facon a se laisser encore 2 jours pour les surprisesLeventuelles. Il m'apparait hautement imprudent de tout miser sur le week-endEdu 28-29 Septembre qui doit etre reserve pour les incidents imprevus.FLe programme de redemarrage, a partir de l'arrivee du faisceau, est lesuivant:, 1. 1 shift de reglage du faisceau2 2. 1 shif  $write sys$output "ESSAI1"$exit JO\ O AXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCAXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXC# .shut]shutdown$Xll@Xaa@Xyy@Xered.datDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXDAXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCXCCCXC NBpP'`IPN$EVE:EVEIPNV5.TPU$SECTION TPU$COMMAND*.1STXBEXBAhXBAhXBAhBAhXBAhXAAXAAXAAXAAXCAXCXPpAX CX CXAAXAAX:Pour suivre le deroulement du shutdown, modifier la ligne: CX CX$ $shutdrv$verbose = shutdrv$false CXparpAXAAXSAXSEXBAXBAXSEXrAXCXCXCXCXCXtruepAXAAXAAXAAXSAXAAXBXBAXBAXBAXBAXBXBXBXAAXAAXAAXAAX CXCAXCACACAXCACAXCACACAXCACAXCXCXCXCXCXCXtester l'enchenement sans Xee@Xxx@Xee@Xcc@Xuu@Xtt@Xee@Xrr@X @Xll@Xee@Xss@X @Xpp@Xrr@Xoo@Xcc@Xee@Xdd@Xuu@Xrr@Xee@Xss@X,,@XlAXlAlAXlAlAXlAlAlAXlAlAXlAlAXlAlAlAXlAlAXlAXlAXlAlAlAXlAlAXlAlAXlAXlAXpAXpAXCAXCACAXCACACAXCACAXCACACAXCACACACACACACACACAXCXCXCXCXCXCXCXexecutCAXCAXCACAXCACACAXCACAXCACAXCACAXCACACAXCXCXCXCXCXtrueBAXBA$*[SYS$SHUTDOWN]SHUTDOWN$LAYERED.FDL;1+,!;./@ 4Hn-W0123KPWO567GF7H89G@HJSYSTEM SOURCE VAX/VMSFILE ALLOCATION 15 BEST_TRY_CONTIGUOUS no BUCKET_SIZE 2 CLUSTER_SIZE 3 CONTIGUOUS no EXTENSION 0 FILE_MONITORING no GLOBAL_BUFFER_COUNT 0H NAME "sys$common:[sys$shutdown]shutdown$layered.dat" ORGANIZATION indexed! OWNER [SYSTEM]H PROTECTION (system:RWED, owner:RWED, group:RWED, world:RE)RECORD BLOCK_SPAN yes CARRIAGE_CONTROL none! FORMAT variable SIZE 433AREA 0 ALLOCATION 15 BUCKET_SIZE 2 EXTENSION 0KEY 0 CHANGES no DATA_KEY_COMPRESSION yes DATA_RECORD_COMPRESSION yes DATA_AREA 0 DATA_FILL 100 DUPLICATES yes INDEX_AREA 0 INDEX_COMPRESSION yes INDEX_FILL 100 LEVEL1_INDEX_AREA 0 NAME "" NULL_KEY no PROLOG 3 SEG0_LENGTH 12 SEG0_POSITION 0 TYPE stringKEY 1 CHANGES yes DATA_KEY_COMPRESSION yes DATA_AREA 0 DATA_FILL 100 DUPLICATES no INDEX_AREA 0 INDEX_COMPRESSION yes INDEX_FILL 100 LEVEL1_INDEX_AREA 0 NAME "" NULL_KEY no SEG0_LENGTH 79 SEG0_POSITION 13 TYPE string#*[SYS$SHUTDOWN]SHUTDOWN$README.1ST;1+,Z. /@ 4P -W0123KPWO 56-H7:H89G@HJ P================================================================================FShutdown similaire au startup configurable avec SYSMAN, mode d'emploi:F======================================================================HCette utilitaire permet de gerer les procedures d'un shutdown de la memeGfacon que celles du startup a travers une base de donnee accessible viaGla commande STARTUP de SYSMAN (avec les memes avantages de modularite).GSe reporter donc a l'utilisation de SYSMAN-STARTUP pour details utiles.7Le saveset SHUTDOWN.BCK contient les fichiers suivants:2 SHUTDOWN$SHUTDOWN.COM : la procedure de shutdownG SHUTDOWN$LAYERED.DAT : un fichier de description des produits (vide)L SHUTDOWN$LAYERED.FDL : un fichier FDL pour recreer celui-ci si necessaire" SHUTDOWN$README.1ST : ce texteMCes fichiers (ainsi que ceux a executer) sont supposes etre dans un directoryMappele SYS$SYSDEVICE:[VMS$COMMON.SYS$SHUTDOWN]. Si non, modifier la procedure(et le FDL) en consequence.MCe shutdown est directement tire du SYS$SYSTEM:STARTUP.COM. Le fonctionnementNen a ete conserve. En particulier, les modes d'appel sont exactement les memesO(DIRECT, BATCH, CALLED, SPAWN et ANY). Mais faire attention que selon l'endroitMou est appelee cette procedure, le queue-manager est peut-etre deja stoppe etNles logins interdits (facheux pour les modes Batch et Spawn...) (ce qui est le"cas si applee dans SYSHUTDWN.COM).<Pour definir/modifier la database sous SYSMAN, commencer par $MC SYSMANN SYSMAN> STARTUP SET DATABASE SYS$COMMON:[SYS$SHUTDOWN]SHUTDOWN$LAYERED.DATKLes commandes suivantes seront toujours "SYSMAN> STARTUP quelquechose ...." Pour les Phases, deux solutions:L - conserver les memes noms de phases que pour le startup. C'est plus simpleI (meme fichier de phases), mais les noms ne sont peut-etre pas adaptes.J - creer un autre fichier de phases (par exemple SHUTDOWN$PHASES.DAT) avecI son editeur favori (c'est un fichier texte sequentiel) et y donner les4 noms de phases que l'ont veut (un nom par ligne).F Dans ce cas, faire attention de redefinir le logique STARTUP$PHASES/ avant de lancer SYSMAN pour que cela marche:H $ DEFINE STARTUP$PHASES SYS$COMMON:[SYS$SHUTDOWN]SHUTDOWN$PHASES.DAT $ MC SYSMAN SYSMAN> etc... $ DEASSIGN STARTUP$PHASESH par exemple (il est tres fortement deconseille de modifier le fichier standard VMS$PHASES.DAT).M La procedure de shutdown prend ce fichier s'il existe, sinon elle prend le/ fichier SYS$STARTUP:VMS$PHASES.DAT standard.CInclure dans la procedure SYS$MANAGER:SYSHUTDWN.COM une ligne avec:5 $ @SYS$COMMON:[SYS$SHUTDOWN]SHUTDOWN$SHUTDOWN.COM:Pour suivre le deroulement du shutdown, modifier la ligne:H $shutdrv$verbose = shutdrv$false par $shutdrv$verbose = shutdrv$trueKPour tester l'enchainement sans executer les procedures, modifier la ligne:F $shutdrv$execut = shutdrv$true par $shutdrv$execut = shutdrv$falseGet executer shutdown$shutdown.com directement (sans faire le shutdown).-Pour infos, avis, reproches: DECUSF::PERROT_B3 ou PERROT@IPNCLS.IN2P3.FR2 ou PERROT@FRIPN51.BITNETP================================================================================%*[SYS$SHUTDOWN]SHUTDOWN$SHUTDOWN.COM;1+,./@ 4-W0123KPWO56H7Y H89G@HJ$$shutdrv$saved_verify = 'f$verify(0)Y$write sys$output f$fao("%SHUTDRV-I-SHUTDOWN, VMS site specific shutdown begun at !%D",0)-$shutdrv$saved_msg = f$environment("MESSAGE")1$shutdrv$saved_default = f$environment("DEFAULT") $set noon2$set message/facility/severity/identification/text $shutdrv$say := write sys$output$shutdrv$phase = ""$shutdrv$false = 0$shutdrv$true = -1)$shutdrv$this_node = f$getsyi("NODENAME").$shutdrv$process_count = f$getjpi("","PRCCNT")$shutdrv$no_param[0,7] = 7$shutdrv$end_param[0,7] = 10$shutdrv$end_field[0,7] = 13$shutdrv$execut = shutdrv$true $shutdrv$verbose = shutdrv$false-$if shutdrv$verbose then shutdrv$say f$fao( -X"%SHUTDRV-I-STARTING, Executing SHUTDOWN_DRIVER on node !AS at !%D",shutdrv$this_node,0)$if .not.shutdrv$execut then -Eshutdrv$say f$fao("%SHUTDRV-D-DEBUGMODE, Running in **DEBUG** mode.")$shutdrv$phase_pos = 0$shutdrv$phase_len = 12$shutdrv$mode_pos = 12$shutdrv$mode_len = 1$shutdrv$file_pos = 13$shutdrv$file_len = 79$shutdrv$param_pos = 93$shutdrv$enable_flag = "E"$shutdrv$disable_flag = "D"@$define/system/exec/nolog sys$shutdown sys$common:[sys$shutdown]L$define/system/exec/nolog shutdown$layered sys$shutdown:shutdown$layered.dat8$define/system/exec/nolog shutdown$list shutdown$layered2$test=f$search("sys$shutdown:shutdown$phases.dat")$if test .eqs. ""$thenD$define/system/exec/nolog shutdown$phases sys$startup:vms$phases.dat$elseJ$define/system/exec/nolog shutdown$phases sys$shutdown:shutdown$phases.dat$endif%$shutdrv$param = "Initial Parameters" $if f$type(shutdrv$invoc).eqs.""$then$shutdrv$invoc == 1$else#$shutdrv$invoc == shutdrv$invoc + 1$endif?$shutdrv$phase_name = "shutdrv$phase" + f$string(shutdrv$invoc)C$shutdrv$product_name = "shutdrv$product" + f$string(shutdrv$invoc)$shutdrv$shutdown_file = 0$next_open_file:W$shutdrv$comp_file = f$trnlnm("shutdown$list","lnm$system_table",shutdrv$shutdown_file)9$if shutdrv$comp_file .eqs. "" then goto count_comp_files$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-OPENCOMP, opening component file !UB, !AS", shutdrv$shutdown_file, shutdrv$comp_file)_$open/share/error=comp_error 'shutdrv$product_name'_'shutdrv$shutdown_file' 'shutdrv$comp_file'2$shutdrv$shutdown_file = shutdrv$shutdown_file + 1$goto count_comp_files $comp_error:|$shutdrv$say f$fao("%SHUTDRV-E-OPENFAIL, failure opening component file !UB, !AS", shutdrv$shutdown_file, shutdrv$comp_file)N$shutdrv$say f$fao("%SHUTDRV-I-CONTINUING, continuing with partial file list")$count_comp_files:/$shutdrv$comp_files = shutdrv$shutdown_file - 1\$if f$trnlnm(shutdrv$phase_name,"lnm$process_table").nes."" then $ close 'shutdrv$phase_name4$open/share=read 'shutdrv$phase_name SHUTDOWN$PHASES $get_phase:C$read/end=done_all_phases 'shutdrv$phase_name shutdrv$current_phase$if shutdrv$verbose then -Tshutdrv$say f$fao("!/%SHUTDRV-I-STRTPHAS, Starting phase !AS",shutdrv$current_phase)9$define/nolog shutdown$phase_name 'shutdrv$current_phase'$shutdrv$num_batch_jobs = 0$shutdrv$shutdown_file = 0$goto first_file $next_file:K$if shutdrv$shutdown_file .eq. shutdrv$comp_files then goto done_this_phase2$shutdrv$shutdown_file = shutdrv$shutdown_file + 1 $first_file:p$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-INDXFILE, using indexed file !UB", shutdrv$shutdown_file)$shutdrv$first = shutdrv$true $get_product:$if shutdrv$first$then-$read/end=next_file/error=read_error/nolock -h/index=0/key='shutdrv$current_phase' 'shutdrv$product_name'_'shutdrv$shutdown_file' shutdrv$product_info$shutdrv$first = shutdrv$false$elseo$read/end=next_file/error=read_error/nolock 'shutdrv$product_name'_'shutdrv$shutdown_file' shutdrv$product_info$endif $goto cont $read_error:$shutdrv$error_code == $status$$if shutdrv$error_code.eq.%X000182B2$then-$if shutdrv$verbose then shutdrv$say f$fao( -?"%SHUTDRV-I-EMTYPHAS, phase !AS has no entries in file !UB.", -,shutdrv$current_phase,shutdrv$shutdown_file)$goto next_file$endifI$shutdrv$say "%SHUTDRV-F-FATALERR, fatal error reading shutdown database"$exit shutdrv$error_code$cont:$if shutdrv$param.nes.""$then$shutdrv$x1 = p1$shutdrv$x2 = p2$shutdrv$x3 = p3$shutdrv$x4 = p4$shutdrv$x5 = p5$shutdrv$x6 = p6$shutdrv$x7 = p7$shutdrv$x8 = p8$endifg$shutdrv$phase = f$edit(f$extract(shutdrv$phase_pos,shutdrv$phase_len,shutdrv$product_info),"COLLAPSE")?$if shutdrv$phase.nes.shutdrv$current_phase then goto next_fileQ$shutdrv$mode = f$extract(shutdrv$mode_pos,shutdrv$mode_len,shutdrv$product_info)e$shutdrv$filen = f$edit(f$extract(shutdrv$file_pos,shutdrv$file_len,shutdrv$product_info),"COLLAPSE")E$shutdrv$param_end = f$locate(shutdrv$end_field,shutdrv$product_info)f$shutdrv$param = f$extract(shutdrv$param_pos,shutdrv$param_end-shutdrv$param_pos,shutdrv$product_info)E$shutdrv$flag = f$extract(shutdrv$param_end+1,1,shutdrv$product_info)K$shutdrv$node = ","+f$extract(shutdrv$param_end+2,200,shutdrv$product_info) $run_file:*$if (shutdrv$flag.eqs.shutdrv$enable_flag)$then1$if (shutdrv$node.eqs.",*") then goto verify_filek$if f$locate(","+shutdrv$this_node+",", shutdrv$node+",") .lt. f$length(shutdrv$node) then goto verify_file$else+$if (shutdrv$flag.eqs.shutdrv$disable_flag)$then#$if (shutdrv$node.nes.",*") .and. -Sf$locate(","+shutdrv$this_node+",", shutdrv$node+",") .gt. f$length(shutdrv$node) -then goto verify_file$elseR$shutdrv$say f$fao("%SHUTDRV-E-BADFLAG, bad enable/disable flag !AS",shutdrv$flag)$endif$endif$goto get_product $verify_file:;$if f$search("SYS$SHUTDOWN:''shutdrv$filen'").nes."" then -goto file_validT$shutdrv$say f$fao("%SHUTDRV-E-NOSUCHFILE, File SYS$SHUTDOWN:!AS does not exist.", -shutdrv$filen)$goto get_product $file_valid:-$if shutdrv$param.eqs."" then goto check_type$shutdrv$param_num = 1$shutdrv$pos = 0$loop:?$if f$extract(shutdrv$pos,1,shutdrv$param).nes.shutdrv$no_param$thenT$shutdrv$pos2 = f$locate(shutdrv$end_param,f$extract(shutdrv$pos,200,shutdrv$param))$shutdrv$pos3 = 0"$s hutdrv$x'shutdrv$param_num' = "" $get_quotes:j$shutdrv$pos4 = f$locate("""",f$extract(shutdrv$pos+shutdrv$pos3,shutdrv$pos2-shutdrv$pos3,shutdrv$param))/$if shutdrv$pos4.ne.shutdrv$pos2 - shutdrv$pos3E$then shutdrv$x'shutdrv$param_num' = shutdrv$x'shutdrv$param_num' + -Gf$extract(shutdrv$pos+shutdrv$pos3,shutdrv$pos4+1,shutdrv$param) + """"/$shutdrv$pos3 = shutdrv$pos3 + shutdrv$pos4 + 1$goto get_quotes$endif$shutdrv$x'shutdrv$param_num' = shutdrv$x'shutdrv$param_num' + f$extract(shutdrv$pos+shutdrv$pos3,shutdrv$pos2-shutdrv$pos3,shutdrv$param)-$shutdrv$pos = shutdrv$pos + shutdrv$pos2 + 1$else$shutdrv$pos = shutdrv$pos + 1$endif*$shutdrv$param_num = shutdrv$param_num + 1)$if shutdrv$param_num.le.8 then goto loop $check_type:4$shutdrv$file_type = f$parse(shutdrv$filen,,,"TYPE")h$shutdrv$command2 = " """+shutdrv$x1+""" """+shutdrv$x2+""" """+shutdrv$x3+""" """+shutdrv$x4+""" """+ -Gshutdrv$x5+""" """+shutdrv$x6+""" """+shutdrv$x7+""" """+shutdrv$x8+""" $if shutdrv$file_type.eqs.".COM"$then1$shutdrv$command = "@SYS$SHUTDOWN:"+shutdrv$filen%$else if shutdrv$file_type.eqs.".EXE"$then1$shutdrv$foreign = "$SYS$SHUTDOWN:"+shutdrv$filen%$shutdrv$command = "shutdrv$foreign "$elseU$shutdrv$say f$fao("%SHUTDRV-E-BADTYPE, invalid file type in file !AS",shutdrv$filen)$goto get_product$endif$endif$goto option_'shutdrv$modeb$shutdrv$say f$fao("%SHUTDRV-E-BADMODE, invalid mode !AS for file !AS",shutdrv$mode,shutdrv$filen)$goto get_product $option_d:T$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-DIRECT, !AS",shutdrv$command)>$if shutdrv$execut then $ 'shutdrv$command' 'shutdrv$command2'$goto get_product $option_s:`$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-SPAWN, Spawn/nowait !AS",shutdrv$command)K$if shutdrv$execut then $ spawn/nowait 'shutdrv$command' 'shutdrv$command2'$goto get_product $option_b:3$if shutdrv$file_type.eqs.".COM" then $ goto batch2L$shutdrv$say "%SHUTDRV-E-NOTCOM, BATCH mode can only be used for .COM files"O$shutdrv$say f$fao("-SHUTDRV-E-BADFILE, invalid filename is !AS",shutdrv$filen)$goto get_product$batch2:4$shutdrv$num_batch_jobs = shutdrv$num_batch_jobs + 1I$shutdrv$command = f$extract(1,f$length(shutdrv$command),shutdrv$command)^$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-BATCH, Submit/name=Shutdown$!ZB !AS", -'shutdrv$num_batch_jobs,shutdrv$command)I$if shutdrv$execut then $ submit/name=shutdown$'shutdrv$num_batch_jobs' -/noprint/log=sys$shutdown -/param=("''shutdrv$x1'","''shutdrv$x2'","''shutdrv$x3'","''shutdrv$x4'","''shutdrv$x5'","''shutdrv$x6'","''shutdrv$x7'","''shutdrv$x8'") -'shutdrv$command'$goto get_product $option_a:Q$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-ANY, !AS",shutdrv$command)=$if shutdrv$execut then $ 'shutdrv$command''shutdrv$command2'$goto get_product $option_c:[$if shutdrv$verbose then shutdrv$say f$fao("%SHUTDRV-I-CALLED, ignoring !AS",shutdrv$filen)$goto get_product$done_this_phase:$on error then goto synch_error$wait_for_batch:9$if shutdrv$num_batch_jobs.eq.0 then goto done_batch_wait$if shutdrv$verbose then -Lshutdrv$say f$fao("%SHUTDRV-I-SYNCH, synchronizing with job SHUTDOWN$!ZB", -shutdrv$num_batch_jobs)%$set message/nofac/noide/nosev/notext.$synchronize shutdown$'shutdrv$num_batch_jobs'$set message/fac/ide/sev/text$decrement_num_batch:4$shutdrv$num_batch_jobs = shutdrv$num_batch_jobs - 1$goto wait_for_batch $synch_error:$shutdrv$error_code == $status$set message/fac/ide/sev/textC$if shutdrv$error_code.ne.%X10048042 then $ exit shutdrv$error_code$on error then goto synch_error$goto decrement_num_batch$done_batch_wait:$on error then continue$wait_for_subprocess:Q$if f$getjpi("","PRCCNT").eq.shutdrv$process_count then goto done_subprocess_wait$if shutdrv$verbose then -Pshutdrv$say f$fao("%SHUTDRV-I-WAITSUB, waiting for subprocess completion(s)...")$wait 00:00:02$goto wait_for_subprocess$done_subprocess_wait:$goto get_phase$done_all_phases:$close 'shutdrv$phase_name$shutdrv$shutdown_file = 0$next_close_file:5$close 'shutdrv$product_name'_'shutdrv$shutdown_file'1$if shutdrv$shutdown_file .lt. shutdrv$comp_files$then2$shutdrv$shutdown_file = shutdrv$shutdown_file + 1$goto next_close_file$endif#$set default 'shutdrv$saved_default$set message 'shutdrv$saved_msgm$if shutdrv$verbose then shutdrv$say f$fao("!/%SHUTDRV-I-DRVEND, site specific shutdown finished at !%D!/",0) $exit %x1 $exit_fatal:$exit %x103a0004@