Program Fndemo
 ! written on aug 23, 2000 by siva@cse.iitb.ernet.in 
 !  to demo use and usefulness of functions
Implicit none
Integer :: I, J, K  
 ! we want the user to type in 3 values.
 ! one between 1-100, one 501-600 and one 801-900
 ! functions is a nice way to avoid repetitive code and mistakes.
 I = Getnum(1, 100,   'Enter Temperature:  ')
 J = Getnum(501, 600, 'Enter Pressure:     ')
 K = Getnum(801, 900, 'Enter Volume:       ')
 Write (*,*) 'Temperature = ', I,  &
             ' Pressure = ', J,   &
             ' Volume = ', K

contains
   
  Integer Function Getnum(low, high, msg)
    Implicit none
    Integer, Intent(in) :: low, high
    Character(Len=20), Intent(in) :: msg
    Integer :: ans

    Do
       Write (*,*) msg, '(Between ', low, ' and ', high, ')'
       Read (*,*) ans
       If ((low <= ans) .and. (ans <= high)) Exit
       Write (*,*) 'You did not type a valid input. Please try again.'
    End Do
   Getnum = ans
  End Function Getnum

End Program Fndemo
