b3e800e601
- 全6プログラム(ZAN01CHK~ZAN06UPD)ソース・実行ファイル - 5サブプログラム(SUB01DAT~SUB05TIM)ソース・DLL - 10 COPY書式ファイル - 詳細設計書12ファイル - サブシステムB全体設計書 - bin/配下の実行ファイル资産
108 lines
3.3 KiB
Markdown
108 lines
3.3 KiB
Markdown
# 詳細設計書
|
||
|
||
## 基本情報
|
||
|
||
| # | 項目 | 内容 |
|
||
|---|------|------|
|
||
| 1 | システム名 | 残業統計管理システム |
|
||
| 2 | プログラムID | SUB05TIM |
|
||
| 3 | プログラム名 | 時刻丸め計算サブ |
|
||
| 4 | PGMタイプ | サブ |
|
||
| 5 | PGMパターン | - |
|
||
| 6 | 機能概要 | 時間値を指定単位で丸め計算する。 |
|
||
|
||
※PGMタイプ:メイン、サブ
|
||
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
|
||
|
||
### 使用方法
|
||
|
||
```
|
||
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時間単位・切上)
|
||
1000RNDHALFへ。
|
||
1-1-2.T01TIMRRC = 1 の場合(0.1時間単位・切上)
|
||
2000RNDUPへ。
|
||
1-1-3.T01TIMRRC = 2 の場合(0.1時間単位・切捨)
|
||
3000RNDDOWNへ。
|
||
1-1-4.T01TIMRRC = 3 の場合(単純四捨五入・0.1h単位)
|
||
4000RNDNORMALへ。
|
||
1-1-5.その他の場合
|
||
T01TIMOUT = T01TIMHRS をそのまま設定する。
|
||
1-2.復帰(GOBACK)。
|
||
|
||
2.0.5時間単位・切上(1000RNDHALF)
|
||
2-1.T01TIMHRSを分に変換する。
|
||
WRK-MINUTES = T01TIMHRS * 60.
|
||
2-2.30分単位で切り上げる(DIVIDE REMAINDER)。
|
||
DIVIDE WRK-MINUTES BY 30
|
||
GIVING WRK-HOURS
|
||
REMAINDER WRK-REMAINDER.
|
||
2-2-1.WRK-REMAINDER > 0 の場合
|
||
WRK-HOURS = WRK-HOURS + 1.
|
||
2-2-2.WRK-REMAINDER = 0 の場合
|
||
そのまま。
|
||
2-3.時間に戻す。
|
||
T01TIMOUT = WRK-HOURS * 0.5.
|
||
2-4.復帰(0000MAINSOR-EXTへ)。
|
||
|
||
3.0.1時間単位・切上(2000RNDUP)
|
||
3-1.T01TIMHRSを分に変換する。
|
||
WRK-MINUTES = T01TIMHRS * 60.
|
||
3-2.6分単位で切り上げる(DIVIDE REMAINDER)。
|
||
DIVIDE WRK-MINUTES BY 6
|
||
GIVING WRK-HOURS
|
||
REMAINDER WRK-REMAINDER.
|
||
3-2-1.WRK-REMAINDER > 0 の場合
|
||
WRK-HOURS = WRK-HOURS + 1.
|
||
3-2-2.WRK-REMAINDER = 0 の場合
|
||
そのまま。
|
||
3-3.時間に戻す。
|
||
T01TIMOUT = WRK-HOURS * 0.1.
|
||
3-4.復帰(0000MAINSOR-EXTへ)。
|
||
|
||
4.0.1時間単位・切捨(3000RNDDOWN)
|
||
4-1.T01TIMHRSを分に変換する。
|
||
WRK-MINUTES = T01TIMHRS * 60.
|
||
4-2.6分単位で切り捨てる(DIVIDE REMAINDER)。
|
||
DIVIDE WRK-MINUTES BY 6
|
||
GIVING WRK-HOURS
|
||
REMAINDER WRK-REMAINDER.
|
||
4-3.時間に戻す。
|
||
T01TIMOUT = WRK-HOURS * 0.1.
|
||
4-4.復帰(0000MAINSOR-EXTへ)。
|
||
|
||
5.単純四捨五入・0.1h単位(4000RNDNORMAL)
|
||
5-1.T01TIMHRSに0.05を加算する。
|
||
WRK-HOURS = T01TIMHRS + 0.05.
|
||
5-2.小数点第2位以下を切り捨てる。
|
||
T01TIMOUT = WRK-HOURS.
|
||
*> 9(4)V9(1)へのMOVEにより自動で切捨
|
||
5-3.復帰(0000MAINSOR-EXTへ)。
|
||
```
|