# Fortran 77 by hcw25539

VIEWS: 0 PAGES: 14

• pg 1
```									Fortran 77
Introduction to f77
Arithmetic Operators & Expressions
-    Subtraction or Sign
*    Multiplication
/    Division
**   Exponentiation

Expressions may involve numeric constants and variables.
Parentheses may be used as needed to preserve the
intended logic. New variables may be assigned the value of
expressions.

→ http://www.strath.ac.uk/CC/Courses/fortran.html

PH4390: Computational Methods in Physics, MTU Fall 2006 – p.1/14
Fortran 77
Introduction to f77
Arithmetic Operators & Expressions cont
Examples:

3.14159 (REAL) if other: 3.14159D0 or DBLE(3.14159)
K
(A+B)*(C+D)
-1.0/X + Y/Z**2 better: ( DBLE(-1)/X ) + ( Y/(Z**2) )
DELTA = ( DBLE(-1)/X ) + ( Y/(Z**2) )

→ http://www.strath.ac.uk/CC/Courses/fortran.html

PH4390: Computational Methods in Physics, MTU Fall 2006 – p.2/14
Fortran 77
Introduction to f77
Creating Output
WRITE(*,*) ’HAHA’, X          Writes format free
(second *) to the standard output unit (xterm/shell
deﬁned by ﬁrst *) the string ’HAHA’ and the content of
variable X.
WRITE(6,*) ’HAHA’, X          Similar to the above
except that the standard output unit (6) is explicitly
stated.
WRITE(6,’(6A,I9)’) ’HAHA’, X              Similar to the
previous except that now we use a format speciﬁer
’(6A,I9)’ that actually tells WRITE to print a string
consisting of 6 characters followed by an integer with 9
digits right centered.
→ http://www.strath.ac.uk/CC/Courses/fortran.html
PH4390: Computational Methods in Physics, MTU Fall 2006 – p.3/14
Fortran 77
Introduction to f77
Creating Output cont
WRITE(6,100) ’HAHA’, X
100 FORMAT(6A,I9)      The format speciﬁcation
may be done outside the actual WRITE statement with a
FORMAT command which has to have a corresponding
label (100 in this present example).
Format Descriptors        Example     Handled Data Types
I4                            1234    Integer numbers
F12.6                12345.789012     Floating point numbers
E12.4                  0.1235E+09     Exponential form
A5                          TH8&%     String of characters
3 I2                       12 34 56   Repeating a number of times
→ http://www.strath.ac.uk/CC/Courses/fortran.html
PH4390: Computational Methods in Physics, MTU Fall 2006 – p.4/14
Fortran 77
Introduction to f77
First Program

C23456789012345678921234567893123456789412345678951234567896123456789712
PROGRAM HELLO
IMPLICIT NONE

WRITE(6,*) ’HELLO WORLD’

END

→ http://www.strath.ac.uk/CC/Courses/fortran.html

PH4390: Computational Methods in Physics, MTU Fall 2006 – p.5/14
Fortran 77
Introduction to f77
First Program cont
1. Writing the program:
At ﬁrst the program has to be written (i.e. text has to be
produced) which is a perfect task for vi. In a Linux/UNIX
terminal type:
vi hello.f
and write up the program.

→ http://www.strath.ac.uk/CC/Courses/fortran.html

PH4390: Computational Methods in Physics, MTU Fall 2006 – p.6/14
Fortran 77
Introduction to f77
First Program cont
2. Compiling the program:
Next we have to make this program an executable (i.e.
convert the list of commands to a machine-executable
binary) which is done with the help of a compiler. In a
Linux/UNIX terminal type:
f77 ./hello.f
If you prefer having the executable named something
other than a.out you’d use the -o ﬂag:
f77 -o ./hello ./hello.f
→ http://www.strath.ac.uk/CC/Courses/fortran.html

PH4390: Computational Methods in Physics, MTU Fall 2006 – p.7/14
Fortran 77
Introduction to f77
First Program cont
3. Running the program:
If compilation was successful, we may run the program
with the speciﬁed executable name (a.out by default or
what has been deﬁned with the -o ﬂag above), thus in a
Linux/UNIX terminal type:
./hello

→ http://www.strath.ac.uk/CC/Courses/fortran.html

PH4390: Computational Methods in Physics, MTU Fall 2006 – p.8/14
Fortran 77
Introduction to f77
Creating Output in Files

Instead of writing to the standard output unit (6) we may
deﬁne whatever other unit number, which will then refer to
some ﬁle, either to be created afresh or else to be
overwritten. We may use the same format descriptors
shown for the WRITE command. However, we have to
manage the ﬁle handling with OPEN and CLOSE commands.

WRITE(44, ’(6A,I9)’) ’HAHA’, X           Writes into the
ﬁle corresponding to the unit number 44 that had to be
opened before via an OPEN command.

→ http://www.fortran.com/F77_std/f77_std.html

PH4390: Computational Methods in Physics, MTU Fall 2006 – p.9/14
Fortran 77
Introduction to f77
Creating Output in Files cont

OPEN (UNIT=44, STATUS=’NEW’,
NAME=’TOMAHAWK’, FORM=’FORMATTED’)
Opens a new ﬁle with the name TOMAHAWK, which
will be accessible for writing/reading via the unit number
44. Writing/reading will be done in formatted mode.
Further options are available.
CLOSE (UNIT=44, STATUS=’KEEP’)                    Closes
the ﬁle associated with unit number 44 and keeps it
available for further usage (does not delete it).

→ http://www.fortran.com/F77_std/f77_std.html

PH4390: Computational Methods in Physics, MTU Fall 2006 – p.10/14
Fortran 77
Introduction to f77
Similar to creating output to the standard output unit (6) or
to some ﬁle we may read in data from the standard input
unit (5) or from some ﬁle.

standard input unit (5) a 6-character long string and
assigns it to variable OLGA, and a 9 digit integer
number that is assigned to variable X.
READ(44, ’(6A,I9)’) OLGA, X           Same as above,
except that the data is read from some ﬁle associated
with unit number 44 that had to be opened before.
→ http://www.fortran.com/F77_std/f77_std.html

PH4390: Computational Methods in Physics, MTU Fall 2006 – p.11/14
Fortran 77
Introduction to f77
Example: Compute Repayment
Consider a Fixed Term Loan:
Suppose a certain amount of money has been taken in the
form of a loan. The money should be payed back within a
certain number of years. In addition the interest rate needs
to be payed back. The following formula describes these
yearly repayments:
amount×rate
repayment =    [1−(1+rate)−nr_years ]

Rate in that formula is a fraction, but more conveniently we
want to work with percentages.

→ “Professional Programmer’s Guide to Fortran77”, CG Page, Leicester, UK 1995

PH4390: Computational Methods in Physics, MTU Fall 2006 – p.12/14
Fortran 77
Introduction to f77
Example: Compute Repayment cont
C23456789012345678921234567893123456789412345678951234567896123456789712
PROGRAM LOAN
IMPLICIT NONE
INTEGER NYEARS
DOUBLE PRECISION AMOUNT, PCRATE, RATE, REPAY

WRITE(6,*) ’Enter amount, % rate (APR), # years:’
RATE = PCRATE/100.0D0
REPAY = ( AMOUNT * RATE ) / ( 1.0D0 - (1.0D0 + RATE)**(-NYEARS) )
WRITE(6,*) ’Annual repayments are:’, REPAY

END

→ “Professional Programmer’s Guide to Fortran77”, CG Page, Leicester, UK 1995
PH4390: Computational Methods in Physics, MTU Fall 2006 – p.13/14
Fortran 77
Introduction to f77
Example: Compute Repayment cont
Two Variations:
Instead of typing in the input data manually on the keyboard
one could use ﬁle redirections.

1. Create ﬁle ./loan inp and read it in via redirected stndin,
i.e.
./loan < ./loan_inp
2. Modify program ./loan.f so that it reads in from any
non-stndin unit the ﬁle ./loan inp, i.e.
./loan

→ “Professional Programmer’s Guide to Fortran77”, CG Page, Leicester, UK 1995

PH4390: Computational Methods in Physics, MTU Fall 2006 – p.14/14

```
To top