ARG

ARG は、プログラムまたは内部ルーチンに提供された引数ストリングを検索して、それらを変数に割り当てます。

構文図を読むビジュアル構文図をスキップ ARG テンプレート・リスト ;
ARG は、次の命令の短縮形です。
構文図を読むビジュアル構文図をスキップ PARSE UPPER ARG テンプレート・リスト ;

template_list は、多くの場合は単一のテンプレートですが、複数のテンプレートをコンマで区切って指定することもできます。 テンプレートを指定する場合、各テンプレートは、ブランクまたはパターン (あるいはその両方) で区切ったシンボルのリストです。

サブルーチンまたは内部関数が処理されていない限り、プログラムにパラメーターとして渡されるストリングは、構文解析に関するセクション ( 構文解析) で説明されている規則に従って変数に構文解析されます。

サブルーチンまたは内部関数の実行中に使用されるデータは、 呼び出し元がそのルーチンに渡す引数ストリングです。

いずれの場合も、渡されたストリングは、大文字に (つまり、小文字の a-z が大文字の A-Z に) 変換されてから、処理されます。 大文字変換を望まない場合には、PARSE ARG 命令を使用してください。

同じソース・ストリング (単数または複数) に対して、ARG 命令 および PARSE ARG 命令を繰り返し使用できます (通常、テンプレートは異なるものを使用します)。 ソース・ストリングは変わりません。 解析されるデータの長さまたは内容に関する制約事項は、 呼び出し元によって課せられるもの以外はありません。

/* String passed is "Easy Rider"  */

Arg adjective noun .

/* Now:  ADJECTIVE  contains 'EASY'           */
/*       NOUN       contains 'RIDER'          */

プログラムまたはルーチンで複数のストリングを使用したい場合、 解析する template_list の中にコンマを使用して、 各テンプレートが順番に選択されるようにすることができます。

/* Function is called by  FRED('data X',1,5)    */

Fred:  Arg string, num1, num2

/* Now:   STRING  contains 'DATA X'             */
/*        NUM1    contains '1'                  */
/*        NUM2    contains '5'                  */
注:
  1. ARG 組み込み関数は、REXX プログラムまたは内部ルーチンに対する引数ストリングを検索または検査することもできます。 ARG (Argument)を参照してください。
  2. プログラムへ入る時点で、処理されているデータのソースも使用可能にされます。 詳細については、PARSE 命令 (SOURCE オプション) PARSE を参照してください。