SMF - Just Installed!
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts Menu
Program Examples
c
c Every Fortran program must start with the statement "program"
c
c It is a good idea to identify the author, date, and purpose
c of your program
c
c Fortran Examples
c M. E. Barkey
c 18 August 2009
c This program will give some basic examples of Fortran Statements
c
c
c In fixed-format fortran, where things are is important.
c23456789012345678901234567890123456789012345678901234567890123456789012
c
c comments are any lines that have a character in position 1
c
c columns 2-5 are for reference numbers or statement numbers
c
c column 6 is reservered for a continuation character
c any character except "0" (zero) can be used
C !CAUTION! DO NOT USE TAB to get over to column 6 use spaces!
c
c in Fortran 77 (fixed format), programming statements must be at
c column 7 or later and must not extend past column 72
c The next section is for variable declarations.
c Good programming practice is to declare ALL variables.
c If a variable is not declared, it is assumed that
c a-h and o-z are reals
c i-n are integers (notice interger strates with i and n)
c variables in F77 must start with a character, and be
c no longer than 6 characters/numbers
Real a, b(10), c(10), a1, a2, a3, a4, a5, k, k2
Double Precision d(10)
Character eChar*25
Integer i, j, e(10)
c Sample of how to write to screen
Write (*,*) 'This is a screen print'
a = 10.78
a1 = a*1.0
j = a1*1.0
C making something an integer will TRUNCATE, not round the number
C in strict F77, mulitplying a real with an integer will result
c in truncation
c It is good practice to always use real numbers when multiplying
c real variables, e.g. a1 = a * 1.0, NOT a1 = a * 1
write (*,*) a, a1, j
c to take a number to a power, use two stars (**)
c addition, multiplication, subtraction, division are as usual
a2 = a**2.0
a3 = a + a
a4 = 2.0*a - 0.5*a
a5 = a2/a3
write (*,*) a2, a3, a4, a5
c Do Loop to intialize an array
c 500 is reference line number
c i is index, 1, 10 is go from 1 to 10
c the last 1 is the step
write (*,*)
write (*,*)
write (*,*) 'this is the do loop'
c it is good practice to indent the items
c inside the do loop
Do 500, i = 1, 10, 1
b(i) = a*real(i)
c(i) = a*i
d(i) = a*2.0*real(i)
e(i) = int (d(i))
write (*,*) i, b(i), c(i), d(i), e(i)
500 Continue
k = 4.7
write (*,*)
write (*,*) k
c comparisons are done with .lt. .gt. .le. .ge. .eq.
if (k.le.3.0) then
write (*,*) 'less than or equal to 3.0'
else
write (*,*) 'must be greater than or equal to 3.0'
end if
c boolean operators are .AND. .OR. .NOT.
if ((k.gt.4.0).AND.(k.lt.6.0)) then
write (*,*) 'must be greater than 4.0'
write (*,*) 'and less than 6.0'
end if
C file input/output
open (12, file = 'sample.dat')
echar = 'this is a string'
write (12, *) 'unformatted output'
write (12, *) k
write (12, *) 'formatted output'
write (12, 900) k, k, int(k), echar
close (12)
open (14, file = 'sample.dat', status = 'old')
read (14, *) echar
read (14, *) k2
write (*,*) 'part of file'
write (*,*) echar, k2
close (14)
c f is floating point, 6.2 means 6 total spots, 2 decimal
c 10x is ten spaces
c i5 is 5 spot integer
c a5 is 5 character string
900 format (f6.2, 10x, f6.1, i5, 5x, a5)
End