  VAX C, DEC C, Compaq C, and Y2K? 
 The Question is:
 
 
In a previous Wizard question (wiz_1192) the wizard said
 
&gt;&gt; Both DEC C and VAX C can coexist on the same OpenVMS VAX system.
&gt;&gt; The DEC C and VAX C run-time libraries (RTLs) are covered by the OpenVMS
&gt;&gt; Y2K readiness reviews.  The OpenVMS status covers the RTLs.
 
In addition on the FAQ page ...
 
&gt;&gt; What happens with the C tm_year field in the year 2000?
&gt;&gt; The localtime() function and various other functions maintain the number
of years since
&gt;&gt; 1900 in the "struct tm" structure member tm_year. This field will contain
a value of 100
&gt;&gt; in the year 2000, and the yearly incrementation is expected to continue.
&gt;&gt; The VAX C "two digit" documentation for this area is in error, the VAX C
Run-Time
&gt;&gt; Library (RTL) returns a three-digit year. The VAX C RTL and the other
integrated RTLs
&gt;&gt; are covered under the OpenVMS operating system Y2K evaluation. For curent
information
&gt;&gt; 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.
 
