From: ftp-bimas.cit.nih.gov                       Last Mod: October 9, 1997

          Porting FASTLINK to VAX/VMS

This document describes how to get the FASTLINK (v4.0P and beyond)
package running under VAX/VMS with the DEC C compiler or the VAX C
compiler. It should also be applicable to AXP/VMS.  You have two
choices: either use the compilation script prepared by Steve Roberts
for DEC C with troubleshooting by Anita Destefano, or use the MMS
script prepared by Kimmo Kallio, Don Plugge, Shriram Krishnamurthi and
Alejandro Schaffer.

|*| Instructions for DEC C:
    ----------------------
AUTHOR
------
Steve Roberts, 
Paterson Institute for Cancer Research, Manchester, M20 9BX, U.K.
bmcsar@picr.cr.man.ac.uk.
22-Sep-1994

Slight modifications to explain where to find things in the FASTLINK
distribution by Alejandro A. Schaffer.

PREREQUISITES
-------------
Use DEC C. DEC C is the latest C compiler distributed by Digital for
VMS. Unfortunately it costs money, but the upgrade from VMS C to DEC C is
"free" to those with valid support contracts.

DISCLAIMER
----------
The programs all compile and link successfully under VAX/VMS v5.5-2 with
DEC C v4.0.  The programs used by my users all work for their data. However
not all the programs have been thoroughly tested, and those that have only
as far as my users require.

SETUP
-----
Copy the file decc_checkpointdefs.h found in the fastlink subdirectory
4.0P/vaxvms in place of checkpointdefs.h.

Copy the files FASTLINK_BUILD.VMS and FASTLINK_START.VMS to that
directory as well, and change to that directory.

The place where the standard .h definition files for C are found seems to
vary from VAX to VAX. It is likely that you need to change the first few
lines of commondefs.h.

In particular, the section:

  /* VMS: MAY NEED TO CHANGE --
     possibly uncomment the following 2 lines */
  /* #include unixio */
  /* #include file */

  #include <stdio.h>

  /* Shriram: begin */
  #include <errno.h>
  #include <math.h>

  /* VMS: MAY NEED TO CHANGE --
     possibly remove "sys/" from the next 3 lines */
  #include <sys/stat.h>
  #include <sys/time.h>
  #include <sys/types.h>
  /* Shriram: end */

  #if !defined(vms)
  #include <malloc.h>
  #endif
  #include <varargs.h>

  /* VMS: MAY NEED TO CHANGE --
    comment out the any of the next 3 lines for files your system can't find */
  #include <stdlib.h>
  #include <unistd.h>
  #include <fcntl.h>

includes 3 possible places you might need to edit (marked "VMS: MAY NEED TO
CHANGE").  If you have trouble compiling as-is, this is the first place to
look.  You may consult with your system administrator for help on how to
make this modification for your VMS machine.

COMPILING
---------
The VMS command file FASTLINK_BUILD.VMS will compile and link all the
source code to produce the 10 executables. The DEC C compiler is fussy and
produces a small heap of warnings and informational messages. As far as I
can tell, these are all perfectly ignorable!

It should be possible to use the distributed makefile, with a few minor
changes if you have a unix-compatible make facility. There are a number of
make facilities on the net, and the VMS POSIX interface also provides
one. I have not yet got this approach to work, but if you have any of these
facilities working then give it a go. VMS POSIX has a "feature" that means
you cannot give the object file produced by the C compiler a name different
from the input source file - so the supplied makefile will need some
modification.  You will need to add references to VMS.C and its object file
in the appropriate places.

RUNNING
-------
The VMS command file FASTLINK_START.VMS will define symbols for all the
executables. The line defining the source code directory will need modifying
for your local installation. This file needs to be run before using the
programs. We define a global command 

  FASTLINK :== @fastlink_dir:FASTLINK_START.VMS

in Sylogin.com, then our users just need to type the command FASTLINK to set up
their environment to run the programs.

The programs are run by simply typing the program names.

The datafiles (Datafile, pedfile, etc.) all require a .DAT filetype
(datafile.dat, pedfile,dat, etc.)


CHECKPOINTING
-------------
With the changes outlined above the checkpointing code will run and not cause
any problems. However I am not sure yet that the checkpointing will allow you
to recover from a crash under VMS. I am still working on this! 

OUTSTANDING ISSUES
------------------
Checkpointing has not been tested (see above).

The CKPT program will not work


|*| Instructions for MMS:
    ----------------------
AUTHOR
------
Alejandro Schaffer with lots of help from Shriram Krishnamurthi and
Don Plugge.


PREREQUISITES
-------------
Must have MMS compilation utility installed.

DISCLAIMER
----------
Testing has been somewhat limited and I know very little about VMS.

SETUP for VAXC
-------------
Before compiling you must run the commands:

  $DEFINE LNK$LIBRARY SYS$LIBRARY:VAXCRTLG
  $DEFINE LNK$LIBRARY_1 SYS$LIBRARY:VAXCRTL

It may be safe to put these in your LOGIN.COM, but check with your system
administrator before doing so.

Copy the file vaxc_checkpointdefs.h found in the fastlink subdirectory
4.0P/vaxvms in place of checkpointdefs.h.

The place where the standard .h definition files for C are found seems to
vary from VAX to VAX. It is likely that you need to change the first few
lines of commondefs.h.

In particular, the section:

  /* VMS: MAY NEED TO CHANGE --
     possibly uncomment the following 2 lines */
  /* #include unixio */
  /* #include file */

  #include <stdio.h>

  /* Shriram: begin */
  #include <errno.h>
  #include <math.h>

  /* VMS: MAY NEED TO CHANGE --
     possibly remove "sys/" from the next 3 lines */
  #include <sys/stat.h>
  #include <sys/time.h>
  #include <sys/types.h>
  /* Shriram: end */

  #if !defined(vms)
  #include <malloc.h>
  #endif
  #include <varargs.h>

  /* VMS: MAY NEED TO CHANGE --
    comment out the any of the next 3 lines for files your system can't find */
  #include <stdlib.h>
  #include <unistd.h>
  #include <fcntl.h>

includes 3 possible places you might need to edit (marked "VMS: MAY NEED TO
CHANGE").  If you have trouble compiling as-is, this is the first place to
look.  You may consult with your system administrator for help on how to
make this modification for your VMS machine.


COMPILING
---------
Copy the files OLD.MMS to the directory where the source code is:

Run:

 MMS/DESCRIP=OLD.MMS fastlink
for fast versions

 MMS/DESCRIP=OLD.MMS slowfastlink
for slow versions

 MMS/DESCRIP=OLD.MMS unknown
for UNKNOWN

 MMS/DESCRIP=OLD.MMS clean
to clean up

SETUP for DEC C
-------------
Similar to VAX C, but use  decc_checkpointdefs.h instead of
vaxc_checkpointdefs.h to replace checkpointdefs.h and
use NEW.MMS instead of OLD.MMS.

CHECKPOINTING
-------------
Crash recovery works for MLINK and LINKMAP. Crash recovery does
not work for ILINK and LODSCORE and has been disabled for those two
programs. The checkpointing leaves many files around because MMS
has version numbers and does not overwrite the old checkpoint
with the new. Use PURGE frequently to clean up.

OUTSTANDING ISSUES
------------------
Checkpointing does not yet work for ILINK and LODSCORE.

