IBM "Classic" XLC C++ V2R5

The fundamental problem I am trying to solve is creating bi-modal source code 
that will support UNIX dates beyond 2038; or alternatively will build under 
z/OS V2R2.

I have the usual sort of #if/#else/#endif structure based on a macro named 
Y2038_LEV2R3. I want to set the macro in an options file because that is where 
the LE version is set, so I can group the two things together, something like

DEF (Y2038_LEV2R3=)     
TARG(LE,zOSV2R3)        

Questions:

1. I'm kind of nervous -- deservedly it turns out -- whether the macro logic is 
working as intended. Is there a way to put a compile time message into the 
code? I would like something that worked like #error but that generated an 
informational message rather than an error. I would even settle for a warning. 
I don't see anything like that. Am I missing something?

2. It turns out the macro logic is *not* working. I have the lines above in an 
options file (which I know is being processed) and the following C++ code:
#ifdef Y2038_LEV2R3
        // Y2038 and LEV2R3+
        timeb64 now, timesup;
        ftime64(&now);
#else
        // No Y2038 and LEV2R1+
#error Y2038_LEVR2R3 not happening!
        timeb now, timesup;
        ftime(&now);
#endif

and sure enough, the error message is being output by the compiler. 
CCN5859 (S) #error directive: Y2038_LEVR2R3 not happening!.   

What am I doing wrong?

Thanks,
Charles

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to