前へ | 次へ | 目次 | 索引 |
文字データからビット・フィールドを取り出し,その結果を符号なし値として整数に変換します。
F$CVUI (開始ビット, ビット数, 文字列)
開始ビット
取り出される最初のビットのオフセットを指定します。文字列の下位(右端)ビットは,オフセットでの位置番号 0 です。オフセットは整数式で指定します。負の値を持つ式や,文字列に含まれるビット数を越える値を持つ式を指定した場合, DCL は INVRANGE というエラー・メッセージを表示します。
ビット数
整数値に変換するために取り出されるビット文字列の長さを指定します。ここで指定する値は,文字列引数のビット数以下でなければなりません。負の値を持つ式を指定した場合や,ビット位置オフセットに加算すると誤った値になる式を指定した場合は, DCL は INVRANGE というエラー・メッセージを表示します。
文字列
編集する文字列を指定します。
#1 |
---|
$ A[0,32] = %X2B $ SHOW SYMBOL A A = "+" $ X = F$CVUI(0,4,A) $ SHOW SYMBOL X X = 11 Hex = 0000000B Octal = 00000000013 |
この例では,算術オーバーレイを使用して,シンボル A の 32 ビットすべてに 16 進数の 2B を割り当てています。シンボル A は未定義状態のため,オーバレイが実行されたあと,このシンボルには,文字列値が割り当てられます。 ( シンボルが未定義の場合には,算術オーバレイの結果として文字列値が割り当てられます。シンボルがすでに定義されていた場合には,オーバレイが実行されたあと,そのシンボルは同じデータ・タイプのままです。) 16 進数の 2B は,ASCII の "+" に対応します。
次に F$CVUI 関数がシンボル A から下位 4 ビットを取り出します。下位4ビットには,16 進数値 B の 2進表現が含まれています。これらのビットは,符号なし値として整数に変換されます。変換後の 11 という値が,シンボルX に割り当てられます。
指定した時刻から終了時刻までの時間の差を戻します。終了時刻は開始時刻と同じかそれより遅い時刻でなければなりません。
F$DELTA_TIME (開始時刻,終了時刻)
dddd hh:mm:ss.cc |
開始時刻
開始時刻を次のような形式の絶対時刻表記で指定します。
dd-mmm-yyyy hh:mm:ss.cc
終了時刻
終了時刻を次のような形式の絶対時刻表記で指定します。
dd-mmm-yyyy hh:mm:ss.cc
#1 |
---|
$ START=F$TIME() $ END=F$TIME() $ SHOW SYMBOL START START = "15-JUL-2003 16:26:35.77" $ SHOW SYMBOL END END = "15-JUL-2003 16:26:41.39" $ WRITE SYS$OUTPUT F$DELTA_TIME(START,END) 0 00:00:05.62 |
この例では,レキシカル関数 F$TIME() を使用して開始時刻と終了時刻のシンボルを定義しています。その後,F$DELTA_TIME を使用して開始時刻と終了時刻の差を表示しています。
選択基準に合う装置名をすべて返します。装置名はランダムな順序で返されます。
F$DEVICE ([検索する装置名], [装置クラス], [装置タイプ], [ストリームid])
検索する装置名
検索する装置名を文字列で指定します。ワイルドカード (* と %) 文字を使用できます。検索する装置名 引数は,文字列式として指定します。
装置クラス
検索する装置クラスを指定します。装置クラス 引数は,有効な装置クラス名に対応する文字列式として指定します。詳細は,$GETDVI システム・サービスの DVI$_DEVCLASS 項目を参照してください。
装置タイプ
検索する装置タイプを指定します。装置タイプ 引数は,有効なタイプ名に対応する文字列式として指定します。詳細は,$GETDVI システム・サービスの DVI$_DEVTYPE 項目を参照してください。
注意
装置クラスを指定せずに装置タイプを指定すると,エラーになります。
ストリーム id
検索ストリームを示す正の整数値F$DEVICE 関数を 2 回以上使用し,異なる選択基準引数を指定する場合,検索ストリーム識別番号を使用して,それぞれの検索コンテキストを管理します。コマンド・プロシージャの中で,F$DEVICE 関数を 2 回以上使用し,異なる選択基準指定引数を指定した場合には,各検索を別々に識別するために,ストリーム id 引数を指定しなければなりません。
装置名リストを最後まで読み出す前に選択基準を変更した場合は,コンテキストは再初期化され検索はまた先頭から開始されます。
ストリーム id 引数を省略すると, F$DEVICE 関数は検索ストリームが 1 つであると解釈します。つまり,異なる選択基準引数を指定するたびに,先頭から検索を開始します。
F$DEVICE 関数を使用すると,$DEVICE_SCAN システム・サービスを使用することにより,ある選択基準を満たす装置を検索できます。F$DEVICE 関数では,装置名に基づいた検索に限り,アスタリスク (*) およびパーセント記号 (%) ワイルドカード文字を使用できます。装置クラス,または装置タイプを指定する場合は,有効な文字列式を指定しなければなりません。
コマンド・プロシージャのループ内で F$DEVICE 関数を使用して,指定した選択基準に対応する装置名を戻すことできます。 F$DEVICE 関数を実行する毎に,基準に合った次の装置名を戻します。装置名はランダムな順序で戻されます。基準にあった装置をすべて戻すと,F$DEVICE 関数は空文字列を戻します。
明示的に (ストリームid 引数を指定して),または暗黙に (ストリームid引数を省略して) ,検索文字列のコンテキストを管理しなければなりません。どちらの場合も, 同一のストリーム (明示的あるいは暗黙的) で F$DEVICE システム・サービスを実行する毎に同じ選択基準を指定しなければなりません。
#1 |
---|
$ START: $ DEVICE_NAME = F$DEVICE("*0:","DISK","RA60") $ IF DEVICE_NAME .EQS. "" THEN EXIT $ SHOW SYMBOL DEVICE_NAME $ GOTO START |
ユニット番号 0 の RA60 をすべて表示するコマンド・プロシージャです。
ストリームid引数が指定されていないので, F$DEVICE は暗黙の検索ストリームを使用します。選択基準を変更していないので,装置名が順番に返されます。選択基準に合った最後の装置名を表示した後, F$DEVICE 関数は空文字列を返しコマンド・プロシージャを終了します。
現在の省略時のディレクトリ名文字列を戻します。 F$DIRECTORY 関数には引数はありませんが,括弧を指定しなければなりません。
F$DIRECTORY ()
なし。
F$DIRECTORY 関数を使用すると,コマンド・プロシージャの現在の省略時のディレクトリ名を保存し,別の作業のために省略時のディレクトリを他のディレクトリに変更し,再び元の設定に戻すことができます。
#1 |
---|
$ SAVE_DIR = F$DIRECTORY() $ SET DEFAULT [CARLEN.TESTFILES] . . . $ SET DEFAULT 'SAVE_DIR' |
この例は,現在の省略時のディレクトリ設定を保存するために, F$DIRECTORY 関数を使用するコマンド・プロシージャの一部を示しています。割り当て文で,SAVE_DIR というシンボルに,現在のディレクトリの値を割り当てます。次に SET DEFALT コマンドで,新しい省略時のディレクトリを設定します。このあと,SET DEFAULT コマンドで SAVE_DIR シンボルを使用することにより,もとの省略時のディレクトリに戻しています。
F$ENVIRONMENT 関数で DEFAULT キーワードを使用すれば,省略時のディスクとディレクトリをもとに戻すことができます。複数のディスクを含む場合には, F$DIRECTORY 関数ではなく F$ENVIRONMENT 関数を使用します。
編集リスト引数に指定された編集をもとに,文字列式を編集します。
F$EDIT (文字列, 編集リスト)
文字列
編集される文字列を指定します。引用符で囲まれた部分は編集されません。編集リスト
編集リスト文字列に対して実行される編集のタイプを指定する, 1 つまたは複数のキーワードを含む文字列を指定します。
編集 操作 COLLAPSE すべてのスペースとタブを文字列から削除します。 COMPRESS 複数のスペースとタブを1つのスペースに変換します。 LOWERCASE 文字列を小文字に変換します。 TRIM 先行スペースとタブ,および後続のスペースとタブを文字列から削除します。 UNCOMMENT コメントを文字列から削除します。 UPCASE 文字列を大文字に変換します。
2 つ以上のキーワードを指定する場合は,コンマ (,) で区切ります。キーワードを短縮することはできません。
文字列の中で引用符で囲まれた部分には,編集は適用されません。したがって,文字列に引用符 (" ") が含まれている場合には,引用符で囲まれている文字は編集リストに指定されている編集の影響を受けません。
注意
編集リストに LOWERCASE と同時に UPCASE を指定した場合,UPCASE が優先されます。
#1 |
---|
$ LINE = " THIS LINE CONTAINS A "" QUOTED "" WORD" $ SHOW SYMBOL LINE LINE = " THIS LINE CONTAINS A " QUOTED " WORD" $ NEW_LINE = F$EDIT(LINE, "COMPRESS, TRIM") $ SHOW SYMBOL NEW_LINE NEW_LINE = "THIS LINE CONTAINS A " QUOTED " WORD" |
この例では, F$EDIT 関数を使用して,複数のブランクは1つのブランクに変換され,先行ブランクと後続ブランクを削除することにより,文字列が短縮されています。この LINE という文字列には,引用符が含まれており, QUOTED という単語を囲んでいます ( 文字列に引用符を入力するには,割り当て文で二重引用符を使用しなければなりません )。
F$EDIT 関数は, 文字列の中で引用符で囲まれた部分ではスペースを短縮しません。したがって, スペースは QUOTED という単語を囲んだままになります。
#2 |
---|
$ LOOP: $ READ/END_OF_FILE = DONE INPUT_FILE RECORD $ RECORD = F$EDIT(RECORD, "TRIM, UPCASE") $ WRITE OUTPUT_FILE RECORD $ GOTO LOOP . . . |
この例では,ファイルからレコードを読み込み,編集し,出力ファイルに書き込むという作業を繰り返すためのループが設定されています。編集後のレコードからは,先行ブランクと後続のブランクが削除されており,文字列は大文字に変換されています。
#3 |
---|
$ UNCOMMENT_LINE = F$EDIT("$ DIR ! THIS IS THE COMMENT", "UNCOMMENT") $ SHOW SYMBOL UNCOMMENT_LINE $ UNCOMMENT_LINE = "$ DIR" |
この例ではコメントを削除するために F$EDIT 関数を使用しています。
指定した区切り文字で区切られた要素で構成される文字列から, 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 などは許可されていません ) にログインした場合, 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' |
前へ 次へ 目次 索引