$!----------------------------------------------------------------------------+ $! DISK_MOUNTER - Mount disks, checking for existance and availability | $!----------------------------------------------------------------------------+ $! $! P1 - Disk drive(s) to mount $! P2 - Volume name(s) $! P3 - If present, is the shadowset name $! $ SAVERIFY = 'F$VERIFY(0)' ! Save and turn off verify $ SET NOON ! Chug along... $ IF P1 .EQS. "" THEN GOTO MOUNT_ABORT ! Device name(s) are required $ IF P2 .EQS. "" THEN GOTO MOUNT_ABORT ! Volume name(s) are required $ MOUNT = "MOUNT/SYSTEM/NOASSIST" ! Re-define mount symbol $ SAY = "WRITE SYS$OUTPUT" ! For error messages $ BAD_COUNT = 0 ! Number of tries $ X = 0 ! Disk counter $ LOOP: ! Get individual disks $ XPLS1 = X + 1 $ IF F$ELEMENT(X,",",P1) .NES. "," $ THEN DSK'XPLS1' = F$ELEMENT(X,",",P1) $ X = XPLS1 $ GOTO LOOP $ ELSE DSK'XPLS1' = "" $ ENDIF $ X = 1 $ CHECKIT: $ IF DSK'X' .NES. "" $ THEN IF F$GETDVI(DSK'X',"EXISTS") $ THEN IF F$GETDVI(DSK'X',"AVL") $ THEN IF F$GETDVI(DSK'X',"MNT") $ THEN GOTO ALREADY_MOUNTED $ ELSE X = X + 1 $ GOTO CHECKIT $ ENDIF $ ELSE SAY "%MNTDISKS-I-NOTAVL, disk " + DSK'X' + " is not available" $ GOTO WAIT_A_WHILE $ ENDIF $ ELSE SAY "%MNTDISKS-I-NONEXIST, disk " + DSK'X' + " does not exist (yet)" $ GOTO WAIT_A_WHILE $ ENDIF $ ELSE IF P3 .NES. "" ! Shadow set $ THEN MOUNT 'P3'/SHADOW=('P1') 'P2' $ ELSE MOUNT 'P1' 'P2' $ ENDIF $ ENDIF $ GOTO FINISHED $! $ WAIT_A_WHILE: $ BAD_COUNT = BAD_COUNT + 1 $ IF BAD_COUNT .GT. 10 THEN GOTO ABORT_MOUNT $ WAIT 00:00:03 $ GOTO CHECKIT $! $ ABORT_MOUNT: $ SAY "%MNTDISKS-W-MNTABORT, mount of ''P1' aborted" $ GOTO FINISHED $ ALREADY_MOUNTED: $ SAY "%MNTDISKS-I-MOUNTED, " + DSK'X' + " already mounted; not mounting ''P1'" $ GOTO FINISHED $ FINISHED: $ EXIT 1 + 0*F$VERIFY(SAVERIFY)