On VMS systems, the logical name CERN points to the root directory for the CERNLIB tree, as shown below. The CERN logical name
VXCRNA? sh log cern "CERN" = "_$22$DUS206:[CERN.]" (LNM$SYSTEM_TABLE)
This directory contains subdirectories as in the Unix case, as shown below. CERNLIB subdirectory structure
VXCRNA? dir $22$dus206:[cern] Directory $22$DUS206:[CERN] 000000.DIR;1 92B.DIR;1 93C.DIR;1 93D.DIR;1 94A.DIR;1 CMZ.DIR;1 DECW.DIR;1 FATMEN.DIR;1 GKS.DIR;1 HEPDB.DIR;1 HISTORIAN.DIR;1 HYDRA.DIR;1 LAPACK.DIR;1 MAD.DIR;1 NAG.DIR;1 NEW.DIR;1 OLD.DIR;1 PATCHY.DIR;1 PHIGS.DIR;1 PRO.DIR;1 RELEASE.LEVEL;8 WWW.DIR;1
On VXCERN, the logical name CERN is a search list. It is composed of three individual logical names, as follows:
Defining the CERN logical names on VXCERN
$! $! CERN library tree is on DISK$CERNLIB volume set $! $ if f$logical("disk$cernlib").nes."" $ then $ cernlib_disk = F$getdvi("disk$cernlib","FULLDEVNAM") $ def/sys/exec/tran=(term,conc) cernaxp 'cernlib_disk'[cernaxp.] $ def/sys/exec/tran=(term,conc) cernvax 'cernlib_disk'[cern.] $ endif $! $! Now mount the /asis/share file system $! $ nfsmount/soft asisnfs:"/asis/share" ASIS_SHARE $ nfsdev=F$GETDVI("ASIS_SHARE","FULLDEVNAM") $ If nfsdev.nes."" Then - assign/sys/exec/trans=(conc,term) 'nfsdev'[cern.] NFSCERN $ If nfsdev.nes."" Then - assign/sys/exec/trans=(conc,term) 'nfsdev'[cern.] CERNNFS $ Endif $! $! Now define the CERNlib logical names as a function of the above $! $ @cern:[new.mgr]cern\_logicals
At the time of writing, some directories exist only in the CERNVAX tree. However, it is planned that all files shared between the VAX and Alpha architectures be moved progressively to the asis server.
N.B. the binaries and libraries are incompatible between VAX and Alpha systems. Thus, if you wish to copy the VAX executables over DECnet, use
COPY VXCERN::CERNVAX:[PRO.EXE]*.*
Similarly, to get the Alpha versions of the libraries, use
COPY VXCERN::CERNAXP:[PRO.LIB]*.*
On VXCERN, the NEW , PRO and OLD subdirectories are pointers to other subdirectories, created using the VMS command SET FILE/ENTER.
On VXCERN, much of the system wide login procedure is performed using CLUSTER$MANAGER:EXSYLOGIN.EXE. This is done to speed up logins. The symbols definitions for the CERNLIB commands are defined in the program CERN_ROOT:[MGR]CERNLOGIN.FOR. You may either include this file into your own Fortran file or use the file MAIN_CERNLOGIN.FOR.
MAIN_CERNLOGIN.FOR
IMPLICIT INTEGER(A-Z) INCLUDE '($LIBCLIDEF)' CHARACTER*(*) C_EXE PARAMETER(C_EXE='CERN_ROOT:[EXE]') C I=LIB$K_CLI_GLOBAL_SYM C INCLUDE 'CERN_ROOT:[MGR]CERNLOGIN.FOR' C END
Symbol definitions on VXCERN using CERNLOGIN.FOR
C IMPLICIT INTEGER(A-Z) C INCLUDE '($LIBCLIDEF)' C CHARACTER*(*) C_EXE C PARAMETER(C_EXE='CERN_ROOT:[EXE]') C C THIS IS A FAST VERSION OF THE USUAL SYSTEM WIDE LOGIN.COM . C ALL CERN LIBRARY SYMBOL DEFINITIONS ARE CODED HERE. C C ==================================================================== C Customization section: enable if product is available at your site C f_cmz =1 ! CMZ - CODEME f_garf =1 ! GARFIELD - CERN f_gks =1 ! GKS - GTS-GRAL f_his =1 ! HISTORIAN - OPCODE f_mad =1 ! MAD - CERN f_nag =1 ! NAG - NAG Ltd f_patc =1 ! PATCHY - CERN f_rzco =1 ! RZCONV - CERN f_umon =1 ! UMON - CERN f_vaxt =1 ! VAXTAP - CERN f_www =1 ! WWW - CERN C C End of customization C ==================================================================== C C I=LIB$K_CLI_GLOBAL_SYM C RECODE=LIB$SET_SYMBOL('CERNLIB','$'//C_EXE//'CERNLIB' ,I) RECODE=LIB$SET_SYMBOL('CERN_LEVEL','PRO' ,I) C C--- PATCHY Symbols C IF(F_PATC.EQ.1) THEN RECODE= + LIB$SET_SYMBOL('FCASPLIT','$CERN:[patchy.4_15.EXE]FCASPLIT',I) C RECODE= + LIB$SET_SYMBOL('YCOM*PAR','$CERN:[patchy.4_15.EXE]YCOMPAR',I) RECODE= + LIB$SET_SYMBOL('YEDI*T' ,'$CERN:[patchy.4_15.EXE]YEDIT' ,I) RECODE= + LIB$SET_SYMBOL('YFRC*ETA','$CERN:[patchy.4_15.EXE]YFRCETA',I) RECODE= + LIB$SET_SYMBOL('YIND*EX' ,'$CERN:[patchy.4_15.EXE]YINDEX' ,I) RECODE= + LIB$SET_SYMBOL('YLIS*T' ,'$CERN:[patchy.4_15.EXE]YLIST' ,I) C RECODE= + LIB$SET_SYMBOL('YPAT*CHY','$CERN:[patchy.4_15.EXE]YPATCHY',I) RECODE= + LIB$SET_SYMBOL('YSEA*RCH','$CERN:[patchy.4_15.EXE]YSEARCH',I) RECODE= + LIB$SET_SYMBOL('YSHI*FT' ,'$CERN:[patchy.4_15.EXE]YSHIFT' ,I) RECODE= + LIB$SET_SYMBOL('YTOBC*D' ,'$CERN:[patchy.4_15.EXE]YTOBCD' ,I) RECODE= + LIB$SET_SYMBOL('YTOBI*N' ,'$CERN:[patchy.4_15.EXE]YTOBIN' ,I) RECODE= + LIB$SET_SYMBOL('YTOC*ETA','$CERN:[patchy.4_15.EXE]YTOCETA',I) C RECODE=LIB$SET_SYMBOL('YEXP*AND','@'//C_EXE//'YEXPAND',I) C ENDIF C C--- CERNlib Tools C RECODE=LIB$SET_SYMBOL('GETOPT','@'//C_EXE//'GETOPT' ,I) RECODE=LIB$SET_SYMBOL('SETENV','@'//C_EXE//'SETENV " "',I) RECODE=LIB$SET_SYMBOL('XTERM' ,'@'//C_EXE//'XTERM " "',I) RECODE=LIB$SET_SYMBOL('RESIZE','@'//C_EXE//'RESIZE' ,I) RECODE=LIB$SET_SYMBOL('MKCOMP*ILE','@'//C_EXE//'MKCOMPILE',I) C C--- CERNlib Products C RECODE=LIB$SET_SYMBOL('DZEDIT','@'//C_EXE//'DZEDIT " "',I) RECODE=LIB$SET_SYMBOL('FM','$'//C_EXE//'FATMEN' ,I) RECODE=LIB$SET_SYMBOL('HEPDB','$'//C_EXE//'HEPDB' ,I) RECODE=LIB$SET_SYMBOL('GXINT','@'//C_EXE//'GXINT " "' ,I) RECODE=LIB$SET_SYMBOL('HIGZCONV','$'//C_EXE//'HIGZCONV',I) RECODE=LIB$SET_SYMBOL('KUIPC','$'//C_EXE//'KUIPC' ,I) RECODE=LIB$SET_SYMBOL('PAW' ,'@'//C_EXE//'PAW.COM " "',I) RECODE=LIB$SET_SYMBOL('HTONEW','$'//C_EXE//'HTONEW' ,I) RECODE=LIB$SET_SYMBOL('FATSREQ','$'//C_EXE//'FATSREQ' ,I) RECODE=LIB$SET_SYMBOL('SYSREQ','$'//C_EXE//'SYSREQ' ,I) RECODE= +LIB$SET_SYMBOL('TELNETG','@'//C_EXE//'TELNETG.COM " "',I) RECODE=LIB$SET_SYMBOL('ZFTP','$'//C_EXE//'ZFTP' ,I) RECODE=LIB$SET_SYMBOL('WYLBUR','$'//C_EXE//'WYLBUR' ,I) RECODE=LIB$SET_SYMBOL('USE','$'//C_EXE//'WYLBUR' ,I) C RECODE=LIB$SET_SYMBOL('TO','$'//C_EXE//'NEWTONET.EXE' ,I) C C--- CMZ symbols C IF(F_CMZ.EQ.1) THEN RECODE=LIB$SET_SYMBOL('CMZ' ,'@'//C_EXE//'CMZ.COM " "',I) ENDIF C C--- GARFIELD symbols C IF(F_GARF.EQ.1) THEN RECODE=LIB$SET_SYMBOL('GA*RFIELD','$'//C_EXE//'GARFRUN',I) C RECODE=LIB$SET_SYMBOL('GH*ELP', C + 'HELP/NOLIBLIST/LIBRARY=HELP$GARFIELD',I) RECODE=LIB$SET_SYMBOL('GED*IT','LSE/ENV=LSE$GARFIELD',I) ENDIF C C--- GKS symbols C C IF(F_GKS.EQ.1) THEN C C ENDIF C C--- HISTORIAN symbols C IF(F_HIS.EQ.1) THEN RECODE=LIB$SET_SYMBOL('HISTE','$HISTORIAN_ROOT:[EXE]HISTE',I) RECODE=LIB$SET_SYMBOL('HISTG','$HISTORIAN_ROOT:[EXE]HISTG',I) RECODE=LIB$SET_SYMBOL('HISTO*R','$HISTORIAN_ROOT:[EXE]HISTOR',I) ENDIF C C--- MAD symbols C IF(F_MAD.EQ.1) THEN RECODE=LIB$SET_SYMBOL('MAD8','@'//C_EXE//'MAD8.COM " "',I) ENDIF C C--- NAG symbols C IF(F_NAG.EQ.1) THEN C RECODE=LIB$SET_SYMBOL('NAGH*ELP','$NAG_ROOT:[EXE]NAGHELP' ,I) RECODE=LIB$SET_SYMBOL('NAGT*EST','@NAG_ROOT:[EXE]NAGTEST " "',I) ENDIF C C--- RZCONV symbols C RECODE=LIB$SET_SYMBOL('RTOA','$'//C_EXE//'RTOA',I) RECODE=LIB$SET_SYMBOL('RTOX','$'//C_EXE//'RTOX',I) RECODE=LIB$SET_SYMBOL('RFRA','$'//C_EXE//'RFRA',I) RECODE=LIB$SET_SYMBOL('RFRX','$'//C_EXE//'RFRX',I) C C--- VAXTAP symbols C IF(F_VAXT.EQ.1) THEN RECODE=LIB$SET_SYMBOL('EINIT' ,'$'//C_EXE//'EINIT' ,I) RECODE=LIB$SET_SYMBOL('LABELDUMP','$'//C_EXE//'LABELDUMP',I) RECODE=LIB$SET_SYMBOL('SETUP' ,'$'//C_EXE//'SETUP' ,I) RECODE=LIB$SET_SYMBOL('STAGE' ,'$'//C_EXE//'STAGE' ,I) RECODE=LIB$SET_SYMBOL('TAPECOPY' ,'@'//C_EXE//'TAPECOPY' ,I) RECODE=LIB$SET_SYMBOL('WRTAPE' ,'$'//C_EXE//'WRTAPE' ,I) RECODE=LIB$SET_SYMBOL('XTAPE' ,'$'//C_EXE//'XTAPE' ,I) ENDIF C C--- WWW symbols C IF(F_WWW.EQ.1) THEN RECODE=LIB$SET_SYMBOL('WWW' ,'$CERN:[WWW.EXE]WWW' ,I) RECODE=LIB$SET_SYMBOL('WEB' ,'@CERN_ROOT:[EXE]WEB " "' ,I) C RECODE=LIB$SET_SYMBOL('XMOSAIC' ,'@CERN:[WWW.EXE]XMOSAIC' ,I) ENDIF C