Initial import: 子系统B 前三本程序 production 资源

This commit is contained in:
qiuqiuqiu
2026-06-15 08:12:54 +08:00
commit 9813dd7772
26 changed files with 2655 additions and 0 deletions
@@ -0,0 +1,98 @@
# 詳細設計書
## 基本情報
| # | 項目 | 内容 |
|---|------|------|
| 1 | システム名 | 残業統計管理システム |
| 2 | プログラムID | SUB05TIM |
| 3 | プログラム名 | 時刻丸め計算サブ |
| 4 | PGMタイプ | サブ |
| 5 | PGMパターン | - |
| 6 | 機能概要 | 時間値を指定単位で丸め計算する。 |
### 使用方法
```
CALL 'SUB05TIM' USING T01TIMPAR
```
### 入出力パラメータ
| COPY句 | ZANTIMAC |
|------------|----------|
| NO | 入出力区分 | 名称 | 属性 | 桁数 | 説明 |
|----|-----------|------|------|------|------|
| 1 | I | T01TIMHRS | 9(4)V9(1) | 4.1 | 入力時間(HH.h) |
| 2 | O | T01TIMOUT | 9(4)V9(1) | 4.1 | 出力時間(丸め後) |
| 3 | I | T01TIMRRC | 9(4) | 4 | 丸めモード(0:0.5h切上,1:0.1h切上,2:0.1h切捨,3:単純四捨五入) |
### リターンコード一覧
| NO | コード | 説明 |
|----|--------|------|
| 1 | 0000 | 正常終了 |
---
## 処理詳細
```
1.制御処理(0000MAINSOR
1-1.T01TIMRRCにより丸めモードを分岐する。
1-1-1.T01TIMRRC = 0 の場合(0.5時間単位・切上)
2000RNDHALFへ。
1-1-2.T01TIMRRC = 1 の場合(0.1時間単位・切上)
3000RNDUP01へ。
1-1-3.T01TIMRRC = 2 の場合(0.1時間単位・切捨)
4000RNDDN01へ。
1-1-4.T01TIMRRC = 3 の場合(単純四捨五入・0.1h単位)
5000RNDNORMへ。
1-1-5.その他の場合
T01TIMOUT = T01TIMHRS をそのまま設定する。
1-2.復帰(GOBACK)。
2.0.5時間単位・切上(2000RNDHALF
2-1.T01TIMHRSを分に変換する。
WRK-MIN = T01TIMHRS * 60.
2-2.30分単位で切り上げる。
WRK-R = FUNCTION MOD(WRK-MIN, 30).
2-2-1.WRK-R > 0 の場合
WRK-MIN = ((WRK-MIN / 30) + 1) * 30.
2-2-2.WRK-R = 0 の場合
そのまま。
2-3.時間に戻す。
T01TIMOUT = WRK-MIN / 60.
2-4.復帰(0000MAINSOR-EXTへ)。
3.0.1時間単位・切上(3000RNDUP01
3-1.T01TIMHRSを分に変換する。
WRK-MIN = T01TIMHRS * 60.
3-2.6分単位で切り上げる。
WRK-R = FUNCTION MOD(WRK-MIN, 6).
3-2-1.WRK-R > 0 の場合
WRK-MIN = ((WRK-MIN / 6) + 1) * 6.
3-2-2.WRK-R = 0 の場合
そのまま。
3-3.時間に戻す。
T01TIMOUT = WRK-MIN / 60.
3-4.復帰(0000MAJSOR-EXTへ)。
4.0.1時間単位・切捨(4000RNDDN01
4-1.T01TIMHRSを分に変換する。
WRK-MIN = T01TIMHRS * 60.
4-2.6分単位で切り捨てる。
WRK-MIN = (WRK-MIN / 6) * 6.
4-3.時間に戻す。
T01TIMOUT = WRK-MIN / 60.
4-4.復帰(0000MAJSOR-EXTへ)。
5.単純四捨五入・0.1h単位(5000RNDNORM
5-1.T01TIMHRSに0.05を加算する。
WRK-WK = T01TIMHRS + 0.05.
5-2.小数点第2位以下を切り捨てる。
T01TIMOUT = WRK-WK.
*> 9(4)V9(1)へのMOVEにより自動で切捨
5-3.復帰(0000MAJSOR-EXTへ)。
```