[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::decc

Title:DECC
Notice:General DEC C discussions
Moderator:TLE::D_SMITHNTE
Created:Fri Nov 13 1992
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:2212
Total number of notes:11045

2132.0. "Posix rtl routines on OpenVMS?" by CSC32::J_HENSON (Don't get even, get ahead!) Fri Mar 28 1997 16:44

Dec C V5.5-002, OpenVMS V7.0, Alpha

Well, I guess it's my time to ask a real stupid question.  I think I know part
of the answer, but would feel better about what I tell the customer after
I get my questions answered here.

A customer is trying to write 'portable' code.  He is using some of
the Posix/Unix functions such as fcntl, msgctl, msgget, msgreceive
and msgsend (I'm not positive of the spelling).  He compiles this
without any problems, but gets undefined symbol warnings when he
links (on OpenVMS).

From some of the previous notes, I see that fcntl has not been implemented
on OpenVMS.  I'm guessing that the same holds for the msg... routines.
I did check the rtl reference manual, and didn't seen any mention of
them.

So, my questions are:  How can he link these into his image?  Is there a
posix library that he can link against, or some macro he can define?
Will he have to link from the Posix shell?  If so, how does he
link?  Also, I'm assuming that even if there is a way to get this to
link from OpenVMS, the resultant image will not run on OpenVMS.  Is
this correct?

Thanks,

Jerry
T.RTitleUserPersonal
Name
DateLines
2132.1Posix puts the Open in OpenVMSDECCXX::RMEYERSRandy MeyersFri Mar 28 1997 17:2325
Re: .0

The Posix functions that the customer is using are the the Posix C RTL.
The Posix C RTL is a set of shareable images that you can link against
as an alternative the the DEC C RTL shared images.

Specifically, the functions you list in your note are in the Posix RTL,
but some of the names seem to be slightly different:

	Name in note	Posix Name
	------------	----------
	msgreceive()	msgrcv()
	msgsend()	msgsnd()

If you have the VMS Documentation CDs, you will find the Posix docs
under a "Bookshelf" named "POSIX for OpenVMS".  The manual "POSIX for
OpenVMS Reference Manual: Callable Interface" describes the functions
available.  You'll probably also be interested in "POSIX for OpenVMS:
Guide to Programming."

Normally, Posix programs are developed under the Posix shell and compiled
using the c89 command.  The c89 command is really just a driver that runs
DEC C with lots of specialized command line qualifiers to compile the
program using the Posix headers and the use /PREFIX_LIBRARY_ENTRIES
table from the Posix RTL instead of the DEC C RTL.
2132.2I don't think you can use posix$rtl outside of POSIXHNDYMN::MCCARTHYA Quinn Martin ProductionFri Mar 28 1997 17:4310
They will not only have to link but also run within POSIX if using the POSIX 
RTL.

Having "developed in POSIX" to produce something designed to run outside of
POSIX - I do not recommend it.

The next question is what functionality are they looking for out of the 
routines (some simply don't map to OpenVMS functions).

bjm
2132.3ThanksCSC32::J_HENSONDon't get even, get ahead!Mon Mar 31 1997 10:333
Thanks,

Jerry