feat: サブシステムB 残業統計管理 初回production反映
- 全6プログラム(ZAN01CHK~ZAN06UPD)ソース・実行ファイル - 5サブプログラム(SUB01DAT~SUB05TIM)ソース・DLL - 10 COPY書式ファイル - 詳細設計書12ファイル - サブシステムB全体設計書 - bin/配下の実行ファイル资産
This commit is contained in:
@@ -1,99 +1,54 @@
|
||||
# 勤怠管理システム - 生产环境资源
|
||||
|
||||
本リポジトリは勤怠管理システム(サブシステムA:勤怠休暇管理、サブシステムB:残業統計管理、サブシステムC:給与計算)の生产环境最終版リソースを管理する。
|
||||
本リポジトリは勤怠管理システム(サブシステムA:勤怠休暇管理、サブシステムB:残業統計管理、サブシステムC:給与計算)の生产环境リソースを管理する。
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
production/
|
||||
├── src/ # 主程序源代码(COBOL)
|
||||
├── sub/ # 共通サブプログラム(SUB01DAT~SUB05TIM)
|
||||
├── cpy/ # COPY書式ファイル(レコード定義・連絡領域)
|
||||
├── jcl/ # 実行スクリプト(Windows batch)
|
||||
└── 詳細設計書/ # 詳細設計ドキュメント
|
||||
├── src/ # 主プログラムソース(COBOL)
|
||||
├── sub/ # 共通サブプログラム
|
||||
├── cpy/ # COPY書式ファイル(レコード定義・連絡領域)
|
||||
├── bin/ # 実行ファイル(.exe)+サブプログラムDLL(.dll)
|
||||
├── design/ # サブシステム全体設計書
|
||||
└── 詳細設計書/ # 詳細設計ドキュメント
|
||||
```
|
||||
|
||||
## サブシステム構成
|
||||
|
||||
| サブシステム | 役割 | COBOLプログラム |
|
||||
|-------------|------|----------------|
|
||||
| A: 勤怠休暇管理 | 休暇申請取込・打刻照合・日別計算・DB更新 | KIN01INP~KIN09CSV(9本) |
|
||||
| B: 残業統計管理 | 加班申請取込・重複チェック・照合・集計・DB更新 | ZAN01CHK~ZAN06UPD(6本) |
|
||||
| C: 給与計算 | 欠勤統計取込・給与計算・明細出力 | 後続追加予定 |
|
||||
|
||||
## 构建与运行
|
||||
|
||||
### 编译命令
|
||||
### 编译
|
||||
|
||||
ソースコードはCOBOL + DB2向けに実装されている。
|
||||
開発環境(Windows + GnuCOBOL 3.2.0)にはDB2がないため、プリプロセッサ`convert-sql.mjs`が`EXEC SQL`をSQLite3用の`CALL 'br_exec'`に変換し、SQLite3で動作させる。
|
||||
|
||||
```batch
|
||||
rem 单个程序编译
|
||||
tools\build.bat <cobol>\<program>.cbl
|
||||
|
||||
rem 例如:
|
||||
tools\build.bat cobol\ZAN01CHK.cbl
|
||||
tools\build.bat cobol\ZAN02CHK.cbl
|
||||
tools\build.bat cobol\ZAN03CHK.cbl
|
||||
rem プロジェクトルートで実行
|
||||
tools\build.bat src\<program>.cbl
|
||||
```
|
||||
|
||||
### 运行环境设置
|
||||
### 実行
|
||||
|
||||
```batch
|
||||
set COB_CONFIG_DIR=C:\mingw64\share\gnucobol\config
|
||||
set COB_LIBRARY_PATH=<path_to_cobol_directory>
|
||||
set COB_LIBRARY_PATH=bin
|
||||
cd <project_root>
|
||||
bin\<program>.exe
|
||||
```
|
||||
|
||||
### 输入输出 DD 名称对应关系
|
||||
### サブシステムB テスト実行順序
|
||||
|
||||
| 程序 | DD 名称 | 说明 |
|
||||
|----------|---------|----------------|
|
||||
| ZAN01CHK | ZAN01R01 | OVT-APPLY.DAT |
|
||||
| | ZAN01W01 | OVT-VALID.DAT |
|
||||
| | ZAN01W02 | OVT-CANCEL.DAT |
|
||||
| | ZAN01W03 | ERROR-LOG.DAT |
|
||||
| ZAN02CHK | ZAN02R01 | OVT-VSORT.DAT |
|
||||
| | ZAN02W01 | OVT-CHECKED.DAT|
|
||||
| | ZAN02W02 | ERROR-LOG.DAT |
|
||||
| ZAN03CHK | ZAN03R01 | OVT-NODUP.DAT |
|
||||
| | ZAN03R02 | PUNCH-SORTED.DAT|
|
||||
| | ZAN03R03 | HOLIDAY.DAT |
|
||||
| | ZAN03W01 | OVT-MATCHED.DAT|
|
||||
| | ZAN03W02 | ERROR-LOG.DAT |
|
||||
```batch
|
||||
ZAN01CHK → ZAN02CHK → ZAN03CHK → ZAN04MAT → ZAN05CAL → ZAN06UPD
|
||||
```
|
||||
|
||||
## 测试结果概要
|
||||
## 编码
|
||||
|
||||
三个主程序均已通过疏通测试,覆盖正常和异常分支:
|
||||
|
||||
**ZAN01CHK - 残業申請振分処理**
|
||||
- ✓ CSV 格式解析正确
|
||||
- ✓ status=0/1 → W01 有效申请
|
||||
- ✓ status=9 → W02 取消申请
|
||||
- ✓ 无效状态/DATETIME CHECK→ W03错误日志
|
||||
- ✓ START TIME >= 1830验证
|
||||
- ✓ START < END验证
|
||||
- ✓ 时间差 >= 30min验证
|
||||
- **已修复**: W01/W02/W03 FILLER 未初始化 Bug
|
||||
|
||||
**ZAN02CHK - 時間帯重複チェック処理**
|
||||
- ✓ 同一天同一员工的时段重复检查
|
||||
- ✓ 初回记录直出到 W01
|
||||
- ✓ キーブレイク正确处理
|
||||
- ✓ OVERLAP 判断逻辑正确(前終了 > 現開始)
|
||||
- **已修复**: 主循环中首条记录与自身比较误判的 Bug
|
||||
- **已修复**: NORMALOUTSOR不更新 PREV 导致后续比较基准失准
|
||||
|
||||
**ZAN03CHK - 打刻時間照合処理**
|
||||
- ✓ R01(申请) vs R02(打刻) 匹配检查
|
||||
- ✓ 时间范围包含验证(申请⊆打刻)
|
||||
- ✓ NOMATCH 处理(无对应打刻)→ W02错误
|
||||
- ✓ MISMATCH 处理(时间不符)→ W02错误
|
||||
- ✓ HOLIDAY判定正确(OVT-TYPE="H")
|
||||
- ✓ R03休日计数问题已修复
|
||||
- ✓ W02 FILLER 初始化问题已修复
|
||||
- **已知限制**: GnuCOBOL 读无 CRLF 的二进制文件可能多产生一条伪空记录
|
||||
|
||||
## 重要 Notes
|
||||
|
||||
1. **GnuCOBOL 文件读取特性**: 在纯二进制定长文件(无行分隔符)模式下,GnuCOBOL READ 操作可能在真正 EOF 前多产生一条记录,这是运行时环境的已知行为,非代码 Bug。
|
||||
|
||||
2. **COPY 文件命名**: 所有 COPY 文件均保留原始命名,无额外字符后缀。
|
||||
|
||||
3. **备份文件**: 生产环境只包含最新确定的版本,不包含 *.bak.* 或 *_fixed* 等中间版本。
|
||||
|
||||
4. **编码**: 源文件使用 ASCII/JIS 编码保存。
|
||||
|
||||
## 维护建议
|
||||
|
||||
- 每次修改后请再次进行完整疏通测试
|
||||
- JCL/batch 脚本的 DD 变量名需与实际 DD 分配一致
|
||||
- 确保 `COB_LIBRARY_PATH` 包含 SUB*.dll(如需要动态加载)
|
||||
源文件使用 ASCII/JIS 编码保存。COPYファイルは元の命名を維持する。
|
||||
Reference in New Issue
Block a user