【2008/11/05 original author TAKAO】
変数とリテラル
REXXの変数は独特です。変数名は英字で始めます。続く文字は数字か、_です。大文字小文字の区別はありません。そして、VARIABLEと最初に変数名を書くと、その値も”VARIABLE”です。もちろん、他の言語と同様に代入式で値を変更できます。
VARIABLE = "hoge"
変数に型はありません。すべてが文字列だと思ってください。特定の演算時に、型変換されます。
リテラル(特定の値)は、” か、’ で囲みます。エスケープしたい時は、二回続けます。
VARIABLE = "He is ""strong"""
最後に文字で表せない場合、16進数表記や2進数表記が可能です。
VARIABLE = '0d0a'x /* おなじみ、CRLF */
VARIABLE = '0000 1101 0000 1010'b
配列
変数に.をつけると配列として扱われます。
ARRAY.1 = "asa"
ここでARRAYの部分を「幹(ステム)」と呼びます。これだけを指定すると、配列全体を意味します。
ARRAY. = 0
もちろん、添え字部分は変数が許されます。
I = 1
say ARRAY.I
添え字は、データは1から始まります。0には、配列の大きさが入ります。したがって配列を扱うループは次のように書きます。
DO I=1 TO ARRAY.0
say ARRAY.I
END
ラベル
関数の名前や、GOTO相当のSIGNAL命令でジャンプする先などにつけます。決めた名前の後ろに : をつけます。
say add(1,2)
exit
add: procedure
parse arg a,b
return a + b
式
改行が命令の切れ目です。続けたいときは , を最後につけます。
VARIABLE = ,
"hoge"
逆に一行に複数の命令を書きたいときは、 ; で区切ります。
VARIABLE = "hoge" ; say VARIABLE
プログラム中のコメントは、/* */ 中に書きます。これは、改行しても有効です。
/*
*/
命令群
ARG, CALL, DO, DROP, END, EXIT, IF, INTERPRET, ITERATE, LEAVE, NOP, NUMERIC, OPTIONS, PARSE, PROCEDURE, PULL, PUSH, QUEUE, RETURN, SAY, SELECT, SIGNAL, TRACEの23個くらいしかありません。
【2008/11/05 original author TAKAO】