Files
cobol-tna-system/詳細設計書/詳細設計書_KYU06UPD.md
qiuqiuqiu 75475b3fa1 Add Subsystem C (KYU01-09): all 9 programs, design docs, resource lists, DDL, COPY, coverage stats
KYU programs for payroll calculation:
  KYU01CVT - CSV conversion
  KYU02REG - attendance registration
  KYU03AGG - aggregation
  KYU04CAL - salary calculation
  KYU05DED - deduction calculation
  KYU06UPD - DB update
  KYU07DIV - division/pay-slip
  KYU08PRI - print output
  KYU09MRG - merge output

Includes:
  - Source programs (9 .cbl)
  - Compiled executables (9 .exe)
  - Detailed design docs (9 + sign-off)
  - Basic design doc (subsystem C overview)
  - Resource lists (9)
  - DDL schema (schema_kyu.sql)
  - COPY book (KYU99REC.cpy)
  - Coverage statistics update
  - DB definition update (STATUS values)
  - Overall system design document
2026-07-09 08:09:59 +08:00

5.3 KiB
Raw Permalink Blame History

詳細設計書

基本情報

# 項目 内容
1 システム名 給与計算システム
2 プログラムID KYU06UPD
3 プログラム名 給与計算結果DB2更新処理
4 PGMタイプ メイン
5 PGMパターン DB更新
6 機能概要 SALARY-NETをDB2 SALARY-RESULTSに登録する。
7 INSERT実行→SQLCODE=-803(重複)の場合UPDATEに切替(UPSERT
8 SQLコード≠0かつ≠-803の場合ERROR-LOGに出力

※PGMタイプ:メイン、サブ ※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新

前提条件

NO 対象ファイル 条件
1 SALARY-NET(KYU06R02) ソート不要。KYU05DEDの出力を入力

使用ファイル一覧

NO 使用ファイル/DB名 識別子 DD名 I/O COPY群 形式 ブロック レコード長 媒体 備考
1 SALARY-NET R02 KYU06R02 I KYU04REC FB 200 PS KYU05DED出力
2 ERROR-LOG W03 KYU06W03 O KYU99REC VB 200 PS
3 SALARY-RESULTS (DB2) O DB2 EXEC SQL INSERT / UPDATE

キー項目一覧

NO ファイル名 ソート条件(キー項目) キー条件(マッチング/キーブレイク)
1 該当なし なし なし

使用モジュール一覧

NO 機能 プログラムID 使用COPY名
1 メッセージ編集出力SUB SUB02MSG ZANMSGAC
2 ABEND処理SUB SUB03END ZANENDAC

処理詳細

1.初期処理(1000ITTSOR
  1-1.開始メッセージ出力
    【メッセージ編集】
    メッセージ番号:1(開始メッセージ)
  1-2.コンパイル日時出力
    【メッセージ編集】
    メッセージ番号:33(コンパイル日時)
    PARM1:コンパイル日時
    PARM2'COMPILED'
  1-3.ワークエリアの初期化
  1-4.PARMYEAR-MONTH)取得
    ACCEPT FROM COMMAND-LINE
    未指定時は'202605'をデフォルト値とする
  1-5.使用ファイルのOPEN
    R02INNFIL / W03OUTFIL をOPEN
  1-6.DB接続(EXEC SQL CONNECT TO 'data/SALARY.db'
  1-7.R02を読み込む。(1100R02INNSOR)(1回目)

2.主処理(2000MAJSOR)(R02を全て読み終えるまで下記を繰り返す)
  2-1.ホスト変数セット
    R02EMP-ID → DBV-EMP-ID
    CNS-YEAR-MONTH-PARM → DBV-YEAR-MONTH
    R02GROSS-PAYMENT → DBV-GROSS-PAYMENT
    R02INCOME-TAX → DBV-INCOME-TAX
    R02INSURANCE → DBV-INSURANCE
    R02RESIDENT-TAX → DBV-RESIDENT-TAX
    R02NET-PAYMENT → DBV-NET-PAYMENT
  2-2.EXEC SQL INSERT INTO SALARY-RESULTS
    【SQL】
    INSERT INTO SALARY-RESULTS
        (EMP-ID, YEAR-MONTH,
         GROSS-PAYMENT, INCOME-TAX,
         INSURANCE, RESIDENT-TAX,
         NET-PAYMENT, UPDATED-AT)
    VALUES
        (:DBV-EMP-ID, :DBV-YEAR-MONTH,
         :DBV-GROSS-PAYMENT, :DBV-INCOME-TAX,
         :DBV-INSURANCE, :DBV-RESIDENT-TAX,
         :DBV-NET-PAYMENT, CURRENT TIMESTAMP)
  2-3.SQLCODE判定
    2-3-1.SQLCODE = 0(正常登録)
      CUN-DB-INSカウンタを+1
      → R02次件読込(1100R02INNSOR
    2-3-2.SQLCODE = -803(重複)
      【EXEC SQL UPDATE】
      UPDATE SALARY-RESULTS SET
          GROSS-PAYMENT  = :DBV-GROSS-PAYMENT,
          INCOME-TAX     = :DBV-INCOME-TAX,
          INSURANCE      = :DBV-INSURANCE,
          RESIDENT-TAX   = :DBV-RESIDENT-TAX,
          NET-PAYMENT    = :DBV-NET-PAYMENT,
          UPDATED-AT     = CURRENT TIMESTAMP
      WHERE EMP-ID    = :DBV-EMP-ID
        AND YEAR-MONTH = :DBV-YEAR-MONTH
      【SQLCODE判定】
      UPDATE SQLCODE = 0 → CUN-DB-UPDカウンタを+1
      UPDATE SQLCODE ≠ 0 → エラー出力(2100ERROUTSOR
      → R02次件読込(1100R02INNSOR
    2-3-3.SQLCODE = その他(DBエラー)
      エラー出力(2100ERROUTSOR
      → R02次件読込(1100R02INNSOR
  2-4.R02を読み込む。(1100R02INNSOR)(2件目以降)

3.終了処理(3000STPSOR
  3-1.入出力ファイルのクローズ
  3-2.入出力件数出力メッセージ出力
    【入力メッセージ編集】
    メッセージ番号:6(入力件数メッセージ)
    PARM1'KYU06R02'
    PARM2CUN-R02INN
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1'DB-INSERT'
    PARM2CUN-DB-INS
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1'DB-UPDATE'
    PARM2CUN-DB-UPD
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1'KYU06W03'
    PARM2CUN-W03OUT
  3-3.終了メッセージ出力
    【メッセージ編集】
    メッセージ番号:2(終了メッセージ)

出力レコード定義

出力ファイル1W03/ERROR-LOG

No 項目名 設定元 備考
1 ERR-CATEGORY 'DB-ERR'で固定
2 ERR-DETAIL DBV-EMP-ID エラー発生社員番号