# Compaq OpenVMS
DCL ディクショナリ

前へ | 次へ | 目次 | 索引

# DECK

> コマンド，またはプログラムの入力ストリームの先頭を示します。

## 形式

> DECK

## 説明

> DECK コマンドは，コマンドまたはプログラムの入力になるデータに印を付けます。 DECK コマンドを使用できるのは，入力データが必要なコマンドまたはプログラムを実行する要求の後だけです。

> コマンド・プロシージャでは，入力ストリーム内の任意のデータ・レコードの空白でない最初の文字がドル記号の場合，このコマンドが必要です。また，コマンド・プロシージャでは， DECK コマンドの前にドル記号を付けなければなりません。ドル記号は，入力レコードの最初の文字位置 (カラム1) になければなりません。

> DECK コマンドは，単一データ・ストリームに対してだけファイルの終端 (EOF) 指示子を定義します。DECK コマンドを使用すると，ドル記号で始まるデータ・レコードを入力ストリームに入れることができます。入力ストリームに 1 つまたは複数のデータの集合を入れるには， DECK コマンドの後にそれぞれをEOF指示子で終了させたデータの集合を続けます。

> /DOLLARS 修飾子で指定した EOF 指示子が検出されると， EOF 指示子は省略時の設定，つまりドル記号で始まるレコードに再設定されます。現在のコマンド・レベルの実際の EOF 指示子が検出された場合も，省略時の設定が再設定されます。

## 修飾子

> ### /DOLLARS[=文字列]

> 指定した 1 〜 15 文字の文字列を，ファイル終了 (EOF) 指示子として設定します。 $EOD という文字列から始まる1つまたは複数のレコードが，入力データに含まれている場合に，文字列を指定します。リテラルとしての小文字や，複数の空白あるいはタブを含むファイル終了指示子を指定する場合には，引用符 (" ") で囲まなければなりません。 /DOLLARS 修飾子を指定しない場合や， /DOLLARS 修飾子だけを指定して文字列を省略する場合には，ファイルの終了 (EOF) を示すために，EOD コマンドを使用しなければなりません。

##

### 例

#1

この例の Fortran および LINK コマンドは，プログラム A をコンパイルしリンクします。プログラム A が実行されると，論理装置 SYS$INPUT からプログラム A が読み込んだすべてのデータは，コマンド・ストリームから読み込まれたデータです。 DECK コマンドは，入力ストリームのレコードの最初の文字位置 (カラム1) にドル記号を入れられることを示しています。 EOD コマンドは，データの終端 (end-of-file) を示します。

#2

この例の CREATE コマンドは，入力ストリームに入力された行からコマンド・プロシージャ・ファイル TEST.COM を作成します。 DECL/DOLLARS コマンドは，パーセント記号 (%) が CREATE コマンドの EOF 指示子であることを示しています。これにより文字列 $EOD は入力レコードとして読み込まれ， RUN コマンドに対する入力の終わりを示します。

# DEFINE

> 論理名に等価名を対応させます。

## 形式

> DEFINE 論理名等価名[,...]

## パラメータ

> ### 論理名

> 論理名文字列を指定します。論理名文字列には，１文字から 255 文字までを含むことができます。次の規則が適用されます。

> - 論理名が，プロセスまたはシステムの論理名ディレクトリ・テーブル (LNM$SYSTEM_DIRECTORY および LNM$PROCESS_DIRECTORY)に入力された場合，論理名は 1 文字から 31 文字までの英数字 (ドル記号($) とアンダースコア (_)文字を含む) だけで構成されます。

> - 論理名の最後にコロン (:) を指定した場合，DEFINE コマンドは，そのコロンを論理名の一部として保存します。 (この点は，ASSIGN コマンドと異なっています。ASSIGN コマンドでは，論理名テーブルに名前を登録する前に，コロンが削除されます。) 省略時の設定では，論理名はプロセス論理名テーブルに登録されます。

> - 文字列に英数字，ドル記号，またはアンダースコア以外の文字が含まれている場合には，その文字列を引用符 (" ") で囲みます。論理名に引用符が含まれる場合には，論理名全体を引用符で囲み，論理名の中で引用符 (") が必要な位置に連続する2つの二重引用符("")を指定します。論理名を引用符で囲む場合には，英字の大文字と小文字の区別もそのまま保存されます。

> ### 等価名[,...]

> 1文字から 255 文字までの文字列を指定します。

> - 文字列に英数字，ドル記号，またはアンダースコア以外の文字が含まれる場合には，文字列全体を引用符で囲まなければなりません。等価文字列に引用符が含まれる場合には，文字列全体を引用符で囲み，引用符 (") が必要な位置に連続する2つの二重引用符 ("") を指定します。 2つ以上の等価名を指定すれば，サーチ・リストを作成できます。

> - ファイル指定として使用される等価名を指定する場合には，その等価名が直接使用されるときに必要となる区切り文字 (コロン，かぎ括弧，ピリオド)も含まなければなりません。したがって，等価名として装置名を指定する場合には，等価名の最後にコロンを指定します。

> DEFINE コマンドでは，同じ論理名を複数の等価名に割り当てることができます。たとえば，同じ論理名を使用して異なるディスクの異なるディレクトリを，アクセスすることができ，また異なるディレクトリの異なるファイルをアクセスできます。

## 説明

> DEFINEコマンドは，1つまたは複数の等価名を表わす論理名を定義して，論理名テーブル内のエントリを作成します。等価名には，装置名，別の論理名，ファイル指定，または他の文字列を使用できます。

> 論理名の使用を，特定のプロセス，特定のジョブ，特定のグループに制限することができます。また，論理名をシステム全体あるいは OpenVMS Cluster システム全体で使用することもできます。これは，論理名が作成されるテーブルに依存します。テーブルを指定するには，/PROCESS，/JOB，/GROUP，/SYSTEM，/TABLE の修飾子のいずれかを使用します。

> 最初の 4 つの修飾子は，それぞれプロセス，ジョブ，グループ，システムの論理名テーブルを表わしています。 /TABLE 修飾子は，任意のタイプのテーブルを指定するために使用されます。 /TABLE 修飾子は，クラスタ全体の論理名テーブルを指定する場合に使用される唯一のものです。

> /PROCESS，/JOB，/GROUP，/SYSTEM，/TABLE の修飾子の複数を指定した場合は，最後に指定した修飾子だけが有効となります。これらの修飾子のいずれも指定しない場合は，論理名はユーザのプロセス論理名テーブルに追加されます。

> 作成する論理名のアクセス・モードを指定するには， /USER_MODE，/SUPERVISOR_MODE，または /EXECUTIVE_MODE 修飾子を使用します。複数の修飾子を指定した場合は，最後に指定した修飾子だけが有効です。アクセス・モードを指定しないと，スーパバイザ・モード名が作成されます。名前を入れるテーブルと同じモードまたは外側のモードで，論理名を作成できます (利用者モードが一番外側のモードで，エグゼクティブ・モードが一番内側のモードです)。

> それぞれの論理名のアクセス・モードが異なる限り，同じ論理名テーブルに同じ名前を持つ複数の論理名をいれることができます (ただし，テーブル内の既存の論理名が NO_ALIAS 属性を持つ場合は，このテーブルで同じ名前を使用して外側のモードの論理名を作成できません)。

> 既存の名前と同じモードで，同じテーブルに同じ名前を持つ論理名を作成すると，新しい論理名で既存の論理名が置き換えられます。

> ASSIGN コマンドを使用して，論理名を作成することもできます。テーブルから論理名を削除するには，DEASSIGN コマンドを使用します。

> 注意 SYS$SYSTEM: 内の実行可能イメージのファイル名と同じ論理名を割り当てないでください。そのイメージが起動できなくなります。

> 等価名を指定しない (すなわちインデックスを指定しない) で論理名を作成する場合は， $CRELNM システム・サービスを使用します。

> 等価名として ODS-5 ファイル名を指定する場合は，『 Compaq OpenVMS Extended File Specifications の手引き』を参照してください。

> アプリケーションでの使用を除く，論理名および論理名テーブルについての完全な説明については，『Compaq OpenVMS ユーザーズ・マニュアル』を参照してください。アプリケーションでの論理名の使用については，『OpenVMS Programming Concepts Manual』を参照してください。クラスタ全体の論理名の管理については，『Compaq OpenVMS Cluster システム』を参照してください。また，論理名の変換に使用されるレキシカル関数 F$TRNLNM についての本書の説明も参照してください。

## 修飾子

> ### /EXECUTIVE_MODE

> エグゼクティブ・モードの論理名を作成するためには， SYSNAM （システム論理名）特権が必要です。

> 指定したテーブルに，エグゼクティブ・モードの論理名を作成します。

> /EXECUTIVE_MODE 修飾子を指定しても， SYSNAM 特権を持たない場合には，DEFINE コマンドはその修飾子を無視し，スーパバイザ・モードの論理名を作成します。論理名のアクセス・モードは，論理名を登録するテーブルのモードと同じか，それより低いものでなければなりません。

> ### /GROUP

> グループ論理名テーブルに論理名を登録するためには， GRPNAM（グループ論理名）特権または SYSNAM（システム論理名）特権が必要です。

> 論理名をグループ論理名テーブルに登録します。登録者の UIC(利用者識別コード)のグループ番号が同じである他の利用者は，この論理名をアクセスできます。 /GROUP 修飾子は, /TABLE=LNM$GROUP 修飾子の同意語です。

> ### /JOB

> 論理名を，ジョブ論理名テーブルに登録します。この論理名を作成したプロセスと同じジョブ階層構造に含まれるプロセスはすべて，この論理名をアクセスできます。 /JOB 修飾子は，/TABLE=LNM$JOB 修飾子の同意語です。

> ### /LOG (省略時の設定)

> ### /NOLOG

> 既存の名前を無効にする論理名の定義時に，メッセージを表示するか否かを制御します。

> ### /NAME_ATTRIBUTES[=(キーワード[,...])]

> 論理名に対して，属性を指定します。省略時の設定では，属性は設定されません。属性に対して指定できるキーワードは，次のとおりです。

> CONFINE | 論理名が，SPAWN コマンドによって生成されたサブプロセスにコピーされないことを指定します。このキーワードは，プロセス固有のテーブルに論理名を作成する場合にだけ意味をもちます。 CONFINE 属性は，論理名が登録される論理名テーブルの属性からも与えられます。論理名テーブルが "CONFINE" 属性を持つ場合には，そのテーブルに含まれる論理名もすべて "CONFINE"属性をもちます。
> NO_ALIAS | より低い特権の（外側の）アクセス・モードでは，同じ名前の論理名をこのテーブルに登録できないことを指定します。同じ名前を持つ他の論理名が，より低い特権のアクセス・モードで，このテーブルにすでに登録されている場合には，その名前は削除されます。

> キーワードを1つしか指定しない場合には，括弧を省略できます。また，指定した属性だけが設定されます。

> ### /PROCESS (省略時の設定)

> 論理名を，プロセス論理名テーブルに登録します。 /PROCESS 修飾子は，/TABLE=LNM$PROCESS 修飾子の同意語です。

> ### /SUPERVISOR_MODE (省略時の設定)

> 指定したテーブルに，スーパバイザ・モードの論理名を作成します。論理名のアクセス・モードは，論理名を登録するテーブルのモードと同じか，それより低いものでなければなりません。

> ### /SYSTEM

> システム論理名テーブルに名前を登録するためには，書き込み (W) アクセス権または SYSNAM（システム論理名）特権が必要です。

> 論理名をシステム論理名テーブルに登録します。システム上のすべてのユーザが，この論理名をアクセスできます。 /SYSTEM 修飾子は，/TABLE=LNM$SYSTEM 修飾子の同意語です。

> ### /TABLE=テーブル名

> 共有可能な論理名テーブルの名前を指定するには，テーブルへの書き込み (W) アクセス権が必要です。

> 論理名を登録する論理名テーブルの名前を指定します。 /TABLE 修飾子を使用すれば，利用者定義論理名テーブル(CREATE/NAME_TABLE コマンドによって作成されたもの) を指定できます。また，プロセス論理名テーブル，ジョブ論理名テーブル，グループ論理名テーブル，システム論理名テーブル，クラスタ論理名テーブルと，プロセスまたはシステムの論理名ディレクトリ・テーブルを指定できます。

> 複数の等価文字列が与えられている論理名を使用して，テーブル名を指定する場合には，論理名は最初に検出されたテーブルに登録されます。たとえば，DEFINE/TABLE=LNM$FILE_DEV を指定し，LNM$FILE_DEV が LNM$PROCESS， LNM$JOB，LNM$GROUP，および LNM$SYSTEM と等しいと定義されている場合には，その論理名は LNM$PROCESS に登録されます。

> 省略時の設定では，/TABLE=LNM$PROCESS が使用されます。

> ### /TRANSLATION_ATTRIBUTES[=(キーワード[,...])]

> 等価名修飾子。

> 論理名の等価文字列に，1つまたは複数の属性を指定します。変換属性に対して指定できるキーワードは，次のとおりです。

> CONCEALED | 等価文字列が隠し装置名であることを示します。隠し装置名を定義した場合，システムは，その装置を参照するメッセージの中で，等価文字列ではなく，論理名を表示します。
> TERMINAL | 等価文字列が，反復変換されないことを示します。したがって，論理名変換は，現在の等価文字列の変換で終了しなければなりません。

> キーワードを1つしか指定しない場合には，括弧を省略できます。また，指定した属性だけが設定されます。

> 1つの論理名に対して複数の等価文字列が存在する場合，各等価文字列は，それぞれ異なる変換属性を持つことができます。

> ### /USER_MODE

> 指定したテーブルに，ユーザ・モードの論理名を作成します。

> プロセス論理名テーブル(1つまたは複数)に作成されるユーザ・モードの論理名は， 1つのイメージの実行のためだけに使用されます。たとえば，コマンド・プロシージャ内で，実行中のイメージが SYS$INPUT を再定義できるように，ユーザ・モードの論理名を作成できます。ユーザ・モードの論理名は，プロセス内で実行されているイメージが終了する時 (つまり，イメージを実行している DCL コマンドまたは利用者のプログラムが実行を終了した後で)，プロセス論理名テーブルから削除されます。また，ユーザ・モードの論理名は，コマンド・プロシージャを起動および実行している時に自動的に削除されます。

##

### 例

#1
    $ DEFINE/USER_MODE TM1 $DISK1:[ACCOUNTS.MEMOS]WATER.TXT

> この例では，DEFINE コマンドで TM1 をファイル指定に等価なものとして定義しています。次のイメージ実行後に，論理名 TM1 は自動的に削除されます。

#2
    $ DEFINE CHARLIE XXX1:[CHARLES]
    $ PRINT  CHARLIE:TEST.DAT
    Job 274 entered on queue SYS$PRINT

> この例では，DEFINE で論理名 CHARLIE を，ディスク XXX1 のディレクトリ名 [CHARLES] に関連付けています。 PRINT コマンドは，ファイル XXX1:[CHARLES]TEST.DAT のコピーをシステム・プリンタのキューに登録します。

#3
    $ DEFINE PROCESS_NAME  LIBRA
    $ RUN WAKE

> この DEFINE コマンドは，PROCESS_NAME という論理名をプロセス論理名テーブルに登録し，LIBRA という等価名に割り当てます。この論理名は，スーパバイザ・モードで作成されます。 WAKE というプログラムは，PROCESS_NAMEという論理名を変換し， LIBRA という名前のプロセスに対して特殊な動作を実行します。

#4
    $ DEFINE TEMP:  XXX1:
       .
       .
       .
    $ DEASSIGN TEMP::

> この DEFINE コマンドは，TEMP: という論理名に XXX1: という等価文字列を割り当て，この論理名をプロセス論理名テーブルに登録します。コロンは，論理名の一部として扱われます。 DEASSIGN コマンドは，論理名を削除します。 DEASSIGN コマンドでは，この論理名を指定するために2つのコロンが必要です。 1つのコロンが，DEASSIGN コマンドによって削除されるためです。したがって，もう1つのコロンは論理名の一部として処理されます。

#5
    $ DEFINE PORTLAND PRTLND::YYY0:[DECNET.DEMO.COM]

> この DEFINE コマンドは， PRTLND::YYY0:[DECNET.DEMO.COM］という等価文字列を使用して，プロセス論理名テーブルに PORTLAND という論理名を登録します。その後の論理名 PORTLAND の参照では，指定されたノード，ディスク，サブディレクトリが参照されます。

#6
    $ DEFINE LOCAL "BOSTON""JAY_SABLE JKS""::"

> この DEFINE コマンドは，BOSTON"JAY_SABLE JKS":: という遠隔ノード等価名を使用して，プロセス論理名テーブルに LOCAL という論理名を登録します。現在のノードでの DCL コマンド文字列処理に関する規則にしたがって， 3組の引用符を使用しています。引用符によって，等価名に含まれるアクセス制御情報が 1組の引用符で囲まれるようにしています。

#7
    $ DEFINE MYDISK XXX0:[MYDIR], YYY0:[TESTDIR]

> この例では，論理名 MYDISK を XXX0:[MYDIR] と YYY0:[TESTDIR] のサーチ・リストとして，プロセス論理名テーブルに登録しています。

#8
    $ DEFINE/TABLE=LNM$CLUSTER_TABLE FIRENZE FIRENZE::FIESOLE:[ETRUSCAN]

> この例では，DEFINE コマンドが FIRENZE をディレクトリ指定 FIRENZE::FIESOLE:[ETRUSCAN] に対応させ，新しい論理名 (FIRENZE) およびその等価文字列 (FIRENZE::FIESOLE:[ETRUSCAN]) を省略時のクラスタ全体のテーブルに置きます。新しい論理名は，クラスタ内のすべてのノードに自動的に通知されます。

#9
    $  CREATE/NAME_TABLE TABLE1
    $  DEFINE/TABLE=LNM$PROCESS_DIRECTORY LNM$FILE_DEV -
    _$ TABLE1,LNM$PROCESS,LNM$JOB,LNM$GROUP,LNM$SYSTEM
    $  DEFINE/TABLE=TABLE1 -
    _$ /TRANSLATION_ATTRIBUTES=CONCEALED   WORK_DISK DKA1:

> この例では，プロセス固有の論理名テーブル TABLE1 を作成しています。

> 最初の DEFINE コマンドは，TABLE1 が装置名やファイル指定の検索時に最初に検索されるように，LNM$FILE_DEV を定義しています。これは，TABLE1 が論理名 LNM$FILE_DEV の等価名の最初の項目だからです。論理名LNM$FILE_DEV は，装置やファイル指定の検索時には常に，論理名テーブルの検索順序の省略時設定を決定します。

> 次の DEFINE コマンドは，論理名 WORK_DISK を物理装置 DKA1 の等価名として TABLE1 に登録しています。論理名 WORK_DISK は，隠し装置名の属性を与えられているので，システム・メッセージにもそのまま変換されずに表示されます。

#10
    $ CREATE/NAME_TABLE SPECIAL
    $ DEFINE/TABLE=LNM$PROCESS_DIRECTORY LNM$FILE_DEV -
    _$ SPECIAL,LNM$PROCESS,LNM$JOB,LNM$GROUP,LNM$SYSTEM
    $ DEFINE/TABLE=LNM$PROCESS_DIRECTORY TAB SPECIAL
    $ DEFINE/TABLE=TAB REPORT [CHELSEA]STORES
    $ SHOW LOGICAL/TABLE=SPECIAL REPORT
      "REPORT" = "[CHELSEA]STORES" (SPECIAL)

> この例では， CREATE/NAME_TABLE コマンドで SPECIAL という論理名テーブルを作成しています。このテーブルは，プロセス・ディレクトリ LNM$PROCESS_DIRECTORY に登録されます。

> 最初の DEFINE コマンドは，SPECIAL が装置名やファイル指定の検索時に最初に検索されるように，LNM$FILE_DEV を定義しています。これは，SPECIAL が論理名 LNM$FILE_DEV の等価名の最初の項目だからです。論理名 LNM$FILE_DEV は，装置やファイル指定の検索時には常に，論理名テーブルの検索順序の省略時設定を決定します。論理名 LNM$FILE_DEV は，プロセス・ディレクトリ LNM$PROCESS_DIRECTORY に登録しています。

> 次の DEFINE コマンドでは，論理名 TAB を定義しています。 TAB は，論理名テーブルを示す SPECIAL という文字列に変換されます。 TAB は論理名テーブルに繰り返し変換されるので，プロセス・ディレクトリに登録しなければなりません。

> 次に，論理名 REPORT が，論理名テーブル TAB に登録されています。 TAB は，テーブル SPECIAL に翻訳されるので，論理名 REPORT はテーブル SPECIAL に登録されています。 SHOW LOGICAL コマンドで，論理名 REPORTがどこに登録されたか確認できます。

> TAB は，別のテーブルを指すように再定義できるので，テーブル名 TABを使用する別のプログラムを走らせる場合に，実際のテーブルを別のテーブルに変更することもできます。

前へ | 次へ | 目次 | 索引