IBM i (旧AS400）の自己学習メモ　コマンド／ツール／運用　DSPOBJDでAS400上のオブジェクト一覧を確認する

# 自己学習メモインデックス

[IBM i (旧AS400）の自己学習メモ　インデックス](https://qiita.com/You_name_is_YU/items/3964849e7803c8eaf767)

# 概要

AS400には、CLプログラムのオブジェクトやRPGプログラムのオブジェクト、PFやLFのオブジェクトやJOBなどのオブジェクトなどが存在します。
基本的にはライブラリなどでオブジェクトの切り分けを行って、ソースコードやコンパイルしたオブジェクト、テーブルのデータなどを区分けしていると思いますが、どういった構成でどんなオブジェクトが存在しているのか、把握しきれないこともあります。
そんな時に便利かなぁと思うのがDSPOBJDコマンドです。

このコマンドで、指定したライブラリ内にあるオブジェクトの一覧情報を取得することができます。

# DSPOBJDでYAMAGUCHI1ライブラリ内のオブジェクト一覧を取得

以下のコマンドは、YAMAGUCHI1ライブラリ内にあるオブジェクト一覧を、QTEMP/OBJLSTに出力します。
QTEMPは一時ファイルの格納先なので、AS400からログアウトすれば削除されてしまいます。
永続化しておきたい場合、YAMAGUCHI1/OBJLSTなど、保管先を変更することをお勧めします。

```
DSPOBJD OBJ(YAMAGUCHI1/*ALL) OBJTYPE(*ALL) OUTPUT(*OUTFILE) OUTFILE(QTEMP/OBJLST)
```

![スクリーンショット 2020-12-29 9.15.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/5c2db3de-eed8-9902-b2a4-732d4d16c30d.png)

上記を実行したあと、WRKQRYなどでQTEMP/OBJLSTの中身を確認してみます。

```
runqry () qtemp/objlst
```

![スクリーンショット 2020-12-29 9.18.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/f3bb1d40-3cf3-2bf5-6b4c-31eb5398dc28.png)

- ObjectTypeが*PGMとなっているものは、コンパイルされたプログラムオブジェクトです。
    - ObjectAttribute=RPGLEはRPGプログラム
    - CLLEはCLプログラム
- ObjectTypeが*FILEとなっているものは、コンパイルされたファイルオブジェクトです。
    - ObjectAttribute=DSPFは画面プログラム
    - PFは物理ファイル
    - LFは論理ファイル
    - SAVFはセーブファイル

などといった感じのオブジェクト一覧情報が確認できます。
DSPOBJDで出力される各項目の説明については、後述します。

## ObjectType=*FILE AND ObjectAttribute=PFの補足

PFに分類されるオブジェクトには、以下の２点が対象となります。

- RDBMSでいうところのテーブル（データを表形式で格納する永続領域）
- CLやRPGのソースコードをメンバーとして保持するファイル

つまり、テーブルだけではなく、ソースコードを保持するファイルについてもPFとして分類されるということです。
私のpub400.com環境では、以下の枠線内のものが該当します。

![スクリーンショット 2020-12-29 9.42.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/2065ac85-1732-f77a-2b5a-ea90e25b4d3b.png)

pub400.comでは、完全日本語化ができていない状況もあり、日本語部分が文字化けしてしまうのですが、
テキスト記述（Text Description）にそのファイルの役割について、コメントが記載されていますので、
ソースを格納しているファイルなのかどうかは、テキスト記述で判別可能です。
（もちろん丁寧にコメントを記述してくれていればの話ですが。）

## DSPOBJDの出力結果のテーブル定義

|項目|概要|
|:--------|:---------------------------------------------------|
| ODDCEN | 表示世紀: 0=19XX,   1=20XX                        |
| ODDDAT | 表示日付（ジョブ日付の形式）                      |
| ODDTIM | 表示時刻(HHMMSS)                                  |
| ODLBNM | ライブラリー                                      |
| ODOBNM | オブジェクト                                      |
| ODOBTP | オブジェクト・タイプ                              |
| ODOBAT | オブジェクトの属性                                |
| ODOBFR | 記憶域解放:   0=解放しない，1=解放                |
| ODOBSZ | ｵﾌﾞｼﾞｪｸﾄ･ｻｲｽﾞ:   9,999,999,999=ODSIZU*ODBPUN使用  |
| ODOBTX | テキスト記述                                      |
| ODOBLK | オブジェクトのロック:   0=ロックなし，1=ロック    |
| ODOBDM | 損傷ｵﾌﾞｼﾞｪｸﾄ   : 0=損傷なし， 1=全部，2=一部      |
| ODCCEN | 作成世紀:   0=19XX, 1=20XX                        |
| ODCDAT | 作成日付(MMDDYY)                                  |
| ODCTIM | 作成時刻(HHMMSS)                                  |
| ODOBOW | オブジェクト所有者                                |
| ODSCEN | 保管世紀:   0=19XX, 1=20XX                        |
| ODSDAT | 保管日付(MMDDYY)                                  |
| ODSTIM | 保管時刻(HHMMSS)                                  |
| ODSCMD | 保管コマンド                                      |
| ODSSZE | 保管されたサイズ                                  |
| ODSSLT | 開始スロット                                      |
| ODSDEV | 保管装置                                          |
| ODSV01 | 保管ﾎﾞﾘｭｰﾑ                                        |
| ODSV02 | 保管ﾎﾞﾘｭｰﾑ                                        |
| ODSV03 | 保管ﾎﾞﾘｭｰﾑ                                        |
| ODSV04 | 保管ﾎﾞﾘｭｰﾑ                                        |
| ODSV05 | 保管ﾎﾞﾘｭｰﾑ                                        |
| ODSV06 | 保管ﾎﾞﾘｭｰﾑ                                        |
| ODSV07 | 保管ﾎﾞﾘｭｰﾑ                                        |
| ODSV08 | 保管ﾎﾞﾘｭｰﾑ                                        |
| ODSV09 | 保管ﾎﾞﾘｭｰﾑ                                        |
| ODSV10 | 保管ﾎﾞﾘｭｰﾑ                                        |
| ODSVMR | 継続ﾎﾞﾘｭｰﾑ:   0=YES, 1=NO, 2=並行保管形式         |
| ODRCEN | 復元世紀:   0=19XX, 1=20XX                        |
| ODRDAT | 復元日付(MMDDYY)                                  |
| ODRTIM | 復元時刻(HHMMSS)                                  |
| ODCPFL | システム・レベル                                  |
| ODSRCF | ソース・ファイル名                                |
| ODSRCL | ソース・ファイル・ライブラリー                    |
| ODSRCM | ソース・ファイル・メンバー                        |
| ODSRCC | ソース変更世紀:   0=19XX, 1=20XX                  |
| ODSRCD | ソース変更日付(YYMMDD)                            |
| ODSRCT | ソース変更時刻(HHMMSS)                            |
| ODCMNM | コンパイラー名                                    |
| ODCMVR | コンパイラー・レベル                              |
| ODOBLV | オブジェクト・レベル                              |
| ODUMOD | ユーザー変更:   0=変更なし，1=変更                |
| ODPPNM | LICPGM名                                          |
| ODPPVR | LICPGMレベル                                      |
| ODPCNR | PTF番号                                           |
| ODAPAR | APAR   ID                                         |
| ODSSQN | 順序番号:   -5=ODSSQL ﾌｨｰﾙﾄﾞ参照                  |
| ODLCEN | 変更世紀:   0=19XX, 1=20XX                        |
| ODLDAT | 変更日付(MMDDYY)                                  |
| ODLTIM | 変更時刻(HHMMSS)                                  |
| ODSFIL | 保管ファイル                                      |
| ODSFLB | 保管ファイルのライブラリー                        |
| ODASP  | ASP番号:   -1=ODASPLフィールド参照                |
| ODLBL  | ファイル・ラベル                                  |
| ODPTFN | PTF   ID                                          |
| ODOBSY | システム名                                        |
| ODCRTU | 作成ユーザー                                      |
| ODCRTS | 作成したシステム                                  |
| ODUUPD | 使用状況の更新:   Y=はい，N=いいえ                |
| ODUCEN | 最終使用世紀:   0=19XX, 1=20XX                    |
| ODUDAT | 最終使用日付(MMDDYY)                              |
| ODUCNT | 使用日数ｶｳﾝﾄ                                      |
| ODTCEN | リセット世紀:   0=19XX, 1=20XX                    |
| ODTDAT | リセット時刻(MMDDYY)                              |
| ODODMN | オブジェクト定義域:   *S=システム，*U=ユーザー    |
| ODCPVR | システム・バージョン：VXRYMZまたはVVRRMM          |
| ODCVRM | コンパイラー・バージョン：VXRYMZまたはVVRRMM      |
| ODPVRM | LICPGMバージョン：VXRYMZまたはVVRRMM              |
| ODCPRS | 圧縮状況                                          |
| ODOASP | オーバーフローASP:   0=いいえ，1=はい             |
| ODAAPI | API変更可能:   0=いいえ，1=はい                   |
| ODAPIC | APIによる変更:   0=変更なし，1=変更               |
| ODUATR | ユーザー定義の属性                                |
| ODACEN | 保管活動世紀:   0=19XX, 1=20XX                    |
| ODADAT | 保管活動日付(MMDDYY)                              |
| ODATIM | 保管活動時刻(HHMMSS)                              |
| ODAUDT | オブジェクト監査値                                |
| ODSIZU | 装置中のオブジェクト・サイズ                      |
| ODBPUN | 装置当たりのバイト数                              |
| ODPGP  | １次グループ                                      |
| ODSSQL | 大順序番号                                        |
| ODOSIG | ディジタル署名:   0=いいえ，1=はい                |
| ODJRST | 現在ジャーナル処理中:   0=いいえ，1=はい          |
| ODJRNM | ジャーナル名                                      |
| ODJRLB | ジャーナル・ライブラリー                          |
| ODJRIM | ジャーナル・イメージ:   0=*AFTER, 1=*BOTH         |
| ODJREN | 除外ジャーナル項目:   0=*NONE, 1=*OPNCLO          |
| ODJRCN | ジャーナル世紀:   0=19XX, 1=20XX                  |
| ODJRDT | ジャーナル日付(MMDDYY)                            |
| ODJRTI | ジャーナル時刻(HHMMSS)                            |
| ODSSZU | 保管サイズ単位数                                  |
| ODSBPU | 保管サイズ乗数                                    |
| ODASPL | オブジェクトASP番号                               |
| ODLASN | ライブラリーASP番号                               |
| ODOADN | オブジェクトASP装置名                             |
| ODLADN | ライブラリーASP装置名                             |
| ODSSIG | トラステッド・ソースによる署名済み:   0=NO, 1=YES |
| ODMSIG | 複数署名:   0=NO, 1=YES                           |
| ODASSZ | 関連スペース・サイズ：0=スペースなし              |
| ODALGN | 最適ｽﾍﾟｰｽ調整：0=いいえ1=はい2=ｽﾍﾟｰｽなし          |
| ODOADG | オブジェクトASPグループ名                         |
| ODLADG | ライブラリーASPグループ名                         |
| ODSJRA | 適用する開始ジャーナル・レシーバー名              |
| ODSJRL | 開始ジャーナル・レシーバー・ライブラリー名        |
| ODSJRD | 開始レシーバー・ライブラリーASP装置名             |
| ODSJRG | 開始レシーバー・ライブラリーASPグループ名         |
| ODJRJF | リモート・ジャーナル・フィルター:   0=NO, 1=YES   |
| ODDTL  | オブジェクト詳細(DETAIL値）                       |

# 全てのライブラリの全てのオブジェクトを見る場合

上記までだと、指定したライブラリ内のオブジェクトをみることはできますが、自分が把握していないライブラリに、実はこっそりとプログラムが配置されていて、そのプログラムが動いていた。なんてこともあるかもしれません。
なので、ライブラリなども指定せずに全ライブラリの全オブジェクトを一覧で確認したい場合は、以下のように`OBJ(*ALL/*ALL)`と指定することで、実現可能です。

```
DSPOBJD OBJ(*ALL/*ALL) OBJTYPE(*ALL) OUTPUT(*OUTFILE) OUTFILE(QTEMP/ALLOBJLST)
```