オブジェクト検査 (CHKOBJ)
| 実行可能場所: すべての環境 (*ALL) スレッド・セーフ: はい |
パラメーター 例 エラー・メッセージ |
オブジェクト検査(CHKOBJ)コマンドは,オブジェクトへのアクセスを試みる前に,オブジェクトの存在を検査し,オブジェクトに対するユーザーの権限を検査します。オブジェクトが存在し,ユーザーがオブジェクトに対する適切な権限をもっている場合には,ユーザーにエラー・メッセージは送られません。検査の場合には,コマンドに最大10の特定権限を指定することができます。
これらの検査は,ユーザーが複数のオブジェクトに同時にアクセスを試みる前に,特に有用です。このコマンドは,CL変数に組み込まれているオブジェクト名の妥当性を検査し,プログラム制御のもとにあるオブジェクト権限を確認するためにも使用されます。
このコマンドが実行されると,システムは指定されたオブジェクトを検索します。そのオブジェクトが見つかると,システムは,ユーザーがそのオブジェクトに対して権限(AUT)パラメーターに指定された通りに認可されていることを検査します。オブジェクトが見つからない場合,あるいはユーザーがAUTパラメーターに指定された権限をもっていない場合には,ユーザーにエラー・メッセージが送られます。
| 上 |
パラメーター
| キーワード | 記述 | 選択項目 | ノーツ |
|---|---|---|---|
| OBJ | オブジェクト | 修飾オブジェクト名 | 必須, 定位置 1 |
| 修飾子 1: オブジェクト | 名前 | ||
| 修飾子 2: ライブラリー | 名前, *LIBL, *CURLIB | ||
| OBJTYPE | オブジェクト・タイプ | *ALRTBL, *AUTL, *BNDDIR, *CFGL, *CHTFMT, *CLD, *CLS, *CMD, *CNNL, *COSD, *CRG, *CRQD, *CSI, *CSPMAP, *CSPTBL, *CTLD, *DEVD, *DOC, *DTAARA, *DTADCT, *DTAQ, *EDTD, *EXITRG, *FCT, *FILE, *FLR, *FNTRSC, *FNTTBL, *FORMDF, *FTR, *GSS, *IGCDCT, *IGCSRT, *IGCTBL, *IMGCLG, *IPXD, *JOBD, *JOBQ, *JOBSCD, *JRN, *JRNRCV, *LIB, *LIND, *LOCALE, *MEDDFN, *MENU, *MGTCOL, *MODD, *MODULE, *MSGF, *MSGQ, *M36, *M36CFG, *NODGRP, *NODL, *NTBD, *NWID, *NWSCFG, *NWSD, *OUTQ, *OVL, *PAGDFN, *PAGSEG, *PDFMAP, *PDG, *PGM, *PNLGRP, *PRDDFN, *PRDLOD, *PSFCFG, *QMFORM, *QMQRY, *QRYDFN, *RCT, *SBSD, *SCHIDX, *SPADCT, *SQLPKG, *SQLUDT, *SQLXSR, *SRVPGM, *SSND, *SVRSTG, *S36, *TBL, *TIMZON, *USRIDX, *USRPRF, *USRQ, *USRSPC, *VLDL, *WSCST | 必須, 定位置 2 |
| MBR | データベース・ファイルの場合にメンバー | 名前, *NONE, *FIRST | オプショナル, 定位置 3 |
| AUT | 権限 | 単一値: *NONE, *ALL, *CHANGE, *USE, *EXCLUDE, *AUTLMGT その他の値 (最大 10 回の繰り返し): *OBJALTER, *OBJEXIST, *OBJMGT, *OBJOPR, *OBJREF, *ADD, *DLT, *EXECUTE, *READ, *UPD |
オプショナル, 定位置 4 |
| 上 |
オブジェクト (OBJ)
検査されるオブジェクトを指定します。
これは必須パラメーターです。
修飾子1: オブジェクト
- 名前
- 検査されるオブジェクトの名前を指定してください。
修飾子2: ライブラリー
- *LIBL
- 最初に一致するものが見つかるまで,現行スレッドのライブラリー・リスト内のすべてのライブラリーが検索されます。
- *CURLIB
- スレッドの現行ライブラリーが検索されます。スレッドの現行ライブラリーとして指定されているライブラリーがない場合,QGPLライブラリーが検索されます。
- 名前
- 検索するライブラリーの名前を指定してください。
| 上 |
オブジェクト・タイプ (OBJTYPE)
検査されるオブジェクトのオブジェクト・タイプを指定します。
このコマンドについてプロンプトを出す時にオブジェクト・タイプの完全なリストを表示するには,このパラメーターのフィールドにカーソルを位置付け,F4(プロンプト)を押します。オブジェクト・タイプの記述については,IBM I INFORMATION CENTER (HTTP://WWW.IBM.COM/SYSTEMS/I/INFOCENTER/)の「プログラミング」カテゴリーの「制御言語(CL)」トピック・コレクションの「オブジェクト・タイプ」を参照してください。
これは必須パラメーターです。
- オブジェクト・タイプ
- 検査されるオブジェクトのタイプを指定してください。
| 上 |
データベース・ファイルの場合にメンバー (MBR)
データベース・ファイルのメンバーが検査される場合には,そのファイル・メンバーを指定します。
注: 基礎となっている論理ファイル・メンバーおよび物理ファイル・メンバーが検査されます。
- *NONE
- データベース・ファイル・メンバーは検査されませんが,ファイルの存在および権限(任意選択)は検査されます。他のすべてのオブジェクト・タイプ(装置ファイルを含む)の場合には,*NONEがこのパラメーターに有効な唯一の値です。
- *FIRST
- 指定したファイルの最初のメンバーが使用されます。
- 名前
- 検査される物理ファイル・メンバーまたは論理ファイル・メンバーを指定してください。オブジェクト(OBJ)およびオブジェクト・タイプ(OBJTYPE)パラメーターに指定する値はデータベース・ファイルを識別するものでなければならず,また指定するメンバーはOBJパラメーターに指定したデータベース・ファイルのメンバーでなければなりません。
| 上 |
権限 (AUT)
検査される権限を指定するか,検査される権限リストを指定します。このパラメーターは,単一値として指定することも,1つまたは複数の要素のリストとして指定することもできます。
単一値
- *NONE
- 権限は検査されません。
- *ALL
- 全(*ALL)権限では,所有者に限定されているものまたは権限リスト管理(*AUTLMGT)権限によって制御されるものを除くすべての操作を実行するために必要な権限が提供されます。ユーザーは,オブジェクトの存在を制御し,オブジェクトの機密保護を指定し,オブジェクトを変更し,オブジェクトに対して基本的な機能を実行することができます。オブジェクトの所有権を変更することもできます。
- *CHANGE
- 変更(*CHANGE)権限では,所有者に限定されているもの,あるいはオブジェクト存在(*OBJEXIST)またはオブジェクト管理(*OBJMGT)権限によって制御されるものを除き,オブジェクトに対するすべての操作を実行するために必要な権限が提供されます。ユーザーは,オブジェクトに対して基本的な機能を変更および実行することができます。*CHANGE権限では,オブジェクト操作(*OBJOPR)および全データ権限が提供されます。オブジェクトが権限リストである場合には,ユーザーの追加,変更,または除去は行えません。
- *EXCLUDE
- 除外権限は,オブジェクトにアクセスできないようにします。
- *AUTLMGT
- 権限リスト管理権限(*AUTLMGT)権限では,権限リストへのユーザー名の追加,権限リスト上のユーザーの権限の変更,権限リストからのユーザー名の除去,権限リストの名前変更,または重複権限リストの作成のために必要な権限が提供されます。
注: *AUTLMGT権限を指定する時は,*AUTLというオブジェクト・タイプを使用しなければなりません。
その他の値(最大10個指定可能)
- *OBJALTER
- オブジェクト変更(*OBJALTER)権限では,オブジェクトの属性を変更するために必要な権限が提供されます。ユーザーがデータベース・ファイルに対してこの権限をもっている場合には,そのユーザーはトリガーを追加および除去したり,参照制約および固有制約を追加および除去したり,データベース・ファイルの属性を変更したりできます。ユーザーがSQLパッケージに対してこの権限をもっている場合には,ユーザーはSQLパッケージの属性を変更することができます。この権限は現在データベース・ファイルとSQLパッケージにしか使用されません。
- *OBJEXIST
- オブジェクト存在(*OBJEXIST)権限では,オブジェクトの所有権および存在を制御するために必要な権限が提供されます。これらの権限は,削除,記憶域解放,保存,復元,所有権の移転を有するユーザーにとって必要です。(システム保存(*SAVSYS)特殊権限をもっている場合には,*OBJEXIST権限は必要ありません。)
- *OBJMGT
- オブジェクト管理(*OBJMGT)権限では,オブジェクトの機密保護を指定したり,オブジェクトを移動または名前変更したり,メンバーをデータベース・ファイルに追加したりするために必要な権限が提供されます。
- *OBJOPR
- オブジェクト操作(*OBJOPR)権限では,オブジェクトの記述を調べたり,ユーザーがオブジェクトに対してもつデータ権限によって決められた通りにオブジェクトを使用したりするために必要な権限が提供されます。*OBJOPR権限には関連したデータ権限がありません。
- *OBJREF
- オブジェクト参照(*OBJREF)権限では,オブジェクトを別のオブジェクトから参照して,そのオブジェクトに対する操作が他方のオブジェクトによって制限されるようにするために必要な権限が提供されます。ユーザーが物理ファイルに対してこの権限をもっている場合には,ユーザーは,その物理ファイルが親となっている参照制約を追加することができます。この権限は現在データベース・ファイルにしか使用されません。
- *ADD
- 追加(*ADD)権限では,オブジェクトに項目を追加する(例えばジョブ項目を待ち行列に追加するか,ファイルにレコードを追加する)ために必要な権限が提供されます。
- *DLT
- 削除(*DLT)権限では,オブジェクトから項目を除去するために必要な権限が提供されます。
- *EXECUTE
- 実行(*EXECUTE)権限では,プログラムを実行するか,ライブラリーまたはディレクトリー中でオブジェクトを見つけるために必要な権限が提供されます。
- *READ
- 読み取り(*READ)権限では,オブジェクトの内容を表示するために必要な権限が提供されます。
- *UPD
- 更新(*UPD)権限では,オブジェクト中の項目を変更するために必要な権限が提供されます。
| 上 |
例
例1:プログラムの存在の検査
CHKOBJ OBJ(LIB1/PROG1) OBJTYPE(*PGM)
このコマンドは,ライブラリーLIB1中のPROG1という名前のプログラムの存在を検査します。PROG1に対する権限は検査されません。
例2:ファイルに対するユーザーの権限の検査
CHKOBJ OBJ(SOURCE1) OBJTYPE(*FILE) MBR(MBR3) AUT(*CHANGE)
このコマンドは,ファイルSOURCE1の存在およびファイルSOURCE1中のメンバーMBR3の存在を検査します。ファイルSOURCE1に対する変更(*CHANGE)権限の有無も検査されます。
例3:プログラムに対する権限の検査
CHKOBJ OBJ(LIB1/PROG1) OBJTYPE(*PGM) AUT(*CHANGE)
このコマンドは,ライブラリーLIB1中のプログラムPROG1の存在を検査します。PROG1に対する変更(*CHANGE)権限の有無も検査します。
例4:論理ファイル・メンバーに対するユーザーの権限の検査
CHKOBJ OBJ(FILEA) OBJTYPE(*FILE) MBR(MBR1) AUT(*USE)
このコマンドは,論理ファイル・メンバーMBR1およびMBR1の基礎となっている各物理ファイル・メンバーを使用するための権限を検査します。
例5:ユーザーの追加権限および削除権限の検査
CHKOBJ OBJ(FILEA) OBJTYPE(*FILE) MBR(MBR1) AUT(*ADD *DLT) MONMSG MSGID(CPF9802) EXEC(GOTO ERROR1)
これら2つのコマンド(CHKOBJおよびMONMSG)は,論理ファイルFILEAと論理ファイルFILEA中の論理ファイル・メンバーMBR1の基礎となっている各物理ファイル・メンバーに対する追加(*ADD)権限と削除(*DLT)権限の両方をもっているかどうかを検査するために使用されます。FILEAおよびFILEAの基礎となっている各物理ファイル・メンバーに対するデータ権限がない場合には,エスケープ・メッセージCPF9802がプログラムに送られ,プログラムの制御はラベルERROR1のコマンドに移ります。
| 上 |
エラー・メッセージ
*ESCAPE メッセージ
- CPF9801
- ライブラリー&3にオブジェクト&2が見つからない。
- CPF9802
- &3のオブジェクト&2は認可されていない。
- CPF9810
- ライブラリー&1が見つかりません。
- CPF9815
- ライブラリー&3のファイル&2のメンバー&5が見つからない。
- CPF9820
- ライブラリー&1の使用は認可されていない。
- CPF9830
- ライブラリー&1を割り当てることができない。
- CPF9899
- コマンドの処理中にエラーが起こった。
| 上 |