$! ------------------ CUT HERE ----------------------- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))' $! $! This archive created by VMS_SHARE Version 8.3 $! On 3-MAY-1993 17:56:42.19 By user BAILEY $! $! The VMS_SHARE software that created this archive $! was written by Andy Harper, Kings College London UK $! -- December 1992 $! $! Credit is due to these people for their original ideas: $! James Gray, Michael Bednarek $! $!+ THIS PACKAGE DISTRIBUTED IN 2 PARTS, TO KEEP EACH PART $! BELOW 30 BLOCKS $! $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER $! AND EXECUTE AS A COMMAND PROCEDURE ( @name ) $! $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING: $! 1. $README.TXT $! 2. BACKCHECK.COM $! 3. BACKSET.COM $! 4. BUILD_LOGNAME.COM $! 5. DEVSPECIFIC.DAT $! 6. EDIT_DEVSPECIFIC.COM $! 7. LOGIN.COM $! $set="set" $set symbol/scope=(nolocal,noglobal) $f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID")) $e="write sys$error ""%UNPACK"", " $w="write sys$output ""%UNPACK"", " $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!" $ if f$getsyi("CPU") .gt. 127 then $ goto start $ ve=f$getsyi("version") $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start $ e "-E-OLDVER, Must run at least VMS 4.4" $ v=f$verify(v) $ exit 44 $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes $ if f$parse(P1) .nes. "" then $ goto dirok $ dn=f$parse(P1,,,"DIRECTORY") $ w "-I-CREDIR, Creating directory ''dn'" $ create/dir 'dn' $ if $status then $ goto dirok $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped" $ delete 'f'* $ exit $dirok: $ x=f$search(P1) $ if x .eqs. "" then $ goto file_absent $ e "-W-HIGHVERS, Creating higher version of ", P1 $file_absent: $ w "-I-UNPACK, Unpacking file ", P1 $ n=P1 $ if P3 .nes. "" then $ n=f $ if .not. f$verify() then $ define/user sys$output nl: $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n' PROCEDURE GetHex(s,p)LOCAL x1,x2;x1:=INDEX(t,SUBSTR(s,p,1))-1;x2:=INDEX(t, SUBSTR(s,p+1,1))-1;RETURN 16*x1+x2;ENDPROCEDURE; PROCEDURE SkipPartsep LOOP EXITIF MARK(NONE)=END_OF(b);EXITIF INDEX(ERASE_LINE, "-+-+-+-+-+-+-+-+")=1;ENDLOOP;ENDPROCEDURE;PROCEDURE COPY_PREVIOUS(b,n)LOCAL m, s,e;m:=MARK(NONE);MOVE_HORIZONTAL(-b);s:=MARK(NONE);MOVE_HORIZONTAL(n-1);e:= MARK(NONE);POSITION(m);COPY_TEXT(CREATE_RANGE(s,e));ENDPROCEDURE; PROCEDURE ProcessLine LOCAL c,s,l,b,n,p;c := ERASE_CHARACTER(1);s := ERASE_LINE;IF c = "X" THEN SPLIT_LINE; ENDIF;MOVE_HORIZONTAL(-1);l := LENGTH( s);p := 1;LOOP EXITIF p > l;c := SUBSTR(s,p,1);p := p+1; CASE c FROM ' ' TO '`' ['\']: b:=GetHex(s,p); n:=GetHex(s,p+2); p:=p+4; COPY_PREVIOUS(b,n);['`']: COPY_TEXT(ASCII(GetHex(s,p))); p:=p+2;[' ']: p:=p+1; [INRANGE,OUTRANGE]: COPY_TEXT(c);ENDCASE;ENDLOOP;ENDPROCEDURE; PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=END_OF(b); IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;ELSE ProcessLine; MOVE_HORIZONTAL(1);ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,"UNPACK");SET( SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=GET_INFO( COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,GET_INFO( COMMAND_LINE,"output_file"));QUIT; $ if p3 .eqs. "" then $ goto dl $ open/write fdl &f $ write fdl "RECORD" $ write fdl P3 $ close fdl $ w "-I-CONVRFM, Converting record format to ", P3 $ convert/fdl=&f &f-1 &P1 $dl: delete 'f'* $ checksum 'P1' $ if checksum$checksum .nes. P2 then $ - e "-E-CHKSMFAIL, Checksum of ''P1' failed." $ exit $ endsubroutine $start: $! $ create 'f' X`20`20`20`20\0404\0808\0A0ATurnkey`20Backup`20Procedures X XThis`20set`20of`20DCL`20command`20p\2409`20is`20designed`20to`20simplify`20nor Vmal`20backups`20by Xallowing`20them\2C04be`20run`20from`20within`20a`20captive`20account,`20so V\3103at`20inexperienced Xoperators`20can`20be`20guid\8304hrough\6404\A606ss,`20\B304\4708\1904amount V\D504damage Xsomeone`20might\7B04identally`20(or`20otherwise)`20do`20with\6007ivileges`20ne Ve\7E05o Xaccess`20files`20for`20backup`20is`20minimized.`20`20We\FC05these\A906dure V\3203rom`20an`20\FF07 Xw\6D08DefCLI,`20Captive,\D505DisMail`20flags`20set,`20which`20holds\3805ReadAl Vl X\AD09,`20though`20that`20may`20not`20be`20adequate`20in`20future`20versions V`20of`20VMS`20if Xprocesses`20\9B05\5F07`20are`20no`20longer`20granted`20implicit`20CHANGE`20acc Vess`20to`20all Xfiles,\0B04owing`20them`20to`20update`20\BE04BACKUP`20field\9804\1404file`20he Vader. X XTo`20set`20up`20this`20system,`20place\2F06ol\6007DCL`20procedures`20in`20Sys$ VLogin`20of`20the Xaccount`20you`20wish\8F05se`20for`20backups: X X`20`20`20`20Login.Com`20-`20The`20main`20menu,`20and`20dispatcher`20to`20ot V\0904\7C0A.`20Th\AD04hould X\4F04`20`20be\C908as\B905\8C07's`20LgiCmd`20file. X X\2D04BackSet.\8008is`20file\4204s`20up`20\AC07`20interactively,\9A05then`20per Vforms\7C07them`20as`20batch`20jobs.\680ACheck.\6A10allows\A905us\E606check V\1205log`20files`20of`20current\6B07or`20previou\6F04ckups,`20either`20by`20ex Vamining\4805\6A05in`20its`20entirety,`20or`20by\4F07generating`20a`20summary V`20of`20errors\C607Edit_DevSpecific\CD24see`20and`20change\D606is\C609f`20devi Vce-s\5407`20qualifiers`20used`20by`20BackSet.Com.`20`20If`20\110B`20finds X\4F06an\DF04ry`20in`20this`20list`20match\DA04\7D04Backup`20input`20spec,`20it V`20will`20add`20it`20to\4E07\2F0Bcomm\C604line`20as`20a`20local`20\AD09`20aft V\F104he`20\5B0A. X\4A05Build_Logname.\B404-`20Utility`20rout\5404\EB13`20and`20BackCheck.Com V\9808o`20generate\7105names`20of`20batch`20jobs`20and`20\0F06log`20files. V\3F07\0606\0C0C\0303 XYou`20should`20then`20edit\5E05site-specific`20symbols`20in`20Login.Com,`20 V\6E04you're`20all Xset.`20`20As\1404\DA04\4805procedures,`20\1004followin\9E07`20will`20be`20crea Vted`20in XSys$Login: X\BC05Backups.Log`20-`20Text`20file`20contain\4C04summaries`20of`20each`20backu Vp`20run. X\4605DevS\CF07.Dat\4A18\A404list\4904device-s\3707`20output X\4E04`20`20qualifiers`20used`20by\A905Set.Com.\7506Error.\B910genera\EE04whene Vver`20an`20error`20is`20encountered`20in`20one`20of\7607\9F04command`20procedu Vres.`20`20Note`20that`20errors`20dur\D008execution`20of`20BACKUP\4F07do`20not V`20result`20in`20\9B07\2C07an`20\C20Afile;`20instead,\5905\4C0Dcomplet\3B04sta Vtus\CC04record\C906Backups.Log. X\3505\5708s`20for`20any`20current`20backup`20jobs,`20as`20well\0804\2404old V`20lo\3A08which X\8306you`20haven't`20deleted`20from`20withi\8206Check.Com. X XThese`20procedures`20do\3B04cover`20nearly`20all`20possible\9708configuration V\A104nd`20are Xrather`20crude`20in`20places,`20but`20they`20ge\0905\D804\6C04e`20\F804us V\4206I`20hope\2906can Xbe`20of`20use`20to`20others`20as`20well. X XYou`20are\0F04come\2404distribut\4505m`20as`20you`20see`20fit,`20as`20long V\0804\6505\3F04provided Xfree`20of`20charge,`20except`20what`20may`20be`20necessary\6D05efray`20the`20c Vosts`20of`20transfer.`20\9F09also\A40Cmake`20any`20changes\A205feel\E904ful, V\A60C\1C04add`20a Xrecord\6404your`20\3D08to`20\8104modification`20history,`20and`20don't`20alter V`20anyone Xelse's`20entry.`20`20Finally\7805usual,`20these`20procedures`20\C904distribute Vd`20as`20is\6104y Xno`20warranty\9E04\DA04kind`20is`20made`20that\5104y`20will`20perform`20in`20 V\2B04particular Xfashion\9203No`20liabili\5404r`20responsib\1207\660Bfor\0D05damages`20which V`20may Xarise`20from`20use`20or`20failure\4004\E111\9C05be`20borne`20by`20me,`20the XUnivers\7807Pennsylvania,`20or`20the`20Howard`20Hughes`20Medical`20Institute. V`20`20'Nuff Xsaid,`20I`20hope. X XFinally,`20if`20you've`20\CA04suggestions\6104comments`20about\B911,`20I'd V\B903 Xhappy`20to`20hear\F706you\7C03I`20can't`20promise`20to`20fix`20bugs\2204`20fin Vd,`20but`20I'll`20try,`20as XI`20have`20time,\3404sort`20things`20out. X XEnjo\2C04nd`20good`20luck! X XCharles`20Bailey`20`20bailey@genetics.upenn.edu X17-Mar-1993 $ call unpack $README.TXT 891598561 "" $! $ create 'f' X$!`20BackCheck.Com`20-`20Checks`20backup`20logs`20produced`20by`20BackSet.Com X$!`20Version`201.4`20`203-May-1993 X$!`20Author:`20Charles`20Bailey`20`20bailey@genetics.upenn.edu X$!\3804Modification`20History`20at`20end X$! X$`20`20`20`20say`20=`20"Write`20Sys$Error" X\1D05ask`20=`20"Read\1C05Command/Prompt=" X$!`20`20`20Severity`20-->`20Warning`20so`20thi\F205cedure`20won't`20cause`20ca Vller`20to`20die X\8906s_abort`20=`2040\C107Get`20the`20name`20of`20\0C04device`20in`20which`20w Ve'r\0F04terested\D70A""\0C06defaul\5904F$TrnLNM("Sys$Disk")\2406prompt\ED04Che Vck`20log`20for`20\6E07`5B"+d\4606+"`5D:`20"\3506ask`20"''prompt'"`20disk\1A06I Vf\0D05`20.eqs.`20""`20Then`20\1305=`20\4A07\2A09(F$Locate(":",disk)`20.eq.`20F V$Length(disk))`20.and.`20- X`20\3904\0303(F$Extract(\2B0E-1,1\4908ne\8204`5D")-\3809\8D0Disk+":"\8E06 V\1507F$Edit(disk,"Upcase,Collapse,UnComment") X\3507ronly`20=`201 X\D40BParse(\CF09s`20""\C308\1E0D+"`5B000000`5D")\2905.`20"\5B08Then\0A06`20 V`20say`20"%BACKCHECK-F-DEV,`20error`20in`20device`20specification`20",disk V\4308Exit`20ss_abort X\1505EndIf X$! X$!`20Get`20the`20logfile`20name`20-`20we`20farm`20this`20out`20to`20keep\7504s Vynch`20with`20BackSet.Com\5B06tmpsym`20=`20"BackCheck_"+F$GetJPI("","PID" V\EB07@Build_LogName`20'disk'`20'tmpsym' X\2405If`20.not.`20$Status\1606Then\E208say`20"%BACKCHECK-F-LOGSPEC,`20error V`20generating`20log`20f\E808" X\4207Exit`20ss_abort X\1505EndIf X\0B05jobn\9F04=`20\9A0Elog\1807"Sys$Login:"+j\2F06+".Log\6307Delete/Symbol/Glo Vbal\E812F$Search(l\5A06)`20.eqs.`20""\F524NOSUCHLOG,`20no\E905exists`20for`20d Vevice`20",disk\F722! X$`20Get_viewopt:\1D06\7405\8C07ask`20"View`20summary`20or`20entire\7C05(S/E) V`20`5BS`5D:`20"`20optio\BB07If`20\0F06\DD09\D805\1508=`20"S\6307\1209F$Edit(F$ VExtract(0,1,option),"Upcase") X\5F16\4E08Then\F908\B308=`201 X\1308\DC0B\0E07Compiling`20\3008report`20.`20.`20.\2C0E" X$!`20\0E04Record`20all`20relevant`20messages`20from`20Backup`20into`20a`20temp Vor\5D04file\5408tmpfil\A003jobname+F$GetJPI("","PID")+".IWEF_Report\8E09Search V/Log/Window=3/Match=OR/Exact/Output='tmpfil'`20- X\3B06\0606`20'logname'`20"-I-","-W-","-E-","-F-\6B07Else\7508If`20option`20.ne Vs.`20"E"`20Then`20Goto`20Get_viewopt\3108summ\F404=`200 X\F310\7F07\6607ndIf\0B06!`20showcmd`20is`20a`20global`20symbol`20set`20in`20Lo Vgin.Com\3306\3108\EB08 X$!`20`20`20Clean`20up\2406If`20\8E08\B305Delete/NoLog/NoConfirm`20\4308; X\4405If`20the`20log`20file`20is`20not`20associated`20with`20an`20active`20job, V`20offer`20\3904option`20to X\4F05delete`20it.\9506foo`20=`20F$GetQuI("")\2806batchque\7004a`20global`20sym Vbol`20set`20in`20Login.Com\4A16Display_Queue","Queue_Batch",\5F08,"Wildcard") X$\4704last\ED04=`20""\1207ogfil\5C05Parse(logname,,,,"No_Conceal") X$\3106job_loop: X\0F05next\5206\9D12Job","Log_Specification",,"All_Jobs"\9907If`20(\4B07.eqs."" V).or.\140D\BD07)`20Then`20Goto`20jobdone\DD10\3607\A212\E306\1207,l\EB06\830A V\6E0Dogfil`20\6C05Exit\2506\7608_loop X$ X\1505\8607: X\0E05say`20""\0C06ask`20"Do`20you`20wish`20to`20delete`20the`20log`20file`20(Y V/N)`20`5BY`5D:`20"`20option X\9508\0F06`20.eqs.`20""\9206\1507=`20"Y\6B07\2A0A\2105Delete/Log/NoConfirm`20' V\F207';\3406\D806! X$!++ X$!`20Revis\4304History X$!`201.4`20`203-May-1993`20Charles`20Bailey`20`20bailey@genetics.upenn.edu X$!`20`20-`20Added`20missing`20No_Conceal`20to`20F$Parse(\9707)`20to`20match V`20F$GetQui()`20filspecs X\8D053`2017-Mar-\8D35Changed`20check`20for`20open`20log\6704e`20to`20\1B0Aacti Vve`20job;`20spruced`20up\4A05`20`20\2104posting\99062`2023-Dec-1992`20\9930Opt Vion\8004delete\930Ais`20given`20only\0E04it`20isn't`20currently`20open,`20so V\9C07we`20don't`20have`20users`20trying\610Es`20\E70Es.\CB061`2021-Sep\CB36Log Vf\B904name`20genera\DC05exported\8404Build_LogName.Com\1504make\DE04easier V\CC07to`20keep`20BackSet.\2C04and`20BackCheck.\1204in`20synch\C0060`2008\C03AO Vriginal`20version X$!-- $ call unpack BACKCHECK.COM 538793776 "" $! $ create 'f' X$!`20BackSet.Com`20-`20Simple`20command`20procedure`20to`20automate`20backups. V X$! X$!`20Version`201.5`20`2017-Mar-1993\1C04Author:`20`20Charles`20Bailey`20`20bai Vley@genetics.upenn.edu\5507Modification`20History`20at`20end X$! X$`20`20`20`20`20say`20=`20"Write`20Sys$Error"\1E07ask`20=`20"Read\1D05Command/ VPrompt=" X$!`20\2703Severity`20-->`20Warning`20so`20this`20procedure`20won't`20cause V\0603ller`20to`20die X\8C07s_abort`20=`2040\5B07File`20into`20which`20\0904\AC05summary`20entry`20of V`20each`20backup\5007logfspec\C304Sys$Login:Backups.Log" X$!\2C06optvals`20=`20"VERIFY,IMAGE,REWIND,RECORD,INCREMENTAL,OPENFILES" X$\4207len`20=`20F$Length(o\5406) X\2005modestr`20\2104Mode()\1806interactive\1C03\2608.eqs.`20"INTERACTIVE\6707I Vf`20.not.`20(\390C.or.`20(\3D0FBATCH"))\3906Then\0A06`20`20say`20"%BACKSET-F-M VODE,`20BackSet`20must`20be`20run`20in`20I\680Bor`20Batch`20mode\9207`20`20Exit V`20ss_abort X\1505EndIf X$!\B509P1\9708?"\9112thisproc`20=`20F$Parse(F$Environment("Procedure"),,,"Name V")\D00DUsage:`20''t\4D07'`20`5Bdisk`5D`20`5Bsaveset`5D`20`5Blabel`5D`20`5Bopti Vons`5D\C409\4305\0B06`20`20\1E07\8E03''optvals'"\2A15(Skipped`20parameters`20m Vust`20be`20replaced`20by`20"""")\4315\B00C?`20-`20prints`20this`20message V\3809Exit\0C06EndIf X$!\0E06disk\AD03P1\0F06If`20interactive`20.and.`20(\2505.eqs.`20"")\2A06Then V\5D08default`20=`20F$TrnLNM("Sys$Disk\3008`20`20promp\2504"Device`20to`20back V`20up`20`5B"+\4507+"`5D:`20"\3408ask`20"''prompt'"\AF05\1C08If`20\990D\9305 V\D108\4E07\2C0BF$Locate(":",disk)`20.eq.`20F$Length(\1406\450Disk+":"\4606EndI Vf X\0B05\2007F$Edit(disk,"Upcase,Collapse,UnComment") X\3507ronly`20=`201 X\1105\950D`5B"\950As.`20\960E X$!`20`20`20No\4404ectory`20i\A606,`20so`20it`20must`20be`20a`20device`20name V`20or`20rooted`20logical X\7905\E405\0B06\8607Parse(\F006`5B000000`5D"\8C08""\2C08Then\0C08`20`20say`20" V%BACKSET-F-DEV,`20error`20\9E04\8806specification`20",disk\430AExit`20ss_abort V\1708Else\230Adironly`20=`200\2109ndIf\0D06\0B07!`20\1905\1406saveset`20=`20P2 V\1206If`20interactive`20.and.`20(s\2807\E608) X\2D05\E50Ctoda\7B04F$Time()\1808defaul\6304F$Edit(F$Element(0,"-",today)+ V\170A1,\170B".Bck",`20- X\E608\0808\0808"Upcase,Collapse\9D08`20`20prompt\7A03"Name`20of\F009`5B"+d V\9806+"`5D:`20"\3208ask`20"''prompt'"\3008\1F08If\4209.eqs.`20""`20Then`20 V\1608=`20\5707\3206EndIf X\0B05If`20F$Parse(\2D07,backdev,,,"Syntax_Only")`20\5C08\3A06Then\8108say`20"% VBACKSET-F-BADSAVNAME,illegal`20syntax`20i\950Aname`20",\CC0FExit`20ss_abor V\AF0E! X\0E05label`20=`20P3\C209interactive`20.and.`20(l\2605\B208) X\B311\F905Length(disk)`20.gt.`206 X\2007\2C0C`20`20default`20=`20F$Extract(0,3,disk)+F\1409\530E-4\2308\DE09lse X\5613disk`20-`20":"\2A09\F506\0D06prompt\2803"Tape`20\DD06`5B"+d\4106+"`5D: V`20"\2D08ask`20"''prompt'"\2E06\F70B\3E06.eqs.`20""\E905\1407=`20d\5106\2E06 V\8307! X\0E05options`20=`20P4\1206If`20interactive`20.and.`20(o\2807\6108)`20\6205- X\F507\9F05Op\2506(''optvals')`20`5B\CC04\6E08\7B09quals\7C03""\1306inpq V\130B!`20\2603utpbase`20is`20a`20global`20symbol`20set`20in`20Login.Com\5807ut Vp\4608\3E08\1A06doimage`20=`200 X\1105count`20=`20-1 X$`20Next_word:\1D0E\0806+`20\2404\1703word\1603F$Edit(F$Element(count,",",o V\E606),"Collapse,Upcase")\4306If`20F$Locate(word,optvals)`20.eqs.`20optlen X\2C05Th\0A08`20`20say`20"%BACKSET-F-ILLOPTSYN,`20illegal\3B04ion`20specified:" V,word\4208Exit`20ss_abort X\1505EndIf X\9808\DE05\8606"IMAGE" X\8711optquals`20=\0B0A+`20"/Image"\2608doimage\25031 X\1307Goto`20Next_Wo\9408\7F1AVERIFY"`20Then\7419Verify\7507\410FREWIND\4108utp Vq\4208\0C09\4304Rewind\4318CORD\841FRecord\4116OPENFILES"\441EIgnore=Interlock V\4E16INCREMENTAL"\5006in\D609\0B09\5004Since=Backup\4C16,"\4206Goto`20Done_Wor Vds X\2C05\1505Next_Word X$! X$`20\240A: X\5108interactive\1406Then\0A06`20`20thisfile\9C03F$Environment("Procedure") X$!\2D05Get`20the`20job`20name`20-`20we`20farm\4805`20out`20to`20keep`20in`20sy Vnch`20with`20BackCheck.Com X\7C08mpsym`20=`20"BackSet_"+F$GetJPI("","PID") X$\2E06@Build_LogName`20'disk'`20'\4506' X\2607If`20.not.`20$Status X\1807\F40C`20`20say`20"%BACKSET-F-LOGSPEC,`20error`20generating`20log`20file V\F005" X\4209Exit`20ss_abort X\1707EndIf X$!\0E06Not`20strictly`20necessary,`20as`20iterative`20translation`20allows`20u Vse`20of\DA0B\5006in`20the`20Submit`20command,`20but`20I'll`20forget`20this`20w Vhen`20I'm`20half`20asleep`20someday\AD08jobname`20=\6A0B\1A06Delete/Symbol/Glo Vbal\8F0C X$`20\8606_it:\9F08(batchque`20is`20a`20gl\3605symbol`20defined\C404Login.Com) V\6F08\4C06/Parameters=("''disk'","''saveset'","''label'","''options'")- X\4A06\0606`20/Queue='b\9207'/NoPrint/Keep/Notify/Name='jobname'`20'thisfile' V\9808Exit\0C06EndIf X$! X$!`20The`20following`20segment`20runs`20only`20in`20batch X$! X$\3D04devspecific`20=`20""\1606If`20doimage\1006Then`20\7A08disk\2C03F$Parse(d Visk,,,"Device")\9507ls\3C07\4E06ir\8005\1308\5107!`20\220Bsk`20is`20a`20single V\3304,`20backup`20it`20and`20all`20subdirs X\4907\8F09\0705-`20"`5D"`20+`20"...`5D"\2408\8C06\6C15device`20or`20rooted V\760Dfrom`20its`20MFD`20downward\7916+`20"`5B000000\7A0EndIf\0D08diskpat`20= V`20F$Parse(disk,,,,"No_Conceal,Syntax_Only") X\3B07If`20F$Search("Sys$Login:DevSpecific.Dat").eqs.""`20Then`20Goto`20norea V\B509Open/Read/Error=readerr`20infil`20\5919 X$\4108rolldown: X\1107\4D12/End=readdone\5A07inline\3408\0E06`20=`20F$Edit(inline,"Upcase,Compr Vess,UnComment,Trim") X\4009dev`20\3F04Parse(F$Element(0,"`20",inline),disk,,,"No_Conceal,Syntax_Only V\500AIf`20diskpat.nes.\5F06Then`20Goto`20\F408 X$\3108addloop: X\1007devspecific\9703\0E0C+`20- X\2406\0606\0909F$Extract(F$Locate("\BB0BF$Length(\1108\0807\B30B\420D\2D0D-1,1 V\3108.nes.\850D"-"`20\DD0Beaddone X\5907Read/Error=readerr/End=\2708`20infil`20inline\3408\0E06\FA03F$Edit(\1006, V"Upcase,Compress,UnComment,Trim"\CD09devspecific`20\4505\D8070,\DA09\230B)-1, V\0F0C`20+\8F0F\D805addloop X$\1608\CE07: X\1007stat\6E03$Status\1608If`20F$TrnLNM("infil").nes.""`20Then`20Close`20infil V\700Dlog_status X$\730Cdone\7409\3D0D\1508noread\2407EndIf X\0B05On`20Error\7806\6505Get_\B008!`20`20`20backdev`20is`20a`20global`20symbol V`20set`20in`20Login.Com\5406Backup/Log'optquals'`20'disk''devspecific''inpq V\1E06- X\A706\0606\0C0C'b\7F06''saveset'/Label='label''outp\4606\7E06get_status\EE07st Vat`20=`20$\1506 X$\1606log_\270DIf\2A06\0E06Then\0A06`20`20errmsg\4303"Backup`20completed`20suc Vcessfully"\3006Else\3A12ERROR`20DURING`20BACKUP"\3007ndIf\8309F$Search(logfspe Vc)`20.nes.`20"\2F07\990COpen/Append`20logfile`20'l\3907' X\8F11Open/Write`20\2F19\8E0A\290EF$Time(),`20"`20-`20",\DB06\2A14"`20\CB04nput V:`20",disk,devspecific,inpquals X\3B18Outp\3C04Label:`20",label,"\1B03Savese\5805saveset,outp\501EQualifiers: V\3803optq\2F1DCompletion`20statu\3605stat\3219`20`20(",F$Message(stat),")" X\3114\1607Clos\1609\1306Exit X$! X$! X$!++ X$!`20Modifica\8E05history`20for`20BackSet.Com\3006`201.5`20`2017-Mar-1993`20 V`20Charles`20Bailey`20`20bailey@genetics.upenn.edu\3F04`20-`20Incorporated`20i Vnput`20from`20DevSpecific.Dat.`20`20Spruced`20up\8D05posting.\87064`20`2002-No Vv-1992`20\8731Fixed`20bugs`20which`20caused`20wrong`20\9806spec`20to`20be`20ge Vne\B306\8B04backups X\4B04`20`20of`20disk`20on\4B07this`20file`20resides`20or`20\3804image`20\3E07 V`20 X\C9053`20`2007-Oct-\C936Added`20logging`20of`20errors`20dur\1104\6D06. X\6C05\5F0321-Sep\6C37Changed`20jobname`20generation`20so`20that`20separ\1306be Vtween`20dev`20and`20dir`20is\4B05`20`20easier`20to`20spot`20in`20log`20name, V`20\2D04farmed`20it`20out\2704Build_LogName.Com`20in\4C07orde\4B05make`20synch V`20with`20BackCheck.\3004\7306. X\CC0Einput`20file`20spec\6B05ackup\0A04properly`20handle`20trees`20when`20sing Vle\8207\DB04\3E05was`20entered.\6907Added`20logging`20of`20successful`20b V\6A05s.\2B041.1`20`2007-Sep-1992`20`20Charles`20Bailey`20`20bailey@genetics.up Venn.edu X\6A06Rewrote`20job/log\D405name`20generating`20routine`20so`20it`20didn't`20ch Voke`20on X\CE06illegal`20char\9C06\5D0Bdevice`20pars\5004code`20to`20handle`20roote V\EE05icals`20and`20regular\5D07directory`20spec\FB080`20`2024-Jul-\FB36Origin V\B403version X$!-- $ call unpack BACKSET.COM 994710520 "" $! $ create 'f' X$!`20Build_LogName.Com X$!`20Author:`20C.`20Bailey`20`20bailey@hmivax.humgen.upenn.edu\3504Version`201 V.0`20`2021-Sep-1992\1C04Builds`20a`20legal`20file`20name`20from`20a`20device V`20spec X$!`20Called`20by`20BackSet.Com`20and\1005Check.\1204to`20get`20batch`20job`20l Vog`20\5D09s`20for X$!`20backup\2104s,`20so`20that`20both`20procedures`20will`20use`20the`20s V\9C04\A106or\A003given`20job. X$!\5304Parameters:`20`20P1`20=`20De\C309\9804be`20converted`20to`20\9A0D\4204 V`20`20\0303\0606\42032`20=`20Name`20of`20global`20symbol`20in`20which`20to`20r Veturn\A205\4C1A\0505Set`20to`20\C305if`20successful;\5809s`20undefined`20 V\2303not. X$! X$\3F04say`20=`20"Write`20Sys$Error" X\6C05Severity`20-->`20Warning`20so`20this`20procedure`20won't`20cause`20caller V\9204die X$\6305s_abort`20=`2040\5906Legal`20characters`20for`20a\EB05\EA06\3804filechar Vs`20=`20"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_-"\3B09charlen\3C03F$Length(f V\5108) X\FF08If`20(P1`20.eqs.`20"")`20.or.`20(P2`20\130A\2A06Then\0A06\D203ay`20"%BUIL VDLOG-F-INSFPARM,`20Build_LogName`20requires`202`20parameters\A407`20`20Exit V`20ss_abort X\1505EndIf X$! X$!`20\7404is`20is`20redundant`20with`20BackSet`20and\0C05Check,`20but`20it`20m Vay`20save`20my`20hair`20if X$!\EC04`20use`20t\5404elsewhere.\7706P1`20=`20F$Edit(P1,"COLLAPSE,UPCASE") X\2705jobn\D704=`20"Backup_"\1906sufxlen`20\4504Length(P1\3507index`20=`200 X$`20Next_char:\1C06If\1F07.eqs.`20\4708Then`20Goto`20Name_done X\3005char\AA06xtract(index,1,P\6E08If`20F$Locate(char,filechars)`20.lt.`20filc Vharlen\3106Then\0A06\E00C\0A08+`20char\2006Else\2A1C"_" X\2906ndIf\FD0Eindex+1\1506\DA06ext_\5D07\E609: X\2105'P2'`20==`20"''j\5F06'"\5B07xit $ call unpack BUILD_LOGNAME.COM 1413026142 "" $! $ create 'f' XUser3:`20/Exclude=(`5BNuc...`5D*.*.*,`5BDbTest\1109) XData1:\310CSeqData\350BSRSD\120D- X`5BNewsItems\280CQ44Tmp\5E0BUser1:`5BDevel\1704\680Dcratch\2B07 $ call unpack DEVSPECIFIC.DAT 168579386 "" $! $ create 'f' X$!`20Edit_DevSpecific.Com X$!`20Version`201.0`2017-Mar-1993 X$!`20Author:`20C.`20Bailey`20bailey@genetics.upenn.edu X$!\3204Modificat\5204History`20at`20end X$! X$`20`20`20say`20=`20"Write`20Sys$Error"\1C05ask`20=`20"Read\1B05Command/Prompt V=" X$!`20`20Severity`20-->`20Warning`20so`20this`20procedure`20won't`20cause`20cal Vler`20to`20die X\8605s_abort`20=`2040\1205On`20Error`20Then`20Goto`20err_handler\2308Control_Y V`20\270Actrly_\2909\E706get_option: X\F708""\0B0B\0B0A\0803`201`20-`20List`20entries"\1F0E2`20-`20Remove`20an`20ent Vry"\220E3`20-`20Add`20\1F174`20-`20Exit\8211ask`20"Enter`20choice`20(1-4)`20 V`5B4`5D:\3B03\C306\2A05If\0E07`20.eqs.`20""`20Then`20\1507=`204 X\2704\0F09F$Integer(F$Extract(0,1,\2106))\5508(option.lt.1).or.\1108gt.4)`20 V\6405Goto`20get_o\900A\C50B\9B09.eq.1\1305Then X$!`20\2904howcmd`20is`20a`20global`20symbol`20set`20in`20Login.Com X\3B04\320ASys$Login:DevSpecific.Dat\2807\9714EndIf X\96112 X\960A\3C05ask`20"Enter`20name`20of`20device`20to`20be`20removed:`20"`20rmvdev V\3807If`20\1006.eqs.""\5405\8A15`20`20\2906`20=`20F$Parse(rmvdev,,,"Node","Syn Vtax_Only")`20+`20- X`20\3A05\0606\0303\3A12Device","No_Conceal,S\470C\7D07Open/Read`20infil`20Sys$ VLogin:DevSpecific.Dat\300CWrite`20outf\3219Tmp X$ X\3406updateloop: X\1206writeit\F4031 X\1206Read/End=update_done`20\9306inline\2807dev\3603F$Element(0,"`20",F$Edit( V\2A06,"Trim,Compress"))\3C0FParse(dev,,,"Node","Syntax_Only")`20+`20- X`20\3405\0606\340FDevice","No_Conceal,S\410C\7107If\7404.eqs.rmv\7F04Then V\FE0B0 X$ X\2B06\F706loop2:\3E0A\2A08\3705Write`20outfil`20\EB06\2A07\0D06\DC05Edit(i V\1005,"UnComment"\920BF$Extract(F$Length(\3006)-1,1,\0C07.nes."-"\7B06Goto V\A30B\4D07Read/End=update_done`20in\9F11\3E0F2 X\F50E_done\F508Clos\4507\120D\F706\7909name`20Sys$Login:DevSpecific.Tmp\1A17Da Vt X\4106Purge/NoLog/NoConfirm\3621\C805get_option\1605EndIf\0A05If`20option.eq.3 X\1304Then\3C07ask`20"Enter`20n\BC04of`20device`20to`20be`20added:`20"`20indev V\3507If`20indev.eqs.""\5005\8610s X\6111\5906-s\C207`20qualifiers:\6103entry X\6109entry\6124If`20F$Search("Sys$Login:DevS\6907.Dat").nes.""\3607Then\0B07 V`20`20Open/Append`20outfil`20S\4918\3507Else\400EWrite`20\3F28ndIf\0C07pos`20= V`200 X\0E06outline\1203indev`20+`20"`20"`20+`20entry X\2406len`20=`20F$Length(o\3306) X$ X\2006writeloop: X\1106\9C0DF$Extract(pos,60,\400A\900B\0604+`2060\1507If\1204.lt.\7D04Then`20Go Vto\6B0A\2807Clos\6A08\1307\2805get_option\1605EndIf X\0A04If`20\1806.eq.4`20\5A05Exit X$! X\2004ctrly_handler:\1305$Statu\A504ss_abort\FA07err_\2A0Dstat\2703\3107\7008F$ VTrnLNM("infil").nes.""`20\7D05\C206infil\3112\D906\3215\F40B\3305Search("Sys$L Vogin:DevSpecific.Tmp"\460E- X\3A03\0303`20Delete/NoLog/NoConfirm`20S\4818;*\7505Exit\F105 X$! X$!`20Maintain`20file`20of`20device-s\3B07`20entries`20for`20Backset.Com\3C04In Vput:`20None X\0F04mplied\1708Text\5606\8A0CDat,`20with`20one\5D05y`20per`20line`20in`20th V\4C05\E507`20following`20format:\1D0Cdisknameexclude_data X\2D0Bte\8F04\4F09!`20is`20ignored\2704Outp\B604Revised`20\B40F X$!\2604Modification`20History:\19041.0`20`2017-Mar-1993`20`20Charles`20Bailey V`20`20bailey@genetics.upenn.edu X\A504-`20original`20version\7206-- $ call unpack EDIT_DEVSPECIFIC.COM 2014060622 "" $! $ create 'f' X$`20Set`20NoVerify X$!`20Login.Com`20for`20turnkey`20backup`20captive`20account X$!\3304Version`201.1`20`2017-Mar-1993 X$!`20Author:`20Charles`20Bailey`20`20bailey@genetics.upenn.edu X\5406Modification`20History`20at`20end\2206--------\0808\0B0B`20Site-Specific V`20Data`20\2F1B----\7304`20`20`20Batch`20queue`20in`20which`20\FC07jobs`20run X$\2A04`20batchque`20==`20"Sys$Batch" X\4906Command`20used`20to`20display`20various`20files X\4A06showcmd`20\4904''Most'"\4707Destination`20device`20for\9207s.\8B09ckdev V\4105MUA0:"\3F07Local`20qualifier`20append\9206output`20spec`20on`20all`20 V\E907runs.`20`20This`20is X$\4B05designed`20principally`20to`20allow`20you\0D04place`20/SaveSet\5704the V`20command`20line\4E07if\B509isn't`20a`20tape\E407,`20\2F04\5404want\5904 V\9A07into`20savesets\FE08outpbase`20=`20"" X$!--------\0808\1010\2020\0E0E\6507If`20F$Mode()`20.eqs.`20"BATCH"`20Then`20Ex Vit X\2A06On`20Control_Y\1D06Goto`20Ctrl_Y\2407Set`20\2507=Y\380AError`20\340AFatal V_Err\2307say`20=`20"Write`20Sys$Error" X$\1E05ask`20=`20"Read\1D05Command/Prompt="\4508s_abort`20=`2044 X$! X$!`20Main`20menu`20routine X$! X$`20Do_menu: X\3A05\7E04""\0C0C\1817\6705\03031.`20Backup`20a`20disk\30202.`20Check`20log V`20of`20a`20ba\3F05operation"\421F3.`20Reset`20Password"\311F4.`20List`20runni Vng`20jobs\34205.`20Edit`20device-specific`20qualifier\42216.`20Exit"\270FGet_o Vption: X\4111ask`20"Enter`20choice`20(1-6)`20`5B6`5D:"`20option\2A06If\0F07`20.eqs. V\4203`20Then`20\1507=`206 X\2805\1009F$Integer(F$Extract(0,1,\2106))\5713.`200`20\5505Goto\B90B\2B156`20 V\2B05Logout\22154 X\1605Then\0A06\FC0E`20`20Show`20Queue`20'batchque' X\2B15ask`20"Stop`20any`20jobs`20(Y/N)?`20`5BN`5D:`20"\7907\2F08\8A0Ds.`20"" V\AE06\1507=`20"N\5B09\2C09\1108\B10C\8810\8A07Entry`20number`20of`20job`20to V`20stop\8D04entry\330AIf`20F$GetQuI("Display_Entry","Job_Executing",entry) X\3C09\8D0E`20`20Stop/Entry='entry' X\1E09Else\2C0C\BB05%SYSBACK-W-NOSUCHJOB,`20entry`20"\6F06,`20"`20not`20ex V\8708\540BndIf\0F08\0D0D\5E05\2A09ask`20"Press`20`20to`20continue"`20o Vption\2F08Goto`20Do_menu X\1405\5C0BIf\2E07`20.eq.`201 X\1605Then\3F08@Sys$Login:Backset\59342 X\5920Check X\5B333 X\5B11Define/User`20Sys$Input`20Sys$Command X\2907Set`20Password\7C10Me\7C225 X\D71CEdit_DevSpecific\DE21! X$!`20Error`20handler`20-`20log`20it`20and`20get`20out X$! X$`20Ctrl_Y:\4106er\3504=`20ss_abort\1609msg`20=`20"Control-Y`20signalled" X\2405\8D05Log_Error X$`20Fatal_Err\5B0F$Status X\5A0EF$Message(error) X$`20\4D09\4107On\D407Then\1E04out X$\1A07\9907_y\1E13pen/Write`20errlog`20Sys$Login:Error.Log\2B06\260D"Fatal V\B807encountered`20at`20",F$Time(\A904\3911VMS`20\AB06Code:`20",error\2B18 V\FA07\2807ms\8D07Clos\2908\1206\D608! X$!`20Modification`20History:\19041.1`20`2017-Mar-1993\4A03harles`20Bailey`20 V`20bailey@genetics.upenn.edu X$!`20`20-`20added`20Edit_DevSpecific`20and`20spruced`20up`20for`20posting X$\77040`20`2024-Jul-1992`20\7731original`20version X$!-- $ call unpack LOGIN.COM 251884118 "" $ v=f$verify(v) $ exit