What are the differences between functions and subroutines in Fortran?

I was under the impression that the main differences between subroutines and functions in Fortran was that functions returned values, while subroutines change some or all of the values passed as arguments. But then I learned that you could modify variables passed in to functions as arguments too.
For More Information Please Refer:

You May Also Like to Read: