【2008/11/06 original author TAKAO】
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 3
SAY "--"
DO 5
SAY "test"
ITERATE
SAY "test2"
END
END
結果:
--
test
test
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"
以上で制御系はおわりです。
【2008/11/06 original author TAKAO】