Files
cobol-tna-system/詳細設計書/詳細設計書_KYU07DIV.md
T
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

9.3 KiB
Raw Blame History

詳細設計書

基本情報

# 項目 内容
1 システム名 給与計算システム
2 プログラムID KYU07DIV
3 プログラム名 部門別分割出力処理
4 PGMタイプ メイン
5 PGMパターン 50分割
6 機能概要 JCL SORT済みSALARY-NETを部署コードに応じて50ファイルに分割出力する。
7 常に1ファイルのみOPEN状態を保ち、部署コード切替時にファイルを開閉する。
8 SYSIN制御カードにより出力対象部署の絞り込みが可能(省略時は全50部署)。

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

前提条件

NO 対象ファイル 条件
1 KYU04S01(SALARY-NET) JCL SORTで部署コード(DEPT-CODE 50-51桁目)昇順ソート済みであること
2 SYSIN(制御カード) 省略時は全50部署を出力対象とする

使用ファイル一覧

NO 使用ファイル/DB名 識別子 DD名 I/O COPY群 形式 ブロック レコード長 媒体 備考
1 SALARY-NET R01 KYU07R01 I KYU04REC F 200 PS JCL SORT済み
2 SYSIN SYSIN KYU07SYS I 自前(80B) F 80 PS 制御カード
3 DEPT-OUT-01 D01 KYU07D01 O KYU04REC F 200 PS
4 DEPT-OUT-02 D02 KYU07D02 O KYU04REC F 200 PS
5 DEPT-OUT-03 D03 KYU07D03 O KYU04REC F 200 PS
6 DEPT-OUT-04 D04 KYU07D04 O KYU04REC F 200 PS
7 DEPT-OUT-05 D05 KYU07D05 O KYU04REC F 200 PS
8 DEPT-OUT-06 D06 KYU07D06 O KYU04REC F 200 PS
9 DEPT-OUT-07 D07 KYU07D07 O KYU04REC F 200 PS
10 DEPT-OUT-08 D08 KYU07D08 O KYU04REC F 200 PS
11 DEPT-OUT-09 D09 KYU07D09 O KYU04REC F 200 PS
12 DEPT-OUT-10 D10 KYU07D10 O KYU04REC F 200 PS
13 DEPT-OUT-11 D11 KYU07D11 O KYU04REC F 200 PS
14 DEPT-OUT-12 D12 KYU07D12 O KYU04REC F 200 PS
15 DEPT-OUT-13 D13 KYU07D13 O KYU04REC F 200 PS
16 DEPT-OUT-14 D14 KYU07D14 O KYU04REC F 200 PS
17 DEPT-OUT-15 D15 KYU07D15 O KYU04REC F 200 PS
18 DEPT-OUT-16 D16 KYU07D16 O KYU04REC F 200 PS
19 DEPT-OUT-17 D17 KYU07D17 O KYU04REC F 200 PS
20 DEPT-OUT-18 D18 KYU07D18 O KYU04REC F 200 PS
21 DEPT-OUT-19 D19 KYU07D19 O KYU04REC F 200 PS
22 DEPT-OUT-20 D20 KYU07D20 O KYU04REC F 200 PS
23 DEPT-OUT-21 D21 KYU07D21 O KYU04REC F 200 PS
24 DEPT-OUT-22 D22 KYU07D22 O KYU04REC F 200 PS
25 DEPT-OUT-23 D23 KYU07D23 O KYU04REC F 200 PS
26 DEPT-OUT-24 D24 KYU07D24 O KYU04REC F 200 PS
27 DEPT-OUT-25 D25 KYU07D25 O KYU04REC F 200 PS
28 DEPT-OUT-26 D26 KYU07D26 O KYU04REC F 200 PS
29 DEPT-OUT-27 D27 KYU07D27 O KYU04REC F 200 PS
30 DEPT-OUT-28 D28 KYU07D28 O KYU04REC F 200 PS
31 DEPT-OUT-29 D29 KYU07D29 O KYU04REC F 200 PS
32 DEPT-OUT-30 D30 KYU07D30 O KYU04REC F 200 PS
33 DEPT-OUT-31 D31 KYU07D31 O KYU04REC F 200 PS
34 DEPT-OUT-32 D32 KYU07D32 O KYU04REC F 200 PS
35 DEPT-OUT-33 D33 KYU07D33 O KYU04REC F 200 PS
36 DEPT-OUT-34 D34 KYU07D34 O KYU04REC F 200 PS
37 DEPT-OUT-35 D35 KYU07D35 O KYU04REC F 200 PS
38 DEPT-OUT-36 D36 KYU07D36 O KYU04REC F 200 PS
39 DEPT-OUT-37 D37 KYU07D37 O KYU04REC F 200 PS
40 DEPT-OUT-38 D38 KYU07D38 O KYU04REC F 200 PS
41 DEPT-OUT-39 D39 KYU07D39 O KYU04REC F 200 PS
42 DEPT-OUT-40 D40 KYU07D40 O KYU04REC F 200 PS
43 DEPT-OUT-41 D41 KYU07D41 O KYU04REC F 200 PS
44 DEPT-OUT-42 D42 KYU07D42 O KYU04REC F 200 PS
45 DEPT-OUT-43 D43 KYU07D43 O KYU04REC F 200 PS
46 DEPT-OUT-44 D44 KYU07D44 O KYU04REC F 200 PS
47 DEPT-OUT-45 D45 KYU07D45 O KYU04REC F 200 PS
48 DEPT-OUT-46 D46 KYU07D46 O KYU04REC F 200 PS
49 DEPT-OUT-47 D47 KYU07D47 O KYU04REC F 200 PS
50 DEPT-OUT-48 D48 KYU07D48 O KYU04REC F 200 PS
51 DEPT-OUT-49 D49 KYU07D49 O KYU04REC F 200 PS
52 DEPT-OUT-50 D50 KYU07D50 O KYU04REC F 200 PS
53 ERROR-LOG W99 KYU07W99 O KYU99REC VB 200 PS

キー項目一覧

NO ファイル名 ソート条件(キー項目) キー条件(マッチング/キーブレイク)
1 KYU04S01 部署コード(昇順) 部署コード切替(分割キー)

使用モジュール一覧

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.ワークエリアの初期化
    WRKARA初期化、WRK-FIRST='1'設定
  1-4.SYSIN読込(1100SYSINSOR)
    制御カードから対象部署一覧を取得する。
    SYSINファイルOPEN→READ→CLOSE。
    カードなし(AT END):全部署対象(WRK-ALL-DEPTS)
    カードあり:"DEPT=01,02,05,10"形式をパースし、
    WRK-TARGET-DEPTテーブルに格納。
  1-5.入出力ファイルのOPEN
    R01INNFIL(INPUT)、W99OUTFIL(OUTPUT)をOPEN
  1-6.R01を読み込む。(1200R01INNSOR)(1回目)

2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
  2-1.R01の部署コードを取得(MOVE R01DEPT-CODE TO WRK-DEPT-CODE)
  2-2.SYSIN対象部署フィルタ
    WRK-FILTER-DEPTSの場合、SEARCHでWRK-TARGET-DEPTテーブルを検索。
    該当なし→次レコード読込(1200R01INNSOR)してEXIT SECTION。
  2-3.部署切替判定
    2-3-1.WRK-FIRST-Yの場合(初回)
      WRK-FIRSTを'0'に設定し、2100OPENSORを実行
    2-3-2.WRK-PREV-DEPT ≠ WRK-DEPT-CODEの場合(部署切替)
      2200CLOSESORで前部署ファイルをCLOSE WITH LOCK
      2100OPENSORで新部署ファイルをOPEN
  2-4.現部署コードをWRK-PREV-DEPTに保存
  2-5.該当ファイルにWRITE2300WRITESOR
    EVALUATE WRK-DEPT-CODEでD01〜D50の該当ファイルにWRITE
    WHEN OTHERは無視
    CUN-DEPT-OUTを+1
  2-6.R01を読み込む。(1200R01INNSOR)(2件目以降)

3.終了処理(3000STPSOR
  3-1.WRK-PREV-DEPT > SPACESの場合、2200CLOSESOR実行
  3-2.入出力ファイルのクローズ
    R01INNFIL、W99OUTFILをCLOSE
  3-3.入出力件数出力メッセージ出力
    【入力メッセージ編集】
    メッセージ番号:6(入力件数メッセージ)
    PARM1'KYU07R01'
    PARM2CUN-R01INN
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1'DEPT-OUT'
    PARM2CUN-DEPT-OUT
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1'KYU07W99'
    PARM2CUN-W99OUT
  3-4.終了メッセージ出力
    【メッセージ編集】
    メッセージ番号:2(終了メッセージ)

出力レコード定義

出力ファイル(D01〜D50/DEPT-OUT-01〜50

KYU04RECSALARY-NET形式)をそのまま出力する。

No 項目名 設定元 備考
1 EMP-ID R01同項目を設定
2 REC-TYPE R01同項目を設定
3 EMP-NAME R01同項目を設定
4 DEPT-CODE R01同項目を設定
5 REGION-CODE R01同項目を設定
6 CATEGORY-CODE R01同項目を設定
7 GROSS-PAYMENT R01同項目を設定
8 INCOME-TAX R01同項目を設定
9 INSURANCE R01同項目を設定
10 RESIDENT-TAX R01同項目を設定
11 NET-PAYMENT R01同項目を設定
12 TAXABLE-INCOME R01同項目を設定
13 PAY-AMOUNT R01同項目を設定
14 FILLER R01同項目を設定

出力ファイル(W99/ERROR-LOG

No 項目名 設定元 備考
1 ERR-CATEGORY 固定値'INVDEPT' 無効部署コード時
2 ERR-DETAIL 'INVALID DEPT' 部署コード範囲外