Initial import: 子系统B 前三本程序 production 资源
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 残業統計管理システム |
|
||||
| 2 | プログラムID | SUB01DAT |
|
||||
| 3 | プログラム名 | 運用日付取得サブ |
|
||||
| 4 | PGMタイプ | サブ |
|
||||
| 5 | PGMパターン | - |
|
||||
| 6 | 機能概要 | 現在日付を取得し、運用日付(YYYYMMDD)として返す |
|
||||
|
||||
### 使用方法
|
||||
|
||||
```
|
||||
CALL 'SUB01DAT' USING D01UBSPAR
|
||||
```
|
||||
|
||||
### 入出力パラメータ
|
||||
|
||||
| COPY句 | ZANDATAC |
|
||||
|------------|----------|
|
||||
|
||||
| NO | 入出力区分 | 名称 | 属性 | 桁数 | 説明 |
|
||||
|----|-----------|------|------|------|------|
|
||||
| 1 | O | D01FKICOD | S9(4) COMP | 4 | 復帰コード(0000:正常) |
|
||||
| 2 | O | D01UBSUDATE | 9(8) | 8 | 運用日付(YYYYMMDD) |
|
||||
|
||||
### リターンコード一覧
|
||||
|
||||
| NO | コード | 説明 |
|
||||
|----|--------|------|
|
||||
| 1 | 0000 | 正常終了 |
|
||||
| 2 | 0001 | 日付不正(月01〜12/日01〜31範囲外) |
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
```
|
||||
1.制御処理(0000MAINSOR)
|
||||
1-1.現在日時を取得する。
|
||||
ACCEPT WRK-SYS-DATE-14 FROM DATE YYYYMMDD.
|
||||
1-2.年月日を個別に抽出する。
|
||||
DIVIDE WRK-SYS-DATE-14 BY 10000 GIVING WRK-YYYY REMAINDER WRK-WK.
|
||||
DIVIDE WRK-WK BY 100 GIVING WRK-MM REMAINDER WRK-DD.
|
||||
1-3.月日チェック
|
||||
1-3-1.WRK-MM < 1 OR WRK-MM > 12
|
||||
→ D01FKICOD = 0001 を設定し、1-6へ。
|
||||
1-3-2.WRK-DD < 1 OR WRK-DD > 31
|
||||
→ D01FKICOD = 0001 を設定し、1-6へ。
|
||||
1-4.D01UBSUDATEにWRK-SYS-DATE-14を設定する。
|
||||
1-5.D01FKICOD = 0000 を設定する。
|
||||
1-6.復帰(GOBACK)。
|
||||
```
|
||||
@@ -0,0 +1,64 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 残業統計管理システム |
|
||||
| 2 | プログラムID | SUB02MSG |
|
||||
| 3 | プログラム名 | メッセージ編集出力サブ |
|
||||
| 4 | PGMタイプ | サブ |
|
||||
| 5 | PGMパターン | - |
|
||||
| 6 | 機能概要 | メッセージ番号とパラメータを編集し、メッセージログファイルへ出力する。 |
|
||||
|
||||
### 使用方法
|
||||
|
||||
```
|
||||
CALL 'SUB02MSG' USING M00MHOPAR
|
||||
```
|
||||
|
||||
### 入出力パラメータ
|
||||
|
||||
| COPY句 | ZANMSGAC |
|
||||
|------------|----------|
|
||||
|
||||
| NO | 入出力区分 | 名称 | 属性 | 桁数 | 説明 |
|
||||
|----|-----------|------|------|------|------|
|
||||
| 1 | I | M00MSGCOD | 9(3) | 3 | メッセージ番号 |
|
||||
| 2 | I | M00UMKDATS22-01 | X(30) | 30 | パラメータ1 |
|
||||
| 3 | I | M00UMKDATS22-02 | X(30) | 30 | パラメータ2 |
|
||||
| 4 | I | M00UMKDATS22-03 | X(30) | 30 | パラメータ3 |
|
||||
| 5 | I | M00UMKDATS22-04 | X(30) | 30 | パラメータ4 |
|
||||
| 6 | I | M00UMKDATS22-05 | X(30) | 30 | パラメータ5 |
|
||||
| 7 | I | M00UMKDATS22-06 | X(30) | 30 | パラメータ6 |
|
||||
| 8 | I | M00UMKDATS22-07 | X(30) | 30 | パラメータ7 |
|
||||
| 9 | I | M00UMKDATS22-08 | X(30) | 30 | パラメータ8 |
|
||||
| 10 | I | M00UMKDATS22-09 | X(30) | 30 | パラメータ9 |
|
||||
| 11 | I | M00UMKDATS22-10 | X(30) | 30 | パラメータ10 |
|
||||
|
||||
### リターンコード一覧
|
||||
|
||||
| NO | コード | 説明 |
|
||||
|----|--------|------|
|
||||
| 1 | 0000 | 正常終了(出力完了) |
|
||||
| 2 | 0001 | ファイルオープン失敗 |
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
```
|
||||
1.制御処理(0000MAINSOR)
|
||||
1-1.メッセージファイル(MSGLOG)のオープン状態を確認する。
|
||||
1-1-1.未オープンの場合
|
||||
OPEN EXTEND MSGLOG を実行する。
|
||||
1-1-1-1.オープン失敗の場合
|
||||
DISPLAY でエラーメッセージを出力し、1-4へ。
|
||||
1-2.メッセージ行(MSG-LINE)を編集する。
|
||||
1-2-1.現在日時を取得する。
|
||||
1-2-2.TIMESTAMP、M00MSGCOD、M00UMKDATS22-01〜10を MSG-LINE に編集する。
|
||||
1-3.MSGLOGにMSG-LINEを出力する。
|
||||
1-3-1.WRITE失敗の場合
|
||||
RETURN-CODEに0001を設定し、1-4へ。
|
||||
1-4.復帰(GOBACK)。
|
||||
```
|
||||
@@ -0,0 +1,45 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 残業統計管理システム |
|
||||
| 2 | プログラムID | SUB03END |
|
||||
| 3 | プログラム名 | ABEND処理サブ |
|
||||
| 4 | PGMタイプ | サブ |
|
||||
| 5 | PGMパターン | - |
|
||||
| 6 | 機能概要 | ABENDコードを表示し、異常終了する。 |
|
||||
|
||||
### 使用方法
|
||||
|
||||
```
|
||||
CALL 'SUB03END' USING E01ABDPAR
|
||||
```
|
||||
|
||||
### 入出力パラメータ
|
||||
|
||||
| COPY句 | ZANENDAC |
|
||||
|------------|----------|
|
||||
|
||||
| NO | 入出力区分 | 名称 | 属性 | 桁数 | 説明 |
|
||||
|----|-----------|------|------|------|------|
|
||||
| 1 | I | E01ABDCOD | 9(3) | 3 | ABENDコード |
|
||||
|
||||
### リターンコード一覧
|
||||
|
||||
| NO | コード | 説明 |
|
||||
|----|--------|------|
|
||||
| 1 | - | ABENDするため復帰コードなし(STOP RUN実行) |
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
```
|
||||
1.制御処理(0000MAINSOR)
|
||||
1-1.ABENDメッセージを表示する。
|
||||
DISPLAY 'ABEND CODE=' E01ABDCOD.
|
||||
1-2.異常終了する。
|
||||
STOP RUN.
|
||||
```
|
||||
@@ -0,0 +1,95 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 残業統計管理システム |
|
||||
| 2 | プログラムID | SUB04CHK |
|
||||
| 3 | プログラム名 | 項目チェックサブ |
|
||||
| 4 | PGMタイプ | サブ |
|
||||
| 5 | PGMパターン | 項目チェック |
|
||||
| 6 | 機能概要 | チェックタイプに応じてデータ妥当性を検証する。 |
|
||||
|
||||
### 使用方法
|
||||
|
||||
```
|
||||
CALL 'SUB04CHK' USING C01CHKPAR
|
||||
```
|
||||
|
||||
### 入出力パラメータ
|
||||
|
||||
| COPY句 | ZANCHKAC |
|
||||
|------------|----------|
|
||||
|
||||
| NO | 入出力区分 | 名称 | 属性 | 桁数 | 説明 |
|
||||
|----|-----------|------|------|------|------|
|
||||
| 1 | I | C01CHKTYP | X(8) | 8 | チェックタイプ(DATE/TIME/NUM) |
|
||||
| 2 | I | C01CHKDAT | X(80) | 80 | チェック対象データ |
|
||||
| 3 | O | C01CHKRRC | 9(4) | 4 | 復帰コード(0000:正常,0001:日付不正,0002:時刻不正,0003:数字不正) |
|
||||
|
||||
### リターンコード一覧
|
||||
|
||||
| NO | コード | 説明 |
|
||||
|----|--------|------|
|
||||
| 1 | 0000 | 正常終了(チェックOK) |
|
||||
| 2 | 0001 | 日付不正(DATE指定時、月01〜12/日01〜31範囲外) |
|
||||
| 3 | 0002 | 時刻不正(TIME指定時、時00〜23/分00〜59範囲外) |
|
||||
| 4 | 0003 | 数字不正(NUM指定時、非数字文字を含む) |
|
||||
| 5 | 0004 | チェックタイプ不明 |
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
```
|
||||
1.制御処理(0000MAINSOR)
|
||||
1-1.C01CHKTYPにより分岐する。
|
||||
1-1-1.C01CHKTYP = 'DATE' の場合
|
||||
2000CHKDATEへ。
|
||||
1-1-2.C01CHKTYP = 'TIME' の場合
|
||||
3000CHKTIMEへ。
|
||||
1-1-3.C01CHKTYP = 'NUM' の場合
|
||||
4000CHKNUMへ。
|
||||
1-1-4.その他の場合
|
||||
C01CHKRRC = 0004 を設定し、1-2へ。
|
||||
1-2.復帰(GOBACK)。
|
||||
|
||||
2.日付チェック(2000CHKDATE)
|
||||
2-1.C01CHKDATから年月日を抽出する。
|
||||
YYYY = C01CHKDAT(1:4)
|
||||
MM = C01CHKDAT(5:2)
|
||||
DD = C01CHKDAT(7:2)
|
||||
2-2.月チェック(MM)
|
||||
2-2-1.MM < 1 OR MM > 12
|
||||
→ C01CHKRRC = 0001 を設定し、2-5へ。
|
||||
2-3.日チェック(DD)
|
||||
2-3-1.DD < 1 OR DD > 31
|
||||
→ C01CHKRRC = 0001 を設定し、2-5へ。
|
||||
2-4.正常の場合
|
||||
C01CHKRRC = 0000 を設定する。
|
||||
2-5.復帰(0000MAINSOR-EXTへ)。
|
||||
|
||||
3.時刻チェック(3000CHKTIME)
|
||||
3-1.C01CHKDATから時分を抽出する。
|
||||
HH = C01CHKDAT(1:2)
|
||||
MM = C01CHKDAT(3:2)
|
||||
3-2.時チェック(HH)
|
||||
3-2-1.HH < 0 OR HH > 23
|
||||
→ C01CHKRRC = 0002 を設定し、3-5へ。
|
||||
3-3.分チェック(MM)
|
||||
3-3-1.MM < 0 OR MM > 59
|
||||
→ C01CHKRRC = 0002 を設定し、3-5へ。
|
||||
3-4.正常の場合
|
||||
C01CHKRRC = 0000 を設定する。
|
||||
3-5.復帰(0000MAINSOR-EXTへ)。
|
||||
|
||||
4.数字チェック(4000CHKNUM)
|
||||
4-1.C01CHKDATに非数字文字が含まれるかチェックする。
|
||||
INSPECT C01CHKDAT TALLYING WRK-NONDIGIT FOR NON-NUMERIC.
|
||||
4-2.WRK-NONDIGIT > 0 の場合
|
||||
C01CHKRRC = 0003 を設定し、4-4へ。
|
||||
4-3.正常の場合
|
||||
C01CHKRRC = 0000 を設定する。
|
||||
4-4.復帰(0000MAINSOR-EXTへ)。
|
||||
```
|
||||
@@ -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へ)。
|
||||
```
|
||||
@@ -0,0 +1,143 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 残業統計管理システム |
|
||||
| 2 | プログラムID | ZAN01CHK |
|
||||
| 3 | プログラム名 | 残業申請振分処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | 振り分け |
|
||||
| 6 | 機能概要 | CSV形式の残業申請ファイルを読み込み、ステータスによって振り分ける。 |
|
||||
| 7 | | ステータス0/1:有効申請としてOVT-VALIDに出力 |
|
||||
| 8 | | ステータス9:取消申請としてOVT-CANCELに出力 |
|
||||
| 9 | | その他:エラーとしてERROR-LOGに出力 |
|
||||
|
||||
※PGMパターン:マッチング(1:1、1:N、M:N)、レイアウト編集のみ(GETPUT)、項目チェック、振り分け、キーブレイク、キーブレイク(集計、集約)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | OVT-APPLY(CSV) | ソート不要。CSV形式(カンマ区切り) |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | OVT-APPLY | R01 | ZAN01R01 | I | 自前(80B) | F | | 80 | PS | CSV形式 |
|
||||
| 2 | OVT-VALID | W01 | ZAN01W01 | O | ZAN01REC | FB | | 80 | PS | |
|
||||
| 3 | OVT-CANCEL | W02 | ZAN01W02 | O | ZAN01REC | FB | | 80 | PS | |
|
||||
| 4 | ERROR-LOG | W03 | ZAN01W03 | O | ZAN05REC | VB | | 200 | PS | |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | OVT-APPLY | なし | なし |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| NO | 機能 | プログラムID | 使用COPY名 |
|
||||
|----|------|-------------|-----------|
|
||||
| 1 | 運用日付取得SUB | SUB01DAT | ZANDATAC |
|
||||
| 2 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC |
|
||||
| 3 | ABEND処理SUB | SUB03END | ZANENDAC |
|
||||
| 4 | 項目チェックSUB | SUB04CHK | ZANCHKAC |
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
```
|
||||
1.初期処理(1000ITTSOR)
|
||||
1-1.開始メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:1(開始メッセージ)
|
||||
1-2.コンパイル日時出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:33(コンパイル日時)
|
||||
PARM1:コンパイル日時
|
||||
PARM2:'COMPILED'
|
||||
1-3.ワークエリアの初期化
|
||||
1-4.運用日付取得SUB(SUB01DAT)により運用日を取得する。
|
||||
復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。
|
||||
【メッセージ編集】
|
||||
メッセージ番号:5(サブエラー)
|
||||
PARM1:'SUB01DAT'
|
||||
PARM2:復帰コード
|
||||
【ABEND処理SUB】
|
||||
ABENDコード:999
|
||||
1-5.使用ファイルのオープン
|
||||
1-6.R01を読み込む。(1100R01INNSOR)(1回目)
|
||||
|
||||
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
|
||||
2-1.CSVの分解
|
||||
UNSTRINGでカンマ区切りのCSVを各項目に分解する。(2010CSVSOR)
|
||||
2-2.ステータス判定
|
||||
2-2-1.ステータスが0または1の場合
|
||||
項目チェックを実施し、エラーがあればERROR-LOGに出力、なければOVT-VALIDに出力。(2020VALIDATESOR)
|
||||
2-2-1-1.日付チェック(SUB04CHK)。エラー→W03出力
|
||||
2-2-1-2.開始時刻>=1830チェック。NG→W03出力
|
||||
2-2-1-3.開始時刻<終了時刻チェック。NG→W03出力
|
||||
2-2-1-4.時間差>=30分チェック。NG→W03出力
|
||||
2-2-1-5.すべて通過→W01出力
|
||||
2-2-2.ステータスが9の場合
|
||||
OVT-CANCELにそのまま出力する。(2030CANCELSOR)
|
||||
2-2-3.その他の場合
|
||||
ERROR-LOGに出力する。(2040ERRORSOR)
|
||||
2-3.R01を読み込む。(1100R01INNSOR)(2件目以降)
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.入出力ファイルのクローズ
|
||||
3-2.入出力件数出力メッセージ出力
|
||||
【入力メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:当該入力ファイルのDD名
|
||||
PARM2:当該入力ファイルの件数
|
||||
【出力メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:当該出力ファイルのDD名
|
||||
PARM2:当該出力ファイルの件数
|
||||
3-3.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/OVT-VALID)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | APPL-ID | CSV同項目を設定 | |
|
||||
| 2 | EMP-ID | CSV同項目を設定 | |
|
||||
| 3 | APPL-DATE | CSV同項目を設定 | |
|
||||
| 4 | START-TIME | CSV同項目を設定 | |
|
||||
| 5 | END-TIME | CSV同項目を設定 | |
|
||||
| 6 | STATUS | CSV同項目を設定 | 0または1 |
|
||||
| 7 | OVT-TYPE | CSV同項目を設定 | |
|
||||
| 8 | FILLER | CSV同項目を設定 | |
|
||||
|
||||
### 出力ファイル2(W02/OVT-CANCEL)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | APPL-ID | CSV同項目を設定 | |
|
||||
| 2 | EMP-ID | CSV同項目を設定 | |
|
||||
| 3 | APPL-DATE | CSV同項目を設定 | |
|
||||
| 4 | START-TIME | CSV同項目を設定 | |
|
||||
| 5 | END-TIME | CSV同項目を設定 | |
|
||||
| 6 | STATUS | CSV同項目を設定 | 9 |
|
||||
| 7 | OVT-TYPE | CSV同項目を設定 | |
|
||||
| 8 | FILLER | CSV同項目を設定 | |
|
||||
|
||||
### 出力ファイル3(W03/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 01で固定 | |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |
|
||||
@@ -0,0 +1,122 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 残業統計管理システム |
|
||||
| 2 | プログラムID | ZAN02CHK |
|
||||
| 3 | プログラム名 | 時間帯重複チェック処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | 項目チェック |
|
||||
| 6 | 機能概要 | OVT-VSORTファイルの同一社員・同一日付内の時間帯重複をチェックする。 |
|
||||
| 7 | | 重複なしのレコードはOVT-NODUPに出力 |
|
||||
| 8 | | 重複ありのレコードはERROR-LOGに出力 |
|
||||
|
||||
※PGMパターン:マッチング(1:1、1:N、M:N)、レイアウト編集のみ(GETPUT)、項目チェック、振り分け、キーブレイク、キーブレイク(集計、集約)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | OVT-VSORT | 社員番号>日付>開始時刻で昇順ソート済み |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | OVT-VSORT | R01 | ZAN02R01 | I | ZAN01REC | FB | | 80 | PS | |
|
||||
| 2 | OVT-NODUP | W01 | ZAN02W01 | O | ZAN01REC | FB | | 80 | PS | |
|
||||
| 3 | ERROR-LOG | W02 | ZAN02W02 | O | ZAN05REC | VB | | 200 | PS | |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | OVT-VSORT | EMP-ID>APPL-DATE>START-TIME(昇順) | EMP-ID>APPL-DATE |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| NO | 機能 | プログラムID | 使用COPY名 |
|
||||
|----|------|-------------|-----------|
|
||||
| 1 | 運用日付取得SUB | SUB01DAT | ZANDATAC |
|
||||
| 2 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC |
|
||||
| 3 | ABEND処理SUB | SUB03END | ZANENDAC |
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
```
|
||||
1.初期処理(1000ITTSOR)
|
||||
1-1.開始メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:1(開始メッセージ)
|
||||
1-2.コンパイル日時出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:33(コンパイル日時)
|
||||
PARM1:コンパイル日時
|
||||
PARM2:'COMPILED'
|
||||
1-3.ワークエリアの初期化
|
||||
1-4.運用日付取得SUB(SUB01DAT)により運用日を取得する。
|
||||
復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。
|
||||
【メッセージ編集】
|
||||
メッセージ番号:5(サブエラー)
|
||||
PARM1:'SUB01DAT'
|
||||
PARM2:復帰コード
|
||||
【ABEND処理SUB】
|
||||
ABENDコード:999
|
||||
1-5.使用ファイルのオープン
|
||||
1-6.R01を読み込む。(1100R01INNSOR)(1回目)
|
||||
1-7.1件目をW01に出力し、前レコードに保持する。
|
||||
|
||||
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
|
||||
2-1.前レコードとの比較
|
||||
2-1-1.同一社員番号かつ同一日付の場合
|
||||
2-1-1-1.前終了時刻>現開始時刻 → 重複あり(2011OVERLAPERRSOR)
|
||||
エラーカテゴリ02でERROR-LOGに出力
|
||||
2-1-1-2.前終了時刻<=現開始時刻 → 重複なし(2012NORMALOUTSOR)
|
||||
W01に出力
|
||||
2-1-2.異なる社員番号または日付の場合(キーブレイク)
|
||||
キーブレイク処理として前レコードを更新しW01に出力(2013KEYBRSOR)
|
||||
2-2.R01を読み込む。(1100R01INNSOR)(2件目以降)
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.入出力ファイルのクローズ
|
||||
3-2.入出力件数出力メッセージ出力
|
||||
【入力メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:当該入力ファイルのDD名
|
||||
PARM2:当該入力ファイルの件数
|
||||
【出力メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:当該出力ファイルのDD名
|
||||
PARM2:当該出力ファイルの件数
|
||||
3-3.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/OVT-NODUP)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | APPL-ID | R01.同項目を設定 | |
|
||||
| 2 | EMP-ID | R01.同項目を設定 | |
|
||||
| 3 | APPL-DATE | R01.同項目を設定 | |
|
||||
| 4 | START-TIME | R01.同項目を設定 | |
|
||||
| 5 | END-TIME | R01.同項目を設定 | |
|
||||
| 6 | STATUS | R01.同項目を設定 | |
|
||||
| 7 | OVT-TYPE | R01.同項目を設定 | |
|
||||
| 8 | FILLER | R01.同項目を設定 | |
|
||||
|
||||
### 出力ファイル2(W02/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 02で固定 | 重複エラー |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | EMP-IDと日付を編集 |
|
||||
@@ -0,0 +1,123 @@
|
||||
# 詳細設計書
|
||||
|
||||
## 基本情報
|
||||
|
||||
| # | 項目 | 内容 |
|
||||
|---|------|------|
|
||||
| 1 | システム名 | 残業統計管理システム |
|
||||
| 2 | プログラムID | ZAN03CHK |
|
||||
| 3 | プログラム名 | 打刻時間照合処理 |
|
||||
| 4 | PGMタイプ | メイン |
|
||||
| 5 | PGMパターン | 項目チェック |
|
||||
| 6 | 機能概要 | OVT-NODUPとPUNCH-SORTEDを突合し申請時間帯の照合を行う。 |
|
||||
| 7 | | 申請時間帯が出勤〜退勤の範囲内かを確認する。 |
|
||||
| 8 | | 申請日が休日かを判定しOVT-TYPEを付加する。 |
|
||||
|
||||
※PGMパターン:マッチング(1:1、1:N、M:N)、レイアウト編集のみ(GETPUT)、項目チェック、振り分け、キーブレイク、キーブレイク(集計、集約)、DB更新
|
||||
|
||||
### 前提条件
|
||||
|
||||
| NO | 対象ファイル | 条件 |
|
||||
|----|-------------|------|
|
||||
| 1 | OVT-NODUP | 社員番号>日付で昇順ソート済み |
|
||||
| 2 | PUNCH-SORTED | 社員番号>日付で昇順ソート済み |
|
||||
|
||||
### 使用ファイル一覧
|
||||
|
||||
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|
||||
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
|
||||
| 1 | OVT-NODUP | R01 | ZAN03R01 | I | ZAN01REC | FB | | 80 | PS | |
|
||||
| 2 | PUNCH-SORTED | R02 | ZAN03R02 | I | 自前(80B) | FB | | 80 | PS | |
|
||||
| 3 | HOLIDAY-FILE | R03 | ZAN03R03 | I | 自前(80B) | FB | | 80 | PS | 休日カレンダー |
|
||||
| 4 | OVT-CHECKED | W01 | ZAN03W01 | O | ZAN01REC | FB | | 80 | PS | |
|
||||
| 5 | ERROR-LOG | W02 | ZAN03W02 | O | ZAN05REC | VB | | 200 | PS | |
|
||||
|
||||
### キー項目一覧
|
||||
|
||||
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|
||||
|----|-----------|---------------------|-------------------------------------------|
|
||||
| 1 | OVT-NODUP | EMP-ID>APPL-DATE(昇順) | EMP-ID>APPL-DATE |
|
||||
| 2 | PUNCH-SORTED | EMP-ID>DATE(昇順) | EMP-ID>DATE |
|
||||
|
||||
### 使用モジュール一覧
|
||||
|
||||
| NO | 機能 | プログラムID | 使用COPY名 |
|
||||
|----|------|-------------|-----------|
|
||||
| 1 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC |
|
||||
| 2 | ABEND処理SUB | SUB03END | ZANENDAC |
|
||||
|
||||
※ ZAN03CHKはFUNCTION CURRENT-DATEを使用し、SUB01DATは使用しない。
|
||||
|
||||
---
|
||||
|
||||
## 処理詳細
|
||||
|
||||
```
|
||||
1.初期処理(1000ITTSOR)
|
||||
1-1.開始メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:1(開始メッセージ)
|
||||
1-2.コンパイル日時出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:33(コンパイル日時)
|
||||
PARM1:コンパイル日時
|
||||
PARM2:'COMPILED'
|
||||
1-3.ワークエリアの初期化
|
||||
1-4.日付取得(FUNCTION CURRENT-DATE)
|
||||
FUNCTION CURRENT-DATEにより現在日付を取得する。
|
||||
1-5.使用ファイルのオープン
|
||||
1-6.HOLIDAY-FILEを全件読込しHOLIDAY-TABLEに設定する。(1300HOLIDAYSOR)
|
||||
1-7.R01を読み込む。(1100R01INNSOR)(1回目)
|
||||
1-8.R02を読み込む。(1200R02INNSOR)(1回目)
|
||||
|
||||
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
|
||||
2-1.R01キーとR02キーを比較
|
||||
2-1-1.R01キー < R02キー(打刻データなし)
|
||||
ERROR-LOGにエラー出力する(エラーカテゴリ03)。(2010NOMATCHSOR)
|
||||
2-1-2.R01キー = R02キー(マッチ)
|
||||
時間範囲チェックを実施する。(2020MATCHSOR→2100CHKTIMSOR)
|
||||
2-1-2-1.開始時刻>=出勤時刻 かつ 終了時刻<=退勤時刻 → 通過
|
||||
OVT-TYPEを設定しW01に出力する。(2200SETOVTSOR)
|
||||
2-1-2-2.範囲外 → ERROR-LOGに出力(エラーカテゴリ03)
|
||||
2-1-3.R01キー > R02キー(R02スキップ)
|
||||
R02を1件読み進める。(1200R02INNSOR)
|
||||
|
||||
3.終了処理(3000STPSOR)
|
||||
3-1.入出力ファイルのクローズ
|
||||
3-2.入出力件数出力メッセージ出力
|
||||
【入力メッセージ編集】
|
||||
メッセージ番号:6(入力件数メッセージ)
|
||||
PARM1:当該入力ファイルのDD名
|
||||
PARM2:当該入力ファイルの件数
|
||||
【出力メッセージ編集】
|
||||
メッセージ番号:7(出力件数メッセージ)
|
||||
PARM1:当該出力ファイルのDD名
|
||||
PARM2:当該出力ファイルの件数
|
||||
3-3.終了メッセージ出力
|
||||
【メッセージ編集】
|
||||
メッセージ番号:2(終了メッセージ)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 出力レコード定義
|
||||
|
||||
### 出力ファイル1(W01/OVT-CHECKED)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | APPL-ID | R01.同項目を設定 | |
|
||||
| 2 | EMP-ID | R01.同項目を設定 | |
|
||||
| 3 | APPL-DATE | R01.同項目を設定 | |
|
||||
| 4 | START-TIME | R01.同項目を設定 | |
|
||||
| 5 | END-TIME | R01.同項目を設定 | |
|
||||
| 6 | STATUS | R01.同項目を設定 | |
|
||||
| 7 | OVT-TYPE | 2200SETOVTSORで設定 | W:平日/H:休日 |
|
||||
| 8 | FILLER | R01.同項目を設定 | |
|
||||
|
||||
### 出力ファイル2(W02/ERROR-LOG)
|
||||
|
||||
| No | 項目名 | 設定元 | 備考 |
|
||||
|----|--------|--------|------|
|
||||
| 1 | ERR-CATEGORY | 03で固定 | 打刻不突合 |
|
||||
| 2 | ERR-DETAIL | STRINGで編集 | 社員番号と日付を編集 |
|
||||
Reference in New Issue
Block a user