Before we begin writing our first source code in Fortran 77, it will be very useful for you to make a special directory which will accommodate your all your Fortran codes written during this course. This can be done by typing the following command in the command-line terminal:
mkdir c:\work cd c:\work |
mkdir work cd work |
The second command moves you to the directory you just created.
Assume that you have to write a program which calculates the factorial of a particular number. To
start writing your code, open your command-line terminal and run emacs
. In the main window,
press C-x C-f
, i.e. press and hold Ctrl
and press x
and then f
. In the
bottom part of your emacs
window, you should now see the following prompt:
Find file: c:\work\or something like
/Users/
name/work/
on MacOS X, where name is your user
name. You are now expected to enter the file name of the program you are going to write. I recommend
you to always think a few seconds before you decide about the name, because a convenient file name
can always help you to find the source code you seek. In our case, a good idea is to choose the name
fact.f
. The .f
at the end should be always added, because: (i) it helps you to
recognize which files contain Fortran codes, and (ii) once you use the extension .f
, your
Emacs editor automatically switches to its Fortran mode and turns on highlighting the Fortran
syntax. After typing the file name, the bottom line of your screen should look as follows:
Find file: c:\work\fact.for slightly differently on Mac. Now, press
Enter
and Emacs opens an empty buffer for editing
your file fact.f
. The status line at the bottom of your Emacs buffer should now read:
--:-- fact.f (Fortran)--L1--All----------------------------------------which means that the file name assigned to the current buffer is
fact.f
. Because the
extension of our file is .f
, Emacs automatically recognized that we are going to write a
Fortran code and switched to the Fortran mode.
Following is the program for the calculation of the factorial which we are going to type. The numbers and dashes above the code do not belong to the program and they merely serve as a ``ruler'' which helps you to recognize different columns. Do not type this line !
12--567------------------------------------------------------------73 program FACTORIAL ! definition of variables integer i, res, number parameter( number=5 ) res = 1 do i=2,number ! this loop calculates the factorial res = res*i enddo write(*,'("Factorial of ",I3," is ",I5)') + number, res end
We are now at the beginning of the buffer. Press Tab
- you should see that the cursor jumps
to column 7 at which the instruction part of your code starts. Then, write program FACTORIAL
and press Enter
. You are done with editing the first line of your source code.
The second line is inserted by simply pressing Enter
. I strongly recommend you to leave a
blank line each time you need to distinguish between independent parts of your code. In order to
write a ``readable'' code, you should always separate the line with identifier program
from
variables (see below), variables from the instruction part of your code and this part from the line
end
.
The third line of the code above is the comment line. Although comments are disregarded by
your Fortran compiler, they help you to organize your source code and also help the other people to
understand what your code really does. To write a comment, put an exclamation mark (!
) in
column 1 and type your comment. You should see that Emacs understood that you are writing a comment
line and displayed this line with a different color.
The subsequent block always contains the declaration of variables which are used locally
within the scope of our program. In this domain, you attach to each variable a type which
tells your compiler whether the variable contains an integral number (integer
), real number
(real
), logical number (logical
), alphanumeric text (character
), etc. Here, we
use only three variables named i
, res
and number
. Press Tab
at the
beginning of each line. This moves the cursor to column 7 at which F77 expects the declaration of
variables. If you write more than one variable on a line, they should always be separated by a comma
(,
). The following line assigns a value to variable number
which is declared above;
more on this shortly.
The instruction part is the real ``heart'' of your code which contains the algorithm
determining the factorial of a particular number number
. Each line is typed such that you
first press Tab
. The cursor moves to the column at which the Fortran expects your input. The
first line of this block, res = 1
, simply fills the variable res
with number
one. Press Enter
and continue editing a new line. The do
-enddo
part is a
loop which carries out the algebraic multiplication 1*2*3*
*number
. The
first line is do i=2,number
which means that the loop is repeated for
i
number
. Behind this header of the loop, we insert a comment which
again starts with an exclamation mark (!
). Pressing Tab
at the beginning of the next
line moves the cursor to column 10. Those three columns are added automatically to help you organize
your Fortran program. Finish this line by typing res = res*i
, which multiplies the contents of
the variable res
with the number i
and stores the result in res
. Finally, the
tail of our loop is inserted by typing enddo
in the subsequent line. This was a little longer
part and, therefore, leave the next line blank.
Now, the part which calculates the factorial is typed. The only task left is to display the
result. This is done by the instruction write
. The asterisk (*
) in the argument of
this command means that the result will be printed by the terminal you are currently in. The second
argument of write
is the pattern which determines the style of output. If the command
write
were written entirely on one line, it would extend beyond column 73, which is not
permitted. Therefore, we have to break the command and continue on the next line. Remember, that the
symbol +
is added in column 6 to designate that this line is a continuation of the command in
the previous line. Finally, the write
command displays Factorial of
followed by the
value of number
, followed by is:
and finished by the result of the multiplication
stored in res
.
The absolute end of your program is entered by writing end
which is always the last
instruction of your code. To save it, press C-x C-s
, i.e. press Ctrl
, keep holding it
and press x
and then s
. You should see the following message in the bottom line of
your Emacs editor:
Wrote c:\work\fact.fCongratulations, your first F77 code is born. Are you eager to see the result ? Continue in the next section.
Roman Gröger (2015-09-23)