!##################################################################
!## This program takes 2 numbers (input from keyboard) and operates on them.
!## It shows how to use IF statements and Functions.
!##################################################################
PROGRAM Calculator
!## Declare all variables to be used in program, including the function 'add'.
IMPLICIT None !This means you have to declare everything (no implicit variables).
!Should always use this otherwise it's easy to lose track of variables.
REAL num1,num2,answer,add
CHARACTER*3 operation
!## Input the numbers and operation needed: ##
print*,'Please input 1st number:'
read(5,*)num1
print*
print*,'Operation (+-*div)?'
read(5,*)operation
print*
print*,'2nd number?'
read(5,*)num2
!## Do the calculation, depending on which operation was asked for: ##
if(operation.eq.'+') then !If the stuff in brackets is true, do the next line (otherwise ignore).
answer=add(num1,num2) !Calls the Function 'add' which is declared after end of program.
endif !Could just use num1+num2
if(operation.eq.'*') then
answer=num1*num2 !Not using a function here.
endif
if(operation.eq.'-') then
answer=num1-num2
endif
if(operation.eq.'div') then !F77 has a problem with the '/' character so let's use 'div'.
answer=num1/num2
endif
!## Result in now stored in the variable 'answer' so we can print to screen: ##
!## Here we use a particular format 'write(6,100)'. The 6 means to screen and the 100
!## is a format we define below. The 100 in the FORMAT statement should be one
!## space in from the left. 'f8.2' means a number with 8 character places (including decimal
!## point) and 2 numbers after the decimal point. The 'a4' means a string 4 characters long.
print*,'==================================='
write(6,100)num1,operation,num2,' = ',answer
print*,'==================================='
100 FORMAT(f8.2,a5,f8.2,a4,f9.3)
stop
END !## End the program before writing the functions. ##
!##############################################
!## Here is the 'add' function - after the main program.
!## when you use 'add(blah,blah)' the computer comes
!## down here and does the calculation. It returns the
!## value 'add' to the main program.
!##############################################
REAL function add(x,y)
implicit none
real x,y
add=x+y
return
end
!## Don't forget 'return' and 'end' - it's like a separate litle program. ##
!#######################################################