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
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 給与計算システム |
|
||||
| 2 | プログラムID | KYU09MRG |
|
||||
| 3 | プログラム名 | 支給データ結合処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | MERGE(複数ファイル結合) |
|
||||
| 6 | 機能概要 | SALARY-NETとBONUS-DATAをMERGE文で社員番号昇順に結合する。 |
|
||||
| 7 | | OUTPUT PROCEDURE内で同一社員の給与(TYPE=S)と賞与(TYPE=B)を統合し、 |
|
||||
| 8 | | 支給データ(PAYMENT-DATA)として出力する。 |
|
||||
|
||||
※PGMタイプ:メイン、サブ
|
||||
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | SALARY-NET(KYU09M01) | 社員番号(EMP-ID)昇順であること(MERGE文で内部ソート) |
|
||||
| 2 | BONUS-DATA(KYU09M02) | 社員番号(EMP-ID)昇順であること(MERGE文で内部ソート) |
|
||||
| 3 | MERGE作業ファイル | ソート前処理不要。MERGE文が自ら2ファイルを結合する。 |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | SALARY-NET | M01 | KYU09M01 | I | KYU04REC | F | | 200 | PS | REC-TYPE='S' |
|
||||
| 2 | BONUS-DATA | M02 | KYU09M02 | I | KYU04REC | F | | 200 | PS | REC-TYPE='B' |
|
||||
| 3 | WORK-FILE | M99 | KYU09M99 | I | 自前(200B) | F | | 200 | PS | MERGE作業用SD |
|
||||
| 4 | PAYMENT-DATA | W01 | KYU09W01 | O | KYU06REC | F | | 200 | PS | |
|
||||
| 5 | ERROR-LOG | W02 | KYU09W02 | O | KYU99REC | VB | | 200 | PS | |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | SALARY-NET | 社員番号(昇順) | MERGEキー(社員番号) |
|
||||
| 2 | BONUS-DATA | 社員番号(昇順) | MERGEキー(社員番号) |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| NO | 機能 | プログラムID | 使用COPY名 |
|
||||
|----|------|-------------|-----------|
|
||||
| 1 | 運用日付取得SUB | SUB01DAT | ZANDATAC |
|
||||
| 2 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC |
|
||||
| 3 | ABEND処理SUB | SUB03END | ZANENDAC |
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
```
|
||||
1.初期処理(1000ITTSOR)
|
||||
1-1.開始メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:1(開始メッセージ)
|
||||
1-2.コンパイル日時出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:33(コンパイル日時)
|
||||
PARM1:コンパイル日時
|
||||
PARM2:'COMPILED'
|
||||
1-3.ワークエリアの初期化
|
||||
1-4.運用日付取得SUB(SUB01DAT)により運用日を取得する。
|
||||
復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。
|
||||
【メッセージ編集】
|
||||
メッセージ番号:5(サブエラー)
|
||||
PARM1:'SUB01DAT'
|
||||
PARM2:復帰コード
|
||||
【ABEND処理SUB】
|
||||
ABENDコード:999
|
||||
1-5.出力ファイルのオープン
|
||||
W01OUTFIL(OUTPUT)、W02OUTFIL(OUTPUT)をOPEN
|
||||
(入力ファイルはMERGE文が自動OPENするため明示OPEN不要)
|
||||
|
||||
2.MERGE出力処理(2000MRGOUTSOR)
|
||||
2-1.MERGE文実行(0000MAJCOLSOR内)
|
||||
MERGE MERGE-FILE
|
||||
ON ASCENDING KEY MERGE-EMP-ID
|
||||
USING SALARY-FILE BONUS-FILE
|
||||
OUTPUT PROCEDURE 2000MRGOUTSOR
|
||||
給与(SALARY-NET)と賞与(BONUS-DATA)を社員番号昇順で結合。
|
||||
結合結果はOUTPUT PROCEDUREに渡される。
|
||||
2-2.RETURNでMERGE結果取得ループ
|
||||
PERFORM WITH TEST AFTER UNTIL WRK-MERGE-EOF-Y
|
||||
RETURN MERGE-FILE INTO MERGE-REC
|
||||
AT END SET WRK-MERGE-EOF-Y TO TRUE
|
||||
2-2-1.現社員番号をWRK-CURRENT-EMPに設定
|
||||
2-2-2.WRK-SALARY-AMOUNT/WRK-BONUS-AMOUNTをZERO初期化
|
||||
2-2-3.同一社員内ループ(WRK-CURRENT-EMP ≠ MERGE-EMP-IDまで)
|
||||
2-2-3-1.MERGE-REC-TYPE = 'S'(給与)の場合
|
||||
MERGE-PAY-AMOUNT → WRK-SALARY-AMOUNT
|
||||
MERGE-GROSS-PAYMENT → WRK-BANK-CODE
|
||||
MERGE-EMP-ID(1:4) → WRK-ACCOUNT-NO
|
||||
2-2-3-2.上記以外(賞与)の場合
|
||||
MERGE-PAY-AMOUNT → WRK-BONUS-AMOUNT
|
||||
2-2-3-3.RETURNで次レコード取得
|
||||
AT END → HIGH-VALUES設定、EXIT PERFORM
|
||||
2-2-4.給与+賞与合算
|
||||
ADD WRK-SALARY-AMOUNT TO WRK-BONUS-AMOUNT
|
||||
GIVING WRK-TOTAL-PAYMENT
|
||||
2-2-5.2100PAYOUTSORでPAYMENT-DATA出力
|
||||
2-2-5-1.W01OUTREC初期化
|
||||
2-2-5-2.WRK-CURRENT-EMP → W01EMP-ID
|
||||
2-2-5-3.'T' → W01PAY-TYPE(支給合算)
|
||||
2-2-5-4.WRK-TOTAL-PAYMENT → W01AMOUNT
|
||||
2-2-5-5.WRK-BANK-CODE → W01BANK-CODE
|
||||
2-2-5-6.WRK-ACCOUNT-NO → W01ACCOUNT-NO
|
||||
2-2-5-7.W01OUTRECをWRITE
|
||||
2-2-5-8.CUN-W01OUTを+1
|
||||
|
||||
3.ENTRY代替エントリポイント(0010DIRECTSOR)
|
||||
3-1.'KYU09ENT'で直接呼出し可能
|
||||
3-2.直接結合モードで簡易エラーログ出力
|
||||
【エラー出力】
|
||||
ERR-DETAIL:'DIRECT ENTRY'
|
||||
|
||||
4.終了処理(3000STPSOR)
|
||||
4-1.出力ファイルのクローズ
|
||||
W01OUTFIL、W02OUTFILをCLOSE
|
||||
4-2.入出力件数出力メッセージ出力
|
||||
【入力メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:'MERGE-FILE'
|
||||
PARM2:CUN-W01OUT
|
||||
【出力メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:'KYU09W01'
|
||||
PARM2:CUN-W01OUT
|
||||
【出力メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:'KYU09W02'
|
||||
PARM2:CUN-W02OUT
|
||||
4-3.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/PAYMENT-DATA)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | EMP-ID | WRK-CURRENT-EMPを設定 | X(008) |
|
||||
| 2 | PAY-TYPE | 'T'(支給合算)固定 | X(001) |
|
||||
| 3 | AMOUNT | WRK-TOTAL-PAYMENT(給与+賞与)を設定 | 9(009) |
|
||||
| 4 | BANK-CODE | WRK-BANK-CODE(給与レコードのGROSS-PAYMENT)を設定 | X(004) |
|
||||
| 5 | ACCOUNT-NO | WRK-ACCOUNT-NO(EMP-ID(1:4))を設定 | 9(008) |
|
||||
| 6 | FILLER | SPACE | X(170) |
|
||||
|
||||
### 出力ファイル2(W02/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 該当エラー種別 | X(008) |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |
|
||||
Reference in New Issue
Block a user