# 詳細設計書 ## 基本情報 | # | 項目 | 内容 | |---|------|------| | 1 | システム名 | 残業統計管理システム | | 2 | プログラムID | SUB04CHK | | 3 | プログラム名 | 項目チェックサブ | | 4 | PGMタイプ | サブ | | 5 | PGMパターン | 項目チェック | | 6 | 機能概要 | チェックタイプに応じてデータ妥当性を検証する。 | ※PGMタイプ:メイン、サブ ※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新 ### 使用方法 ``` CALL 'SUB04CHK' USING C01CHKPAR ``` ### 入出力パラメータ | COPY句 | ZANCHKAC | |------------|----------| | NO | 入出力区分 | 名称 | 属性 | 桁数 | 説明 | |----|-----------|------|------|------|------| | 1 | I | C01CHKTYP | X(8) | 8 | チェックタイプ(DATE/TIME/NUM/EMPID) | | 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 | 社員番号不正(EMPID指定時、8桁以外または空欄) | | 6 | 9999 | チェックタイプ不明 | --- ## 処理詳細 ``` 1.制御処理(0000MAINSOR) 1-1.C01CHKTYPにより分岐する。 1-1-1.C01CHKTYP = 'DATE' の場合 1000CHKDATEへ。 1-1-2.C01CHKTYP = 'TIME' の場合 2000CHKTIMEへ。 1-1-3.C01CHKTYP = 'NUM' の場合 3000CHKNUMへ。 1-1-4.C01CHKTYP = 'EMPID' の場合 4000CHKEMPへ。 1-1-5.その他の場合 C01CHKRRC = 9999 を設定し、1-2へ。 1-2.復帰(GOBACK)。 2.日付チェック(1000CHKDATE) 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.時刻チェック(2000CHKTIME) 3-1.C01CHKDATから時分を抽出する。 HH = C01CHKDAT(1:2) MM = C01CHKDAT(3:2) 3-2.時チェック(HH) 3-2-1.HH > 23 → C01CHKRRC = 0002 を設定し、3-5へ。 3-3.分チェック(MM) 3-3-1.MM > 59 → C01CHKRRC = 0002 を設定し、3-5へ。 3-4.正常の場合 C01CHKRRC = 0000 を設定する。 3-5.復帰(0000MAINSOR-EXTへ)。 4.数字チェック(3000CHKNUM) 4-1.C01CHKDATにSPACEより前の文字があるかチェックする。 INSPECT C01CHKDAT TALLYING WRK-NN FOR CHARACTERS BEFORE INITIAL SPACE. 4-2.WRK-NN > 0 の場合 C01CHKRRC = 0003 を設定し、4-4へ。 4-3.正常の場合 C01CHKRRC = 0000 を設定する。 4-4.復帰(0000MAINSOR-EXTへ)。 5.社員番号チェック(4000CHKEMP) 5-1.桁数チェック(8桁以内) C01CHKDAT(9:72)にSPACES以外がある場合 C01CHKRRC = 0004 を設定し、5-4へ。 5-2.空欄チェック INSPECT C01CHKDAT(1:8) TALLYING WRK-NN FOR CHARACTERS BEFORE INITIAL SPACE. WRK-NN > 0 の場合 C01CHKRRC = 0004 を設定し、5-4へ。 5-3.正常の場合 C01CHKRRC = 0000 を設定する。 5-4.復帰(0000MAINSOR-EXTへ)。 ```