This is an overview of Fortran 95 language features. Included are the additional features of TR-15581:Enhanced Data Type Facilities, which have been universally implemented. Old features that have been superseded by new ones are not described few of those historic features are used in modern programs although most have been retained in the language to maintain backward compatibility. The current standard is Fortran 2018; many of its new features are still being implemented in compilers. The additional features of Fortran 2003, Fortran 2008 and Fortran 2018 are described by Metcalf, Reid and Cohen. Language elements Fortran is case-insensitive. The convention of writing Fortran keywords in upper case and all other names in lower case is adopted in this article; except, by way of contrast, in the input/output descriptions (Data transfer and Operations on external files). Basics The basic component of the Fortran language is its character set. Its members are the letters A ... Z and a ... z (which are equivalent outside a character context) the numerals 0 ... 9 the underscore _ the special characters = : + blank - * / ( ) [ ] , . $ ' ! " % & ; < > ? Tokens that have a syntactic meaning to the compiler are built from those components. There are six classes of tokens: From the tokens, statements are built. These can be coded using the new free source form which does not require positioning in a rigid column structure: FUNCTION string_concat(s1, s2) ! This is a comment TYPE (string), INTENT(IN) :: s1, s2 TYPE (string) string_concat string_concat%string_data = s1%string_data(1:s1%length) // & s2%string_data(1:s2%length) ! This is a continuation string_concat%length = s1%length + s2%length END FUNCTION string_concat Note the trailing comments and the trailing continuation mark. There may be 39 continuation lines, and 132 characters per line. Blanks are significant. Where a token or character constant is split across two lines: ... start_of& &_name ... 'a very long & &string' a leading & on the continued line is also required. Automatic conversion of source form for existing programs can be carried out by convert.f90. Its options are significant blank handling; indentation; CONTINUE replaced by END DO; name added to subprogram END statement; and INTEGER*2 etc. syntax converted. Intrinsic data types Fortran has five intrinsic data types: INTEGER, REAL, COMPLEX, LOGICAL and CHARACTER. Each of those types can be additionally characterized by a kind. Kind, basically,