前へ | 次へ | 目次 | 索引 |
指定した区切り文字で区切られた要素で構成される文字列から,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 を実行し, 指定した区切り文字を呼び出すまでプロセスは続きます。
DCL コマンド環境に関する情報を戻します。
F$ENVIRONMENT (項目)
項目
戻される情報のタイプを指定します。次に示すキーワードのいずれか 1 つを指定します (キーワードを短縮することはできません)。
項目 データ・
タイプ戻される情報 CAPTIVE 文字列 CAPTIVE 属性を持ったアカウントにログインしている場合は,TRUE を戻します。システム管理者は,Authorize ユーティリティ(AUTHORIZE)を使用して,利用者登録ファイルにも CAPTIVE アカウントを定義できます。 CONTROL 文字列 SET CONTROLコマンドによって現在使用可能になっている制御文字を戻します。複数の制御文字が使用可能な場合には,各文字はコンマで区切られます。制御文字が使用可能ではない場合には,空文字列 ("") が戻されます。 DEFAULT 文字列 現在の省略時の装置,およびディレクトリ名を戻します。戻される文字列は SHOW DEFAULT コマンドにより出力される文字列と同じです。 DEPTH 整数値 現在のコマンド・プロシージャのネスティングの中での深さを,整数として戻します。会話型でコマンド・プロシージャを実行する場合,およびバッチ・ジョブでコマンド・プロシージャを実行する場合,コマンド・プロシージャの深さは 0 です。ネスティングされたコマンド・プロシージャの深さは,そのネスティングされたプロシージャを実行したコマンド・プロシージャの深さより,1だけ大きな値です。 DISIMAGE 文字列 RUN,MCR やフォーリン・コマンドの実行が禁止されているアカウントの場合は, TRUE を戻します。システム管理者は Authorize ユーティリティを使用して,利用者登録ファイル内のアカウントに DISIMAGE 属性を追加または削除できます。 INTERACTIVE 文字列 プロセスが会話型で実行されている場合は,TRUE を戻します。 KEY_STATE 文字列 現在ロックされているキーパッド状態を示す文字列を戻します。キーパッド状態についての詳細は,DEFINE/KEY コマンドの説明を参照してください。 MAX_DEPTH 整数値 コマンド・プロシージャの最大の深さを示す整数を戻します。 MESSAGE 文字列 SET MESSAGE コマンドによる現在の設定を示す文字列を戻します。この文字列には,修飾子名を区切るために,スラッシュ(/) が含まれています。したがって,F$ENVIRONMENT("MESSAGE") からの出力を, SET MESSAGE コマンドのうしろに追加することにより,有効な DCL コマンド行を作成できます。 NOCONTROL 文字列 SET NOCONTROL コマンドによって,現在禁止されている制御文字を戻します。複数の文字が禁止されている場合には,各文字はコンマ(,)で区切られます。 SET NOCONTROL コマンドによって制御文字が禁止されていない場合には,空文字列が戻されます。 ON_CONTROL_Y 文字列 コマンド・プロシージャから実行される場合は, ON_CONTROL_Y が設定されていれば TRUE を戻します。 DCL コマンド・レベルでは,ON_CONTROL_Y は常に FALSE を戻します。 ON_SEVERITY 文字列 コマンド・プロシージャから実行される場合は, ON コマンドで指定した動作が実行される重要度を戻します。 SET NOON が有効な場合,またはDCL コマンド・レベルで使用した場合, ON_SEVERITY は NONE を戻します。 OUTPUT_RATE 文字列 省略時の出力速度を含むデルタ時間文字列を戻します。これは,バッチ・ジョブの実行中に,バッチ・ジョブ・ログ・ファイルにデータが書き込まれる頻度を示します。会話型で使用した場合,OUTPUT_RATE は空文字列を戻します。 PROCEDURE 文字列 現在のコマンド・プロシージャのファイル指定を戻します。会話型で使用した場合は,端末装置名が戻されます。 PROMPT 文字列 現在の DCL プロンプトを戻します。 PROMPT_CONTROL 文字列 プロンプトの前に改行が挿入される場合は TRUE を戻します。 PROTECTION 文字列 現在の省略時のファイル保護を示す文字列を戻します。文字列は有効な DCL コマンド行となるように, SET PROTECTION/DEFAULT コマンドで使用できる形式です。 RESTRICTED 文字列 制限付アカウントの場合は TRUE を戻します。システム管理者は,Authorize ユーティリティを使用して,利用者登録ファイルに制限付アカウントを定義できます。 SYMBOL_SCOPE 文字列 現在のシンボルの定義範囲を示すため,文字列 [NO] LOCAL, [NO] GLOBALを戻します。 VERB_SCOPE 文字列 動詞の現在のシンボルの定義範囲を示すため,文字列 [NO] LOCAL, [NO] GLOBAL を戻します (詳細は,SET SYMBOL コマンドの説明を参照してください)。 VERIFY_IMAGE 文字列 SET VERIFY=IMAGE コマンドが有効である場合は,TRUE を戻します。イメージ・チェックが有効な場合には,コマンド・プロシージャは,イメージによって読み込まれた入力データを表示します。 VERIFY_PREFIX 文字列 SET PREFIX コマンドで設定される前置制御文字列を戻します。 VERIFY_PROCEDURE 文字列 SET VERIFY=PROCEDURE コマンドが有効である場合は, TRUE を戻します。コマンド・チェックが有効な場合には,コマンド・プロシージャは, DCL コマンド行を表示します。
#1 |
---|
$ SAVE_MESSAGE = F$ENVIRONMENT("MESSAGE") $ SET MESSAGE/NOFACILITY/NOIDENTIFICATION . . . $ SET MESSAGE'SAVE_MESSAGE' |
この例では,F$ENVIRONMENT 関数を使用して,現在のメッセージ設定を変更する前に,その設定を保存します。コマンド・プロシージャの最後で,もとのメッセージ設定が復元されます。 SAVE_MESSAGE というシンボルを囲む一重引用符 (' ') は,そのシンボル名を値と置き換えるように指定しています。
#2 |
---|
$ MAX = F$ENVIRONMENT("MAX_DEPTH") $ SHOW SYMBOL MAX MAX = 32 Hex = 00000020 Octal = 00000000040 |
この例では,コマンド・プロシージャ内で可能な最大のネスティングの深さを判断するために,F$ENVIRONMENT 関数を使用しています。
#3 |
---|
$ SAVE_PROT = F$ENVIRONMENT("PROTECTION") $ SET PROTECTION = (SYSTEM:RWED, OWNER:RWED, GROUP, WORLD)/DEFAULT . . . $ SET PROTECTION = ('SAVE_PROT')/DEFAULT |
この例では,F$ENVIRONMENT 関数を使用して,保護を変更する前に,現在の省略時の保護を保存します。コマンド・プロシージャの最後で,もとの保護に戻されます。シンボル置換を要求するためには, SAVE_PROT というシンボルを引用符で囲まなければなりません。
文字列から部分文字列を取り出します。
F$EXTRACT (開始, 長さ, 文字列)
開始
取り出したい部分文字列の先頭のオフセットを指定します。 0 以上の整数式として指定します。オフセットは文字の相対位置,または文字列の先頭の部分文字列です。オフセット位置は 0 から始まります。文字列は,常に左端の文字から始まります。
文字列の長さ以上のオフセットを指定した場合には,空文字列 ("") を戻します。
長さ
取り出す文字数を指定します。文字列サイズ以下でなければなりません。長さは,0 以上の整数式を指定します。オフセットから文字列の最後までの文字数より大きな値の長さを指定すると,オフセットから文字列の最後までの文字を戻します。
文字列
編集する文字列を指定します。文字列には,文字列式を指定します。
#1 |
---|
$ NAME = "PAOLO TESTA" $ FIRST = F$EXTRACT(0,5,NAME) $ SHOW SYMBOL FIRST FIRST = "PAOLO" |
この例はコマンド・プロシージャの一部であり,シンボル NAME に割り当てられた文字列から最初の 5 文字を取り出すために, F$EXTRACT 関数を使用しています。オフセット引数と長さ引数は整数であり,文字列引数はシンボルです。レキシカル関数に対する引数として整数やシンボルを使用する場合には,これらを引用符 (" ") で囲む必要はありません。
#2 |
---|
$ P1 = "MYFILE.DAT" $ FILENAME = F$EXTRACT(0,F$LOCATE(".",P1),P1) |
この例もコマンド・プロシージャの一部です。文字列からある1文字を見つけ,その位置で終わる部分文字列を取り出す方法を示しています。
F$LOCATE 関数は, P1 に対応する文字列中のピリオドのオフセット位置を示す数値を戻します (ピリオドのオフセット位置は,ピリオドの前の部分文字列の長さと同じです)。
F$EXTRACT 関数の引数として F$LOCATE 関数を使用して,文字列から取り出す文字数を指定しています。パラメータ MYFILE.DAT を使用してプロシージャを呼び出し,これらのステートメントを実行すると,シンボル FILENAME に MYFILE という値が割り当てられます。
上記の例で F$LOCATE 関数は,ファイル指定にサブディレクトリ名を含むディレクトリ指定や,ノード名が含まれていないとして解釈しています。完全なファイル指定からファイル名を取り出すためには,F$PARSE 関数を使用します。
#3 |
---|
$ IF F$EXTRACT(12,2,F$TIME()) .GES. "12" THEN GOTO AFTERNOON $ MORNING: $ WRITE SYS$OUTPUT "Good morning!" $ EXIT $ AFTERNOON: $ WRITE SYS$OUTPUT "Good afternoon!" $ EXIT |
この例では,現在の時刻が午前であるか午後であるかに応じて,異なるメッセージを表示するプロシージャを示しています。最初に,F$TIME 関数を使用して,現在の時刻が戻されます。 F$TIME 関数は文字列を戻し,この文字列が F$EXTRACT 関数に対する文字列引数として使用されます。 F$TIME 関数が引数として使用されている場合には,この関数は自動的に評価されるので,引用符を使用する必要はありません。
次に F$EXTRACT 関数は, F$TIME から戻された日付と時刻の示された文字列から時を取り出します。 F$TIME から渡される文字列には,常に先頭から12 文字のオフセットから時フィールドが含まれています。
F$EXTRACT 関数は,このオフセットから始まる 2 文字を文字列から取り出し,取り出した文字列値と文字列値 12 を比較します。比較結果が真の場合には,プロシージャは "Good afternoon!" を出力します。比較結果が偽の場合には,"Good morning!" を出力します。
また,時刻指定から時フィールドを取り出すために,F$CVTIME 関数を使用できます。 F$CVTIME 関数を使用する方が,上記の例に示されている方法に比べ簡単です。
$FAO システム・サービスを呼び出し,指定された制御文字列を, ASCII 形式に整えられた出力文字列に変換します。書式を指定して,整数値を文字列に変換したり,キャリッジ・リターンやフォーム・フィードを挿入したり,テキストを挿入したりできます。
F$FAO (制御文字列[,引数[,...]])
制御文字列
出力文字列の固定テキストと FAO ディレクティブを結合したものです。制御文字列の長さは任意であり, FAO ディレクティブをいくつでも含むことができます。制御文字列では,文字列式として指定します。F$FAO 関数は,FAO ディレクティブを使用して,ASCII 形式のデータを変更したり,制御文字列中の固定テキストに割り当てたりします。
表 DCLI-4 は制御文字中で指定する FAO ディレクティブを示しています。
引数[,...]
制御文字列中の FAO ディレクティブに対する 1〜15 の引数。引数は,整数式または文字列式として指定します。 表 DCLI-4 は,各 FAO ディレクティブと必要な引数タイプを示しています。FAO ディレクティブは 1 つまたは複数の引数を必要とすることがあります。その順序は,制御文字列のものと正確に一致しなくてはなりません。そうでない場合でも,エラー・メッセージは出力されません。
対応するディレクティブに対して指定可能なタイプ(整数または文字列)ではない引数を指定すると,予測できない結果が戻されます。 F$INTEGER や F$STRING を使用して適当な型に変換してください。
引数に不足がある場合,F$FAO は引数リストを越えて読もうとします。そのため,制御文字列のディレクティブに一致する引数を必ず指定してください。
対応するディレクティブに対して指定可能なタイプ(整数または文字列)ではない引数を指定すると,コマンドが実行されなかったという予測できないエラーになります。このエラーは,$FAO システム・サービスからのものそのままです。
$FAO システム・サービスを起動し, 文字および数値入力を ASCII 文字列に変換します (FAO は formatted ASCII output の略です)。書式を指定して,整数値を文字列に変換したり,キャリッジ・リターンやフォームフィードをテキストを挿入したり,テキストを挿入したりできます。以下のフォーマットを使用して FAO ディレクティブを指定します。
フォーマット 機能 !DD 1つのディレクティブです。 !n(DD) 指定した回数を繰り返します。 !lengthDD 指定した長さのフィールドに出力します。 !n(lengthDD) 指定した回数を繰り返し,指定した長さのフィールドに出力します。
感嘆符(!) は,それ以降の文字または文字列が FAO ディレクティブとして解釈されることを示しています。 DDは F$FAO が実行するためのアクションであることを示す, 1つまたは 2つの大文字のコードを表しています。繰り返し数を指定する場合, n はディレクティブが繰り返される回数を指定する10 進数です。 length値は, "length" 文字の出力フィールドを表わすために F$FAO に指示する 10 進数です。
繰り返し回数と出力の長さは,絶対数ではなく, (#) を使用して指定することもできます。 (#) を使用した場合は,引数リストの相当する位置に整数式として数値を指定します。
変数出力フィールドを繰り返し回数で指定すると,長さパラメータは 1 つだけ必要です。これは,各出力文字列はそれぞれ長さを指定しているからです。
FAO ディレクティブは以下のカテゴリでグループ化されます。
- 文字列挿入
- ゼロ埋め込み数値変換
- 空白埋め込み数値変換
- 特殊編集
- パラメータ解釈
表 DCLI-4 は, FAO ディレクティブと必須の引数タイプを示しています。次の節では文字列挿入, ゼロ埋め込み数値変換,および空白埋め込み数値変換を実行するディレクティブの出力文字列を説明します。
注意
$FAO システム・サービスではサポートされていますが, DCL F$FAO レキシカル関数ではサポートされていない 2 つのタイプのディレクティブがあります。その 2 つのタイプを次に示します。
- クォドワード数値ディレクティブ( Q, H, および J )。すべての DCL 数値はロングワードとして格納されるので, DCL ではサポートされません。
- !AS ディレクティブ以外の文字列ディレクティブ。すべての DCL 文字列は記述子として格納されるので, DCL ではサポートされません。
$FAO システム・サービス・ディレクティブについての詳細は『OpenVMS System Services Reference Manual』を参照してください。
表 DCLI-4 FAO ディレクティブの要約 ディレクティブ 引数の型 説明 文字列挿入: !AS 文字列 文字列をそのまま挿入する。 ゼロ埋め込み数値変換: !OB 整数 バイトから8進数表現に変換する。 !OW 整数 ワードから8進数表現に変換する。 !OL 整数 ロング・ワードから8進数表現に変換する。 !XB 整数 バイトから 16 進数表現に変換する。 !XW 整数 ワードから 16 進数表現に変換する。 !XL 整数 ロング・ワードから 16 進数表現に変換する。 !ZB 整数 バイトから 10 進数表現に変換する。 !ZW 整数 ワードから 10 進数表現に変換する。 !ZL 整数 ロング・ワードから 10 進数表現に変換する。 空白埋め込み数値変換: !UB 整数 負数調整なしにバイトから 10 進数表現に変換する。 !UW 整数 負数調整なしにワードから 10 進数表現に変換する。 !UL 整数 負数調整なしにロング・ワードから 10 進数表現に変換する。 !SB 整数 負数変換してバイトから 10 進数表現に変換する。 !SW 整数 負数変換してワードから 10 進数表現に変換する。 !SL 整数 負数変換してロング・ワードから 10 進数表現に変換する。 特殊編集: !/ None キャリッジ・リターンとライン・フィードを挿入する。 !_ None タブを挿入する。 !^ None フォーム・フィードを挿入する。 !! None 感嘆符(!)を挿入する。 !%I 整数 ロング・ワードの整数を名前形式の UIC 形式 [グループ識別子,メンバ識別子] に変換する。 !%S None 最近変換された数値が1でないとき"S" を挿入する。 (マルチ・リンガル製品で使用することは推奨しません。) !%U 整数 ロング・ワードの整数を数値 UIC 形式[g,m] に変換する。ここで g はグループ番号,m はメンバ番号。 ディレクティブが,かぎかっことカンマを挿入する。 !n<...!> None n 文字のフィールドに,すべてのデータを左詰めし,残りを空白で埋める。 !n* c None c で表現される文字を n 回繰り返する。 !n%C 文字列 最も最近評価された引数の値が n の時,文字列を挿入する(マルチ・リンガル製品で使用する)。 !%E 文字列 最も最近評価された引数が先行するどの !n%C ディレクティブにも一致しない時,文字列を挿入する(マルチ・リンガル製品で使用する)。 !%F None 複数形の終わりにマークする。 !%T 整数 0 現在時刻を挿入する。 !%D 整数 0 現在日付時刻を挿入する。 引数の解釈: !- None 最後の引数を再使用する。 !+ None 次の引数をスキップする。
文字列挿入による出力文字列
!AS ディレクティブは,制御文字列に(ディレクティブの引数として指定された)文字列を挿入します。制御文字列に文字列を挿入した場合, 文字列のフィールドの長さは,文字列の長さになります(これが省略時の設定です)。省略時の長さが明示的に指定したフィールドの長さよりも短い場合は,文字列は左詰めされ,残りは空白で埋められます。省略時の長さが明示的に指定したフィールドの長さよりも長い場合は,文字列の右端は切り捨てられます。
ゼロ埋め込み数値変換のためのディレクティブは, (ディレクティブの引数として指定された)整数を, 10 進数, 8進数, または 16 進数表現に変換します。整数の ASCII 表現は,制御文字列に挿入されます。変換された引数の省略時の出力フィールドの長さは,以下のように決められます。
- 引数を 10 進数表現に変換するディレクティブは,バイト変換では 3 桁, ワード変換では 6 桁, ロングワード変換では 11桁を返します。数字は右詰めされ,左端はゼロで埋められます。省略時の長さより明示的に指定したフィールドの長さが長い場合は,左端は空白で埋められます。省略時の長さより明示的に指定したフィールドの長さが短い場合は,左端は切り捨てられます。
- 引数を 8 進数表現に変換するディレクティブは,バイト変換では 2 桁, ワード変換では 4 桁, ロングワード変換では 8 桁を返します。数字は右詰めされ,左端はゼロで埋められます。省略時の長さより明示的に指定したフィールドの長さが長い場合は,左端は空白で埋められます。省略時の長さより明示的に指定したフィールドの長さが短い場合は,左端は切り捨てられます。
- 引数を 16 進数表現に変換するディレクティブは, 16 進数で要求される数の文字を返します。省略時の長さより明示的に指定したフィールドの長さが長い場合は,左端はゼロで埋められます。省略時の長さより明示的に指定したフィールドの長さが短い場合は,出力フィールドはすべてアスタリスク (*) で埋められます。
バイト変換では引数の 2 進表現の下位 8 ビットのみを,ワード変換では下位 16 ビットのみを使用します。ロングワード変換では,32 ビットすべてを使用します。
空白埋め込み数値変換のディレクティブは, (ディレクティブの引数として指定された)整数を 10 進数表現に変換します。これらのディレクティブは,符号付きあるいは符号なしとして整数を変換できます。整数の ASCII 表現は,制御文字列に挿入されます。
変換された引数の出力フィールドの長さは,必要な文字数です (これが省略時の設定です)。明示的に指定したフィールドの長さよりも値が短い場合は,右詰めされ残は空白で埋められます。明示的に指定したフィールドの長さよりも値が長い場合は,フィールドはアスタリスクで埋められます。
バイト変換では引数の 2 進表現の下位 8 のみを,ワード変換では下位16ビットのみを使用します。ロングワード変換では 32ビットすべてを使用します。
!n%C および !%E ディレクティブは, (最後に評価された引数の値をもとにした) ASCII 文字を出力文字列に挿入します。これらのディレクティブは,不規則な複数の名詞や動詞を挿入するときに便利です。
最後に評価された引数が n と等しい場合は, 2 つのディレクティブ間のテキストは出力文字列に挿入されます。最後に評価された引数が n と等しくない場合は,次の !n%C ディレクティブが実行されます。
n が負数の場合は,引数として指定し(#)を使用しなくてはなりません。
!n%C および !%E ディレクティブを,繰り返し回数で指定することができます。繰り返し回数を指定すると, 2つのディレクティブ間のテキストは指定された回数だけ出力文字列にコピーされます。
%F ディレクティブは複数の文の終わりを示します。
#1 |
---|
$ COUNT = 57 $ REPORT = F$FAO("NUMBER OF FORMS = !SL",COUNT) $ SHOW SYMBOL REPORT REPORT = "NUMBER OF FORMS = 57" |
このコマンド・プロシージャでは,制御文字列で !SL という FAO ディレクティブを使用することにより, COUNT というシンボルに割り当てられている値が,文字列に変換されます。変換後の文字列は,制御文字列に挿入されます。
COUNT には,57 という整数値が割り当てられています。したがって F$FAO関数は "NUMBER OF FORMS=57" という ASCII 文字列を戻し,この文字列をREPORT というシンボルに割り当てます。
#2 |
---|
$ A = "ERR" $ B = "IS" $ C = "HUM" $ D = "AN" $ PHRASE = F$FAO("TO !3(AS)",A,B,C+D) $ SHOW SYMBOL PHRASE $ PHRASE = "TO ERRISHUMAN" |
このコマンド・プロシージャでは, A,B,C,および D というシンボルに割り当てられている値を,制御文字列に挿入するために,!AS デイレクティブが使用されています。
!AS ディレクティブに対して,3という繰り返し回数が指定されているため, F$FAO は 3 つの引数を調べます。この例では,引数にシンボル A ("ERR"),シンボル B ("IS"),および C+D という式 ("HUMAN") が含まれています。これらの文字列引数の値が連結され, "ERRISHUMAN" という文字列が作成されます。
#3 |
---|
$ A = "ERR" $ B = "IS" $ C = "HUMAN" $ PHRASE = F$FAO("TO !#(#AS)",3,6,A,B,C) $ SHOW SYMBOL PHRASE $ PHRASE = "TO ERR IS HUMAN " |
このコマンド・プロシージャでは,文字列を書式化するために, !AS ディレクティブを指定した F$FAO 関数が使用されています。最初の番号記号 (#)は,最初の引数である 3 によって与えられる繰り返し回数を示しています。 2番目の番号記号 (#) は, 2番目の引数である 6が与えられるフィールド・サイズを示しています。次の3つの引数(A,B,および C)は,!AS ディレクティブが繰り返されるたびに,制御文字列に挿入される文字列を示します。
各引数文字列は,6文字の長さのフィールドに出力されます。各文字列は6文字より短いため,各フィールドは左桁ぞろえされ,右側に空白が挿入されます。この結果,作成された文字列は,PHRASE というシンボルに割り当てられます。
#4 |
---|
$ OFFSPRING = 1 $ REPORT = F$FAO- ("There !0UL!1%Cis!%Eare!%F !-!UL !-!0UL!1%Cchild!%Echildren!%F here",1) $ SHOW SYMBOL REPORT $ REPORT ="There is 1 child here" |
このコマンド・プロシージャでは, !0UL ディレクティブは引数 OFFSPRING を評価しますが,出力文字列に値を挿入しません。 !n%C ディレクティブは,その値と引数 OFFSPRING の値が一致するので, "is"という文字列を出力文字列に挿入します。出力文字列の適切な位置に正確な文字が挿入されるよう修正するため, !-!UL ディレクティブは,2回目の引数の評価をします。 !%F ディレクティブは,それぞれの複数文の終わりを示しています。 F$FAO 関数は "There is 1 child here"という ASCII 文字列を返して,それを REPORT というシンボルに割り当てます。
前へ | 次へ | 目次 | 索引 |