! < Initializes DCL environment> Calls LIBLOGIN.COM before exiting $ INI__QUIET = %x10000000 ! Inhibit display (bit 28) $ INI__SUCCESS = INI__QUIET + %x0001 ! Severity 1 (success) $ INI__CONTROLY = INI__QUIET + %x0004 ! Severity 4 (fatal error) $ on warning then exit INI__QUIET .or. $STATUS $ on control_y then exit INI__CONTROLY $ if f$type(INI__QUIET) .eqs. "" then exit %x10000000 ! !------- Disable verify if not in interactive mode ! $ if f$mode() .nes. "INTERACTIVE" then set noverify ! $ say == "write SYS$OUTPUT" $ undefine == "deassign" $ def := define/nolog ! ! if P1 .nes. "ME" then say " ... Foreign login" $ CURRENT_DIR = f$environment("DEFAULT") ! !------- Get name of this command procedure. The parent directory is the ! $SOFT directory. ! $ tmp = f$environment("PROCEDURE") ! Name of this file $ set default 'f$parse(tmp,,,"NODE")''f$parse(tmp,,,"DEVICE")''f$parse(tmp,,,"DIRECTORY") $ set default [-] $! def $SOFT 'f$environment("DEFAULT") $ $SOFT = f$environment("DEFAULT")-"]"+"." $ set default 'CURRENT_DIR ! !------- Define logicals for the SOFT directory tree ! $ def $COM '$SOFT'COM] $ def $AUX '$SOFT'AUX] $ def X$AUX '$SOFT'AUX] ! will disappear someday $ def $SAM '$SOFT'SAM] ! G:RWED access $ def $LIB '$SOFT'LIB] ! Libraries $ def X$LIB '$SOFT'LIB] ! will disappear someday $ def $DAT '$SOFT'DAT] ! Data $ def $PRO '$SOFT'PRO] $ def $EXE '$SOFT'EXE] ! FORTRAN executables $ def $FOR '$SOFT'EXE.FOR] ! FORTRAN source code ! !------- Directory logicals to be created only if directories exist ! $ if f$search("''$SOFT'EXE]PAS.DIR") .nes. "" then - def $PAS '$SOFT'EXE.PAS] ! PASCAL source code $ if f$search("''$SOFT'EXE]C.DIR") .nes. "" $ then $ def $C '$SOFT'EXE.C] ! C source code $ def $H '$SOFT'EXE.C.H] ! C include files $ endif ! ! !------- Continue with the 'machine-independent' login ! $ def S $COM,$FOR,$PRO ! Search list $ def EXEIDL 'f$trnlnm("$EXE")EXEIDL.EXE $ def/job IDL_STARTUP 'f$trnlnm("$AUX")IDL_STARTUP.PRO ! $ set noon ! !------- File protection settings ! $ prot :== set prot=(s:re,o:re,g:re,w:re) $ defprot :== set prot=(s:rwe,o:rwed,g:re,w:re) $ 'defprot'/def $ dirprot :== set prot=(s:rwe,o:rwe,g:re,w:re) $ extprot :== set prot=(s:rwe,o:rwe,g:rwe,w:re) $ fullprot :== set prot=(s,o:re,g,w) $ unprot :== set prot=(s:rwed,o:rwed,g:rwed,w:rwed) ! !------- File manipulations, directory listings ! $ del :== delete/log $ dobj :== delete/log *.obj;* ! $ dir :== dir/column=6 $ dird*ates :== directory/date=all $ dire :== 'dir'/size=alloc/date/prot/own/width=(filename=16,owner=8,size=4) $ dirq :== directory/size=all/total/by_owner [...] $ dirs :== 'dire' *.dir $ dirt*oday :== 'dir'/size/date/prot/since=today/modified $ diry*esterday :== 'dir'/size/date/prot/since=yesterday/modified ! !------- Miscellaneous ! $ mk*$var :== @$COM:MKD MK ! Compile/link $ mkd*$var :== @$COM:MKD MKD ! Compile/link/debug $ p*lay$var :== @$COM:LIBPLAY ! Play utility $! spi*el$var :== @$COM:LIBPLAY ! Play utility $! sprint*$var :== @$COM:LIBPRN SPRINT ! Sprint utility $ sprint*$var :== $$EXE:SPRINT ! Sprint utility $ t*lb$var :== @$COM:TLB $ x*lb$var :== @$COM:TRACK $! plot*$var :== @$COM:LIBPRN IDLPLOT ! IDL plot procedure ! $ subcall :== @$COM:LIBSUB $ echo*$sub :== 'subcall' ASK ! Echo procedure $ signal*$sub :== 'subcall' SIGNAL ! Error procedure ! !------- LIBCD change directory calls ! $ tmp := @$COM:LIBCD $ cd*$cd :== 'tmp' ~ $ cdir*$cd :== 'tmp' < ! CD + DIR $ ho*me$cd :== 'tmp' ~ SYS$LOGIN $ top*$cd :== 'tmp' ~TOP $ up*$cd :== 'tmp' ~UP $ do*wn$cd :== 'tmp' ~DOWN $ si*de$cd :== 'tmp' ~SIDE $ ju*mp$cd :== 'tmp' ~JUMP $ sw*itch$cd :== 'tmp' ~SWITCH ! $ tmp := $$EXE:LIBSD $ tree*$cd :== 'tmp'/TREE $ fd*$cd :== 'tmp' ! !------- LIBCOM procedure ! $ tmp := @$COM:LIBCOM $ mkdir*$lib :== 'tmp' MKDIR ! Make directory $ rmdir*$lib :== 'tmp' RMDIR ! Delete directory $ ff*$lib :== 'tmp' FF ! Find file $ vpur*$lib :== 'tmp' VPUR ! Purge, set version ;1 $ vvpur*$lib :== 'tmp' VVPUR ! Purge, set version ;1 ! $ LIB__AXP == f$getsyi("NODE_HWTYPE") .eqs. "ALPH" ! RISC hardware ? ! !------- DEV procedure ! $! LIB__MF_TAPEUNIT == "" $! LIB__MF_MTUNIT == "" $! LIB__MF_VOLNAM == "" $! LIB__OD_UNIT == "" $! LIB__OD_VOLNAM == "" ! !------- Pick up node name (three different methods are used; one of ! them hopefully works) ! $ LIB__NODE == f$getsyi("NODENAME") $ if LIB__NODE .eqs. "" then LIB__NODE == f$trnlnm("SYS$DECDTM_NODE_NAME") $ if LIB__NODE .eqs. "" then LIB__NODE == f$trnlnm("SYS$NODE") $ LIB__NODE == LIB__NODE-"::" $ LIB__CP_ME == f$getjpi("","USERNAME") ! !------- First execute the 'personal' login ! $ if f$search("$COM:GENLOGIN.COM") .nes. "" then @$COM:GENLOGIN 'P1 ! !------- $ if f$mode() .nes. "INTERACTIVE" then goto INI_EXIT ! !------- Only in interactive mode ! $ arc :== $ $EXE:ARC $ cl :== $ $EXE:CLOCK $ shl :== show logical $ shs :== show symbol $ q*uota :== show quota $ u*sers :== show users/full $ def LIB$ECHO SYS$COMMAND ! !------- Editor setup ! $ def EDTINI $AUX:EDTINI.EDT $ edt == "edit/edt" $! edit == "edit/edt" ! Override EVE default $! def EVE$INIT $AUX:BAWA$INIT.EVE $! def TPU$SECTION $AUX:EDT.TPU $! def TPU$SECTION $AUX:BAWA.TPU$SECTION $! def TPU$SECTION $AUX:EVEANDEDT $! eve == "edit/tpu" $! LIB__KEYNUM == "nonumeric" $! LIB__KEYWID == "80" $! LIB__EDITOR == edt ! !------- Set terminal ! $ PTT :== 'f$getdvi("sys$output","DEVNAM")' $ set terminal/dec_crt/insert/width=80/nonumeric $! set terminal/dec_crt/insert/width=80/inquiry/nonumeric $! $!------ Display clock $! $ tmp = "$EXE:CLOCK.EXE" $ if f$search(tmp) .nes. "" then run 'tmp ! Time and dates $! $!------ Display computer name, VMS version and node name $! $ ESC[0,8] = 27 $ VERS = f$edit(f$getsyi("VERSION"),"COLLAPSE") $ say ESC+"#6",f$getsyi("HW_NAME"),"/",VERS,"/Node ",LIB__NODE $! $ pad :== $ sys$system:decw$notepad.exe $ GR$PIXMAP :== 1 $! $!------ The rest only on the PLHCME account $! $ if P1 .nes. "ME" then goto INI_EXIT $! $!------ Miscellaneous $! $ modl :== @ $COM:MODL $ wing :== @ $COM:WING $! $! $!------ Type URGENT.TXT file $! $! $ tmp = "SYS$LOGIN:URGENT.TXT" $ if f$search(tmp) .nes. "" then type 'tmp $! $!------ Update $LIB:CATS*.ARC archives (once every month) $! (Re)create the archive if it does not exist or if it is more $! than one week old. $! $! tmp = f$search("$LIB:CATS0.ARC") $! if tmp .nes. "" $! then $! TMS = f$file_attributes(tmp,"CDT") ! Revision date $! TMS = f$cvtime(TMS+"+30-0","ABSOLUTE") ! Rev date + 30 days $! if f$cvtime(f$time(),"COMPARISON") .gts. - ! f$cvtime(TMS,"COMPARISON") then tmp = "" $! endif $! if tmp .eqs. "" $! then $! BEL[0,8] = 7 $! say BEL," ***** Updating CATS archives *****" $! submit/que=SYS$BATCH/noprint/notify $COM:CATSBU $! endif $! $!------ Update FD files in $SAM $! $ submit/que=SYS$BATCH/nolog/nonotify $COM:LIBCOM /parameters=("FD") $! submit/que=SYS$BATCH/noprint/nonotify $COM:LIBCOM /parameters=("FD") $! $!------ Keypad definitions $! $ defk := define/key/nolog $ defk PF1 "@$COM:LIBSUB KEY_NUMERIC" /terminate /noecho $ defk PF2 "@$COM:LIBSUB KEY_CHANGE_EDT" /terminate /noecho $ defk PF4 "@$COM:LIBSUB KEY_CHANGE_WID" /terminate /noecho ! $ defk KP7 "@$COM:DEV FREE" /terminate /echo $ defk KP8 "@$COM:LIBCOM PROC" /terminate /echo $ defk KP9 "show users" /terminate /echo ! $ defk KP4 "@$COM:DEV MOUNT LIST" /terminate/echo $ defk KP5 "@$COM:DEV MOUNT" /terminate/echo $ defk KP6 "recall/all" /terminate /noecho $ defk COMMA "monitor proc/topc" /terminate /echo ! $ defk KP1 "@$COM:LIBPLAY HELIOS" /terminate /echo $ defk KP2 "@$COM:LIBPLAY TLB" /terminate /echo $ defk KP3 "@$COM:LIBPLAY BCK" /terminate /echo ! $ defk KP0 "@$COM:LIBPLAY BANDIT" /terminate /echo $ defk PERIOD "run $EXE:PANDORA" /terminate /echo $ defk ENTER "run $EXE:CLOCK" /terminate /echo ! $ INI_EXIT: $ set on $ @ $COM:LIBLOGIN 'P1 $! $ if f$mode() .eqs. "BATCH" then exit INI__SUCCESS $! $ @$COM:LIBCOM PROC NOSTOP $ say "" $ say " Type CD ? for list of ChangeDirectory options" $ cd $ tmp = f$search("$SAM:MESSAGE.TXT") ! Message file $ if tmp .nes. "" $ then $ TMS = f$file_attributes(tmp,"RDT") ! Revision date $ TMS = f$cvtime(TMS+"+7-0","ABSOLUTE") ! Rev date + 7 days $ say "" $ say " !!!!!!!!!! MESSAGE !!!!!!!!!! (",f$cvtime(),")" $ type 'tmp $ say " !!!!!!! END OF MESSAGE !!!!!! (",f$cvtime(TMS,"COMPARISON"),")" $ if f$edit(LIB__CP_ME,"COLLAPSE") .eqs. "PLHCME" .and. - f$cvtime(f$time(),"COMPARISON") .gts. f$cvtime(TMS,"COMPARISON") - then delete 'tmp ! Delete after 7 days $ endif $! $ exit INI__SUCCESS !+ NAME: LIBINIT PURPOSE: Defines machine-independent part of login INPUTS: P1 if P1 .eqs. "ME" some parts of LIBINIT are omitted. Also, P1 is passed into LIBLOGIN as first argument OUTPUTS: SIDE EFFECTS: RESTRICTIONS: PROCEDURE: > Global symbols LIB__MF_TAPEDRIVES, LIB__MF_EXADRIVES,LIB__OD_DRIVES The command procedure DEV.COM determines the common prefix of these list of logicals using the expression f$elements(0,",",LIB__MF_TAPE_DRIVES)-"0"-"1" i.e. for the first drive logical should have the form MT0 or MT1 (MT would be identified as the common prefix) MODIFICATION HISTORY: ?, Paul Hick (UCSD) !-