# JOB詳細設計書（JOBフロー）　BU83000J

| 項目 | 内容 |
|---|---|
| JOB名 | BU83000J |
| JOB名称 | 高速利用料自動伝票 翌月調整分 発行処理 |
| 作成元資料 | JCL `BU83000J.jcl`（221行）、ジョブフロー図 `BU83000J_jobflow.svg` |
| 作成日 | 2026-10-19 |
| 作成方法 | JCL からのリバース作成。プログラムのソースは無いため、処理内容は JCL から分かる範囲で書き、推定には「（推定）」を付ける。帳票はレイアウトがプログラム内にあるため、帳票イメージは載せない |

- ステップ番号 #1〜#14 と処理のまとまり ①〜⑥ は、ジョブフロー図に合わせる。
- 本文・表では、データセットを 3章で定義した**略称**で書く（DSN は 3章にだけ書く）。

## 目次

1. JOB概要
2. JOB文・共通定義
3. データセット一覧（略称の定義）
4. JOBフロー
5. ステップ一覧
6. ステップ詳細（6.1〜6.6 ＝ ①〜⑥）
7. 出力物一覧

---
## 1. JOB概要

### 1.1 基本情報

| 項目 | 内容 |
| --- | --- |
| JOB名／名称 | BU83000J／高速利用料自動伝票 翌月調整分 発行処理（L6 のコメントより） |
| 起動 | JCL からは分からない（ジョブスケジューラからの定期起動と推定） |
| ステップ数 | 14 処理ブロック（JCL 上の EXEC も 14。CEMT の EXEC 2行はコメントアウト） |
| ステップの内訳 | 業務プログラム 6（BU83010P×2〔#3・#6 で同一PGMを2回実行〕、BU83000P、KE85390P、KE85360P、KE53015P）、SORT 5（USORTM）、IEHPROGM 2、IDCAMS 1 |
| 主な入力 | 高速SD（最新、他JOB作成と推定）、高速SD前世代（他JOB作成）、KEDATE1 |
| 主な出力 | 帳票1種（KE853601）、CSV 1本（仕訳CSV）、マスター更新（番号M） |

### 1.2 処理のまとまり

| まとまり | ステップ | 概要 |
| --- | --- | --- |
| ① 前処理 | #1 | 前回のワーク10本（W0010、W0011、W0012、W0020、W0021、W0022、W0030、W0050、W0070、S0060）を削除する |
| ② 高速SD（最新）の編集 | #2〜#4 | 高速SD をコピーし、BU83010P で編集して、キー (61,17) で並べ替える（W0010 → W0011 → W0012） |
| ③ 高速SD（前世代）の編集 | #5〜#7 | 高速SD前世代 に対して②と同じ編集を行う（W0020 → W0021 → W0022） |
| ④ 翌月調整分データ作成（MASTER SD CREATE） | #8〜#9 | 最新（W0012）と前世代（W0022）を突き合わせて翌月調整分のデータ W0030 を作り、仕訳の順に並べ替えて W0050 にする（推定） |
| ⑤ 仕訳伝票マスター登録・補助表印刷 | #10〜#12 | W0050 から仕訳伝票マスターの登録データ S0060 と採番後の番号M レコード W0070 を作る（推定）。補助表 KE853601 を印刷し、番号M を更新する |
| ⑥ 仕訳データCSV作成 | #13〜#14 | 前回の仕訳CSV を削除し、S0060 から仕訳CSV を作る |

---

## 2. JOB文・共通定義

### 2.1 JOB文・JOBLIB

```
//BU83000J JOB CLASS=B,MSGCLASS=Q,MSGLEVEL=(1,1),REGION=0M,
//             COND=(9,LT)
//JOBLIB  DD  DSN=ENT.BATCHA.LOD,DISP=SHR
```

| 項目 | 内容 |
| --- | --- |
| CLASS／MSGCLASS／MSGLEVEL | B／Q（SYSOUT=* もこのクラス）／(1,1) |
| TIME／REGION | 指定なし／0M（#12 は EXEC に REGION=6144K） |
| COND | (9,LT)：RC が 10 以上のステップがあると、以降のステップは実行しない |
| JOBLIB | LOD。#3・#6・#8 は STEPLIB にも LOD を指定する |
| 実行順 | #1 → #14 の直列。分岐は無い。ステップ名 SCRATCH が #1・#13、BU83010P が #3・#6 で重複する。SORT5 と WORK0040 は欠番 |

- L4 の `/*` は JOBLIB の直後にある区切りで、処理には影響しない。

### 2.2 共通の決まり

| 項目 | 内容 |
| --- | --- |
| ワークの作成 | 非カタログの `DISP=(,KEEP,DELETE)` で作り、参照側は `DISP=SHR` と UNIT／VOL=SER を指定する。仕訳CSV だけは `(,CATLG,DELETE)` でカタログする |
| ボリューム | TEMP. のワーク（W0010、W0011、W0012、W0020、W0021、W0022、W0030、W0050、W0070）は DASD03、SEAD. のワーク・CSV（S0060、仕訳CSV）は DASD11 |
| ワークの削除 | 使用後の削除は無い。ワーク・CSV は JOB 終了後も残り、次回実行の事前削除（#1、#13）で消える。S0060 は KEEP のまま残り、翌日の #1 で削除される |
| SORT | プロシージャ USORTM。SORTIN／SORTOUT／SYSIN を上書きする。ソート対象は FB のため、キー位置はレコード先頭からの位置 |
| 帳票 | `SYSOUT=(E,ライター名,フォーム)` でクラス E に出す |

### 2.3 共通パターン（各所では1行で書く）

| パターン | 使うステップ | 内容 |
| --- | --- | --- |
| **SCRATCH** | #1、#13 | IEHPROGM の SCRATCH で前回分を削除する。カタログする仕訳CSV だけは #13 で UNCATLG してから SCRATCH する。対象が無いときの RC は COND=(9,LT) の範囲内（推定） |
| **REPLACE** | #12 | IDCAMS `REPRO INFILE(INFL) OUTFILE(VKKEINO) REPLACE` で、更新データを番号M に反映する。同じキーは置換、無いキーは追加し、削除はしない |

- BACK（更新前の退避）は無い。
- 番号M を CICS ファイル VKKEINO として閉じる・開く CEMT の行（L185 `CLO`、L220 `ENA OPE`。プロシージャ MVSCMD、CICS 領域 CIC1）はコメントアウトされており、現在は実行されない。
- 番号M の更新は「業務プログラムが更新データを作る → REPLACE」の2段で行う。番号M の更新（#12）は仕訳CSV の作成（#13・#14）より前に実行する。

| 台帳 | 更新データ作成 | 更新データ | BACK → 退避 | REPLACE |
| --- | --- | --- | --- | --- |
| 番号M | #10 | W0070 | なし | #12 |

---

## 3. データセット一覧（略称の定義）

DSN を書くのはこの章だけ。本文・表ではすべて略称を使う。

### 3.1 マスタ・パラメータ・入力

| 略称 | DSN | 種類 | 形式・長さ | 作成 | 使用 | 内容 |
| --- | --- | --- | --- | --- | --- | --- |
| LOD | ENT.BATCHA.LOD | マスタ参照 | ロードライブラリ | － | JOBLIB、#3、#6、#8 の STEPLIB | プログラム格納先 |
| 日付PTR | VRAD.PROCDATE.POINTER（DD VRDTPTR） | マスタ参照 | － | － | #10 | 処理日付ポインター（推定） |
| 番号M | VKAD.KEIRIEDP.NOMASTER（DD VKKEINO） | マスタ更新 | VSAM（推定） | #12 | #10 | 伝票番号マスター（推定） |
| 科目M | VKAD.KAMOKUCD.DTMASTER（DD VKKAMCD） | マスタ参照 | － | － | #11、#14 | 勘定科目コードマスター（推定） |
| KE85300J | ADG.ALTLIB(KE85300J)（DD CDFILE） | マスタ参照 | PDS メンバ | － | #11 | 補助表のパラメータ（推定） |
| 店所M | SEAD.TENSCODE.CDMASTER（DD VETENCD） | マスタ参照 | DASD11（VOL=SER 指定） | － | #11 | 店所コードマスター（推定） |
| KEDATE1 | ADG.ALTLIB(KEDATE1)（DD KEDATFL） | パラメータ | PDS メンバ | － | #8 | 計上日などの日付パラメータ（推定） |
| 高速SD | SEAD.KOSOKSQD.DTMASTER（DD SORTIN） | 入力（他JOB作成と推定） | DASD85（VOL=SER 指定） | 他JOB（推定） | #2 | 高速料金の仕訳SD・最新（推定） |
| 高速SD前世代 | MTAD.KOSOKSQD.DTMASTER(-1)（DD SORTIN） | 入力（他JOB作成） | テープGDG（UNIT=VTAP） | 他JOB | #5 | 高速SD の1つ前の世代（推定） |

- 高速SD の旧入力はテープ GDG の MTAD.KOSOKSQD.DTMASTER(0)（UNIT=VTAP）で、L29〜30 でコメントアウトされている。
- 高速SD前世代は旧入力の (0) を DASD 版に置き換えた後も (-1) のままである。DASD 版の高速SD が GDG(0) と同じ世代かどうかで前世代の意味が変わるため、要確認。
- 高速SD・高速SD前世代は本JOB では作成しないため、作成元JOB の完了後に実行する必要がある（推定）。

### 3.2 ワーク・CSV・帳票

- 「削除」は事前削除（SCRATCH）するステップ。

| 略称 | DSN | 種類 | 形式・長さ | 作成 | 使用 | 内容 |
| --- | --- | --- | --- | --- | --- | --- |
| W0010 | TEMP.BU83000J.WORK0010 | ワーク | FB 120／6240、SPACE (6240,(10,1))、DASD03 | #2 | #3 | 高速SD のコピー |
| W0011 | TEMP.BU83000J.WORK0011 | ワーク | FB 120／6240、SPACE (6240,(10,1))、DASD03 | #3 | #4 | 高速SD（最新）の BU83010P 編集後（推定） |
| W0012 | TEMP.BU83000J.WORK0012 | ワーク | FB 120／6240、SPACE (6240,(10,1))、DASD03 | #4 | #8 | W0011 をキー (61,17) で並べ替えたもの |
| W0020 | TEMP.BU83000J.WORK0020 | ワーク | FB 120／6240、SPACE (6240,(10,1))、DASD03 | #5 | #6 | 高速SD前世代 のコピー |
| W0021 | TEMP.BU83000J.WORK0021 | ワーク | FB 120／6240、SPACE (6240,(10,1))、DASD03 | #6 | #7 | 高速SD前世代の BU83010P 編集後（推定） |
| W0022 | TEMP.BU83000J.WORK0022 | ワーク | FB 120／6240、SPACE (6240,(10,1))、DASD03 | #7 | #8 | W0021 をキー (61,17) で並べ替えたもの |
| W0030 | TEMP.BU83000J.WORK0030 | ワーク | FB 120／6240、SPACE (6240,(10,1))、DASD03 | #8 | #9 | 翌月調整分データ（推定） |
| W0050 | TEMP.BU83000J.WORK0050 | ワーク | FB 120／6240、SPACE (6240,(10,1))、DASD03 | #9 | #10 | 翌月調整分データを仕訳の順に並べたもの（推定） |
| S0060 | SEAD.BU83000J.WORK0060 | ワーク | FB 160／6240、SPACE (6240,(100,100))、**DASD11** | #10 | #11、#14 | 仕訳伝票マスターの登録データ（推定） |
| W0070 | TEMP.BU83000J.WORK0070 | ワーク | FB 80／6240、SPACE (6240,(1,1))、DASD03 | #10 | #12 | 採番後の番号M レコード（推定） |
| 仕訳CSV | SEAD.BU83000J.CSV | CSV | FB 260／2600、SPACE (2600,(30000,100))、(,CATLG,DELETE)、**DASD11** | #14 | なし | 仕訳データ CSV |
| KE853601 | SYSOUT=(E,KE853601,10)（DD OUTPR） | 帳票 | FA、BLKSIZE=160（LRECL 指定なし） | #11 | － | 仕訳伝票 補助表（推定） |

- SPACE はいずれも RLSE 付き。W0 系のワーク9本は (,KEEP,DELETE)・DASD03 で共通。
- 事前削除：W0010、W0011、W0012、W0020、W0021、W0022、W0030、W0050、W0070（DASD03）と S0060（DASD11）は #1。仕訳CSV は #13（UNCATLG＋SCRATCH）。
- 仕訳CSV は JOB 内では使わない（後続JOB での配信・取込み用と推定）。

---

## 4. JOBフロー

```
① #1 SCRATCH（前回分を削除：W0010、W0011、W0012、W0020、W0021、W0022、W0030、W0050、W0070、S0060）

② 高速SD（他JOB作成と推定）
     → #2 SORT1（COPY）→ W0010
     → #3 BU83010P → W0011
     → #4 SORT2（61,17）→ W0012

③ 高速SD前世代（テープGDG(-1)、他JOB作成）
     → #5 SORT3（COPY）→ W0020
     → #6 BU83010P → W0021
     → #7 SORT4（61,17）→ W0022

④ W0012（最新）＋ W0022（前世代）＋ KEDATE1
     → #8 BU83000P → W0030
     → #9 SORT6（9キー）→ W0050

⑤ W0050 → #10 KE85390P（番号M・日付PTR）─┬→ S0060 ─┬→ #11
                                          │         └→ ⑥ #14
                                          └→ W0070 ──→ #12
     S0060 → #11 KE85360P（科目M・KE85300J・店所M）→ KE853601
     #12 VKKEINO REPLACE（W0070 → 番号M）

⑥ #13 SCRATCH（仕訳CSV） → S0060 → #14 KE53015P（科目M）→ 仕訳CSV
```

---

## 5. ステップ一覧

| No | まとまり | ステップ名 | PGM | 内容 | 入力 | 出力 | JCL行 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | ① | SCRATCH | IEHPROGM | 前回分の削除（10本） | － | （削除）W0010、W0011、W0012、W0020、W0021、W0022、W0030、W0050、W0070、S0060 | L9–24 |
| 2 | ② | SORT1 | USORTM | コピー（並べ替えなし） | 高速SD | W0010 | L25–40 |
| 3 | ② | BU83010P | BU83010P | 高速SD（最新）の編集（推定） | W0010 | W0011 | L42–55 |
| 4 | ② | SORT2 | USORTM | 並べ替え | W0011 | W0012 | L56–71 |
| 5 | ③ | SORT3 | USORTM | コピー（並べ替えなし） | 高速SD前世代 | W0020 | L72–85 |
| 6 | ③ | BU83010P | BU83010P | 高速SD前世代の編集（推定） | W0020 | W0021 | L87–100 |
| 7 | ③ | SORT4 | USORTM | 並べ替え | W0021 | W0022 | L101–116 |
| 8 | ④ | BU83000P | BU83000P | 最新と前世代の突き合わせ・翌月調整分データ作成（推定） | W0012、W0022、KEDATE1 | W0030 | L118–136 |
| 9 | ④ | SORT6 | USORTM | 並べ替え（MASTER SD CREATE） | W0030 | W0050 | L138–154 |
| 10 | ⑤ | KE85390P | KE85390P | 仕訳伝票マスター登録データ作成・採番（推定） | W0050、番号M、日付PTR | S0060、W0070 | L155–173 |
| 11 | ⑤ | KE85360P | KE85360P | 仕訳伝票 補助表の印刷 | S0060、科目M、KE85300J、店所M | KE853601 | L174–184 |
| 12 | ⑤ | VKKEINO | IDCAMS | 番号マスターの更新 | W0070 | 番号M | L187–196 |
| 13 | ⑥ | SCRATCH | IEHPROGM | 仕訳CSV の削除（UNCATLG＋SCRATCH） | － | （削除）仕訳CSV | L198–204 |
| 14 | ⑥ | KE53015P | KE53015P | 仕訳データ CSV の作成 | S0060、科目M | 仕訳CSV | L205–219 |

---

## 6. ステップ詳細

SORT キーの「項目」はすべて（推定）。位置はバイト位置、CH・昇順以外は明記する。

KE85390P・KE85360P・KE53015P は、接頭辞 KE などから経理側の共通プログラムと推定。KE85390P はソートキーが JOB ごとに異なる（BU82905J は (5,3)(72,1)、BY60410J は (5,3)(72,1)(74,4)、本JOB は9キー）。

### 6.1 ① 前処理（#1）

- **#1 SCRATCH**：SCRATCH パターン。前回分の W0010、W0011、W0012、W0020、W0021、W0022、W0030、W0050、W0070（DASD03）と S0060（DASD11）を削除する。DD は DASD03・DASD11 の2本。

### 6.2 ② 高速SD（最新）の編集（#2〜#4）

**#2 SORT1**
- 目的：高速SD を W0010（DASD03）にコピーする。
- SORT キー：並べ替えなし（データセットのコピー）。`SORT FIELDS=COPY`。
- 入力は以前はテープGDG の高速SD だった（L29–30 コメントアウト）。

**#3 BU83010P**
- 目的：W0010 を翌月調整分の突き合わせ用に編集する（推定）。
- 処理内容：W0010（INFILE）を読み、編集して W0011（OUTFILE）に出す（推定）。#6 と同じプログラムで、入力のデータが最新か前世代かだけが異なる（推定）。STEPLIB は LOD。

**#4 SORT2**
- 目的：W0011 を #8 の突き合わせ用に並べ替える。
- SORT キー：61〜77（17）突き合わせキー（推定）CH 昇順。
- 出力は W0012（FB 120／6240）。

### 6.3 ③ 高速SD（前世代）の編集（#5〜#7）

**#5 SORT3**
- 目的：高速SD前世代 を W0020（DASD03）にコピーする。
- SORT キー：並べ替えなし（データセットのコピー）。`SORT FIELDS=COPY`。
- 入力はテープGDG(-1)（UNIT=VTAP）で、DASD への取り込みの役割もある（推定）。

**#6 BU83010P**
- 目的：W0020 を #3 と同じ形式に編集する（推定）。
- 処理内容：W0020（INFILE）を読み、編集して W0021（OUTFILE）に出す（推定）。#3 と同一PGM。STEPLIB は LOD。

**#7 SORT4**
- 目的：W0021 を #8 の突き合わせ用に並べ替える。
- SORT キー：61〜77（17）突き合わせキー（推定）CH 昇順（#4 と同じキー）。
- 出力は W0022（FB 120／6240）。

### 6.4 ④ 翌月調整分データ作成（MASTER SD CREATE）（#8〜#9）

**#8 BU83000P**
- 目的：最新と前世代を突き合わせて、翌月調整分のデータを作る（推定）。
- 処理内容：W0012 を MSFILE（最新）、W0022 を TRFILE（前世代）として、同じキー (61,17) の順に突き合わせ、差分などから翌月調整分のデータを W0030（OUTFILE）に出す（推定）。KEDATE1（KEDATFL）は計上日などの日付パラメータ（推定）。STEPLIB は LOD。

**#9 SORT6**（L137 のコメント：MASTER SD CREATE）
- 目的：W0030 を仕訳伝票マスターの登録順（#10 の処理順）に並べる（推定）。
- SORT キー（9キー、L151–152）：
  ① 5〜7（3）仕訳の大分類（推定）CH 昇順 → ② 72（1）区分（推定）CH 昇順 → ③ 74〜77（4）店所コード等（推定）BI（2進）昇順 → ④ 73（1）区分（推定）BI（2進）昇順 → ⑤ 61〜67（7）日付等（推定）BI（2進）昇順 → ⑥ 100〜103（4）項目名不明（推定）BI（2進）昇順 → ⑦ 98（1）項目名不明（推定）BI（2進）昇順 → ⑧ 99（1）項目名不明（推定）BI（2進）昇順 → ⑨ 87〜93（7）項目名不明（推定）BI（2進）昇順
- BI キーは2進比較（パック・バイナリ項目の可能性、推定）。

### 6.5 ⑤ 仕訳伝票マスター登録・補助表印刷（#10〜#12）

**#10 KE85390P**
- 目的：仕訳伝票マスターの登録データを作り、伝票番号を採番する（推定）。
- 処理内容：日付PTR から伝票日付を取り、番号M の最終番号から伝票の区切りごとに番号を振る（推定）。伝票番号付きの登録データを S0060（FB 160）に、採番後の番号M レコードを W0070（FB 80、数件程度）に出す（推定）。番号M はここでは更新しない（DISP=SHR）。S0060 をマスターに登録するステップは JOB 内に無い。

**#11 KE85360P**
- 目的：仕訳伝票の補助表（KE853601）を印刷する。
- 処理内容：S0060 を読み、科目M で科目名、店所M で店所名を付けて出す（推定）。KE85300J は見出しや固定値のパラメータ（推定）。

- **#12 VKKEINO**：REPLACE パターン（DD 名 INFL → VKKEINO）。W0070 → 番号M。退避は無い。番号M の CEMT CLO（L185）は前に、ENA OPE（L220）は JOB の最後にあるが、どちらもコメントアウトされており、CICS 側はオープンのまま更新する。

### 6.6 ⑥ 仕訳データCSV作成（#13〜#14）

- **#13 SCRATCH**：SCRATCH パターン。仕訳CSV を UNCATLG してから SCRATCH する（DASD11）。

**#14 KE53015P**
- 目的：仕訳データの CSV（仕訳CSV）を作る。
- 処理内容：S0060 を1件ずつ読み、科目M で科目名などを付けて CSV（1行最大 260 バイト）に編集する（推定）。

- 番号M の更新（#12）は仕訳CSV の作成（#13〜#14）より前に行う。BY60410J（KE53015P → VKKEINO）とは順序が逆で、BU82905J と同じ。

---

## 7. 出力物一覧

### 7.1 帳票（SYSOUT クラス E）

| 帳票 | 作成 | 内容 | フォーム | 形式 |
| --- | --- | --- | --- | --- |
| KE853601 | #11 KE85360P | 仕訳伝票 補助表 | 10 | FA、BLKSIZE=160 |

- SYSPRINT・SYSUDUMP（SYSOUT=*）は MSGCLASS=Q に出る。

### 7.2 CSV

| CSV | 作成 | 内容 | 形式 | 事前削除 |
| --- | --- | --- | --- | --- |
| 仕訳CSV | #14 KE53015P | 仕訳データの CSV | FB 260、DASD11、カタログ | #13（UNCATLG＋SCRATCH） |

- JOB 内では使わない（後続JOB での配信・取込み用と推定）。

### 7.3 更新されるマスター

| マスター | 更新ステップ | 更新方法 | 退避 | CICS |
| --- | --- | --- | --- | --- |
| 番号M | #12 | REPLACE | なし | VKKEINO（CEMT CLO／ENA OPE は L185・L220 でコメントアウトされ、CICS 側はオープンのまま更新） |

- 更新後の番号M を JOB 内の後続ステップは読まない。
