# KE53070 詳細設計書

| 項目 | 内容 |
|---|---|
| プログラムID | KE53070（ソース名 KE53070P） |
| プログラム名 | エントリー → 仕訳伝票マスター用フォーム変換 |
| 言語 | PL/I（OPTIONS(MAIN)）。パターン PPB0010P（ファイルのIO・SINGLE、87/04/03） |
| 業務ID | MMFSCV00（ソースの +DC GYOM） |
| 起動JOB | SOPOENTJ（エントリー　収入速報反映）の KE53070P ステップ（JCL L53） |
| 作成日 | 2026/10/22 |
| 作成方法 | ソースコードからのリバース作成 |

## 前提

- INCLUDE の KESHWMST（仕訳伝票マスター用フォーム）を展開して解析した（付録B）。
- 支給されたソースは UTF-8（EBCDIC から変換済み。SO/SI は「␎␏」で表示）で、文字コードの変換は不要だった。
- JCL SOPOENTJ と、ジョブの対応方針（移行の要否）を加味した（2.3、2.4）。根拠となる JCL の行番号は「JCL L○○」と書く。
- 外部手続き LSS0170 はソースが無いため、ブラックボックス（BB）として扱う。JCL の DD 名から、店所コードマスター（VETENCD）を参照するものと推定する。
- 入力・出力の値の例（7章）はすべて架空である。
- ★印は、ソースから読み取れる潜在的な問題点または注意点を示す。

---

## 1. 概要

### 1.1 機能

ソース先頭のコメント：「エントリー→仕訳伝票マスター用フォームへ変換」

1. 仕訳のエントリーデータ（INFILE）を先頭から読む。
2. 1件ごとに、仕訳伝票マスター用のフォーム（KESHWMST）に項目を移して OUTFILE に書く。入力と出力は1対1で、読み飛ばすデータは無い。
3. 書く前に、次の2つのチェックを行い、該当すれば SYSPRINT にメッセージを出す。**メッセージを出してもデータは出力する**（ソースのコメント「※データは作成する」）。
   - **ロジ部門のチェック**：貸方の相手店が「Sロジ」（LSS0170 の判定が 'S'）で、借方の部門が '1' の場合。
   - **不動産賃貸のチェック**（26.08 追加）：借方または貸方の科目が 9160056（不動産賃貸収入）で、その相手店が現行の不動産賃貸の店所コード（7店所）以外の場合。

ソースのコメントにある運用：メッセージが出たら経理部に確認し、問題があればデータを受け取って再処理する。問題が無ければそのままにする。

### 1.2 処理概要図

```
 GATEXTR（ADRI 抽出、PACKSWDT）
   │ TEMP.SOPOENTJ.WORK0010（DASD80）
   ▼
 INFILE ──────────▶ KE53070P ──────────▶ OUTFILE ＝ SEAD.SOPOENTJ.WORK0010（DASD11）
 （仕訳エントリー、        │                （仕訳伝票マスター用フォーム、        │
   150バイト）             │                  KESHWMST 160バイト）               ├──▶ DAIBATEJ で使用
                           │                                                   └──▶ SORT（COPY）→ SEAD.SOPOENTJ.DATABACK（バックアップ）
                           ├──▶ LSS0170（相手店のロジ区分の判定。BB）── VETENCD（SEAD.TENSCODE.CDMASTER）
                           ▼
                        SYSPRINT（チェックのメッセージ）
```

---

## 2. 外部インターフェース

### 2.1 ファイル一覧

| DD名 | 編成／属性（DCL） | 入出力 | 内容 | 読込／書出領域 |
|---|---|---|---|---|
| INFILE | RECORD INPUT（順次） | 入力 | 仕訳のエントリーデータ | INAREA（150バイト。付録A） |
| OUTFILE | RECORD OUTPUT（順次） | 出力 | 仕訳伝票マスター用フォーム | OUTAREA（KESHWMST 160バイト。付録B） |
| SYSPRINT | － | 出力 | DISPLAY のメッセージ | － |
| VETENCD | （DCL なし。LSS0170 が使う） | 入力 | 店所コードマスター（推定） | － |

- 出力は JCL の DCB（RECFM=FB、LRECL=160）で、OUTAREA（160バイト）と一致する（JCL L61〜L63）。
- ★ 入力は GATEXTR の出力をそのまま読み、JCL に DCB の指定が無い（JCL L55〜L58）。INAREA の 150バイトと、GATEXTR が作るレコード長が合っているかは要確認。

### 2.2 外部手続き

| 名称 | 引数 | 内容 |
|---|---|---|
| LSS0170（BB） | PARMX CHAR(4)：店所コード（貸方相手店 INKSTEN）<br>PARMY CHAR(1)：判定結果（戻り）<br>PARMZ CHAR(4)：用途不明（初期値空白のまま渡す） | 店所コードマスター（DD VETENCD＝SEAD.TENSCODE.CDMASTER）で店所の区分を調べて返す（推定）。'S' を「Sロジ」の店所として扱う |

- ★ PARMY・PARMZ は毎回クリアしないので、LSS0170 が値を設定しない場合は前の値が残る（BB の仕様次第）。

### 2.3 JCL との対応（SOPOENTJ）

| 行 | ステップ | 内容 | 本PGとの関係 |
|---|---|---|---|
| L1〜L4 | JOB 文 | MSGCLASS=H、COND=(9,LT)、REGION=6144K、CLASS=B。JOBLIB ENT.BATCHA.LOD | － |
| L8〜L13 | SCRATCH（IEHPROGM） | TEMP.SOPOENTJ.WORK0010（DASD80）を削除 | 本PG の入力の事前削除 |
| L15〜L21 | SCRATCH（IEHPROGM） | SEAD.SOPOENTJ.WORK0010・SEAD.SOPOENTJ.DATABACK（DASD11）を削除 | 本PG の出力とバックアップの事前削除 |
| L22〜L51 | ADRIEXTR（GATEXTR） | EXTRACT DATACODE=PACKSWDT で抽出し、TEMP.SOPOENTJ.WORK0010 を作る（DISP=(,CATLG,DELETE)、200CYL） | 本PG の入力を作る |
| L53〜L67 | KE53070P | 本PG。INFILE＝TEMP.SOPOENTJ.WORK0010（SHR）、VETENCD＝SEAD.TENSCODE.CDMASTER（SHR）、OUTFILE＝SEAD.SOPOENTJ.WORK0010（(,KEEP,DELETE)、FB、LRECL=160、BLKSIZE=6240） | － |
| L69〜L84 | SORT（USORTM） | `SORT FIELDS=COPY` で SEAD.SOPOENTJ.WORK0010 を SEAD.SOPOENTJ.DATABACK に写す | 本PG の出力のバックアップ |

- 出力の SEAD.SOPOENTJ.WORK0010 は、ジョブの最後でも削除されず、別ジョブ DAIBATEJ が使う。
- ジョブの COND=(9,LT) により、リターンコードが9を超えたステップの後は実行しない。本PG はリターンコードを設定しないので、チェックに該当しても後続の SORT は動く。

### 2.4 移行の対応方針

ジョブの対応方針（支給資料）は次のとおり。

| JCL 行 | ステップ | 方針 | 特記事項 |
|---|---|---|---|
| L8 | SCRATCH | 移行不要 | TEMP.SOPOENTJ.WORK0010 |
| L15 | SCRATCH | （記載なし） | SEAD.SOPOENTJ.WORK0010、SEAD.SOPOENTJ.DATABACK |
| L31 | GATEXTR | （記載なし） | CSV データの取り込み（#11523） |
| L53 | KE53070P | （記載なし） | SEAD.SOPOENTJ.WORK0010 は DAIBATEJ で使用（#11523） |
| L69 | SORT | 移行不要 | SEAD.SOPOENTJ.WORK0010（KE53070P の OUTFILE）→ SEAD.SOPOENTJ.DATABACK |

- 移行後の本PG の入力は、GATEXTR の置き換え（CSV データの取り込み、#11523）が作るデータになる。入力の形式（CSV か固定長か）が変わる場合は、INAREA の項目の切り出し方を合わせて決める必要がある。
- 出力（SEAD.SOPOENTJ.WORK0010）は DAIBATEJ が使うので、移行後も KESHWMST の形（160バイト）と項目の意味を保つ必要がある。
- バックアップの SORT（COPY）は移行不要のため、移行後は DATABACK を作らない。
- L15 の SCRATCH（出力の事前削除）の方針は資料に記載が無い。出力を毎回作り直す前提なので、移行後の出力先での事前削除（または上書き）の扱いを決める必要がある。

---

## 3. データ定義

### 3.1 入力エリア（INAREA、150バイト）

- 付録A のとおり。伝票番号（INEDPNH 3桁＋INEDPNO 6桁）、発行年月日（INHAK20・INHAKYY・INHAKMM・INHAKDD）、伝票区分 INDENKB、発行店、借方（科目・摘要・銀行・相手店・業種・部門）、貸方（同）、金額 INKINGK（11桁）からなる。
- 業種・部門・銀行は CHAR で定義し、数字として使うための重ね定義（INKRGYS_P など、PIC'9'）を持つ。

### 3.2 出力エリア（OUTAREA＝KESHWMST、160バイト）

- 付録B のとおり。伝票番号 KIEDPNO、発行店 KIHAKTC、発行年月日 KIHAKDT、借方 KIKARIN（7項目）、貸方 KIKASIK（7項目）、合計金額 KIGOKKN（FIXED DEC(11)）ほか。
- 入力日時（KIINPNA）、入力区分、モニターID、廃棄区分などは、このプログラムでは設定しない（クリア値のまま）。

### 3.3 ワークエリア

| 名称 | 属性 | 初期値 | 内容 |
|---|---|---|---|
| EOF_SW | BIT(1) | '1'B | INFILE の終了で '0'B |
| NUMR | CHAR(10) | '0123456789' | 数字チェック（VERIFY）用 |
| PARMX／PARMY／PARMZ | CHAR(4)／CHAR(1)／CHAR(4) | 空白 | LSS0170 の引数 |
| CAD_SW、SP_SW、KM_SW、OUT_SW、GOKE_FIX、II、LEN、SO_SW、SOSI（SO_W・SI_W）、NENDO、CDAREA（付録C） | － | － | 宣言のみ（未使用。パターンや他プログラムからの流用と推定） |

---

## 4. 処理フロー

```
開始
 ├─ ON ENDFILE(INFILE) → EOF_SW='0'B
 ├─ OPEN INFILE、OUTFILE
 ├─ INFILE を1件読む
 ├─ DO WHILE（INFILE が終わるまで）
 │     OUTAREA をクリア
 │     伝票番号・発行年月日・発行店を編集                       … 5.2
 │     借方・貸方・金額を編集                                   … 5.3
 │     ロジ部門のチェック（LSS0170）→ 該当なら ERR_RTN          … 5.4
 │     不動産賃貸のチェック（借方・貸方）→ 該当なら ERR_RTN_1／2  … 5.5
 │     OUTFILE に WRITE
 │     INFILE を1件読む
 │  END
 ├─ CLOSE INFILE、OUTFILE
終了
```

---

## 5. 処理詳細

### 5.1 開始処理

1. ENDFILE 条件で EOF_SW を '0'B にする。
2. INFILE と OUTFILE を OPEN し、INFILE を1件読む。
   - INFILE が0件のときは、ループに入らず、空の OUTFILE ができる（メッセージなし）。

### 5.2 見出し項目の編集

| 出力項目 | 編集内容 | ソース |
|---|---|---|
| OUTAREA 全体 | '' でクリア（数字項目は0、文字項目は空白） | L118 |
| KIEDPNO（伝票番号6桁） | ← INEDPNO（下6桁。上3桁の INEDPNH は出力しない） | L119 |
| KIHAKYY（年） | ← INHAKYY（西暦下2桁。上2桁の INHAK20 は出力しない） | L120 |
| KIHAKMM（月） | ← INHAKMM | L121 |
| KIHAKDD（日） | 伝票区分 INDENKB＝10 なら ← INHAKDD、それ以外は 99 | L122〜L124 |
| KIHAKTC（発行店） | ← INHKTEN | L125 |

- ★ 伝票区分が10以外の伝票は、日が 99 になる（月単位の伝票として扱う意図と推定）。

### 5.3 借方・貸方・金額の編集

| 出力項目 | 借方 | 貸方 | 編集内容 |
|---|---|---|---|
| 科目 | KIAKAMC ← INKRKAM | KIBKAMC ← INKSKAM | そのまま |
| 摘要 | KIATEKI ← INKRTEK | KIBTEKI ← INKSTEK | そのまま |
| 銀行 | KIABANK | KIBBANK | 入力（CHAR(7)）が数字だけなら数字7桁として設定、それ以外は 0 |
| 相手店 | KIAAITE ← INKRTEN | KIBAITE ← INKSTEN | そのまま |
| 業種 | KIAGYOS | KIBGYOS | 入力（CHAR(1)）が数字なら設定、それ以外は 1 |
| 部門 | KIABUMO | KIBBUMO | 入力（CHAR(1)）が数字なら設定、それ以外は 1 |
| 金額 | KIGOKKN ← INKINGK | － | 11桁の数字をパック10進 FIXED DEC(11) に変換 |

- 数字かどうかは `VERIFY(項目, '0123456789') = 0` で判定する（L129〜L151）。空白も数字以外として扱う。
- ★ 業種・部門が空白や数字以外のときは、黙って 1 にする（メッセージなし）。
- 借方・貸方のセンター（KIASENT・KIBSENT）は設定しない（空白）。

### 5.4 ロジ部門のチェック

1. PARMX ← INKSTEN（貸方相手店、4桁の数字を文字に変換）。
2. `CALL LSS0170(PARMX, PARMY, PARMZ)`。
3. PARMY＝'S'（Sロジ） かつ INKRBUM（**借方**部門）＝'1' なら、ERR_RTN を呼ぶ。

ERR_RTN のメッセージ：`* NO-EDPNO-BUMON-TNCD-KIN = ` ∥ 伝票番号上3桁 ∥ '-' ∥ 下6桁 ∥ '-' ∥ 借方部門 ∥ '-' ∥ 貸方相手店 ∥ '-' ∥ 金額

- ★ 店所は**貸方**の相手店、部門は**借方**の部門で判定している。ソースのコメントは「「Ｓロジ」かつ部門「１」」で、どちらの部門を見るべきかは要確認。
- データは出力する（チェックはメッセージだけ）。

### 5.5 不動産賃貸のチェック（26.08 追加）

| 判定 | 条件 | メッセージ |
|---|---|---|
| 借方 | INKRKAM＝9160056 かつ INKRTEN が下表の7店所以外 | ERR_RTN_1：`* FUDOSAN-CHINTAI-CHECK = ` ∥ 借方科目 ∥ '-' ∥ 借方相手店 |
| 貸方 | INKSKAM＝9160056 かつ INKSTEN が下表の7店所以外 | ERR_RTN_2：`* FUDOSAN-CHINTAI-CHECK = ` ∥ 貸方科目 ∥ '-' ∥ 貸方相手店 |

現行の不動産賃貸の店所コード：1394、1159、5551、5559、5654、2253、0159

- 借方・貸方の両方に該当すれば、メッセージは2行出る。データは出力する。
- ★ 店所コードがソースに直接書かれている。店所が増減するとソースの修正が必要になる。

### 5.6 終了処理

1. INFILE と OUTFILE を CLOSE する。
- 件数の表示は無い。

---

## 6. SYSPRINT のメッセージイメージ

7章の例の場合：

```
* NO-EDPNO-BUMON-TNCD-KIN = 001-123456-1-0701-00000150000
* FUDOSAN-CHINTAI-CHECK = 9160056-1234
```

- 項目は入力の値をそのまま（PIC の数字はゼロ埋め）つないで出す。

---

## 7. 入力と出力の例

### 7.1 入力（INFILE、主な項目だけ）

| 伝票番号（上3＋下6） | 発行年月日（20＋YY MM DD） | 伝票区分 | 発行店 | 借方（科目／相手店／業種／部門／銀行） | 貸方（科目／相手店／業種／部門／銀行） | 金額 |
|---|---|---|---|---|---|---|
| 001-123456 | 20 26 09 30 | 10 | 1001 | 1111111／1001／1／1／空白 | 2222222／0701／1／2／0123456 | 150000 |
| 001-123457 | 20 26 09 30 | 20 | 1001 | 9160056／1234／空白／空白／空白 | 3333333／1001／1／1／空白 | 80000 |

- 1件目の貸方相手店 0701 は、LSS0170 の判定で 'S'（Sロジ）とする（例）。

### 7.2 出力（OUTFILE、主な項目だけ）

| 伝票番号 | 発行年月日 | 発行店 | 借方（科目／相手店／業種／部門／銀行） | 貸方（科目／相手店／業種／部門／銀行） | 金額 |
|---|---|---|---|---|---|
| 123456 | 26 09 30 | 1001 | 1111111／1001／1／1／0000000 | 2222222／0701／1／2／0123456 | 150000 |
| 123457 | 26 09 **99** | 1001 | 9160056／1234／**1**／**1**／0000000 | 3333333／1001／1／1／0000000 | 80000 |

- 1件目：Sロジ かつ借方部門 1 なので、ERR_RTN のメッセージが出る（データは出力する）。
- 2件目：伝票区分が10以外なので日は 99。借方の業種・部門が空白なので 1。借方科目が不動産賃貸で、相手店 1234 は7店所以外なので、ERR_RTN_1 のメッセージが出る。

---

## 8. メッセージ一覧

| No | メッセージ | 出力先 | 契機 |
|---|---|---|---|
| 1 | `* NO-EDPNO-BUMON-TNCD-KIN = ` ∥ 伝票番号 ∥ 借方部門 ∥ 貸方相手店 ∥ 金額 | SYSPRINT（DISPLAY） | 貸方相手店が Sロジ かつ借方部門＝'1'（5.4） |
| 2 | `* FUDOSAN-CHINTAI-CHECK = ` ∥ 借方科目 ∥ 借方相手店 | 同上 | 借方科目が 9160056 で相手店が7店所以外（5.5） |
| 3 | `* FUDOSAN-CHINTAI-CHECK = ` ∥ 貸方科目 ∥ 貸方相手店 | 同上 | 貸方科目が 9160056 で相手店が7店所以外（5.5） |

---

## 9. 異常処理

| 事象 | 検出 | 処理 |
|---|---|---|
| INFILE の終了 | ENDFILE 条件 | EOF_SW='0'B でループを終える（正常） |
| チェックに該当 | 5.4、5.5 の判定 | メッセージを出し、データは出力して続行 |
| 銀行・業種・部門が数字以外 | VERIFY | 銀行は 0、業種・部門は 1 にして続行（メッセージなし） |
| 数字項目（PIC）に数字以外が入っている | CONVERSION 条件 | ON 定義なし → 異常終了 |
| その他 | － | ON ERROR の定義なし → PL/I 標準のエラー処理（異常終了） |
| リターンコード | － | 設定なし（正常時は 0。チェックに該当しても 0） |

- ★ チェックに該当してもリターンコードは0のため、ジョブの結果からは分からない。SYSPRINT を目で確認する運用が前提。

---

## 10. 留意事項（★）

1. **チェックはメッセージだけ**：該当してもデータは出力し、リターンコードも0（ソースのコメントどおり。運用で経理部に確認する前提）。
2. **ロジ部門のチェックの対象**：店所は貸方相手店、部門は借方部門で判定している（5.4）。
3. **不動産賃貸の店所がソースに固定**：7店所の増減のたびにソースの修正が必要（5.5）。
4. **伝票区分が10以外は日が 99**（5.2）。
5. **数字以外の業種・部門は黙って 1、銀行は 0**（5.3）。
6. **伝票番号の上3桁と年の上2桁は出力しない**（KIEDPNO 6桁、KIHAKYY 2桁）。
7. **LSS0170 は BB**：店所コードマスター（VETENCD）を参照すると推定されるが、引数 PARMY・PARMZ の意味と、値を返さない場合の扱いが不明（2.2）。
8. **件数の表示が無い**：入力・出力の件数をジョブログで確認できない。
9. **未使用の変数が多い**（3.3）：CDAREA、SOSI、GOKE_FIX など。
10. **入力のレコード長**：GATEXTR の出力をそのまま読み、JCL に DCB が無い。INAREA（150バイト）と合っているか要確認（2.1）。移行後は入力が CSV の取り込み（#11523）に変わるため、項目の切り出し方を合わせて決める（2.4）。
11. **出力は DAIBATEJ が使う**：移行後も KESHWMST の形と項目の意味を保つ必要がある（2.4）。
12. **出力の事前削除の方針が未記載**：JCL L15 の SCRATCH の移行方針が資料に無い（2.4）。

---

## 11. 未使用項目

| 項目 | 内容 |
|---|---|
| INHAK20、INKRDEL、INKSDEL | 入力の項目のうち参照しないもの（INEDPNH は DISPLAY だけで使う） |
| KISPAC1、KIDATKB、KIASENT、KIBSENT、KIINPNA（KIINPTC〜KIINPMI）、KIINPKB、KIMONID、KIINPYY、KISPAC2、KIHAIKB | 出力の項目のうち設定しないもの（クリア値のまま） |
| CAD_SW、SP_SW、KM_SW、OUT_SW、GOKE_FIX、II、LEN、SO_SW、SOSI、SO_W、SI_W、NENDO、CDAREA | 宣言のみ |
| SUBSTR、DATE、LOW、LENGTH、INDEX、STRING | BUILTIN の宣言のみ（VERIFY だけ使う） |

---


## 付録A INAREA（入力、150バイト）

| LV | 項目名 | 属性 | 位置 | 長さ | 本PGでの使用 |
|----|--------|------|------|------|--------------|
| 01 | INAREA | （集団項目） | 1 | 150 | READ INFILE INTO の入力域 |
| 02 | INEDPNH | PIC'(0003)9' | 1 | 3 | DISPLAY（ERR_RTN）に使用 |
| 02 | INEDPNO | PIC'(0006)9' | 4 | 6 | KIEDPNO ← INEDPNO。DISPLAY（ERR_RTN）にも使用 |
| 02 | INHAK20 | PIC'(0002)9' | 10 | 2 | 未使用 |
| 02 | INHAKYY | PIC'(0002)9' | 12 | 2 | KIHAKYY ← INHAKYY |
| 02 | INHAKMM | PIC'(0002)9' | 14 | 2 | KIHAKMM ← INHAKMM |
| 02 | INHAKDD | PIC'(0002)9' | 16 | 2 | INDENKB=10 のとき KIHAKDD ← INHAKDD（それ以外は KIHAKDD=99） |
| 02 | INDENKB | PIC'(0002)9' | 18 | 2 | KIHAKDD の編集判定（=10 か否か）に使用 |
| 02 | INHKTEN | PIC'(0004)9' | 20 | 4 | KIHAKTC ← INHKTEN（発行店） |
| 02 | INKRKAM | PIC'(0007)9' | 24 | 7 | KIAKAMC ← INKRKAM（借方科目）。=9160056 の不動産賃貸チェック、DISPLAY（ERR_RTN_1）にも使用 |
| 02 | INKRTEK | PIC'(0004)9' | 31 | 4 | KIATEKI ← INKRTEK（借方摘要） |
| 02 | INKRBAN | CHAR(0007) | 35 | 7 | VERIFY(INKRBAN,NUMR)=0（全桁数字）のとき KIABANK ← INKRBAN_P（DEF: PIC'(0007)9' で重ね定義）、それ以外は KIABANK=0 |
| 02 | INKRTEN | PIC'(0004)9' | 42 | 4 | KIAAITE ← INKRTEN（借方相手店）。不動産賃貸チェック（1394/1159/5551/5559/5654/2253/0159 以外はERR_RTN_1）、DISPLAY（ERR_RTN_1）にも使用 |
| 02 | INKRGYS | CHAR(0001) | 46 | 1 | VERIFY(INKRGYS,NUMR)=0 のとき KIAGYOS ← INKRGYS_P（DEF: PIC'(0001)9' で重ね定義）、それ以外は KIAGYOS=1 |
| 02 | INKRBUM | CHAR(0001) | 47 | 1 | VERIFY=0 のとき KIABUMO ← INKRBUM_P（DEF: PIC'(0001)9' で重ね定義）、それ以外は KIABUMO=1。PARMY='S' かつ INKRBUM='1' の判定（ERR_RTN）、DISPLAY（ERR_RTN）にも使用 |
| 02 | INKRDEL | CHAR(0020) | 48 | 20 | 未使用 |
| 02 | INKSKAM | PIC'(0007)9' | 68 | 7 | KIBKAMC ← INKSKAM（貸方科目）。=9160056 の不動産賃貸チェック、DISPLAY（ERR_RTN_2）にも使用 |
| 02 | INKSTEK | PIC'(0004)9' | 75 | 4 | KIBTEKI ← INKSTEK（貸方摘要） |
| 02 | INKSBAN | CHAR(0007) | 79 | 7 | VERIFY(INKSBAN,NUMR)=0 のとき KIBBANK ← INKSBAN_P（DEF: PIC'(0007)9' で重ね定義）、それ以外は KIBBANK=0 |
| 02 | INKSTEN | PIC'(0004)9' | 86 | 4 | KIBAITE ← INKSTEN（貸方相手店）。PARMX ← INKSTEN で LSS0170 呼出（ロジ判定）、不動産賃貸チェック（INKSKAM=9160056 時）、DISPLAY（ERR_RTN、ERR_RTN_2）にも使用 |
| 02 | INKINGK | PIC'(0011)9' | 90 | 11 | KIGOKKN ← INKINGK（金額）。DISPLAY（ERR_RTN）にも使用 |
| 02 | INKSGYS | CHAR(0001) | 101 | 1 | VERIFY(INKSGYS,NUMR)=0 のとき KIBGYOS ← INKSGYS_P（DEF: PIC'(0001)9' で重ね定義）、それ以外は KIBGYOS=1 |
| 02 | INKSBUM | CHAR(0001) | 102 | 1 | VERIFY(INKSBUM,NUMR)=0 のとき KIBBUMO ← INKSBUM_P（DEF: PIC'(0001)9' で重ね定義）、それ以外は KIBBUMO=1 |
| 02 | INKSDEL | CHAR(0048) | 103 | 48 | 未使用 |

合計 150 バイト（3+6+2+2+2+2+2+4+7+4+7+4+1+1+20+7+4+7+4+11+1+1+48）。

## 付録B OUTAREA＝KESHWMST の展開（出力、160バイト）

ソースの DCL 01 OUTAREA , %INCLUDE KESHWMST ;（L63〜L64）で取り込まれる仕訳伝票マスター用フォームを展開したもの。

FIXED DEC(11) は6バイト（パック）で計算。

| LV | 項目名 | 属性 | 位置 | 長さ | 本PGでの使用 |
|----|--------|------|------|------|--------------|
| 01 | OUTAREA | （集団項目） | 1 | 160 | WRITE OUTFILE FROM の出力域。各レコード処理の先頭で OUTAREA='' によりクリア |
| 02 | KIEDPNO | PIC'(0006)9' | 1 | 6 | INEDPNO をセット |
| 02 | KISPAC1 | CHAR(0001) | 7 | 1 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 02 | KIDATKB | PIC'(0001)9' | 8 | 1 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 02 | KIHAKTC | PIC'(0004)9' | 9 | 4 | INHKTEN をセット |
| 02 | KIHAKDT | （集団項目） | 13 | 6 | 個別項目（YY/MM/DD）に分けてセット |
| 03 | KIHAKYY | PIC'(0002)9' | 13 | 2 | INHAKYY をセット |
| 03 | KIHAKMM | PIC'(0002)9' | 15 | 2 | INHAKMM をセット |
| 03 | KIHAKDD | PIC'(0002)9' | 17 | 2 | INDENKB=10 なら INHAKDD、それ以外は 99 |
| 02 | KIKARIN | （集団項目） | 19 | 26 | 借方情報（個別項目にセット） |
| 03 | KIASENT | CHAR(0002) | 19 | 2 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 03 | KIAKAMC | PIC'(0007)9' | 21 | 7 | INKRKAM をセット |
| 03 | KIATEKI | PIC'(0004)9' | 28 | 4 | INKRTEK をセット |
| 03 | KIAGYOS | PIC'(0001)9' | 32 | 1 | INKRGYS が数字なら INKRGYS_P、数字でなければ 1 |
| 03 | KIABUMO | PIC'(0001)9' | 33 | 1 | INKRBUM が数字なら INKRBUM_P、数字でなければ 1 |
| 03 | KIAAITE | PIC'(0004)9' | 34 | 4 | INKRTEN をセット |
| 03 | KIABANK | PIC'(0007)9' | 38 | 7 | INKRBAN が数字なら INKRBAN_P、数字でなければ 0 |
| 02 | KIKASIK | （集団項目） | 45 | 26 | 貸方情報（個別項目にセット） |
| 03 | KIBSENT | CHAR(0002) | 45 | 2 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 03 | KIBKAMC | PIC'(0007)9' | 47 | 7 | INKSKAM をセット |
| 03 | KIBTEKI | PIC'(0004)9' | 54 | 4 | INKSTEK をセット |
| 03 | KIBGYOS | PIC'(0001)9' | 58 | 1 | INKSGYS が数字なら INKSGYS_P、数字でなければ 1 |
| 03 | KIBBUMO | PIC'(0001)9' | 59 | 1 | INKSBUM が数字なら INKSBUM_P、数字でなければ 1 |
| 03 | KIBAITE | PIC'(0004)9' | 60 | 4 | INKSTEN をセット |
| 03 | KIBBANK | PIC'(0007)9' | 64 | 7 | INKSBAN が数字なら INKSBAN_P、数字でなければ 0 |
| 02 | KIGOKKN | FIXED DEC(0011) | 71 | 6 | INKINGK をセット（金額） |
| 02 | KIINPNA | （集団項目） | 77 | 12 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 03 | KIINPTC | PIC'(0004)9' | 77 | 4 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 03 | KIINPMM | PIC'(0002)9' | 81 | 2 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 03 | KIINPDD | PIC'(0002)9' | 83 | 2 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 03 | KIINPHH | PIC'(0002)9' | 85 | 2 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 03 | KIINPMI | PIC'(0002)9' | 87 | 2 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 02 | KIINPKB | PIC'(0001)9' | 89 | 1 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 02 | KIMONID | CHAR(0003) | 90 | 3 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 02 | KIINPYY | CHAR(0002) | 93 | 2 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 02 | KISPAC2 | CHAR(0065) | 95 | 65 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |
| 02 | KIHAIKB | PIC'(0001)9' | 160 | 1 | 未設定（OUTAREA='' のクリア値：数字項目は0、文字項目は空白） |

合計 160 バイト（6+1+1+4+6+26+26+6+12+1+3+2+65+1。KIGOKKN は FIXED DEC(11) のパック6バイト）。

## 付録C CDAREA（ワーク、80バイト）

| LV | 項目名 | 属性 | 位置 | 長さ | 本PGでの使用 |
|----|--------|------|------|------|--------------|
| 01 | CDAREA | （集団項目） | 1 | 80 | 未使用（宣言のみ） |
| 02 | CDKMCA | PIC'(0007)9' | 1 | 7 | 未使用 |
| 02 | CDDUM1 | CHAR(0001) | 8 | 1 | 未使用 |
| 02 | CDTEKI | PIC'(0004)9' | 9 | 4 | 未使用 |
| 02 | CDDUM2 | CHAR(0001) | 13 | 1 | 未使用 |
| 02 | CDSYMD | PIC'(0006)9' | 14 | 6 | 未使用 |
| 02 | CDDUM4 | CHAR(0001) | 20 | 1 | 未使用 |
| 02 | CDEYMD | PIC'(0006)9' | 21 | 6 | 未使用 |
| 02 | CDSPAC | CHAR(0054) | 27 | 54 | 未使用 |

合計 80 バイト（7+1+4+1+6+1+6+54）。
