![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: In a previous Wizard question (wiz_1192) the wizard said >> Both DEC C and VAX C can coexist on the same OpenVMS VAX system. >> The DEC C and VAX C run-time libraries (RTLs) are covered by the OpenVMS >> Y2K readiness reviews. The OpenVMS status covers the RTLs. In addition on the FAQ page ... >> What happens with the C tm_year field in the year 2000? >> The localtime() function and various other functions maintain the number of years since >> 1900 in the "struct tm" structure member tm_year. This field will contain a value of 100 >> in the year 2000, and the yearly incrementation is expected to continue. >> The VAX C "two digit" documentation for this area is in error, the VAX C Run-Time >> Library (RTL) returns a three-digit year. The VAX C RTL and the other integrated RTLs >> are covered under the OpenVMS operating system Y2K evaluation. For curent information >> on the Y2K status of OpenVMS language compilers and layered products, see section Y2K1. Having searched various pages within Digital, having been directed by ComPaq to Sykes, (the offical Y2K statement site), and having looked at various FAQ's I can still not find an answer to my question in respect of the VAX-C compiler and Y2K. The offical statement is that DEC-C 5.5 is the only supported C compiler for the VAX, and even though another wizard has recommended (wiz_1192) upgrading to DEC-C ..... Are there any known issues with staying with the VAX-C compiler, we use V3.2-044, but could upgrade to the most recent VAX-C version if there is one, on a VAX running VMS 7.2 ... I accept that the VAX-C compiler is now retired, but if there are no known problems, i see little point in switching, indeed our VAX's will be replaced with Alpha's next year. thank you fred The Answer is : The Compaq C and DEC C compilers V5.5 and later are Y2K ready. The VAX C compiler is not considered Y2K ready. The VAX C run-time is considered Y2K ready. There are no plans to perform a Y2K evaluation of the VAX C compiler. If you need or want to use it, the OpenVMS Wizard would suggest performing the Y2K readiness testing procedures to see that it will work for your environment, and that it will not encounter any catestrophic failures in your environment. As of this writing, Compaq C V6.0 is the current Compaq C (formerly known as DEC C) compiler for OpenVMS VAX systems, and it contains a very good compatibility mode for compiling VAX C source code: $ CC /DECC /STANDARD=VAXC /PREFIX=ALL You will also want to consider using one or more of the following qualifiers, depending on what the code is doing: /ASSUME=WRITABLE_STRING_LITERALS /SHARE_GLOBAL /EXTERN_MODE=COMMON_BLOCK If sharing binary data between OpenVMS VAX and OpenVMS Alpha systems, you will want to be aware of the pragma for member alignment -- proper member alignment can provide better performance. Compaq C on OpenVMS VAX uses byte alignment, while Compaq C on OpenVMS Alpha uses natural alignment. This difference means that shared binary data (eg: structures used for network packets or RMS records) must be padded to natural alignment using Compaq C on OpenVMS VAX, or the natural member alignment padding must be disabled when using Compaq C on OpenVMS Alpha. The /[NO]MEMBER_ALIGNMENT qualifier is also available, but the OpenVMS Wizard recommends it be avoided whenever possible due to the global effects on application performance that disabling the alignment can have. Once you have the code built using Compaq C, you will want to consider moving to one of the ANSI C language standard profiles available in the compiler. This move is to your advantage, as the compiler is better at spotting questionable constructs and problems. Compaq C is the supported compiler for OpenVMS VAX and OpenVMS Alpha, and recent versions (V5.5 and higher) of Compaq C (DEC C) are considered Y2K ready.
|