日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
= (割り当て文) |
文字列または整数値に対するシンボル名を定義します。
シンボル名 =[=] 式シンボル名[ビット位置,サイズ] =[=] 置換式
注意 DCL コマンド名としてすでに使用されているシンボル名を割り当てないでください。 IF,THEN,ELSE,および GOTO のようなシンボル割り当ては,コマンド・プロシージャの実行を妨げる可能性がありますので,行わないでください。 |
シンボル名
シンボル名に対して,1 文字から 255 文字までの文字列を定義します。シンボル名には,DEC 補助文字 (DEC MCS) 文字セットの英数字,アンダースコア (_),またはドル記号 ($) を含めることができます。ただし,シンボル名は英字 ( 大文字と小文字は同じとみなします ),アンダースコア,またはドル記号から始めなければなりません。割り当て文に等号を 1 つ (=) 指定すると,シンボル名を現在のコマンド・レベルのローカル・シンボル・テーブルに登録します。割り当て文に等号 2 つ (==) を指定すると,シンボル名をグローバル・シンボル・テーブルに登録します。式
割り当て文の右辺に値を指定します。このパラメータは文字列,整数値,シンボル名,レキシカル関数,またはこれらの要素の組み合わせで構成できます。式に含まれる各構成要素を評価し,結果をシンボルに割り当てます。リテラル文字列は,すべて二重引用符 (" ") で囲まなければなりません。シンボルを含む式を指定した場合には,シンボルの値を使用して式を評価します。式を評価した結果は,文字列値または符合付きの整数値になります。式を評価した結果が文字列になる場合には,そのシンボルに文字列値を割り当てます。式を評価した結果が整数値の場合には,シンボルに整数値を割り当てます。整数値が 4 バイトのバッファに収まり切らない場合でも,エラー・メッセージは出力されません。
式中の演算子の概略と,式の指定方法についての詳細,および式の評価方法についての詳細は,『OpenVMS ユーザーズ・マニュアル』を参照してください。
DCL は,1024 バイトのバッファを使用して割り当て文を記憶し式を評価します。シンボル名,式,および式の計算の長さは 1024 バイトを超えることはできません。
[ビット位置,サイズ]
シンボル名の現在の 32 ビットの値に,2 進数値としての式の値を挿入することを指定します。この種の割り当て文は,シンボル名の現在の値を評価した後で,指定したビット数を置換式の結果と置き換えます。ビット位置は,ビット 0 を基準とした相対位置であり,置き換えを実行する先頭の位置を指定します。置き換えるシンボルが整数の場合には,ビット位置は 32 より小さい値でなければなりません。またビット位置とサイズの合計も 32 以下でなければなりません。置き換えるシンボルが文字列の場合には,ビット位置は 6152 より小さい値でなければなりません。各文字は 8 ビットを使って表現するため, 768 文字目までならどの文字列からでも,置き換えを開始できます ( 768 文字目は,6144 というビット位置から始まります )。ビット位置とサイズの合計は,6152 以下でなければなりません。
サイズとは,置き換えるビット数です。 32 より大きいサイズを指定すると,DCL はサイズを 32 に切り捨てます。
かぎ括弧は,必ず指定しなければなりません。シンボル名とかぎ括弧の間に,空白を入れることはできません。ビット位置とサイズの値は,整数式として指定します。
置換式
変更するシンボルを置き換えるために使用する,値を指定します。置換式は,整数式として使用します。変更するシンボルが整数の場合には,置換式は,シンボルに割り当てられた値と置き換えられるビット・パターンを定義します。変更するシンボルが文字列の場合には,置換式の結果は,文字列の指定されたビットを置き換えるビット・パターンを定義します。変更しているシンボルが未定義の場合には,置換式の結果は空文字列を置き換えます。
割り当て文を使用してシンボルを定義すると,コマンド言語を拡張することができます。会話型コマンド・レベルでは,シンボルを使用してコマンド,またはコマンド行の同義語を定義できます。コマンド・プロシージャ・ファイルでは,シンボルを使用して条件式に変数を代入することができます。定義できるシンボルの最大数は,以下により決まります。
- 現在のプロセスでシンボル・テーブルおよびラベルを含めるためにコマンド・インタプリタが使用できる領域のサイズ
領域のサイズは,各プロセスごとにシステム・パラメータ CLISYMTBL で決まります。- シンボル名のサイズとその値
コマンド・インタプリタは,シンボル名とその値に対して領域を割り当てます。また,各シンボルには数バイト多めに割り当てられます。
#1 |
---|
$ LIST == "DIRECTORY" |
この割り当て文は, DCL コマンド DIRECTORY に対するグローバル・シンボル定義として,ユーザ定義同義語 LIST を定義します。
#2 |
---|
$ COUNT = 0 $ LOOP: $ COUNT = COUNT + 1 $ IF P'COUNT' .EQS. "" THEN EXIT $ APPEND/NEW &P'COUNT' SAVE.ALL $ DELETE &P'COUNT';* $ IF COUNT .LT. 8 THEN GOTO LOOP $ EXIT |
このコマンド・プロシージャ COPYDEL.COM は,パラメータとして指定したファイルを SAVE.ALL というファイルに追加しています。追加後に,追加したファイルを削除します。8 個までファイル名が使用でき,各々シンボル P1,P2,... に割り当てられます。
このコマンド・プロシージャはカウンタを使用して参照され,ループ内では,空文字列かどうかを IF 文で検査してから処理を行っています。この IF 文では,シンボル COUNT の値が文字 P に結合され,ループの 1 回目では P1 を,2 回名では P2 を,というように各々検査されます。 P'COUNT' の評価後に,P1 や P2 等に相当するファイル名の置換が IF コマンドのコンテキストの中で自動的に行われます。
APPEND や DELETE コマンドは,入力パラメータとしてファイル指定を必要とするので,自動的な置換を行いません。&P'COUNT' のアンパサンド (&) は,これらのコマンドでシンボル置換を強制的に行います。これらのコマンドがループ内で最初に検索された時には, COUNT はその現在の値に置換されます。コマンドの実行時には,アンパサンドで別の置換を行います。つまり,最初のファイル指定が P1 で置換され, 2 番目のファイル指定は P2 で置換されます。
このコマンド・プロシージャを起動するには,次のコマンドを使用します。
$ @COPYDEL ALAMO.TXT BEST.DOC
ファイル ALAMO.TXT と BEST.DOC は,それぞれ SAVE.ALL に追加された後に削除されます。
#3 |
---|
$ A = 25 $ CODE = 4 + F$INTEGER("6") - A $ SHOW SYMBOL CODE CODE = -15 HEX = FFFFFFF1 Octal = 1777761 |
この例は,2 つの割り当て文を含んでいます。最初の割り当て文は, 25 という値をシンボル A に割り当てます。2 番目の割り当て文は,整数 (4),レキシカル関数 (F$INTEGER(6)),およびシンボル A を含む式を評価します。式の結果である --15 が,シンボル CODE に割り当てられます。
#4 |
---|
$ FILENAME = "JOBSEARCH" - "JOB" $ FILETYPE = ".OBJ" $ FILESPEC = FILENAME + FILETYPE $ TYPE 'FILESPEC' |
最初のコマンドでは,シンボル FILENAME に "SEARCH" を割り当てます。文字列 "SEARCH" は,式で実行された文字列削除演算の結果です。 2 番目のコマンドでシンボル FILETYPE に ".OBJ" を割り当て, 3 番目のコマンドでシンボル FILENAME と FILETYPE を足して, FILESPEC を作成しています。
シンボル FILENAME と FILETYPE の値が連結されているので, FILESPEC には文字列"SEARCH.OBJ"が割り当てられます。そしてシンボル FILESPEC は,TYPE コマンドのパラメータとして使用されます。一重引用符 (' ') で,シンボル FILESPEC をその値である SEARCH.OBJ に展開するように指定しています。そのため,TYPE コマンドでファイル SEARCH.OBJ をタイプします。
#5 |
---|
$ BELL[0,32] = %X07 $ SHOW SYMBOL BELL BELL = "" |
この例では,シンボル BELL を算術置換文で作成しています。シンボル BELL は未定義であったため,空文字列に 16 進数の 7 が挿入されます。この値は ASCII コードでは,ターミナルのベルを鳴らすコードです。 SHOW SYMBOL BELL コマンドを実行すると,ターミナルのベルが鳴ります。
シンボル BELL に整数値が定義済みであった場合には,BELL を表示すると,その新しい値が表示されます。
#6 |
---|
$ $=34 %DCL-W-NOCOMD, no command on line - reenter with alphabetic first character $ $$=34 $ SHOW SYMBOL $$ %DCL-W-UNDSYM, undefined symbol - check validity and spelling $ SHOW SYMBOL $ $ = 34 Hex = 00000022 Octal = 00000000042 |
ドル記号 ($) で始まるシンボルを使う場合, DCL が最初のドル記号を捨ててしまうので,ドル記号を 2 つ続けて ($$) 使用してください。
#7 |
---|
$ COUNT = 0 $ LOOP: $ COUNT = COUNT + 1 $ IF P'COUNT' .EQS. "" THEN EXIT $ APPEND/NEW &P'COUNT' SAVE.ALL $ DELETE &P'COUNT';* $ IF COUNT .LT. 16 THEN GOTO LOOP $ EXIT |
このコマンド・プロシージャ COPYDEL.COM は,パラメータとして指定されたファイルを SAVE.ALL という名前のファイルに追加します。ファイルを追加した後,コマンド・プロシージャはそのファイルを削除します。最大 16 のファイル名をコマンド・プロシージャに渡すことができます。ファイル名はシンボル P1,P2 などに割り当てられます。これは,DCL_CTLFLAGS のビット 3 が 1 に設定されている場合のみ適用されます。
このコマンド・プロシージャは,渡されるパラメータをカウンターを使用して識別します。コマンド・プロシージャは,ループ内で IF コマンドを使用して現在のパラメータの値がヌル文字かどうかをチェックします。 IF コマンドを処理する際,シンボル COUNT の現在値が文字 P と連結されます。最初にループを処理したときには,IF コマンドは P1 をテストします。 2 回目にループを処理したときは P2 をテストします。以降も同様に処理を行います。 PCOUNT を評価した後,P1,P2 などに対応するファイル名の置き換えが自動的に行なわれます。
APPEND コマンドや DELETE コマンドでは入力パラメータとしてファイル指定が必要で,自動的な置き換えは行なわれません。 P`COUNT' 表現の前のアンパサンド(&)により適切なシンボル置換が指示されています。ループ内でこれらのコマンドが最初に処理されるときに, COUNT は現在の値で置き換えられます。その後にコマンドを実行する際は,アンパサンドによってさらに置換が行なわれます。つまり,最初のファイル指定は P1 で置換され,2 つ目のファイル指定は P2 で置換されます。
このプロシージャの実行は次のように行います。
$ @COPYDEL ALAMO.TXT BEST.DOC
ファイル ALAMO.TXT および BEST.DOC が連結され SAVE.ALL に保管された後,それぞれの入力ファイルが削除されます。
目次 | 索引 |
|