$! $! $! MAG.INSTALL $! $! $! Configures MAG for a given site. All the files making up MAG are $! assumed to be in a single work directory. Files in this directory $! are modified by this procedure, so this procedure must not be re- $! run without restoring the files from somewhere else. Thus you $! should have a duplicate of this directory somewhere before begin- $! ning. $! $! This does not recompile MAG.FOR into MAG.EXE. You should not need $! to do that, but if you do use BLDMAG.COM. $! $! $! Alan L. Zirkle Naval Surface Weapons Center $! Code K53 $! Dahlgren, Virginia 22448 $! $! $ IF p1 .NES. "" THEN GOTO RECURSIVE $! $ currdir = F$ENVIRONMENT("DEFAULT") $ thisproc = "@" + F$ENVIRONMENT("PROCEDURE") $! $ ON CONTROL_Y THEN GOTO ABORT $ ON ERROR THEN GOTO ABORT $! $ WRITE SYS$OUTPUT " In what work directory are the MAG files? " $ INQUIRE tempdir " ( default ''currdir' )" $! $ IF tempdir .EQS. "" THEN tempdir = currdir $! $ IF F$PARSE(tempdir) .NES. "" THEN GOTO START $! $ WRITE SYS$OUTPUT " No such directory as ''tempdir' " $ EXIT $! $ START: $ WRITE SYS$OUTPUT " WARNING -- Files in this directory ",- "will be modified by this procedure." $ WRITE SYS$OUTPUT " Do not re-run this procedure except ",- "with fresh copies of all files. " $ INQUIRE x " Do you want to continue? (Y/N) [N]" $ IF .NOT.x THEN EXIT $! $ SET DEFAULT 'tempdir' $! $ INQUIRE tape " What do you want the default tape drive to be? [MFA0]" $! $ IF tape .EQS. "" THEN GOTO TAPEOK $ tape = tape - ":" $ IF tape .EQS. "MFA0" THEN GOTO TAPEOK $! $ thisproc MAG.HLP MFA0 'tape' $ thisproc MAG.DOC MFA0 'tape' $ thisproc MAG.CLD MFA0 'tape' $ LIBRARY /CREATE /HELP MAG MAG $ PURGE MAG.HLB $! $ TAPEOK: $ INQUIRE bs " What do you want the default max block size to be? [10000]" $! $ IF bs .EQS. "" THEN GOTO BSOK $ IF F$TYPE(bs) .NES. "INTEGER" THEN GOTO ABORT $ IF F$INTEGER(bs) .EQ. 10000 THEN GOTO BSOK $! $ thisproc MAG.DOC 10000 'bs' $ thisproc MAC.HLP 10000 'bs' $ thisproc MAG.CLD 10000 'bs' $ LIBRARY /CREATE /HELP MAG MAG $ PURGE MAG.HLB $ BSOK: $! $ thisproc * "MAG.EXE" dir1 $ thisproc MAG.CLD "SYS$DISK:[VAX86A.NSWC]" 'dir1' $! $ thisproc * "MAG.HLB" dir2 $ thisproc MAG.CLD "SYS$DISK:[VAX86A.nswc]" 'dir2' $! $ thisproc * "MAG.DOC" dir3 $ thisproc MAG.HLP "SYS$DISK:[VAX86A.NSWC]" 'dir3' $ LIBRARY /CREATE /HELP MAG MAG $ PURGE MAG.HLB $! $ thisproc * "the sources" dir4 $ thisproc * "MAG.CLD" dir5 $ thisproc * "MAG.HLP" dir6 $! $ COPY MAG.EXE 'dir1' /PROT=(W:E) $ COPY MAG.HLB 'dir2' /PROT=(W:RE) $ COPY MAG.DOC 'dir3' /PROT=(W:RE) $ COPY MAG.FOR 'dir4' $ COPY MAG.CLT 'dir4' $ COPY MAG.CLD 'dir5' $ COPY MAG.HLP 'dir6' $! $ DELETE /SYMBOL /GLOBAL dir1 $ DELETE /SYMBOL /GLOBAL dir2 $ DELETE /SYMBOL /GLOBAL dir3 $ DELETE /SYMBOL /GLOBAL dir4 $ DELETE /SYMBOL /GLOBAL dir5 $ DELETE /SYMBOL /GLOBAL dir6 $! $ FINISH: $ SET DEFAULT 'currdir' $ WRITE SYS$OUTPUT " You now have to do the following:" $ WRITE SYS$OUTPUT " 1. Double check file ownership and protection" $ WRITE SYS$OUTPUT " of all MAG files and directories. $ WRITE SYS$OUTPUT " 2. Integrate MAG.CLD into your command tables" $ WRITE SYS$OUTPUT " 3. Integrate MAG.HLP into your local help library" $ WRITE SYS$OUTPUT " " $ EXIT $! $ ABORT: $ SET NOON $ WRITE SYS$OUTPUT " Configuration of MAG failed " $ SET DEFAULT 'currdir' $ EXIT $! $!-------------------------------------------------------------------- $! $ RECURSIVE: $ IF p1 .EQS. "*" THEN GOTO RECURSIVE2 $! $! Make new copy of file P1, with all occurrences of string P2 $! replaced with P3. $! $ ON CONTROL_Y THEN GOTO ERROR $ ON ERROR THEN GOTO ERROR $! $ p2len = F$LENGTH(p2) $! $ COPY NL: 'p1' $! $ OPEN /READ IN 'p1';-1 $ OPEN /APPEND OUT 'p1' $! $ LOOP: $ READ /END=END IN record $! $ col = F$LOCATE(p2,record) $! $ IF col .EQ. F$LENGTH(record) THEN GOTO WRITE $! $ record = F$EXTRACT(0,col,record) + p3 + F$EXTRACT(col+p2len,255,record) $! $ WRITE: $ WRITE OUT record $ GOTO LOOP $! $ END: $ CLOSE IN $ CLOSE OUT $ PURGE 'p1' $ EXIT $! $ ERROR: $ SET NOON $ IF F$TRNLNM("IN") .NES. "" THEN CLOSE IN $ IF F$TRNLNM("OUT") .NES. "" THEN CLOSE OUT $ WRITE SYS$OUTPUT " Update of ''p1' failed " $ STOP $! $!-------------------------------------------------------------------- $! $! Prompt user for directory name to hold P2, then set global symbol $! P3 with the directory name. $! $ RECURSIVE2: $ ON CONTROL_Y THEN GOTO ERROR2 $ ON ERROR THEN GOTO ERROR2 $! $ INQUIRE x " Where do you want ''p2' to go? (dev:[dir])" $! $ dirname = F$PARSE(x,,,,"SYNTAX_ONLY") - ".;" $! $ IF dirname .EQS. "" THEN GOTO RECURSIVE2 $ IF F$ELEMENT(1,"]",dirname) .NES. "]" THEN GOTO RECURSIVE2 $ IF F$LOCATE("*",dirname) .NES. F$LENGTH(dirname) THEN GOTO RECURSIVE2 $ IF F$LOCATE("...",dirname) .NES. F$LENGTH(dirname) THEN GOTO RECURSIVE2 $! $ 'p3' == dirname $! $ IF F$PARSE(dirname) .NES. "" THEN EXIT $! $ WRITE SYS$OUTPUT " ''dirname' does not exist; " $ INQUIRE y " do you want it created? (Y/N) [Y]" $ IF y .EQS. "" THEN y = "Y" $ IF .NOT.y THEN STOP $! $ WRITE SYS$OUTPUT " " $ CREATE /DIRECTORY /LOG /PROT=(W:E) 'dirname' $ EXIT $! $ ERROR2: $ SET NOON $ WRITE SYS$OUTPUT " Directory processing for ''p2' failed " $ STOP $!