|
≫ |
|
|
|
HP OpenVMS DCL ディクショナリ
F$ELEMENT
指定した区切り文字で区切られた要素で構成される文字列から, 1 つの要素を取り出します。
形式
F$ELEMENT (要素番号, 区切り文字, 文字列)
戻り値
指定された要素を含む文字列。
引数
要素番号取り出される要素の番号を指定します ( 要素番号は0から始まります )。
要素番号 引数は,整数式として指定します。
要素番号 が文字列に含まれる要素の数より大きい場合には,区切り文字が戻されます。
区切り文字文字列に含まれる要素を区切るために,使用する文字を指定します。区切り文字は,文字列式として指定します。
文字列区切り文字で区切られた要素のリストを含む文字列を指定します。文字列は,文字列式として指定します。
例
#1 |
$ DAY_LIST = "MON/TUE/WED/THU/FRI/SAT/SUN"
$ INQUIRE DAY "ENTER DAY (MON TUE WED THU FRI SAT SUN)"
$ NUM = 0
$ LOOP:
$ LABEL = F$ELEMENT(NUM,"/",DAY_LIST)
$ IF LABEL .EQS. "/" THEN GOTO END
$ IF DAY .EQS. LABEL THEN GOTO 'LABEL'
$ NUM = NUM +1
$ GOTO LOOP
$
$ MON:
.
.
.
|
この例では,リストに含まれる要素のそれぞれと,入力値を比較するためのループが設定されています。 DAY に対する値が DAY_LIST の 1 要素と一致する場合には,制御は対応するラベルに移ります。 F$ELEMENT 関数から戻される値が区切り文字の場合には, DAY の値は DAY_LIST に含まれていないため,制御は END というラベルに移ります。
#2 |
$ ! INDEX.COM
$ !
$ CHAPTERS = "0,1,2,3,4,5,6,A,B,C"
$ NEXT = 0
$ LOOP:
$ NEXT = NEXT + 1
$ NUM = F$ELEMENT(NEXT,",",CHAPTERS)
$ IF (NUM .NES. ",")
$ THEN
$ RUN INDEX CHAP'NUM'
$ GOTO LOOP
$ ENDIF
|
この例ではファイルに CHAP1, CHAP2, ... CHAP6, CHAPA, CHAPB, CHAPC という順に名前を付けるプロセスを示しています。プロシージャ・ロジックを初期化状態にするため,ゼロは CHAPTERS という文字列に含まれます。 NEXT はゼロに初期化されます。このプロシージャはループを実行します。最初の繰り返しで NEXT は 1 に増え,その結果 "1" を呼び出します。次にプロシージャは index, chapter1 を実行します。 2 回めの繰り返しで NEXT は 2 に増え,その結果 "1" を呼び出します。さらにプロシージャは index, chapter2 を実行し,指定した区切り文字を呼び出すまでプロセスは続きます。
|