LoginSignup
1
0

More than 5 years have passed since last update.

はじめてのREXX

Posted at

入社以来、ホスト基盤エンジニアとして過ごしてきましたが、
REXXって便利だなーと思って、
若手ホスト基盤エンジニアに向けて入門編を書いてみようかと。。。

お作法
まずは1行目にコメント行でREXXと記述する必要があります。
ちなみにコメント行は /* コメント */で囲います。

お作法
/* REXX */

基本
最初はなんといってもHelloWorldでしょうか?
ということでHelloWorldしてみます。
以下の3つの挙動はすべて同じです。

1.出力文字列を”で囲う。
/* REXX */
SAY "HelloWorld"
2.出力文字列を直書き。
/* REXX */
SAY HelloWorld
3.出力文字列を’で囲う。
/* REXX */
SAY 'HelloWorld'

REXXの問題は文字列も変数も出力してしまうところ。よくもわるくも。
例えば、上記2のパターンで
変数:HelloWorldに文字列「こんにちは」が入っていたら、出力はこんにちはですが、
からっぽの場合、HelloWorldが出力されてしまうんですね。

柔軟なんですが、型を気にする言語の方からすると
気持ち悪いこと、この上ないのでは?

REXXは最大のメリットはJCLとの相性が抜群なところだと思います。
オープン系の方はシェルが慣れているので、シェルを使いたがりますが、
z/OS上で動く、USSシェルだと制限が多いんです。
難しく感じるかもしれませんが、z版VBAみたいなもんです。

引数の受け取り方
引数を渡すときは受け取り時にこんなふうに記述します。
以下の1と2は同じです。

引数の受け取り方1
Parse Arg 引数名1
引数の受け取り方2
Arg1=Arg(1)

複数はこれ

引数の受け取り方3
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を記述していますが、ここに記述する数値が呼び出し元に返されます。

とりあえずこんな感じですかね。
テーブル構造とかは別の機会に記述してみようと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0