![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: We are using VAX BASIC 3.8 and DEC BASIC 1.3, both on OpenVMS 7.2-1. I have found an ugly difference in the BASIC$STARLET.TLB include library. On the VAX all XAB records and const's are declared in $XABDEF. On Alpha $XABDEF only declares a part. The others are in $XAB...DEF, where ... is the subtype, e.g. FHC, SUM ... Is there a way to find out, at compile time, on which platform (VAX or alpha) we are like I do it in C: #ifdef __ALPHA I dumped out BASIC.EXE but did not find anything that works like: %IF %DECLARED (%IS_ALPHA) Do you have any suggestion how to solve the problem, except using a %VARIANT compilation passing the architecture type in the /VARIANT BASIC parameter? The Answer is : Use the Freeware SDL tool to generate your own definitions on OpenVMS VAX. BASIC on OpenVMS Alpha was changed to use SDL to generate its definitions, and this means there will be a variety of smaller XAB module definitions. As an alternate to conditional compilation or conditional DCL build scripts, you can use SDL/NOPARSE on modules from the definitions in STARLETSD.TLB, and create your own definition modules for OpenVMS VAX: $ lib sys$share:starletsd.tlb/extr=RMSUSR/out=x.x $ sdl/nopars/lang=basic x.x
|