自由形式では,プログラム行の特定の位置に文を置かなくてはならないという制約はなく,1 行に 0 ~ 132 文字を含むことができます。
自由形式では,空白文字は意味を持ちます。以下に空白文字の規則を示します。
空白文字は,文字文脈中を除き,字句の中で使用することはできません。たとえば,指数演算子 (**) の間に空白を入れてはなりません。ただし字句と字句の間では,可読性を高めるために空白文字を自由に使うことができます。
名前,定数,または文番号を,隣接するキーワード,名前,定数,または文番号から区切るためには,空白文字を使用する必要があります。例として以下の文を考えます。
INTEGER NUM GO TO 40 20 DO K=1,8
INTEGER,TO,20,および DO の後には空白を置く必要があります。
一部の隣接するキーワードは,その間に 1 つまたは複数の空白文字を持つ必要があります。一方,空白文字を必要としないものもあります。たとえば,BLOCK DATA は BLOCKDATA と書くことも可能です。次の一覧は,空白が省略可能なキーワードと必須のキーワードを示しています。
空白が省略可能 | 空白が必須 |
BLOCK DATA | CASE DEFAULT |
DOUBLE COMPLEX | DO WHILE |
DOUBLE PRECISION | IMPLICIT type-specifier |
ELSE IF | IMPLICIT NONE |
END BLOCK DATA | INTERFACE ASSIGNMENT |
END DO | INTERFACE OPERATOR |
END FILE | MODULE PROCEDURE |
END FORALL | RECURSIVE FUNCTION |
END FUNCTION | RECURSIVE SUBROUTINE |
END IF | RECURSIVE type-specifier FUNCTION |
END INTERFACE | type-specifier FUNCTION |
END MODULE | type-specifier RECURSIVE FUNCTION |
END PROGRAM | |
END SELECT | |
END SUBROUTINE | |
END TYPE | |
END WHERE | |
GO TO | |
IN OUT | |
SELECT CASE |
すべてのソース形式における文区切り子 (;) の詳細については,「ソース形式」を参照してください。
注釈標識
自由形式では,感嘆符 (!) は,プログラム行中にある場合は注釈を,プログラム行の先頭の文字である場合には注釈行を示します。
継続標識
自由形式では,アンド記号 (&) は継続行を示します (ホレリスあるいは文字定数の中,または注釈の中に現れた場合を除く)。継続行は,アンド記号の後に続く最初の非注釈行です。Fortran 95/90 では自由形式プログラムで 39 行までを継続することができますが,Compaq Fortran では 511 行までを継続することができます。
次に継続されている文を示します。
TCOSH(Y) = EXP(Y) + & ! 第 1 行 EXP(-Y) ! 継続行
次の非注釈行の最初の非空白文字がアンド記号である場合,文はアンド記号の後の文字から継続されます。たとえば,上の例は次のように書くこともできます。
TCOSH(Y) = EXP(Y) + & & EXP(-Y)
字句を継続する必要がある場合,次の非注釈行の最初の非空白文字がアンド記号でなくてはならず,その直後に字句の残りの部分を続けなくてはなりません。
TCOSH(Y) = EXP(Y) + EX& &P(-Y)
文字定数を継続する必要がある場合,アンド記号が継続された行の先頭の非空白文字としなければなりません。さもないと,継続行の先頭にある空白が文字定数の一部として含まれてしまいます。以下に例を示します。
ADVERTISER = "Davis, O'Brien, Chalmers & Peter& &son" ARCHITECT = "O'Connor, Emerson, and Davis& & Associates"
アンド記号を継続された行で省略すると,継続された行で最初に現れる非空白文字から文が継続されます。そのため,上記の例では,「Associates」の前の空白が無視されます。
アンド記号は,行中の唯一の非空白文字,または注釈前の唯一の非空白文字であってはなりません。注釈中のアンド記号は無視されます。
すべてのソース形式の一般的な規則の詳細については,「ソース形式」を参照してください。