05.REXX 制御文

By 高尾 - Posted: 2008/11/06 Last updated: 2010/06/17 - Leave a Comment

DO, END

Cなどで{}で囲むところをREXXではDO ENDで囲みます。不正確さを承知の上で簡単に説明すると、DO ENDで囲むことで複数の命令が一塊りとして扱われます。
DO
VAR1 = “HELLO”
VAR2 = “WORLD”
say VAR1 VAR2
END

IFと条件式の評価

IF文などはなにかのプログラミング言語を知っている人ならば、例を見たら説明は必要ないと思います。

IF VARIABLE = 0 THEN
SAY “zero”
ELSE
SAY “non zero”

ただ、IF文やループでは必ず「条件式の評価」というのが必要です。
比較演算子は以下のものがあります。
>, <, >=, <=, = これらはおなじみでしょうが、
<> が等しくない(not equol)です。

Do ループ

条件式でのループの例です。

NUMが3より小さい間、繰り返す。
NUM = 0
DO WHILE NUM < 3
SAY "small"
END

条件になるまで、繰り返す。(WHILEとの違いは必ず一度は行われる)
NUM = 4
DO UNTIL NUM >3
SAY “LARG”
END

決まった回数繰り返す
DO 5
SAY “hello”
END

変数をコントロールしながら繰り返す
DO I=1 to 100 BY 2
SAY I
END

ループから途中で抜けたい場合には、LEAVEか、ITERATEを使います。
LEAVEは、もっとも内側のDO ENDを終了してしまいます。ITERATEは、もっとも内側のDO END内をDOに戻って行います。

LEAVEの例:
DO 4
say “—–”
DO 3
SAY “test”
LEAVE
END
END

結果:
—–
test
—–
test
—–
test
—–
test

ITERATEの例
DO 5
SAY “—–”
DO 10
SAY “test”
ITERATE
END
END

結果:
—–
test
test
test
—–
test
test
test
—–
test
test
test
test
—–
test
test
test

SELECT, WHEN, OTHERWISE, END

REXXのSELECT文は、あまり便利とはいえません。以下のように違う条件を書け、わかりにくくなる可能性があります。

VAR1 = “blue”
VAR2 = “yellow”
SELECT
WHEN VAR1 = “blue” THEN SAY “blue”
WHEN VAR2 = “red” THEN SAY “red”
WHEN VAR2 = “yellow” THEN SAY “yellow”
OTHERWISE
SAY “white”
END

NOP

なにもしない命令です。こういう時に使います。
IF A=B THEN
NOP
ELSE
SAY “not qual”

以上で制御系はおわりです。
Posted in REXX入門 • • Top Of Page