入社以来、ホスト基盤エンジニアとして過ごしてきましたが、
REXXって便利だなーと思って、
若手ホスト基盤エンジニアに向けて入門編を書いてみようかと。。。
お作法
まずは1行目にコメント行でREXXと記述する必要があります。
ちなみにコメント行は /* コメント */で囲います。
/* REXX */
基本
最初はなんといってもHelloWorldでしょうか?
ということでHelloWorldしてみます。
以下の3つの挙動はすべて同じです。
/* REXX */
SAY "HelloWorld"
/* REXX */
SAY HelloWorld
/* REXX */
SAY 'HelloWorld'
REXXの問題は文字列も変数も出力してしまうところ。よくもわるくも。
例えば、上記2のパターンで
変数:HelloWorldに文字列「こんにちは」が入っていたら、出力はこんにちは
ですが、
からっぽの場合、HelloWorld
が出力されてしまうんですね。
柔軟なんですが、型を気にする言語の方からすると
気持ち悪いこと、この上ないのでは?
REXXは最大のメリットはJCLとの相性が抜群なところだと思います。
オープン系の方はシェルが慣れているので、シェルを使いたがりますが、
z/OS上で動く、USSシェルだと制限が多いんです。
難しく感じるかもしれませんが、z版VBAみたいなもんです。
引数の受け取り方
引数を渡すときは受け取り時にこんなふうに記述します。
以下の1と2は同じです。
Parse Arg 引数名1
Arg1=Arg(1)
複数はこれ
Parse Arg 引数名1 引数名2
REXXは引数でAAA BBB
を渡しても、
受け取るREXXがParse Arg Arg1
になっていたりすると
Arg1にはAAA BBB
が格納されます。
個人的には実装の際は、REXXに渡すのは複数の値でも「,」で連結して
REXX内部で分割していくほうが好きです。
文字の分割
REXXは結構文字列が使いやすいです。
上で説明しているように
Arg1にはAAA BBB
が格納されているとします。
この時、AAA,BBBをそれぞれ変数にいれたいときは以下のように記述します。
Parse Value Arg1 With Str1" "Str2
これでStr1にはAAA,Str2にはBBBが格納されるわけです。
うーん便利。
終わり方
これを記述するだけです。
Exit 0
この例では0を記述していますが、ここに記述する数値が呼び出し元に返されます。
とりあえずこんな感じですかね。
テーブル構造とかは別の機会に記述してみようと思います。