【2008/10/25 original author TAKAO】
IBM系のOSはすべからくREXXというインタープリター言語が搭載されている。それゆえ「REXXってIBMが好きなんだよね。」以上に考えない人が日本には多いと思う。なぜIBMはREXXを大事にしているのか、当時を知る私としては前書き代わりに少し理由を書いておきたい。
REXXプログラムが大量に使われているOSがある。そうVM。なぜか?もともとVMはマイクロカーネルアーキテクチャの流れを汲むOSだった。(研究所から生まれたんだもん、それくらいのアカデミックな香りはプンプンするんですよ。) カーネルはアセンブラーだが、その周辺は極力、EXEC, REXXといったスクリプト言語で実装していく、という暗黙のコンセプトがあったのだ。VMで使うコマンドはほとんどがスクリプトで実装されている。
この単純な動きのプログラムを重ねていく、という手法は、あなたが今後、スクリプトで仕事をしていく上で大切な考え方なので心に留めておいてほしい。例えば、ひとつのコマンドの処理結果を処理するプログラムを書く。次に、そのコマンドをパラメータを変えて、どんどん発行して結果を得たい、というと前に書いたプログラムを呼び出すように書いていけばいい、ということだ。
REXXはどういう素性をもっているかというと、もともとIBMではアウトローだった。IBMというとビジネスマンの集まりのイメージが強いが、REXXを作ったMike F. Cowlishaw(以下、コーリショウ。イギリス人)は社内で天才プログラマーとしての呼び名が高かった人だ。彼は「誰にでも使えるプログラミング言語」というコンセプトを実装することにした。
当時すでに、IBMは社内専用ネットワークVNETというものがあった。これは2000台近いVMマシーンが世界中につながり電子メール、リモートコンソール、ファイル転送、BBSなどが構築され、エンジニア,セールス、社内事務に携わる人が普通に使っていた。このネットワークを利用し、コーリショウは言語を発表し、ブラッシュアップしていった。信じられないことだけれど、今のようにエクセルのない時代だったという理由もあり、秘書の人がデータ整理にREXXを使い、フィードバックをしていったのだ。もちろんプログラマーも意見をいい、おそらくのべ数千人の人のフィードバックが繰り返された。こういう育ち方をした言語はおそらくないと思われる。それゆえ、REXXはプログラミング言語としてはユニークな特徴を持つに至った。以下に例を示す。
- 変数に型はない。基本はすべて「文字列」
- 文字列処理は独特ながら強力。正規表現を知らなくても相当なことができる。
- 数値計算に強い。桁落ちしにくい。
- プリコンパイルするため、長い作業は早い。
- 外部コマンドを呼んだり、結果を受け取る機能が強力。
よく知らない人が書いても動くし、知っている人はさらに細かい調整の効く言語である。数多くのユーザーのフィードバックと実績があるがゆえに、IBMはOSを超えてREXXが動作するようにした。それゆえほとんどのOS, プロダクトがREXXとのインターフェースをもつのだ。知らないと損すると思いませんか。REXX自身も進化し、今はObject REXXというオブジェクト指向言語となった。(オープンソース)
それゆえ、汎用機でREXXを知ることは圧倒的に作業をラクにしてくれるはずである。TSOのCLISTに出来ないことはREXXにはできる。DB2の定型的アドミ作業やTivoliもREXXで可能だ。プログラマーの経験からしても、PerlやCよりは、はるかに簡単で強力な言語だ。(PHPのようにWEBアプリに特化した言語には勝てないところはあるけれど)20年以上にわたってメインフレームでは最強のスクリプト言語として君臨し、linuxでもWindowsでも、あらゆるプラットフォームで動く処理系を実はもっている。COBOLやPL/Iより、はるかに進化したREXXを覚えることは、必ずあなたの生産性を高めることになると思う。
なお、ここではマニュアルとして、z/OS TSO/E REXX解説書 (SA88-8635)を使います。
次回はREXXの動かし方から始める。
【2008/10/25 original author TAKAO】