【2008/11/06 original author TAKAO】
DO, END
Cなどで{}で囲むところをREXXではDO ENDで囲みます。不正確さを承知の上で簡単に説明すると、DO ENDで囲むことで複数の命令が一塊りとして扱われます。
DOVAR1 = "HELLO"VAR2 = "WORLD"say VAR1 VAR2END
IFと条件式の評価
IF文などはなにかのプログラミング言語を知っている人ならば、例を見たら説明は必要ないと思います。
IF VARIABLE = 0 THENSAY "zero"ELSESAY "non zero"
ただ、IF文やループでは必ず「条件式の評価」というのが必要です。比較演算子は以下のものがあります。
>, <, >=, <=, = これらはおなじみでしょうが、<> が等しくない(not equol)です。
Do ループ
条件式でのループの例です。
NUMが3より小さい間、繰り返す
NUM = 0DO WHILE NUM < 3SAY "small"END
条件になるまで、繰り返す(WHILEとの違いは必ず一度は行われる)
NUM = 4DO UNTIL NUM > 3SAY "LARG"END
決まった回数繰り返す
DO 5SAY "hello"END
変数をコントロールしながら繰り返す
DO I=1 to 100 BY 2SAY IEND
ループから途中で抜けたい場合には、LEAVEか、ITERATEを使います。LEAVEは、もっとも内側のDO ENDを終了してしまいます。ITERATEは、もっとも内側のDO END内をDOに戻って行います。
LEAVEの例:
DO 4say "--"DO 3SAY "test"LEAVEENDEND
結果:
--test--test--test--test
ITERATEの例
DO 3SAY "--"DO 5SAY "test"ITERATESAY "test2"ENDEND
結果:
--testtesttesttesttest--testtesttesttesttest--testtesttesttesttest
SELECT, WHEN, OTHERWISE, END
REXXのSELECT文は、あまり便利とはいえません。以下のように違う条件を書け、わかりにくくなる可能性があります。
VAR1 = "blue"VAR2 = "yellow"SELECTWHEN VAR1 = "blue" THEN SAY "blue"WHEN VAR2 = "red" THEN SAY "red"WHEN VAR2 = "yellow" THEN SAY "yellow"OTHERWISESAY "white"END
NOP
なにもしない命令です。こういう時に使います。
IF A=B THENNOPELSESAY "not qual"
以上で制御系はおわりです。
【2008/11/06 original author TAKAO】