8.14 CHECK_AUTHORITY

ユーザーがオブジェクトに対する特定の権限を持っているかどうかを検査します。

 

引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

オブジェクト名

1

10

 

 

2

A

必須

オブジェクト名
拡張子の値:

- ブランク
- リテラル
- *LIBL

1

10

 

 

3

A

必須

オブジェクト・タイプ
値:

DF - フィールド
AT - アプリケーション・テンプレート*
PF - ファンクション
PD - プロセス
FD - フィル
P# - 区画*
SV - システム変数
MT - 多言語文字列
*注:オブジェクト・タイプP#とATは、Visual LANSAの文脈上は何の意味もありません。

2

2

 

 

4

A

必須

オブジェクトに必要な権限:

値:

操 作上
UD - 定義を使用する
MD - 定義を変更する
DD - 定義を削除する

デー タ
DS - 表示する
AD- 追加する
CH - 変更する
DL - 削除する

2

2

 

 

 

 

戻り値

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

与えられる権限

1

1

 

 

 

 

このファンクションを使用して、ユーザーがファイルのレコードを更新できるか、またはフィールド定義を使用できるかを判定することができます。

DEFINE   FIELD(#OBJEXT) TYPE(*CHAR) LENGTH(10) DEFAULT('''*LIBL''')
* < OR >
DEFINE   FIELD(#OBJEXT) TYPE(*CHAR) LENGTH(10) DEFAULT(*BLANKS)
USE      BUILTIN(CHECK_AUTHORITY) WITH_ARGS (#FILENAME #OBJEXT FD CH) TO_GET(#OKAY)
IF       COND('#OKAY *EQ Y')
UPDATE   FILE(#FILENAME)
ELSE
MESSAGE  MSGTXT('Not authorized to update file')
ENDIF
DEFINE   FIELD(#OBJEXT) TYPE(*CHAR) LENGTH(10) DEFAULT(*BLANKS)
USE      BUILTIN(CHECK_AUTHORITY) WITH_ARGS #FLDNAME #OBJEXT DF UD) TO_GET(#OKAY)
IF       COND('#OKAY *EQ Y')
USE      BUILTIN(GET_FIELD) WITH_ARGS(#FIELDNAME) TO_GET(#RETC #TYPE #LEN....)
ENDIF
 

値*CHECK_AUTH_DYNLIBLがデータ領域DC@OSVEROPに指定されていない場合、ファイルに対する権限(FD)を検査する際にライブラリまたは*LIBLが指定されていないときは、LANSAに入力された時点では存在したファイルが現在はライブラリ・リストにあることが想定されます。ライブラリ・リストをダイナミックに変更することはできません。LANSAセッションの間にライブラリ・リストが変更された場合は、新しいライブラリ・リストを認識させるためにLANSAを一度終了してから再起動する必要があります。

ヒント

値*CHECK_AUTH_DYNLIBLがデータ領域DC@OSVEROPに指定されている場合は、ファイルに対する権限(FD)を検査する際にライブラリまたはLIBLが指定されていないときは、そのつどライブラリ・リストが取得されて、CHECK_AUTHORITYで実際に使用するライブラリがダイナミックに決定されます。この設定を使用すると、パフォーマンスに影響が生じる場合があります。

ファイルに対する権限を検査する場合は、オブジェクト拡張子の値にシステム変数*PARTDTALIBを使用します。

注:FUNCTION 権限(タイプPF)を検査する場合は、引数としてPROCESSとFUNCTIONの両方を指定する必要があります。つまり、オブジェクト名は PROCESSで、オブジェクト拡張子はFUNCTIONになります。

USE      BUILTIN(CHECK_AUTHORITY) 
         WITH_ARGS (#PROCESS CONTROL PF UD ) TO_GET(#OKAY)
IF       COND('#OKAY *EQ Y')
CALL     PROCESS(#PROCESS) FUNCTION(CONTROL)
ELSE
MESSAGE  MSGTXT('Not authorized to function CONTROL')
ENDIF