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

SYS$DECDTM_INHIBIT TRUE

SOLVED
Go to solution
Clark Powell
Frequent Advisor

SYS$DECDTM_INHIBIT TRUE

We have this logical set in SYLOGICALS.COM
$DEFINE/SYS/EXEC SYS$DECDTM_INHIBIT TRUE
But we still get this message in STARTUP.LOG
%STDRV-E-NOSUCHFILE, File SYS$STARTUP:DECDTM$STARTUP.COM does not exist.

How might we surpress this unneeded error message?

thanks
Clark Powell
10 REPLIES
Steven Schweda
Honored Contributor

Re: SYS$DECDTM_INHIBIT TRUE

> How might we surpress this unneeded error
> message?

Uh, replace your lost/misplaced/discarded
SYS$STARTUP:DECDTM$STARTUP.COM file?

Around here:

ALP $ show logical /system /full SYS$DECDTM*

(LNM$SYSTEM_TABLE) [kernel] [shareable,system]
[Protection=(RWC,RWC,R,R)] [Owner=[SYSTEM]]

"SYS$DECDTM_INHIBIT" [exec] = "INHIBITED"
[...]

ALP $ dire /date /prot /size SYS$STARTUP:DECDTM$STARTUP.COM

Directory SYS$COMMON:[SYS$STARTUP]

DECDTM$STARTUP.COM;1
12 29-JUN-2006 17:47:17.27 (RWED,RWED,RE,RE)
[...]
John Gillings
Honored Contributor
Solution

Re: SYS$DECDTM_INHIBIT TRUE

Clark,

As Steven has pointed out, your DECDTM$STARTUP.COM procedure is missing. There is a reference from the SYSMAN startup data base. You can see it with:

$ MCR SYSMAN
SYSMAN> STARTUP SET DATABASE STARTUP$STARTUP_VMS
SYSMAN> STARTUP SHOW FILE
...
BASEENVIRON DIRECT DECDTM$STARTUP.COM

The (in)action based on the SYS$DECDTM_INHIBIT logical name is implemented in that procedure:

$IF (P1.NES."FULL" .AND. P1.NES."") -
.OR. -
F$TRNLNM("SYS$DECdtm_INHIBIT","LNM$SYSTEM_TABLE",,"EXECUTIVE").NES."" THEN -
$ EXIT

Without the procedure the logical name has no function, and the error from SYSMAN during STARTUP is correct.

Maybe someone has tried a "belt and braces" trick to really stop DECdtm startup, defining the logical name AND deleting or renaming the file? Maybe they thought it didn't work because someone forgot to specify DEFINE/EXECUTIVE? Note that the logical name is NOT case sensitive, even though it looks like it might be in the F$TRNLNM call.

A few options (in order of my preference):

1) As Steven has suggested, restore the procedure and retain the logical name. This should do exactly what you want, and conform to OOTB OpenVMS.

2) Create a dummy DECDTM$STARTUP.COM containing "$ EXIT". Logical name is then irrelevant.

3) Disable the SYSMAN call:

$ MCR SYSMAN
SYSMAN> STARTUP SET DATABASE STARTUP$STARTUP_VMS
SYSMAN> STARTUP DISABLE FILE DECDTM$STARTUP.COM

again, the logical name becomes irrelevant.

4) Remove the SYSMAN call

$ MCR SYSMAN
SYSMAN> STARTUP SET DATABASE STARTUP$STARTUP_VMS
SYSMAN> STARTUP REMOVE FILE DECDTM$STARTUP.COM

I recommend 1, as that's the way it "should" be, but you may want a more permanent solution.
A crucible of informative mistakes
Jan van den Ende
Honored Contributor

Re: SYS$DECDTM_INHIBIT TRUE

To strenghthen/amend John:

>>>

I recommend 1, as that's the way it "should" be, but you may want a more permanent solution.
<<<

Realise, that a new version, (maybe even a patch) may well deliver an updated SYS$STARTUP:DECDTM$STARTUP.COM.

Any of the other "choices" would lead to unexpected and/or unwanted behavior!

Be defensive, stick to option 1.

Proost.

Have one on me.

jpe
Don't rust yours pelled jacker to fine doll missed aches.
Steve Reece_3
Trusted Contributor

Re: SYS$DECDTM_INHIBIT TRUE

Although, as John says, the logical name shouldn't be case sensitive, I've seen at least one case (not with a current VMS version) where it displayed all the behaviour that one would expect if it was case sensitive. Very odd to say the least!

So, once you'e got your copy of decdtm$startup in place and if nothing else works, just try adding a mixed case logical name and see if it does the trick. It certainly can't hurt.

Steve
tsgdavid
Frequent Advisor

Re: SYS$DECDTM_INHIBIT TRUE

Interesting...

F$TRNLNM seems to be case insensitive.
Use of a logical name in a file specification also appears to be case insensitive.
However, the logical name table will store the exact case of the original DEFINE statement if you include the logical name in double quotes.

BUT, the DEASSIGN command appears to be case sensitive. I wonder why. The system does not let you create two identical logical names with a different case.

$ define "dave" sys$login:
$ sho log dave
"dave" = "SYS$LOGIN:" (LNM$PROCESS_TABLE)
1 "SYS$LOGIN" = "SYS$SYSDEVICE:[USERS.DWILLIAMS]" (LNM$JOB_8885F8C0)
$ dir dave:*.edt

Directory SYS$SYSDEVICE:[USERS.DWILLIAMS]

EDTINI.EDT;1

Total of 1 file.
$ deass dave
%SYSTEM-F-NOLOGNAM, no logical name match
$ deass "dave"
$

Dave
tsgdavid
Frequent Advisor

Re: SYS$DECDTM_INHIBIT TRUE

Further clarification...

My personal recommendation would be to ALWAYS use upper case in logical names to avoid confusion. The strange instance of lower case characters in the DECDTM$STARTUP.COM procedure (while it is unusual) should not cause a problem.

Dave
Joseph Huber_1
Honored Contributor

Re: SYS$DECDTM_INHIBIT TRUE

>> F$TRNLNM seems to be case insensitive.

It always was.
(at least since VMS5, don't remember VMS4 ...)
http://www.mpp.mpg.de/~huber
Joseph Huber_1
Honored Contributor

Re: SYS$DECDTM_INHIBIT TRUE

... and have a look into the HELP for LEXICAL F$TRNLNM: it has a CASE argument, where one can specify "CASE_BLIND". The same is true for the system service call.
http://www.mpp.mpg.de/~huber
Joseph Huber_1
Honored Contributor

Re: SYS$DECDTM_INHIBIT TRUE

Correction:
in my reply of Sep 29, 2010 12:46:08 GMT is wanted to say
... it was always case SENSITIVE, not INSENSITIVE!

As a side note:
ASSIGN dka100: xxx:
is equivalent to
DEFINE xxx dka100:
i.e. the colon ":" is stripped off.
And maybe VMSer a bit younger than me can confirm if assign/deassign was really case insensitive until DEFINE was introduced in VMS (version?).
ASSIGN was originally compatible to the RSX command ASSIGN, which only defined equivalence names to devices, not general logical names.
http://www.mpp.mpg.de/~huber
John Gillings
Honored Contributor

Re: SYS$DECDTM_INHIBIT TRUE

re Joseph:

> if assign/deassign was really case
>insensitive until DEFINE was introduced in
>VMS (version?).

DEFINE has been around since day 1, but in V1.0, the ASSIGN form was preferred in documentation and system provided command procedures.

My recollection was that all the DCL logical name commands uppercased everything, so in a sense they were case insensitive. I remember an issue using $crelog (not $crelnm, which didn't exist). I managed to create a lower case logical name which was effectively invisible to DCL. You could see it with SHOW LOGICAL, but not translate or DEASSIGN. Back then there were only 3 logical name tables PROCESS, GROUP and SYSTEM. $CRELOG and $TRNLOG still exist for compatibility, but are no longer documented. They can only see the original 3 tables.

Documentation changed with VMS V2.0 to favour DEFINE over ASSIGN, which was a throwback to earlier operating systems, RSTS and/or RSX. Makes me wonder why some folk still use the archaic ASSIGN form, since it was superceeded over 30 years ago! But then some people still persist with EDT. Thank the stars engineering didn't insist on compatibility and keep SOS ;-)

The more general logical name structures we know today were introduced with VMS V4.0, early 1980's.
A crucible of informative mistakes