diff options
Diffstat (limited to 'README_d/README.VMS')
-rw-r--r-- | README_d/README.VMS | 88 |
1 files changed, 80 insertions, 8 deletions
diff --git a/README_d/README.VMS b/README_d/README.VMS index b47cb0f7..3689ad83 100644 --- a/README_d/README.VMS +++ b/README_d/README.VMS @@ -6,21 +6,71 @@ CC and LINK commands, and there's also a Makefile for use with the MMS utility. From the source directory, use either |$ @[.VMS]VMSBUILD.COM or - |$ MMS/DECRIPTION=[.VMS]DECSRIP.MMS GAWK + |$ MMS/DESCRIPTION=[.VMS]DESCRIP.MMS gawk +or + |$ MMK/DESCRIPTION=[.VMS]DESCRIP.MMS gawk + +Note that on IA64 and Alpha the case of the target may be important. +MMS has had problems on ODS-5 volumes. MMK does not have these issues. +MMK is available free from https://github.com/endlesssoftware/mmk. +The most recent builds of gawk on VMS used MMK. DEC C -- use either vmsbuild.com or descrip.mms as is. + DEC C is also known as Compaq C and HP C. + VAX C -- use `@vmsbuild VAXC' or `MMS/MACRO=("VAXC")'. On a system with both VAX C and DEC C installed where DEC C is the default, use `MMS/MACRO=("VAXC","CC=CC/VAXC")' for the MMS variant; for the vmsbuild.com variant, any need for `/VAXC' will be detected automatically. + * IMPORTANT NOTE * VAX C should not be used on VAX/VMS 5.5-2 and + later. Use DEC C instead. + GNU C -- use `@vmsbuild GNUC' or `MMS/MACRO=("GNUC")'. On a system where the GCC command is not already defined, use either `@vmsbuild GNUC DO_GNUC_SETUP' or `MMS/MACRO=("GNUC","DO_GNUC_SETUP")'. - Tested under Alpha/VMS V7.1 using DEC C V6.4. GAWK should work -without modifications for VMS V4.6 and up. +Most recent builds are using: + OpenVMS VAX 7.3 using DEC C 6.4 + OpenVMS Alpha 8.3 using HP C V 7.3 + OpenVMS Alpha 8.4 using HP C V 7.3 + OpenVMS IA64 8.4 using HP C V 7.3 + +GAWK was originally ported for VMS V4.6 and up. It has not been tested +with a release that old for some time. + +Compiling dynamic extensions on VMS: + +Dynamic extensions need to be compiled with the same compiler options for +floating point, pointer size, and symbol name handling as gawk. +Alpha and Itanium should use IEEE floating point. The pointer size is 32 bits, +and the symbol name handling is to be exact case with CRC shortening for +symbols longer than 32 bits. + +Alpha and Itanium: + +/name=(as_is,short) +/float=ieee/ieee_mode=denorm_results + +VAX: + +/name=(as_is,short) + +Compile time macros needed to be defined before the first VMS supplied +header file is included. + +#if (__CRTL_VER >= 70200000) && !defined (__VAX) +#define _LARGEFILE 1 +#endif + +#ifndef __VAX +#ifdef __CRTL_VER +#if __CRTL_VER >= 80200000 +#define _USE_STD_STAT 1 +#endif +#endif +#endif Installing GAWK on VMS: @@ -33,6 +83,10 @@ That symbol should be placed in the user's login.com or in the system- wide sylogin.com procedure so that it will be defined every time the user logs on. +If your gawk was installed by a PCSI kit into the GNV$GNU: directory tree, +the program will be known as GNV$GNU:[bin]gnv$gawk.exe and the help file +will be GNV$GNU:[vms_help]gawk.hlp. + Optionally, the help entry can be loaded into a VMS help library. |$ LIBRARY/HELP SYS$HELP:HELPLIB [.VMS]GAWK.HLP (You may want to substitute a site-specific help library rather than @@ -79,9 +133,27 @@ separated list of directory specifications. When defining it, the value should be quoted so that it retains a single translation, not a multi-translation RMS searchlist. ------------------------------- -Thu Jun 18 05:22:10 IDT 2009 -============================ + The exit status from Gawk is encoded in the the VMS $status exit +value so that the severity bits are set as expected and the original +Gawk exit value can be extracted. + +To extract the actual gawk exit code from the VMS status use: + unix_status = (vms_status .and. &x7f8) / 8 + +The exit value is encoded to comply with VMS coding standards and +will have the C_FACILITY_NO of 0x350000 with the constant 0xA000 +added to the number shifted over by 3 bits to make room for the +severity codes. + +The Gawk exit value of 1 will result in the VMS status having the +ERROR severity status set. The Gawk exit value of 2 will result in +the FATAL severity status set. All other Gawk exit values will have +the Success severity status set. + +This change was needed to provide all Gawk exit values to VMS programs and +for compatibilty with programs written in C and the GNV environment. -On OpenVMS V7.3 (Alpha) the "manyfiles" test is known to fail. The reason -is not (yet) known. +Older versions of Gawk incorrectly mostly passed through the Gawk +status values instead of encoding them. DCL scripts that were checking +the severity values will probably not need changing. DCL scripts that +were checking the exact exit status will need an update. |