Page 1 of 1
Where is the c compiler installed?
Posted: Thu May 04, 2023 6:16 pm
by skymoco
Sorry to ask a newbie question, but I installed the c compiler with:
Code: Select all
$ product install c
Performing product kit validation of signed kits ...
%PCSI-I-VSIVALPASSED, validation of VMSBOX$DKA0:[HOME.SYSTEM]VSI-X86VMS-C-X0704-
726-1.PCSI$COMPRESSED;1 succeeded
.............
The following product has been installed:
VSI X86VMS C X7.4-726 Layered Product
$ cc
%DCL-W-IVVERB, unrecognized command verb - check validity and spelling
\CC\
However, I am not able to compile anything. I assume I am missing a symbol but I looked where memory tells me to
But they don't seem to be where I remember
SYS$COMMON:[SYSMGR]SYSLOGICALS.COM
Are make and other utilities available?
Re: Where is the c compiler installed?
Posted: Thu May 04, 2023 6:51 pm
by arne_v
Have you tried logout and login?
(I assume CC is in DCLTABLES and it get loaded at login)
Re: Where is the c compiler installed?
Posted: Thu May 04, 2023 6:53 pm
by skymoco
Of course that did it..... Thanks!
I was an "ok" system admin back in the day, but that was a while ago.
Re: Where is the c compiler installed?
Posted: Thu May 04, 2023 7:05 pm
by arne_v
A few details in case you are curious or some other readers are curious.
There are different ways of running a program on VMS.
1) The simple but limited.
$ RUN name
(which does not take parameters)
2) Foreign symbols.
$ symbol :== $disk:[dir]name
$ symbol arg1 arg2 arg3
3) MCR.
$ MCR disk:[dir]name arg1 arg2 arg3
4) The true VMS way of CLD and DCLTABLES.
One create a CLD file that define the verb with parameters and qualifier and image to run and then either load it into memory or into an on disk file.
The C installation has a CLD file that it stuffs into DCLTABLES.EXE which get loaded into processes at login and used by DCL to parse commands.
It starts with something like:
Code: Select all
define verb CC
image DECC$COMPILER
parameter P1, label=FILE, prompt="File"
value (required,list,impcat,type=$infile)
qualifier VERSION, syntax=VERSION_ONLY
...
That defines the CC verb, P1 which is the file to compile and a ton of qualifiers and associate it with DECC$COMPILER.EXE (in SYS$SYSTEM).
Programs that need to retrieve parameters and qualifiers can do so using the CLI$ library functions.
Re: Where is the c compiler installed?
Posted: Fri May 05, 2023 1:06 am
by sms
Code: Select all
> Have you tried logout and login?
Or SPAWN? I'd expect any new process to get the new stuff.
Re: Where is the c compiler installed?
Posted: Fri May 05, 2023 4:06 am
by martin
For completeness Arne's list should also have included:
5)
DCL$PATH
If the CLI cannot resolve a command by methods 1-4, it will look for the logical name
DCL$PATH. If it finds it, then the CLI will examine each directory listed in
DCL$PATH to see if a file with type
.COM or
.EXE and the same name as the command exists in the directory.
Code: Select all
$ SYSGEN
%DCL-W-IVVERB, unrecognized command verb - check validity and spelling
$ DEFINE DCL$PATH SYS$SYSTEM,SYS$DISK:[]FOO
$ SYSGEN SHOW MAXPROCESSCNT
Parameter Name Current Default Min. Max. Unit Dynamic
-------------- ------- ------- ------- ------- ---- -------
MAXPROCESSCNT 157 32 12 8192 Processes
(Example copied from "VSI OpenVMS User's Manual" §12.14)
If this looks a little *NIX like, it is. It came in around OpenVMS 7 due to user demands.
Re: Where is the c compiler installed?
Posted: Fri May 05, 2023 6:35 am
by hb
FOO is always useful in examples. But here I would file a problem report for that manual. (In case it was used intentionally - and yes, this kind of works! - it requires some explanation.)
Re: Where is the c compiler installed?
Posted: Fri May 05, 2023 9:15 am
by martin
Good catch. Later on it clearly says (§12.14.1, item 2): "Only the node, device, and directory portions of each translation of the logical name are used" so why that FOO is there I don't know. It's worth reading the whole of that section; first there is a warning about privileged accounts and
SYS$DISK and then there examples of when it wouldn't work.
Update:
I've reported this to
docinfo@vmssoftware.com and enclosed the following example:
Code: Select all
$ sysgen
%DCL-W-IVVERB, unrecognized command verb - check validity and spelling
\SYSGEN\
$ DEFINE DCL$PATH SYS$SYSTEM,SYS$DISK:[]
$ SYSGEN SHOW MAXPROCESSCNT
Parameter
Name Current Default Min. Max. Unit Dynamic
-------------- ------- ------- ------- ------- --
-- -------
MAXPROCESSCNT 133 32 12 32767
Processes
No FOO required.
Re: Where is the c compiler installed?
Posted: Fri May 05, 2023 3:16 pm
by arne_v
martin wrote: ↑Fri May 05, 2023 4:06 am
For completeness Arne's list should also have included:
5)
DCL$PATH
If the CLI cannot resolve a command by methods 1-4, it will look for the logical name
DCL$PATH. If it finds it, then the CLI will examine each directory listed in
DCL$PATH to see if a file with type
.COM or
.EXE and the same name as the command exists in the directory.
...
If this looks a little *NIX like, it is. It came in around OpenVMS 7 due to user demands.
Ah - I forgot the "new" way.
I think it came in 6.2 (1995).
The equivalent of PATH in *nix and DOS/Windows.
I don't think it ever got popular in the VMS world.
Re: Where is the c compiler installed?
Posted: Fri May 05, 2023 4:21 pm
by jreagan
Skipping over the extra replies, you can reload the DCLTABLES without logout or login is
$ set command /table=sys$library:dcltables.exe