# KS60630 詳細設計書

| 項目 | 内容 |
|---|---|
| プログラムID | KS60630（ソース名 KS60630P） |
| プログラム名 | 郵送用 請求書顧客データ（CSV）作成 |
| 言語 | PL/I（OPTIONS(MAIN)）。パターン PPB0010P（ファイルのIO・SINGLE） |
| 業務ID | NSSQNN50（ソースの +DC GYOM） |
| 起動JOB | DAISEQ4J ステップ No.29 |
| 作成日 | 2026/10/13 |
| 作成方法 | ソースコードからのリバース作成 |

## 前提

- INCLUDE のうち、次を添付ソースで展開して解析した。
  - SQALLHED（ご指示の SQALLHEA に相当）、SQALLDTB、SQALLDTC、SQALLDTD、SSYUPRNT、CORPOMAN
- SDPSQALA は今回の指定にないが、KS60135 の解析時（同日）にいただいた同じメンバーを展開した（付録E）。プログラムでは項目を参照しない。
- 外部手続きの CALL はなく、ブラックボックス（BB）として扱う部分はない。
- 文字コードは日本語EBCDIC（CCSID 930 等）を想定する。CSV の漢字項目はシフトアウト X'0E'／シフトイン X'0F' で囲まれる。
- CSV の値（7章）はすべて架空の例である。項目の位置・長さはソースの定義どおり。
- ★印は、ソースから読み取れる潜在的な問題点または注意点を示す。

---

## 1. 概要

### 1.1 機能

ソース先頭のコメント：「郵送用請求データを読み、優先印刷マスター、請求集約等の情報を付加して出力する。」

1. 郵送用の請求明細データ（INFILE。KS60135P の出力）を先頭から読む。
2. 荷主コード（請求先番号の先頭7桁）が変わるたびに、**優先印刷マスター**と**顧客法人管理マスター**を荷主コードで読む。
3. 見出しデータ（データID 00）1件ごとに、CSV の明細行を1行出力する。明細データ（01、22 等）は読み飛ばす。
4. CSV の先頭に見出し行を1行出力する。
5. 終了時に、入力件数・出力件数を SYSPRINT に表示する。

出力する CSV の項目は5つ。

| 列 | 見出し | 内容 | 取得元 |
|---|---|---|---|
| 1 | 締め日 | 請求期間の至（YYMMDD） | 入力の見出しデータ SDTASYMD |
| 2 | 扱い店 | 店所コード4桁 | 顧客法人管理マスター CORPATTN |
| 3 | 請求先顧客コード | 荷主コード7桁 | 入力の請求先番号の2～8桁目 |
| 4 | 集約コード | 集約代表の荷主コード7桁 | 顧客法人管理マスター CORPZAND |
| 5 | 取扱 | 'エコ'／'優先'／'不要' | 優先印刷マスターの有無と UPRNASKB |

### 1.2 処理概要図

```
                       VKSYUPR（優先印刷マスター）──┐ 荷主コードで読む
                       VKCORPO（顧客法人管理）  ───┤
                                                   ▼
 WORK062S ──▶ INFILE ──────────────────────▶ KS60630P ──▶ CSVFILE ──▶ SEAD.DAISEQ4J.CSV（DASD11）
 （KS60135P の出力：                     │                         │
  郵送対象店所・訂正除外）              ▼                         ▼
                                   SYSPRINT（件数）     No.30・31 MVSCMD（F AUTO1,ASVQ803／808）
                                                          → 後続の転送・配信処理（推定）
```

---

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

### 2.1 ファイル一覧

| DD名 | 編成／属性（DCL） | 入出力 | 内容 | 読込／書出領域 |
|---|---|---|---|---|
| INFILE | RECORD INPUT（順次・可変長） | 入力 | 郵送用の請求明細データ | INAREA CHAR(560) VAR |
| VKSYUPR | RECORD KEYED DIRECT INPUT ENV(VSAM) | 入力 | 優先印刷マスター | SYUAREA（SSYUPRNT 40バイト）。キー＝荷主コード7桁 |
| VKCORPO | RECORD KEYED DIRECT INPUT ENV(VSAM) | 入力 | 顧客法人管理マスター | CORAREA（CORPOMAN 120バイト）。キー＝荷主コード7桁 |
| CSVFILE | RECORD OUTPUT（順次・可変長） | 出力 | 請求書顧客データ（CSV） | HEDAREA（56バイト）／CSVAREA（34バイト） |
| SYSPRINT | － | 出力 | DISPLAY のメッセージ | － |

### 2.2 JCL との対応（DAISEQ4J No.29）

| DD名 | データセット | DISP | 属性 | 作成元／利用先 |
|---|---|---|---|---|
| INFILE | TEMP.DAISEQ4J.WORK062S | SHR | VB | 作成：No.11 KS60135P。No.12 KS60144P も読む |
| VKSYUPR | VKAD.SSYUPRNT.DTMASTER | SHR | VSAM | KS60130P、KS60151P、KS60152P、KS60760P も使用 |
| VKCORPO | VKAD.CORPOMAN.DTMASTER | SHR | VSAM | KS60152P、KS60750P、KS60790P も使用 |
| CSVFILE | SEAD.DAISEQ4J.CSV | (NEW,KEEP,DELETE) | RECFM=VB、BLKSIZE=12000（LRECL 指定なし）、DASD11 | 事前削除：No.28。JOB 内に読むステップはない。No.30・31 の MVSCMD の後、別の処理で取り込まれると推定 |
| SYSPRINT／SYSDBOUT | SYSOUT=* | － | － | － |

- CSV のデータセットは JOB の最後でも削除されず、次回実行の No.28 で削除される。
- ★ JCL に LRECL の指定がない。プログラムの DCL にも ENV(RECSIZE) の指定がないため、レコード長はシステムの既定に依存する（実績上問題ないなら影響なし。要確認）。

### 2.3 入力ファイルの違い

#### (1) 本プログラムが読む3本の違い

| 観点 | INFILE | VKSYUPR | VKCORPO |
|---|---|---|---|
| 種類 | 順次ファイル（作業データ） | VSAM マスター | VSAM マスター |
| 名称 | 郵送用の請求明細データ | 優先印刷マスター | 顧客法人管理マスター |
| データセット | TEMP.DAISEQ4J.WORK062S | VKAD.SSYUPRNT.DTMASTER | VKAD.CORPOMAN.DTMASTER |
| レイアウト | SQALLHED ほか5種（80～560バイト） | SSYUPRNT（40バイト） | CORPOMAN（120バイト） |
| 読み方 | 先頭から全件 | 荷主コード（7桁）でキー読み | 荷主コード（7桁）でキー読み |
| 読む回数 | 全件 | 荷主が変わるたびに1回 | 荷主が変わるたびに1回 |
| 使う項目 | SDTASQNO（荷主コード）、SDTADTID、SDTASYMD | UPRNASKB（と、該当の有無） | CORPATTN、CORPZAND |
| CSV のどこに入るか | 締め日、請求先顧客コード、出力する行の決定 | 取扱（エコ／優先／不要） | 扱い店、集約コード |
| 該当がないとき | － | 取扱＝**エコ** | 扱い店＝0000（推定）、集約コード＝空白 |
| OPEN | 明示的に OPEN | **OPEN 文なし**（最初の READ で暗黙オープン） | 同左 |

- 2つのマスターは同じキー（荷主コード）で読むが、役割が違う。優先印刷マスターは「**誰が郵送（エコ）対象か**」、顧客法人管理マスターは「**どの店・どの代表でまとめるか**」を表す。
- 入力ファイルは、見出しデータ（ID 00）しか CSV に使わない。明細データ（01、21、22、45 等）は件数を数えるだけで読み飛ばす。

#### (2) 同じ JOB のほかのプログラムの入力との違い

| 観点 | KS60630P（本PG）の INFILE | KS60135P の入力（WORK0620） | KS60152P の入力（WORK0700） |
|---|---|---|---|
| データセット | WORK062S | WORK0620 | WORK0700 |
| 中身 | 郵送対象店所の請求明細（訂正除外） | 全店所の請求明細 | WORK062S を KS60144P で印刷用の行データにしたもの |
| レイアウト | SQALLHED ほか（請求明細データ） | 同左 | SQHAIDAA～D（印刷データ） |
| 本PG との関係 | － | KS60135P がこれから WORK062S を作る | 同じ WORK062S が元。同じ顧客が KS60152P の請求書と本PG の CSV の両方に出る |

- KS60152P と本PG は、同じ2つのマスターで顧客を判定するが、扱いが一部違う（1.3）。

### 2.4 KS60152P の判定との対応

| 優先印刷マスター | KS60152P（請求書） | 本PG（CSV の取扱） |
|---|---|---|
| 無い | OUTFILE・OUTFIL3（インフォコム系）に出力 | エコ |
| 有る（UPRNASKB≠'6'） | OUTFIL2（事業所送付用）に出力 | 優先 |
| 有る（UPRNASKB＝'6'） | **どこにも出力しない** | **不要（CSV には出る）** |

| 顧客法人管理マスターの項目 | KS60152P | 本PG |
|---|---|---|
| CORPZAND（集約代表） | 請求書2行目の集約代表コード | CSV の集約コード |
| CORPZDTN（代表扱い店） | インフォコムの1行目の店所CD | 使わない |
| CORPATTN | 使わない | CSV の扱い店 |

- ★ CSV の「扱い店」（CORPATTN）と、KS60152P がインフォコムの振分けに使う「代表扱い店」（CORPZDTN）は別の項目である。両者の意味の違いは、マスターの仕様で確認が必要。

---

## 3. データ定義

### 3.1 入力エリア

| 名称 | 属性 | 内容 |
|---|---|---|
| INAREA | CHAR(560) VAR | INFILE の読込域 |
| INARA | DEF INAREA：DUMMYA BIN(15)＋SQALLHED | 見出し（ID 00）として参照 |
| INARB／INARC／INARD／INARX | DEF INAREA＋SQALLDTB／SQALLDTC／SQALLDTD／SDPSQALA | 宣言のみ（未使用） |
| SYUAREA | SSYUPRNT（40バイト） | 優先印刷マスターの読込域 |
| CORAREA | CORPOMAN（120バイト） | 顧客法人管理マスターの読込域 |

- 参照する入力項目は、全レイアウト共通の位置にある SDTASQNO（15バイト目、7）、SDTADTID（33バイト目、2）と、見出しデータだけにある SDTASYMD（57バイト目、6）の3つ。

### 3.2 出力エリア

**HEDAREA（CSV の見出し行、56バイト）**

| 項目 | 属性 | 初期値 |
|---|---|---|
| HEDDAT1 | CHAR(50) | `締め日,扱い店,請求先顧客コード,集約コード,`（漢字は SO/SI 付き。ちょうど50バイト） |
| HEDDAT2 | CHAR(6) | `取扱`（SO＋4バイト＋SI） |

**CSVAREA（CSV の明細行、34バイト）**

| 項目 | 位置 | 長さ | 属性 | 内容 | 編集元 |
|---|---|---|---|---|---|
| CSVSQMD | 1 | 6 | CHAR(6) | 締め日 | SDTASYMD |
| CSVCM01 | 7 | 1 | CHAR(1) | ',' | |
| CSVATTN | 8 | 4 | CHAR(4) | 扱い店 | CORPATTN |
| CSVCM02 | 12 | 1 | CHAR(1) | ',' | |
| CSVSQNI | 13 | 7 | PIC'(7)9' | 請求先顧客コード | BREAKA（荷主コード） |
| CSVCM03 | 20 | 1 | CHAR(1) | ',' | |
| CSVSQHD | 21 | 7 | CHAR(7) | 集約コード | CORPZAND |
| CSVCM04 | 28 | 1 | CHAR(1) | ',' | |
| CSVECOD | 29 | 6 | CHAR(6) | 取扱 | 'エコ'／'不要'／'優先'（SO＋4バイト＋SI） |

- 区切りはカンマ。引用符（"）は付けない。各項目は固定長のため、集約コードが空白の場合も7桁分の空白が入る。
- 最後の列の後にカンマは付かない（列数5）。

### 3.3 ワークエリア

| 名称 | 属性 | 初期値 | 内容 |
|---|---|---|---|
| EOF_SW | BIT(1) | '1'B | INFILE の終了で '0'B |
| MS_SW | CHAR(1) | － | 優先印刷マスターの該当（'Y'＝あり／'N'＝なし） |
| CO_SW | CHAR(1) | － | 顧客法人管理マスターの該当（設定するが**判定に使わない**） |
| SEQNO | PIC'(13)9' | 0 | 請求先番号13桁 |
| SEQNO_DF | DEF SEQNO | － | SEQ_ZERO（1桁）＋SEQ_NICD（荷主7桁）＋SEQ_SQNO（枝番5桁） |
| BREAKA | PIC'(7)9' | 0 | 処理中の荷主コード（マスターのキーにも使う） |
| ICNT／OCNT／CCNT | FIXED DEC(9) | 0 | 入力件数／CSV 明細行の件数／変更件数（加算なし） |
| TRY_SW、OUT_SW、II | － | － | 宣言のみ（KS60135P からの流用と推定） |

---

## 4. 処理フロー

```
開始
 ├─ ON ENDFILE(INFILE) → EOF_SW='0'B
 │  ON KEY(VKSYUPR) → MS_SW='N'、ON KEY(VKCORPO) → CO_SW='N'
 ├─ OPEN INFILE、CSVFILE（マスター2本は OPEN しない）
 ├─ INAREA をクリアし、INFILE を1件読む。SEQNO ← SDTASQNO
 ├─ CSV の見出し行（HEDAREA）を WRITE
 ├─ DO WHILE（INFILE が終わるまで）                         … 荷主の単位
 │     BREAKA ← SEQ_NICD（荷主7桁）
 │     SYUAREA、CORAREA をクリア
 │     MS_SW='Y'、VKSYUPR を KEY(BREAKA) で READ
 │     CO_SW='Y'、VKCORPO を KEY(BREAKA) で READ
 │     DO WHILE（終わっていない かつ 荷主が BREAKA と同じ） … レコードの単位
 │         ICNT ＋1
 │         SDTADTID = 00 なら CSV 明細行を編集して WRITE、OCNT ＋1
 │         INFILE を1件読む、SEQNO ← SDTASQNO
 │     END
 │  END
 ├─ DISPLAY 入力件数・出力件数・変更件数
 ├─ CLOSE INFILE、CSVFILE
終了
```

---

## 5. 処理詳細

### 5.1 開始処理

1. ON 条件を設定する。マスターの KEY 条件（該当なし・キーエラー）は、それぞれ MS_SW／CO_SW を 'N' にするだけで処理を続ける。
2. INFILE と CSVFILE を OPEN する。
   - VKSYUPR・VKCORPO の OPEN 文はない。最初の READ で、DCL の属性（RECORD KEYED DIRECT INPUT）に従って暗黙にオープンされ、終了時に自動でクローズされる。
3. `INAREA = ''` の後、INFILE を1件読み、SEQNO ← SDTASQNO。
4. **入力の有無にかかわらず**、CSV の見出し行（HEDAREA、56バイト）を書く。

- ★ INFILE が0件の場合、SDTASQNO（パック10進）の位置には有効なデータがないまま SEQNO への変換が行われる。内容によってはデータ例外（0C7）で異常終了する可能性がある。

### 5.2 荷主単位の処理

| 手順 | 内容 |
|---|---|
| 1 | BREAKA ← SEQ_NICD（請求先番号13桁の2～8桁目＝荷主コード） |
| 2 | SYUAREA、CORAREA をクリア（`= ''`）。該当がない場合はクリアした値のまま使われる |
| 3 | MS_SW ← 'Y'。`READ FILE(VKSYUPR) INTO(SYUAREA) KEY(BREAKA)`。該当なしなら MS_SW='N' |
| 4 | CO_SW ← 'Y'。`READ FILE(VKCORPO) INTO(CORAREA) KEY(BREAKA)`。該当なしなら CO_SW='N'（以後使わない） |

- 区切りは荷主コード7桁だけで判定する。同じ荷主の枝番違い（別の請求先）は、同じまとまりになり、マスターは1回だけ読む。

### 5.3 レコードごとの処理（CSV 明細行の出力）

1. ICNT ＋1
2. SDTADTID = 00（見出しデータ）の場合だけ、次を行う（ソースコメント「ヘッダー部のレコードのみ出力」）。

| 手順 | 内容 |
|---|---|
| a | CSVAREA をクリア |
| b | CSVSQMD ← SDTASYMD（締め日） |
| c | CSVATTN ← CORPATTN（扱い店） |
| d | CSVSQNI ← BREAKA（請求先顧客コード＝荷主コード7桁） |
| e | CSVSQHD ← CORPZAND（集約コード） |
| f | 取扱：MS_SW='N' → 'エコ'。MS_SW='Y' で UPRNASKB='6' → '不要'、それ以外 → '優先' |
| g | CSVCM01～04 ← ','、`WRITE FILE(CSVFILE) FROM(CSVAREA)`、OCNT ＋1 |

3. INFILE を1件読み、SEQNO ← SDTASQNO。

- 見出しデータは請求先（荷主＋枝番）ごとに1件あるため、CSV は**請求先ごとに1行**になる。
- ★ 枝番は CSV に出力しない。同じ荷主の枝番違いがあると、内容が同じ行（締め日も同じなら完全に同じ行）が複数出る。
- ★ 顧客法人管理マスターに該当がない場合、CORAREA のクリア値がそのまま出る。扱い店（PIC 項目）は '0000'、集約コード（CHAR 項目）は空白7桁になると推定される。CO_SW で判定していないため、「マスターになし」を示す値にはならない。
- ★ 優先印刷マスターの読込みでキーエラー（該当なし以外）が起きた場合も MS_SW='N' となり、'エコ' と出力される。

### 5.4 終了処理

1. 次の3行を DISPLAY する。
   - `<<<  INPUT COUNT = ` ∥ ICNT（INFILE の全件数）
   - `<<< OUTPUT COUNT = ` ∥ OCNT（CSV の明細行数。見出し行は含まない）
   - `<<< CHANGE COUNT = ` ∥ CCNT（常に 0）
2. INFILE と CSVFILE を CLOSE する。

---

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

7章の例（入力 18件のうち見出しデータ 5件）の場合：

```
<<<  INPUT COUNT =           18
<<< OUTPUT COUNT =            5
<<< CHANGE COUNT =            0
```

- CSV ファイルの行数は OUTPUT COUNT＋1（見出し行）になる。
- 件数の前の空白の数は、FIXED DEC(9) を文字に変換する規則によるもので、イメージは目安である。

---

## 7. CSV の出力イメージ

### 7.1 例の条件

| 入力の請求先 | 見出しデータ | 明細データ | 優先印刷マスター | 顧客法人管理マスター（ATTN／ZAND） |
|---|---|---|---|---|
| 1234567-00001 | 1件 | 3件 | なし | 1002／7654321 |
| 1234567-00002 | 1件 | 2件 | （同じ荷主のため読み直さない） | （同左） |
| 2345678-00000 | 1件 | 4件 | あり（UPRNASKB＝'1'） | 1003／2345678 |
| 3456789-00000 | 1件 | 2件 | あり（UPRNASKB＝'6'） | 1305／3456789 |
| 4567890-00000 | 1件 | 2件 | なし | なし |

- 締め日（期間の至）はすべて 260930。入力は 18件（見出し 5件＋明細 13件）。

### 7.2 CSV（PC に転送して文字コードを変換した後のイメージ）

```
締め日,扱い店,請求先顧客コード,集約コード,取扱
260930,1002,1234567,7654321,エコ
260930,1002,1234567,7654321,エコ
260930,1003,2345678,2345678,優先
260930,1305,3456789,3456789,不要
260930,0000,4567890,       ,エコ
```

| 行 | 請求先 | 条件 | CSV の行 |
|---|---|---|---|
| 1 | － | 見出し行（入力に関係なく必ず出る） | `締め日,扱い店,請求先顧客コード,集約コード,取扱` |
| 2 | 1234567-00001 | 優先印刷マスターに無し・顧客法人管理マスターに有り | `260930,1002,1234567,7654321,エコ` |
| 3 | 1234567-00002 | 同じ荷主の別の枝番（請求先） | `260930,1002,1234567,7654321,エコ` |
| 4 | 2345678-00000 | 優先印刷マスターに有り（UPRNASKB＝'1'）・顧客法人管理マスターに有り | `260930,1003,2345678,2345678,優先` |
| 5 | 3456789-00000 | 優先印刷マスターに有り（UPRNASKB＝'6'：明細不要） | `260930,1305,3456789,3456789,不要` |
| 6 | 4567890-00000 | どちらのマスターにも無し | `260930,0000,4567890,       ,エコ` |

- 2行目と3行目は、枝番が出力されないため同じ内容になる（5.3 の★）。
- 5行目（明細不要の顧客）は、KS60152P の請求書には出ないが、CSV には「不要」として出る。
- 6行目は、顧客法人管理マスターにないため、扱い店が 0000、集約コードが空白7桁になる（推定）。

### 7.3 ホスト上のイメージ（EBCDIC、SO/SI を < > で表示）

```
<締め日>,<扱い店>,<請求先顧客コード>,<集約コード>,<取扱>
260930,1002,1234567,7654321,<エコ>
260930,1002,1234567,7654321,<エコ>
260930,1003,2345678,2345678,<優先>
260930,1305,3456789,3456789,<不要>
260930,0000,4567890,       ,<エコ>
```

- 漢字の項目（見出し行の各見出し、取扱の値）は、SO（X'0E'）と SI（X'0F'）で囲まれている。PC へ転送するときの変換で、SO/SI は削除されるか空白になる（転送ツールの設定による）。
- 空白になる設定の場合、見出し行は「` 締め日 , 扱い店 ,…`」のように各項目の前後に空白が入る。

### 7.4 レコードのダンプイメージ

**見出し行（56バイト）**

```
     1 ----+----1----+----2----+----3----+----4----+----5----+-
  文字 <締め日>,<扱い店>,<請求先顧客コード>,<集約コード>,<取扱>
  ZONE 0484A460604648450604E4A4A4E4D48454C0604A4B48454C0604A460
  NUMR EA04752FBEC94284FBEA89072EEAE3A383EFBE707D3A383EFBE66C9F
```

**明細行（2行目、34バイト）**

```
     1 ----+----1----+----2----+----3----
  文字 260930,1002,1234567,7654321,<エコ>
  ZONE FFFFFF6FFFF6FFFFFFF6FFFFFFF6048480
  NUMR 260930B1002B1234567B7654321BE343AF
```

- 文字コードは CCSID 930 を想定。カンマは X'6B'、数字は X'F0'～X'F9'。

---

## 8. メッセージ一覧

| No | メッセージ | 出力先 | 契機 |
|---|---|---|---|
| 1 | `<<<  INPUT COUNT = ` ∥ 件数 | SYSPRINT（DISPLAY） | 終了時 |
| 2 | `<<< OUTPUT COUNT = ` ∥ 件数 | 同上 | 終了時 |
| 3 | `<<< CHANGE COUNT = ` ∥ 件数 | 同上 | 終了時（常に 0） |

---

## 9. 異常処理

| 事象 | 検出 | 処理 |
|---|---|---|
| INFILE の終了 | ENDFILE 条件 | EOF_SW='0'B でループを終える（正常） |
| 優先印刷マスターに該当なし・キーエラー | KEY 条件 | MS_SW='N'。取扱＝'エコ' で続行（メッセージなし） |
| 顧客法人管理マスターに該当なし・キーエラー | KEY 条件 | CO_SW='N'（使わない）。クリア値のまま CSV に出力（メッセージなし） |
| INFILE が0件 | なし | 見出し行だけの CSV を出力。★ パック項目の変換でデータ例外の可能性（5.1） |
| マスターのデータセットが割り当てられていない | UNDEFINEDFILE 条件 | ON 定義なし → 異常終了 |
| その他 | － | ON ERROR の定義なし → PL/I 標準のエラー処理（異常終了） |
| リターンコード | － | 設定なし（正常時は 0） |

---

## 10. 留意事項（★）

1. **枝番違いの請求先が重複行になる**：CSV に枝番がないため、同じ荷主の複数の請求先が区別できない行として出る。
2. **顧客法人管理マスターに該当がない顧客**：扱い店 0000（推定）、集約コード空白で出力される。CO_SW を設定しているが使っていない。
3. **扱い店の項目が KS60152P と違う**：CSV は CORPATTN、KS60152P の振分けは CORPZDTN を使う（2.4）。
4. **明細不要の顧客も CSV に出る**：取扱＝'不要' として出力する。KS60152P の請求書には出ない。
5. **マスター2本の OPEN 文がない**：暗黙オープンで動作するが、オープンエラーの検出・メッセージがない。
6. **入力0件時のデータ例外の可能性**（5.1）。
7. **JCL に LRECL の指定がない**（2.2）。
8. **CHANGE COUNT は常に 0**。TRY_SW、OUT_SW、II 等の未使用変数がある（KS60135P からの流用と推定）。
9. **締め日は西暦下2桁の YYMMDD**：CSV の利用側で年の解釈が必要。
10. **SO/SI 付きの漢字**：CSV に漢字（見出し・取扱）が含まれる。PC への転送設定によって、見出しや値に空白が混ざる。

---

## 11. 未使用項目

| 項目 | 内容 |
|---|---|
| INARB、INARC、INARD、INARX | 各レイアウトの重ね定義（共通位置の項目を INARA の名前で参照） |
| SQALLHED の SDTASQNO、SDTADTID、SDTASYMD 以外 | 参照なし |
| SSYUPRNT の UPRNASKB 以外 | 参照なし |
| CORPOMAN の CORPATTN、CORPZAND 以外 | 参照なし |
| CO_SW | 設定のみ |
| TRY_SW、OUT_SW、II、SEQ_ZERO、SEQ_SQNO | 宣言のみ |
| CCNT | 加算なし（表示のみ） |

---

## 付録A SQALLHED（見出し、データID 00、560バイト）

| LV | 項目名 | 属性 | 繰返し | 位置 | 長さ | 本PGでの使用 |
|---|---|---|---|---|---|---|
| 02 | SDTASHTN | PIC'(4)9' |  | 1 | 4 |  |
| 02 | SDTAKKKK | CHAR(10) |  | 5 | 10 |  |
| 02 | SDTASQNO | FIXED DEC(13) |  | 15 | 7 | 請求先番号：荷主コード（2～8桁目）で区切り判定、CSV の請求先顧客コード |
| 02 | SDTASPA1 | CHAR(11) |  | 22 | 11 |  |
| 02 | SDTADTID | PIC'(2)9' |  | 33 | 2 | データID：00 のレコードだけ CSV に出力 |
| 02 | SDTAKARI | PIC'(1)9' |  | 35 | 1 |  |
| 02 | SDTADPKB | PIC'(1)9' |  | 36 | 1 |  |
| 02 | SDTAYYMM | PIC'(4)9' |  | 37 | 4 |  |
| 02 | SDTAHYMD | PIC'(6)9' |  | 41 | 6 |  |
| 02 | SDTACKTT | PIC'(4)9' |  | 47 | 4 |  |
| 02 | SDTAKIKN | （集団項目） |  | 51 | 12 |  |
| 03 | 　SDTAKYMD | PIC'(6)9' |  | 51 | 6 |  |
| 03 | 　SDTASYMD | PIC'(6)9' |  | 57 | 6 | CSV の締め日 |
| 02 | SDTASQN1 | CHAR(8) |  | 63 | 8 |  |
| 02 | SDTASQNI | CHAR(64) |  | 71 | 64 |  |
| 02 | SDTASQN2 | CHAR(5) |  | 135 | 5 |  |
| 02 | SDTASQNM | CHAR(36) |  | 140 | 36 |  |
| 02 | SDTAPKEI | PIC'(1)9' |  | 176 | 1 |  |
| 02 | SDTAPKBN | CHAR(1) |  | 177 | 1 |  |
| 02 | SDTAHYOG | （集団項目） |  | 178 | 20 |  |
| 03 | 　SDTANNNO | PIC'(1)9' | 20 | 178 | 1×20＝20 |  |
| 02 | SDTABIKB | PIC'(1)9' |  | 198 | 1 |  |
| 02 | SDTAZKIN | PIC'(1)9' |  | 199 | 1 |  |
| 02 | SDTAZKI1 | PIC'(1)9' |  | 200 | 1 |  |
| 02 | SDTAJIKB | PIC'(1)9' |  | 201 | 1 |  |
| 02 | SDTABBKB | PIC'(1)9' |  | 202 | 1 |  |
| 02 | SDTAHHTN | PIC'(4)9' |  | 203 | 4 |  |
| 02 | SDTASPAC | CHAR(14) |  | 207 | 14 |  |
| 02 | SDTAHEAD | （集団項目） |  | 221 | 340 |  |
| 03 | 　SDTAMTTO | （集団項目） |  | 221 | 30 |  |
| 04 | 　　SDTAUNTI | FIXED DEC(9) |  | 221 | 5 |  |
| 04 | 　　SDTARYOK | FIXED DEC(9) |  | 226 | 5 |  |
| 04 | 　　SDTATTAX | FIXED DEC(9) |  | 231 | 5 |  |
| 04 | 　　SDTAHOKR | FIXED DEC(9) |  | 236 | 5 |  |
| 04 | 　　SDTAAAAA | FIXED DEC(9) |  | 241 | 5 |  |
| 04 | 　　SDTAATAX | FIXED DEC(9) |  | 246 | 5 |  |
| 03 | 　SDTAYUNN | CHAR(7) |  | 251 | 7 |  |
| 03 | 　SDTAYUNO | PIC'(5)9' |  | 258 | 5 |  |
| 03 | 　SDTAJKAN | （集団項目） |  | 263 | 124 |  |
| 04 | 　　SDTAJKA1 | CHAR(34) |  | 263 | 34 |  |
| 04 | 　　SDTAJKA2 | CHAR(38) |  | 297 | 38 |  |
| 04 | 　　SDTAJKA3 | CHAR(52) |  | 335 | 52 |  |
| 03 | 　SDTAJKNA | （集団項目） |  | 387 | 129 |  |
| 04 | 　　SDTAJKN1 | CHAR(32) |  | 387 | 32 |  |
| 04 | 　　SDTAJKN2 | CHAR(47) |  | 419 | 47 |  |
| 04 | 　　SDTAJKN3 | CHAR(50) |  | 466 | 50 |  |
| 03 | 　SDTADTEL | CHAR(12) |  | 516 | 12 |  |
| 03 | 　SDTABANK | FIXED DEC(7) |  | 528 | 4 |  |
| 03 | 　SDTAKONO | PIC'(1)9' |  | 532 | 1 |  |
| 03 | 　SDTAKOBA | FIXED DEC(9) |  | 533 | 5 |  |
| 03 | 　SDTABAN1 | FIXED DEC(7) |  | 538 | 4 |  |
| 03 | 　SDTAKON1 | PIC'(1)9' |  | 542 | 1 |  |
| 03 | 　SDTAKOB1 | FIXED DEC(9) |  | 543 | 5 |  |
| 03 | 　SDTATKB3 | PIC'(1)9' |  | 548 | 1 |  |
| 03 | 　SDTATENK | FIXED DEC(9) |  | 549 | 5 |  |
| 03 | 　SDTASPA2 | CHAR(7) |  | 554 | 7 |  |

## 付録B SQALLDTB（送り状明細、データID 01・21・31・95、230バイト）

| LV | 項目名 | 属性 | 繰返し | 位置 | 長さ | 本PGでの使用 |
|---|---|---|---|---|---|---|
| 02 | SDTBSEHT | PIC'(4)9' |  | 1 | 4 |  |
| 02 | SDTBKKKK | CHAR(10) |  | 5 | 10 |  |
| 02 | SDTBSENO | FIXED(13) |  | 15 | 7 | （SDTASQNO として参照） |
| 02 | SDTBPSEQ | CHAR(11) |  | 22 | 11 |  |
| 02 | SDTBDTID | PIC'(2)9' |  | 33 | 2 | （SDTADTID として参照） |
| 02 | SDTBYYMD | FIXED(7) |  | 35 | 4 |  |
| 02 | SDTBMOCH | PIC'(1)9' |  | 39 | 1 |  |
| 02 | SDTBOKRN | FIXED(11) |  | 40 | 6 |  |
| 02 | SDTBRECT | PIC'(1)9' |  | 46 | 1 |  |
| 02 | SDTBTENS | FIXED(5) |  | 47 | 3 |  |
| 02 | SDTBMONI | （集団項目） |  | 50 | 29 |  |
| 03 | 　SDTBCHCD | FIXED(5) |  | 50 | 3 |  |
| 03 | 　SDTBNIAD | CHAR(12) |  | 53 | 12 |  |
| 03 | 　SDTBNINA | CHAR(14) |  | 65 | 14 |  |
| 02 | SDTBKOSU | FIXED(5) |  | 79 | 3 |  |
| 02 | SDTBKKGG | FIXED(5) |  | 82 | 3 |  |
| 02 | SDTBKEIY | （集団項目） |  | 85 | 8 |  |
| 03 | 　SDTBUUNN | FIXED(7) |  | 85 | 4 |  |
| 03 | 　SDTBRYKE | FIXED(7) |  | 89 | 4 |  |
| 02 | SDTBTATE | FIXED(7) |  | 93 | 4 |  |
| 02 | SDTBWARI | FIXED(5) |  | 97 | 3 |  |
| 02 | SDTBHOKN | （集団項目） |  | 100 | 7 |  |
| 03 | 　SDTBFUTT | PIC'(1)9' |  | 100 | 1 |  |
| 03 | 　SDTBKING | FIXED(5) |  | 101 | 3 |  |
| 03 | 　SDTBEENN | FIXED(5) |  | 104 | 3 |  |
| 02 | SDTBDAII | （集団項目） |  | 107 | 13 |  |
| 03 | 　SDTBDAKU | PIC'(1)9' |  | 107 | 1 |  |
| 03 | 　SDTBDAKI | FIXED(7) |  | 108 | 4 |  |
| 03 | 　SDTBRONN | FIXED(7) |  | 112 | 4 |  |
| 03 | 　SDTBTESO | FIXED(7) |  | 116 | 4 |  |
| 02 | SDTBRYRY | （集団項目） |  | 120 | 44 |  |
| 03 | 　SDTBWAWA | （集団項目） |  | 120 | 9 |  |
| 04 | 　　SDTBWAHA | FIXED(5) |  | 120 | 3 |  |
| 04 | 　　SDTBWACH | FIXED(5) |  | 123 | 3 |  |
| 04 | 　　SDTBWAFU | FIXED(5) |  | 126 | 3 |  |
| 03 | 　SDTBTESU | （集団項目） |  | 129 | 6 |  |
| 04 | 　　SDTBTECH | FIXED(5) |  | 129 | 3 |  |
| 04 | 　　SDTBTERE | FIXED(5) |  | 132 | 3 |  |
| 03 | 　SDTBSHSH | FIXED(5) |  | 135 | 3 |  |
| 03 | 　SDTBHHAI | FIXED(5) |  | 138 | 3 |  |
| 03 | 　SDTBKOSO | FIXED(7) |  | 141 | 4 |  |
| 03 | 　SDTBCHOS | FIXED(5) |  | 145 | 3 |  |
| 03 | 　SDTBKONP | FIXED(7) |  | 148 | 4 |  |
| 03 | 　SDTBYUDO | FIXED(7) |  | 152 | 4 |  |
| 03 | 　SDTBETCC | FIXED(7) |  | 156 | 4 |  |
| 03 | 　SDTBYOBI | FIXED(7) |  | 160 | 4 |  |
| 02 | SDTBKIRO | （集団項目） |  | 164 | 8 |  |
| 03 | 　SDTBKISH | FIXED(3) |  | 164 | 2 |  |
| 03 | 　SDTBKKRO | FIXED(5) |  | 166 | 3 |  |
| 03 | 　SDTBKICC | FIXED(5) |  | 169 | 3 |  |
| 02 | SDTBAINI | CHAR(14) |  | 172 | 14 |  |
| 02 | SDTBSEKU | CHAR(10) |  | 186 | 10 |  |
| 02 | SDTBTANO | CHAR(13) |  | 196 | 13 |  |
| 02 | SDTBHNCD | FIXED(7) |  | 209 | 4 |  |
| 02 | SDTBTELL | CHAR(10) |  | 213 | 10 |  |
| 02 | SDTBJIKB | PIC'(1)9' |  | 223 | 1 |  |
| 02 | SDTBBTAX | FIXED(7) |  | 224 | 4 |  |
| 02 | SDTBSPAC | CHAR(3) |  | 228 | 3 |  |

## 付録C SQALLDTC（一括付替・訂正、データID 22・33、80バイト）

| LV | 項目名 | 属性 | 繰返し | 位置 | 長さ | 本PGでの使用 |
|---|---|---|---|---|---|---|
| 02 | SDTCSEHA | PIC'(4)9' |  | 1 | 4 |  |
| 02 | SDTCKKKK | CHAR(10) |  | 5 | 10 |  |
| 02 | SDTCSENO | FIXED(13) |  | 15 | 7 | （SDTASQNO として参照） |
| 02 | SDTCETCC | CHAR(11) |  | 22 | 11 |  |
| 02 | SDTCDDID | PIC'(2)9' |  | 33 | 2 | （SDTADTID として参照） |
| 02 | SDTCTETU | FIXED(7) |  | 35 | 4 |  |
| 02 | SDTCTTTN | FIXED(5) |  | 39 | 3 |  |
| 02 | SDTCUNCH | FIXED(9) |  | 42 | 5 |  |
| 02 | SDTCUNZK | FIXED(9) |  | 47 | 5 |  |
| 02 | SDTCOLDS | FIXED(13) |  | 52 | 7 |  |
| 02 | SDTCRIYU | PIC'(2)9' |  | 59 | 2 |  |
| 02 | SDTCAINA | CHAR(14) |  | 61 | 14 |  |
| 02 | SDTCJIKB | PIC'(1)9' |  | 75 | 1 |  |
| 02 | SDTCSPAC | CHAR(5) |  | 76 | 5 |  |

## 付録D SQALLDTD（POSメイト等、データID 45・55・65、90バイト）

| LV | 項目名 | 属性 | 繰返し | 位置 | 長さ | 本PGでの使用 |
|---|---|---|---|---|---|---|
| 02 | SDTDSEHA | PIC'(4)9' |  | 1 | 4 |  |
| 02 | SDTDKKKK | CHAR(10) |  | 5 | 10 |  |
| 02 | SDTDSENO | FIXED(13) |  | 15 | 7 | （SDTASQNO として参照） |
| 02 | SDTDETCC | CHAR(11) |  | 22 | 11 |  |
| 02 | SDTDDDID | PIC'(2)9' |  | 33 | 2 | （SDTADTID として参照） |
| 02 | SDTDYYYY | FIXED(7) |  | 35 | 4 |  |
| 02 | SDTDYUDA | FIXED(9) |  | 39 | 5 |  |
| 02 | SDTDMUDA | FIXED(9) |  | 44 | 5 |  |
| 02 | SDTDUNCH | FIXED(9) |  | 49 | 5 |  |
| 02 | SDTDUNZK | FIXED(9) |  | 54 | 5 |  |
| 02 | SDTDSONO | FIXED(9) |  | 59 | 5 |  |
| 02 | SDTDJIKB | PIC'(1)9' |  | 64 | 1 |  |
| 02 | SDTDSPAC | CHAR(26) |  | 65 | 26 |  |

## 付録E SDPSQALA（デパート請求、データID 02、100バイト）

| LV | 項目名 | 属性 | 繰返し | 位置 | 長さ | 本PGでの使用 |
|---|---|---|---|---|---|---|
| 02 | SSALSEHA | PIC'(4)9' |  | 1 | 4 |  |
| 02 | SSALKKKK | CHAR(10) |  | 5 | 10 |  |
| 02 | SSALSENO | FIXED(13) |  | 15 | 7 | （SDTASQNO として参照） |
| 02 | SSALPSEQ | CHAR(11) |  | 22 | 11 |  |
| 02 | SSALDDID | PIC'(2)9' |  | 33 | 2 | （SDTADTID として参照） |
| 02 | SSALUKET | （集団項目） |  | 35 | 7 |  |
| 03 | 　SSALUKYM | FIXED(7) |  | 35 | 4 |  |
| 03 | 　SSALUKTE | FIXED(5) |  | 39 | 3 |  |
| 02 | SSALMIUN | （集団項目） |  | 42 | 10 |  |
| 03 | 　SSALUNCN | FIXED(9) |  | 42 | 5 |  |
| 03 | 　SSALRYOK | FIXED(9) |  | 47 | 5 |  |
| 02 | SSALWARI | FIXED(7) |  | 52 | 4 |  |
| 02 | SSALHONA | （集団項目） |  | 56 | 8 |  |
| 03 | 　SSALHOKN | FIXED(7) |  | 56 | 4 |  |
| 03 | 　SSALHOKE | FIXED(7) |  | 60 | 4 |  |
| 02 | SSALDAIB | （集団項目） |  | 64 | 28 |  |
| 03 | 　SSALDAII | （集団項目） |  | 64 | 14 |  |
| 04 | 　　SSALDAKI | FIXED(9) |  | 64 | 5 |  |
| 04 | 　　SSALDARO | FIXED(9) |  | 69 | 5 |  |
| 04 | 　　SSALDASO | FIXED(7) |  | 74 | 4 |  |
| 03 | 　SSALDABE | （集団項目） |  | 78 | 14 |  |
| 04 | 　　SSALDABN | FIXED(9) |  | 78 | 5 |  |
| 04 | 　　SSALDABS | FIXED(9) |  | 83 | 5 |  |
| 04 | 　　SSALDABT | FIXED(7) |  | 88 | 4 |  |
| 02 | SSALMAIS | FIXED(7) |  | 92 | 4 |  |
| 02 | SSALJIKB | PIC'(1)9' |  | 96 | 1 |  |
| 02 | SSALSPAC | CHAR(4) |  | 97 | 4 |  |

## 付録F SSYUPRNT（優先印刷マスター、40バイト）

| LV | 項目名 | 属性 | 繰返し | 位置 | 長さ | 本PGでの使用 |
|---|---|---|---|---|---|---|
| 02 | UPRNNICD | PIC'(7)9' |  | 1 | 7 | キー（荷主コード） |
| 02 | UPRNKUBN | PIC'(1)9' |  | 8 | 1 |  |
| 02 | UPRNTHKB | CHAR(1) |  | 9 | 1 |  |
| 02 | UPRNSPAC | CHAR(1) |  | 10 | 1 |  |
| 02 | UPRNAIXK | （集団項目） |  | 11 | 23 |  |
| 03 | 　UPRNATEN | PIC'(4)9' |  | 11 | 4 |  |
| 03 | 　UPRNAKBK | PIC'(1)9' |  | 15 | 1 |  |
| 03 | 　UPRNAKUB | PIC'(1)9' |  | 16 | 1 |  |
| 03 | 　UPRNASKB | CHAR(1) |  | 17 | 1 | '6' なら CSV の取扱＝不要 |
| 03 | 　UPRNASCN | CHAR(9) |  | 18 | 9 |  |
| 03 | 　UPRNANIC | PIC'(7)9' |  | 27 | 7 |  |
| 02 | UPRNSPA2 | CHAR(7) |  | 34 | 7 |  |

## 付録G CORPOMAN（顧客法人管理マスター、120バイト）

| LV | 項目名 | 属性 | 繰返し | 位置 | 長さ | 本PGでの使用 |
|---|---|---|---|---|---|---|
| 02 | CORPVKEY | （集団項目） |  | 1 | 7 |  |
| 03 | 　CORPNICD | CHAR(7) |  | 1 | 7 | キー（荷主コード） |
| 02 | CORPAIX1 | （集団項目） |  | 8 | 7 |  |
| 03 | 　CORPTKCD | CHAR(7) |  | 8 | 7 |  |
| 02 | CORPAIX2 | （集団項目） |  | 15 | 7 |  |
| 03 | 　CORPZAND | CHAR(7) |  | 15 | 7 | CSV の集約コード |
| 02 | CORPATTN | PIC'(4)9' |  | 22 | 4 | CSV の扱い店 |
| 02 | CORPTKTN | PIC'(4)9' |  | 26 | 4 |  |
| 02 | CORPZDTN | PIC'(4)9' |  | 30 | 4 |  |
| 02 | CORPJGKB | CHAR(1) |  | 34 | 1 |  |
| 02 | CORPTKJG | CHAR(1) |  | 35 | 1 |  |
| 02 | CORPDLKB | CHAR(1) |  | 36 | 1 |  |
| 02 | CORPNINM | CHAR(42) |  | 37 | 42 |  |
| 02 | CORPCOKB | CHAR(1) |  | 79 | 1 |  |
| 02 | CORPDSTK | CHAR(1) |  | 80 | 1 |  |
| 02 | CORPWARI | FIXED DEC(3) |  | 81 | 2 |  |
| 02 | CORPNMKB | CHAR(1) |  | 83 | 1 |  |
| 02 | CORPSPAC | CHAR(14) |  | 84 | 14 |  |
| 02 | CORPPUDL | CHAR(1) |  | 98 | 1 |  |
| 02 | CORPPUMD | CHAR(6) |  | 99 | 6 |  |
| 02 | CORPJYCD | CHAR(6) |  | 105 | 6 |  |
| 02 | CORPTRMD | CHAR(4) |  | 111 | 4 |  |
| 02 | CORPUYMD | CHAR(6) |  | 115 | 6 |  |

- CORPOMAN の項目名の意味（ATTN＝扱い店、ZAND＝集約代表 等）は、CSV の見出しとソースのコメントからの推定である。
