前回までTurbo Pascalの系譜を現代に継ぐ?Free Pascalを触ってきました。今回からは「大文字で綴らないといられない」FORTRANです。近代的なFortranではなく固定フォーマットの77ね。「灰の中から不死鳥のごとく蘇った」らしいOpenWatcomの逸品。とりあえずHello Worldからだな。
※実機動作確認には以下を使用しております。
-
- Windows 11 PC (i5-1235U)
- Ubuntu 24.04 LTS on WSL2
- QEMU 8.2.2
- FreeDOS 1.3
- OpenWatcom FORTRAN 77 Version 1.9
FORTRAN 77
最初に老人の繰り言を書いてしまいます。最初に触れたコンピュータ言語はFORTRANでした。ぼやぼやすると半世紀近く前、大型機(メインフレーム)用のコンパイラっす。既に「タイムシェアリング」システムの端末は存在してましたが、大学初年級の入門者は紙カードを生協で買い、カードパンチャで「穴」をあけてプログラムをパンチし、カードを並べて「バッチ・ジョブ」を流してました。出力はラインプリンタです。「固定長」のFORTRANのフォーマットはカードの経験があると、ものすごく納得いくものがあります。ただし、数年後にはパソコンのCRT画面の上でBASICするようになったので、カードでFORTRANしていたのはホンの数年だけだったのですが。
さて、OpenWatcom FORTRANはFORTRAN 77のコンパイラです。古いようでいてFORTRANで算法を記述したソースが奥底で生き延びているのを今だに見ることがあります。そのコードは縁の下で永遠不滅なのかもしれませぬ。まあ、HPC(スパコン)業界で「Fortran」はいまだに多用されているとの噂。伝統のコンパイラの最適化が半端ないらしいっす。プロはFortranだと。都市伝説の類?知らんけど。
OpenWatcom FORTRANコンパイラをFreeDOSへインストールする場合、「ボーナスCD」のDEVELディレクトリ配下にWatcomFというお名前で格納されています。そちらをDドライブにマウントしておいて、FreeDOSのインストールツールを使えば簡単にインストール可能です。例によって、いろいろな環境向けのバイナリやライブラリなどもごちゃまんとインストールしてくれるので、かなりディスクスペースに余裕がないと辛そうです。
インストール後、展開されたファイルの中に owsetenv.bat というバッチファイルが出来ており、このバッチの中でPATHやら他の環境変数やらをセットしてくれるようになっています。このファイルをPATHの通ったディレクトリ LINKS などにコピーするなりして走らせると後の操作がお楽。
FORTRANでHello World書いてみた
ハッキリ言って40年以上ぶりにFORTRAN書きました。ほぼほぼ忘れているのでドキドキ。
C 1 2 3 4 5 6 7 C234567890123456789012345678901234567890123456789012345678901234567890123456789 C FORTRAN77 COLUMN template CnnnnC..................................................................| PROGRAM HELLO PRINT *, 'HELLO WORLD.' STOP END
固定フォーマットのFORTRANなど知らんと仰る兄貴姉貴に注釈しておくと。
-
- 1カラム目にCと書いたら以下全てコメント
- 2カラム目から5カラム目は必要に応じて行番号(トビ先ラベルなどに使う)
- 6カラム目に何か書くと「継続行」(前の行の続きってこと)
- 7カラム目から72カラム目までがプログラムを書いて良い有効範囲
- 73カラム目から80カラム目はコメント。カードの順番が分かるように連番など書き込むことが多かった。実際にはメンドイのでカードの端面にマジックで黒の斜線を1本。万が一「落としてカードの順番がバラバラ」になってしまったら、その斜線を頼りに復元、という感じ。
書いてみたけど、ちゃんとコンパイルできるんじゃろか?
OpenWatcom FORTRANでのコンパイル
例によって、FreeDOS上のOpenWatcom環境は、DOS、DOSイクステンダ、WIN16、WIN32、OS/2などの各種環境用のオブジェクトを生成できます。
まずはDOS上の16ビットの.EXE形式の実行ファイルを生成する場合は、
WFL /l=dos HELLO.FOR
生成するのは通常の16ビットDOS用の実行ファイルですが、コンパイラなどツールチェーンは例によってDOS/4GW(DOSイクステンダの一種)を使って動作しております。
生成されたファイルと実行結果
FORTRANからHELLO WORLD.とな。