プロジェクト

全般

プロフィール

レビュー指摘 #11952 » KS60630_詳細設計書.md

[参考資料]現行ソース解析資料AI作成版 - 幸塚 和久, 2026-10-15 05:10 午後

 

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
  1. 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 の見出しとソースのコメントからの推定である。
(2-2/3)