プロジェクト

全般

プロフィール

レビュー指摘 #11919 » KS60151_詳細設計書 (1).md

[参考資料]現行ソース解析資料 - 幸塚 和久, 2026-10-14 05:52 午後

 

KS60151 詳細設計書

項目 内容
プログラムID KS60151(ソース名 KS60151P)
プログラム名 新請求書 電子帳票配信(特積用)
言語 PL/I(OPTIONS(MAIN))
起動JOB DAISEQ4J ステップNo.9
作成日 2026/10/09(2026/10/13 6.5 控え/送付用の違いを追加)
作成方法 ソースコードからのリバース作成

前提

  • INCLUDEメンバーのうち、以下は添付ソースを展開して解析した。
    • SQHAIDAA/SQHAIDAB/SQHAIDAC/SQHAIDAD(ご指示の SQHADAA~SQHADAD に相当。請求明細印刷データのレコード型)
    • DDPTENMS(店所マスター)
    • BANKMAST(銀行マスター)
    • SSYUPRNT(優先印刷マスター。添付があったため併せて展開)
  • 外部サブルーチン LKN0010 はソースがないため、ブラックボックス(BB)として扱う。
    • 引数(店所CD → 集約店所CD)の意味は、呼出し側の使い方から推定した。
  • 印刷イメージ(6章)の値はすべて架空のサンプルである。桁位置は、ソースの出力レコード定義から機械的に算出しており、正確である。
  • ★印は、ソースから読み取れる潜在的な問題点または注意点を示す。

1. 概要

1.1 機能

  • 請求明細印刷データ(SQHAIDA)を読み込み、新書式の請求書(1ページ50行、プレ印刷帳票)を編集して、2系統のSYSOUTに出力する。出力先は電子帳票(A-SPOOL)である。
    • OUTFILE(控え):全件を出力する。
    • OUTFIL2(送付用):明細不要顧客(優先印刷マスターの UPRNASKB='6')を除いて出力する。
  • 1行目に出力用店所CD(OT1TNCD)を埋め込み、A-SPOOL側での振分けキーにする。
    • 送付用では、集約店所の店所CD(LKN0010 で取得)に置き換える。
    • 置き換えないケース:自店出力店所(ALTFILE に登録された店所)、および優先印刷顧客で自店所出力の顧客。
  • 鑑部:請求金額、顧客住所、荷主名、発行店(店所マスター)、振込銀行(銀行マスター)を編集する。
  • 明細部:送り状単位の運賃・料金を印字する。検品料明細は専用の書式で上書きする。
  • 合計部:ページ小計、区分計、総合計を印字する。
  • 2008/09/20以降の請求(期間至 > 080919)では、サーチャージ(転嫁料)の見出しを印字する。

1.2 処理概要図

 ADG.ALTLIB(SEQPRTNC) ─┐(自店出力店所テーブル)
                       ▼
 SQHAIDA(WORK0635) ─▶ KS60151 ─┬─▶ OUTFILE  SYSOUT=(E,KS601511,99) 控え(全件)
                       ▲  ▲  ▲  └─▶ OUTFIL2  SYSOUT=(E,KS601512,99) 送付用
          VKTENMS ─────┘  │  │
          VKBANKM ────────┘  │       LKN0010(BB:集約店所CD取得)
          VKSYUPR ───────────┘

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

2.1 ファイル一覧

DD名 編成/属性 入出力 内容 レコード
ALTFILE 順次 RECORD INPUT 入力 自店出力店所テーブル(JCL:ADG.ALTLIB(SEQPRTNC)) ALTAREA 80バイト(先頭4バイト=店所CD)
SQHAIDA 順次 RECORD INPUT(可変長) 入力 請求明細印刷データ(JCL:WORK0635) INAREA CHAR(466) VAR。A~D型
VKTENMS VSAM KSDS KEYED DIRECT 入力 店所マスター DDPTENMS 170バイト。キー=店所CD 4桁
VKBANKM VSAM KSDS KEYED DIRECT 入力 銀行マスター BANKMAST 200バイト。キー11桁=銀行CD 7桁+店所CD 4桁
VKSYUPR VSAM KSDS KEYED DIRECT 入力 優先印刷マスター SSYUPRNT 40バイト。キー=荷主CD 7桁
OUTFILE 順次 OUTPUT ENV(CTLASA) 出力 請求書 控え 133バイト(ASA制御文字+132桁)
OUTFIL2 順次 OUTPUT ENV(CTLASA) 出力 請求書 送付用 同上
SYSPRINT - 出力 DISPLAY メッセージ -

2.2 JCL対応(DAISEQ4J No.9)

DD JCL指定(要旨) 備考
SQHAIDA WORK0635 前ステップで作成された請求明細印刷データ
ALTFILE ADG.ALTLIB(SEQPRTNC) 店所CDテーブル(最大100件)
OUTFILE SYSOUT=(E,KS601511,99) 控え。ライター名 KS601511
OUTFIL2 SYSOUT=(E,KS601512,99) 送付用。ライター名 KS601512
MDMIKAN 等 - プログラム内に宣言なし。LKN0010(BB)が使用するものと推定

2.3 外部ルーチン

名称 呼出し 引数 推定機能
LKN0010(BB) CALL LKN0010(SQHATNCD, MISYU_TC) IN:店所CD PIC 4桁/OUT:MISYU_TC PIC'(4)9' 店所CDから集約(未収)店所CDを取得する
  • 呼出し条件:見出し1の処理で、店所マスターのキャッシュが入れ替わった(店所CDが前回と異なる)とき、かつ当該店所が ALTFILE テーブルに存在しないとき。

3. データ定義

3.1 入力レコード(SQHAIDA)の型

  • 全型で共通の位置にキー部がある:年月、店所、連番、頁、行、DTID、SKIP、NEW(NPAG/NLIN/NSKP)。
  • 処理の振分けには NLIN(新行番号) と DTID(データID) を使う。
型 INCLUDE DTID 用途 長さ
A SQHAIDAA 5 見出し1(荷主・期間・税区分等) 59
B SQHAIDAB 6 見出し2(鑑:金額・住所・名称・銀行) 466
C SQHAIDAC 0 明細(送り状) 138
D SQHAIDAD 3/9 計(ページ小計・区分計・総合計) 88
  • 各型は、可変長レコード INAREA に DEF で重ねて参照する。
  • 長さは、各型の全項目の合計バイト数である(lay計算、パック10進は p/2+1 バイト)。
  • レイアウトの詳細は付録B~Eを参照。

3.2 マスター

マスター 使用項目 用途
DDPTENMS VETNHTCD, VETNSRNM, VETNADNM, VETNPSNA/PSNB, VETNTLNO 1行目の店略称、鑑の発行店住所・〒・TEL
BANKMAST VBNKNAMG, VBNKSNMG 振込銀行名・支店名(漢字)
SSYUPRNT UPRNNICD, UPRNASKB 明細不要('6')/自店所出力(' ')の判定

3.3 主要ワーク

名称 属性 初期値 内容
EOF_SW BIT(1) '1'B SQHAIDA 終了で '0'B
VS_SW BIT(1) '1'B VSAM READ 成否(ON KEY で '0'B)
ENDSW / TABCNT BIT / BIN(15) '1'B / 0 ALTFILE 読込制御・件数
TAB_PRTN(100) CHAR(4) - 自店出力店所テーブル
PRTN_FLG CHAR(1) - '1':自店出力店所(ALTFILE に該当)
JITN_FLG CHAR(1) - '1':優先印刷顧客で自店所出力
OUT_SW CHAR(1) なし '1':送付用にも出力/'0':控えのみ
MISYU_TC PIC'(4)9' - LKN0010 の戻り(集約店所CD)
TAX_KB1 / TAX_KB2 PIC'9' 0 / 0 SQHAZKKB / SQHAZKK1(税区分)
KARI_KB PIC'9' 1 SQHAKMKB(1:本締、他:仮締)
TENK_FLG CHAR(1) - '1':サーチャージ表示対象(期間至 > 080919)
MOTCYA_WK CHAR(1) '0' 直前明細の元着区分(元払計/着払計の見出し判定)
LINE_CNT FIXED DEC(3) 50 ページ内の現在行
WKP_SQNO SQNO_1_7 + SQNO_8_5 - SQHASQNO を荷主7桁+枝番5桁に分解
WK_JKA CHAR(126) - 住所・名称の連結編集ワーク
BANKWK CHAR(48) - 銀行行の編集ワーク(POS DEF 多数)
SPACE CHAR(133) 空白 空行出力用

3.4 出力レコード

  • 133バイトの印字行構造は、次のとおりである。
    • OUT_1, OUT_2, OUT_4~OUT_12, OUT_10_2~OUT_12_2(2ページ目以降)
    • MIDK_1/2, MID_SUR1/2, MID_KGO(見出し)
    • MEISAI, KNP_MEISAI(明細)
    • KEI, KNP_KEI(計)
  • 項目ごとの位置は付録Aを参照。

4. 処理フロー

開始
 ├─ ON条件設定(ENDFILE(SQHAIDA)、KEY(VKTENMS/VKBANKM/VKSYUPR))
 ├─ OPEN(全ファイル)
 ├─ 前処理:ALTFILE を全件読込 → TAB_PRTN(1..100)
 │     101件目以降は DISPLAY して打切り
 ├─ SQHAIDA 初回READ
 │     SQHAEYMD > 190610 なら OT2KOME(西暦表示の案内文)を空白にする
 ├─ DO WHILE(EOF_SW)
 │     SELECT(SQHANLIN)
 │      ├ 00 ─┬ DTID=5 → 5.2 見出し1(1~2行目)
 │      │     ├ DTID=6 → 5.3 見出し2(4~12行目+13~14行目)
 │      │     └ その他 → 無視
 │      ├ 90,98 → DTID=3 のとき 5.6 検品計
 │      ├ 91,99 → DTID=3(91/99)、DTID=9(99)のとき 5.5 通常計
 │      └ その他 → DTID=0 のとき 5.4 明細行
 │     SQHAIDA READ
 ├─ CLOSE(全ファイル)
終了
  • 出力は、すべて「OUTFILE に WRITE → OUT_SW='1' なら同じ行を OUTFIL2 にも WRITE」の組で行う(以下「両出力」と記す)。

5. 処理詳細

5.1 前処理

  1. ALTFILE を READ し、ALT_PRTN(先頭4バイト)を TAB_PRTN(TABCNT) に格納する。これを ENDFILE まで繰り返す。
  2. TABCNT が101に達したら、!!! TABL OVER LAST PRTN =>+TAB_PRTN(100) を DISPLAY して読込を打ち切る。
    • ★ この時点で TABCNT=101 のままになる。後続の DO II=1 TO TABCNT が TAB_PRTN(101) を参照し、範囲外アクセスになる(SUBSCRIPTRANGE は無効が既定)。
  3. ALTFILE は、メインの OPEN 文に含まれたうえで再度 OPEN される(既オープンのため実害なし)。前処理後に CLOSE され、終了時の CLOSE にも含まれている。
  4. SQHAIDA を初回 READ する。SQHAEYMD > 190610 なら、OT2KOME(2行目の「19年05月分より西暦表示」の案内)を空白にする。
    • 判定は先頭レコードのみで行う。
    • ★ SQHAIDA が0件の場合、INAREA は未設定のまま比較される(実害は小さい)。

5.2 見出し1(NLIN=00, DTID=5)

手順 処理
1 LINE_CNT=0。OUT_1 をクリアし、OT1ASA='1'(改ページ)にする。WK_SQNO=SQHASQNO とする(→ SQNO_1_7 荷主CD、SQNO_8_5 枝番)。
2 優先印刷マスター:SYUKEY=SQNO_1_7 が UPRNNICD と異なる場合のみ以下を行う。
・OUT_SW='1'、JITN_FLG='0' にして VKSYUPR を READ する。
・該当ありで UPRNASKB='6' → OUT_SW='0'(明細不要顧客。送付用に出力しない)。
・該当ありで UPRNASKB=' ' → JITN_FLG='1'(自店所出力)。
3 OT1NICD=荷主CD。OT1SQNO=枝番(99999 の場合は '-----')。
4 本締(SQHAKMKB=1)なら OT1KAS1/2 は空白、仮締なら '('/')' で枝番を括る。
5 店所マスター:TENKEY=SQHATNCD が VETNHTCD と異なる場合のみ以下を行う。
・VKTENMS を READ する。該当なしなら VETNSRNM=' ??? '。
・PRTN_FLG='0' にし、TAB_PRTN(1..TABCNT) に SQHATNCD があれば PRTN_FLG='1'。
・PRTN_FLG='0' なら CALL LKN0010(SQHATNCD, MISYU_TC)。
6 OT1ATNM=VETNSRNM(店略称)。OT1TNCD=SQHATNCD(A-SPOOL 振分用)。
7 月:SQHAEYMD=250105 なら OT1MMM='01'、それ以外は SQHAYYMM の先頭2桁。
8 OUT_SW='0' なら OT1MHKB='#'(控えに明細不要の目印)。
9 期間:SQHASYMD/SQHAEYMD を YY・MM・DD に分解し、OT1SYY/SMM/SDD、OT1EYY/EMM/EDD に設定する(西暦下2桁のまま)。
10 OT1PAGE=SQHANPAG。
11 OUTFILE に OUT_1、OUT_2 を WRITE する。LINE_CNT=2。
12 OUT_SW='1' の場合:PRTN_FLG='0' かつ JITN_FLG='0' なら OT1TNCD=MISYU_TC に置き換え、OUTFIL2 に OUT_1、OUT_2 を WRITE する。
13 TAX_KB1=SQHAZKKB、TAX_KB2=SQHAZKK1、KARI_KB=SQHAKMKB とする。SQHAEYMD > 080919 なら TENK_FLG='1'、それ以外は空白。
  • ★ 手順2・5は、キャッシュキーが同じ場合に READ を省略する。この場合、OUT_SW/JITN_FLG/PRTN_FLG/MISYU_TC は前回の値を引き継ぐ。
    • 先頭レコードでは、UPRNNICD/VETNHTCD が未初期化のまま比較される。
    • 万一一致した場合は、OUT_SW 未設定のまま進む(通常は起こらない)。
  • ★ 手順12の置換は OUT_1 を直接書き換える。OUTFILE へは書込み済みのため影響はない。

5.3 見出し2(NLIN=00, DTID=6)

5.3.1 1ページ目(SQHBNPAG ≦ 1)

行 編集内容
3 空行
4 〒:SQHBYUNN(7桁)が有効なら 'NNN-NNNN'、それ以外は SQHBYUNO(旧5桁)で編集する。ご請求額=本締なら SQHBUNTI+RYOK+TTAX+HOKR、仮締なら0(ゼロサプレスで空白印字)。
5~8 左 顧客住所:JS_EDIT_SUB_RTN(5.7.1)で JKA1~3 を連結し、28バイト×4行に分割する。8行目が空なら1行下げる。
6 右 発行店名 SQHBHTEN。'(営)' は '営業所' に置換する。
7 鑑金額:運賃、料金、小計、消費税、保険料、合計、サーチャージ(TENK_FLG='1' のとき)。仮締ならすべて0。7行目右に店〒(VETNPSNA-VETNPSNB)。
8~10 右 店住所:VETNADNM の 2~23、24~45、46~67 バイト目を各行に印字する。
10~12 左 荷主名:NM_EDIT_SUB_RTN(5.7.2)で28/28/16バイトに分割する。名称先頭が X'0E' の場合のみ SO/SI を付加する。
10~11 中 振込銀行(5.3.3)
11 右 TEL:店所1301 は '03(3649)8167' を固定印字、それ以外は VETNTLNO。SQHBTKB3=1 なら振込区分 '*'。
12 '℡'+顧客電話番号 SQHBDTEL
  • 4~12行目を両出力し、LINE_CNT=12 とする。
  • 店所マスターは SQHBTNCD で再確認し、VETNHTCD と異なれば READ する。

5.3.2 2ページ目以降(SQHBNPAG > 1)

  • 3~9行目は空行(7行)とする。
  • 10~12行目は OUT_10_2~OUT_12_2 に荷主名のみを印字する。この場合は SO/SI を常に付加する。
  • LINE_CNT=12。
  • ★ 1ページ目(名称先頭が X'0E' のときのみ SO/SI を付加)と扱いが異なる。半角名称の場合、2ページ目以降では前後に SO/SI が入る。

5.3.3 振込銀行の編集(10~11行目)

  • 銀行マスターキー=SQHBBANK(7桁)+SQHBTNCD(4桁)。2行目は SQHBBAN1+SQHBTNCD で検索する。
  • 該当なしの場合、銀行名は空白のまま(メッセージなし)。
  • 銀行名=VBNKNAMG+VBNKSNMG(漢字)。SO/SI 込みの長さ I で配置を決める。
登録数 10行目 11行目
1行(SQHBBAN1=0) 銀行名 口座種別(1:普通/2:当座)+'口座番号'+口座番号7桁
2行 銀行1:名称+種別+'口座№'+番号 銀行2:同左
  • 2行時の配置は、名称長 I により4パターンある(I < 25、< 29、< 31、それ以上)。名称が長いほど、種別・番号を右へずらすか短縮表記にする。

5.3.4 13~14行目

条件 13行目 14行目
SQHBKENP=1(検品あり) MIDK_1(検品見出し) MIDK_2
上記以外、TENK_FLG='1' 空行 MID_SUR1('サーチャージ'、印字桁78)
上記以外 空行 空行
  • LINE_CNT=14。

5.4 明細行(NLIN=その他, DTID=0)

印字項目 編集
送り状番号 SQHCOKNO 11桁を '#####-######'
元着 SQHCMCKB 1:'元'、2:'着'(MOTCYA_WK に保存)
月日 SQHCMMDD 'MMDD'
地名/名称 SQHCCHNM 12バイト/SQHCSHNM 14バイト
個数・重量 SQHCKOSU, SQHCJRYO
運賃 下表(税区分)参照
集配料・航送料・転嫁料・その他・保険・立替・割引 SQHCSHUH, KOSO, DAIB, SONN, HOKN, TATE, WARI
税 SQHCZIKN(税区分により0)
合計 運賃+各料金+税(税区分により)
区分・店・備考 SQHCTSKB, SQHCTENS, SQHCBIKO
  • 負値は '-' 付きピクチャーの DEF 重ねで編集する。

税区分による編集:

TAX_KB2 TAX_KB1 運賃欄 税欄 合計
1 - SQHCUNCN 0 税を含まない
≠1 0 SQHCUNCN SQHCZIKN 税を含む
≠1 ≠0 SQHCUNCN+SQHCZIKN 0 税を含む

備考欄の加工:

  • 既定:店欄=SQHCTENS、備考欄=SQHCBIKO の1~5バイト目。
  1. SQHCBIKO(9,4)='KKKK' の場合(軽油引取税転嫁分の表示):店欄=BIKO(1,4)、備考欄=BIKO(5,4)。
    • ★ 前工程が 'KKKK' 書式で備考を設定している前提である。KS60144 系の書式と一致しない値は、通常の備考として扱われる(クロスチェック要)。
  2. 上記以外で、備考≠空白、区分=空白、かつ検品明細でない場合:
    • BIKO(8,4)='着' → 'チヤク '、BIKO(6,6)='必着' → 'ヒツチヤク ' に置換する。
    • 区分欄=BIKO(1,2)、店欄=BIKO(3,4)、備考欄=BIKO(7,4) に分けて印字する。
    • ★ 入力の SQHCBIKO 自体を書き換える(後続処理への影響はない)。

検品明細(SUBSTR(SQHCSHNM,14,1)='~' かつ SQHCMCKB=2):

  • 元着欄は '検' とする。
  • KNP_MEISAI を重ねて '運送送状⇒'、TEL(SQHCTELN)+備考(10,3)、GOKEI1/GOKEI2(その他料金の合計等)を印字する。
  • 重ねていない桁は、通常明細の値がそのまま残る。

明細を両出力し、LINE_CNT+1 とする。

5.5 通常計(NLIN=91/99)

対象:(91,DTID=3) ページ小計、(99,DTID=3) 区分計/元着計、(99,DTID=9) 総合計。

TENK_FLG='1'(2008/09/20以降)の場合:

  1. LINE_CNT < 47 なら、空行を (SQHDNSKP−1) 行出力する(47行目まで送る)。
  2. LINE_CNT < 48 なら、48行目に MID_SUR2('サーチャージ'、印字桁72)を出力し、LINE_CNT=48 とする。
  3. ページ小計(49行目):KEI_SQKB に区分表示 SQHDSQKB を設定する(PKBN='1' の場合を除く)。
  4. 区分計/総合計(50行目):KEI_HED に7章の見出しを設定する。
  5. 金額は明細と同じ税区分ルールで設定し、KEI を両出力する。LINE_CNT+1。

TENK_FLG≠'1'(旧請求)の場合:

  • 48行目まで空行を送り、48/49行目に計を印字する(旧レイアウト。サーチャージ見出しなし)。

注意:

  • KEI の各金額欄は、MEISAI より桁が広く、1~2桁右にずれている(付録A参照)。
  • ★ DTID=1/2(元払計・着払計)のレコードは、どの分岐にも該当せず印字されない。KS60144 設計書 6.7 の印刷イメージ(元払計/着払計を印字)とは整合しない。

5.6 検品計(NLIN=90/98, DTID=3)

  1. LINE_CNT < 47 なら、空行を (SQHDNSKP−1) 行出力する。
  2. LINE_CNT < 48 なら、48行目に MID_KGO(検品料の合計見出し)を出力し、LINE_CNT=48 とする。TENK_FLG に関係なく出力する。
  3. 98(検品合計):
    • LINE_CNT < 49 なら空行を出力し、LINE_CNT=49 とする(ページ計行をスキップ)。
    • KKEI_HED='検品料 計' を設定する。
  4. 90(ページ小計):KEI_SQKB='検品料' を設定する。
  5. KNP_KEI の重ね定義で、個数・重量・その他・税・合計を設定する。
TAX_KB1 TAX_KB2 その他欄 税欄 合計
0 1 SONN 0 SONN+HOKN+SONT+WARI
0 ≠1 SONN ZIKN 上記+ZIKN
≠0 1 SONN 0 SONN+HOKN+SONT+WARI
≠0 ≠1 SONN+ZIKN 0 上記+ZIKN
  • 運賃等は KS60140P 側で「その他」に集約済み(ソースのコメントより)。
  • KEI を両出力し、LINE_CNT+1 とする。

5.7 サブルーチン

5.7.1 JS_EDIT_SUB_RTN(顧客住所 5~8行目)

  1. SQHBJKA1~3 を、2バイト文字単位の配列(JKA1_WK(16)/JKA2_WK(18)/JKA3_WK(25))として走査する。
  2. 空白で区切り、30バイト以内のセグメントを WK_JKA に連結する。
  3. 28バイト×4行(O5~O8)に割り付ける。8行目が空なら1行下げる。
  • ★ 住所が長い場合、4行に収まらない部分は切り捨てられる。

5.7.2 NM_EDIT_SUB_RTN(荷主名 10~12行目)

  1. HEAD(法人格 6バイト)+NAME1(40)+空白2+NAME2 の44~63バイト目を WK_JKA に連結する。
  2. 空白位置で30バイト以内に分割し、X/Y/Z(各行の終端位置)を求める。
  3. 28/28/16バイトの3行に割り付ける。
  4. 2行目・3行目が空の場合は、下へ寄せる(シフト)。
  • ★ 半角カナ名称で空白が1つの場合、区切り位置が1文字ずれる。
  • ★ 3行目は16バイトしかないため、最大14バイトが切り捨てられることがある。

6. 帳票仕様(印刷イメージ)

6.1 ページ構成(新書式・1ページ50行)

行 内容 出力レコード
1 荷主CD・枝番、店略称、店所CD、月、明細不要マーク、期間、頁(ASA '1') OUT_1
2 西暦表示の案内(190610 以前のみ) OUT_2
3 空行 SPACE
4 〒、ご請求額 OUT_4
5~8 顧客住所 / 6行目右:発行店名 / 7行目:鑑金額・店〒 OUT_5~OUT_8
8~10 右 店住所 OUT_8~OUT_10
10~12 荷主名 / 10~11行目:振込銀行 / 11行目右:TEL・振込区分 / 12行目:℡ OUT_10~OUT_12
13~14 検品見出し、またはサーチャージ見出し MIDK_1/2・MID_SUR1
15~47 明細(最大33行) MEISAI・KNP_MEISAI
48 合計見出し(サーチャージ、または検品料) MID_SUR2・MID_KGO
49 ページ小計 KEI・KNP_KEI
50 区分計・総合計 KEI・KNP_KEI

6.2 印刷イメージ(1ページ目)

  • 左端の「行 |」はイメージ用の行番号であり、印字されない。
  • ルーラーは印字桁(ASA制御文字を除いた1~132桁)である。
  • 全角文字は2桁、SO/SI は1桁の空白として表示している。
行 |----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3--
 1 | 1234567   00001  テスト支店   1001              10                                            26 09 01      26 09 30            1
 2 |
 3 |
 4 |   123-4567                                                              2,750
 5 |
 6 |   東京都千代田区                                                                                               テスト支店
 7 |   架空町一丁目2番3号                            2500             2500     250             2750         〒 100-0005
 8 |   サンプルビル5階                                                                                       東京都架空区サンプル町
 9 |                                                                                                          1丁目1番1号
10 |                                                サンプル銀行 本店
11 |   (株)サンプル商事                                                 普通  口座番号 1234567                   TEL:03-0000-0000
12 |                     ℡ 0000-00-0000
13 |
14 |                                                                             サーチャージ
15 |12345-678901 元 0901 札幌市中央 サンプル シヨウテン       2    15    1500                           150                      1650  0101
16 |12345-678902 着 0905 大阪市北区 テスト シヨウジ         1     8    1200   300                     150                      1650  0101
17 |                0910* 一括付替 *                             -500                           -50                      -550  0101
   |                    (明細行。新書式で最大33行:15~47行目)
47 |
48 |                                                                       サーチャージ
49 |                                        3     23     2200    300                         250                          2750
50 |                        送り状合計      3     23     2200    300                         250                          2750

6.3 印刷イメージ(2ページ目以降)

行 |----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3--
 1 | 1234567   00001  テスト支店   1001              10                                            26 09 01      26 09 30            2
 2 |
 3 |
 4 |
 5 |
 6 |
 7 |
 8 |
 9 |
10 |
11 |   (株)サンプル商事
12 |
13 |
14 |                                                                             サーチャージ
   |                    (15行目以降は1ページ目と同じ)

6.4 帳票の留意点

  • プレ印刷帳票を前提としている。項目名(「運賃」「合計」など)の大半はプログラムでは印字しない(枠・見出しは用紙に印刷済み)。
  • 仮締の場合、鑑の金額は0となり、ゼロサプレスで空白印字される。枝番は括弧付きになる。
  • 控え(OUTFILE)と送付用(OUTFIL2)の差異:
    • 1行目の店所CD:送付用は集約店所CD になる場合がある。
    • 明細不要マーク '#':控えのみ。送付用には出力されない。

6.5 2種類の帳票(控え/送付用)の違い

本プログラムは、同じ請求書を2本の SYSOUT に出力します。

項目 控え 送付用
DD名 OUTFILE OUTFIL2
SYSOUT(JCL) クラス E、ライター KS601511 クラス E、ライター KS601512
用途(推定) 店所の控え(保管・確認用) 顧客へ送付する請求書
出力対象 全請求先 明細不要の顧客(優先印刷マスター UPRNASKB='6')を除く
1行目の店所CD(OT1TNCD、印字桁33~36) 入力の店所CD(SQHATNCD) 集約店所CD(LKN0010 で取得した MISYU_TC)に置き換える。ただし自店出力の店所と自店所出力の顧客は置き換えない
1行目の明細不要マーク '#'(印字桁57) 明細不要の顧客に付く 付かない(その顧客は出力されないため)
2行目以降(鑑・明細・計) 同じ 同じ
印刷イメージ 6.2・6.3 のとおり 6.2・6.3 と同じ(1行目の店所CDだけが異なる場合がある)
  • 1行目の店所CDは、電子帳票(A-SPOOL)の振分けキーです(ソースコメント「A-SPOOL振分用」)。控えは入力の店所に、送付用は集約店所に配信されると考えられます。集約店所で、送付用の請求書をまとめて印刷・発送する運用と推定されます。
  • 置き換えの条件は次のとおりです(すべて満たすとき送付用の店所CDを MISYU_TC にする)。
    1. 店所が ALTFILE(ADG.ALTLIB(SEQPRTNC):自店出力の店所の一覧)に登録されていない(PRTN_FLG='0')
    2. 顧客が優先印刷マスターで「自店所出力」(UPRNASKB=空白)ではない(JITN_FLG='0')
  • 見出し1は各ページの先頭で出力されるため、この違いはすべてのページの1行目に現れます。
  • MISYU_TC の値は外部ルーチン LKN0010(BB)の戻り値です。印刷イメージの集約店所CD「1000」は架空の値です。

1行目の比較イメージ(ケース別)

ケース1:通常の顧客・集約される店所(ALTFILE に登録なし)

               |----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3--
OUTFILE 控え   | 1234567   00001  テスト支店   1001              09                                            26 09 01      26 09 30            1
OUTFIL2 送付用 | 1234567   00001  テスト支店   1000              09                                            26 09 01      26 09 30            1

ケース2:自店出力の店所(ALTFILE に登録あり)

               |----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3--
OUTFILE 控え   | 1234567   00001  テスト支店   1001              09                                            26 09 01      26 09 30            1
OUTFIL2 送付用 | 1234567   00001  テスト支店   1001              09                                            26 09 01      26 09 30            1

ケース3:優先印刷マスターで自店所出力の顧客(UPRNASKB=空白)

               |----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3--
OUTFILE 控え   | 1234567   00001  テスト支店   1001              09                                            26 09 01      26 09 30            1
OUTFIL2 送付用 | 1234567   00001  テスト支店   1001              09                                            26 09 01      26 09 30            1

ケース4:明細不要の顧客(UPRNASKB='6')

               |----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2----+----3--
OUTFILE 控え   | 1234567   00001  テスト支店   1001              09    #                                       26 09 01      26 09 30            1
OUTFIL2 送付用 | (出力されない)
  • ケース2・3では、控えと送付用は完全に同じ内容になります。
  • ケース4の顧客は、控えにだけ「#」付きで出力されます。

7. 計の見出し(KEI_HED)

条件 見出し
DTID=9 送り状合計
HDID=0, PKBN=0/7/8 送り状合計
HDID=0, PKBN=1 MOTCYA_WK により 元払い計/着払い計/元着別計
HDID=0, PKBN=2/3 請求区分計
HDID=0, PKBN=4 着地計
HDID=0, PKBN=5 着県計
HDID=0, PKBN=6 日付計
HDID=0, その他 計
HDID=3 訂正計
HDID=2 支払変更計
HDID=9 検品料計
HDID=4/5/6 その他計
HDID=その他 ___計_
  • ページ小計(49行目)は見出しなしで、KEI_SQKB に区分表示を設定する。

8. メッセージ

出力先 メッセージ 契機
SYSPRINT(DISPLAY) !!! TABL OVER LAST PRTN =>+最終店所CD ALTFILE が100件を超えた

9. 異常処理

事象 処理
SQHAIDA ENDFILE EOF_SW='0'B → ループを終了し、CLOSE して正常終了する
VSAM キーなし(ON KEY) VS_SW='0'B。店所マスターは店略称='???'、銀行は空白、優先印刷はデフォルト(送付用に出力、自店所出力なし)。メッセージは出さない
その他のエラー ON ERROR の定義なし。PL/I 標準のエラー処理(異常終了)
リターンコード 設定なし(常に0)

10. 留意事項(★)

  1. ALTFILE が101件以上の場合、TABCNT=101 で打ち切られる。その後のテーブル検索が添字範囲外(TAB_PRTN(101))を参照する。
  2. 旧形式のレコード(OUT21/22等)は NLIN が空白の可能性がある。SELECT(SQHANLIN) は数値比較のため、空白の扱いはコンパイラ依存である(CONVERSION の可能性)。
  3. ハードコードがある。
    • SQHAEYMD=250105 で月='01'
    • 店所1301 の TEL
    • 西暦案内の終了 190610
    • サーチャージ開始 080919
  4. 年は西暦下2桁で運用している(2000年問題対応のロジックはコメントアウト済み)。
  5. 名称・住所の分割で、文字が切り捨てられることがある。
    • 半角カナで空白1個の場合、区切りがずれる。
    • 名称の3行目は最大14バイトが欠落する。
    • 住所が4行を超えた部分は欠落する。
    • 店住所は68~71バイト目を印字しない。
  6. マスターのキャッシュ比較:先頭レコードでは、未初期化の UPRNNICD/VETNHTCD と比較される。OUT_SW は INIT なしである。
  7. マスターに該当がなくてもメッセージは出ず、処理は続行する。
  8. DTID=1/2(元払計・着払計)のレコードは印字されない(5.5参照)。
  9. 2ページ目以降の荷主名は、常に SO/SI が付加される(5.3.2参照)。
  10. 備考 'KKKK' の軽油表示は、前工程の備考書式に依存する(5.4参照)。
  11. 検品明細は KNP_MEISAI を部分的に重ねて印字する。重ねていない桁は、通常明細の値が残る。

11. 未使用項目

  • ワーク:WK_MOJS1, WK_MOJS2, WK_SO, WK_SI, OLDSQNO, WCODE13, WCODE11, WCODE4, KK, LL, WK_TNCD(クリアのみ), VETNADNM_68_04
  • VKCHINM(地名マスター)の READ はコメントアウトされている。
  • DDPTENMS/BANKMAST の大半の項目(付録の「用途」欄が空の項目)
  • 旧書式用の項目(SQHASKIP, SQHALINE, SQHAPAGE 等。新書式の NPAG/NLIN/NSKP のみを使用)

付録A 印字行 項目位置表

  • レコード位置は ASA を1とした位置、印字桁は ASA を除いた桁(=レコード位置−1)である。
  • KNP_MEISAI は MEISAI に重ねる定義(ASA なし)である。
行構造 項目 レコード位置 長さ 印字桁
OUT_1 OT1ASA 1 1 ASA
OUT_1 SP11 2 1 1
OUT_1 OT1NICD 3 7 2~8
OUT_1 SP12 10 2 9~10
OUT_1 OT1KAS1 12 1 11
OUT_1 OT1SQNO 13 5 12~16
OUT_1 OT1KAS2 18 1 17
OUT_1 OT1ATNM 19 14 18~31
OUT_1 SP13 33 1 32
OUT_1 OT1TNCD 34 4 33~36
OUT_1 SP14 38 14 37~50
OUT_1 OT1MMM 52 2 51~52
OUT_1 SP15 54 4 53~56
OUT_1 OT1MHKB 58 1 57
OUT_1 SP16 59 39 58~96
OUT_1 OT1SYY 98 2 97~98
OUT_1 SP17 100 1 99
OUT_1 OT1SMM 101 2 100~101
OUT_1 SP18 103 1 102
OUT_1 OT1SDD 104 2 103~104
OUT_1 SP19 106 6 105~110
OUT_1 OT1EYY 112 2 111~112
OUT_1 SP1A 114 1 113
OUT_1 OT1EMM 115 2 114~115
OUT_1 SP1B 117 1 116
OUT_1 OT1EDD 118 2 117~118
OUT_1 SP1C 120 9 119~127
OUT_1 OT1PAGE 129 4 128~131
OUT_1 SP1D 133 1 132
OUT_2 OT2ASA 1 1 ASA
OUT_2 SP21 2 90 1~90
OUT_2 OT2KOME 92 42 91~132
OUT_4 OT4ASA 1 1 ASA
OUT_4 SP41 2 3 1~3
OUT_4 OT4PSN1 5 3 4~6
OUT_4 OT4PSNS 8 1 7
OUT_4 OT4PSN2 9 4 8~11
OUT_4 SP42 13 55 12~66
OUT_4 OT4SQKN 68 12 67~78
OUT_4 SP43 80 54 79~132
OUT_5 OT5ASA 1 1 ASA
OUT_5 SP51 2 2 1~2
OUT_5 OT5JYU1_SO 4 1 3
OUT_5 OT5JYU1 5 28 4~31
OUT_5 OT5JYU1_SI 33 1 32
OUT_5 SP52 34 100 33~132
OUT_6 OT6ASA 1 1 ASA
OUT_6 SP61 2 2 1~2
OUT_6 OT6JYU2_SO 4 1 3
OUT_6 OT6JYU2 5 28 4~31
OUT_6 OT6JYU2_SI 33 1 32
OUT_6 SP62 34 58 33~90
OUT_6 OT6TENK 92 9 91~99
OUT_6 SP63 101 12 100~111
OUT_6 OT6HTNM 113 16 112~127
OUT_6 SP64 129 5 128~132
OUT_7 OT7ASA 1 1 ASA
OUT_7 SP71 2 2 1~2
OUT_7 OT7JYU3_SO 4 1 3
OUT_7 OT7JYU3 5 28 4~31
OUT_7 OT7JYU3_SI 33 1 32
OUT_7 SP72 34 14 33~46
OUT_7 OT7HUNT 48 9 47~55
OUT_7 OT7HRYO 57 8 56~63
OUT_7 OT7HSKE 65 9 64~72
OUT_7 OT7HTAX 74 8 73~80
OUT_7 OT7HHOK 82 8 81~88
OUT_7 OT7HGKE 90 9 89~97
OUT_7 OT7HSER 99 8 98~105
OUT_7 OT7TJY1 107 24 106~129
OUT_7 SP74 131 3 130~132
OUT_8 OT8ASA 1 1 ASA
OUT_8 SP81 2 2 1~2
OUT_8 OT8JYU4_SO 4 1 3
OUT_8 OT8JYU4 5 28 4~31
OUT_8 OT8JYU4_SI 33 1 32
OUT_8 SP82 34 73 33~105
OUT_8 OT8TJY2_SO 107 1 106
OUT_8 OT8TJY2 108 22 107~128
OUT_8 OT8TJY2_SI 130 1 129
OUT_8 SP83 131 3 130~132
OUT_9 OT9ASA 1 1 ASA
OUT_9 SP91 2 105 1~105
OUT_9 OT9TJY3_SO 107 1 106
OUT_9 OT9TJY3 108 22 107~128
OUT_9 OT9TJY3_SI 130 1 129
OUT_9 SP92 131 3 130~132
OUT_10 OT10ASA 1 1 ASA
OUT_10 SPA1 2 2 1~2
OUT_10 O10HNM1_SO 4 1 3
OUT_10 O10HNM1 5 28 4~31
OUT_10 O10HNM1_SI 33 1 32
OUT_10 SPA2 34 14 33~46
OUT_10 O10BAN1 48 48 47~94
OUT_10 SPA3 96 11 95~105
OUT_10 O10TJY4_SO 107 1 106
OUT_10 O10TJY4 108 22 107~128
OUT_10 O10TJY4_SI 130 1 129
OUT_10 SPA4 131 3 130~132
OUT_11 OT11ASA 1 1 ASA
OUT_11 SPB1 2 2 1~2
OUT_11 O11HNM2_SO 4 1 3
OUT_11 O11HNM2 5 28 4~31
OUT_11 O11HNM2_SI 33 1 32
OUT_11 SPB2 34 14 33~46
OUT_11 O11BAN2 48 48 47~94
OUT_11 SPB3 96 10 95~104
OUT_11 O11TTEL 106 24 105~128
OUT_11 O11FURI 130 1 129
OUT_11 SPB4 131 3 130~132
OUT_12 OT12ASA 1 1 ASA
OUT_12 SPB11 2 2 1~2
OUT_12 O12HNM3_SO 4 1 3
OUT_12 O12HNM3 5 16 4~19
OUT_12 O12HNM3_SI 21 1 20
OUT_12 O12TELH 22 4 21~24
OUT_12 O12TELN 26 12 25~36
OUT_12 SPB12 38 96 37~132
OUT_10_2 PAASA 1 1 ASA
OUT_10_2 SPPA1 2 2 1~2
OUT_10_2 O10PNM1_SO 4 1 3
OUT_10_2 O10PNM1 5 28 4~31
OUT_10_2 O10PNM1_SI 33 1 32
OUT_10_2 SPPA2 34 100 33~132
OUT_11_2 PBASA 1 1 ASA
OUT_11_2 SPPB1 2 2 1~2
OUT_11_2 O11PNM2_SO 4 1 3
OUT_11_2 O11PNM2 5 28 4~31
OUT_11_2 O11PNM2_SI 33 1 32
OUT_11_2 SPPB2 34 100 33~132
OUT_12_2 PCASA 1 1 ASA
OUT_12_2 SPPC1 2 2 1~2
OUT_12_2 O12PNM3_SO 4 1 3
OUT_12_2 O12PNM3 5 16 4~19
OUT_12_2 O12PNM3_SI 21 1 20
OUT_12_2 SPPCC 22 112 21~132
MIDK_1 M11ASA 1 1 ASA
MIDK_1 M11SPA1 2 11 1~11
MIDK_1 M11MID1 13 34 12~45
MIDK_1 M11MID2 47 13 46~58
MIDK_1 M11MID3 60 32 59~90
MIDK_1 M11SPA2 92 42 91~132
MIDK_2 M12ASA 1 1 ASA
MIDK_2 M12SPA1 2 11 1~11
MIDK_2 M12MID1 13 34 12~45
MIDK_2 M12MID2 47 13 46~58
MIDK_2 M12MID3 60 32 59~90
MIDK_2 M12SPA2 92 42 91~132
MID_KGO MKGASA 1 1 ASA
MID_KGO MKGSPA1 2 24 1~24
MID_KGO MKGMID1 26 24 25~48
MID_KGO MKGSPA2 50 84 49~132
MID_SUR1 MS1ASA 1 1 ASA
MID_SUR1 MS1SPA1 2 77 1~77
MID_SUR1 MS1MID1 79 7 78~84
MID_SUR1 MS1SPA2 86 48 85~132
MID_SUR2 MS2ASA 1 1 ASA
MID_SUR2 MS2SPA1 2 71 1~71
MID_SUR2 MS2MID1 73 7 72~78
MID_SUR2 MS2SPA2 80 54 79~132
MEISAI MEI_ASA 1 1 ASA
MEISAI MEI_OKNO1 2 5 1~5
MEISAI MEI_HIHN 7 1 6
MEISAI MEI_OKNO2 8 6 7~12
MEISAI MEI_MCKB 14 4 13~16
MEISAI MEI_MMDD 18 4 17~20
MEISAI MEI_CHNM 22 12 21~32
MEISAI MEI_SHNM 34 14 33~46
MEISAI MEI_KOSU 48 5 47~51
MEISAI MEI_JRYO 53 6 52~57
MEISAI MEI_UNCN 59 8 58~65
MEISAI MEI_SHUH 67 6 66~71
MEISAI MEI_KOSO 73 6 72~77
MEISAI MEI_DAIB 79 6 78~83
MEISAI MEI_SONN 85 6 84~89
MEISAI MEI_ZIKN 91 6 90~95
MEISAI MEI_HOKN 97 6 96~101
MEISAI MEI_TATE 103 6 102~107
MEISAI MEI_WARI 109 6 108~113
MEISAI MEI_GOKEI 115 8 114~121
MEISAI MEI_TSKB 123 2 122~123
MEISAI MEI_TENS 125 4 124~127
MEISAI MEI_BIKO 129 5 128~132
KNP_MEISAI KMEI_SP01 1 47 0~46
KNP_MEISAI KMEI_KOSU 48 5 47~51
KNP_MEISAI KMEI_JRYO 53 6 52~57
KNP_MEISAI KMEI_UNSOK 59 12 58~69
KNP_MEISAI KMEI_TELN 71 14 70~83
KNP_MEISAI KMEI_GOKEI1 85 6 84~89
KNP_MEISAI KMEI_ZIKN 91 6 90~95
KNP_MEISAI KMEI_SP1 97 18 96~113
KNP_MEISAI KMEI_GOKEI2 115 8 114~121
KNP_MEISAI KMEI_SP2 123 6 122~127
KNP_MEISAI KMEI_BIKO 129 5 128~132
KEI KEI_ASA 1 1 ASA
KEI KEI_SP0 2 5 1~5
KEI KEI_SQKB 7 10 6~15
KEI KEI_SP1 17 8 16~23
KEI KEI_HED 25 12 24~35
KEI KEI_KOSU 37 6 36~41
KEI KEI_JRYO 43 7 42~48
KEI KEI_UNCN 50 9 49~57
KEI KEI_SHUH 59 7 58~64
KEI KEI_KOSO 66 7 65~71
KEI KEI_DAIT 73 7 72~78
KEI KEI_SONN 80 7 79~85
KEI KEI_ZIKN 87 7 86~92
KEI KEI_HOKN 94 7 93~99
KEI KEI_SONT 101 7 100~106
KEI KEI_WARI 108 7 107~113
KEI KEI_GOKEI 115 9 114~122
KEI KEI_SP2 124 10 123~132
KNP_KEI KKEI_ASA 1 1 ASA
KNP_KEI KKEI_SP1 2 23 1~23
KNP_KEI KKEI_HED 25 12 24~35
KNP_KEI KKEI_KOSU 37 6 36~41
KNP_KEI KKEI_JRYO 43 7 42~48
KNP_KEI KKEI_SP2 50 30 49~78
KNP_KEI KKEI_SONN 80 7 79~85
KNP_KEI KKEI_ZIKN 87 7 86~92
KNP_KEI KKEI_SP3 94 21 93~113
KNP_KEI KKEI_KEI 115 9 114~122
KNP_KEI KKEI_SP4 124 10 123~132

付録B SQHAIDAA(見出し1)

| 02 | SQHAKEYB | (集団項目) | | 1 | 19 | |
| 03 |  SQHAYYMM | PIC'(4)9' | | 1 | 4 | 請求月(先頭2桁) |
| 03 |  SQHATNCD | PIC'(4)9' | | 5 | 4 | 店所マスター・出力用店所 |
| 03 |  SQHABANG | (集団項目) | | 9 | 10 | |
| 04 |   SQHARENB | PIC'(4)9' | | 9 | 4 | |
| 04 |   SQHAPAGE | PIC'(4)9' | | 13 | 4 | |
| 04 |   SQHALINE | PIC'(2)9' | | 17 | 2 | |
| 03 |  SQHADTID | PIC'(1)9' | | 19 | 1 | 5:見出し1として処理 |
| 02 | SQHASKIP | PIC'(2)9' | | 20 | 2 | |
| 02 | SQHANEW | (集団項目) | | 22 | 8 | |
| 03 |  SQHANPAG | PIC'(4)9' | | 22 | 4 | ページ |
| 03 |  SQHANLIN | PIC'(2)9' | | 26 | 2 | 処理の振分け(全レコード共通位置) |
| 03 |  SQHANSKP | PIC'(2)9' | | 28 | 2 | |
| 02 | SQHASQNO | FIXED(13) | | 30 | 7 | 荷主コード・枝番 |
| 02 | SQHAMONT | PIC'(2)9' | | 37 | 2 | |
| 02 | SQHAKIKN | (集団項目) | | 39 | 12 | |
| 03 |  SQHASYMD | PIC'(6)9' | | 39 | 6 | 期間(自) |
| 03 |  SQHAEYMD | PIC'(6)9' | | 45 | 6 | 期間(至)、各種判定 |
| 02 | SQHASSKB | PIC'(1)9' | | 51 | 1 | |
| 02 | SQHAKMKB | PIC'(1)9' | | 52 | 1 | 本締/仮締 |
| 02 | SQHADPKB | PIC'(1)9' | | 53 | 1 | |
| 02 | SQHAZKKB | PIC'(1)9' | | 54 | 1 | 税区分1 |
| 02 | SQHAZKK1 | PIC'(1)9' | | 55 | 1 | 税区分2 |
| 02 | SQHAOPAG | PIC'(4)9' | | 56 | 4 | |

付録C SQHAIDAB(見出し2)

| 02 | SQHBKEYB | (集団項目) | | 1 | 19 | |
| 03 |  SQHBYYMM | PIC'(4)9' | | 1 | 4 | |
| 03 |  SQHBTNCD | PIC'(4)9' | | 5 | 4 | 店所マスター・銀行マスターのキー |
| 03 |  SQHBBANG | (集団項目) | | 9 | 10 | |
| 04 |   SQHBRENB | PIC'(4)9' | | 9 | 4 | |
| 04 |   SQHBPAGE | PIC'(4)9' | | 13 | 4 | |
| 04 |   SQHBLINE | PIC'(2)9' | | 17 | 2 | |
| 03 |  SQHBDTID | PIC'(1)9' | | 19 | 1 | |
| 02 | SQHBSKIP | PIC'(2)9' | | 20 | 2 | |
| 02 | SQHBNEW | (集団項目) | | 22 | 8 | |
| 03 |  SQHBNPAG | PIC'(4)9' | | 22 | 4 | 1ページ目かの判定 |
| 03 |  SQHBNLIN | PIC'(2)9' | | 26 | 2 | |
| 03 |  SQHBNSKP | PIC'(2)9' | | 28 | 2 | |
| 02 | SQHBSQNM | (集団項目) | | 30 | 72 | |
| 03 |  SQHBHEAD | CHAR(8) | | 30 | 8 | 荷主名(法人格) |
| 03 |  SQHBNAME | CHAR(64) | | 38 | 64 | 荷主名 |
| 02 | SQHBSQKB | CHAR(10) | | 102 | 10 | |
| 02 | SQHBHTEN | CHAR(14) | | 112 | 14 | 発行店名 |
| 02 | SQHBKENP | PIC'(1)9' | | 126 | 1 | 検品見出しの判定 |
| 02 | SQHBADDT | (集団項目) | | 127 | 340 | |
| 03 |  SQHBMTTO | (集団項目) | | 127 | 30 | |
| 04 |   SQHBUNTI | FIXED DEC(9) | | 127 | 5 | 鑑:運賃 |
| 04 |   SQHBRYOK | FIXED DEC(9) | | 132 | 5 | 鑑:料金 |
| 04 |   SQHBTTAX | FIXED DEC(9) | | 137 | 5 | 鑑:消費税 |
| 04 |   SQHBHOKR | FIXED DEC(9) | | 142 | 5 | 鑑:保険料 |
| 04 |   SQHBAAAA | FIXED DEC(9) | | 147 | 5 | |
| 04 |   SQHBATAX | FIXED DEC(9) | | 152 | 5 | |
| 03 |  SQHBYUNN | CHAR(7) | | 157 | 7 | 郵便番号(7桁) |
| 03 |  SQHBYUNO | PIC'(5)9' | | 164 | 5 | 郵便番号(5桁) |
| 03 |  SQHBJKAN | (集団項目) | | 169 | 124 | |
| 04 |   SQHBJKA1 | CHAR(34) | | 169 | 34 | 住所1 |
| 04 |   SQHBJKA2 | CHAR(38) | | 203 | 38 | 住所2 |
| 04 |   SQHBJKA3 | CHAR(52) | | 241 | 52 | 住所3 |
| 03 |  SQHBJKNA | (集団項目) | | 293 | 129 | |
| 04 |   SQHBJKN1 | CHAR(32) | | 293 | 32 | |
| 04 |   SQHBJKN2 | CHAR(47) | | 325 | 47 | |
| 04 |   SQHBJKN3 | CHAR(50) | | 372 | 50 | |
| 03 |  SQHBDTEL | CHAR(12) | | 422 | 12 | 顧客電話番号 |
| 03 |  SQHBBANK | FIXED DEC(7) | | 434 | 4 | 振込銀行1 |
| 03 |  SQHBKONO | PIC'(1)9' | | 438 | 1 | 口座種別1 |
| 03 |  SQHBKOBA | FIXED DEC(9) | | 439 | 5 | 口座番号1 |
| 03 |  SQHBBAN1 | FIXED DEC(7) | | 444 | 4 | 振込銀行2 |
| 03 |  SQHBKON1 | PIC'(1)9' | | 448 | 1 | 口座種別2 |
| 03 |  SQHBKOB1 | FIXED DEC(9) | | 449 | 5 | 口座番号2 |
| 03 |  SQHBTKB3 | PIC'(1)9' | | 454 | 1 | 振込区分 |
| 03 |  SQHBJIKB | PIC'(1)9' | | 455 | 1 | |
| 03 |  SQHBTENK | FIXED DEC(9) | | 456 | 5 | 鑑:サーチャージ |
| 03 |  SQHBSPA2 | CHAR(6) | | 461 | 6 | |

付録D SQHAIDAC(明細)

| 02 | SQHCKEYB | (集団項目) | | 1 | 19 | |
| 03 |  SQHCYYMM | PIC'(4)9' | | 1 | 4 | |
| 03 |  SQHCTNCD | PIC'(4)9' | | 5 | 4 | |
| 03 |  SQHCBANG | (集団項目) | | 9 | 10 | |
| 04 |   SQHCRENB | PIC'(4)9' | | 9 | 4 | |
| 04 |   SQHCPAGE | PIC'(4)9' | | 13 | 4 | |
| 04 |   SQHCLINE | PIC'(2)9' | | 17 | 2 | |
| 03 |  SQHCDTID | PIC'(1)9' | | 19 | 1 | 0:明細行 |
| 02 | SQHCSKIP | PIC'(2)9' | | 20 | 2 | |
| 02 | SQHCNEW | (集団項目) | | 22 | 8 | |
| 03 |  SQHCNPAG | PIC'(4)9' | | 22 | 4 | |
| 03 |  SQHCNLIN | PIC'(2)9' | | 26 | 2 | |
| 03 |  SQHCNSKP | PIC'(2)9' | | 28 | 2 | |
| 02 | SQHCOKNO | FIXED(11) | | 30 | 6 | 送り状番号 |
| 02 | SQHCMCKB | PIC'(1)9' | | 36 | 1 | 元着 |
| 02 | SQHCMMDD | FIXED(5) | | 37 | 3 | 月日 |
| 02 | SQHCCHNM | CHAR(12) | | 40 | 12 | 地名 |
| 02 | SQHCSHNM | CHAR(14) | | 52 | 14 | 名称、検品判定 |
| 02 | SQHCKOSU | FIXED(5) | | 66 | 3 | 個数 |
| 02 | SQHCJRYO | FIXED(7) | | 69 | 4 | 重量 |
| 02 | SQHCRYOK | (集団項目) | | 73 | 37 | |
| 03 |  SQHCUNCN | FIXED(9) | | 73 | 5 | 運賃 |
| 03 |  SQHCSHUH | FIXED(7) | | 78 | 4 | 集配料 |
| 03 |  SQHCKOSO | FIXED(7) | | 82 | 4 | 航送料 |
| 03 |  SQHCDAIB | FIXED(7) | | 86 | 4 | 転嫁料欄 |
| 03 |  SQHCHOKN | FIXED(7) | | 90 | 4 | 保険料 |
| 03 |  SQHCSONN | FIXED(7) | | 94 | 4 | その他 |
| 03 |  SQHCTATE | FIXED(7) | | 98 | 4 | 立替 |
| 03 |  SQHCWARI | FIXED(7) | | 102 | 4 | 割引 |
| 03 |  SQHCZIKN | FIXED(7) | | 106 | 4 | 税 |
| 02 | SQHCTSKB | CHAR(1) | | 110 | 1 | 付替訂正区分 |
| 02 | SQHCTENS | FIXED(5) | | 111 | 3 | 店 |
| 02 | SQHCBIKO | CHAR(12) | | 114 | 12 | 備考 |
| 02 | SQHCPRIT | (集団項目) | | 126 | 13 | |
| 03 |  SQHCHCCD | FIXED(5) | | 126 | 3 | |
| 03 |  SQHCTELN | CHAR(10) | | 129 | 10 | 検品明細の電話番号 |

付録E SQHAIDAD(計)

| 02 | SQHDKEYB | (集団項目) | | 1 | 19 | |
| 03 |  SQHDYYMM | PIC'(4)9' | | 1 | 4 | |
| 03 |  SQHDTNCD | PIC'(4)9' | | 5 | 4 | |
| 03 |  SQHDBANG | (集団項目) | | 9 | 10 | |
| 04 |   SQHDRENB | PIC'(4)9' | | 9 | 4 | |
| 04 |   SQHDPAGE | PIC'(4)9' | | 13 | 4 | |
| 04 |   SQHDLINE | PIC'(2)9' | | 17 | 2 | |
| 03 |  SQHDDTID | PIC'(1)9' | | 19 | 1 | 3/9:計行 |
| 02 | SQHDSKIP | PIC'(2)9' | | 20 | 2 | |
| 02 | SQHDNEW | (集団項目) | | 22 | 8 | |
| 03 |  SQHDNPAG | PIC'(4)9' | | 22 | 4 | |
| 03 |  SQHDNLIN | PIC'(2)9' | | 26 | 2 | |
| 03 |  SQHDNSKP | PIC'(2)9' | | 28 | 2 | 改行数 |
| 02 | SQHDKOSU | FIXED(7) | | 30 | 4 | 個数 |
| 02 | SQHDJRYO | FIXED(7) | | 34 | 4 | 重量 |
| 02 | SQHDUNCN | FIXED(9) | | 38 | 5 | 運賃 |
| 02 | SQHDSHUH | FIXED(7) | | 43 | 4 | 集配料 |
| 02 | SQHDKOSO | FIXED(7) | | 47 | 4 | 航送料 |
| 02 | SQHDDAIT | FIXED(7) | | 51 | 4 | 転嫁料欄 |
| 02 | SQHDSONN | FIXED(7) | | 55 | 4 | その他 |
| 02 | SQHDHOKN | FIXED(7) | | 59 | 4 | 保険料 |
| 02 | SQHDSONT | FIXED(7) | | 63 | 4 | 立替 |
| 02 | SQHDWARI | FIXED(7) | | 67 | 4 | 割引 |
| 02 | SQHDZIKN | FIXED(7) | | 71 | 4 | 税 |
| 02 | SQHDADDT | (集団項目) | | 75 | 14 | |
| 03 |  SQHDSQKB | CHAR(11) | | 75 | 11 | 区分表示 |
| 03 |  SQHDHDID | PIC'(1)9' | | 86 | 1 | 計の見出し判定 |
| 03 |  SQHDPKBN | CHAR(1) | | 87 | 1 | 計の見出し判定 |
| 03 |  SQHDSPAC | CHAR(1) | | 88 | 1 | |

付録F DDPTENMS(店所マスター)

| 02 | VETNHTCD | PIC'(4)9' | | 1 | 4 | キー。読込要否の判定 |
| 02 | VETNNTCD | CHAR(3) | | 5 | 3 | |
| 02 | VETNGETA | CHAR(1) | | 8 | 1 | |
| 02 | VETNKNNM | CHAR(14) | | 9 | 14 | |
| 02 | VETNSRNM | CHAR(14) | | 23 | 14 | 1行目:店略称 |
| 02 | VETNADCD | PIC'(11)9' | | 37 | 11 | |
| 02 | VETNADNM | CHAR(72) | | 48 | 72 | 店住所(2~67バイト目) |
| 02 | VETNPSNA | CHAR(5) | | 120 | 5 | 店郵便番号(上5桁) |
| 02 | VETNTLNO | CHAR(12) | | 125 | 12 | 店電話番号 |
| 02 | VETNPUNO | PIC'(2)9' | | 137 | 2 | |
| 02 | VETNRODA | FIXED DEC(3) | | 139 | 2 | |
| 02 | VETNSHDA | FIXED DEC(3) | | 141 | 2 | |
| 02 | VETNMCDA | FIXED DEC(3) | | 143 | 2 | |
| 02 | VETNKTEN | CHAR(4) | | 145 | 4 | |
| 02 | VETNYOBI | CHAR(4) | | 149 | 4 | |
| 02 | VETNJNTC | CHAR(3) | | 153 | 3 | |
| 02 | VETNNWCD | CHAR(3) | | 156 | 3 | |
| 02 | VETNSPAC | CHAR(1) | | 159 | 1 | |
| 02 | VETNGIFL | CHAR(1) | 5 | 160 | 1×5=5 | |
| 02 | VETNSPA2 | CHAR(3) | | 165 | 3 | |
| 02 | VETNPSNB | CHAR(2) | | 168 | 2 | 店郵便番号(下2桁) |
| 02 | VETNPUBO | CHAR(1) | | 170 | 1 | |

付録G BANKMAST(銀行マスター)

| 02 | VBNKMKEY | PIC'(7)9' | | 1 | 7 | キー前半(銀行コード) |
| 02 | VBNKKOTC | PIC'(4)9' | | 8 | 4 | キー後半(店所) |
| 02 | VBNKKOCD | (集団項目) | | 12 | 35 | |
| 03 |  VBNKTOZA | PIC'(7)9' | | 12 | 7 | |
| 03 |  VBNKFUTU | PIC'(7)9' | | 19 | 7 | |
| 03 |  VBNKTUTI | PIC'(7)9' | | 26 | 7 | |
| 03 |  VBNKTEKI | PIC'(7)9' | | 33 | 7 | |
| 03 |  VBNKSONO | PIC'(7)9' | | 40 | 7 | |
| 02 | VBNKSENA | (集団項目) | | 47 | 85 | |
| 03 |  VBNKNAMG | CHAR(20) | | 47 | 20 | 銀行名(漢字) |
| 03 |  VBNKSNMG | CHAR(20) | | 67 | 20 | 支店名(漢字) |
| 03 |  VBNKNAMC | CHAR(20) | | 87 | 20 | |
| 03 |  VBNKSNMC | CHAR(25) | | 107 | 25 | |
| 02 | VBNKRYNA | (集団項目) | | 132 | 40 | |
| 03 |  VBNKNSMG | CHAR(20) | | 132 | 20 | |
| 03 |  VBNKNSMC | CHAR(20) | | 152 | 20 | |
| 02 | VBNKBACD | PIC'(4)9' | | 172 | 4 | |
| 02 | VBNKSPAC | CHAR(25) | | 176 | 25 | |

付録H SSYUPRNT(優先印刷マスター)

| 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 | 明細不要・自店所出力の判定 |
| 03 |  UPRNASCN | CHAR(9) | | 18 | 9 | |
| 03 |  UPRNANIC | PIC'(7)9' | | 27 | 7 | |
| 02 | UPRNSPA2 | CHAR(7) | | 34 | 7 | |

(1-1/2)