勤怠管理システム production 定版

This commit is contained in:
qiuqiuqiu
2026-06-15 20:00:06 +08:00
parent 9813dd7772
commit c13e2407d7
9 changed files with 221 additions and 80 deletions
+99
View File
@@ -0,0 +1,99 @@
# 勤怠管理システム - 生产环境资源
本リポジトリは勤怠管理システム(サブシステムA:勤怠休暇管理、サブシステムB:残業統計管理、サブシステムC:給与計算)の生产环境最終版リソースを管理する。
## 目录结构
```
production/
├── src/ # 主程序源代码(COBOL)
├── sub/ # 共通サブプログラム(SUB01DATSUB05TIM
├── cpy/ # COPY書式ファイル(レコード定義・連絡領域)
├── jcl/ # 実行スクリプト(Windows batch
└── 詳細設計書/ # 詳細設計ドキュメント
## 构建与运行
### 编译命令
```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
```
### 运行环境设置
```batch
set COB_CONFIG_DIR=C:\mingw64\share\gnucobol\config
set COB_LIBRARY_PATH=<path_to_cobol_directory>
```
### 输入输出 DD 名称对应关系
| 程序 | 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 |
## 测试结果概要
三个主程序均已通过疏通测试,覆盖正常和异常分支:
**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(如需要动态加载)