[comp.os.vms] Creating Group Logical Name tables at Startup

rlb@rtpark.ge.COM (Bob Boyd 8*565-3627 13-Jul-1988 2043) (07/14/88)

Message created @ 13-JUL-1988 20:43:52.06

Here is the procedure that we use to pre-create group logical name tables.
Yes it will work after V5.  It takes as its parameter the group number
(in octal digits) that you wish to create.  It even checks to see if it
exists or not.  The method is very simple.

================================ 8< cut here ================================
$! VAX/VMS archive file created by VMS_SHAR V-5.01 01-Oct-1987
$! which was written by Michael Bednarek (U3369429@ucsvc.dn.mu.oz.au)
$! To unpack, simply save and execute (@) this file.
$!
$! This archive was created by RLB
$! on Wednesday 13-JUL-1988 20:42:48.27
$!
$! It contains the following 1 file:
$! CREGROUP.COM
$!==============================================================================
$ Set Symbol/Scope=(NoLocal,NoGlobal)
$ Version=F$GetSYI("VERSION") ! See what VMS version we have here:
$ If Version.ges."V4.4" then goto Version_OK
$ Write SYS$Output "Sorry, you are running VMS ",Version, -
                ", but this procedure requires V4.4 or higher."
$ Exit 44
$Version_OK: CR[0,8]=13
$ Pass_or_Failed="failed!,passed."
$ Goto Start
$Convert_File:
$ Read/Time_Out=0/Error=No_Error1/Prompt="creating ''File_is'" SYS$Command ddd
$No_Error1: Define/User_Mode SYS$Output NL:
$ Edit/TPU/NoSection/NoDisplay/Command=SYS$Input/Output='File_is' -
        VMS_SHAR_DUMMY.DUMMY
f:=Get_Info(Command_Line,"File_Name");b:=Create_Buffer("",f);
o:=Get_Info(Command_Line,"Output_File");Set(Output_File,b,o);
Position(Beginning_of(b));Loop x:=Erase_Character(1);Loop ExitIf x<>"V";
Move_Vertical(1);x:=Erase_Character(1);Append_Line;
Move_Horizontal(-Current_Offset);EndLoop;Move_Vertical(1);
ExitIf Mark(None)=End_of(b) EndLoop;Position(Beginning_of(b));Loop
x:=Search("`",Forward,Exact);ExitIf x=0;Position(x);Erase_Character(1);
If Current_Character='`' then Move_Horizontal(1);else
Copy_Text(ASCII(INT(Erase_Character(3))));EndIf;EndLoop;Exit;
$ Delete VMS_SHAR_DUMMY.DUMMY;*
$ Checksum 'File_is
$ Success=F$Element(Check_Sum_is.eq.CHECKSUM$CHECKSUM,",",Pass_or_Failed)+CR
$ Read/Time_Out=0/Error=No_Error2/Prompt=" CHECKSUM ''Success'" SYS$Command ddd
$No_Error2: Return
$Start:
$ File_is="CREGROUP.COM"
$ Check_Sum_is=1281629056
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X$! create group logical name table after seeing if it exists
X$! p1 -- the octal representation of the group of interest
X$ if p1.eqs."" then $ goto exit
X$ grp_name = f$fao("!6OL",%O'p1')
X$ tgrp = f$trnlnm("lnm$group_"+grp_name,"lnm$system_directory",,,,"TABLE")
X$ if .not.tgrp then $ goto create_it
V$ tgrp_typ = f$trnlnm("lnm$group_"+grp_name,"lnm$system_directory",,,,"ACCESS_M
XODE")
X$ if tgrp_typ.eqs."KERNEL" then $ goto exit
X$create_it:
X$ run/det/uic=['grp_name',0] sys$system:loginout.exe/inp=nl:/out=nl:
X$ goto exit
X$! this isn't supported -----------
X$ create/name lnm$group_'grp_name'-
X`009/kernel_mode/attrib=(no_alias,supercede)-
X`009/parent=lnm$system_directory-
X`009/prot=(s:rwed,o:r,g:r,w)
X$exit:
X$ exit
$ GoSub Convert_File
$ Exit
============================= End of Text to Cut =============================


-----------------------------------------------------------------
 Bob Boyd                     Usenet:    rlb@rtpark.ge.com
 GE Microelectronics Ctr.     Internet:  rlb%rtpark.ge.com@mcnc           
 POB 13049, MS 7T3-01         BitNet:    rlb%rtpark.ge.com@relay.cs.net
 RTP, NC 27709-3049           Voice:     (919)549-3627 
 GE DECnet: RTPARK::RLB       GE DIALCOMM:  8*565-3627  PROFS: SSAVRNA,MECRLBT