Files
cobol-tna-system/詳細設計書/詳細設計書_KYU01CVT.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.9 KiB
Raw Permalink Blame History

詳細設計書

基本情報

# 項目 内容
1 システム名 給与計算システム
2 プログラムID KYU01CVT
3 プログラム名 社員マスタCSV→FB変換処理
4 PGMタイプ メイン
5 PGMパターン CSV→FB変換(改行あり)
6 機能概要 CSV形式の社員マスタを読み込み、固定長80Bに変換する。
7 引用符内改行をINSPECT CONVERTINGで処理。
8 項目チェックはSUB04CHKで実施。
9 正常:EMP-RECORDW01)出力/異常:ERROR-LOGW02)出力

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

前提条件

NO 対象ファイル 条件
1 EMP-MASTER.CSV ソート不要。CSV形式(カンマ区切り、引用符内改行あり)。コメント行(先頭#)読み飛ばし

使用ファイル一覧

NO 使用ファイル/DB名 識別子 DD名 I/O COPY群 形式 ブロック レコード長 媒体 備考
1 EMP-MASTER.CSV R01 KYU01R01 I 自前(500B) V 500 PS CSV形式
2 EMP-RECORD W01 KYU01W01 O KYU01REC FB 80 PS
3 ERROR-LOG W02 KYU01W02 O KYU99REC VB 200 PS

キー項目一覧

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

使用モジュール一覧

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

処理詳細

1.初期処理(1000ITTSOR
  1-1.開始メッセージ出力
    【メッセージ編集】
    メッセージ番号:1(開始メッセージ)
  1-2.コンパイル日時出力
    【メッセージ編集】
    メッセージ番号:33(コンパイル日時)
    PARM1:コンパイル日時
    PARM2'COMPILED'
   1-3.ワークエリアの初期化
     INITIALIZE WRKARA
     MOVE SPACE TO WRK-CSV-ACCUM
     MOVE ZERO TO WRK-ACCUM-LEN
   1-4.使用ファイルのオープン
    OPEN INPUT R01INNFIL
    OPEN OUTPUT W01OUTFIL W02OUTFIL
  1-6.R01を読み込む。(1100R01INNSOR)(1回目)

2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
2-1.コメント行(先頭#)はスキップ(2000MAJSOR内インライン)
     WRK-CSV-LINE(1:1) = '#' の場合、次行READしてEXIT SECTION
   2-2.引用符内改行処理(2000MAJSOR内インライン)
     2-2-1.WRK-IN-QUOTEフラグを追跡し、引用符内の改行を連結用ワーク領域(WRK-CSV-ACCUM)に蓄積
     2-2-2.引用符内奇数個の"で状態反転(WRK-QUOTE-ACTIVE / WRK-QUOTE-INACTIVE
     2-2-3.完全な1レコード分が揃ったら、INSPECT CONVERTING X"0D"/X"0A" BY SPACEで改行→スペース変換
  2-3.CSV分解(2100CSVUNSOR
    UNSTRING DELIMITED BY ',' INTO 各フィールド COUNT IN WS-FIELD-COUNT
    項目数≠9の場合はERROR-LOG出力
  2-4.社員番号空チェック
    INSPECT WRK-CSV-EMP-ID TALLYING FOR LEADING SPACES
    全桁SPACEの場合はERROR-LOG出力
  2-5.項目チェック(SUB04CHK
    2-5-1.社員番号(EMPID)数値妥当性チェック
    2-5-2.時給(NUM)数値妥当性チェック
    エラー時はERROR-LOG出力
  2-6.社員名英字チェック(IF NOT ALPHABETIC、参考判定)
  2-7.W01OUTREC編集
    MOVE CSV各フィールド→W01OUTREC該当項目
  2-8.W01出力(WRITE W01OUTREC
    CUN-W01OUT加算
  2-9.R01を読み込む(1100R01INNSOR)(2件目以降)

3.終了処理(3000STPSOR
  3-1.入出力ファイルのクローズ
  3-2.入出力件数出力メッセージ出力
    【入力メッセージ編集】
    メッセージ番号:6(入力件数メッセージ)
    PARM1'KYU01R01'
    PARM2CUN-R01INN
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1'KYU01W01'
    PARM2CUN-W01OUT
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1'KYU01W02'
    PARM2CUN-W02OUT
  3-3.終了メッセージ出力
    【メッセージ編集】
    メッセージ番号:2(終了メッセージ)

DECLARATIVES(ファイルエラー処理)

DECLARATIVES.
    USE AFTER ERROR PROCEDURE ON R01INNFIL.
        PERFORM 9999ABDSOR.
    USE AFTER ERROR PROCEDURE ON W01OUTFIL.
        PERFORM 9999ABDSOR.
    USE AFTER ERROR PROCEDURE ON W02OUTFIL.
        PERFORM 9999ABDSOR.
END DECLARATIVES.

出力レコード定義

出力ファイル1W01/EMP-RECORD

COPY書式:KYU01REC80B FB

No 項目名 設定元 備考
1 EMP-ID CSV同項目を設定
2 EMP-NAME CSV同項目を設定
3 DEPT-CODE CSV同項目を設定
4 REGION-CODE CSV同項目を設定
5 CATEGORY-CODE CSV同項目を設定
6 BASE-SALARY CSV同項目を設定
7 HOURLY-RATE CSV同項目を設定
8 DEPENDENT-COUNT CSV同項目を設定
9 STATUS CSV同項目を設定
10 FILLER SPACE固定

出力ファイル2W02/ERROR-LOG

COPY書式:KYU99RECVB 200B

No 項目名 設定元 備考
1 ERR-CATEGORY 'CSV-ERR'または'EMPID-ERR'で固定 エラー区分
2 ERR-DETAIL STRINGで編集 エラー内容(CSV行の先頭80B等)