Linux上でも生き続けるFortranとCOBOL

今日の企業は、古いアプリケーションを維持すべく、静かに奮闘している。新しいツールを使ってコーディングをやり直すというコストのかかる手段には頼らずに済まそうと考えているのだ。このため、Linuxシステム用のCOBOLコンパイラおよびFortranコンパイラがあるということは、Linuxの発展にとって重要な意味を持つ。ここでは、Linux用のFortranおよびCOBOLにはどんな選択肢があるのかを見ていくことにしよう。その数は意外と多く、数年前に比べても確実に増えている。

ここでは、現在入手可能なFortran製品およびCOBOL製品について見ていく。主要なツールはすべて取り上げているが、これは決して全製品を1つ残らず網羅したものではない。

Fortran:数値演算のチャンピオン

数年前までは、Linux上で動作する実用的なFortranコンパイラの選択肢は非常に限られていた。だがうれしいことに、現在ではその数は増えている。

一番手として挙げられるのは、 GNU F77コンパイラ である。オープンソース・ソフトウェアなので、手頃で入手しやすい。 しかし残念ながら、これはFortran 77規格を基にして拡張したコンパイラなので、もっと後のFortran規格への準拠が必要なら、別のものを探す必要がある。

Fortran愛好者の多くは、「かつての米Digital Equipment社のFortranコンパイラはいったいどうなったのか」という疑問を、当然のように持っているのではなかろうか。DEC Fortranとは、ミニコンピュータの全盛時代に数多くのプログラマが好んで利用したコンパイラである。

よい知らせは、かつてのDEC Fortranコンパイラは、米Hewlett-Packard社のCompaq Fortran For Linuxコンパイラとして生き残っており、愛好者は無償のライセンスで利用できるということだ。悪い知らせは、このコンパイラは、絶滅寸前のAlphaアーキテクチャでしか利用できないということだ。

Alphaプラットフォーム以外用として米Hewlett-Packard社が推奨しているのは、x86およびItanium用の Intel Fortranコンパイラ である。米Hewlett-Packard社のWebページによると、かつての米DEC/Compaq社のFortranコンパイラのチームは米Intel社に売却されたとのことなので、Intelコンパイラには同チームの経験が大きく活かされているはずである。このことは、円熟していてかつ新しいFortranコンパイラを求めている人にとっては朗報だろう。

それなりに名の通った商用Fortranベンダの中には、Beowulf型のコンピューティング・クラスタをサポートする製品を出している所もいくつかある。たとえば、 Lahey/Fujitsu Fortran 95 や、 Portland Compiler Group のFortran 90、Fortran 77、およびHigh-Performance Fortranコンパイラなどだ。

米Absoft社は、 Pro Fortran for Linux を出している。この製品には、x86用のほか、PowerPC用もある(一般的なPC/AT互換機の世界に染まっていない人にとってはよい選択肢だ)。また同社は、Fortran関連の製品を持つ他のベンダとも提携している。そうした製品には、IMSL Fortran数値計算ライブラリや、 米Veridian社のVAST などがある。

ハードウェア・アーキテクチャという面で適応範囲が広い製品として挙げられるのが、 NAGWare Fortran 95コンパイラ である。Linux/x86、Linux/AMD64、Linux/Itanium、Alpha Linuxなどのさまざまなアーキテクチャに加え、FreeBSDにさえ対応している。なお、同製品のFAQによると、この製品を注文するときには、自分が使用しているCコンパイラの種類を申し出る必要があるとのことである。どうやらこの製品は、FortranプログラムをC言語に変換したうえで、システムのCコンパイラを使ってプログラムをコンパイルするということのようだ。つまり、結果として生成されるコードの実行速度は、Cコンパイラが生成するものを超えることはないということである。

他言語へのコンパイルという形で問題ないのであれば、オープンソースという選択肢ももちろんある。よく知られているのが f2c プロジェクトである。これは、FortranをC言語に変換するものだ。ただ、以前私がこれを使用してみたときには、あちこちに欠点が見られ、手持ちのFortranプログラムのどれも使うことができなかった。とは言え、Fortran 77規格にのっとってコーディングを行い、拡張をまったく使わないということであれば、f2cも検討に値する。

知名度はやや落ちるが、 f2j というプロジェクトもある。これはFortran 77をJavaに変換するものだ。さらに、f2jと共に利用するための、ハイ・パフォーマンスFortranのフロントエンドが必要なら、 HPFfe がある。確かに、これを使えば、古いコードをもっと新しい言語に変えることが可能である。だが私には、これは直観に反したソリューションであるように思える。Fortranアプリケーションの大半は数値計算処理を行うので、プログラムのパフォーマンスが優れていることはおおむね必須要件である。一方Javaは、最高のパフォーマンスを誇る言語と言われたことはないのである。

手持ちのハイ・パフォーマンスFortranのコードを実行するための手頃なパラレル処理エンジンがない、ということなら、 ADAPTOR High Performance Fortran (HPF) Compilation System を見てみるとよい。ADAPTORは、特別なプログラム・ライブラリを使って、データ・パラレルHPFプログラムをFortran 77やFortran 90に変換する。ADAPTORはパブリック・ドメインとなっているので、何の制限もなく試してみることが可能だ。

言うまでもなく、Fortranの世界には数多くの規格があり、さらにそれらにさまざまな拡張が施されている。そんな中、 Fコンパイラ は、むしろ教育者向けのFortranと位置付けられるものである。これには、Fortran 95の機能の多くが実装されているが、Fortran 95規格を完璧に満たすことを意図しているわけではない。Fortranを勉強中の人や、暗黒時代以来Fortranは触っていないという人は、Fコンパイラを試してみるといいかもしれない。

教育や学習はポイントではないということなら、Linux用のFortranコンパイラの選択肢は他にもある。登場してしばらくたつ製品には、 英NA Software社のFortranPlus v2.2 がある。この製品は、Fortran 95を、Linuxおよび多くのバージョンのWindowsに対応させたものである。手持ちのコードをLinuxとWindowsの両方で動作させる必要があるのなら、この製品を見てみる価値がある。

そして、商用のFortranとなった場合、この会社のこの製品について述べないわけにはいかない。米IBM社の XL Fortran V8.1 for Linux on pSeries である。察しがつくように、この製品はFortran 77、Fortran 90、およびFortran 95の各規格に完全に準拠しており、さらにFortran 2000のドラフト標準も部分的にサポートしている。

まだ十分に熟してはいないが前途有望なオープンソース・ソフトウェア・プロジェクトの世界にも、注目すべきものがいくつかある。その1つが、 G95 というフリーのFortran 95コンパイラである。開発は積極的に進められているようなので、差し迫った必要性があるわけではない人や、Fortranプロジェクトを手助けしたいと考えている人にとっては、注目する価値は十分ある。もう1つ、興味をそそられそうなオープンソース・プロジェクトには、 OpenWatcom がある。これは、かつて商用製品として出されていたWatcomコンパイラを引き継いだものだ。私の知る限り、OpenWatcom FortranコンパイラはまだLinuxには移植されていないが、意欲的なプログラマたちにとってはよいプロジェクトとなるだろう。

COBOL:事務処理の達人

COBOLは、Linuxとは最も縁遠い言語の1つだと考える人が大半である。メインフレームや、いにしえのビジネス・システムと特に密接な関係にある言語だからだ。だが実は、Linux上でもCOBOLは生き残っている。

業務向けの商用のCOBOLコンパイラ製品はいくつかある。そのうちの3つ、すなわち、 ACUCOBOL 、 PERCobol Enterprise for Linux 、および MicroFocus COBOL は、PC以外のプラットフォームにも対応している。こう聞くと、最初は意外に思えるかもしれない。だが、そのプラットフォームとはIBM zSeriesであると聞けば、話が見えてくる。メインフレームの言語を、メインフレーム上のLinuxと共に表舞台に立たせるというのは、完全に道理にかなったことである。

商用のCOBOLコンパイラの中には、別の土俵で競おうとしているものもある。 富士通のNetCOBOL は、.NET環境向けに開発された製品との互換性を謳っている。オブジェクト指向COBOLをサポートしているほか、 Eclipse を利用した統合IDEを備えている。また、COBOL 85規格およびCOBOL 89規格に加え、MicroFocusおよびIBMの一般的な拡張構文をサポートしている。

このほか、米theKompany社の Kobol という製品もある。他社製品は強力なプロセッサでハイエンドな機能を実現することを目指しているのに対し、Kobolは低価格なエントリ製品として位置付けられる。価格は最も安いもので59.95米ドルである。この製品は、COBOL 85規格の大部分をサポートしているほか、統合IDEを備えている。また、そのエンジンは、Windows用およびMac OS X用(近々対応予定)と互換性がある。

もっぱら業務用として使われるCOBOLのような言語であっても、オープンソース開発の対象になり得るのはもちろんだ。商用利用にフォーカスしているからと言って、必ずしも商用製品として開発しなくてはならないわけではないのである。現時点では、オープンソースのCOBOLは発展途上であるが、進行中のプロジェクトの中には有望なものもいくつかある。

そんなプロジェクトの1つが OpenCOBOL である。COBOL 85への準拠を目指して開発が進められている段階だ。そのWebページには、COBOL 85への準拠状況のテスト結果が示されている。

また、 Cobol For GCC というプロジェクトもある。残念ながら、こちらは現時点では活動があまり進められていないようだ。このほか、COBOLをCに変換する CobCy というプロジェクトもあるが、こちらのページもかなり静かなようである。

もっと成熟したプロジェクトには、 TinyCOBOL がある。これは、COBOL 85への準拠という目標へ向けて進んでいるところである。もともとは、COBOL 74規格のサブセットを実装したDOSベースのコンパイラとして始まったものだが、DOS環境の制約により頭打ちになってしまった。現在では、LinuxおよびFreeBSDという、もっと充実した環境に移植され、より強固なコンパイラとなるべく拡張が進められている。

最後に紹介するのは、COBOLをWeb時代に対応させることをもくろんだ商用製品だ。 CobolScript という、COBOLベースのスクリプト言語である。これを使えば、COBOLプログラマは、新しい言語を覚えることなく、インターネット・アプリケーションを開発することができる。CobolScriptはLinux、FreeBSD、およびWindowsで動作するので、COBOLを利用するプログラムにある程度の移植性を持たせることができる。

結論

地球上の科学技術計算の多くは、いまだにFortranを使って行われている。また、COBOLで動作している業務アプリケーションは今でもたくさんある。FortranやCOBOLの強力な開発ツールがLinuxにあれば、数多くの古いシステムをLinuxにアップグレードするという流れが自然なものとなるかもしれない。LinuxベースのFortranコンパイラやCOBOLコンパイラはここ数年でかなり増えている。その中で、Linuxプラットフォームで最も人気があるのはこれ、ということが言えるようになるには、もう少し時間がかかるかもしれない。だが、あり余るほどの選択肢があるというのは、選択肢が少なすぎるのに比べればずっとすばらしいことだ。

Russell Pavlicek:ビジネスシーンにおけるLinuxの活用を専門分野とし、コンサルタントおよび著者として活躍する。Linux ShowのウィークリーWebキャストのパネリストでもあり、Linux関連のWebサイトに多数の記事を書いている。以前はInfoWorld誌のOpen Sourceコラムを担当していた。