The FITSIO package consists of about 30000 lines of Fortran source code contained in about 350 subroutines. The large majority of subroutines are written in strict Fortran-77 (except for the occasional use of INTEGER*2 variables) and are contained in the file named fitsio.f. These subroutines can be compiled and run on any machine that has a Fortran-77 compiler. A second file, called fitsfort.f, contains additional general subroutines that are used in all cases except for the IRAF/SPP version (which does not use Fortran read and write statements).
To complete the FITSIO library, an additional set of machine-specific subroutines must be added. These subroutines allow for compiler-specific differences in the file OPEN statement, the subroutine to determine the current date, and a few other non-portable aspects of Fortran-77.
Recently fitsio has been ported to be compilant with Fortran-90 compilers. The fitsf90.f source file is intended to be used with any Fortran-90 compiler, but it has only been tested on few F90 compilers.
The build scripts included in the FITSIO release will automatically include the correct machine-specific Fortran-77 source file, but for reference, the following table shows which file should be used on various machines:
PLATFORM SOURCE FILE -------- ----------- All Fortran-90 compilers fitsf90.f SUN, HP, IBM AIX workstations fitssun.f DEC Ultrix, DEC Alphas OSF/1, SGI, NeXT(Oasys) fitsdec.f NeXT (with Absoft Fortran) fitsnxab.f Linux UNIX operating system on IBM PCs fitslinx.f VAX/VMS (also need vmsieeed.mar) fitsvax.f DEC Alpha with OpenVMS fitsalphavms.f Cray supercomputers fitscray.f Macintosh PCs + Absoft Fortran fitsmac.f Macintosh PCs + Language Systems Fortran fitsmacls.f
Note that IBM mainframe computers and some older compilers for IBM PC clones are no longer supported by this version of FITSIO. The previous 4.14 version of FITSIO may still be used on these platforms. The fitsf90.f file should work with most newer Fortran-90 compilers on IBM PCs.
A version of FITSIO is also available which runs in the IRAF environment and provides a set of SPP callable interface routines. See the later section of this guide for more information on this IRAF version.