日本-日本語

製品  >  ソフトウェア  >  OpenVMS  >  マニュアル >  V8.3ライブラリ

OpenVMS マニュアル


HP OpenVMS
DCL ディクショナリ


前へ 次へ 目次 索引




F$PRIVILEGE

現在のプロセス特権が,引数に指定されている特権と一致するかどうかに応じて, TRUE または FALSE という文字列値を戻します。特権の肯定形,および否定形のいずれも指定できます。



形式

F$PRIVILEGE (特権)



戻り値


TRUE または FALSE という値を含む文字列。 priv-states 引数にリストされた特権のうち 1 つでも偽があると, F$PRIVILEGE 関数は文字列 FLASE を戻します。



引数



特権

特権,またはコンマ (,) で区切られた特権のリストを含む文字列を指定します。プロセス特権のリストについては,『OpenVMS システム・セキュリティ・ガイド』を参照してください。 [NO]ALL を除く,任意のプロセス特権を 1 つ指定します。



説明

F$PRIVILEGE 関数を使用して,ユーザの現在のプロセスに関する特権を識別します。

特権の前に "NO" が付いている場合は,関数が TRUE を戻すよう,その特権は無効になります。 F$PRIVILEGE 関数はリストのキーワードをそれぞれチェックし, 1 つでも偽があれば FALSE を戻します。






#1

$ PROCPRIV = F$PRIVILEGE("OPER,GROUP,TMPMBX,NONETMBX")
$ SHOW SYMBOL PROCPRIV
  PROCPRIV = "FALSE"
 

この例では,F$PRIVILEGE 関数を使用して,プロセスが OPER 特権,GROUP 特権,および TMPMBX 特権を持っているか,またユーザが NETMBX 特権を持っていないかを調べています。

この例に示されているプロセスは,OPER ( オペレータ ) 特権,GROUP 特権, TMPMBX ( 一時メールボックス ) 特権,および NETMBX (ネットワーク・メールボックス) 特権のすべてを持っています。したがって,プロセスが NETMBX 特権を持っていますが, priv-state リストに NONETMBX が指定されているため, FALSE が戻されます。他の 3 つのキーワードの論理演算の結果は真ですが, NONETMBXの結果が偽であるため,この式全体は偽であると評価されます。



F$PROCESS

現在のプロセス名文字列を得るために使用します。 F$PROCESS 関数では引数は必要ありませんが,括弧は指定しなければなりません。



形式

F$PROCESS()



戻り値


現在のプロセス名を示す文字列



引数

なし。





#1

$ NAME = F$PROCESS()
$ SHOW SYMBOL NAME
  NAME = "MARTIN"
 

この例では,F$PROCESS 関数は現在のプロセス名を戻し,その名前が,NAME というシンボルに割り当てられます。



F$SEARCH

ディレクトリ・ファイルを検索し,指定したファイルの完全ファイル指定を戻します。



形式

F$SEARCH (ファイル指定[,ストリーム id])



戻り値


ファイル指定 引数に指定したファイルの,完全な形に拡張されたファイル指定を含む文字列。F$SEARCH 関数が,ディレクトリ内でそのファイルを見つけられない場合は,空文字列 ("") を戻します。



引数



ファイル指定

検索するファイル指定を含む文字列を指定します。装置名またはディレクトリ名を省略する場合には,F$SEARCH 関数は,現在の省略時のディスクおよびディレクトリを,省略時の値として使用します。しかし F$SEARCH 関数は,ファイル名またはファイル・タイプに対して省略時の値を補いません。バージョン番号を省略する場合には,F$SEARCH 関数は,最高のバージョン番号を持つファイルのファイル指定を戻します。 ファイル指定 引数でワイルドカード文字を使用すると, F$SEARCH 関数を呼び出すたびに, ファイル指定 引数に当てはまる次のファイル指定が戻されます。 ファイル指定 引数に当てはまる最後のファイル指定が戻された後は,空文字列が戻されます。

ストリーム id

検索ストリーム識別番号を示す,正の整数を指定します。

F$SEARCH 関数を 2 回以上使用し,それぞれに異なる ファイル指定 引数を指定したい場合は,検索ストリーム識別番号を使用して,それぞれの検索コンテキストを管理します。コマンド・プロシージャの中で F$SEARCH 関数を 2 回以上使用し,異なる ファイル指定 引数を使用する場合には,各検索を別々に識別するために,ストリーム id 引数を指定します。

ストリーム id 引数を省略すると,F$SEARCH 関数は,異なる ファイル指定 引数が指定されるたびに,ディレクトリ・ファイルの先頭から検索を開始します。




説明

F$SEARCH レキシカル関数は,RMS サービスの $SEARCH を呼び出し,ディレクトリ・ファイルを検索し,指定したファイルの完全ファイル指定を戻します。 F$SEARCH 関数を使用すると,$SEARCH RMS サービスを使用して,ディレクトリ内のファイルを検索できます。$SEARCH ルーチンについての詳細は,『OpenVMS Record Management Services Reference Manual』を参照してください。

コマンド・プロシージャ内のループで F$SEARCH 関数を使用すると,ワイルドカード文字を含む ファイル指定 引数と一致するファイルすべてのファイル指定を戻すことができます。 F$SEARCH 関数が実行されるたびに,ワイルドカード文字を含むファイル指定に一致する,次のファイル指定が戻されます。次に戻すファイル指定がなくなると,空文字列が戻されます。ループ内で F$SEARCH 関数を使用する場合は, ファイル指定 引数に,アスタリスク (*) またはパーセント記号 (%) ワイルドカード文字を使用しなければなりません。ワイルドカード文字を使用しない場合は, F$SEARCH 関数は常に同じファイル指定を戻します。

次のいずれかの方法を使用して,検索ストリームのコンテキストを維持する必要があります。

  • ストリーム id 引数を指定し,明示的に維持する。

  • ストリーム id 引数を省略し, F$SEARCH 関数を実行するたびに同じ ファイル指定 引数を使用して,暗黙に維持する。

検索ストリームのコンテキストを維持しない場合は,異なる ファイル指定 引数を指定するたびに,ディレクトリ・ファイルの先頭から新しい検索を開始することになります。

注意

レキシカル関数 F$SEARCH は,ユーザが指定した選択基準に一致したすべてのファイルを戻すことができます。また,検索開始時から検索終了時までの間の任意の時点でディレクトリに存在するすべてのファイルを戻すことができます。検索中に作成,リネーム,または削除されたファイルは,戻されないことがあります。






#1

$ START: 
$     FILE = F$SEARCH("SYS$SYSTEM:*.EXE") 
$     IF FILE .EQS. "" THEN EXIT 
$     SHOW SYMBOL FILE 
$     GOTO START 
 

このコマンド・プロシージャは,SYS$SYSTEM ディレクトリにある,すべての .EXE ファイルの最新バージョンのファイル指定を表示します ( バージョン番号にアスタリスク (*) が使用されていないので,最新バージョンだけが表示されます )。 ファイル指定 引数である SYS$SYSTEM:*.EXE は文字列式なので,引用符 (" ") で囲んでいます。

stream-id 引数が指定されていないため, F$SEARCH 関数は 1 つの検索ストリームを使用します。後続の F$SEARCH 呼び出しは,同じ ファイル指定 引数を使用して, SYS$SYSTEM から .EXE ファイルの次のファイル指定を戻します。各 .EXE ファイルの最新バージョンが表示された後は, F$SEARCH 関数は空文字列を戻し,このプロシージャは終了します。

#2

$ START: 
$    COM = F$SEARCH ("*.COM;*",1) 
$    DAT = F$SEARCH ("*.DAT;*",2) 
$    SHOW SYMBOL COM 
$    SHOW SYMBOL DAT 
$    IF (COM.EQS. "") .AND. (DAT.EQS. "") THEN EXIT 
$    GOTO START 

このコマンド・プロシージャは,.COM ファイルと .DAT ファイルの両方の省略時のディスクおよびディレクトリを検索します。各検索のコンテキストが維持されるように,各 F$SEARCH 関数に対して stream-id 引数が指定されている点に注意してください。

最初の F$SEARCH 関数は,ファイル・タイプが .COM であるファイルの検索を,ディレクトリ・ファイルの先頭から開始します。.COM ファイルが検出されると,検索コンテキストを維持するためにポインタが設定されます。 F$SEARCH 関数をもう一度実行すると,ファイル・タイプが .DAT であるファイルの検索を,ディレクトリ・ファイルの先頭から開始します。このプロシージャがループを実行して,START というラベルに戻ると,各 F$SEARCH 関数は stream-id 引数を使用して,ディレクトリ・ファイルの正しい位置から検索を開始します。 .COM ファイルと .DAT ファイルのすべてのバージョンが戻された後,このプロシージャは終了します。

#3

$ FILESPEC = F$SEARCH("TRNTO""SMITH SALLY""::DKA1:[PROD]*.DAT")
$ SHOW SYMBOL FILESPEC
  FILESPEC = "TRNTO"smith password"::DKA1:[PROD]CARS.DAT"
 

この例では,F$SEARCH 関数を使用して,リモート・ノードのファイルのファイル指定を戻しています。アクセス制御文字列は, F$SEARCH 関数に対する引数として文字列式の一部で使用されているため,二重引用符で囲まれています。文字列式に引用符含める場合は,二重引用符を 2 つ重ねて指定する必要があります。

F$SEARCH 関数が,アクセス制御文字列を含むノード名を戻す場合は,実際のユーザのパスワードが "password" という単語に置き換えられます。



F$SETPRV

指定した利用者特権を許可または禁止します。 F$SETPRV 関数は,利用者特権を示すキーワードのリストを戻します。このリストには, F$SETPRV 関数が実行される前の指定した特権に関する状態が表示されます。

特権を許可または禁止するためには,指定された特権を変更できるように設定されていなければなりません。

特権の制限事項についての詳細は,『OpenVMS System Services Reference Manual』の $SETPRV システム・サービスの説明を参照してください。




形式

F$SETPRV (特権)



戻り値


F$SETPRV 関数によって変更される前の,プロセス特権を示すキーワードを含む文字列



引数



特権

特権,またはコンマ (,) で区切られた特権のリストを定義する,文字列式を指定します。

プロセス特権のリストについての詳細は,『OpenVMS ユーザーズ・マニュアル』を参照してください。




説明

レキシカル関数 F$SETPRV は,$SETPRV システム・サービスを呼び出し,指定した利用者特権を許可または禁止します。 $SETPRV 関数は,利用者特権を示すキーワードのリストを戻します。このリストには, F$SETPRV 関数が実行される前の指定した特権の状態が表示されます。

特権 引数に指定した特権を変更することが許可されているかいないかに関わらず,F$SETPRV 特権は,ユーザの現在の特権に関するキーワードを戻します。ただし,F$SETPRV 関数が許可または禁止するのは,変更することを許可されている特権だけです。

F$SETPRV 関数を含むプログラムまたはプロシージャを実行する場合は, F$SETPRV 関数が,ユーザのプロセスを適正な特権状態に復元しているかを必ず確認してください。詳細は,以下の例を参照してください。






#1

$ OLDPRIV = F$SETPRV("OPER,NOTMPMBX")
$ SHOW SYMBOL OLDPRIV
  OLDPRIV = "NOOPER,TMPMBX"

この例では,プロセスは OPER 特権および TMPMBX 特権を変更できる権限が与えられています。 F$SETPRV 関数は OPER 特権を許可し,TMPMBX 特権を禁止します。さらに F$SETPRV 関数は,変更する前のこれらの特権の状態を示すために, NOOPER と TMPMBX というキーワードを戻します。

特権キーワードのリストは文字列リテラルなので,引用符 ("") で囲まなければなりません。

#2

$ SHOW PROCESS/PRIVILEGE
 
05-JUN-2001 15:55:09.60   RTA1:              User: HELRIEGEL 
 
Process privileges: 
 
Process rights identifiers: 
 INTERACTIVE 
 LOCAL 
$ NEWPRIVS = F$SETPRV("ALL, NOOPER")
$ SHOW SYMBOL NEWPRIVS
  NEWPRIVS = "NOCMKRNL,NOCMEXEC,NOSYSNAM,NOGRPNAM,NOALLSPOOL, 
      NOIMPERSONATE,NODIAGNOSE,NOLOG_IO,NOGROUP,NOACNT,NOPRMCEB, 
      NOPRMMBX,NOPSWAPM,NOALTPRI,NOSETPRV,NOTMPMBX,NOWORLD,NOMOUNT, 
      NOOPER,NOEXQUOTA,NONETMBX,NOVOLPRO,NOPHY_IO,NOBUGCHK,NOPRMGBL, 
      NOSYSGBL,NOPFNMAP,NOSHMEM,NOSYSPRV,NOBYPASS,NOSYSLCK,NOSHARE, 
      NOUPGRADE,NODOWNGRADE,NOGRPPRV,NOREADALL,NOSECURITY,OPER" 
$ SHOW PROCESS/PRIVILEGE
 
05-JUN-2001 10:21:18.32   User: INAZU         Process ID: 00000F24 
                          Node: TOKNOW        Process name: "_FTA23:" 
 
Authorized privileges: 
 NETMBX    SETPRV    SYSPRV    TMPMBX 
 
Process privileges: 
 ACNT                 may suppress accounting messages 
 ALLSPOOL             may allocate spooled device 
 ALTPRI               may set any priority value 
 AUDIT                may direct audit to system security audit log 
 BUGCHK               may make bug check log entries 
 BYPASS               may bypass all object access controls 
 CMEXEC               may change mode to exec 
 CMKRNL               may change mode to kernel 
 DIAGNOSE             may diagnose devices 
 DOWNGRADE            may downgrade object secrecy 
 EXQUOTA              may exceed disk quota 
 GROUP                may affect other processes in same group 
 GRPNAM               may insert in group logical name table 
 GRPPRV               may access group objects via system protection 
 IMPERSONATE          may impersonate another user 
 IMPORT               may set classification for unlabeled object 
 LOG_IO               may do logical i/o 
 MOUNT                may execute mount acp function 
 NETMBX               may create network device 
 OPER                 may perform operator functions 
 PFNMAP               may map to specific physical pages 
 PHY_IO               may do physical i/o 
 PRMCEB               may create permanent common event clusters 
 PRMGBL               may create permanent global sections 
 PRMMBX               may create permanent mailbox 
 PSWAPM               may change process swap mode 
 READALL              may read anything as the owner 
 SECURITY             may perform security administration functions 
 SETPRV               may set any privilege bit 
 SHARE                may assign channels to non-shared devices 
 SHMEM                may create/delete objects in shared memory 
 SYSGBL               may create system wide global sections 
 SYSLCK               may lock system wide resources 
 SYSNAM               may insert in system logical name table 
 SYSPRV               may access objects via system protection 
 TMPMBX               may create temporary mailbox 
 UPGRADE              may upgrade object integrity 
 VOLPRO               may override volume protection 
 WORLD                may affect other processes in the world 
 
Process rights: 
 INTERACTIVE 
 LOCAL 
 
System rights: 
 SYS$NODE_TOKNOW
 
$ NEWPRIVS = F$SETPRV(NEWPRIVS)
$ SHOW PROCESS/PRIVILEGE
 
05-JUN-2001 16:05:07.23   RTA1:              User: JERROM 
 
Process privileges: 
 OPER                 operator privilege 
 
Process rights identifiers: 
 INTERACTIVE 
 LOCAL 

この例では,DCL コマンドの SHOW PROCESS/PRIVILEGE コマンドを使用して,現在のプロセスに関する特権を表示しています。このプロセスには何も特権がありません。

次に,F$SETPRV 関数を使用して,ALL キーワードを処理し,シンボル NEWPRIVS に記録されている各特権の以前の状態を許可します。次に F$SETPRV 関数は NOOPER キーワードを処理し, OPER の以前の状態を NEWPRIVS に記録し,OPER ( オペレータ ) 特権を禁止します。戻される文字列に OPER 特権が 2 回表示される点に注意してください。最初は NOOPER,次は OPER と表示されます。

SHOW PROCESS/PRIVILEGE コマンドを入力すると,現在のプロセスでは, OPER 特権を除くすべての特権が許可されていることが表示されます。

戻される文字列を F$SETPRV のパラメータとして使用すると,プロセスは OPER 特権が許可されます。これは NEWPRIVS シンボルに OPER コマンドが 2 度表示されたためです。その結果,F$SETPRV は最初のキーワード NOOPER を検索し,特権を無効にします。最終的には NEWPRIVS 文字列内の他のキーワードを処理した後,OPER が表示され, OPER 特権が許可されます。

現在の特権環境を保存するために ALL や NOALL を使用する場合は,次のコマンド・プロシージャを実行して,コマンド・プロシージャのプロセスを変更することをおすすめします。


$ CURRENT_PRIVS = F$SETPRV("ALL") 
$ TEMP = F$SETPRV("NOOPER") 

このプロシージャを使用すると,以前の特権環境に戻すために,コマンド・プロシージャの最後に次のコマンドを指定することができます。


$ TEMP = F$SETPRV(CURRENT_PRIVS) 

#3

$ SAVPRIV = F$SETPRV("NOGROUP")
$ SHOW SYMBOL SAVPRIV
  SAVPRIV = "GROUP"
$ TEST = F$PRIVILEGE("GROUP")
$ SHOW SYMBOL TEST
  TEST = "TRUE"

この例では,プロセスには GROUP 特権を変更する権限が与えられていません。しかし,F$SETPRV 関数は,GROUP 特権の現在の設定情報を戻します。

F$PRIVILEGE 関数は,プロセスが GROUP 特権を持つかどうかを判断するために使用されています。この関数から戻された TRUE という文字列は, F$SETPRV 関数がこの特権を禁止しようとしたにもかかわらず,プロセスが GROUP 特権を持つことを示しています。

#4

$ SHOW PROCESS/PRIVILEGE
 
05-JUN-2001 15:55:09.60   RTA1:              User: KASER 
 
Process privileges: 
 AUDIT                may direct audit to system security audit log 
 DOWNGRADE            may downgrade object secrecy   
 IMPORT               may set classification for unlabeled object 
 UPDATE 

これらのプロセスに関する特権は VAX 固有の特権であり, OpenVMS VAX システムの Security Enhancement Service Software (SEVMS) でのみ使用されます。


前へ 次へ 目次 索引



         印刷用画面へ

プライバシー 本サイト利用時の合意事項