.TI F77/STYLE "Sep. 4, 1985"
Programming Style: fsplit; include and parameter statements

This help file discusses several elements of programming style that
make Fortran programs easier to read, debug, and maintain.

First it is best to keep each program in a separate directory with each
subprogram in a separate file.  This minimizes compilation time as
you will only have to recompile those subroutines you have changed.
You can use the 'fsplit' utility to split up a source file with many
program units into separate files for each program unit, e.g.:

	fsplit bigsource

Put each common block declaration in a separate file and use the 
\&'include' statement to include the declaration in the source stream.
For example, if you have a common block 'c2' declared in several
program units as:

.nf
	     ...
	integer cnt2, ivec2(20), tot
	common /c2/ cnt2, ivec2, tot
	     ...
.fi

replace the declarations in the program units by:

.nf
	     ...
	include 'c2.h'
	     ...
.fi

and create a two line file 'c2.h':

.nf
	integer cnt2, ivec2(20), tot
	common /c2/ cnt2, ivec2, tot
.fi

This eliminates problems of different common block declarations in different
program units, and makes it easier to maintain the program.  Use the 'make'
utility to keep updating the object files if you change a common block
(see "help f77 make").

Use parameter statements to define symbolic constants that may be used in
dimension statements and arithmetic expressions.  You may say:

.nf
	parameter   (NROWS=20, NCOLS=30, LENBUF=800)
	parameter   (PI=3.1415926535)
	real	    a(NROWS,NCOLS), b(NROWS,NCOLS)
	character   buffer(LENBUF)
			...
		    do 100 i = 1,NROWS
			do  90 j = 1,NCOLS
			   a(i,j) = b(i,j)*PI
			...
.fi

instead of:

.nf
	real	    a(20,30),b(20,30)
	character   buffer(800)
			...
		    do 100 i = 1,20
			do  90 j = 1,30
			   a(i,j) = b(i,j)*3.1415926535
			...
.fi
			
.LP
Parameters are useful for dimensions, and limits.  This way, you
don't have to remember the meaning of each number when you decide to
change the numerical values of the dimensions.  Parameters can also be
used for constants (e.g. 'PI' above).  Although the parameters are written
in upper case letters in this example, remember that f77 normally does
not distinguish case so that 'PI' and 'pi' are the same.
Parameter statements that are repeated in several subprogram units
should be put into include files.
