Subsystem A KIN04-07追加、KIN02UPD/KIN03EXP更新(APPLICATION_ID対応+br_get_colバグ修正)、テスト済み全シナリオPASS
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 勤怠休暇管理システム |
|
||||
| 2 | プログラムID | KIN07DAI |
|
||||
| 3 | プログラム名 | 日別勤怠計算処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | マッチング(1:N) + EVALUATE 4パターン分岐 |
|
||||
| 6 | 機能概要 | WORK-DAY-FILE(主駆動)とKIN-LEAVE/LEAVE-DAILYを社員番号+日付で照合し、 |
|
||||
| 7 | | 4パターンに分岐して日別勤怠記録(DAILY-RECORD)を出力する。 |
|
||||
| 8 | | パターンA: 打刻+休暇あり / B: 打刻のみ / C: 休暇のみ / D: 欠勤 |
|
||||
| 9 | | 休暇時間はランチ除外+0.1h切上丸め。MULTIPLY/SUBTRACT時間計算。 |
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | R01(WORK-DAY-FILE) | 社員番号+日付の昇順でソートされていること |
|
||||
| 2 | R02(KIN-LEAVE) | 社員番号+日付の昇順でソートされていること |
|
||||
| 3 | R03(LEAVE-DAILY) | 社員番号+日付の昇順でソートされていること |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|---------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | WORK-DAY-FILE | R01 | KIN07R01 | I | KIN06REC | FB | | 80 | PS | 出勤日カレンダー(COPY句定義書.md参照) |
|
||||
| 2 | KIN-LEAVE | R02 | KIN07R02 | I | KIN03REC | FB | | 160 | PS | 打刻+休暇照合結果(COPY句定義書.md参照) |
|
||||
| 3 | LEAVE-DAILY | R03 | KIN07R03 | I | KIN02REC | FB | | 80 | PS | 日別展開休暇(COPY句定義書.md参照) |
|
||||
| 4 | DAILY-RECORD | W01 | KIN07W01 | O | KIN07REC | FB | | 200 | PS | 日別勤怠計算結果(COPY句定義書.md参照) |
|
||||
| 5 | ERROR-LOG | W02 | KIN07E01 | O | KIN05REC | VB | | 200 | PS | エラーログ(COPY句定義書.md参照) |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | ファイルR01 | 社員番号>日付(昇順) | 社員番号+日付(マッチングキー) |
|
||||
| 2 | ファイルR02 | 社員番号>日付(昇順) | 社員番号+日付(マッチングキー) |
|
||||
| 3 | ファイルR03 | 社員番号>日付(昇順) | 社員番号+日付(マッチングキー) |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| NO | 機能 | プログラムID | 使用COPY名 |
|
||||
|----|------|-------------|-----------|
|
||||
| 1 | メッセージ編集出力 | SUB02MSG | ZANMSGAC |
|
||||
| 2 | ABEND処理 | SUB03END | ZANENDAC |
|
||||
| 3 | 時刻丸め計算(0.1h切上) | SUB05TIM | ZANTIMAC |
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
```
|
||||
1.初期処理 (1000ITTSOR)
|
||||
1-1.開始メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:1(開始メッセージ)
|
||||
1-2.コンパイル日時出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:33(コンパイル日時)
|
||||
PARM1:コンパイル日時
|
||||
PARM2:'COMPILED'
|
||||
1-3.ワークエリアの初期化(INITIALIZE WRKARA)
|
||||
1-4.入出力ファイルOPEN
|
||||
INPUT: R01INNFIL, R02INNFIL, R03INNFIL
|
||||
OUTPUT: W01OUTFIL, W02OUTFIL
|
||||
1-5.R01を読み込む。(1100R01INNSOR)(1回目)
|
||||
1-6.R02を読み込む。(1200R02INNSOR)(1回目)
|
||||
1-7.R03を読み込む。(1300R03INNSOR)(1回目)
|
||||
|
||||
2.主処理 (2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
|
||||
2-1.キー比較:R01とR02/R03のキーを比較し、PATTERN-NUMを設定
|
||||
【MULTIPLY使用】時間→分換算時にMULTIPLY文を使用
|
||||
【SUBTRACT使用】ランチ除外時にSUBTRACT文を使用
|
||||
2-2.パターン判定(EVALUATE)
|
||||
EVALUATE PATTERN-NUM
|
||||
WHEN 1 → PERFORM 6100PATTERNASOR (打刻+休暇)
|
||||
WHEN 2 → PERFORM 6200PATTERNSOR (打刻のみ)
|
||||
WHEN 3 → PERFORM 6300PATTERNSOR (休暇のみ)
|
||||
WHEN 4 → PERFORM 6400PATTERNSOR (欠勤)
|
||||
END-EVALUATE
|
||||
|
||||
2-3.【パターンA(6100PATTERNASOR)】:R01+R02+R03(打刻+休暇)
|
||||
2-3-1.打刻情報設定:R02の出勤時刻/退勤時刻をDAILY-RECORDに設定
|
||||
2-3-2.休暇時間計算:R03の開始時刻/終了時刻からランチ除外+丸め計算
|
||||
MULTIPLY: WRK-START-HOUR × 60 GIVING WRK-START-MIN(時→分変換)
|
||||
SUBTRACT: ランチ時間(60分)をWRK-START-MINから除外
|
||||
2-3-3.SUB05TIM呼出(モード1:0.1h切上)
|
||||
【CALL 'SUB05TIM'】
|
||||
CALL 'SUB05TIM' USING T01TIMPAR
|
||||
T01TIMHRS=WRK-LEAVE-HOURS, T01TIMRRC=1(0.1h切上モード)
|
||||
T01TIMOUTをWRK-LEAVE-HOURSに退避
|
||||
2-3-4.DAILY-RECORD出力
|
||||
2-3-5.R01/R02/R03次読込
|
||||
|
||||
2-4.【パターンB(6200PATTERNSOR)】:R01+R02のみ(打刻のみ)
|
||||
2-4-1.打刻情報設定:R02の出勤時刻/退勤時刻をDAILY-RECORDに設定
|
||||
2-4-2.休暇時間=0, 欠勤=0
|
||||
2-4-3.DAILY-RECORD出力
|
||||
2-4-4.R01/R02次読込(R03はキー不一致のため読込済み)
|
||||
|
||||
2-5.【パターンC(6300PATTERNSOR)】:R01+R03のみ(休暇のみ)
|
||||
2-5-1.打刻情報=0000
|
||||
2-5-2.休暇時間計算:ランチ除外+丸め(所定労働時間8h上限)
|
||||
MULTIPLY/SUBTRACT使用(パターンAと同様)
|
||||
WRK-LEAVE-HOURS > 8.0 → 8.0に制限
|
||||
2-5-3.SUB05TIM呼出(モード1:0.1h切上)
|
||||
2-5-4.DAILY-RECORD出力
|
||||
2-5-5.R01/R03次読込(R02はキー不一致のため読込済み)
|
||||
|
||||
2-6.【パターンD(6400PATTERNSOR)】:R01のみ(欠勤)
|
||||
2-6-1.打刻情報=0000, 休暇=0
|
||||
2-6-2.未申請欠勤=8.0h
|
||||
2-6-3.DAILY-RECORD出力
|
||||
2-6-4.R01次読込(R02/R03はキー不一致のため読込済み)
|
||||
|
||||
2-7.各パターンセクションはPERFORMで呼び出され、EXITで自動復帰
|
||||
主処理ループ(2000MAJSOR)に戻り、次のR01レコードを処理する。
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.入出力ファイルのクローズ
|
||||
3-2.入出力件数出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:6(入力件数)
|
||||
PARM1:該当ファイルDD名
|
||||
PARM2:該当ファイル件数
|
||||
メッセージ番号:7(出力件数)
|
||||
PARM1:該当ファイルDD名
|
||||
PARM2:該当ファイル件数
|
||||
3-3.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
|
||||
4.メッセージ出力(4000MSGOUTSOR)
|
||||
SUB02MSG呼出し
|
||||
|
||||
9.ABEND処理(9999ABDSOR)
|
||||
SUB03END呼出し
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01: DAILY-RECORD)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | SD-EMP-ID | SW-EMP-ID(R01) | 社員番号 |
|
||||
| 2 | SD-DATE | SW-DATE(R01) | YYYYMMDD |
|
||||
| 3 | SD-TIME-IN | SR-STR-TIME(R02) or '0000' | 出勤時刻(パターンC/Dは0000) |
|
||||
| 4 | SD-TIME-OUT | SR-END-TIME(R02) or '0000' | 退勤時刻(パターンC/Dは0000) |
|
||||
| 5 | SD-ANNUAL-H | R03(LEAVE-TYPE='01')より計算 | 年休使用時間(ランチ除外+丸め) |
|
||||
| 6 | SD-PERSONAL-H | R03(LEAVE-TYPE='02')より計算 | 事假時間 |
|
||||
| 7 | SD-OFFICIAL-H | R03(LEAVE-TYPE='03')より計算 | 因公特批假時間 |
|
||||
| 8 | SD-SICK-H | R03(LEAVE-TYPE='04')より計算 | 病欠時間 |
|
||||
| 9 | SD-ABSENT-H | パターンDのみ8.0固定 | 未申請欠勤時間 |
|
||||
| 10 | SD-FILLER | SPACE | 予備領域 |
|
||||
|
||||
### 出力ファイル2(W02: ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | WEERR-CATEGORY | '99'固定 | エラー区分(未使用だが予約) |
|
||||
| 2 | WEERR-DETAIL | STRING編集 | エラー詳細(SUB05TIM異常時等) |
|
||||
Reference in New Issue
Block a user