プログラマ・アゲイン blog

還暦を過ぎたけどプログラマ復帰を目指してブログ始めました

Open Object REXXの環境をWindowsに作ってみた

IBM製のメインコンピュータのz/OS上で稼働するバッチ・プログラムを、REXX言語で開発することにしました。

しかし、メインコンピュータは汎用大型機なので、自分の自由な時間に使用してプログラムを開発する事が出来ません。

そこで、REXXの特徴である、あらゆる OS上にポーティングされていて、z/OSでも Windowsでも同じ REXXプログラムが稼働するという事で、使用している PC(Windows 10)上に REXXの開発環境を作りました。

ここでは、Windows 10上に REXX環境を作った時のログを残しておきたいと思います。

 

REXXのおさらい

いきなり導入の手順に入る前に、REXXのおさらいをしておきたいと思います。

私は、かなり前にメインコンピュータ上で REXXのプログラムを作っていたのですが、久しぶりに開発しようとするとすっかり忘れていました。(T T)

REXXとは

REXX(Restructured eXtended eXecutor)という言語をご存じでしょうか。

REXXは、1979年3月29日に IBMフェローである Mike Cowlishaw が初期仕様を公開した言語です。かれこれ 42年以上使われ続けている言語になります。

REXXの特徴としては、インタープリター言語で、手続き型言語で、習得が容易であり、メインコンピュータから PCまで、幅広い環境で互換性を維持して稼働することなどがあります。

しかし、REXXを知っているとか、REXXで開発したことがあるという方は少ないのではないでしょうか。

やはり IBM社で開発されて、当初は IBM社のメインコンピュータOS VMの上で稼働し、その後も IBM社製品や関係会社の製品上でしか稼働しなかったからかもしれません。

それでも、2005年には Open source ooRexx (Open Object Rexx)が出て、オブジェクト指向オープンソースになったことにより、少しは知っている人が増えたかもしれません。

REXX開発の参考書

REXXに関する書籍は、非常に少ないです。

以前は何冊かあったようですが、今は IBM社の REXXのガイドと解説書ぐらいしかないかもしれません。

一番わかりやすいのは、以下のページです。

z/OS上の REXX開発については、ここが一番まとまっていると思います。

www.arteceed.net

しかし、Windows上で動かす ooREXXについては、ネット上でも有効なページを見つけられませんでした。

 

ooREXXの導入

z/OSでも Windowsでも同じ REXXプログラムが稼働するとはいえ、z/OS固有の機能を使用する部分は、Windowsの機能に書き換えなくてはなりません。一番換えないといけないのは、IOの部分です。

最初、ooRexx-4.2.0.windows.x86_64を導入しました。

しかし、ファイルの読み込みに z/OSの EXECIOの代わりに arrayInを使おうとしたのですが、どうしても配列にデータを読み込んでくれなくて動きません。

そこで、バージョンを下げて ooRexx320-1を再導入したのですが、結果は変わらずでした。

最終的には、arrayInの使用は諦めて、ooRexx 4.1.0から使用できるようになった Rexx Extensions Libraryの HostEmu (ExecIO, HI, TE, TS)を使用することにし、最終的に ooRexx-4.2.0.windows.x86_32を導入しました。

ログとして、ooRexx-4.2.0.windows.x86_32のダウンロード、ooRexx-4.2.0.windows.x86_32のインストール、稼働確認、ooRexx-4.2.0.windows.x86_64のアンインストールの手順をそれぞれ載せます。

ダウンロード

ダウンロードのページは、参考書のWebページからも飛べますが、念のために以下にも貼っておきます。

www.oorexx.org

 

Downloadsを選択します。

f:id:hanasakag:20211006175958p:plain

 

Release 4.2.0の ooRexx install filesを選択します。

f:id:hanasakag:20211006180037p:plain

 

ooRexx-4.2.0.windows.x86_32.exeを選択します。

f:id:hanasakag:20211006180212p:plain

インストール

ダウンロードした exeファイルをダブル・クリックして実行します。

f:id:hanasakag:20211012170808p:plain

 

ライセンスに同意します。

f:id:hanasakag:20211012170839p:plain

 

デフォルトでコンポーネントが選択されているので、必要に応じて外します。

f:id:hanasakag:20211012170905p:plain

 

導入先のディレクトリーを指定します。

f:id:hanasakag:20211012170941p:plain

 

Windowsでの実行が楽になるので、rxapiを Windowsサービスとして導入します。

f:id:hanasakag:20211012170954p:plain

 

.rexファイルが ooREXXで実行されるように、関連付けします。

f:id:hanasakag:20211012171012p:plain

 

デフォルトを選択しました。

f:id:hanasakag:20211012171024p:plain

 

エディターは VS Codeを使用しているが、ここではデフォルトを選択しました。

f:id:hanasakag:20211012171103p:plain

 

デフォルトを選択しました。

f:id:hanasakag:20211012171120p:plain

 

最後の画面が出るので、Installをクリックします。

f:id:hanasakag:20211012171135p:plain

 

Installが始まります。

f:id:hanasakag:20211012171204p:plain

 

Installが完了したので、必要に応じてチェックを付けて終了します。

f:id:hanasakag:20211012171222p:plain

 

稼働確認

helloworld.rexというファイルに、以下の REXXを記述して実行します。

/* REXX */
SAY "Hello, World!";

「Hello, World!」が表示されれば、稼働はOKです。

f:id:hanasakag:20211012174424p:plain

アンインストール

設定の「アプリと機能」から「Open Object Rexx」を選択し、「アンインストール」をクリックします。

f:id:hanasakag:20211012180203p:plain

 

再度「アンインストール」をクリックします。

f:id:hanasakag:20211012180225p:plain

 

Uninstallのウィザードが始まります。

f:id:hanasakag:20211012180249p:plain

 

rxapiを停止させます。

f:id:hanasakag:20211012180304p:plain

 

ディレクトリーも削除します。

f:id:hanasakag:20211012180326p:plain

 

最後の確認が表示されるので、「Uninstall」をクリックします。

f:id:hanasakag:20211012180339p:plain

 

Uninstallが始まります。

f:id:hanasakag:20211012180357p:plain

 

Uninstallが完了しました。

f:id:hanasakag:20211012180410p:plain

 

 

今回のREXXのプログラミングでは、メインコンピュータで実行させることを考慮しました。したがって、トラディショナルなコーディングしかしていません。

ooREXXの特徴であるクラスベースのオブジェクト指向言語的なプログラミングはできていないので、今後勉強していきたいと思います。