James G. Downward KMS Fusion, Inc. PO BOX 1567 Ann Arbor, Mich. 48104 (313)-769-8500 [KMSKIT.VAXSUBS] 30-May-1984 This directory contains useful subroutines which we use for migrating RSX applications to VMS. Our goal is to be able to run identical source code on both machines. The modules in VAXSUBS.FOR try and emulate (correctly) the RSX subroutines in native mode. Use of these subroutines has drastically reduced conversion work from RSX to VMS. Eventually, we hope to be able to emulate all reasonable RSX subroutine calls in VMS native mode subroutines. The subroutines in VAXSUBS.FOR have been extensively used. VAXSUBS.FOR now has all support routines including the new support routines for the SEND, REQUEST, RECEIVE, SUSPEND, and RESUME directives. I think these latter work, but the testing has not been as extensive as the other modules. This release includes "full" support for RSX-like SEND, REQUEST, and RECEIVE (or RECEIVE DATA OR EXIT) directives. To use these directives, you will first have to "install" the task via RSXINSTAL. There is considerable discussion in the subroutine code as to what it means under VMS to have a task RSX-INSTALLED. Note "installing" a task RSX-Style, requires privileges. One must be able to create permanent mailboxes and enter system wide logical names. Otherwise, all should proceed very similarly as on RSX. There are a few "gotchas" (can not receive data from specified task -- for now) but generally it seems like a workable emulation. Event flag support has increased. Both local (VMS Process local) and Group Global (VMS Process Global) event flags are allowed and map correctly dispite the 32 flag gap. Likewise, SUSPEND/RESUME and WAITFR/STORFR seem to work. Again, remember that the name of the "task" to be suspended/resumed is taken from the process (subprocess) name, and is limited to 6 characters (just like RSX). ARGCNT.MAR and GETADR.MAR are used to let a Fortran subroutine know how many parameters have been passed to it or whether an optional parameter has been omitted. Very, very useful routines for writing bomb proof subroutines. QUADMATH.MAR is borowed from a past DECUS tape and a routine was added to complete the math functions. IESC is a real goodie. It allows a running program to check to see if the user has typed anything on the keyboard and if so take appropriate action. I think you will like it. We use it all the time for controling real time interactive displays from the keyboard. The compilation specific requirements for each routine are handled with a OPTIONS statement before each subroutine, so to compile the package, a simple FOR VAXSUBS should suffice. Note, that integers in the subroutine calls are assumed to be I*2 (just as RSX does). If you send the routines I*4 data, expect trouble and you will not be disappointed. 28-Sept-1984 I apparently inadvertantly left off IADDR.Mar from previous distributions. Sorry, here it is.