Files
cobol-tna-system/詳細設計書/詳細設計書_KIN01INP.md

154 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 詳細設計書
## 基本情報
| # | 項目 | 内容 |
|---|------|------|
| 1 | システム名 | 勤怠休暇管理システム |
| 2 | プログラムID | KIN01INP |
| 3 | プログラム名 | 休暇申請CSV取込・検証処理 |
| 4 | PGMタイプ | メイン |
| 5 | PGMパターン | 振り分け |
| 6 | 機能概要 | CSV形式の休暇申請ファイルを読み込み、休暇種別テーブル検索と項目チェックを行い、ステータスによってWORK-LEAVEまたはERROR-LOGへ振り分ける。 |
| 7 | | ステータス'1':有効申請としてWORK-LEAVEに出力(項目チェック実施) |
| 8 | | ステータス'9':取消申請としてWORK-LEAVEに出力(項目チェックなし、APPL-ID保持) |
| 9 | | その他・フィールド数異常・休暇種別異常:ERROR-LOGに出力 |
※PGMタイプ:メイン、サブ
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
### 前提条件
| NO | 対象ファイル | 条件 |
|----|-------------|------|
| 1 | KIN01R01(CSV) | ソート不要。CSV形式(カンマ区切り、8項目) |
### 使用ファイル一覧
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
| 1 | CSV-INPUT | R01 | KIN01R01 | I | 自前(80B) | F | | 80 | PS | CSV形式 |
| 2 | WORK-LEAVE | W01 | KIN01W01 | O | KIN01REC | FB | | 80 | PS | |
| 3 | ERROR-LOG | W02 | KIN01W02 | O | KIN05REC | VB | | 200 | PS | |
### キー項目一覧
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|----|-----------|---------------------|-------------------------------------------|
| 1 | CSV-INPUT | なし | なし |
### 使用モジュール一覧
| 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.休暇種別テーブル設定(WRK-LEAVE-TYPE-TABLE)
WRK-LT-CODE(1)='01' (年休/年假)
WRK-LT-CODE(2)='02' (事假)
WRK-LT-CODE(3)='03' (因公特批假)
WRK-LT-CODE(4)='04' (病欠)
1-5.運用日付取得SUB(SUB01DAT)により運用日を取得する。
復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。
【メッセージ編集】
メッセージ番号:5(サブエラー)
PARM1'SUB01DAT'
PARM2:復帰コード
【ABEND処理SUB】
ABENDコード:999
1-6.使用ファイルのオープン(R01:入力、W01/W02:出力)
1-7.R01を読み込む。(1100R01INNSOR)(1回目)
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
2-1.CSVの分解(2010CSVSOR)
UNSTRINGでカンマ区切りのCSVを8項目に分解する。
(APPL-ID, EMP-ID, START-DATE, START-TIME, END-DATE, END-TIME, LEAVE-TYPE, STATUS)
2-2.休暇種別テーブル検索(2020LEAVSERSOR)
SEARCH(非ALL)でWRK-LEAVE-TYPE-TABLEを検索し、休暇種別の妥当性を検証する。
2-3.エラー判定
2-3-1.フィールド数≠8の場合
ERROR-LOGに出力する。(2050ERRORSOR)
エラー種別:'F'(FIELD COUNT ERROR)
2-3-2.休暇種別がテーブルに存在しない場合
ERROR-LOGに出力する。(2050ERRORSOR)
エラー種別:'L'(INVALID LEAVE TYPE)
2-3-3.ステータス'1'(有効)の場合
項目チェックを実施し、エラーがあればERROR-LOGに出力、なければWORK-LEAVEに出力する。(2030VALIDATESOR)
2-3-3-1.SUB04CHKで社員番号チェック(EMPID): WRK-CSV-EMP-IDをC01CHKDATに設定し、CALL 'SUB04CHK' EMPIDタイプで社員番号フォーマットの妥当性を検証する。エラーの場合はW02ERR-CATEGORY='01'でエラーログに出力し本レコードをスキップ。
2-3-3-2.開始日付チェック(SUB04CHK)。エラー→W02出力
2-3-3-3.開始時刻チェック(SUB04CHK)。エラー→W02出力
2-3-3-4.終了日付チェック(SUB04CHK)。エラー→W02出力
2-3-3-5.終了時刻チェック(SUB04CHK)。エラー→W02出力
2-3-3-6.複合条件チェック(AND+OR+3段ネスト)
開始日>0 AND 終了日>0 AND 開始時刻>0 の場合:
- 開始日>終了日 → WRK-DEMO-TYPE=10
- 開始日=終了日 AND 開始時刻>=終了時刻 → WRK-DEMO-TYPE=10
- 上記以外 → WRK-DEMO-TYPE=20
2-3-3-7.すべて通過→W01出力(APPL-ID=0, STATUS='1')
2-3-4.ステータス'9'(取消)の場合
WORK-LEAVEにそのまま出力する。(2040CANCELSOR)
APPL-ID=CSV値、STATUS='9'(項目チェックなし)
2-3-5.その他のステータスの場合
ERROR-LOGに出力する。(2050ERRORSOR)
エラー種別:'S'(INVALID STATUS)
2-4.R01を読み込む。(1100R01INNSOR)(2件目以降)
3.終了処理(3000STPSOR
3-1.入出力ファイルのクローズ
3-2.入出力件数出力メッセージ出力
【入力メッセージ編集】
メッセージ番号:6(入力件数メッセージ)
PARM1'KIN01R01'
PARM2:当該入力ファイルの件数
【出力メッセージ編集】
メッセージ番号:7(出力件数メッセージ)
PARM1'KIN01W01'、'KIN01W02'
PARM2:当該出力ファイルの件数
3-3.終了メッセージ出力
【メッセージ編集】
メッセージ番号:2(終了メッセージ)
```
---
## 出力レコード定義
### 出力ファイル1W01/WORK-LEAVE KIN01REC 80B FB
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | APPL-ID | WRK-CSV-APPL-ID | 有効時=0、取消時=CSV値 |
| 2 | EMP-ID | WRK-CSV-EMP-ID | |
| 3 | LEAVE-TYPE | WRK-CSV-LEAVE-TYPE | 01/02/03/04 |
| 4 | START-DATE | WRK-CSV-START-DATE | YYYYMMDD |
| 5 | START-TIME | WRK-CSV-START-TIME | HHMM |
| 6 | END-DATE | WRK-CSV-END-DATE | YYYYMMDD |
| 7 | END-TIME | WRK-CSV-END-TIME | HHMM |
| 8 | STATUS | WRK-CSV-STATUS | '1'(有効)または'9'(取消) |
| 9 | FILLER | SPACE | 36B |
### 出力ファイル2W02/ERROR-LOG KIN05REC 200B VB
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | ERR-CATEGORY | '01'固定 | |
| 2 | ERR-DETAIL | STRING編集 | エラー内容(198B) |