04.お約束ごとと命令群

【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】