【Fortran学習|初心者向け】固定形式から自由形式へ:FORTRANの「コメント行インデント」でハマらないための基礎知識

1. 導入:なぜこのミスが致命的なのか

数値計算の現場で、古くからあるFORTRANコードをメンテナンスする際、最も「不可解なエラー」を引き起こすのが、固定形式におけるコメント行の記述ミスです。本来、コードの可読性を上げるために「インデント(字下げ)」をして整理したつもりでも、固定形式のルールを無視すると、コンパイラはそれをコメントではなく「実行文」だと誤解してしまいます。結果として「Unrecognized statement(未知の文)」といったエラーが連発し、修正に時間を取られることになります。この記事では、この「インデントの罠」を正しく理解し、回避する方法を解説します。

2. 基礎知識:固定形式の「1カラム目」の重要性

FORTRANの固定形式(Fixed Form)では、プログラムの各行の「位置」が厳密に決められています。
1カラム目(一番左の列)に特定の文字が入っているかどうかが、その行が何であるかを決定します。
・1カラム目に `C` や “ を置くと、その行は「コメント」として扱われます。
・しかし、もしインデントをして `C` を2カラム目以降に配置してしまうと、コンパイラはそれをコメントとして認識しません。その結果、その行を「変数宣言」や「計算式」の一部として処理しようとし、文法エラーを発生させるのです。

3. 実装/解決策:正しい記述ルール

固定形式のファイルを扱う際は、以下のルールを徹底してください。
・コメント文字(C, , !)は、必ず1カラム目から記述する。
・どうしてもインデントしたい場合は、固定形式(.f)から自由形式(.f90)へ変換してから行うのが安全です。
・もし古いコードを触る際は、エディタの設定で「列番号を表示する」ようにし、1カラム目がどこかを常に意識しましょう。

4. サンプルプログラム:誤りと正しい記述の比較

以下のコードは、エラーとなるケースと正しい書き方の対比です。そのままコピーして、固定形式のファイル(拡張子 .f)でコンパイルを試してみてください。


! --- 誤った記述例 ---
C これはインデントしてしまったため、コンパイラが「C」という変数を探そうとしてエラーになります
PROGRAM TEST_ERROR
END

! --- 正しい記述例 ---
C 1カラム目に配置することで、正しくコメントとして認識されます
PROGRAM TEST_CORRECT
PRINT , "Hello, World!"
END

5. 応用・注意点:現場で陥りやすいバグの回避

現場でよくあるのは、テキストエディタの「自動整形機能」が勝手にインデントを入れてしまい、気づかないうちにコメント行を破壊するケースです。

注意点:
エディタの自動整形をオフにする: 固定形式のファイルを編集する際は、IDEの自動インデント設定を無効化してください。
自由形式(Free Form)への移行: 近代的なコンパイラであれば、拡張子を `.f90` にし、自由形式で書くことを強く推奨します。自由形式では `!` を使えばどこからでもコメントが書けるため、インデントによるエラーは発生しません。
警告メッセージの確認: コンパイラから「Unexpected character」や「Invalid syntax」が出た場合、真っ先に「1カラム目がずれていないか」をチェックする癖をつけましょう。

レガシーなソースコードほど、こうした些細なルールの積み重ねで動いています。まずは「1カラム目」を意識することから始めてみてください。

コメント

タイトルとURLをコピーしました