日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS
ドキュメント・ライブラリ

タイトルページ
目次
まえがき
リファレンス・セクション
    ≫ コマンド一覧
    ≫ レキシカル関数
付録 A:廃止されたコマンド
付録 B:DCL整数表現の範囲を超える数値の処理
索引
PDF    Vol.1   Vol.2
OpenVMS ホーム

HP OpenVMS
DCL ディクショナリ


目次 索引

F$TRNLNM

論理名を変換し,同値名文字列,または要求されている論理名の属性を戻します。

形式

F$TRNLNM (論理名 [,表] [,索引] [,モード] [,ケース] [,項目])

戻り値


指定した論理名の同値名,または属性。戻される値は, F$TRNLNM 関数に指定した引数に応じて,文字列または整数になります。 F$TRNLNM 関数は,一致するものがないと空文字列("")を戻します。

引数



論理名

変換される論理名を含む文字列を指定します。

論理名を変換するために,F$TRNLNM 関数が検索する論理名テーブル ( 1 つまたは複数 ) 名を含む文字列を指定します。ここで指定する引数は,論理名テーブルまたは論理名テーブルのリストに変換される,論理名でなければなりません。

論理名テーブルを指す論理名は,次に示す論理名テーブルのいずれかで定義しなければなりません。

  • LNM$SYSTEM_DIRECTORY

  • LNM$PROCESS_DIRECTORY

  注意
F$TRNLNM 関数を使用した後, CREATE/NAME_TABLE コマンドを使用して論理名テーブルを作成し,それを F$TRNLNM にアクセス可能なプライベート・テーブルにしたい場合は,プライベート・テーブルを含めるよう,テーブル論理名のうちのいずれか 1 つを再定義しなければなりません。通常 F$TRNLNM によって検索されるすべてのテーブルを表示するには,次のコマンドを実行してください。

$ SHOW LOGICAL/STRUCTURE LNM$DCL_LOGICAL

詳細は, CREATE/NAME_TABLE および SHOW LOGICAL コマンドの説明を参照してください。

table パラメータを省略した場合,省略時の設定により LNM$DCL_LOGICAL が使用されます。つまり F$TRNLNM 関数は,論理名 LNM$DCL_LOGICAL の指す論理名テーブルを検索します。 LNM$DCL_LOGICAL が再定義されない限り,F$TRNLNM 関数は,プロセス,ジョブ,グループ,システムの論理名テーブルをこの順序で検索し,最初に一致した同値名を戻します。

索引

論理名が 2 回以上変換された場合,戻される同値名の数を指定します。論理名が定義されていると, インデックスは,名前がリストされた順序で同値名文字列を参照します。

インデックスは 0 で始まります。つまり,同値名リストの最初の名前はインデックス 0 によって参照されます。

索引 引数を指定しない場合には,省略時の値として 0 が使用されます。

モード

変換のアクセス・モードを指定します。アクセス・モードは,USER (省略時の設定),SUPERVISOR,EXECUTIVE,または KERNEL のいずれか 1 つを含む文字列で指定します。

F$TRNLNM 関数は,モード 引数で指定したアクセス・モードで作成された論理名の検索を開始します。一致する論理名が見つけられないと, F$TRNLNM 関数は,より内側のアクセス・モードで作成された論理名の検索を行い,最初に一致したものを戻します。たとえば,同一名の論理名が 2 つ定義されていて, 1 つは USER アクセス・モードで,もう 1 つは EXECUTIVE アクセス・モードで作成されたと仮定します。モード 引数に USER を指定すると, F$TRNLNM 関数は,エグゼクティブ・モードではなくユーザ・モードの,論理名の同値文字列を戻します。

ケース

実行される変換のタイプを指定します。ケース引数は,変換のケースおよび変換がインターロックされるかどうかの両方を制御します。

ケース引数には,CASE_BLIND ( 省略時の設定 ),CASE_SENSITIVE, NONINTERLOCKED ( 省略時の設定 ),INTERLOCKED の任意の組み合わせを指定することができます。

CASE_BLIND を指定すると,F$TRNLNM 関数は,ケースに関わりなく論理名テーブルで論理名を検索し,最初に見つかった論理名を変換して戻します。一致するものが見つからない場合は,この関数は空文字列 ("") を戻します。

CASE_SENSITIVE を指定すると,F$TRNLNM 関数は, 論理名 引数に指定したケースの論理名だけを検索します。正確に一致するものが見つからないと, F$TRNLNM 関数は空文字列 ("") を戻します。

INTERLOCKED を指定すると,F$TRNLNM 関数は,進行中のクラスタ単位の論理名のすべての修正が完了するまで実行されません。続いて一致するものが見つかると,変換の結果が返されます。一致するものが見つからないと, F$TRNLNM 関数は空文字列 ("") を戻します。

NOINTERLOCKED を指定すると,F$TRNLNM 関数は直ちに実行されます。一致するものが見つかると,変換の結果が返されます。一致するものが見つからないと, F$TRNLNM 関数は空文字列 ("")を戻します。

項目

指定した論理名に関して, F$TRNLNM 関数が戻す情報のタイプを含む文字列を指定します。次のいずれか 1 つを指定します。

項目 戻される
タイプ
戻される情報
ACCESS_MODE 文字列 論理名に対応するアクセス・モード。アクセス・モードは,USER,SUPERVISOR,EXECUTIVE,KERNEL のいずれか 1 つ。
CLUSTERWIDE 文字列 論理名がクラスタ単位の論理名テーブルにある場合は TRUE,そうでない場合は FALSE。
CONCEALED 文字列 論理名が作成されたときに, /TRANSLATION_ATTRIBUTES 修飾子を指定して, CONCEALED 属性を指定した場合は TRUE,そうでない場合は FALSE。 CONCEALED 属性は,隠し論理名を作成するために使用される。
CONFINE 文字列 論理名が制限されている場合は TRUE,そうでない場合は FALSE。論理名が制限されている(TRUE)場合には,論理名はサブプロセスにコピーされない。論理名が制限されていない(FALSE)場合には,その論理名はサブプロセスにコピーされる。
CRELOG 文字列 CRELOG 属性を使用して, $CRELOG システム・サービスまたは $CRELNM システム・サービスにより論理名が作成された場合は TRUE,そうでない場合は FALSE。
LENGTH 整数値 指定された論理名に対応する,同値名の長さを戻す。論理名に複数の同値名が与えられている場合には,F$TRNLNM 関数は,インデックス引数によって指定された名前の長さを戻す。
MAX_INDEX 整数値 論理名に対して定義されている最大のインデックスを戻す。インデックスは,1 つの論理名にいくつの同値名が与えられているかを示す。インデックスは 0 から始まる。つまり,インデックス 0 は,同値名リストの最初の名前を参照する。
NO_ALIAS 文字列 論理名が NO_ALIAS 属性を持つ場合は TRUE,そうでない場合は FLASE。 NO_ALIAS 属性は,同じ名前を持つ論理名を,より外部のアクセス・モードでは作成できないことを示す。
TABLE 文字列 論理名が,論理名テーブルを指す論理名である場合は TRUE,そうでない場合は FLASE。
TABLE_NAME 文字列 論理名が検出されたテーブル名。
TERMINAL 文字列 論理名が作成されたときに, /TRANSLATION_ATTRIBUTES 修飾子を指定して, TERMINAL 属性を指定した場合は TRUE,そうでない場合は FALSE。 TERMINAL 属性は,論理名が反復変換の対象にならないことを示す。
VALUE 文字列 省略時の設定。指定した論理名に対応する同値名を戻す。論理名に複数の同値名が与えられている場合は,F$TRNLNM 関数は,インデックス引数で指定した名前を戻す。


説明

F$TRNLNM レキシカル関数は, $TRNLNM システム・サービスを呼び出して論理名を変換し,同値名文字列,または指定した論理名の要求した属性を戻します。反復変換は行われません。つまり,一度変換された同値名文字列は,それが論理名であるかどうかチェックされません。

F$TRNLNM 関数を使用する場合は,最後に指定する引数の右側で使用するオプションの引数は省略できます。ただし,最後に指定する引数の左側で使用するオプションの引数を省略する場合は,プレースホルダとしてコンマ (,) を指定しなければなりません。

コマンド・プロシージャ内で F$TRNLNM 関数を使用すると,論理名の現在の同値名文字列を保存し,後でリストアすることができます。また,論理名が割り当てられているかどうか確認するために使用することもできます。


#1
$ SAVE_DIR = F$TRNLNM("SYS$DISK")+F$DIRECTORY() 
   .
   .
   .
$ SET DEFAULT 'SAVE_DIR' 

この割り当てステートメントは, F$DIRECTORY 関数から戻された値と F$TRNLNM 関数から戻された値を連結し,その結果である文字列を SAVE_DIR というシンボルに割り当てます。この場合 SAVE_DIR シンボルは,完全な装置およびディレクトリ名文字列から構成されます。

SYS$DISK という引数は文字列であるため,引用符 (" ") で囲まれています ( コマンド・インタプリタは,引数が二重引用符で囲まれていない限り,英字から始まるすべての引数を,シンボルまたはレキシカル関数として取り扱います )。省略可能な引数は指定されていないため,F$TRNLNM 関数は省略時の値を使用します。

コマンド・プロシージャの最後で,もとの省略時のディレクトリにリセットされます。ディレクトリを元に戻す場合には,シンボル置換を強制的に実行するために, SAVE_DIR というシンボルを一重引用符 (' ') で囲まなければなりません。

#2
$ DEFINE/TABLE=LNM$GROUP TERMINAL 'F$TRNLNM("SYS$OUTPUT")' 

この例は,コマンド・プロシージャから抜粋した行です。ここでは,(1) F$TRNLNM 関数を使用して,現在の出力装置の名前を判断し,(2) 同値文字列に基づいて,グループ論理名テーブルにエントリを作成します。

SYS$OUTPUT という引数は文字列であるため,二重引用符で囲まなければなりません。

また,この例では,レキシカル関数が強制的に評価されるようにするために, F$TRNLNM 関数自身も一重引用符で囲まなければなりません。引用符で囲まないと,DEFINE コマンドはレキシカル関数を自動的には評価しません。

#3
$ RESULT= -
_$ F$TRNLNM("INFILE","LNM$PROCESS",0,"SUPERVISOR",,"NO_ALIAS")
$ SHOW SYMBOL RESULT
  RESULT = "FALSE"

この例では,F$TRNLNM 関数は,論理名 INFILE を定義したプロセス論理名テーブルを検索します。まず,スーパバイザ・モードで作成された論理名 INFILE を検索します。一致するものがない場合は,エグゼクティブ・モードで作成された INFILE を検索します。

一致するものがあった場合は, INFILE という名前が NO_ALIAS 属性で作成されたかどうかを判断します。この例の場合, NO_ALIAS 属性は指定されていません。

#4
$ foo=f$trnlnm("FOO","LNM$SYSCLUSTER",,,"INTERLOCKED",) 
 

この例では,論理名 FOO が LNM$SYSCLUSTER テーブル内で INTERLOCKED 方式で検索されて変換が実行されます。すなわち,同一クラスタ内の現在のノード上あるいは別のノード上で進行中のクラスタ単位の論理名のすべての修正は,この変換が実行される前に完了します。これにより,変換が最新の FOO 定義に基づくものであることを保証します。

ケース変換が指定されていないので,省略時の設定の CASE_BLIND で実行されます。

#5
$ foo=f$trnlnm("FOO","LNM$SYSCLUSTER",,,"INTERLOCKED,CASE_SENSITIVE",) 

この例では,CASE_SENSITIVE および INTERLOCKED 変換の両方を指定します。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.