Annotation of 43BSDTahoe/new/help/src/f77/style, revision 1.1.1.1

1.1       root        1: .TI F77/STYLE "Sep. 4, 1985"
                      2: Programming Style: fsplit; include and parameter statements
                      3: 
                      4: This help file discusses several elements of programming style that
                      5: make Fortran programs easier to read, debug, and maintain.
                      6: 
                      7: First it is best to keep each program in a separate directory with each
                      8: subprogram in a separate file.  This minimizes compilation time as
                      9: you will only have to recompile those subroutines you have changed.
                     10: You can use the 'fsplit' utility to split up a source file with many
                     11: program units into separate files for each program unit, e.g.:
                     12: 
                     13:        fsplit bigsource
                     14: 
                     15: Put each common block declaration in a separate file and use the 
                     16: \&'include' statement to include the declaration in the source stream.
                     17: For example, if you have a common block 'c2' declared in several
                     18: program units as:
                     19: 
                     20: .nf
                     21:             ...
                     22:        integer cnt2, ivec2(20), tot
                     23:        common /c2/ cnt2, ivec2, tot
                     24:             ...
                     25: .fi
                     26: 
                     27: replace the declarations in the program units by:
                     28: 
                     29: .nf
                     30:             ...
                     31:        include 'c2.h'
                     32:             ...
                     33: .fi
                     34: 
                     35: and create a two line file 'c2.h':
                     36: 
                     37: .nf
                     38:        integer cnt2, ivec2(20), tot
                     39:        common /c2/ cnt2, ivec2, tot
                     40: .fi
                     41: 
                     42: This eliminates problems of different common block declarations in different
                     43: program units, and makes it easier to maintain the program.  Use the 'make'
                     44: utility to keep updating the object files if you change a common block
                     45: (see "help f77 make").
                     46: 
                     47: Use parameter statements to define symbolic constants that may be used in
                     48: dimension statements and arithmetic expressions.  You may say:
                     49: 
                     50: .nf
                     51:        parameter   (NROWS=20, NCOLS=30, LENBUF=800)
                     52:        parameter   (PI=3.1415926535)
                     53:        real        a(NROWS,NCOLS), b(NROWS,NCOLS)
                     54:        character   buffer(LENBUF)
                     55:                        ...
                     56:                    do 100 i = 1,NROWS
                     57:                        do  90 j = 1,NCOLS
                     58:                           a(i,j) = b(i,j)*PI
                     59:                        ...
                     60: .fi
                     61: 
                     62: instead of:
                     63: 
                     64: .nf
                     65:        real        a(20,30),b(20,30)
                     66:        character   buffer(800)
                     67:                        ...
                     68:                    do 100 i = 1,20
                     69:                        do  90 j = 1,30
                     70:                           a(i,j) = b(i,j)*3.1415926535
                     71:                        ...
                     72: .fi
                     73:                        
                     74: .LP
                     75: Parameters are useful for dimensions, and limits.  This way, you
                     76: don't have to remember the meaning of each number when you decide to
                     77: change the numerical values of the dimensions.  Parameters can also be
                     78: used for constants (e.g. 'PI' above).  Although the parameters are written
                     79: in upper case letters in this example, remember that f77 normally does
                     80: not distinguish case so that 'PI' and 'pi' are the same.
                     81: Parameter statements that are repeated in several subprogram units
                     82: should be put into include files.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.