Operating System - OpenVMS
cancel
Showing results for 
Search instead for 
Did you mean: 

create a group logical name table

SOLVED
Go to solution
Bruce Bailey
Occasional Contributor

create a group logical name table

Hi,
I want to create a logical that translates differently depending on a users UIC group. So I need to create a set of logicals in the respective group tables. However, I’ve noticed that on system boot, most of the group tables do not exist and they appear to be created when someone in the group logs into the system. This means that I can’t create the logicals at startup.

I’ve looked at the help for the verb to create a name table but there doesn’t appear to be a way to create a table for a group different to your current UIC code.

Do you know how I can create a number of group tables at system startup that I can then populate with a few logicals in preparation for the user community to login?

We're running VMS V7.3-2

Thanks
11 REPLIES
Wim Van den Wyngaert
Honored Contributor

Re: create a group logical name table

You create a named table as in
$ crea/nam/prot=/exec/parent=lnm$system_directory wim$logical_names

Then populate it.

Then during login, copy lnm$file_dev from lnm$system_directory to a job logical with the same name.

(I didn't try the last part)

Wim
Wim
Wim Van den Wyngaert
Honored Contributor

Re: create a group logical name table

And add wim$logical names to the list.

Wim
Wim
Joseph Huber_1
Honored Contributor

Re: create a group logical name table

You can submit a batch job under one of the groups usernames with the GRPNAM privilege (the "group administrator"), which in turn defines the /GROUP logicals, something like this:

$ getuai NEDSYS/default=nedlogin
$ submit/noprint/user=NEDSYS 'nedlogin'ned_group_define

for a group administrator NEDSYS.
http://www.mpp.mpg.de/~huber
Jan van den Ende
Honored Contributor

Re: create a group logical name table

Joseph's solution is not unlike ours:

We have the necessary group logicals per group in a file
SYS$STARTUP:GROUP_LOGICALS_xxx.COM, with the (non-interactive access) user xxx_SPU as owner. (SPU = Special Privileged User)
This user performs all batch processing for group xxx that requires enhanced privileges; one of those processings is creating and populating the GROUP LNM table.

(to enable SUBMitting to that username by unpriv'd users, we have a little image installed with CMK, access controlled by ACLs, which does some validatings and if validated then SUBMITs a job under the priv'd user)

Proost.

Have one on me.

jpe



Don't rust yours pelled jacker to fine doll missed aches.
Wim Van den Wyngaert
Honored Contributor

Re: create a group logical name table

If you don't have a group table logical, this works to.

You create a named table as in
$ crea/nam/prot=/exec/parent=lnm$system_directory wim$logical_names

Then populate it.

Then during login :
$ def /tab=lnm$process_directory lnm$group wim$logical_names

Wim
Wim
Ian Miller.
Honored Contributor

Re: create a group logical name table

what I do is run a detached process on startup with a uic in the write group

$ run/uic ='uic' sys$system:loginout.exe/INPUT=DEFINE_LOGICALS.COM


and then DEFINE_LOGICALS.COM has
DEFINE/GROUP name value



____________________
Purely Personal Opinion
John Gillings
Honored Contributor
Solution

Re: create a group logical name table

Please don't try to create a group logical name table with CREATE/NAME_TABLE. Far too tricky getting all the attributes and parentage exactly right.

If you want to create a group table for a particular group during system startup, all that is required is to run ANY process using ANY UIC within the group. Ian has suggested using that process to define the logical names, but that requires a process with GRPNAM, which may not be practical.

Suppose we want to create and populate a table for group 250:

$ RUN/UIC=[250,0] NL:

Note it's not necessary for there to be a valid username with UIC [250,0], and we're executing the null device, so the process won't do anything. BUT at completion, the table LNM$GROUP_000250 will exist. You can now define logical names from the startup process with:

$ DEFINE/TABLE=LNM$GROUP_000250 name value
A crucible of informative mistakes
Bruce Bailey
Occasional Contributor

Re: create a group logical name table

Thanks for the responses Chaps. John's was especially helpful as I was trying to avoid submitting a new DCL for each group. Now I can control the logical creations in one DCL during startup.
Wim Van den Wyngaert
Honored Contributor

Re: create a group logical name table

Still a note.

The advantage of using named tables is that you can put all the logicals of an appliction into 1 table. When the application is shut, you remove the table.
Very clean and not group related. And you give the table to all application users or to everyone (our setup).

Wim
Wim
Ian Miller.
Honored Contributor

Re: create a group logical name table

application specific shared tables are a better solution. They can be protected by a identifier which is then granted to authorized users of the application. You add the application specific table into the search list of tables used when translating logical names.
(LNM$FILE_DEV in LNM$SYSTEM_DIRECTORY).
____________________
Purely Personal Opinion
Jan van den Ende
Honored Contributor

Re: create a group logical name table

Wim, Ian,

Yes, that _IS_ our preference as well!

But, do you not have any (old) applications by suppliers that specify using group tables, which for whatever reason you cannot change to application tables?
Applics from the pre-V4 era, or by software companies that do not understand application tables?
Well, _WE_ do! And so, we have to create Group LNM tables.

But John:
I _DO_ like your solution! Quite elegant.

Proost.

Have one on me.

jpe
Don't rust yours pelled jacker to fine doll missed aches.