8. 実機取得とPARTIALの残し方

IBM i / AS400 解析・リバース — 最良の手順と手法(匿名化公開用)

版 2026-07-22 · 対外公開用 · プロンプト+実践知見+用語集

対外公開版(匿名化済み) — 顧客名・案件名・固有ライブラリ/パス/プログラム名は一般化しています。用語は青点線にマウスオーバーで定義を表示。巻末「用語集」も参照。
依頼の言い方(メンバー向け): 「この機能はどのデータを読んで・書いて・直しているかを、ソースだけで推測確定したくない。 未確定が約150ファイル残っているので、実機の一覧で穴埋めしたい。」 更新・削除系コマンドは使わない。OUTFILE は ANLWLIB / QTEMP

優先度(要約)

優先取得平易な理由
ADSPDBR論理(索引)と物理(本体)の公式対応
ADSPPGMREF鮮度/不足コンパイル時の参照名簿
ADSPFFD不足項目定義(テーブル定義書)
B代表5機能の開ファイルOVRDBF等で実行時実体が違う
BJOBD LIBL同名の棚の順番

開ファイル取得の優先5機能

  1. FUNC01
  2. FUNC02
  3. FUNC03
  4. FUNC04
  5. FUNC05

PARTIALを残すときのルール


平易説明(全文)

なぜ実機から追加情報が必要か(平易な説明)


一言でいうと

基幹移行では「この機能は、どのデータを読んで・書いて・直しているか」をはっきりさせたいです。

ソースの読み取りだけでは、宣言はあるが実際の読み書きが分からない行がまだ残っています。

それを埋めるために、実機から「関係図」と「実際に開いているファイル」を見せてほしい、という依頼です。

いま手元にあるものでもかなり進んでいます。

足りないのは「実行時の最終確認」と「ファイル同士の公式なつながり」です。


いま困っていること(具体例)

ソースを読むと、次のような行が出てきます。

> 「このプログラムは、ファイル A を使う」と書いてある

> でも、そのあと「読む」「書く」「直す」命令が見つからない

この状態を、調査では 部分確認(PARTIAL と呼んでいます。

断言すると間違えるので、あえて「未確定のまま」残しています。

いま、こうした未確定が だいたい 150 ファイル前後・100 機能以上 に残っています。

ここを放置すると、移行設計で「触らないつもりだったデータが実は更新されていた」などの見落としにつながります。


お願いしているものが必要な理由

1. DSPDBR(物理ファイルと論理ファイルの関係)

例え: 「顧客マスタ」という本(物理)と、「五十音順の索引」「地区別の索引」(論理)の対応表です。

プログラムはよく 索引の名前 で書いています。

でも移行や影響調査では 本当の本の名前 で考える必要があります。

手元のソースだけだと、索引→本の対応が取れない/古い場合があります。

実機の DSPDBR は、その対応の 公式な一覧 です。

これがあると:

「画面では FA011L01 と書いてあるが、中身は FA011 を見ている」と一本化でき、CRUD 図・テーブル定義書が正確になります。


2. DSPPGMREF(プログラムが参照するファイル一覧)※取得日の確認/不足分

例え: コンパイル時点の「このプログラムが使うファイルの名簿」です。

以前取った名簿は手元にあります。

ただ、いつの名簿かが分からないと、古い情報で判断してしまう恐れがあります。

お願いしたいのは次のどちらかです。

これがあると:

ソースで読み書き命令が見えない行でも、「コンパイル時には入力扱いだった」などの手がかりになります。

※これだけで最終確定はしません。補助材料です。


3. DSPFFD(項目定義)の不足分

例え: 表の「列の一覧(項目名・桁・型)」です。

テーブル定義書を作る材料です。

すでに大量にありますが、ライブラリによっては足りない/新しいオブジェクトがある可能性があります。

これがあると:

「何の項目を持っている表か」が説明でき、業務意味の解釈が進みます。


4. 代表機能を動かしたときの「開いているファイル」(いちばん効く)

例え: 設計図には「倉庫A」と書いてあるのに、当日は「臨時倉庫B」を使っていた、という確認です。

AS/400 では、プログラム実行前に ファイルの行き先を差し替えるOVRDBF など)ことがよくあります。

ソースだけ見ると「ORDERPF」でも、実行時は別ファイルになっていることがあります。

だから、代表機能を動かした(または動いている)ジョブで、

> 実際に開いていたファイル名の一覧

を見せてほしい、という依頼です。

まずは次の 5機能だけ で十分です。

  1. FUNC01
  2. FUNC02
  3. FUNC03
  4. FUNC04
  5. FUNC05

(未確定が特に多い機能から選んでいます)

これがあると:

「ソース上の名前」と「本番で本当に触っているデータ」のズレを潰せます。

CRUD の精度が一段上がります。


5. ジョブ記述のライブラリリスト(代表でよい)

例え: 「同じファイル名でも、どの棚(ライブラリ)を先に探すか」の順番表です。

同名ファイルが複数ライブラリにあると、実行環境によって実体が変わります。

代表的な起動経路の順番が分かると、名前解決の間違いが減ります。


やらなくてよいこと(安心材料)

見るだけ・一覧を出すだけ の作業です。


これが揃うと何が良くなるか

実機情報が来たあと
「使う宣言はあるが、読書き不明」が多い関係図と実行時確認で、確定/推定を分けられる
LF名とPF名が混在しやすい「本当の表」単位で影響範囲を話せる
CRUD図・テーブル定義書に穴が残る穴を埋め、移行・影響調査の根拠が強くなる

目的は debuggable な文書化です。

推測で「確定」にしない ための材料集め、と理解してもらえると助かります。


コピペ用・返信文(短文)

すみません、意図が伝わりにくかったので補足します。

やりたいことは単純で、「この機能はどのデータを読んで・書いて・直しているか」を、ソースだけに頼らず確認することです。

いま手元のソース調査だと、「ファイルを使う、とは書いてあるが、読む/書く命令が見つからない」行がまだ残っています(だいたい150ファイル前後)。
ここを推測で確定すると危険なので、実機から次の一覧だけいただきたく依頼しています。

1. 物理ファイルと論理ファイルのつながり(DSPDBR)… 索引と本体の対応表
2. プログラムが参照するファイル名簿の取得日確認/不足分(DSPPGMREF)
3. 項目定義の不足分(DSPFFD)
4. 代表5機能を動かしたときに、実際に開いていたファイル一覧
   (FUNC01 / FUNC02 / FUNC03 / FUNC04 / FUNC05)
5. 代表的なジョブのライブラリ検索順

データの変更やプログラム改修は不要です。見る・一覧を出すだけです。
詳細コマンドは依頼書に書いてあります。まず4の5機能だけでもかなり助かります。

実機取得依頼(全文)

IBM i 実機からの追加情報取得のお願い(平易版)


0. まずこれだけ読んでほしい(なぜ頼むか)

基幹移行では「この機能は、どのデータを読んで・書いて・直しているか」をはっきりさせたいです。

ソースを読むと、「ファイルを使う」と書いてあるのに、そのあとの「読む/書く/直す」命令が見つからない行が残ります。

いまその未確定が だいたい150ファイル前後 あります。推測で確定すると危険なので、実機の一覧で穴埋めしたい、というのが依頼の理由です。

お願い平易な意味
DSPDBR索引(論理)と本体(物理)の対応表
DSPPGMREFプログラムが使うファイルの名簿(取得日確認/不足分)
DSPFFD表の列(項目)一覧の不足分
開ファイル一覧動かしたときに 本当に開いていた ファイル(まず5機能)
JOBDLIBL同名ファイルをどの棚から探すかの順番

データの変更やプログラム改修は不要です。見る・一覧を出すだけです。


依頼の背景(短く)

いま手元にはソースと、以前取得したオブジェクト一覧・プログラム参照(DSPPGMREF)があります。

それでも次の点が残りやすいです。

  1. ソース上の名前と、実行時に実際に開いているファイルが違うことがある(上書き・ライブラリリスト)
  2. 物理ファイルと論理ファイルのつながりが、手元に無い/古いものがある
  3. 画面・帳票の「レコード様式」とファイル名の対応が、取りこぼしの原因になっている

そのため、追加で実機から取っていただきたいものを、優先度つきで依頼します。

絞り込みリスト(手元で作成済み)

詳細: [SHARED]\requirements\06_IBM_i情報\レポート\_pilot\PARTIAL残_実機確認リスト_20260722.md

(ミラー: C:\WORK\ibm-i-analysis\documents\PARTIAL残_実機確認リスト_20260722.md

開ファイル取得(B-1)でまずお願いしたい機能 5件:

  1. FUNC01
  2. FUNC02
  3. FUNC03
  4. FUNC04
  5. FUNC05

DSPFFD / DSPDBR の絞り込み: 同リスト末尾の「ユニークファイル名一覧」(149件)を優先。ライブラリ全体が取れるなら全体取得で問題ありません。


【優先度A】まずお願いしたいもの(効果大・手戻り小)

A-1. 物理ファイル ↔ 論理ファイルの関係一覧(DSPDBR

何のため: 「このLFはどのPFを見ているか」を機械的に確定するため。

対象ライブラリは、現行調査で使っているもの(例: APPLIB / APPNEW / APPUSRC / APPSLIB / APPOBJ など)。

ライブラリ名は現場の正に合わせてください。

/* 調査用ライブラリを用意(無ければ作成。権限のある方が実施) */
CRTLIB LIB(ANLWLIB) TEXT('調査用ワーク')

/* 例: ライブラリ APPLIB 内の全ファイルの依存関係 */
DSPDBR FILE(APPLIB/*ALL) OUTPUT(*OUTFILE) OUTFILE(ANLWLIB/DBR_APPLIB)

/* 他ライブラリも同様に(ライブラリ名を変えて繰り返し) */
DSPDBR FILE(APPNEW/*ALL) OUTPUT(*OUTFILE) OUTFILE(ANLWLIB/DBR_APPNEW)
DSPDBR FILE(APPSLIB/*ALL) OUTPUT(*OUTFILE) OUTFILE(ANLWLIB/DBR_APPSLIB)

いただきたい成果物: 上記 OUTFILE を CSV または保存ファイルで共有

(ACS の「データの取り込み」や CPYTOIMPF で CSV 化でも可)

CPYTOIMPF FROMFILE(ANLWLIB/DBR_APPLIB)
          TOSTMF('/tmp/DBR_APPLIB.csv')
          MBROPT(*REPLACE) STMFCCSID(*PCASCII) RCDDLM(*CRLF)

IFS パスは社内ルールに合わせて変更してください)


A-2. プログラム参照情報の再取得(DSPPGMREF)※差分・鮮度確認

何のため: 手元の DSPPGMREF が古い/欠けている場合の穴埋め。

すでに同内容があれば「最終取得日」だけ教えていただければ、再取得は不要です。

/* 業務プログラムライブラリ単位(件数が多いので *ALL は分割推奨) */
DSPPGMREF PGM(APPLIB/*ALL)
          OUTPUT(*OUTFILE)
          OBJTYPE(*ALL)
          OUTFILE(ANLWLIB/PGMREF_APP)

DSPPGMREF PGM(APPNEW/*ALL)
          OUTPUT(*OUTFILE)
          OBJTYPE(*ALL)
          OUTFILE(ANLWLIB/PGMREF_APPN)

特に欲しい列の意味(参考):

WHFUSG = 入力/出力/更新の区分(1=入力, 2=出力, 4=更新 など)

いただきたい成果物: OUTFILE または CSV + 取得日時・対象ライブラリ一覧


A-3. ファイルの項目定義(DSPFFD)の不足分

何のため: レコード様式名と項目の対応確認。

手元に DDS項目情報(DSPFFD_1).csv があります。不足ライブラリ/新規オブジェクトだけで構いません。

DSPFFD FILE(対象ライブラリ/*ALL)
       OUTPUT(*OUTFILE)
       OUTFILE(ANLWLIB/FFD_xxx)

件数が多すぎる場合は、次のどちらかで絞ってください。


【優先度B】できる範囲でお願いしたいもの(実行時の食い違い解消)

B-1. 代表ジョブの「実際に開いているファイル」(実行中または再現時)

何のため: ソースでは ORDERPF でも、実行時は別ファイルに indirection(OVRDBF)されているケースがあるため。

CL ソース上、OVRDBF は少なからずあります。

やり方(どちらか):

方法1(実行中ジョブがある場合)

/* ジョブを特定してから */
DSPJOB JOB(ジョブ番号/ユーザ/ジョブ名) OPTION(*OPNF)
/* または */
WRKJOB JOB(...) OPTION(*OPNF)

画面/スプールの「開いているファイル」一覧を保存。

方法2(再現できる対話・バッチがある場合)

対象機能をテスト環境で動かし、同じように開ファイル一覧を取得。

いただきたい成果物(機能あたり1つで可):

最初は よく使う機能 5〜10件 で十分です。リストはこちらで提示できます。


B-2. ジョブ記述のライブラリリスト(代表)

何のため: 同じプログラム名でも、どのライブラリのファイルが当たるか確認するため。

DSPJOBD JOBD(ライブラリ/ジョブ記述名) OUTPUT(*PRINT)
/* またはよく使うものを一覧 */
DSPOBJD OBJ(ライブラリ/*ALL) OBJTYPE(*JOBD) OUTPUT(*OUTFILE) OUTFILE(ANLWLIB/JOBD_LIST)

いただきたい成果物: 本番/検証で業務が使う代表的な JOBD のライブラリリスト(初期・現行)


【優先度C】あれば助かるもの(急がない)

C-1. システム情報(版・CCSID

DSPSFWRSC
DSPSYSVAL SYSVAL(QCCSID)
DSPSYSVAL SYSVAL(QDATFMT)

C-2. SQL オブジェクトがある場合のみ

業務で SQL テーブル/ビューを使っていることが分かっているライブラリだけ。

DSPOBJD OBJ(ライブラリ/*ALL) OBJTYPE(*FILE) DETAIL(*SERVICE) OUTPUT(*OUTFILE) OUTFILE(ANLWLIB/SQLHINT)

(または ACS の「スキーマ」一覧のエクスポート)


やってほしくないこと(安全)


提出時に書いてほしいこと(チェックリスト)

  1. 取得日・取得者・環境(本番/検証/開発)
  2. 対象ライブラリ一覧
  3. 使ったコマンド(上記のどれか)
  4. 出力ファイル名(または CSV パス)
  5. 件数が多すぎて省略した場合の条件

こちらから後送できるもの

依頼しやすくするため、必要なら次をこちらで作ります。


コピペ用・短い依頼文(メール/チャット向け)

お手数ですが、IBM i 移行解析のCRUD確定精度向上のため、実機から参照系の情報取得をお願いできますか。
変更系コマンドは使いません。出力は調査用ライブラリ(例: ANLWLIB)へお願いします。

【最優先】
1. DSPDBR FILE(各業務ライブラリ/*ALL) OUTPUT(*OUTFILE) … PF/LF関係
2. 既存DSPPGMREFの取得日確認。古い/欠けていれば DSPPGMREF PGM(ライブラリ/*ALL) OUTPUT(*OUTFILE) で再取得
3. DSPFFD の不足ライブラリ分

【可能なら】
4. 代表機能について実行時の開ファイル一覧(DSPJOB OPTION(*OPNF))
   まず: FUNC01 / FUNC02 / FUNC03 / FUNC04 / FUNC05
5. 代表JOBDのライブラリリスト

詳細コマンドとファイル名リストは次を参照してください。
- IBM_i_実機取得依頼_20260722.md
- PARTIAL残_実機確認リスト_20260722.md
リストの追加絞り込みが必要ならこちらで作成します。

PARTIAL残・実機確認リスト(全文)

PARTIAL残・実機確認リスト(2026-07-22)

手元解析で PARTIAL のまま残っている対象です。実機取得(DSPDBR / 開ファイル / DSPFFD不足分)の絞り込みに使えます。

優先機能(開ファイル取得の候補・上位15)

優先機能IDPARTIAL件数PGMREF注記あり
1FUNC0188
2FUNC0264
3FUNC0355
4FUNC0455
5FUNC0555
6CD005055
7DX0085C54
8ZSS180I54
9KAI17050
10PGM00144
11CZ035044
12DD0080C44
13DX008544
14DX0085CTST44
15ZSS18043

まず5件(依頼しやすいセット)

PARTIAL対象ファイル(出現多い順・上位80)

ファイル出現
FC030L21IP11
READRTN9
ENDREWRITE7
FC030L22IP6
WD040L01IP6
WW030L01IP6
PB0140DBO5
FB010L17IP5
ZSDTTL02IF5
DATABASETSWTK5
FORMATFILEPRZ0505
WSKD5
WSTM5
EZ0450P4
WORKSTATIONGKAI120SI4
ZSNHD4
PG5705P4
ZSDMI4
ZSSTML64
GO4
FB010L51IP3
FB010L56IP3
WD010L03IP3
HCLST23
WW030L013
ショリ3
ZSSKW3
FB020L03IP2
FB010L71IP2
FB000L01UP2
FB010L05IP2
FC010L03UP2
FC010L11UP2
FC010L16UP2
FC010L29UP2
FB010L99UP2
EZ0450PDO2
JSIMSP2
FA110L01IP2
FA140L01IP2
FC0602
FC030L21UP2
WD030L01IP2
WC031L01IP2
WC031L01UP2
WC032L01IP2
FE030L01IP2
WW040L01IP2
FC030L32UP2
FE0102
WE0202
FE010L02IP2
WE030L01IP2
WH580L02IP2
PG5700P2
PG5750P2
WK1002
WT010L03IP2
EVALUATE2
FC030L06UP2
PRINTERQPRINT2
FA011L01IP1
FA070L01IP1
WB0201
WB0301
FB010L13UP1
WB070L01IP1
WB070L02IP1
PB0161D1
PB0171D1
FB010L18UP1
FCFFHCHFKCKFWCWNSFY1
FB010L08IP1
FB010L08UP1
FB010L60UP1
FB001L03UP1
FB000L03IP1
FB000L02UP1
FB001L02UP1
FB001L02IP1

DSPFFD / DSPDBR 向けファイル名リスト(全ユニーク)

FC030L21IP
READRTN
ENDREWRITE
FC030L22IP
WD040L01IP
WW030L01IP
PB0140DBO
FB010L17IP
ZSDTTL02IF
DATABASETSWTK
FORMATFILEPRZ050
WSKD
WSTM
EZ0450P
WORKSTATIONGKAI120SI
ZSNHD
PG5705P
ZSDMI
ZSSTML6
GO
FB010L51IP
FB010L56IP
WD010L03IP
HCLST2
WW030L01
ショリ
ZSSKW
FB020L03IP
FB010L71IP
FB000L01UP
FB010L05IP
FC010L03UP
FC010L11UP
FC010L16UP
FC010L29UP
FB010L99UP
EZ0450PDO
JSIMSP
FA110L01IP
FA140L01IP
FC060
FC030L21UP
WD030L01IP
WC031L01IP
WC031L01UP
WC032L01IP
FE030L01IP
WW040L01IP
FC030L32UP
FE010
WE020
FE010L02IP
WE030L01IP
WH580L02IP
PG5700P
PG5750P
WK100
WT010L03IP
EVALUATE
FC030L06UP
PRINTERQPRINT
FA011L01IP
FA070L01IP
WB020
WB030
FB010L13UP
WB070L01IP
WB070L02IP
PB0161D
PB0171D
FB010L18UP
FCFFHCHFKCKFWCWNSFY
FB010L08IP
FB010L08UP
FB010L60UP
FB001L03UP
FB000L03IP
FB000L02UP
FB001L02UP
FB001L02IP
FB010L21IP
FB004
FB000L06UP
FX000
FB010L20UP
FC010L38UP
PD0120P
FB010L12IP
MICHAK
WB050L01IP
FB010L98UP
FD020L03IP
FA130L01IP
WH540
JHNMSP
DA310PD
DB0070P
FC030L02IP
WD010L01IP
FC030L99IP
WD050L01IP
WB050L01UP
WC032L02UP
WH600L01IP
FC030L39UP
FC030L39IP
FC030L38IP
WC032L02IP
FROMFILE
HA100L02UP
FC030L34UP
FC030L34IP
FC030L35IP
WC033L02UP
MAIN060
MAINENTRY
KSREC
PRINTERKAIPRINT3
DATABASEKAIMST
REWRITE
FB010L02UP
FA020L01IP
FA030L01IP
FA050L01IP
FB010L65UP
FB010L06UP
WC080
FB010L32IP
PG5730P
PH5700P
PH5750P
WM030P
WK200L01IP
FB010L71UP
DATABASETSDSL
COMPUTE
CLOSE
FORMATFILEURD2303
PERFORM
APPFNEW
ILE
FORMATFILEPRZ040
ZSSKW2
MAIN010
WRTRTN
WORKSTATIONDZSP120
WSKDA
INITIALIZE
ZSTAN

PARTIAL残ファイル名一覧

FC030L21IP
READRTN
ENDREWRITE
FC030L22IP
WD040L01IP
WW030L01IP
PB0140DBO
FB010L17IP
ZSDTTL02IF
DATABASETSWTK
FORMATFILEPRZ050
WSKD
WSTM
EZ0450P
WORKSTATIONGKAI120SI
ZSNHD
PG5705P
ZSDMI
ZSSTML6
GO
FB010L51IP
FB010L56IP
WD010L03IP
HCLST2
WW030L01
ショリ
ZSSKW
FB020L03IP
FB010L71IP
FB000L01UP
FB010L05IP
FC010L03UP
FC010L11UP
FC010L16UP
FC010L29UP
FB010L99UP
EZ0450PDO
JSIMSP
FA110L01IP
FA140L01IP
FC060
FC030L21UP
WD030L01IP
WC031L01IP
WC031L01UP
WC032L01IP
FE030L01IP
WW040L01IP
FC030L32UP
FE010
WE020
FE010L02IP
WE030L01IP
WH580L02IP
PG5700P
PG5750P
WK100
WT010L03IP
EVALUATE
FC030L06UP
PRINTERQPRINT
FA011L01IP
FA070L01IP
WB020
WB030
FB010L13UP
WB070L01IP
WB070L02IP
PB0161D
PB0171D
FB010L18UP
FCFFHCHFKCKFWCWNSFY
FB010L08IP
FB010L08UP
FB010L60UP
FB001L03UP
FB000L03IP
FB000L02UP
FB001L02UP
FB001L02IP
FB010L21IP
FB004
FB000L06UP
FX000
FB010L20UP
FC010L38UP
PD0120P
FB010L12IP
MICHAK
WB050L01IP
FB010L98UP
FD020L03IP
FA130L01IP
WH540
JHNMSP
DA310PD
DB0070P
FC030L02IP
WD010L01IP
FC030L99IP
WD050L01IP
WB050L01UP
WC032L02UP
WH600L01IP
FC030L39UP
FC030L39IP
FC030L38IP
WC032L02IP
FROMFILE
HA100L02UP
FC030L34UP
FC030L34IP
FC030L35IP
WC033L02UP
MAIN060
MAINENTRY
KSREC
PRINTERKAIPRINT3
DATABASEKAIMST
REWRITE
FB010L02UP
FA020L01IP
FA030L01IP
FA050L01IP
FB010L65UP
FB010L06UP
WC080
FB010L32IP
PG5730P
PH5700P
PH5750P
WM030P
WK200L01IP
FB010L71UP
DATABASETSDSL
COMPUTE
CLOSE
FORMATFILEURD2303
PERFORM
APPFNEW
ILE
FORMATFILEPRZ040
ZSSKW2
MAIN010
WRTRTN
WORKSTATIONDZSP120
WSKDA
INITIALIZE
ZSTAN
← 7. CRUD図・テーブル定義書・HTML9. チェックリスト・禁止事項 →