9.13 CHECK_AUTHORITY
ユーザーがオブジェクトに対する特定の権限を持っているかどうかを検査します。
各製品の対応
LANSA/AD |
使 用可 |
|
Visual LANSA for Windows |
使 用可 |
オ ブジェクト・タイプP#およびATには、このプラットフォームの文脈上何の意味もありません。これらのオブジェクト・タイプのいずれかがこの組み込 み関数に渡されると、エラーが戻されます。 |
Visual LANSA for Linux |
使 用可 |
引数
番号 |
タイプ |
必須/任意 |
記述 |
最小長 |
最大長 |
最小小数桁数 |
最大小数桁数 |
---|---|---|---|---|---|---|---|
1 |
A |
必 須 |
オ ブジェクト名 |
1 |
10 |
||
2 |
A |
必 須 |
オ
ブジェクト名 -
ブランク |
1 |
10 |
||
3 |
A |
必 須 |
オ
ブジェクト・タイプ DF
- フィールド |
2 |
2 |
||
4 |
A |
必 須 |
オ ブジェクトに必要な権限: 値: 操
作上 デー
タ |
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