Files
cobol-tna-system/詳細設計書/詳細設計書_KYU02REG.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 KYU02REG
3 プログラム名 社員マスタDB2登録処理
4 PGMタイプ メイン
5 PGMパターン DB更新
6 機能概要 EMP-RECORD80B固定長)を読み込み、DB2 EMP-MASTERにINSERTする。
7 SQLCODE=-803(重複)の場合はUPDATEに切替える(UPSERT)。
8 エラー時はERROR-LOGに出力する。

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

前提条件

NO 対象ファイル 条件
1 EMP-RECORD ソート不要。KYU01CVT出力の80B固定長ファイル。社員番号昇順である必要はない

使用ファイル一覧

NO 使用ファイル/DB名 識別子 DD名 I/O COPY群 形式 ブロック レコード長 媒体 備考
1 EMP-RECORD R02 KYU02R02 I KYU01REC FB 80 PS
2 ERROR-LOG W03 KYU02W03 O KYU99REC VB 200 PS
3 EMP-MASTER(DB2) DB2 EXEC SQL INSERT/UPDATE

キー項目一覧

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

使用モジュール一覧

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.ワークエリアの初期化
    INITIALIZE WRKARA
  1-4.DB接続
    EXEC SQL CONNECT TO 'data/SALARY.db' END-EXEC
  1-5.使用ファイルのオープン
    OPEN INPUT R02INNFIL
    OPEN OUTPUT W03OUTFIL
  1-6.R02を読み込む。(1100R02INNSOR)(1回目)

2.主処理(2000MAJSOR)(R02を全て読み終えるまで下記を繰り返す)
  2-1.DB2ホスト変数にMOVE
    MOVE R02EMP-ID〜R02STATUS → DBV-EMP-ID〜DBV-STATUS
  2-2.EXEC SQL INSERT試行(2000MAJSOR内インライン)
    EXEC SQL INSERT INTO EMP-MASTER
        (EMP-ID, EMP-NAME, DEPT-CODE, REGION-CODE,
         CATEGORY-CODE, BASE-SALARY, HOURLY-RATE,
         DEPENDENT-COUNT, STATUS, UPDATED-AT)
    VALUES
        (:DBV-EMP-ID, :DBV-EMP-NAME, :DBV-DEPT-CODE,
         :DBV-REGION-CODE, :DBV-CATEGORY-CODE,
         :DBV-BASE-SALARY, :DBV-HOURLY-RATE,
         :DBV-DEPENDENT-COUNT, :DBV-STATUS,
         CURRENT TIMESTAMP)
    END-EXEC
  2-3.SQLCODE判定
    2-3-1.SQLCODE = 0 → INSERT成功
      CUN-DB-INS加算、次行READ
    2-3-2.SQLCODE = -803 → 重複
      EXEC SQL UPDATE EMP-MASTER SET ... WHERE EMP-ID = :DBV-EMP-ID
      SQLCODE = 0 → CUN-DB-UPD加算
      SQLCODE ≠ 0 → ERROR-LOG出力(2200ERROUTSOR
      次行READ
    2-3-3.その他SQLエラー
      ERROR-LOG出力(2200ERROUTSOR
      次行READ

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

出力レコード定義

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

COPY書式:KYU99RECVB 200B

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

DB2出力(EMP-MASTER

No カラム名 設定元 備考
1 EMP-ID DBV-EMP-ID ホスト変数
2 EMP-NAME DBV-EMP-NAME ホスト変数
3 DEPT-CODE DBV-DEPT-CODE ホスト変数
4 REGION-CODE DBV-REGION-CODE ホスト変数
5 CATEGORY-CODE DBV-CATEGORY-CODE ホスト変数
6 BASE-SALARY DBV-BASE-SALARY ホスト変数
7 HOURLY-RATE DBV-HOURLY-RATE ホスト変数
8 DEPENDENT-COUNT DBV-DEPENDENT-COUNT ホスト変数
9 STATUS DBV-STATUS ホスト変数
10 UPDATED-AT CURRENT TIMESTAMP DB2関数