プロジェクト

全般

プロフィール

レビュー指摘 #12048 » DAISEQ4J_詳細設計書_JOBフロー (1).md

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

 

JOB詳細設計書(JOBフロー) DAISEQ4J 【第2版】

項目 内容
解析対象 DAISEQ4J.jcl(JCL、850行。10/13 受領分。初版と同一内容)
作成方法 JCL と、JOB 内の全業務プログラム(11種)のソース解析結果からのリバース設計
作成日 2026/10/08(初版)、2026/10/13(第2版)

【本書の前提】

  • JCL の解析では、初版と同じくコメント行(//* で始まる行。//** を含む)は根拠にしていない。コメントアウトされたステップ(KS60140P、KS60141P、KS60150P、KS60480P、IDCAMS 等)は存在しないものとして扱う。
  • 第2版では、各ステップの業務的な役割・入出力の中身を、次のプログラム設計書(ソース解析結果)に基づいて記述した。初版で「(推定)」としていた箇所の多くは確定した。
プログラム 設計書 使用ステップ
KS60130P KS60130_詳細設計書.md No.3
KS60135P KS60135_詳細設計書.md No.11
KS60144P KS60144_詳細設計書.md、KS60144_出力ファイル解説.md No.8、No.12
KS60151P KS60151_詳細設計書.md No.9
KS60152P KS60152_詳細設計書.md No.13
KS60630P KS60630_詳細設計書.md No.29
KS60750P KS60750_詳細設計書.md No.15
KS60760P KS60760_詳細設計書.md No.17
KS60770P KS60770_詳細設計書.md No.18
KS60780P KS60780_詳細設計書.md No.22、No.23
KS60790P KS60790_詳細設計書.md No.25、No.27
  • プログラムが呼ぶ外部手続き(LKN0010、LSS0050、LSS0051)、ソートのカタログ式プロシージャ、パラメータメンバの中身、運用系タスクはブラックボックス(BB)として扱う(9章)。
  • ステップは実行順の通番(No.1~33)で識別する(ステップ名が重複しているため)。
  • ★印は、JOB 全体として注意が必要な点を示す(10章にまとめた)。

目次

  1. 第2版での主な変更点
  2. JOB概要
  3. JOB文・共通定義
  4. JOBフロー
  5. ステップ一覧
  6. ステップ詳細
  7. 出力物一覧(帳票・CSV・中間ファイル)
  8. データセット一覧
  9. 実行条件と異常時の動作
  10. ブラックボックス一覧
  11. 留意事項・要確認事項
  12. 関連設計書

0. 第2版での主な変更点

項目 初版 第2版
各ステップの役割 DD名・データセット名からの推定 プログラムのソース解析結果で確定
系統の意味 系統A=全件、系統B=抽出、系統C=突合せ 系統A=特積の請求書、系統B=エコデリバー・事業所郵送の請求書、系統C=郵送集約の請求一覧、系統D=郵送顧客CSV(1.2)
中間ファイルの中身 不明 レコード形式・抽出条件・並び順を記載(3.4)
ソートキーの意味 位置のみ 項目名・業務上の意味を記載(5.6)
帳票 ライター名のみ 帳票の内容・出力対象・振分けを記載(6.1)
留意事項 JCL 上の問題のみ プログラムをまたがる問題を追加(10章)
SEQTRYTN/SEQPRTNC パラメータメンバ(BB) 用途が判明:SEQTRYTN=郵送対象の店所一覧、SEQPRTNC=自店出力の店所一覧(中身は BB)
VKAD.SSYUPRNT.DTMASTER 等 「内容不明」 優先印刷マスター等、名称と使い方を記載(7.1)

1. JOB概要

1.1 基本情報

項目 内容
JOB名 DAISEQ4J
ステップ数 33(有効なステップのみ)
処理形態 バッチ(請求明細データの請求書化)
業務プログラム 11種・14ステップ
ユーティリティ等 IEHPROGM 9ステップ、ソート 8ステップ(USORTG×2、USORTM×6)、MVSCMD 2ステップ
主な入力 TEMP.DAISEQ1J.WORK0510(別JOB作成の請求明細データ。見出し+送り状明細)
主な出力 電子帳票(SYSOUT クラスE)7種、SEAD.DAISEQ4J.CSV

1.2 機能概要

請求明細データ(請求先ごとの見出し=鑑と、送り状ごとの明細)から、次の4系統の出力を作る。

系統 ステップ 対象 出力
共通 No.1~6 全データ 地名付加・配信店変換・並べ替え済みの共通データ WORK0620
A:特積の請求書 No.7~9 全店所・全請求先 新書式の請求書(控え・送付用)2種
B:郵送用の請求書 No.10~13 郵送対象店所(SEQTRYTN)の請求先。訂正明細を除く 新書式の請求書(インフォコム・インフォコム送付用・事業所送付用)3種
C:郵送集約の請求一覧 No.14~27 顧客法人管理マスターで「他の代表に集約」とされた請求先と、その代表 集約代表あての請求一覧(事業所用・エコデリバー用)2種
D:郵送顧客CSV No.28~31 系統Bと同じ請求先 請求先ごとの取扱区分(エコ/優先/不要)の CSV
後処理 No.32~33 - ワークと入力データの削除
 請求明細(DAISEQ1J.WORK0510)
        │ No.2~5:地名付加、配信店変換、0円除外、並べ替え
        ▼
 共通データ WORK0620 ─┬─▶ 系統A:KS60144P → KS60151P ……… 請求書(特積)2種
                       │
                       ├─▶ 系統B:KS60135P(郵送対象店所・訂正除外)→ WORK062S
                       │         ├─▶ KS60144P → KS60152P ……… 請求書(郵送)3種
                       │         └─▶ 系統D:KS60630P ………………… CSV
                       │
                       └─▶ 系統C:KS60770P(見出しのみ)─┐
          顧客法人管理マスター → KS60750P → KS60760P ─┴─▶ KS60780P → KS60790P … 請求一覧2種
  • 系統A は全請求先を対象とするため、系統B・C・D の請求先も系統A の請求書に含まれる(用途が異なる重複。10章 No.12)。

2. JOB文・共通定義

2.1 JOB文

パラメータ 値 内容
CLASS B ジョブクラス
MSGCLASS Q ジョブログ出力クラス
MSGLEVEL (1,1) JCL文・割振りメッセージをすべて出力
REGION 6144K リージョンサイズ
COND (9,LT) 先行ステップのリターンコードが 9 を超えた(10以上)場合、以降のステップを実行せずJOBを終了
PERFORM 1 パフォーマンスグループ 1

2.2 JOBLIB

DD名 DSN DISP
JOBLIB ENT.BATCHA.LOD SHR

2.3 共通仕様

  • ワークデータセットは DASD09 上に DISP=(NEW,KEEP,DELETE) で作成する非カタログデータセットであり、参照側は UNIT/VOL=SER を明示している。
  • 各系統の先頭に、その系統で作成するワークを IEHPROGM の SCRATCH で事前削除するステップを置いている。
  • 可変長(VB)ワークの DCB は RECFM=VB,BLKSIZE=12000 のみで LRECL の指定がない。レコード長はプログラムまたはソートの入力側の属性で決まる。
  • 可変長データに対する SORT のキー位置は、先頭4バイトの RDW を含む位置である(データ部の位置=指定位置-4)。
  • 帳票は SYSOUT=(E,ライター名,99) の形式で、クラスE・用紙番号99、帳票ごとに異なるライター名を指定して出力する。

3. JOBフロー

3.1 処理の流れ(業務の言葉で)

  1. 共通データの作成(No.2~5):入力を地名コード順に並べ(No.2)、KS60130P で漢字地名を付け、検品料のデータIDを 95 に変え、0円の明細を除き、優先印刷マスターで配信店を変換する(No.3)。これを「配信店・請求先・データID・区分・日付」の順に並べて共通データ WORK0620 にする(No.5)。
  2. 系統A(No.7~9):KS60144P が WORK0620 から請求書の行データ(見出し・明細・計)を作り(No.8)、KS60151P が電子帳票の請求書(控え・送付用)を出力する(No.9)。
  3. 系統B(No.10~13):KS60135P が郵送対象店所(SEQTRYTN)の請求先だけを、訂正明細を除いて抜き出す(No.11)。これを KS60144P で行データにし(No.12)、KS60152P が優先印刷マスターで振り分けて、インフォコム系2種・事業所送付用1種の請求書を出力する(No.13)。
  4. 系統C(No.14~27):
    • 顧客法人管理マスターから「荷主 → 集約代表」の対応表を作り(No.15)、代表自身を補って、優先印刷マスターの有無で2つに分ける(No.17)。
    • WORK0620 から請求額≠0 の見出しだけを抜き出し(No.18)、請求先番号順に並べる(No.21)。
    • 見出しと対応表を荷主コードで突き合わせ、集約代表・代表扱い店を書き込む(No.22・23)。
    • 代表扱い店・集約代表の順に並べ(No.24・26)、KS60790P が集約代表ごとの請求一覧を出力する(No.25・27)。
  5. 系統D(No.28~31):系統B の抽出データから、請求先ごとの取扱区分を CSV にし(No.29)、運用系に MODIFY コマンドを2つ発行する(No.30・31)。
  6. 後処理(No.32~33):ワークの一部と入力データを削除する。

3.2 全体フロー(データセットの流れ)

 【1. 共通データの作成】

   [No.1 DELETE] ワーク事前削除

   TEMP.DAISEQ1J.WORK0510(DASD30。別JOBで作成)
            │
            ▼
     [No.2 SORT]  キー(54,3)
            │
            ▼
        (WORK0600)      VKAD.CHIMEIET.DTMASTER ─┐
            │           VKAD.SSYUPRNT.DTMASTER ─┤
            ▼                                   │
     [No.3 KS60130P] ←──────────────────────────┘
            │                       [No.4 DELETE] WORK0600 削除
            ▼
        (WORK0610)
            │
            ▼
     [No.5 SORT]  キー7項目
            │                       [No.6 DELETE] WORK0610 削除
            ▼
        (WORK0620) ── 共通データ。系統A・B・Cの入力
            │
     ┌──────┼─────────────────────────┐
     ▼      ▼                         ▼
   系統A   系統B                     系統C


 【2. 系統A】                【3. 系統B】

   [No.7 SCRATCH]              [No.10 DELETE]
   (WORK0620)                  (WORK0620)   ADG.ALTLIB(SEQTRYTN)
        │                           │               │
        ▼                           ▼               │
   [No.8 KS60144P]             [No.11 KS60135P] ←───┘
        │  ├→ (WORK0642)            │
        │  └→ (WORK0646)            ▼
        ▼                       (WORK062S) ───────────────┐
    (WORK0635)                      │                     │
        │                           ▼                     │
        ▼                      [No.12 KS60144P]           │
   [No.9 KS60151P]                  │  ├→ (WORK0701)      │
        │                           │  └→ (WORK0702)      │
        ▼                           ▼                     │
   SYSOUT KS601511              (WORK0700)                │
   SYSOUT KS601512                  │                     │
                                    ▼                     │
                               [No.13 KS60152P]           │
                                    │                     │
                                    ▼                     │
                               SYSOUT KS601521            │
                               SYSOUT KS601522            │
                               SYSOUT KS601523            │
                                                          │
 【5. CSV出力と後処理】                                   │
                                                          │
   [No.28 DELETE] CSV 事前削除                            │
   [No.29 KS60630P] ←─────────────────────────────────────┘
        │
        ▼
   SEAD.DAISEQ4J.CSV(DASD11)

   [No.30 MVSCMD1] F AUTO1,ASVQ803
   [No.31 MVSCMD1] F AUTO1,ASVQ808
   [No.32 DELETE]  ワーク削除
   [No.33 DELETE]  TEMP.DAISEQ1J.WORK0510 削除

3.3 系統Cのフロー

   [No.14 SCRATCH] TEMP.KS60750J.WORK0010~0130 事前削除

   VKAD.CORPOMAN.DTMASTER                        (TEMP.DAISEQ4J.WORK0620)
            │                                              │
            ▼                                              ▼
     [No.15 KS60750P]                               [No.18 KS60770P]
            │                                              │
            ▼                                              ▼
        (K-WORK0010)                                  (K-WORK0050)
            │                                              │
            ▼                                              ▼
     [No.16 SORT1] キー(8,7)                        [No.21 SORT3] キー(19,8,PD)
            │                                              │
            ▼                                              ▼
        (K-WORK0020)   VKAD.SSYUPRNT.DTMASTER         (K-WORK0090)
            │                   │                          │
            ▼                   │                 ┌────────┴────────┐
     [No.17 KS60760P] ←─────────┘                 │                 │
            │                                     │                 │
       ┌────┴─────┐                               │                 │
       ▼          ▼                               │                 │
  (K-WORK0030) (K-WORK0040)                       │                 │
       │          │                               │                 │
       ▼          ▼                               │                 │
 [No.19 SORT2] [No.20 SORT2]  キー(1,7)           │                 │
       │          │                               │                 │
       ▼          ▼                               │                 │
  (K-WORK0060) (K-WORK0080)                       │                 │
       │          │                               │                 │
       │          └─────────────────────┐         │                 │
       ▼                                │         ▼                 │
 [No.22 KS60780P] ←─────────────────────┼─── (K-WORK0090)           │
       │                                ▼                           │
       │                          [No.23 KS60780P] ←────────────────┘
       ▼                                │
  (K-WORK0100)                          ▼
       │                           (K-WORK0110)
       ▼                                │
 [No.24 SORT4] キー3項目                ▼
       │                          [No.26 SORT4] キー3項目
       ▼                                │
  (K-WORK0120)                          ▼
       │                           (K-WORK0130)
       ▼                                │
 [No.25 KS60790P]                       ▼
       │                          [No.27 KS60790P]
       ▼                                │
  SYSOUT KS607902                       ▼
                                   SYSOUT KS607901
  • 図中の (WORKnnnn) は TEMP.DAISEQ4J.WORKnnnn、(K-WORKnnnn) は TEMP.KS60750J.WORKnnnn を表す。
  • 実行順は No.1 → No.33 の直列であり、並行実行や条件分岐はない。
  • No.25、27 の KS60790P は、図示した入力のほかにマスター6本を参照する(5.4 参照)。

3.4 中間ファイルの中身

データセット 作成 中身 レコード 並び順
WORK0600 No.2 入力の請求明細(見出し+明細、5レイアウト) VB 80~560 地名コード(明細の 50~52 バイト目)
WORK0610 No.3 地名付加・検品料ID変更・0円除外・配信店変換後の請求明細 同上 入力順
WORK0620 No.5 同上(共通データ) 同上 配信店・予備・請求先番号 → データID十の位 → 区分 → データID一の位 → 日付 → 元着・送り状番号
WORK0635 No.8 請求書の行データ(見出し1・2、明細行、ページ小計・区分計・総合計) VB 59~466(SQHAIDAA~D) 印刷順(月日・配信店・連番・頁・行・DTID)
WORK0642/0701 No.8/No.12 印刷照会マスター更新用(配信店ごとの件数・ページ数) FB 120(SQSSPRSK) 配信店順
WORK0646/0702 No.8/No.12 顧客ごとの請求書枚数 FB 30 配信店・請求先順
WORK062S No.11 郵送対象店所の請求明細(訂正 ID 31~33 を除く) VB 80~560 WORK0620 と同じ
WORK0700 No.12 WORK062S から作った請求書の行データ VB(SQHAIDAA~D) 印刷順
K-WORK0010 No.15 荷主・集約代表・代表扱い店(荷主≠集約代表のもの) FB 18 荷主コード順
K-WORK0020 No.16 同上 FB 18 集約代表順
K-WORK0030/0040 No.17 代表自身を補った対応表。優先印刷マスターに有る荷主/無い荷主 FB 18 集約代表順
K-WORK0060/0080 No.19/20 同上 FB 18 荷主コード順
K-WORK0050 No.18 全店所の見出しデータ(請求額≠0) VB 560 WORK0620 と同じ
K-WORK0090 No.21 同上 VB 560 請求先番号順
K-WORK0100/0110 No.22/23 突合せで一致した見出し(本締のみ)。データID=00 代表/99 配下、区分=集約代表+代表扱い店 VB 560 請求先番号順
K-WORK0120/0130 No.24/26 同上 VB 560 代表扱い店・集約代表・扱い店
SEAD.DAISEQ4J.CSV No.29 見出し行+請求先ごとの「締め日,扱い店,請求先顧客コード,集約コード,取扱」 VB 56/34 WORK062S の順

3.5 ワークデータセットのライフサイクル

ワーク 作成 参照 削除
TEMP.DAISEQ4J.WORK0600 No.2 No.3 No.4(No.1、No.32 でも指定)
TEMP.DAISEQ4J.WORK0610 No.3 No.5 No.6(No.1、No.32 でも指定)
TEMP.DAISEQ4J.WORK0620 No.5 No.8、11、18 次回実行時の No.1
TEMP.DAISEQ4J.WORK0635 No.8 No.9 No.32(次回の No.7 でも指定)
TEMP.DAISEQ4J.WORK0642 No.8 本JOB内になし 次回実行時の No.7
TEMP.DAISEQ4J.WORK0646 No.8 本JOB内になし 次回実行時の No.7
TEMP.DAISEQ4J.WORK062S No.11 No.12、29 次回実行時の No.10
TEMP.DAISEQ4J.WORK0700 No.12 No.13 次回実行時の No.10
TEMP.DAISEQ4J.WORK0701 No.12 本JOB内になし 次回実行時の No.10
TEMP.DAISEQ4J.WORK0702 No.12 本JOB内になし 次回実行時の No.10
TEMP.KS60750J.WORK0010~0130(11本) No.15~26 No.16~27 次回実行時の No.14
SEAD.DAISEQ4J.CSV No.29 本JOB内になし 次回実行時の No.28
TEMP.DAISEQ1J.WORK0510(入力) 別JOB No.2 No.33
  • TEMP.DAISEQ4J.WORK0630、0631、0632、0641 は、No.1/No.32 で削除対象に指定されているが、本JOBの有効なステップでは作成していない。
  • TEMP.KS60750J.WORK0070 は No.14 で削除対象に指定されているが、本JOBでは作成していない。

4. ステップ一覧

No ステップ名 実行PGM/PROC 系統 処理概要 主な入力 主な出力
1 DELETE IEHPROGM 共通 ワーク事前削除(7本) - -
2 SORT USORTG 共通 地名コード順に並べ替え DAISEQ1J.WORK0510 WORK0600
3 KS60130P KS60130P 共通 地名付加・検品料ID変更・0円除外・配信店変換 WORK0600、地名マスター、優先印刷マスター WORK0610
4 DELETE IEHPROGM 共通 WORK0600 削除 - -
5 SORT USORTG 共通 配信店・請求先・データID・区分・日付順に並べ替え WORK0610 WORK0620
6 DELETE IEHPROGM 共通 WORK0610 削除 - -
7 SCRATCH IEHPROGM A 系統Aワーク事前削除 - -
8 KS60144P KS60144P A 請求書の行データ作成(全件) WORK0620、印刷照会・店所・店所コード WORK0635、0642、0646
9 KS60151P KS60151P A 新請求書(特積)出力:控え・送付用 WORK0635、店所・銀行・優先印刷、SEQPRTNC SYSOUT KS601511、KS601512
10 DELETE IEHPROGM B 系統Bワーク事前削除 - -
11 KS60135P KS60135P B 郵送対象店所の抽出(訂正除外) WORK0620、SEQTRYTN WORK062S
12 KS60144P KS60144P B 請求書の行データ作成(郵送分) WORK062S、同上 WORK0700、0701、0702
13 KS60152P KS60152P B 新請求書(郵送)出力:インフォコム・インフォコム送付用・事業所送付用 WORK0700、店所・銀行・優先印刷・顧客法人管理、SEQPRTNC SYSOUT KS601521~23
14 SCRATCH IEHPROGM C 系統Cワーク事前削除 - -
15 KS60750P KS60750P C 郵送集約の対応表作成(荷主≠集約代表) 顧客法人管理マスター K-WORK0010
16 SORT1 USORTM C 集約代表順に並べ替え K-WORK0010 K-WORK0020
17 KS60760P KS60760P C 代表自身を補い、優先印刷マスターの有無で2分割 K-WORK0020、優先印刷 K-WORK0030、0040
18 KS60770P KS60770P C 見出し(請求額≠0)の抽出 WORK0620 K-WORK0050
19 SORT2 USORTM C 荷主コード順に並べ替え(有る分) K-WORK0030 K-WORK0060
20 SORT2 USORTM C 荷主コード順に並べ替え(無い分) K-WORK0040 K-WORK0080
21 SORT3 USORTM C 請求先番号順に並べ替え K-WORK0050 K-WORK0090
22 KS60780P KS60780P C 見出しと対応表(有る分)の突合せ K-WORK0090、0060 K-WORK0100
23 KS60780P KS60780P C 見出しと対応表(無い分)の突合せ K-WORK0090、0080 K-WORK0110
24 SORT4 USORTM C 代表扱い店・集約代表・扱い店順に並べ替え K-WORK0100 K-WORK0120
25 KS60790P KS60790P C 郵送集約の請求一覧(事業所用)出力 K-WORK0120、マスター6本 SYSOUT KS607902
26 SORT4 USORTM C 同上 K-WORK0110 K-WORK0130
27 KS60790P KS60790P C 郵送集約の請求一覧(エコデリバー用)出力 K-WORK0130、マスター6本 SYSOUT KS607901
28 DELETE IEHPROGM D CSV 事前削除 - -
29 KS60630P KS60630P D 郵送顧客 CSV 作成 WORK062S、優先印刷・顧客法人管理 SEAD.DAISEQ4J.CSV
30 MVSCMD1 MVSCMD D F AUTO1,ASVQ803 - -
31 MVSCMD1 MVSCMD D F AUTO1,ASVQ808 - -
32 DELETE IEHPROGM 後処理 ワーク削除(6本) - -
33 DELETE IEHPROGM 後処理 入力データ削除 - DAISEQ1J.WORK0510 削除
  • 「WORKnnnn」は TEMP.DAISEQ4J.WORKnnnn、「K-WORKnnnn」は TEMP.KS60750J.WORKnnnn を表す。

5. ステップ詳細

業務プログラムのステップは、「JCL」(DD 構成)と「処理内容」(プログラム設計書の要約)を示す。プログラムの詳細は各設計書を参照。

5.1 共通データの作成(No.1~6)

JCL:No.2 SORT

EXEC USORTG(カタログ式プロシージャ。BB)

DD名 DSN/指定 DISP 入出力 備考
SYSPRINT SYSOUT=* - 出力
SORTIN TEMP.DAISEQ1J.WORK0510 SHR 入力 DASD30。別JOB(DAISEQ1J と推定)が作成
SORTOUT TEMP.DAISEQ4J.WORK0600 (NEW,KEEP,DELETE) 出力 RECFM=VB、BLKSIZE=12000、SPACE=(CYL,(250,200),RLSE)、DASD09
SYSIN ストリーム内 - 入力 下記制御文
  SORT         FIELDS=(54,3,CH,A)
  END
  • キー(データ部 50~52 バイト目)は、送り状明細(SQALLDTB)の 地名コード SDTBCHCD(パック10進5桁)。次の KS60130P が地名マスターをスキップ順次で読むため、地名コード順に並べている。

JCL:No.3 KS60130P

EXEC PGM=KS60130P

DD名 DSN/指定 DISP 入出力 備考
SYSPRINT SYSOUT=* - 出力
SYSDBOUT SYSOUT=* - 出力 デバッグ出力
VKCHINM VKAD.CHIMEIET.DTMASTER SHR 入力 地名マスター
VKSYUPR VKAD.SSYUPRNT.DTMASTER SHR 入力 優先印刷マスター
ALLSQDT TEMP.DAISEQ4J.WORK0600 SHR 入力 DASD09
SQALLOK TEMP.DAISEQ4J.WORK0610 (NEW,KEEP,DELETE) 出力 RECFM=VB、BLKSIZE=12000、SPACE=(CYL,(250,200),RLSE)、DASD09

処理内容(KS60130 設計書)

  • 金額がすべて0のレコードを除く(送り状明細は、仮締のダミーと特定荷主330コードは残す)。
  • 送り状明細(ID 01、21、31)に、地名マスターから漢字地名(最大5文字)を付ける。
  • 検品料に当たる送り状明細のデータIDを 95 に書き換える。
  • 全レコードについて、優先印刷マスター(VKSYUPR)の変換指定で配信店を書き換える。特定5荷主は配信店を 1025 に固定する。
  • ★ 1025 は後の KS60144P で 1001 に読み替えられる(10章 No.9)。

JCL:No.5 SORT

EXEC USORTG

DD名 DSN/指定 DISP 入出力 備考
SYSPRINT SYSOUT=* - 出力
SORTIN TEMP.DAISEQ4J.WORK0610 SHR 入力 DASD09
SORTOUT TEMP.DAISEQ4J.WORK0620 (NEW,KEEP,DELETE) 出力 RECFM=VB、BLKSIZE=12000、SPACE=(CYL,(250,200),RLSE)、DASD09
SYSIN ストリーム内 - 入力 下記制御文
  SORT FIELDS=(5,21,CH,A,37,1,CH,A,26,11,CH,A,
               38,1,CH,A,39,2,Y2P,A,40,3,PD0,A,43,7,CH,A)
  END
優先順 指定 データ部の位置 長さ 形式 内容
1 5,21,CH,A 1~21 21 文字
2 37,1,CH,A 33 1 文字
3 26,11,CH,A 22~32 11 文字
4 38,1,CH,A 34 1 文字
5 39,2,Y2P,A 35~36 2 2桁年(パック) 4バイトのパック10進日付(YYMMDD)の年部分
6 40,3,PD0,A 36~38 3 パック(先頭桁と符号を無視) 同じ日付の月日部分
7 43,7,CH,A 39~45 7 文字
優先順 データ部の位置 項目(SQALLHED/SQALLDTB の名前) 内容
1 1~21 SDTASHTN+SDTAKKKK+SDTASQNO 配信店4+予備10+請求先番号(パック13桁)
2 33 SDTADTID の1桁目 データIDの十の位(00 の見出しが先、01・02 の計上明細、21・22 付替、31・33 訂正…の順)
3 22~32 SDTASPA1/SDTBPSEQ 区分(印刷順の区分)
4 34 SDTADTID の2桁目 データIDの一の位
5・6 35~38 SDTBYYMD 年月日(パック10進。Y2P で世紀つき)
7 39~45 SDTBMOCH+SDTBOKRN 元着区分+送り状番号
  • この並びが、KS60144P の印刷順(請求先 → 区分 → 日付 → 送り状)の前提になる。

5.2 系統A:特積の請求書(No.7~9)

JCL:No.8 KS60144P

EXEC PGM=KS60144P

DD名 DSN/指定 DISP 入出力 備考
SYSPRINT SYSOUT=* - 出力
SYSDBOUT SYSOUT=* - 出力
VKSEQSK VKAD.SQSSPRSK.DTMASTER SHR 入力 印刷照会マスター(更新はしない)
VKTENMS VKAD.CENTENMS.DTMASTER SHR 入力 店所マスター(KS60144P は読むが未使用)
VETENCD SEAD.TENSCODE.CDMASTER SHR 入力 DASD11。店所コードマスター(推定)
SQALLOK TEMP.DAISEQ4J.WORK0620 SHR 入力 DASD09
SQPRTDA TEMP.DAISEQ4J.WORK0635 (NEW,KEEP,DELETE) 出力 RECFM=VB、BLKSIZE=12000、SPACE=(12000,(8000,2500),RLSE)、DASD09
SQUPSEQ TEMP.DAISEQ4J.WORK0642 (NEW,KEEP,DELETE) 出力 RECFM=FB、LRECL=120、BLKSIZE=12000、SPACE=(12000,(5,5),RLSE)、DASD09
SEQPAGS TEMP.DAISEQ4J.WORK0646 (NEW,KEEP,DELETE) 出力 RECFM=FB、LRECL=30、BLKSIZE=6300、SPACE=(6300,(100,50),RLSE)、DASD09

処理内容(KS60144 設計書)

  • 請求先ごとの見出しデータから請求書の見出し(鑑)を作り、明細を表示パターンに従って運賃・料金欄に振り分けた明細行、ページ小計・元払計・着払計・元着計・総合計を作る。旧書式(40行/頁)と新書式(33行/頁)の番号を両方持つ。
  • 出力区分 '9'(明細不要)の請求先と、見出しのない請求先は出力しない。
  • SQUPSEQ:印刷照会マスター(VKSEQSK)の値に今回の件数を加えた「更新後のレコード」。配信店ごとに1件。マスター自体は更新しない。
  • SEQPAGS:請求先ごとの請求書枚数(新書式のページ数)。
  • 配信店 1025 を 1001 に読み替える。

JCL:No.9 KS60151P

EXEC PGM=KS60151P

DD名 DSN/指定 DISP 入出力 備考
SYSPRINT SYSOUT=* - 出力
SYSUDUMP SYSOUT=* - 出力 ダンプ
ALTFILE ADG.ALTLIB(SEQPRTNC) SHR 入力 パラメータメンバ
SQHAIDA TEMP.DAISEQ4J.WORK0635 SHR 入力 DASD09
VKTENMS VKAD.CENTENMS.DTMASTER SHR 入力 店所マスター
VKBANKM VKAD.BANKMAST.NMMASTER SHR 入力 銀行マスター
VKSYUPR VKAD.SSYUPRNT.DTMASTER SHR 入力 優先印刷マスター
MDMIKAN VKAD.MISYUKAN.DTMASTER SHR 入力 未収管理マスター(推定)。LKN0010(BB)が使用と推定
OUTFILE SYSOUT=(E,KS601511,99) - 出力 帳票。RECFM=FA、BLKSIZE=133
OUTFIL2 SYSOUT=(E,KS601512,99) - 出力 帳票。RECFM=FA、BLKSIZE=133

処理内容(KS60151 設計書)

  • WORK0635 の新書式の行データを、プレ印刷の請求書(1ページ50行)に編集する。店所・銀行・優先印刷マスターで店名・住所・振込口座等を補う。
  • OUTFILE(KS601511)=控え:全請求先。明細不要(優先印刷マスター UPRNASKB='6')の請求先には '#' を付ける。
  • OUTFIL2(KS601512)=送付用:明細不要の請求先を除く。1行目の店所コードを集約店所(LKN0010。BB)に置き換える(自店出力の店所=SEQPRTNC と、自店所出力の顧客を除く)。
  • ★ 元払計・着払計の行は印字しない。

5.3 系統B:郵送用の請求書(No.10~13)

JCL:No.11 KS60135P

EXEC PGM=KS60135P

DD名 DSN/指定 DISP 入出力 備考
SYSPRINT SYSOUT=* - 出力
SYSUDUMP SYSOUT=* - 出力
TRYFILE ADG.ALTLIB(SEQTRYTN) SHR 入力 パラメータメンバ
ALLSQDT TEMP.DAISEQ4J.WORK0620 SHR 入力 DASD09
SQALLOK TEMP.DAISEQ4J.WORK062S (NEW,KEEP,DELETE) 出力 RECFM=VB、BLKSIZE=12000、SPACE=(CYL,(300,100),RLSE)、DASD09

処理内容(KS60135 設計書)

  • SEQTRYTN(郵送対象の店所一覧、最大100件)にある配信店の請求先だけを、レコードを変えずに抜き出す。
  • データID 31~33(単品訂正・一括訂正)は除外する。
  • ★ 出力の判定は荷主コード7桁の区切りの先頭レコードの配信店だけで行う。
  • ★ 訂正明細を除いても鑑の金額は変えないため、請求書で鑑と明細が一致しない可能性がある。

JCL:No.12 KS60144P

EXEC PGM=KS60144P

DD 構成は No.8 と同一。データセットのみ異なる。

DD名 No.8(系統A) No.12(系統B)
SQALLOK(入力) TEMP.DAISEQ4J.WORK0620 TEMP.DAISEQ4J.WORK062S
SQPRTDA(出力) TEMP.DAISEQ4J.WORK0635 TEMP.DAISEQ4J.WORK0700
SQUPSEQ(出力) TEMP.DAISEQ4J.WORK0642 TEMP.DAISEQ4J.WORK0701
SEQPAGS(出力) TEMP.DAISEQ4J.WORK0646 TEMP.DAISEQ4J.WORK0702

処理内容:No.8 と同じプログラム。入力が郵送対象・訂正除外のデータになるだけ。

JCL:No.13 KS60152P

EXEC PGM=KS60152P

DD名 DSN/指定 DISP 入出力 備考
SYSPRINT SYSOUT=* - 出力
SYSUDUMP SYSOUT=* - 出力
ALTFILE ADG.ALTLIB(SEQPRTNC) SHR 入力 No.9 と同じメンバ
SQHAIDA TEMP.DAISEQ4J.WORK0700 SHR 入力 DASD09
VKTENMS VKAD.CENTENMS.DTMASTER SHR 入力 店所マスター
VKBANKM VKAD.BANKMAST.NMMASTER SHR 入力 銀行マスター
VKSYUPR VKAD.SSYUPRNT.DTMASTER SHR 入力 優先印刷マスター
VKCORPO VKAD.CORPOMAN.DTMASTER SHR 入力 顧客法人管理マスター
MDMIKAN VKAD.MISYUKAN.DTMASTER SHR 入力 未収管理マスター(推定)
OUTFILE SYSOUT=(E,KS601521,99) - 出力 帳票。RECFM=FA、BLKSIZE=133
OUTFIL2 SYSOUT=(E,KS601522,99) - 出力 帳票。RECFM=FA、BLKSIZE=133
OUTFIL3 SYSOUT=(E,KS601523,99) - 出力 帳票。RECFM=FA、BLKSIZE=133

処理内容(KS60152 設計書)

  • 帳票の編集は KS60151P と同じ。顧客ごとに優先印刷マスターで出力先を1つに振り分ける。
優先印刷マスター 出力先 1行目の店所コード
無い OUTFILE(KS601521、インフォコム)と OUTFIL3(KS601523、インフォコム送付用)の両方 OUTFILE=代表扱い店(顧客法人管理マスター CORPZDTN)、OUTFIL3=発行店
有る(明細不要以外) OUTFIL2(KS601522、事業所送付用) 集約店所(LKN0010)。自店出力の店所・自店所出力の顧客は発行店
有る(明細不要 '6') どこにも出さない -
  • 2行目に顧客法人管理マスターの集約代表コードを印字する。★ 2ページ目以降は自分の荷主コードになる。

5.4 系統C:郵送集約の請求一覧(No.14~27)

系統Cのワークはすべて TEMP.KS60750J.WORKnnnn(DASD09)。業務プログラムのステップには SYSPRINT 等の DD がなく、件数メッセージはジョブログに出る。

JCL:No.15 KS60750P

EXEC PGM=KS60750P

DD名 DSN/指定 DISP 入出力 備考
INFILE VKAD.CORPOMAN.DTMASTER SHR 入力 顧客法人管理マスターを順次に全件読む
OUTFILE K-WORK0010 (NEW,KEEP,DELETE) 出力 RECFM=FB、LRECL=18、BLKSIZE=9000、SPACE=(9000,(1000,100),RLSE)

処理内容(KS60750 設計書):顧客法人管理マスターを全件読み、荷主≠集約代表(CORPZAND)のものについて「荷主7・集約代表7・代表扱い店4」を出力。★ 集約代表が空白の荷主も出力される。

JCL:No.17 KS60760P

EXEC PGM=KS60760P

DD名 DSN/指定 DISP 入出力 備考
VKSYUPR VKAD.SSYUPRNT.DTMASTER SHR 入力 優先印刷マスター
INFILE K-WORK0020 SHR 入力 対応表(集約代表順)
OUTFIL1 K-WORK0030 (NEW,KEEP,DELETE) 出力 FB/18/9000
OUTFIL2 K-WORK0040 (NEW,KEEP,DELETE) 出力 FB/18/9000

処理内容(KS60760 設計書):集約代表が変わるたびに代表自身のレコードを補い、代表・配下それぞれの荷主コードで優先印刷マスターを引いて、有る → OUTFIL1(K-WORK0030)、無い → OUTFIL2(K-WORK0040)に分ける。★ 代表と配下が別のファイルに分かれることがある。明細不要('6')は区別しない。

JCL:No.18 KS60770P

EXEC PGM=KS60770P

DD名 DSN/指定 DISP 入出力 備考
INFILE TEMP.DAISEQ4J.WORK0620 SHR 入力 共通データ
OUTFILE K-WORK0050 (NEW,KEEP,DELETE) 出力 RECFM=VB、BLKSIZE=12000、SPACE=(CYL,(300,100),RLSE)

処理内容(KS60770 設計書):見出しデータ(ID 00)のうち、請求額(運賃+料金+消費税+保険料)≠0 のものだけを出力。店所では絞らない。★ INPUT COUNT は常に 0 と表示される。

JCL:No.22、23 KS60780P

EXEC PGM=KS60780P

DD名 No.22 No.23 入出力 備考
INFILE K-WORK0090 K-WORK0090 入力 No.21 の出力。両ステップで同じ
TRFILE K-WORK0060 K-WORK0080 入力 顧客リスト1/顧客リスト2
OUTFILE K-WORK0100 K-WORK0110 出力 RECFM=VB、BLKSIZE=12000、SPACE=(CYL,(300,100),RLSE)

処理内容(KS60780 設計書)

  • 見出し(請求先番号順)と対応表(荷主コード順)を荷主コード7桁で突き合わせ、一致したものだけを出力する。データIDを 00(代表)/99(配下)に、区分を「集約代表7+代表扱い店4」に書き換える。仮締は出力しない。
  • No.22 は優先印刷マスターに有る荷主(→ 事業所用)、No.23 は無い荷主(→ エコデリバー用)。INFILE は共通。
  • ★ 一致すると両ファイルを1件ずつ進めるため、同じ荷主の2件目以降の請求先(枝番違い)は捨てられる。

JCL:No.25、27 KS60790P

EXEC PGM=KS60790P

DD名 DSN/指定 DISP 入出力 備考
VKKANBS VK47.KANBASED.DTMASTER SHR 入力 顧客基本マスター。JOB「DAIMNT3J」で再作成される
VKTENMS VKAD.CENTENMS.DTMASTER SHR 入力 店所マスター
VKBANKM VKAD.BANKMAST.NMMASTER SHR 入力 銀行マスター
VKKONAM VKAD.KONAMMST.DTMASTER SHR 入力 荷主名マスター(推定)
VKCORPO VKAD.CORPOMAN.DTMASTER SHR 入力 顧客法人管理マスター
VETENCD SEAD.TENSCODE.CDMASTER SHR 入力 DASD11
INFILE No.25:K-WORK0120/No.27:K-WORK0130 SHR 入力 突合せ済みの見出し(代表扱い店・集約代表順)
OUTFILE No.25:SYSOUT=(E,KS607902,99)/No.27:SYSOUT=(E,KS607901,99) - 出力 帳票。RECFM=FA、LRECL=133

処理内容(KS60790 設計書)

  • 集約代表ごとに、顧客基本マスター(KANBASED)・顧客法人管理マスターから代表の名称・住所・口座、店所マスターから発行店の情報を取り、代表あての請求一覧(1行=1請求先の請求額。1ページ30件、最終ページに合計)を出力する。
  • No.25(K-WORK0120)=事業所用(KS607902)、No.27(K-WORK0130)=エコデリバー用(KS607901)。プログラム・様式は同じ。
  • ★ 店住所は先頭14文字しか印字されない。顧客基本マスターに代表がないと、前の代表の住所が残る。420件を超える請求先は一覧に載らない。

5.5 系統D:郵送顧客CSV(No.28~31)

JCL:No.29 KS60630P

EXEC PGM=KS60630P

DD名 DSN/指定 DISP 入出力 備考
SYSPRINT SYSOUT=* - 出力
SYSDBOUT SYSOUT=* - 出力
VKSYUPR VKAD.SSYUPRNT.DTMASTER SHR 入力 優先印刷マスター
VKCORPO VKAD.CORPOMAN.DTMASTER SHR 入力 顧客法人管理マスター
INFILE TEMP.DAISEQ4J.WORK062S SHR 入力 No.11 の出力(系統Bの抽出データ)
CSVFILE SEAD.DAISEQ4J.CSV (NEW,KEEP,DELETE) 出力 RECFM=VB、BLKSIZE=12000、SPACE=(12000,(8000,2500),RLSE)、DASD11

処理内容(KS60630 設計書)

  • WORK062S の見出しデータ1件(=請求先1件)ごとに、CSV を1行出力する。先頭に見出し行。
  • 列:締め日(期間至)、扱い店(CORPATTN)、請求先顧客コード(荷主7桁)、集約コード(CORPZAND)、取扱(優先印刷マスターに無い=エコ/有る=優先/明細不要=不要)。
  • ★ 枝番を出さないため、同じ荷主の複数の請求先は区別できない行になる。扱い店は CORPATTN で、KS60152P の CORPZDTN とは別の項目。

No.30、31 MVSCMD1

//MVSCMD1  EXEC MVSCMD,PARM='F AUTO1,ASVQ803'
//MVSCMD1  EXEC MVSCMD,PARM='F AUTO1,ASVQ808'
  • カタログ式プロシージャ MVSCMD(BB)に、オペレーターコマンド文字列を PARM で渡している。
  • 発行するコマンドは MODIFY コマンド(F)で、タスク AUTO1 に対して ASVQ803、ASVQ808 を指示する。AUTO1 は自動運転系のタスク、指示内容は後続の配信・転送処理の起動または保留解除と推定されるが、JCLからは判別できない(BB)。
  • 2ステップとも DD 文の追加・変更はない。

5.6 ソートステップ(キーの意味)

No SORTIN → SORTOUT SORT FIELDS データ部の位置 キーの項目 目的
2 DAISEQ1J.WORK0510 → WORK0600 (54,3,CH,A) 50~52 地名コード SDTBCHCD KS60130P の地名マスター読込み順
5 WORK0610 → WORK0620 7項目(5.1) 1~45 配信店・請求先・データID・区分・日付・送り状 請求書の印刷順
16 K-WORK0010 → 0020 (8,7,CH,A) 8~14 集約代表コード KS60760P の代表ごとの処理
19 K-WORK0030 → 0060 (1,7,CH,A) 1~7 荷主コード KS60780P の突合せキー
20 K-WORK0040 → 0080 (1,7,CH,A) 1~7 荷主コード 同上
21 K-WORK0050 → 0090 (19,8,PD,A) 15~22 請求先番号 SDTASQNO(15~21)+区分の1バイト目 同上。★ キーが1バイト長い(10章 No.13)
24 K-WORK0100 → 0120 (33,4,CH,A,26,7,CH,A,51,4,CH,A) 29~32、22~28、47~50 代表扱い店、集約代表(KS60780P が区分に設定)、扱い店 SDTACKTT KS60790P の代表ごとの印刷
26 K-WORK0110 → 0130 同上 同上 同上 同上
  • 可変長(VB)のキー位置は、先頭4バイトのレコード長部(RDW)を含む指定位置から4を引いた位置がデータ部の位置。

5.7 IEHPROGM ステップ(まとめ)

No ステップ名 ボリューム SCRATCH 対象 位置づけ
1 DELETE DASD09 TEMP.DAISEQ4J.WORK0600、0610、0620、0630、0631、0632、0641 事前削除
4 DELETE DASD09 TEMP.DAISEQ4J.WORK0600 使用後削除
6 DELETE DASD09 TEMP.DAISEQ4J.WORK0610 使用後削除
7 SCRATCH DASD09 TEMP.DAISEQ4J.WORK0635、0642、0646 事前削除
10 DELETE DASD09 TEMP.DAISEQ4J.WORK062S、0700、0701、0702 事前削除
14 SCRATCH DASD09 TEMP.KS60750J.WORK0010、0020、0030、0040、0050、0060、0070、0080、0090、0100、0110、0120、0130 事前削除
28 DELETE DASD11 SEAD.DAISEQ4J.CSV 事前削除
32 DELETE DASD09 TEMP.DAISEQ4J.WORK0600、0610、0630、0631、0632、0635 使用後削除
33 DELETE DASD30 TEMP.DAISEQ1J.WORK0510 入力データの削除

6. 出力物一覧

6.1 帳票(電子帳票 SYSOUT クラスE、用紙 99)

ライター名 出力ステップ 帳票 対象 1行目の店所コード(配信先)
KS601511 No.9 KS60151P(OUTFILE) 新請求書(特積)控え 全請求先(明細不要には '#') 発行店
KS601512 No.9 KS60151P(OUTFIL2) 新請求書(特積)送付用 明細不要を除く全請求先 集約店所(条件付き)
KS601521 No.13 KS60152P(OUTFILE) 新請求書(郵送)インフォコム 郵送対象店所で、優先印刷マスターに無い請求先 代表扱い店
KS601523 No.13 KS60152P(OUTFIL3) 新請求書(郵送)インフォコム送付用 同上(KS601521 と同じ中身) 発行店
KS601522 No.13 KS60152P(OUTFIL2) 新請求書(郵送)事業所送付用 郵送対象店所で、優先印刷マスターに有る請求先(明細不要を除く) 集約店所(条件付き)
KS607902 No.25 KS60790P 郵送集約 請求一覧(事業所用) 集約される請求先のうち優先印刷マスターに有るもの、とその代表 (1行目は改ページのみ。2行目に代表扱い店・集約代表)
KS607901 No.27 KS60790P 郵送集約 請求一覧(エコデリバー用) 同上のうち優先印刷マスターに無いもの 同上
  • 帳票の様式・印刷イメージは各プログラム設計書を参照(KS60151 6章、KS60152 6章、KS60790 6章)。

6.2 データセット出力

データセット 作成 中身 JOB内の利用
SEAD.DAISEQ4J.CSV No.29 郵送顧客CSV(5列) なし(No.30・31 のコマンドで後続処理が取り込むと推定)
WORK0642、0701 No.8、12 印刷照会マスター更新用 なし(別JOBでマスター反映と推定)
WORK0646、0702 No.8、12 顧客ごとの請求書枚数 なし

7. データセット一覧

7.1 恒久データセット(すべて DISP=SHR、読込みのみ)

DSN 名称 使用ステップ(DD名) 主な用途
ENT.BATCHA.LOD ロードライブラリ JOBLIB
VKAD.CHIMEIET.DTMASTER 地名マスター No.3(VKCHINM) 漢字地名
VKAD.SSYUPRNT.DTMASTER 優先印刷マスター No.3、9、13、17、29(VKSYUPR) 配信店変換(No.3)、明細不要・自店所出力・出力先の振分け
VKAD.SQSSPRSK.DTMASTER 印刷照会マスター No.8、12(VKSEQSK) SQUPSEQ の元(更新はしない)
VKAD.CENTENMS.DTMASTER 店所マスター No.8、9、12、13、25、27(VKTENMS) 店略称・住所・〒・電話(No.8・12 は読むが未使用)
SEAD.TENSCODE.CDMASTER 店所コードマスター No.8、12、25、27(VETENCD) 外部手続き LSS0050/LSS0051(BB)が使用と推定
VKAD.BANKMAST.NMMASTER 銀行マスター No.9、13、25、27(VKBANKM) 銀行名・支店名
VKAD.MISYUKAN.DTMASTER (未収管理と推定) No.9、13(MDMIKAN) 外部手続き LKN0010(BB)が使用と推定
VKAD.CORPOMAN.DTMASTER 顧客法人管理マスター No.13、25、27、29(VKCORPO)、No.15(INFILE) 集約代表・代表扱い店・扱い店・法人名
VK47.KANBASED.DTMASTER 顧客基本マスター No.25、27(VKKANBS) 代表の名称・住所・口座
VKAD.KONAMMST.DTMASTER 荷主名マスター(推定) No.25、27(VKKONAM) 請求一覧の荷主名
ADG.ALTLIB(SEQPRTNC) 自店出力の店所一覧 No.9、13(ALTFILE) 送付用の店所コードを集約店所に置き換えない店所
ADG.ALTLIB(SEQTRYTN) 郵送対象の店所一覧 No.11(TRYFILE) 系統B・D の対象店所
  • 本JOB のプログラムは、どのマスターも更新しない(すべて INPUT で OPEN)。

7.2 ワーク・出力データセット

DSN VOL 属性 スペース
TEMP.DAISEQ1J.WORK0510(入力) DASD30 別JOBで作成(可変長と推定) -
TEMP.DAISEQ4J.WORK0600、0610、0620 DASD09 VB/LRECL指定なし/12000 CYL(250,200)
TEMP.DAISEQ4J.WORK0635、0700 DASD09 VB/LRECL指定なし/12000 (12000,(8000,2500))
TEMP.DAISEQ4J.WORK0642、0701 DASD09 FB/120/12000 (12000,(5,5))
TEMP.DAISEQ4J.WORK0646、0702 DASD09 FB/30/6300 (6300,(100,50))
TEMP.DAISEQ4J.WORK062S DASD09 VB/LRECL指定なし/12000 CYL(300,100)
TEMP.KS60750J.WORK0010、0020、0030、0040、0060、0080 DASD09 FB/18/9000 (9000,(1000,100))
TEMP.KS60750J.WORK0050、0090、0100、0110、0120、0130 DASD09 VB/LRECL指定なし/12000 CYL(300,100)
SEAD.DAISEQ4J.CSV DASD11 VB/LRECL指定なし/12000 (12000,(8000,2500))

8. 実行条件と異常時の動作

8.1 実行条件

指定箇所 指定 動作
JOB文 COND=(9,LT) いずれかのステップのRCが10以上になった時点で、以降の全ステップを実行せずJOB終了
  • RC 0~9 は正常扱いで後続へ進む。

  • IEHPROGM は SCRATCH 対象が存在しない場合 RC=8 となるが、上記条件によりJOBは継続する。事前削除ステップを成立させるための設定と考えられる。

  • 業務プログラムはリターンコードを設定しない(正常時 0)。異常は PL/I の標準処理による異常終了(ABEND)で検知される。

8.2 正常終了時に残るデータセット

正常終了後も次のデータセットは削除されず、次回実行時の事前削除まで残る。

データセット 次回の削除ステップ
TEMP.DAISEQ4J.WORK0620 No.1
TEMP.DAISEQ4J.WORK0642、0646 No.7
TEMP.DAISEQ4J.WORK062S、0700、0701、0702 No.10
TEMP.KS60750J.WORK0010~0130(作成した11本) No.14
SEAD.DAISEQ4J.CSV No.28

8.3 異常終了時の状態と再実行

異常発生箇所 状態 再実行の考え方
No.2~6 共通データ WORK0620 が未完成。入力 WORK0510 は残っている 先頭から再実行できる(No.1 が途中のワークを削除する)
No.7~9(系統A) WORK0620 は完成。系統Aの帳票が未出力または途中 No.7 から再実行できる
No.10~13(系統B) 系統Aの帳票は出力済み No.10 から再実行できる
No.14~27(系統C) 系統A・Bの帳票は出力済み No.14 から再実行できる
No.28~29 帳票7種は出力済み。CSV が未作成または途中 No.28 から再実行できる(WORK062S が必要)
No.30~33 CSV まで完了。コマンド発行・削除が未了 未実行のステップのみ実行する
  • 先頭からの再実行と帳票の二重出力:帳票を出力済みの状態で先頭や途中から再実行すると、同じ帳票が再度 SYSOUT へ出力される。出力済み分の取消しまたは再実行範囲の限定が必要となる。

  • 正常終了後の再実行:No.33 で入力の TEMP.DAISEQ1J.WORK0510 を削除するため、正常終了後は先頭から再実行できない。WORK0620 は残っているので、No.7 以降の再実行は可能である。

  • ステップ名指定のリスタート:ステップ名が重複している(DELETE×7、SORT×2、SCRATCH×2、KS60144P×2、SORT2×2、KS60780P×2、SORT4×2、KS60790P×2、MVSCMD1×2)ため、ステップ名指定(RESTART=)では対象が一意に決まらない。

  • コマンドの再発行:No.30、31 を再実行すると同じコマンドが再度発行される。

  • プログラム上の再実行の注意:KS60144P の SQUPSEQ(WORK0642、0701)は「マスター値+今回分」なので、再実行で作り直しても二重加算にはならない。ただし、マスターへの反映(別JOB)を済ませた後に再実行すると、反映済みの値に再度加算された内容になる。


9. ブラックボックス一覧

種別 名称 使用箇所 本書での扱い
カタログ式PROC USORTG No.2、5 ソート
カタログ式PROC USORTM No.16、19~21、24、26 ソート
カタログ式PROC MVSCMD No.30、31 オペレーターコマンドの発行
運用系タスク AUTO1(ASVQ803、ASVQ808) No.30、31 MODIFY コマンドの受け側。CSV 等の後続処理と推定
外部手続き LKN0010 No.9、13(KS60151P、KS60152P) 店所コード → 集約店所コード
外部手続き LSS0050 No.8、12(KS60144P) 発行店コード → 店名
外部手続き LSS0051 No.25、27(KS60790P) 扱い店コード → 店名
パラメータメンバ SEQPRTNC、SEQTRYTN No.9、11、13 用途は判明(7.1)。登録内容は不明
マスター VKAD.KONAMMST、VKAD.MISYUKAN、SEAD.TENSCODE 7.1 レイアウト未入手
別JOB TEMP.DAISEQ1J.WORK0510 の作成元 No.2 DAISEQ1J と推定
別JOB SQUPSEQ、SEQPAGS、CSV の取込み先 - 不明

10. 留意事項・要確認事項

10.1 JCL 上の問題(初版から継続)

No.1 正常時でも RC=8 のステップが発生する

  • No.1、14、32 は本JOB で作らないワーク(WORK0630~0632、0641、K-WORK0070)や削除済みのワークを SCRATCH 対象にしており、正常時でも RC=8 になり得る。JOB の最大 RC では正常・異常を判別できない。

No.2 入力データを最終ステップで削除している

  • No.33 で TEMP.DAISEQ1J.WORK0510 を削除するため、正常終了後は先頭からの再実行ができない。

No.3 ステップ名の重複

  • DELETE×7、SORT×2、SCRATCH×2、KS60144P×2、SORT2×2、KS60780P×2、SORT4×2、KS60790P×2、MVSCMD1×2。ステップ名指定のリスタートができない。

No.4 他JOB名を持つワーク

  • 系統C のワークは TEMP.KS60750J.WORKnnnn。KS60750J という別 JOB と同時に実行すると競合する。

No.5 SYSPRINT 等の DD がないステップ

  • 系統C の業務プログラム(No.15~27)は件数メッセージがジョブログに出る。

No.6 LRECL 指定のない可変長ファイル・CSV

  • CSV(SEAD.DAISEQ4J.CSV)も LRECL の指定がなく、プログラム側にも指定がない(KS60630 設計書)。

No.7 Y2P による世紀判定

  • No.5 の日付キー。設定値の確認が必要。

No.8 顧客基本マスターの再作成との重なり

  • VK47.KANBASED.DTMASTER は JOB DAIMNT3J で再作成される。本JOB の No.25・27 と重ならないこと。

10.2 プログラムをまたがる問題(第2版で追加)

No.9 配信店 1025 の扱い

  • KS60130P が特定5荷主の配信店を 1025 に固定し、KS60144P が 1025 を 1001 に読み替える。並び順は 1025 の位置のままのため、KS60144P の印刷照会マスター更新用データ(SQUPSEQ)に 1001 が2件出る(KS60144 設計書 10章 No.1)。

No.10 「明細不要」「優先印刷」の扱いがプログラムごとに違う

プログラム 優先印刷マスターに無い 有る 有る・明細不要('6')
KS60151P(系統A) 控え・送付用 控え・送付用 控え('#' 付き)のみ
KS60152P(系統B) インフォコム2種 事業所送付用 出力しない
KS60630P(系統D) 取扱=エコ 取扱=優先 取扱=不要(CSV には出る)
KS60760P(系統C) エコデリバー用 事業所用 事業所用(区別しない)
  • 明細不要の顧客が、系統C の事業所用請求一覧には載る一方、系統B の請求書には出ない。業務上の意図の確認が必要。

No.11 郵送集約のグループが分かれる・欠ける

  • KS60760P の振分けは荷主ごとのため、代表と配下が事業所用・エコデリバー用に分かれる(KS60780 設計書 6.6)。
  • KS60780P の1対1マッチングにより、同じ荷主の2件目以降の請求先は請求一覧に載らない。
  • 代表の請求額が0(KS60770P で除外)または仮締の場合、代表の行がない一覧になる。
  • KS60750P で集約代表が空白のまま抽出された荷主は、KS60790P で「前の代表の住所」が残る見出しになる。

No.12 同じ請求先が複数の帳票に出る

  • 系統A は全請求先、系統B は郵送対象店所の請求先を出力するため、郵送対象の請求先は特積の請求書(KS601511/12)と郵送の請求書(KS601521~23)の両方に出る。系統C の請求一覧にも、集約対象なら載る。
  • 系統B は訂正明細を除いたデータ、系統A は訂正を含むデータから作るため、同じ請求先でも明細と計が異なり得る(KS60135 設計書 5.2)。

No.13 SORT3 のキー長

  • No.21 のキー(データ部 15~22、8バイト PD)は請求先番号(7バイト)より1バイト長く、区分の1バイト目を含む。通常は空白なので請求先番号順になると考えられるが、確認が必要(KS60770 設計書 6.4)。

No.14 系統B の対象判定

  • KS60135P は荷主コード7桁の区切りの先頭レコードの配信店で、郵送対象かどうかを決める。配信店の境目で同じ荷主コードが続くと、後ろの配信店の分も前の判定に従う(KS60135 設計書 7.4)。

No.15 帳票上の不具合(主なもの)

帳票 内容 設計書
KS601511~12、KS601521~23 元払計・着払計の行は印字されない KS60151 5.5
KS601521~23 2ページ目以降の集約代表コードが自分の荷主コードになる KS60152 5.2
KS607901~02 店住所が先頭14文字で切れる KS60790 5.4
KS607901~02 421件目以降の請求先は一覧に載らないが合計には入る KS60790 5.5

No.16 後続で使われない出力

  • SQUPSEQ(印刷照会マスター更新用)、SEQPAGS(請求書枚数)、CSV は本JOB 内で使われない。取り込む別JOB の確認が必要。No.8 と No.12 の SQUPSEQ は同じマスター値を起点にしているため、両方を置換で反映すると片方の加算が失われる(KS60144 出力ファイル解説 8章)。

11. 関連設計書

設計書 内容
KS60130_詳細設計書.md 地名付加・配信店変換
KS60135_詳細設計書.md 郵送対象店所の抽出
KS60144_詳細設計書.md/KS60144_出力ファイル解説.md 請求書行データ作成、出力3ファイルの解説
KS60151_詳細設計書.md 新請求書(特積)、印刷イメージ
KS60152_詳細設計書.md 新請求書(郵送)3種、印刷イメージ
KS60630_詳細設計書.md 郵送顧客 CSV、CSV イメージ
KS60750_詳細設計書.md 郵送集約の対応表
KS60760_詳細設計書.md 代表の補完と振分け
KS60770_詳細設計書.md 見出しの抽出
KS60780_詳細設計書.md 見出しと対応表の突合せ(No.22/23 の違い)
KS60790_詳細設計書.md 郵送集約の請求一覧、印刷イメージ(30件超を含む)

以上

(3-3/3)