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