プロジェクト

全般

プロフィール

レビュー指摘 #11926 » KS60135_詳細設計書.md

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

 

KS60135 詳細設計書

項目 内容
プログラムID KS60135(ソース名 KS60135P)
プログラム名 請求明細 郵送用(対象店所)データ抽出
言語 PL/I(OPTIONS(MAIN))。パターン PPB0010P(ファイルのIO・SINGLE)
業務ID NSSQNN50(ソースの +DC GYOM)
起動JOB DAISEQ4J ステップ No.11(JCL コメント「エコデリバー用請求処理スタート」の直後)
作成日 2026/10/13
作成方法 ソースコードからのリバース作成

前提

  • INCLUDE の SQALLHED、SQALLDTB、SQALLDTC、SQALLDTD、SDPSQALA は、添付のソースを展開して解析した(付録A~E)。
  • ブラックボックス(BB)として扱うものはない。このプログラムは外部手続きの CALL も、マスターの参照も行わない。
  • JCL(DAISEQ4J)との対応は、10/13 にいただいた JCL による。
  • データIDの意味(01=計上、31=単品訂正 等)は、同じ入力を読む KS60144P の解析結果と、ソースのコメントによる。
  • このプログラムは帳票を出力しない。「印刷イメージ」として、SYSPRINT に出るメッセージのイメージ(6章)と、入出力データの対比イメージ(7章)を示す。
  • ★印は、ソースから読み取れる潜在的な問題点または注意点を示す。

1. 概要

1.1 機能

ソース先頭のコメント:「請求明細全送状データを読み、訂正分を除外して郵送用データを作成する。」

  1. TRYFILE(対象店所の一覧)を読み、対象店所コードの表を作る。
  2. ALLSQDT(請求明細の全データ)を先頭から読み、次の両方を満たすレコードだけを SQALLOK に書き出す。
    • 荷主の先頭レコードの配信店が、対象店所の表にある。
    • データIDが 31~33(訂正)ではない。
  3. レコードの内容は一切変えない(読んだレコードをそのまま書く)。
  4. 終了時に、入力件数・出力件数を SYSPRINT に表示する。

出力(WORK062S)は、後続の KS60144P(No.12)と KS60630P(No.29)の入力になり、エコデリバー(郵送)用の請求書と CSV の元データになる。

1.2 処理概要図

 ADG.ALTLIB(SEQTRYTN) ──▶ TRYFILE ─┐(対象店所コードの表 TBLTNCD)
                                   ▼
 WORK0620 ──▶ ALLSQDT ──▶  KS60135P  ──▶ SQALLOK ──▶ WORK062S
 (請求明細 全件)            │       (対象店所分・訂正除く)
                             ▼                │
                         SYSPRINT              ├──▶ No.12 KS60144P → No.13 KS60152P(エコデリバー請求書)
                       (件数メッセージ)        └──▶ No.29 KS60630P(請求書顧客CSV)

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

2.1 ファイル一覧

DD名 編成/属性(DCL) 入出力 内容 読込/書出領域
TRYFILE RECORD INPUT(順次) 入力 対象店所コードの一覧(パラメータメンバ) TRYAREA(80バイト:店所コード4桁+空白76)
ALLSQDT RECORD INPUT(順次・可変長) 入力 請求明細の全データ(見出し+明細) INAREA CHAR(560) VAR
SQALLOK RECORD OUTPUT(順次・可変長) 出力 抽出後の請求明細データ INAREA(読んだものをそのまま)
SYSPRINT - 出力 DISPLAY のメッセージ -

2.2 JCL との対応(DAISEQ4J No.11)

DD名 データセット DISP 属性 作成元/利用先
TRYFILE ADG.ALTLIB(SEQTRYTN) SHR PDS メンバ(80桁と推定) 運用で保守するパラメータ。JOB DAIMNT3J の ND53500P も同じメンバを使用
ALLSQDT TEMP.DAISEQ4J.WORK0620 SHR VB 作成:No.3 SORT(KS60130P の出力を並べ替え)。No.8 KS60144P も同じデータを読む
SQALLOK TEMP.DAISEQ4J.WORK062S (NEW,KEEP,DELETE) VB、BLKSIZE=12000、SPACE=(CYL,(300,100),RLSE)、DASD09 利用:No.12 KS60144P、No.29 KS60630P。削除:次回実行の No.10
SYSPRINT SYSOUT=* - - -
SYSUDUMP SYSOUT=* - - 異常終了時のダンプ
  • DD名 SQALLOK は、KS60144P の入力 DD 名と同じ名前である。KS60135P の出力をそのまま KS60144P の入力形式で作ることを表している。

2.3 複数ファイルの違い

このプログラムは入力2本・出力1本を扱う。とくに ALLSQDT と SQALLOK は同じ形式のファイルで、違いは「どのレコードが入っているか」だけである。

観点 TRYFILE ALLSQDT(入力) SQALLOK(出力)
役割 抽出条件(対象店所の一覧) 抽出元(全店所・全データ) 抽出結果(郵送用)
データセット ADG.ALTLIB(SEQTRYTN) WORK0620 WORK062S
レコード形式 80バイト(店所コード4桁+空白) VB(80・90・100・230・560バイトの5種類) ALLSQDT と同じ
レイアウト TRYAREA(ソース内定義) SQALLHED/SQALLDTB/SQALLDTC/SQALLDTD/SDPSQALA ALLSQDT と同じ(項目の値も変えない)
対象の店所 - 全店所 TRYFILE に載っている店所だけ
対象のデータID - すべて 31~33(訂正)を除くすべて
並び順 任意 配信店・請求先番号・データID 等の順(SORT 済み) ALLSQDT と同じ順(抜き出すだけ)
件数 対象店所数(最大100) 全件 ALLSQDT 以下
読み方 最初に全件を表に読む 1件ずつ順に読む 1件ずつ順に書く

ALLSQDT と SQALLOK の違いを、データIDごとにまとめると次のとおり(対象店所の荷主の場合)。

データID 内容(KS60144P の解析より) レイアウト 長さ SQALLOK への出力
00 見出し(請求先ごとの鑑・名称・住所) SQALLHED 560 出力する
01 送り状明細(計上) SQALLDTB 230 出力する
02 デパート回収計上 SDPSQALA 100 出力する(ソースコメントでは「未使用」)
21 送り状明細(単品付替) SQALLDTB 230 出力する
22 一括付替 SQALLDTC 80 出力する
31 送り状明細(単品訂正) SQALLDTB 230 出力しない
32 (KS60144P に定義なし) - - 出力しない
33 一括訂正 SQALLDTC 80 出力しない
45、55、65 POSメイト・CP使用料、FAXサービス、サポートⅡ SQALLDTD 90 出力する
95 検品料 SQALLDTB 230 出力する
  • 対象外の店所の荷主は、データIDに関係なくすべて出力しない。

3. データ定義

3.1 入力・出力エリア

名称 属性 内容
INAREA CHAR(560) VAR ALLSQDT の読込域。SQALLOK にもそのまま書く
INARA DEF INAREA:DUMMYA BIN(15)+SQALLHED 見出し(ID 00)として参照
INARB DEF INAREA:DUMMYB BIN(15)+SQALLDTB 送り状明細として参照(未使用)
INARC DEF INAREA:DUMMYC BIN(15)+SQALLDTC 一括付替・訂正として参照(未使用)
INARD DEF INAREA:DUMMYD BIN(15)+SQALLDTD POSメイト等として参照(未使用)
INARX DEF INAREA:DUMMYX BIN(15)+SDPSQALA デパート請求として参照(未使用。コメント「未使用」)
TRYAREA TRYTNCD PIC'(4)9'+TRYSPAC CHAR(76) TRYFILE の読込域(80バイト)
  • DUMMYx は可変長文字列 INAREA の長さ部(2バイト)に重なる。各 INCLUDE の1バイト目は、レコードのデータ部の1バイト目に対応する。
  • プログラムが参照する項目は、全レイアウトで共通の位置にある3項目だけである。そのため、どのデータIDのレコードも INARA(SQALLHED)の項目名で判定している。
位置 長さ 参照する項目名(SQALLHED) 他のレイアウトでの名前 属性 用途
1 4 SDTASHTN SDTBSEHT、SDTCSEHA、SDTDSEHA、SSALSEHA PIC'(4)9' 配信店。対象店所の判定
15 7 SDTASQNO SDTBSENO、SDTCSENO、SDTDSENO、SSALSENO FIXED DEC(13) 請求先番号。荷主の区切り
33 2 SDTADTID SDTBDTID、SDTCDDID、SDTDDDID、SSALDDID PIC'(2)9' データID。訂正の除外

3.2 ワークエリア

名称 属性 初期値 内容
EOF_SW BIT(1) '1'B ALLSQDT の終了で '0'B
TRY_SW BIT(1) '1'B TRYFILE の終了で '0'B
OUT_SW CHAR(1) - 'Y':処理中の荷主は対象店所/'N':対象外
SEQNO PIC'(13)9' 0 請求先番号13桁の作業域
SEQNO_DF DEF SEQNO - SEQ_ZERO PIC'9'(1桁目)+SEQ_NICD PIC'(7)9'(2~8桁目:荷主コード)+SEQ_SQNO PIC'(5)9'(9~13桁目:枝番)
BREAKA PIC'(7)9' 0 処理中の荷主コード(区切りの判定用)
II FIXED DEC(3) 0 表の検索用添字
ICNT FIXED DEC(9) 0 入力件数
OCNT FIXED DEC(9) 0 出力件数
CCNT FIXED DEC(9) 0 変更件数(一度も加算されない)
TRYCNT FIXED DEC(5) 0 対象店所の件数
TBLTNCD(100) PIC'(4)9' - 対象店所コードの表(最大100)
MS_SW CHAR(1) - 未使用

4. 処理フロー

開始
 ├─ ON ENDFILE(ALLSQDT) → EOF_SW='0'B、ON ENDFILE(TRYFILE) → TRY_SW='0'B
 ├─ OPEN ALLSQDT、TRYFILE、SQALLOK
 ├─ 【前処理】対象店所の表を作る
 │     TBLTNCD をクリア、TRYCNT=0
 │     TRYFILE を終わりまで読み、TBLTNCD(TRYCNT) に TRYTNCD を格納
 │     DISPLAY '<<< TRY TEN CODE = ' ∥ TBLTNCD(1)
 ├─ INAREA をクリアし、ALLSQDT を1件読む
 ├─ DO WHILE(ALLSQDT が終わるまで)              … 荷主の単位
 │     SEQNO ← SDTASQNO、BREAKA ← SEQ_NICD(荷主7桁)
 │     OUT_SW ← 'N'
 │     SDTASHTN が TBLTNCD(1~TRYCNT) にあれば OUT_SW ← 'Y'
 │     DO WHILE(終わっていない かつ 荷主が BREAKA と同じ)  … レコードの単位
 │         ICNT +1
 │         SDTADTID が 31~33 → 何もしない(訂正を除外)
 │         それ以外で OUT_SW='Y' → SQALLOK に INAREA を WRITE、OCNT +1
 │         ALLSQDT を1件読む、SEQNO ← SDTASQNO
 │     END
 │  END
 ├─ DISPLAY 入力件数・出力件数・変更件数
 ├─ CLOSE ALLSQDT、TRYFILE、SQALLOK
終了

5. 処理詳細

5.1 前処理(対象店所の表の作成)

  1. TBLTNCD = '' で表をクリアし、TRYCNT を 0 にする。
  2. TRYFILE を1件ずつ読み、終わるまで次を繰り返す。
    • TRYCNT +1
    • TBLTNCD(TRYCNT) ← TRYTNCD(読んだレコードの先頭4桁)
  3. DISPLAY('<<< TRY TEN CODE = '||TBLTNCD(1)) で、表の1件目だけを表示する。
  • ★ 表は100件分しかないが、件数の上限チェックがない。TRYFILE が101件以上あると、添字が範囲を超える(SUBSCRIPTRANGE は既定で無効のため、エラーにならず他の領域を壊す可能性がある)。
  • ★ TRYFILE が0件の場合、表示は TBLTNCD(1) のクリア後の値(0000 と推定)になり、出力は0件になる。
  • 店所コードが数字でない行(コメント行など)があると、PIC から PIC への代入で CONVERSION 条件が起きる可能性がある。ON CONVERSION の定義はないため、その場合は異常終了する。

5.2 主処理(荷主単位の抽出)

荷主の先頭レコードで行うこと

手順 内容
1 SEQNO ← SDTASQNO(パック13桁 → 数字13桁)
2 BREAKA ← SEQ_NICD(13桁の2~8桁目=荷主コード7桁)
3 OUT_SW ← 'N'
4 TBLTNCD(1)~TBLTNCD(TRYCNT) を先頭から調べ、SDTASHTN と一致すれば OUT_SW ← 'Y' として検索を終える

同じ荷主のレコードごとに行うこと(荷主コードが BREAKA と同じ間)

手順 内容
1 ICNT +1
2 SDTADTID ≧ 31 かつ ≦ 33 なら何もしない(ソースコメント「訂正データは送付用から除外」)
3 上記以外で OUT_SW = 'Y' なら WRITE FILE(SQALLOK) FROM(INAREA)、OCNT +1
4 ALLSQDT を1件読み、SEQNO ← SDTASQNO
  • 荷主の区切りは荷主コード7桁だけで判定する(枝番5桁と配信店は見ない)。同じ荷主の枝番違いは、1つのまとまりとして扱われる。
  • 出力するかどうか(OUT_SW)は、荷主のまとまりの先頭レコードの配信店だけで決まる。
  • 書き出すのは INAREA(可変長)そのものなので、レコード長・内容・並び順は入力と同じになる。
  • ★ 入力は「配信店→予備→請求先番号」の順に並んでいる。ある配信店の最後の荷主と、次の配信店の最初の荷主が同じ荷主コードだと、2つが1つのまとまりとして扱われる。このとき、後ろの配信店の分も前の配信店の判定(OUT_SW)で出力・非出力が決まる。
  • ★ 訂正(31~33)だけを除外し、見出しデータ(00)の鑑の金額はそのまま出力する。見出しの請求額に訂正分が含まれている場合、後続の請求書で「鑑の請求額」と「明細の合計」が一致しなくなる可能性がある(要確認)。

5.3 終了処理

  1. 次の3行を DISPLAY する(6章)。
    • <<< INPUT COUNT = ∥ ICNT
    • <<< OUTPUT COUNT = ∥ OCNT
    • <<< CHANGE COUNT = ∥ CCNT
  2. 3ファイルを CLOSE する。
  • ICNT は ALLSQDT の全件数(対象外の店所・訂正も含む)。
  • ★ CCNT はどこでも加算されないため、常に 0 が表示される。

6. 印刷イメージ(SYSPRINT のメッセージ)

帳票は出力しない。SYSPRINT(SYSOUT=*)に次の4行が出る。7章の例の場合のイメージ:

<<< TRY TEN CODE = 1001
<<<  INPUT COUNT =           16
<<< OUTPUT COUNT =            9
<<< CHANGE COUNT =            0
メッセージ 内容 留意点
<<< TRY TEN CODE = nnnn 対象店所の表の1件目 2件目以降は表示されない。件数も表示されない
<<< INPUT COUNT = n ALLSQDT の読込件数 対象外・訂正を含む全件
<<< OUTPUT COUNT = n SQALLOK の書出件数
<<< CHANGE COUNT = n 変更件数 常に 0(未使用のカウンタ)
  • 件数(FIXED DEC(9))は、文字列への変換規則により右詰めの数字列(前に空白が付く)で表示される。空白の数は変換規則によるもので、イメージは目安である。
  • 確認方法:INPUT COUNT − OUTPUT COUNT = 対象外の店所の件数 + 対象店所の訂正(31~33)の件数 となる。

7. 入出力データの対比イメージ

7.1 例の条件

  • TRYFILE:1001、1305 の2件(対象店所は 1001 と 1305)
  • ALLSQDT:配信店 1001、1002、1305 のデータ 16件

7.2 TRYFILE のイメージ(80バイト)

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
1001
1305
  • 先頭4桁だけを使う。5~80桁目(TRYSPAC)は見ない。

7.3 ALLSQDT(入力)と SQALLOK(出力)の対比

No 配信店 請求先番号 データID 内容 レイアウト/長さ 判定 SQALLOK
1 1001 1234567-00001 00 見出し SQALLHED/560 荷主 1234567 の先頭。1001 は対象 → OUT_SW='Y' ○ 1件目
2 1001 1234567-00001 01 送り状明細(計上) SQALLDTB/230 対象・訂正でない ○ 2件目
3 1001 1234567-00001 01 送り状明細(計上) SQALLDTB/230 同上 ○ 3件目
4 1001 1234567-00001 21 単品付替 SQALLDTB/230 同上 ○ 4件目
5 1001 1234567-00001 31 単品訂正 SQALLDTB/230 訂正のため除外 ×
6 1001 1234567-00002 00 見出し(枝番違い) SQALLHED/560 荷主コードが同じなので同じまとまり ○ 5件目
7 1001 1234567-00002 33 一括訂正 SQALLDTC/80 訂正のため除外 ×
8 1001 2345678-00000 00 見出し SQALLHED/560 荷主 2345678 の先頭。1001 は対象 ○ 6件目
9 1001 2345678-00000 22 一括付替 SQALLDTC/80 対象・訂正でない ○ 7件目
10 1002 3456789-00000 00 見出し SQALLHED/560 荷主 3456789 の先頭。1002 は対象外 → OUT_SW='N' ×
11 1002 3456789-00000 01 送り状明細 SQALLDTB/230 対象外 ×
12 1002 3456789-00000 45 POSメイト等 SQALLDTD/90 対象外 ×
13 1305 4567890-00000 00 見出し SQALLHED/560 荷主 4567890 の先頭。1305 は対象 ○ 8件目
14 1305 4567890-00000 95 検品料 SQALLDTB/230 対象・訂正でない ○ 9件目
15 1305 4567890-00000 31 単品訂正 SQALLDTB/230 訂正のため除外 ×
16 1305 4567890-00000 32 (定義なし) - 31~33 のため除外 ×
  • 入力 16件 → 出力 9件(対象外の店所 3件、訂正 4件を除外)。6章のメッセージはこの件数。
  • 出力の各レコードは、入力のレコードとバイト単位で同じ(長さも同じ)。並び順も入力の順のまま。

7.4 ★ 配信店の境目で荷主コードが同じ場合

No 配信店 請求先番号 データID 判定 SQALLOK
1 1001 5678901-00000 00 荷主 5678901 の先頭。1001 は対象 → OUT_SW='Y' ○
2 1001 5678901-00000 01 対象 ○
3 1002 5678901-00000 00 荷主コードが同じため区切られない。OUT_SW は 'Y' のまま ○(本来は対象外)
4 1002 5678901-00000 01 同上 ○(本来は対象外)
  • 逆に、前の配信店が対象外で後ろの配信店が対象の場合は、後ろの分が出力されない。
  • 同じ荷主が複数の配信店に存在し得るかどうかは、運用の確認が必要である。

8. メッセージ一覧

No メッセージ 出力先 契機
1 <<< TRY TEN CODE = ∥ 店所コード SYSPRINT(DISPLAY) 前処理の終了時
2 <<< INPUT COUNT = ∥ 件数 同上 終了時
3 <<< OUTPUT COUNT = ∥ 件数 同上 終了時
4 <<< CHANGE COUNT = ∥ 件数 同上 終了時(常に 0)

9. 異常処理

事象 検出 処理
TRYFILE の終了 ENDFILE 条件 TRY_SW='0'B で表の作成を終える(正常)
ALLSQDT の終了 ENDFILE 条件 EOF_SW='0'B でループを終える(正常)
TRYFILE が0件 なし 表が空のまま進み、出力0件で正常終了する
ALLSQDT が0件 なし 出力0件で正常終了する
TRYFILE が101件以上 なし ★ 添字範囲外の書込み(結果は不定)
店所コードが数字でない CONVERSION 条件(の可能性) ON 定義なし → 異常終了(SYSUDUMP)
その他の入出力エラー - ON ERROR の定義なし → PL/I 標準のエラー処理(異常終了)
リターンコード - 設定なし(正常時は 0)

10. 留意事項(★)

  1. TRYFILE の件数上限:100件を超えるとチェックなしで表の範囲を超える。
  2. 荷主の区切りが荷主コード7桁だけ:配信店が変わっても荷主コードが同じなら区切られず、前の配信店の判定が引き継がれる(7.4)。
  3. 訂正除外による金額の不一致の可能性:明細の訂正(31~33)は除外するが、見出しデータ(00)の鑑の金額は変えない。後続の請求書で鑑の請求額と明細合計がずれる可能性がある。KS60144P(No.12)の総合計は明細から集計するため、明細側の合計は訂正を含まない。
  4. データID 32:31~33 の範囲で除外しているが、KS60144P では 32 の扱いがない。範囲指定のため、将来 32 を別用途に使うと意図せず除外される。
  5. CHANGE COUNT は常に 0:CCNT は宣言・表示のみ。
  6. TRY TEN CODE の表示は1件目だけ:対象店所の件数や2件目以降は確認できない。
  7. ND53500P と同じパラメータメンバ:SEQTRYTN は JOB DAIMNT3J の ND53500P でも使われている。メンバを変更すると両方に影響する。
  8. KS60151P の ALTFILE とは別のメンバ:KS60151P は SEQPRTNC(自店出力の店所)、本プログラムは SEQTRYTN(郵送対象の店所)を使う。名前が似ているが用途が異なる。

11. 未使用項目

項目 内容
INARB、INARC、INARD、INARX 各レイアウトの重ね定義(項目は1つも参照しない。共通位置の3項目を INARA の名前で参照)
SQALLHED の SDTASHTN、SDTASQNO、SDTADTID 以外の全項目 参照なし
SEQ_ZERO、SEQ_SQNO SEQNO の分解項目のうち、荷主コード以外
CCNT 加算なし(表示のみ)
MS_SW 宣言のみ
TRYSPAC TRYFILE の5~80桁目
BUILTIN の ADDR、SUBSTR、HIGH、LOW、LENGTH、STRING、VERIFY、UNSPEC 宣言のみ

付録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桁目)で区切り判定
02 SDTASPA1 CHAR(11) 22 11
02 SDTADTID PIC'(2)9' 33 2 データID:31~33 を除外
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
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 (SDTASHTN として参照)
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 (SDTASHTN として参照)
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メイト・FAXサービス・サポートⅡ等、データID 45・55・65、90バイト)

LV 項目名 属性 繰返し 位置 長さ 本PGでの使用
02 SDTDSEHA PIC'(4)9' 1 4 (SDTASHTN として参照)
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 (SDTASHTN として参照)
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
(2-2/3)