This book is the essential reference. Once you learn Fortran, this is the book to turn to when you need to know the details of the language.
I find myself using this book over and over again for my research project. It's short, concise, absolutely accurate and complete, making it the perfect book to have right next to your keyboard.
In response to the 1 star review, this is _not_ the book to learn the language from if you know nothing about Fortran, but it would be a serious mistake not to stock your bookshelf with this gem of a book.
I have successfully used this book for teaching, but only to experienced Fortran 77 programmers eager to learn about the new language, and with the aid of highly structured lectures and supervised computer tutorial sessions. I would not recommend it for student self study.
As an experienced programmer, what I most like about this book is that I can look up a term in the index, be referred to a small number of entries in the text, and rest assured that in those few pages I have all the information I require on that topic. Other Fortran books I have read frequently do not document, or pay scant regard to, important features of the language such as optional arguments to I/O statements or generic function disambiguation.
If I were only allowed to keep just one Fortran 90 text book this would be the one.
One example of the many gold nuggets I found in this title that I could find mentioned almost nowhere else: Instead of declaring a function as EXTERNAL so that it may be used as an actual argument in a procedure reference, Metcalf and Reid recommend using an interface block in the scope of the procedure reference using the actual function name, and a similar interface block in the referenced procedure (using the dummy argument procedure name), thereby allowing the compiler to envoke all the checking associated with explicit interfaces. Using the EXTERNAL attribute for this scenario does not allow that depth of checking, and, indeed, Chapman makes it seem as if the EXTERNAL statement is required to pass a function name as an actual argument. Adam's et al write that the use of interface blocks makes this use of EXTERNAL effectively obsolescent (p 473).
I did have one problem with my edition of "FORTRAN 90/95 Explained", the index was bound incorrectly (the pages were out of sequence).