Annotation of 43BSDTahoe/new/help/src/f77/tutorial, revision 1.1

1.1     ! root        1: .TI F77/TUTORIAL "Sep. 4, 1985"
        !             2: f77 Fortran Compiler Tutorial for New Users
        !             3: 
        !             4: This help file covers in detail the basics of using Fortran on UNIX;
        !             5: this is an expanded version of the "help f77 intro" and "help
        !             6: f77 options".  To learn about UNIX, read "Communicating with UNIX"
        !             7: and "Edit: a Tutorial" (see "help f77 printed_doc").  This tutorial
        !             8: assumes that you know (or are learning) the Fortran language.
        !             9: If you already know the basics, see "help f77 intro" and "help f77 options"
        !            10: which cover more information but with less explanation.
        !            11: 
        !            12: An Example:
        !            13: 
        !            14: Here is how to write, compile, and execute a simple Fortran program.
        !            15: Use the editor to create a file called 'hello.f' that contains the
        !            16: three lines:
        !            17: 
        !            18: .nf
        !            19:                print 100
        !            20:            100 format('hello, world.')
        !            21:                end
        !            22: .fi
        !            23: 
        !            24: To start statements on or after column 7, you can either use spaces or
        !            25: a tab character (control-I).  After exiting the editor, when you have
        !            26: the shell prompt again, type the command:
        !            27: 
        !            28:        f77 hello.f
        !            29: 
        !            30: This invokes 'f77', the UNIX Fortran compiler.  If you entered the file
        !            31: correctly, the system will respond with:
        !            32: 
        !            33: .nf
        !            34:        hello.f:
        !            35:           MAIN:
        !            36: .fi
        !            37: 
        !            38: If there are other messages, check that you entered the file 'hello.f'
        !            39: correctly.
        !            40: Two new files will have been created in your
        !            41: directory: 'hello.o', and 'a.out'.  Type:
        !            42: 
        !            43:        ls
        !            44: 
        !            45: to list your files and verify that 'hello.o' and 'a.out' have
        !            46: been created.  To run the program, type:
        !            47: 
        !            48:        a.out
        !            49: 
        !            50: Your program will respond by printing the message "hello, world."
        !            51: 
        !            52: Terminology and Background:
        !            53: 
        !            54: The name "Fortran" stands for FORmula TRANslation.  A Fortran compiler
        !            55: is a special computer program that translates, or "compiles", programs
        !            56: written in the Fortran source language into machine
        !            57: instructions (in binary code) that the computer hardware can read and
        !            58: execute.
        !            59: 
        !            60: The files you create containing Fortran statements are known as
        !            61: "source files" since they provide source for the compiler to act upon.
        !            62: The file 'hello.f' was the source file in the example above.  Fortran
        !            63: source files for f77 must have names that end in the two characters '.f'.
        !            64: 
        !            65: The command "f77 hello.f" in the example above invoked the f77 compiler
        !            66: on the source file.  If the compiler detects any errors in the source
        !            67: file it will print messages to that effect.  If it finds no errors (as
        !            68: in this case), the compiler creates an "object file", 'hello.o'.  The
        !            69: object file contains machine readable instructions corresponding to the
        !            70: Fortran instructions in the source file.  It is not human readable.
        !            71: (You could see this by typing "cat hello.o", but it is generally a
        !            72: bad idea to use "cat" to look at an object file as it sometimes "hangs"
        !            73: the terminal).
        !            74: 
        !            75: The compiler automatically invokes another special program called the
        !            76: "loader".  The loader combines together object files for the main
        !            77: program, any subroutines or functions it might call, and various
        !            78: run-time support routines to form what is called the "executable file".
        !            79: The executable file is created with the name 'a.out'.  As you
        !            80: discovered above, one executes an executable file just as one executes
        !            81: any other UNIX command:  just type its name.
        !            82: 
        !            83: The 'hello' in the file name 'hello.f' is sometimes called the root
        !            84: part of the file name.  The '.f' is called the extension.  Object files
        !            85: created by f77 have names with the same root part as the source file
        !            86: name but with a '.o' extension.  The default name for the executable
        !            87: file is 'a.out'.
        !            88: 
        !            89: 
        !            90: A More General Example:
        !            91: 
        !            92: A Fortran source file may contain subroutines along with the main
        !            93: program.  Alternatively, subroutines may be put into files separate
        !            94: from the main program.  This is useful when a subroutine might be
        !            95: called by any one of several different programs - it allows you to
        !            96: maintain only one copy, saving computer time and money as
        !            97: you need to recompile only those subprograms that change.
        !            98: 
        !            99: Suppose that your main program is in the file 'main.f' and that it
        !           100: calls subroutines in the files 'sub1.f', 'sub2.f', and 'sub3.f'.  To
        !           101: compile and load these you would type:
        !           102: 
        !           103:        f77 main.f sub1.f sub2.f sub3.f
        !           104: 
        !           105: This command would compile each of the four source files; that is, for
        !           106: each one it would report any errors or create an object file if
        !           107: there were no errors.
        !           108: Next, the UNIX loader would be invoked by the f77 command to
        !           109: create a single executable file named 'a.out'.
        !           110: Execute this file by typing its name.
        !           111: 
        !           112: If you change a source file, you must recompile it and reload
        !           113: everything to create a new executable file that incorporates
        !           114: the changes.  On the other hand, if a source file has not been changed
        !           115: since the last time you compiled it, you can keep the corresponding
        !           116: object file and use it over and over again.  To do so, just replace the
        !           117: name of the source file in the f77 command with the name of the object
        !           118: file.  In this example, suppose that you have just edited the files 'sub1.f'
        !           119: and 'sub2.f' but 'main.f' and 'sub3.f' are unchanged
        !           120: since the previous compilation.  Then you need to recompile 'sub1.f'
        !           121: and 'sub2.f' but not the other two source files.  To recompile and
        !           122: reload you would type:
        !           123: 
        !           124:        f77 main.o sub1.f sub2.f sub3.o
        !           125: 
        !           126: This is preferable to the previous command where all four files
        !           127: mentioned were source files, since it avoids unnecessary recompilation
        !           128: of 'main.f' and 'sub3.f'.
        !           129: 
        !           130: 
        !           131: Options:
        !           132: 
        !           133: There are many options for the f77 command, for a
        !           134: complete list, see "man 1 f77", the f77 manual page.
        !           135: 
        !           136: To compile only and not load, use the -c option.  For example type,
        !           137: 
        !           138:        f77 -c prog.f
        !           139: 
        !           140: to create 'prog.o' but not 'a.out'.  Later, you could then create
        !           141: the a.out directly from the .o file:
        !           142: 
        !           143:        f77 prog.o
        !           144: 
        !           145: The -C options directs the compiler to generate code to check that
        !           146: subscript references are legal:
        !           147: 
        !           148:        f77 -C prog.f
        !           149: 
        !           150: The -g option directs the compiler and loader to save enough
        !           151: information so that the source level debugger, dbx, can be used if the
        !           152: program does not work:
        !           153: 
        !           154:        f77 -g prog.f
        !           155: 
        !           156: While the -C option is only specified to the compiler, the -g option must
        !           157: be specified to both the compiler and loader; thus the equivalent
        !           158: commands for separately compiling and loading with -g are:
        !           159: 
        !           160: .nf
        !           161:        f77 -g -c prog.f
        !           162:        f77 -g prog.o
        !           163: .fi
        !           164: 
        !           165: The -o option directs the loader to put the executable file in a file
        !           166: other than 'a.out', e.g. to have the executable file put in 'myprog',
        !           167: type:
        !           168: 
        !           169:        f77 prog.f -o myprog
        !           170: 
        !           171: The -o option and file name may appear anywhere in the f77 command.
        !           172: The -l option specifies system libraries; e.g. to specify that
        !           173: you need subroutines from the f77 graphics interface library and
        !           174: the Tektronics 4014 library, type:
        !           175: 
        !           176:        f77 prog.f -lf77plot -l4014
        !           177: 
        !           178: Note that the names of the libraries, 'f77plot' and  '4014',
        !           179: follow immediately after the -l without a space.
        !           180: This is in contrast to the -o option, which
        !           181: has a space between the -o and the file name.  Also, libraries must be
        !           182: listed in the f77 command after the source and object file names.
        !           183: 
        !           184: Many options may be requested simultaneously, e.g.:
        !           185: 
        !           186:        f77 -C -g prog.f sub1.f sub2.o -lf77plot -l4014 -o myprog
        !           187: 
        !           188: Misc:
        !           189: 
        !           190: When developing a program, it's easiest to keep each subroutine
        !           191: in a separate file.  Because you'll be modifying each one frequently, but
        !           192: probably not all at the same time, this strategy holds
        !           193: down unnecessary recompilations.
        !           194: Name each file after the
        !           195: subroutine it contains (or the most important subroutine if it contains
        !           196: several).
        !           197: 
        !           198: If you have a file containing several subprograms, you can split each
        !           199: into a separate file by using the "fsplit" command:
        !           200: 
        !           201:        fsplit prog.f
        !           202: 
        !           203: See "man 1 fsplit" and "help f77 style" for more details.
        !           204: 
        !           205: To conserve disk space, delete files when finished with them.
        !           206: Keep object and executable files around if
        !           207: you'll be using them for a while - compilation costs money and imposes
        !           208: a heavy load on the system and unnecessary recompilation should be
        !           209: avoided whenever possible.  However, delete any object files
        !           210: or executable files that are not likely to be needed again.
        !           211: 
        !           212: For additional information on f77, refer to "help f77".

unix.superglobalmegacorp.com

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