/* ++ */ /* Nom */ /* INSTALL_UTIL.CDCL */ /* */ /* Description */ /* Procédure de controle de l'existance de l'arborescence ULT$... */ /* Si celle-ci n'existe pas, elle propose sa création. Si l'utilisateur */ /* refuse cette création, il a encore la ressource de redéfinir les noms */ /* logiques UTL$... utilisés. */ /* Cette redéfinition peut etre faite au niveau de l'utilisateur ou du */ /* système. */ /* */ /* Utilisation */ /* @INSTALL_UTIL */ /* Cette procedure est lancee par les procedures d'installation des */ /* logiciels LAL */ /* */ /* Priviléges éventuels */ /* Création de directories. */ /* Définition de noms logiques. */ /* Copie des fichiers dans les directories de receptions. */ /* */ /* Parametres */ /* La procedure n'attent pas de parametre en entree. */ /* En sortie, elle definie un status de sortie */ /* Ce status est 1, si le nom logique UTL$SYSTEM a pu etre */ /* definie */ /* Le status est 0, si l'utilisateur ne veut pas creer */ /* l'arborescence */ /* En cas d'erreur, le code d'erreur est retourne */ /* */ /* Création */ /* 22 Avril 1986 : JN Albert - LAL */ /* */ /* Modification */ /* -- */ /* Existance des noms logiques UTL$SYSROOT, UTL$SYSTEM */ utl_sysroot = F$Edit(F$Logical("UTL$SYSROOT"), "TRIM") utl_system = F$Edit(F$Logical("UTL$SYSTEM"), "TRIM") /* Le nom logique existe - Pas de probleme */ if (utl_sysroot .nes. "" .and. utl_system .nes. "") Exit 1 /* Noms logiques non définis */ Type SYS$INPUT # # Les noms logiques UTL$SYSROOT ou UTL$SYSTEM ne sont pas definis. # # La structure des directories UTL$... est : # # Disque ---> [Racine] : UTL$SYSROOT # ---------+--------- # | | | # [sysmgr] [sysexe] [syshlp] : UTL$MANAGER # UTL$SYSTEM # UTL$HELP # # Il est possible de : # # Definir le nom logique UTL$SYSROOT au niveau SYSTEM # # Definir le nom logique UTL$SYSROOT au niveau PROCESS # # Attention, dans ces deux derniers cas, le directory destine a # contenir la racine UTL$SYSROOT doit deja exister # inquire create_dir "Voulez-vous creer l'arborescence UTL$... (Y/N) " if (create_dir) { /* Creation de l'arborescence */ Type Sys$Input # # Par defaut, l'arborescence est definie par : # # disque --- SYS$SYSDEVICE # racine --- [UTIL] for (;;) { Inquire Disque "Nom du disque (SYS$SYSDEVICE) " if (Disque .eqs. "") { Disque = "SYS$SYSDEVICE" break } else { if (F$Getdvi(Disque,"EXISTS")) { Flg_Avl = F$Getdvi(Disque,"AVL") Flg_Dir = F$Getdvi(Disque,"DIR") if (Flg_Avl .and. Flg_Dir) break } write sys$output "Disque non utilisable !" } } Inquire Racine "Nom directory de la racine UTL$SYSROOT (UTIL) " if (Racine .eqs. "") Racine = "UTIL" Option = "SYSTEM" } else { inquire Def_Sys "Voulez-vous definir UTL$SYSROOT au niveau SYSTEM (Y/N) " if (Def_Sys) Option = "SYSTEM" else { inquire Def_Prc \ "Voulez-vous definir UTL$SYSROOT au niveau PROCESS (Y/N) " if (Def_Prc) Option = "PROCESS" else { /************************************************/ /* Impossible de definir UTL$SYSROOT */ /* */ /* Sortie avec STATUS d'erreur */ /************************************************/ Write Sys$Output "Impossible d'installer UTL$..." Exit 0 } } for (;;) { if (Def_Sys) { Inquire Disque "Nom du disque (SYS$SYSDEVICE) " if (Disque .eqs. "") Disque = "SYS$SYSDEVICE" } else { Inquire Disque "Nom du disque (SYS$DISK) " if (Disque .eqs. "") Disque = "SYS$DISK" } if (F$Getdvi(Disque,"EXISTS")) { Flg_Avl = F$Getdvi(Disque,"AVL") Flg_Dir = F$Getdvi(Disque,"DIR") if (Flg_Avl .and. Flg_Dir) break } write sys$output "Disque non utilisable !" } for (;;) { do { Inquire Racine \ "Nom du directory UTL$SYSROOT [Pas de defaut] " } while (Racine .eqs. "") Racine = Racine - "[" - "]" Disque = Disque - ":" Open/Write/Error=Direct_err Tst 'disque':['racine']TEST.TMP Close Tst Delete 'disque':['racine']TEST.TMP; break DIRECT_ERR: Write Sys$Output "" Write Sys$Output "Nom de directory incorrect" Write Sys$Output "" } } Type SYS$INPUT # # Deux procedures de commandes peuvent etre placees dans UTL$SYSTEM pour # faciliter la manipulation des utilitaires. # # UTIL.COM - Definit un symbole permettant d'utiliser l'utilitaire comme # une commande. # Ex: # UTIL @Edit_fontes # Definie le symbole 'EDIT_FONTES' # # On peut ensuite taper # EDIT_FONTES # au lieu de # @UTL$SYSTEM:EDIT_FONTES # # EXECUTE.COM - Lance directement l'execution d'un utilitaire # Ex: # EXECUTE Edit_Fontes # inquire procedure_utl \ "Voulez-vous la copie de ces procedures dans UTL$SYSTEM (Y/N) " /* Creation de l'arborescence et definition des noms logiques */ on error then Exit $Status write sys$output "Fin des choix" disque = disque - ":" racine = racine - "[" - "]" Write sys$output "Creation des directories et des noms logiques" if (create_dir) create/directory 'disque':['racine'] Assign/'Option'/Translate=(Concealed,Terminal) \ 'disque':['racine'.] UTL$SYSROOT: Create/directory UTL$SYSROOT:[SYSMGR] Assign/'Option' UTL$SYSROOT:[SYSMGR] UTL$MANAGER Create/directory UTL$SYSROOT:[SYSEXE] Assign/'Option' UTL$SYSROOT:[SYSEXE] UTL$SYSTEM Create/directory UTL$SYSROOT:[SYSHLP] Assign/'Option' UTL$SYSROOT:[SYSHLP] UTL$HELP /* Creation du fichier de definition */ write sys$output "Creation du fichier de Startup" Open/Write utl Utlstartup.com Write utl "$!" Write utl "$! Nom" Write utl "$! UTLSTARTUP.COM" Write utl "$! Description" Write utl "$! Definition des noms logiques UTL$..." Write utl "$!" Write utl "$! Creation " Write utl "$! ", F$Cvtime("TODAY","ABSOLUTE","DATE"), " : ",\ F$Getjpi("","USERNAME") Write utl "$!" Write utl "$ Assign/",Option,"/Translate=(Concealed,Terminal) ",\ disque, ":[", racine, ".] UTL$SYSROOT:" Write utl "$ Assign/",Option," UTL$SYSROOT:[SYSMGR] UTL$MANAGER" Write utl "$ Assign/",Option," UTL$SYSROOT:[SYSEXE] UTL$SYSTEM" Write utl "$ Assign/",Option," UTL$SYSROOT:[SYSHLP] UTL$HELP" Write utl "$ Exit" Close Utl /* Copie des procedures de definition */ write sys$output "Copie des procedures de definition" Copy/log utlstartup.com UTL$MANAGER: manager = racine + ".SYSMGR" if (option .eqs. "SYSTEM") { Type SYS$INPUT # # Le fichier UTL$MANAGER:UTLSTARTUP.COM contient les definitions des noms # logiques UTL$... Il peut etre appelle depuis la procedure # SYS$MANAGER:SYSTARTUP.COM pour etre pris en compte a chaque demarrage # du VAX par la ligne : # } else { Type SYS$INPUT # # Le fichier UTL$MANAGER:UTLSTARTUP.COM contient les definitions des noms # logiques UTL$... Il peut etre appelle dans votre LOGIN.COM pour # etre pris en compte a chaque login par la ligne : # } write sys$output " $ @",disque,":[",manager,"]UTLSTARTUP.COM" if (procedure_utl) { Copy util.com,execute.com UTL$SYSTEM Type Sys$Input # # Les procedures UTIL.COM et EXECUTE.COM sont copiees dans UTL$SYSTEM. # Elles peuvent etre definie a chaque login par les lignes ajoutees au if (option .eqs. "SYSTEM") { write sys$output " fichier SYS$MANAGER:SYLOGIN.COM" } else { write sys$output " fichier SYS$LOGIN:LOGIN.COM" } write sys$output "" write sys$output " $ UTIL == ""@ UTL$SYSTEM:UTIL"" " write sys$output " $ EXE*CUTE == ""@ UTL$SYSTEM:EXECUTE"" " } write sys$output "" write sys$output "Fin de l'installation des UTL$..." Exit 1