Subsystem A KIN04-07追加、KIN02UPD/KIN03EXP更新(APPLICATION_ID対応+br_get_colバグ修正)、テスト済み全シナリオPASS
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# KIN04CHK 使用資源一覧
|
||||
|
||||
## プログラム概要
|
||||
- **プログラムID**: KIN04CHK
|
||||
- **プログラム名**: 打刻項目チェック処理
|
||||
- **処理概要**: CSV形式の打刻データファイルを読み込み、IF多重ネスト(THEN句)による項目チェックを行い、正常レコードをEDITED-PUNCHへ、異常レコードをERROR-LOGへ振り分ける。
|
||||
|
||||
## 使用ファイル
|
||||
|
||||
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||
|------|---------------|------|-------------|-----------|--------|
|
||||
| KIN04R01 | RAW-PUNCH | 順編成 | F (固定長) | 80B | なし(自前定義) |
|
||||
| KIN04W01 | EDITED-PUNCH | 順編成 | F (固定長) | 80B | KIN04REC |
|
||||
| KIN04W02 | ERROR-LOG | 順編成 | V (可変長) | 200B | KIN05REC |
|
||||
|
||||
## 使用COPY句
|
||||
|
||||
| COPY句 | 用途 | 使用箇所 |
|
||||
|--------|------|---------|
|
||||
| KIN04REC | レコード定義(W01出力ファイル) | FILE SECTION / WORKING-STORAGE(WRITE FROM用) |
|
||||
| KIN05REC | エラーログレコード定義(W02出力ファイル) | FILE SECTION |
|
||||
| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
|
||||
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||
| ZANCHKAC | 項目チェックサブPGM連絡領域 | WORKING-STORAGE |
|
||||
|
||||
## 使用サブプログラム
|
||||
|
||||
| サブPGM | 役割 | CALL箇所 |
|
||||
|---------|------|---------|
|
||||
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
|
||||
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||
| SUB04CHK | 日付/時刻/社員番号妥当性チェック | 2020VALIDATESOR |
|
||||
|
||||
## 使用DB2テーブル
|
||||
|
||||
なし(DB操作なし)
|
||||
|
||||
## 処理フロー
|
||||
1. 初期処理(開始メッセージ→運用日付取得→OPEN→初回読込)
|
||||
2. CSV分解(UNSTRINGで6項目に分解)
|
||||
3. IF多重ネスト(THEN句)で4段階チェック
|
||||
- フィールド数=6 AND 社員番号 NOT = SPACE
|
||||
- SUB04CHK日付チェック
|
||||
- SUB04CHK時刻チェック(出勤/退勤)
|
||||
- 出勤時刻 < 退勤時刻
|
||||
4. 正常→WRITE FROMでW01出力
|
||||
5. 異常→W02出力(エラー区分='02')
|
||||
6. 終了処理(CLOSE→件数出力→終了メッセージ)
|
||||
@@ -0,0 +1,43 @@
|
||||
# KIN05MAT 使用資源一覧
|
||||
|
||||
## プログラム概要
|
||||
- **プログラムID**: KIN05MAT
|
||||
- **プログラム名**: 打刻休暇照合処理
|
||||
- **処理概要**: EDITED-PUNCH(打刻側)とLEAVE-DAILY(休暇側)を社員番号+日付キーで照合し、1:Nマッチング結果をKIN-LEAVE(160B)に出力する。
|
||||
|
||||
## 使用ファイル
|
||||
|
||||
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||
|------|---------------|------|-------------|-----------|--------|
|
||||
| KIN04W01 | EDITED-PUNCH | 順編成 | F (固定長) | 80B | KIN04REC |
|
||||
| KIN02W01 | LEAVE-DAILY | 順編成 | F (固定長) | 80B | KIN02REC |
|
||||
| KIN05W01 | KIN-LEAVE | 順編成 | F (固定長) | 160B | KIN03REC |
|
||||
|
||||
## 使用COPY句
|
||||
|
||||
| COPY句 | 用途 | 使用箇所 |
|
||||
|--------|------|---------|
|
||||
| KIN04REC | R01入力レコード定義 | FILE SECTION |
|
||||
| KIN02REC | R02入力レコード定義 | FILE SECTION |
|
||||
| KIN03REC | W01出力レコード定義 | FILE SECTION |
|
||||
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||
|
||||
## 使用サブプログラム
|
||||
|
||||
| サブPGM | 役割 | CALL箇所 |
|
||||
|---------|------|---------|
|
||||
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||
|
||||
## 使用DB2テーブル
|
||||
|
||||
なし(ファイルマッチングのみ)
|
||||
|
||||
## 処理フロー
|
||||
1. 初期処理(開始メッセージ→OPEN→R01/R02初回読込)
|
||||
2. EVALUATE TRUE マッチング3分岐制御
|
||||
- R01key < R02key OR R02-EOF:打刻のみ出力(LEAVE-TYPE='99')
|
||||
- R01key = R02key:マッチング(N:1ループ)、休暇種別優先順位で選定
|
||||
- R01key > R02key:R02のみスキップ
|
||||
3. 終了処理(CLOSE→件数出力→終了メッセージ)
|
||||
@@ -0,0 +1,45 @@
|
||||
# KIN06CLD 使用資源一覧
|
||||
|
||||
## プログラム概要
|
||||
- **プログラムID**: KIN06CLD
|
||||
- **プログラム名**: 出勤日カレンダー生成処理
|
||||
- **処理概要**: PARM指定年月の出勤日カレンダーを生成。在籍社員全員 × 当月全日をループし、休日判定を行って出勤日のみ出力。
|
||||
|
||||
## 使用ファイル
|
||||
|
||||
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||
|------|---------------|------|-------------|-----------|--------|
|
||||
| KIN06W01 | WORK-DAY-FILE | 順編成 | F (固定長) | 80B | KIN06REC |
|
||||
|
||||
## 使用COPY句
|
||||
|
||||
| COPY句 | 用途 | 使用箇所 |
|
||||
|--------|------|---------|
|
||||
| KIN06REC | OUTREC出力レコード定義 | FILE SECTION |
|
||||
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||
|
||||
> 注: DBブリッジ変数(WS-SQL-STR, SQLCODE, WS-COL-IDX, WS-COL-LEN)はCOPY句`DB-COMMON`ではなく、プリプロセッサ`convert-sql.mjs`によりWORKING-STORAGEに注入される。`cpy/DB-COMMON.cpy`は存在しない。
|
||||
|
||||
## 使用DBテーブル
|
||||
|
||||
| テーブル名 | 種別 | 操作 | 備考 |
|
||||
|-----------|------|------|------|
|
||||
| EMP_MASTER | 参照 | SELECT (CURSOR) | 在籍社員一覧(STATUS='1') |
|
||||
| HOLIDAY_CALENDAR | 参照 | SELECT | 対象月の休日一覧 |
|
||||
|
||||
## 使用サブプログラム
|
||||
|
||||
| サブPGM | 役割 | CALL箇所 |
|
||||
|---------|------|---------|
|
||||
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||
| SUB03END | ABEND処理 | 1100PARMSOR (直接CALL、9999ABDSORセクション廃止) |
|
||||
|
||||
## 処理フロー
|
||||
1. PARM解析(YEARMONTH取得)
|
||||
2. DB接続 → 休日データ読込 → 社員CURSOR OPEN
|
||||
3. 社員ループ(PERFORM UNTIL EOF)
|
||||
- 日付ループ(PERFORM VARYING 当月1日〜月末日)
|
||||
- PERFORM VARYING 線形探索で休日判定 + 曜日判定(部分埋めテーブルのためSEARCH ALL不使用)
|
||||
- 出勤日 → WRITE FROM出力
|
||||
4. CURSOR CLOSE → DB切断 → 終了処理
|
||||
@@ -0,0 +1,60 @@
|
||||
# KIN07DAI 使用資源一覧
|
||||
|
||||
## プログラム概要
|
||||
- **プログラムID**: KIN07DAI
|
||||
- **プログラム名**: 日別勤怠計算処理
|
||||
- **処理概要**: WORK-DAY-FILE(出勤日カレンダー)を主駆動とし、社員番号+日付キーでKIN-LEAVE(打刻+休暇)と照合。4パターン(A/B/C/D)のEVALUATE分岐で休暇時間計算を実行し、DAILY-RECORD(200B)に出力する。
|
||||
|
||||
## 使用ファイル
|
||||
|
||||
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | 定義参照先 |
|
||||
|------|---------------|------|-------------|-----------|--------|-----------|
|
||||
| KIN07R01 | WORK-DAY-FILE | 順編成 | F (固定長) | 80B | KIN06REC | COPY句定義書.md |
|
||||
| KIN07R02 | KIN-LEAVE | 順編成 | F (固定長) | 160B | KIN03REC | COPY句定義書.md |
|
||||
| KIN07R03 | LEAVE-DAILY | 順編成 | F (固定長) | 80B | KIN02REC | COPY句定義書.md |
|
||||
| KIN07W01 | DAILY-RECORD | 順編成 | F (固定長) | 200B | KIN07REC | COPY句定義書.md |
|
||||
|
||||
## 使用COPY句
|
||||
|
||||
| COPY句 | 用途 | 使用箇所 |
|
||||
|--------|------|---------|
|
||||
| KIN06REC | R01入力レコード定義(WORK-DAY-REC) | FILE SECTION |
|
||||
| KIN03REC | R02入力レコード定義(KIN-LEAVE-REC) | FILE SECTION |
|
||||
| KIN02REC | R03入力レコード定義(LEAVE-DAILY-REC) | FILE SECTION |
|
||||
| KIN07REC | W01出力レコード定義(DAILY-REC) | FILE SECTION |
|
||||
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||
| ZANTIMAC | 丸めサブPGM連絡領域 | WORKING-STORAGE |
|
||||
|
||||
## 使用サブプログラム
|
||||
|
||||
| サブPGM | 役割 | CALL箇所 |
|
||||
|---------|------|---------|
|
||||
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||
| SUB05TIM | 休暇時間丸め(0.1h切上) | 6100PATTERNASOR / 6300PATTERNSOR |
|
||||
|
||||
## 使用DB2テーブル
|
||||
|
||||
なし(ファイル処理のみ)
|
||||
|
||||
## 処理フロー
|
||||
1. 初期処理(開始メッセージ→OPEN→R01/R02/R03初回読込)
|
||||
2. メインループ:R01(主駆動)を基準にEVALUATEで4パターン分岐
|
||||
- PATTERN-A (1): R01+R02+R03全てあり → 打刻+休暇時間計算
|
||||
- PATTERN-B (2): R01+R02あり、R03なし → 打刻のみ(休暇=0)
|
||||
- PATTERN-C (3): R01+R03あり、R02なし → 休暇時間計算(打刻=0000)
|
||||
- PATTERN-D (4): R01のみ → 未申請欠勤=8.0h
|
||||
3. 各パターン内でMULTIPLY/SUBTRACT/COMPUTE併用による時間計算、CALL SUB05TIM丸め
|
||||
4. 終了処理(CLOSE→件数出力→終了メッセージ)
|
||||
|
||||
## 使用構文(特記事項)
|
||||
|
||||
| 構文 | 使用箇所 | 備考 |
|
||||
|------|---------|------|
|
||||
| EVALUATE | 5000PROCESS | 4パターン分岐(GO TO DEPENDING ONから変更) |
|
||||
| MULTIPLY | 6100PATTERNASOR/6300PATTERNSOR | 時間→分変換 |
|
||||
| SUBTRACT | 6100PATTERNASOR/6300PATTERNSOR | ランチ時間除外 |
|
||||
| DIVIDE | 6100PATTERNASOR/6300PATTERNSOR | 分→時間変換 |
|
||||
| COMPUTE | 6100PATTERNASOR/6300PATTERNSOR | 休暇時間端数処理 |
|
||||
| CALL SUB05TIM | 6100PATTERNASOR/6300PATTERNSOR | 0.1h単位切上丸め |
|
||||
Reference in New Issue
Block a user