- Community Home
- >
- Servers and Operating Systems
- >
- Operating System - OpenVMS
- >
- Re: Building C programs for older versions of VMS
-
- Forums
-
- Advancing Life & Work
- Advantage EX
- Alliances
- Around the Storage Block
- HPE Ezmeral: Uncut
- OEM Solutions
- Servers & Systems: The Right Compute
- Tech Insights
- The Cloud Experience Everywhere
- HPE Blog, Austria, Germany & Switzerland
- Blog HPE, France
- HPE Blog, Italy
- HPE Blog, Japan
- HPE Blog, Middle East
- HPE Blog, Russia
- HPE Blog, Saudi Arabia
- HPE Blog, South Africa
- HPE Blog, UK & Ireland
-
Blogs
- Advancing Life & Work
- Advantage EX
- Alliances
- Around the Storage Block
- HPE Blog, Latin America
- HPE Blog, Middle East
- HPE Blog, Saudi Arabia
- HPE Blog, South Africa
- HPE Blog, UK & Ireland
- HPE Ezmeral: Uncut
- OEM Solutions
- Servers & Systems: The Right Compute
- Tech Insights
- The Cloud Experience Everywhere
-
Information
- Community
- Welcome
- Getting Started
- FAQ
- Ranking Overview
- Rules of Participation
- Tips and Tricks
- Resources
- Announcements
- Email us
- Feedback
- Information Libraries
- Integrated Systems
- Networking
- Servers
- Storage
- Other HPE Sites
- Support Center
- Aruba Airheads Community
- Enterprise.nxt
- HPE Dev Community
- Cloud28+ Community
- Marketplace
-
Forums
-
Blogs
-
Information
-
English
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
06-19-2011 11:52 PM
06-19-2011 11:52 PM
My primary software development system is a cluster which has an Alpha running VMS 8.3 and an Integrity server running VMS8.3.1H1. I am developing some software which needs to be supported as far back as Alpha VMS V6.1.
According to the C Run-Time Library reference manual I need to do the following:
$ dir = "D2:[VMSLIB.ALPHA.V61]"
$ DEFINE DECC$SHR 'dir'DECC$SHR.EXE
$ CC /DEFINE="__VMS_VER=60100022" MYPROG
$ DEFINE ALPHA$LIBRARY 'dir'
$ LINK MYPROG
The D2:[VMSLIB.ALPHA.V61] directory contains a copy of the SYS$LIBRARY directory from a VMS 6.1 system disk.
The problem is that the C compiler appears to require a current DECC$SHR to work: when I run the compiler after defining DECC$SHR as above I get the error
%IMGACT-F-SYMVECMIS, shareable image symbol vector table mismatch
-IMGACT-F-FIXUPERR, error when DECC$COMPILER references DECC$SHR
The C Run-Time Library reference manual says that the definition of DECC$SHR is necessary because the compiler "uses a table from DECC$SHR to perform routine name prefixing", but is this true?
(I think the above has worked in the past, several years ago, so perhaps recent versions of the compiler have been linked differently to how they used to be.)
Thanks,
Jeremy Begg
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
06-20-2011 02:56 AM
06-20-2011 02:56 AM
Re: Building C programs for older versions of VMS
Dan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
06-24-2011 12:48 PM - edited 06-24-2011 12:49 PM
06-24-2011 12:48 PM - edited 06-24-2011 12:49 PM
Re: Building C programs for older versions of VMS
1) You'll want to undefine the DECC$SHR before the LINK command. You want the linker to use the system shareables when activativing (via SYS$SHARE).
2) For the compile, the reason for the DEFINE is for the compiler to figure out the right prefix list buried in the image.
Try pointing to the saved DECC$CRTLMAP.EXE instead.
$ DEFINE DECC$CRTLMAP 'dir'DECC$CRTLMAP.EXE
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
06-26-2011 03:46 PM
06-26-2011 03:46 PM
Re: Building C programs for older versions of VMS
Just from glancing at the CRTL headers, I would think you would need __CRTL_VER as well as __VMS_VER defined, though perhaps the compiler defines the former in terms of the latter automatically.
As far as finding the right prefixes, perhaps CC/PREFIX=RTL="name" would do the trick?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
06-27-2011 02:31 PM
06-27-2011 02:31 PM
SolutionJeremy
(for completeness I'm posting the response I mailed you while the fora were off line - with the finest technology on the planet, how come it took HP a week to transfer a bit of text?? and how come something as basic and fundamental as PASTE no longer works??? the only way I've found so far is via a dialog box)
No reason you shouldn't be able to do this on any version. Try it this way around: $ CC /DEFINE="__VMS_VER=60100022" MYPROG $ V61dir = "D2:[VMSLIB.ALPHA.V61]" $ DEFINE/USER DECC$SHR 'V61dir'DECC$SHR.EXE $ DEFINE/USER ALPHA$LIBRARY 'V61dir' $ LINK MYPROG I wouldn't expect the C compiler itself to work with the older RTL. You only need the redirection while you're linking (or running). The linker doesn't reference DECC$SHR, so there shouldn't be any version mismatches. I've also used /USER so it will automatically deassign after the LINK. Same for ALPHA$LIBRARY. I've also changed the symbol to "V61dir" as I don't think it's a good idea to define "DIR" as anything other than a DIRECTORY command.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
07-01-2011 04:20 PM
07-01-2011 04:20 PM
Re: Building C programs for older versions of VMS
Hewlett Packard Enterprise International
- Communities
- HPE Blogs and Forum
© Copyright 2021 Hewlett Packard Enterprise Development LP