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
+11
View File
@@ -0,0 +1,11 @@
*
* 加班申請レコード 80B
*
03 (A)APPL-ID PIC X(008).
03 (A)EMP-ID PIC 9(008).
03 (A)APPL-DATE PIC 9(008).
03 (A)START-TIME PIC 9(004).
03 (A)END-TIME PIC 9(004).
03 (A)STATUS PIC X(001).
03 (A)OVT-TYPE PIC X(001).
03 (A)FILLER PIC X(046).
+12
View File
@@ -0,0 +1,12 @@
*
* マッチング結果レコード 80B
*
03 (A)APPL-ID PIC X(008).
03 (A)EMP-ID PIC 9(008).
03 (A)APPL-DATE PIC 9(008).
03 (A)START-TIME PIC 9(004).
03 (A)END-TIME PIC 9(004).
03 (A)STATUS PIC X(001).
03 (A)OVT-TYPE PIC X(001).
03 (A)PROC-SEQ PIC 9(002).
03 (A)FILLER PIC X(044).
+11
View File
@@ -0,0 +1,11 @@
*
* 集約結果レコード 80B
*
03 (A)APPL-ID PIC X(008).
03 (A)EMP-ID PIC 9(008).
03 (A)APPL-DATE PIC 9(008).
03 (A)START-TIME PIC 9(004).
03 (A)END-TIME PIC 9(004).
03 (A)OVT-HOURS PIC 9(004)V9(001).
03 (A)OVT-TYPE PIC X(001).
03 (A)FILLER PIC X(042).
+5
View File
@@ -0,0 +1,5 @@
*
* DBCLEAN対象レコード 80B
*
03 (A)APPL-ID PIC X(008).
03 (A)FILLER PIC X(072).
+5
View File
@@ -0,0 +1,5 @@
*
* エラーログレコード VB可変長
*
03 (A)ERR-CATEGORY PIC 9(002).
03 (A)ERR-DETAIL PIC X(198).
+5
View File
@@ -0,0 +1,5 @@
* SUB04CHK 項目チェック用連絡領域
01 C01CHKPAR.
03 C01CHKTYP PIC X(008).
03 C01CHKDAT PIC X(080).
03 C01CHKRRC PIC 9(004).
+4
View File
@@ -0,0 +1,4 @@
* SUB01DAT 運用日付取得用連絡領域
01 D01UBSPAR.
03 D01FKICOD PIC S9(004) COMP.
03 D01UBSUDATE PIC 9(008).
+3
View File
@@ -0,0 +1,3 @@
* SUB03END ABEND処理用連絡領域
01 E01ABDPAR.
03 E01ABDCOD PIC 9(003).
+13
View File
@@ -0,0 +1,13 @@
* SUB02MSG メッセージ出力用連絡領域
01 M00MHOPAR.
03 M00MSGCOD PIC 9(003).
03 M00UMKDATS22-01 PIC X(030).
03 M00UMKDATS22-02 PIC X(030).
03 M00UMKDATS22-03 PIC X(030).
03 M00UMKDATS22-04 PIC X(030).
03 M00UMKDATS22-05 PIC X(030).
03 M00UMKDATS22-06 PIC X(030).
03 M00UMKDATS22-07 PIC X(030).
03 M00UMKDATS22-08 PIC X(030).
03 M00UMKDATS22-09 PIC X(030).
03 M00UMKDATS22-10 PIC X(030).
+5
View File
@@ -0,0 +1,5 @@
* SUB05TIM 時刻丸め用連絡領域
01 T01TIMPAR.
03 T01TIMHRS PIC 9(004)V9(001).
03 T01TIMOUT PIC 9(004)V9(001).
03 T01TIMRRC PIC 9(004).
+483
View File
@@ -0,0 +1,483 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. ZAN01CHK.
*****************************************************************
* システム名 : 残業統計管理システム *
* プログラムID : ZAN01CHK *
* プログラム名 : 残業申請振分処理 *
* 作成日 : 2026-06-14 *
* 処理概要 : CSV形式の残業申請ファイルを読み込み、 *
* ステータスによって適切に振り分ける。 *
* *
*****************************************************************
* 更新履歴 *
*---------------------------------------------------------------*
* 更新日付 担当者 更新内容 *
*---------------------------------------------------------------*
* 26-06-14 @@@ 新規作成 *
* *
*****************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-ZSERIES.
OBJECT-COMPUTER. IBM-ZSERIES.
*
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT R01INNFIL ASSIGN TO ZAN01R01.
SELECT W01OUTFIL ASSIGN TO ZAN01W01.
SELECT W02OUTFIL ASSIGN TO ZAN01W02.
SELECT W03OUTFIL ASSIGN TO ZAN01W03.
*
DATA DIVISION.
FILE SECTION.
*
*****************************************************************
* ##R01## *
*****************************************************************
FD R01INNFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS F.
01 R01INNREC.
03 R01LINE PIC X(80).
*
*****************************************************************
* ##W01## *
*****************************************************************
FD W01OUTFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS F.
01 W01OUTREC.
COPY ZAN01REC REPLACING ==(A)== BY ==W01==.
*
*****************************************************************
* ##W02## *
*****************************************************************
FD W02OUTFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS F.
01 W02OUTREC.
COPY ZAN01REC REPLACING ==(A)== BY ==W02==.
*
*****************************************************************
* ##W03## *
*****************************************************************
FD W03OUTFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS V.
01 W03OUTREC.
COPY ZAN05REC REPLACING ==(A)== BY ==W03==.
*
WORKING-STORAGE SECTION.
*
*****************************************************************
* コンスタント領域 *
*****************************************************************
01 CNSARA.
03 CNS-PRGIDX PIC X(008) VALUE 'ZAN01CHK'.
03 CNS-MSGSTR PIC 9(003) VALUE 001.
03 CNS-MSGFIN PIC 9(003) VALUE 002.
03 CNS-MSGSUBEEK PIC 9(003) VALUE 005.
03 CNS-MSGIINKES PIC 9(003) VALUE 006.
03 CNS-MSGOUTKES PIC 9(003) VALUE 007.
03 CNS-MSGKEYINF PIC 9(003) VALUE 033.
03 CNS-KN0002 PIC 9(001) VALUE 2.
03 CNS-ABD999 PIC 9(003) VALUE 999.
01 CNS-STAT-0 PIC X(001) VALUE '0'.
01 CNS-STAT-1 PIC X(001) VALUE '1'.
01 CNS-STAT-9 PIC X(001) VALUE '9'.
01 CNS-TIME-1830 PIC 9(004) VALUE 1830.
01 CNS-DIFF-30 PIC 9(004) VALUE 30.
*
*****************************************************************
* カウンタ領域 *
*****************************************************************
01 CUNARA.
03 CUN-R01INN PIC S9(009) COMP-3
VALUE ZERO.
03 CUN-W01OUT PIC S9(009) COMP-3
VALUE ZERO.
03 CUN-W02OUT PIC S9(009) COMP-3
VALUE ZERO.
03 CUN-W03OUT PIC S9(009) COMP-3
VALUE ZERO.
*
*****************************************************************
* 作業領域 *
*****************************************************************
01 WRKARA.
*** 運用日付
03 WRK-U06 PIC 9(008).
*** 読込フラグ
03 WRK-R01EOF PIC X(001).
*** CSV分解用
03 WRK-COMMA-CNT PIC 9(002) COMP.
03 WRK-CSV-APPL-ID PIC X(008).
03 WRK-CSV-EMP-ID PIC X(008).
03 WRK-CSV-APPL-DATE PIC X(008).
03 WRK-CSV-START-TIME PIC X(004).
03 WRK-CSV-END-TIME PIC X(004).
03 WRK-CSV-STATUS PIC X(001).
03 WRK-CSV-OVT-TYPE PIC X(001).
03 WRK-CSV-FILLER PIC X(046).
*** 時間計算用
03 WRK-START-NUM PIC 9(004).
03 WRK-END-NUM PIC 9(004).
03 WRK-DIFF-HH PIC 9(002).
03 WRK-DIFF-MM PIC 9(002).
03 WRK-DIFF-MIN PIC 9(004).
*
*****************************************************************
* サブプログラム連絡領域 *
*****************************************************************
*** 運用日付取得
COPY ZANDATAC.
*** メッセージ編集出力SR用
COPY ZANMSGAC.
*** ABEND処理SR用
COPY ZANENDAC.
*** 項目チェックSR用
COPY ZANCHKAC.
*
PROCEDURE DIVISION.
*****************************************************************
* サブモジュールNO: (0.0) *
* サブモジュール名: 制御処理 *
* 処理概要 : メインコントロール処理 *
*****************************************************************
0000MAJCOLSOR SECTION.
*
*** 初期処理
PERFORM 1000ITTSOR.
*
*** メイン処理
PERFORM 2000MAJSOR
UNTIL WRK-R01EOF = '1'.
*
*** 終了処理
PERFORM 3000STPSOR.
*
0000MAJCOLSOR-EXT.
GOBACK.
*****************************************************************
* サブモジュールNO: (1.0) *
* サブモジュール名: 初期処理 *
* 処理概要 : 開始メッセージ出力・各種初期化処理 *
*****************************************************************
1000ITTSOR SECTION.
*
*** 開始メッセージ出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGSTR TO M00MSGCOD.
PERFORM 4000MSGOUTSOR.
*
*** コンパイル日時出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGKEYINF TO M00MSGCOD.
MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01.
MOVE 'COMPILED' TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
*** ワークエリア初期化
INITIALIZE WRKARA.
*
*** 運用日付取得
INITIALIZE D01UBSPAR.
CALL 'SUB01DAT' USING D01UBSPAR.
IF D01FKICOD = ZERO
MOVE D01UBSUDATE TO WRK-U06
ELSE
INITIALIZE M00MHOPAR
MOVE CNS-MSGSUBEEK TO M00MSGCOD
MOVE 'SUB01DAT' TO M00UMKDATS22-01
MOVE D01FKICOD TO M00UMKDATS22-02
PERFORM 4000MSGOUTSOR
PERFORM 9999ABDSOR
END-IF.
*
*** 入出力ファイルOPEN
OPEN INPUT R01INNFIL
OUTPUT W01OUTFIL
W02OUTFIL
W03OUTFIL.
*
*** #R01#を読み込み
PERFORM 1100R01INNSOR.
*
1000ITTSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(1.1) *
* サブモジュール名:##R01##読込処理 *
* 処理概要 : レコード読込・EOF判定処理 *
*****************************************************************
1100R01INNSOR SECTION.
*
READ R01INNFIL
AT END
MOVE '1' TO WRK-R01EOF
NOT AT END
ADD 1 TO CUN-R01INN
END-READ.
*
1100R01INNSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.0) *
* サブモジュール名: 主処理 *
* 処理概要 : CSV分解・ステータス判定・振り分け処理 *
*****************************************************************
2000MAJSOR SECTION.
*
*** CSV分解
PERFORM 2010CSVSOR.
*
*** ステータス判定
EVALUATE TRUE
WHEN WRK-CSV-STATUS = CNS-STAT-0
OR WRK-CSV-STATUS = CNS-STAT-1
*** 有効申請処理
PERFORM 2020VALIDATESOR
WHEN WRK-CSV-STATUS = CNS-STAT-9
*** 取消申請処理
PERFORM 2030CANCELSOR
WHEN OTHER
*** エラー処理
PERFORM 2040ERRORSOR
END-EVALUATE.
*
*** 次のレコード読込
PERFORM 1100R01INNSOR.
*
2000MAJSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.1) *
* サブモジュール名: CSV分解処理 *
* 処理概要 : UNSTRINGでCSVを分解する *
*****************************************************************
2010CSVSOR SECTION.
*
INITIALIZE WRK-CSV-APPL-ID
WRK-CSV-EMP-ID
WRK-CSV-APPL-DATE
WRK-CSV-START-TIME
WRK-CSV-END-TIME
WRK-CSV-STATUS
WRK-CSV-OVT-TYPE
WRK-CSV-FILLER.
UNSTRING R01INNREC
DELIMITED BY ','
INTO WRK-CSV-APPL-ID
WRK-CSV-EMP-ID
WRK-CSV-APPL-DATE
WRK-CSV-START-TIME
WRK-CSV-END-TIME
WRK-CSV-STATUS
WRK-CSV-OVT-TYPE
WRK-CSV-FILLER
TALLYING IN WRK-COMMA-CNT
END-UNSTRING.
*
2010CSVSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.2) *
* サブモジュール名: 有効申請処理 *
* 処理概要 : 項目チェックしW01出力またはW03出力 *
*****************************************************************
2020VALIDATESOR SECTION.
*
*** W01/W03レコード初期化
INITIALIZE W01OUTREC
W03OUTREC.
*
*** SUB04CHKで日付チェック
INITIALIZE C01CHKPAR.
MOVE WRK-CSV-APPL-DATE TO C01CHKDAT.
MOVE 'DATE' TO C01CHKTYP.
CALL 'SUB04CHK' USING C01CHKPAR.
IF C01CHKRRC NOT = ZERO
MOVE '01' TO W03ERR-CATEGORY
STRING 'DATE ERROR:'
WRK-CSV-EMP-ID
DELIMITED BY SIZE
INTO W03ERR-DETAIL
WRITE W03OUTREC
ADD 1 TO CUN-W03OUT
GO TO 2020VALIDATESOR-EXT
END-IF.
*
*** 開始時刻チェック(1830以降)
MOVE WRK-CSV-START-TIME TO WRK-START-NUM.
IF WRK-START-NUM < CNS-TIME-1830
MOVE '01' TO W03ERR-CATEGORY
STRING 'START TIME < 1830'
DELIMITED BY SIZE
INTO W03ERR-DETAIL
WRITE W03OUTREC
ADD 1 TO CUN-W03OUT
GO TO 2020VALIDATESOR-EXT
END-IF.
*
*** 開始時刻 < 終了時刻チェック
MOVE WRK-CSV-END-TIME TO WRK-END-NUM.
IF WRK-START-NUM >= WRK-END-NUM
MOVE '01' TO W03ERR-CATEGORY
STRING 'START >= END'
DELIMITED BY SIZE
INTO W03ERR-DETAIL
WRITE W03OUTREC
ADD 1 TO CUN-W03OUT
GO TO 2020VALIDATESOR-EXT
END-IF.
*
*** 時間差30分以上チェック
DIVIDE WRK-START-NUM BY 100
GIVING WRK-DIFF-HH
REMAINDER WRK-DIFF-MM.
COMPUTE WRK-DIFF-MIN =
WRK-DIFF-MM.
DIVIDE WRK-END-NUM BY 100
GIVING WRK-START-NUM
REMAINDER WRK-END-NUM.
COMPUTE WRK-DIFF-MIN =
(WRK-START-NUM - WRK-DIFF-HH) * 60
+ (WRK-END-NUM - WRK-DIFF-MM).
IF WRK-DIFF-MIN < CNS-DIFF-30
MOVE '01' TO W03ERR-CATEGORY
STRING 'DIFF < 30MIN'
DELIMITED BY SIZE
INTO W03ERR-DETAIL
WRITE W03OUTREC
ADD 1 TO CUN-W03OUT
GO TO 2020VALIDATESOR-EXT
END-IF.
*
*** W01出力
MOVE WRK-CSV-APPL-ID TO W01APPL-ID.
MOVE WRK-CSV-EMP-ID TO W01EMP-ID.
MOVE WRK-CSV-APPL-DATE TO W01APPL-DATE.
MOVE WRK-CSV-START-TIME TO W01START-TIME.
MOVE WRK-CSV-END-TIME TO W01END-TIME.
MOVE WRK-CSV-STATUS TO W01STATUS.
MOVE WRK-CSV-OVT-TYPE TO W01OVT-TYPE.
WRITE W01OUTREC.
ADD 1 TO CUN-W01OUT.
*
2020VALIDATESOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.3) *
* サブモジュール名: 取消申請処理 *
* 処理概要 : 取消レコードをW02出力する *
*****************************************************************
2030CANCELSOR SECTION.
*
*** W02レコード初期化
INITIALIZE W02OUTREC.
MOVE WRK-CSV-APPL-ID TO W02APPL-ID.
MOVE WRK-CSV-EMP-ID TO W02EMP-ID.
MOVE WRK-CSV-APPL-DATE TO W02APPL-DATE.
MOVE WRK-CSV-START-TIME TO W02START-TIME.
MOVE WRK-CSV-END-TIME TO W02END-TIME.
MOVE WRK-CSV-STATUS TO W02STATUS.
MOVE WRK-CSV-OVT-TYPE TO W02OVT-TYPE.
WRITE W02OUTREC.
ADD 1 TO CUN-W02OUT.
*
2030CANCELSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.4) *
* サブモジュール名: エラー処理 *
* 処理概要 : 不明ステータスをW03出力する *
*****************************************************************
2040ERRORSOR SECTION.
*
*** W03レコード初期化
INITIALIZE W03OUTREC.
MOVE '01' TO W03ERR-CATEGORY.
STRING 'INVALID STATUS:'
WRK-CSV-STATUS
DELIMITED BY SIZE
INTO W03ERR-DETAIL.
WRITE W03OUTREC.
ADD 1 TO CUN-W03OUT.
*
2040ERRORSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(3.0) *
* サブモジュール名: 終了処理 *
* 処理概要 : ファイルクローズ・件数と終了メッセージ出力 *
*****************************************************************
3000STPSOR SECTION.
*
*** 入出力ファイルCLOSE
CLOSE R01INNFIL
W01OUTFIL
W02OUTFIL
W03OUTFIL.
*
*** 入出力ファイル件数出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGIINKES TO M00MSGCOD.
MOVE 'ZAN01R01' TO M00UMKDATS22-01.
MOVE CUN-R01INN TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
INITIALIZE M00MHOPAR.
MOVE CNS-MSGOUTKES TO M00MSGCOD.
MOVE 'ZAN01W01' TO M00UMKDATS22-01.
MOVE CUN-W01OUT TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
INITIALIZE M00MHOPAR.
MOVE CNS-MSGOUTKES TO M00MSGCOD.
MOVE 'ZAN01W02' TO M00UMKDATS22-01.
MOVE CUN-W02OUT TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
INITIALIZE M00MHOPAR.
MOVE CNS-MSGOUTKES TO M00MSGCOD.
MOVE 'ZAN01W03' TO M00UMKDATS22-01.
MOVE CUN-W03OUT TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
*** 終了メッセージ出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGFIN TO M00MSGCOD.
PERFORM 4000MSGOUTSOR.
*
3000STPSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(4.0) *
* サブモジュール名: メッセージ編集出力処理 *
* 処理概要 : メッセージ編集出力サブPGM呼出 *
*****************************************************************
4000MSGOUTSOR SECTION.
*
MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1).
MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1).
MOVE CNS-PRGIDX TO M00UMKDATS22-05.
CALL 'SUB02MSG' USING M00MHOPAR.
*
4000MSGOUTSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(9.9) *
* サブモジュール名: ABEND処理 *
* 処理概要 : ABENDサブPGM呼出 *
*****************************************************************
9999ABDSOR SECTION.
*
MOVE CNS-ABD999 TO E01ABDCOD.
CALL 'SUB03END' USING E01ABDPAR.
*
9999ABDSOR-EXT.
EXIT.
+363
View File
@@ -0,0 +1,363 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. ZAN02CHK.
*****************************************************************
* システム名 : 残業統計管理システム *
* プログラムID : ZAN02CHK *
* プログラム名 : 時間帯重複チェック処理 *
* 作成日 : 2026-06-14 *
* 処理概要 : OVT-VSORTファイルの同一社員・同一日付内の *
* 開始時刻と終了時刻の重複をチェックする。 *
* *
*****************************************************************
* 更新履歴 *
*---------------------------------------------------------------*
* 更新日付 担当者 更新内容 *
*---------------------------------------------------------------*
* 26-06-14 @@@ 新規作成 *
* *
*****************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-ZSERIES.
OBJECT-COMPUTER. IBM-ZSERIES.
*
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT R01INNFIL ASSIGN TO ZAN02R01.
SELECT W01OUTFIL ASSIGN TO ZAN02W01.
SELECT W02OUTFIL ASSIGN TO ZAN02W02.
*
DATA DIVISION.
FILE SECTION.
*
*****************************************************************
* ##R01## *
*****************************************************************
FD R01INNFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS F.
01 R01INNREC.
COPY ZAN01REC REPLACING ==(A)== BY ==R01==.
*
*****************************************************************
* ##W01## *
*****************************************************************
FD W01OUTFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS F.
01 W01OUTREC.
COPY ZAN01REC REPLACING ==(A)== BY ==W01==.
*
*****************************************************************
* ##W02## *
*****************************************************************
FD W02OUTFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS V.
01 W02OUTREC.
COPY ZAN05REC REPLACING ==(A)== BY ==W02==.
*
WORKING-STORAGE SECTION.
*
*****************************************************************
* コンスタント領域 *
*****************************************************************
01 CNSARA.
03 CNS-PRGIDX PIC X(008) VALUE 'ZAN02CHK'.
03 CNS-MSGSTR PIC 9(003) VALUE 001.
03 CNS-MSGFIN PIC 9(003) VALUE 002.
03 CNS-MSGSUBEEK PIC 9(003) VALUE 005.
03 CNS-MSGIINKES PIC 9(003) VALUE 006.
03 CNS-MSGOUTKES PIC 9(003) VALUE 007.
03 CNS-MSGKEYINF PIC 9(003) VALUE 033.
03 CNS-KN0002 PIC 9(001) VALUE 2.
03 CNS-ABD999 PIC 9(003) VALUE 999.
01 CNS-ERR-CAT02 PIC 9(002) VALUE 02.
*
*****************************************************************
* カウンタ領域 *
*****************************************************************
01 CUNARA.
03 CUN-R01INN PIC S9(009) COMP-3
VALUE ZERO.
03 CUN-W01OUT PIC S9(009) COMP-3
VALUE ZERO.
03 CUN-W02OUT PIC S9(009) COMP-3
VALUE ZERO.
*
*****************************************************************
* 作業領域 *
*****************************************************************
01 WRKARA.
*** 運用日付
03 WRK-U06 PIC 9(008).
*** 読込フラグ
03 WRK-R01EOF PIC X(001).
*** 前レコード保持
03 WRK-PREV-REC.
05 WRK-PREV-APPL-ID PIC X(008).
05 WRK-PREV-EMP-ID PIC 9(008).
05 WRK-PREV-APPL-DATE PIC 9(008).
05 WRK-PREV-START-TIME PIC 9(004).
05 WRK-PREV-END-TIME PIC 9(004).
05 WRK-PREV-STATUS PIC X(001).
05 WRK-PREV-OVT-TYPE PIC X(001).
05 WRK-PREV-FILLER PIC X(046).
*** 初回読込フラグ
03 WRK-FIRST-FLG PIC X(001).
*
*****************************************************************
* サブプログラム連絡領域 *
*****************************************************************
*** 運用日付取得
COPY ZANDATAC.
*** メッセージ編集出力SR用
COPY ZANMSGAC.
*** ABEND処理SR用
COPY ZANENDAC.
*
PROCEDURE DIVISION.
*****************************************************************
* サブモジュールNO: (0.0) *
* サブモジュール名: 制御処理 *
* 処理概要 : メインコントロール処理 *
*****************************************************************
0000MAJCOLSOR SECTION.
*
*** 初期処理
PERFORM 1000ITTSOR.
*
*** メイン処理
PERFORM 2000MAJSOR
UNTIL WRK-R01EOF = '1'.
*
*** 終了処理
PERFORM 3000STPSOR.
*
0000MAJCOLSOR-EXT.
GOBACK.
*****************************************************************
* サブモジュールNO: (1.0) *
* サブモジュール名: 初期処理 *
* 処理概要 : 開始メッセージ出力・各種初期化処理 *
*****************************************************************
1000ITTSOR SECTION.
*
*** 開始メッセージ出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGSTR TO M00MSGCOD.
PERFORM 4000MSGOUTSOR.
*
*** コンパイル日時出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGKEYINF TO M00MSGCOD.
MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01.
MOVE 'COMPILED' TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
*** ワークエリア初期化
INITIALIZE WRKARA.
MOVE '1' TO WRK-FIRST-FLG.
*
*** 運用日付取得
INITIALIZE D01UBSPAR.
CALL 'SUB01DAT' USING D01UBSPAR.
IF D01FKICOD = ZERO
MOVE D01UBSUDATE TO WRK-U06
ELSE
INITIALIZE M00MHOPAR
MOVE CNS-MSGSUBEEK TO M00MSGCOD
MOVE 'SUB01DAT' TO M00UMKDATS22-01
MOVE D01FKICOD TO M00UMKDATS22-02
PERFORM 4000MSGOUTSOR
PERFORM 9999ABDSOR
END-IF.
*
*** 入出力ファイルOPEN
OPEN INPUT R01INNFIL
OUTPUT W01OUTFIL
W02OUTFIL.
*
*** #R01#を読み込み
PERFORM 1100R01INNSOR.
*
*** 1件目W01出力(前レコード初期化)
IF WRK-R01EOF NOT = '1'
MOVE R01INNREC TO WRK-PREV-REC
MOVE R01INNREC TO W01OUTREC
WRITE W01OUTREC
ADD 1 TO CUN-W01OUT
PERFORM 1100R01INNSOR
END-IF.
*
1000ITTSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(1.1) *
* サブモジュール名:##R01##読込処理 *
* 処理概要 : レコード読込・EOF判定処理 *
*****************************************************************
1100R01INNSOR SECTION.
*
READ R01INNFIL
AT END
MOVE '1' TO WRK-R01EOF
NOT AT END
ADD 1 TO CUN-R01INN
END-READ.
*
1100R01INNSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.0) *
* サブモジュール名: 主処理 *
* 処理概要 : 時間帯重複チェック処理 *
*****************************************************************
2000MAJSOR SECTION.
*
IF WRK-R01EOF NOT = '1'
*** 重複チェック
PERFORM 2010CHECKDUPSOR
*** 次のレコード読込
PERFORM 1100R01INNSOR
END-IF.
*
2000MAJSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.1) *
* サブモジュール名: 重複チェック処理 *
* 処理概要 : 前レコードとの重複判定 *
*****************************************************************
2010CHECKDUPSOR SECTION.
*
*** 同一社員番号かつ同一日付の判定
IF WRK-PREV-EMP-ID = R01EMP-ID
AND WRK-PREV-APPL-DATE = R01APPL-DATE
*** 前終了時刻 > 現開始時刻 → 重複
IF WRK-PREV-END-TIME > R01START-TIME
PERFORM 2011OVERLAPERRSOR
ELSE
PERFORM 2012NORMALOUTSOR
END-IF
ELSE
*** キーブレイク
PERFORM 2013KEYBRSOR
END-IF.
*
2010CHECKDUPSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.1-1) *
* サブモジュール名: 重複エラー処理 *
* 処理概要 : エラーログW02出力 *
*****************************************************************
2011OVERLAPERRSOR SECTION.
*
INITIALIZE W02OUTREC.
MOVE CNS-ERR-CAT02 TO W02ERR-CATEGORY.
STRING 'OVERLAP: '
WRK-PREV-EMP-ID ','
WRK-PREV-APPL-DATE
DELIMITED BY SIZE
INTO W02ERR-DETAIL.
WRITE W02OUTREC.
ADD 1 TO CUN-W02OUT.
*
2011OVERLAPERRSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.1-2) *
* サブモジュール名: 通常出力処理 *
* 処理概要 : W01ファイル出力 *
*****************************************************************
2012NORMALOUTSOR SECTION.
*
MOVE R01INNREC TO W01OUTREC.
WRITE W01OUTREC.
ADD 1 TO CUN-W01OUT.
*
*** 前レコード更新
MOVE R01INNREC TO WRK-PREV-REC.
*
2012NORMALOUTSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.1-3) *
* サブモジュール名: キーブレイク処理 *
* 処理概要 : 前レコード更新 *
*****************************************************************
2013KEYBRSOR SECTION.
*
MOVE R01INNREC TO WRK-PREV-REC.
PERFORM 2012NORMALOUTSOR.
*
2013KEYBRSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(3.0) *
* サブモジュール名: 終了処理 *
* 処理概要 : ファイルクローズ・件数と終了メッセージ出力 *
*****************************************************************
3000STPSOR SECTION.
*
*** 入出力ファイルCLOSE
CLOSE R01INNFIL
W01OUTFIL
W02OUTFIL.
*
*** 入出力ファイル件数出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGIINKES TO M00MSGCOD.
MOVE 'ZAN02R01' TO M00UMKDATS22-01.
MOVE CUN-R01INN TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
INITIALIZE M00MHOPAR.
MOVE CNS-MSGOUTKES TO M00MSGCOD.
MOVE 'ZAN02W01' TO M00UMKDATS22-01.
MOVE CUN-W01OUT TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
INITIALIZE M00MHOPAR.
MOVE CNS-MSGOUTKES TO M00MSGCOD.
MOVE 'ZAN02W02' TO M00UMKDATS22-01.
MOVE CUN-W02OUT TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
*** 終了メッセージ出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGFIN TO M00MSGCOD.
PERFORM 4000MSGOUTSOR.
*
3000STPSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(4.0) *
* サブモジュール名: メッセージ編集出力処理 *
* 処理概要 : メッセージ編集出力サブPGM呼出 *
*****************************************************************
4000MSGOUTSOR SECTION.
*
MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1).
MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1).
MOVE CNS-PRGIDX TO M00UMKDATS22-05.
CALL 'SUB02MSG' USING M00MHOPAR.
*
4000MSGOUTSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(9.9) *
* サブモジュール名: ABEND処理 *
* 処理概要 : ABENDサブPGM呼出 *
*****************************************************************
9999ABDSOR SECTION.
*
MOVE CNS-ABD999 TO E01ABDCOD.
CALL 'SUB03END' USING E01ABDPAR.
*
9999ABDSOR-EXT.
EXIT.
+478
View File
@@ -0,0 +1,478 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. ZAN03CHK.
*****************************************************************
* システム名 : 残業統計管理システム *
* プログラムID : ZAN03CHK *
* プログラム名 : 打刻時間照合処理 *
* 作成日 : 2026-06-14 *
* 処理概要 : OVT-NODUPとPUNCH-SORTEDを突合し申請時間帯の *
* 照合を行う。 *
* 申請時間帯が出勤〜退勤の範囲内かを確認する。*
* 申請日が休日かを判定しOVT-TYPEを付加する。 *
* *
*****************************************************************
* 更新履歴 *
*---------------------------------------------------------------*
* 更新日付 担当者 更新内容 *
*---------------------------------------------------------------*
* 26-06-14 @@@ 新規作成 *
* *
*****************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-ZSERIES.
OBJECT-COMPUTER. IBM-ZSERIES.
*
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT R01INNFIL ASSIGN TO ZAN03R01.
SELECT R02INNFIL ASSIGN TO ZAN03R02.
SELECT R03INNFIL ASSIGN TO ZAN03R03.
SELECT W01OUTFIL ASSIGN TO ZAN03W01.
SELECT W02OUTFIL ASSIGN TO ZAN03W02.
*
DATA DIVISION.
FILE SECTION.
*
*****************************************************************
* ##R01## *
*****************************************************************
FD R01INNFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS F.
01 R01INNREC.
COPY ZAN01REC REPLACING ==(A)== BY ==R01==.
*
*****************************************************************
* ##R02## *
*****************************************************************
FD R02INNFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS F.
01 R02INNREC.
03 R02EMP-ID PIC 9(008).
03 R02DATE PIC 9(008).
03 R02TIME-IN PIC 9(004).
03 R02TIME-OUT PIC 9(004).
03 R02FILLER PIC X(060).
*
*****************************************************************
* ##R03## *
*****************************************************************
FD R03INNFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS F.
01 R03INNREC.
03 R03HOLIDAY-DATE PIC 9(008).
03 R03HOLIDAY-FLG PIC X(001).
03 R03FILLER PIC X(071).
*
*****************************************************************
* ##W01## *
*****************************************************************
FD W01OUTFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS F.
01 W01OUTREC.
COPY ZAN01REC REPLACING ==(A)== BY ==W01==.
*
*****************************************************************
* ##W02## *
*****************************************************************
FD W02OUTFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS V.
01 W02OUTREC.
COPY ZAN05REC REPLACING ==(A)== BY ==W02==.
*
WORKING-STORAGE SECTION.
*
*****************************************************************
* コンスタント領域 *
*****************************************************************
01 CNSARA.
03 CNS-PRGIDX PIC X(008) VALUE 'ZAN03CHK'.
03 CNS-MSGSTR PIC 9(003) VALUE 001.
03 CNS-MSGFIN PIC 9(003) VALUE 002.
03 CNS-MSGSUBEEK PIC 9(003) VALUE 005.
03 CNS-MSGIINKES PIC 9(003) VALUE 006.
03 CNS-MSGOUTKES PIC 9(003) VALUE 007.
03 CNS-MSGKEYINF PIC 9(003) VALUE 033.
03 CNS-KN0002 PIC 9(001) VALUE 2.
03 CNS-ABD999 PIC 9(003) VALUE 999.
03 CNS-ERR-CAT03 PIC 9(002) VALUE 03.
03 CNS-OVT-W PIC X(001) VALUE 'W'.
03 CNS-OVT-H PIC X(001) VALUE 'H'.
*
*****************************************************************
* カウンタ領域 *
*****************************************************************
01 CUNARA.
03 CUN-R01INN PIC S9(009) COMP-3
VALUE ZERO.
03 CUN-R02INN PIC S9(009) COMP-3
VALUE ZERO.
03 CUN-R03INN PIC S9(009) COMP-3
VALUE ZERO.
03 CUN-W01OUT PIC S9(009) COMP-3
VALUE ZERO.
03 CUN-W02OUT PIC S9(009) COMP-3
VALUE ZERO.
*
*****************************************************************
* 作業領域 *
*****************************************************************
01 WRKARA.
*** 読込フラグ(R01)
03 WRK-R01EOF PIC X(001).
*** 読込フラグ(R02)
03 WRK-R02EOF PIC X(001).
*** 読込フラグ(R03)
03 WRK-R03EOF PIC X(001).
*** R01キー
03 WRK-R01KEY.
05 WRK-R01KEY001 PIC 9(008).
05 WRK-R01KEY002 PIC 9(008).
*** R02キー
03 WRK-R02KEY.
05 WRK-R02KEY001 PIC 9(008).
05 WRK-R02KEY002 PIC 9(008).
*** OVT-TYPE設定用
03 WRK-OVT-TYPE-SET PIC X(001).
*** 休日テーブル
03 WRK-HOLIDAY-CNT PIC 9(004) COMP.
03 WRK-HOLIDAY-TABLE OCCURS 366 TIMES
DEPENDING ON WRK-HOLIDAY-CNT
ASCENDING KEY IS WRK-HD-DATE
INDEXED BY WRK-HD-IDX.
05 WRK-HD-DATE PIC 9(008).
05 WRK-HD-FLG PIC X(001).
*
*****************************************************************
* サブプログラム連絡領域 *
*****************************************************************
*** メッセージ編集出力SR用
COPY ZANMSGAC.
*** ABEND処理SR用
COPY ZANENDAC.
*
PROCEDURE DIVISION.
*****************************************************************
* サブモジュールNO: (0.0) *
* サブモジュール名: 制御処理 *
* 処理概要 : メインコントロール処理 *
*****************************************************************
0000MAJCOLSOR SECTION.
*
*** 初期処理
PERFORM 1000ITTSOR.
*
*** メイン処理
PERFORM 2000MAJSOR
UNTIL WRK-R01EOF = '1'.
*
*** 終了処理
PERFORM 3000STPSOR.
*
0000MAJCOLSOR-EXT.
GOBACK.
*****************************************************************
* サブモジュールNO: (1.0) *
* サブモジュール名: 初期処理 *
* 処理概要 : 開始メッセージ出力・各種初期化処理 *
*****************************************************************
1000ITTSOR SECTION.
*
*** 開始メッセージ出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGSTR TO M00MSGCOD.
PERFORM 4000MSGOUTSOR.
*
*** コンパイル日時出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGKEYINF TO M00MSGCOD.
MOVE FUNCTION WHEN-COMPILED TO M00UMKDATS22-01.
MOVE 'COMPILED' TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
*** ワークエリア初期化
INITIALIZE WRKARA.
*
*** 現在日付取得(FUNCTION CURRENT-DATE
MOVE FUNCTION CURRENT-DATE TO WRK-HOLIDAY-CNT.
*
*** 入出力ファイルOPEN
OPEN INPUT R01INNFIL
R02INNFIL
R03INNFIL
OUTPUT W01OUTFIL
W02OUTFIL.
*
*** 休日ファイル読込
PERFORM 1300HOLIDAYSOR.
*
*** #R01#を読み込み
PERFORM 1100R01INNSOR.
*
*** #R02#を読み込み
PERFORM 1200R02INNSOR.
*
1000ITTSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO: (1.1) *
* サブモジュール名:##R01##読込処理 *
* 処理概要 : レコード読込・EOF判定処理 *
*****************************************************************
1100R01INNSOR SECTION.
*
READ R01INNFIL
AT END
MOVE '1' TO WRK-R01EOF
NOT AT END
ADD 1 TO CUN-R01INN
MOVE R01EMP-ID TO WRK-R01KEY001
MOVE R01APPL-DATE TO WRK-R01KEY002
END-READ.
*
1100R01INNSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(1.2) *
* サブモジュール名:##R02##読込処理 *
* 処理概要 : レコード読込・EOF判定処理 *
*****************************************************************
1200R02INNSOR SECTION.
*
READ R02INNFIL
AT END
MOVE '1' TO WRK-R02EOF
NOT AT END
ADD 1 TO CUN-R02INN
MOVE R02EMP-ID TO WRK-R02KEY001
MOVE R02DATE TO WRK-R02KEY002
END-READ.
*
1200R02INNSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(1.3) *
* サブモジュール名:##R03##読込処理 *
* 処理概要 : 休日ファイル読込・HOLIDAY-TABLE設定 *
*****************************************************************
1300HOLIDAYSOR SECTION.
*
INITIALIZE WRK-HOLIDAY-CNT.
*
PERFORM UNTIL WRK-R03EOF = '1'
READ R03INNFIL
AT END
MOVE '1' TO WRK-R03EOF
NOT AT END
ADD 1 TO WRK-HOLIDAY-CNT
ADD 1 TO CUN-R03INN
MOVE R03HOLIDAY-DATE TO
WRK-HD-DATE(WRK-HOLIDAY-CNT)
MOVE R03HOLIDAY-FLG TO
WRK-HD-FLG(WRK-HOLIDAY-CNT)
END-READ
END-PERFORM.
*
1300HOLIDAYSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.0) *
* サブモジュール名: 主処理 *
* 処理概要 : R01とR02のキー比較・時間範囲チェック *
*****************************************************************
2000MAJSOR SECTION.
*
*** R01とR02のキー比較
EVALUATE TRUE
WHEN WRK-R01KEY < WRK-R02KEY
*** R01キー < R02キー(打刻データなし)
PERFORM 2010NOMATCHSOR
WHEN WRK-R01KEY = WRK-R02KEY
*** R01キー = R02キー(マッチ)
PERFORM 2020MATCHSOR
WHEN WRK-R01KEY > WRK-R02KEY
*** R01キー > R02キー(R02スキップ)
PERFORM 1200R02INNSOR
END-EVALUATE.
*
2000MAJSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.1) *
* サブモジュール名: 不一致処理 *
* 処理概要 : 打刻データなしエラー出力 *
*****************************************************************
2010NOMATCHSOR SECTION.
*
*** W02レコード初期化
INITIALIZE W02OUTREC.
*
*** ERROR-LOGに出力
MOVE CNS-ERR-CAT03 TO W02ERR-CATEGORY.
STRING R01EMP-ID DELIMITED BY SIZE
'/' DELIMITED BY SIZE
R01APPL-DATE DELIMITED BY SIZE
INTO W02ERR-DETAIL
END-STRING.
WRITE W02OUTREC.
ADD 1 TO CUN-W02OUT.
*
*** #R01#を読み込む
PERFORM 1100R01INNSOR.
*
2010NOMATCHSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.2) *
* サブモジュール名: 一致処理 *
* 処理概要 : 時間範囲チェック *
*****************************************************************
2020MATCHSOR SECTION.
*
*** 時間範囲チェック
IF R01START-TIME >= R02TIME-IN
AND R01END-TIME <= R02TIME-OUT
*** 通過→OVT-TYPE設定+W01出力
PERFORM 2200SETOVTSOR
WRITE W01OUTREC
ADD 1 TO CUN-W01OUT
ELSE
*** エラー→W02出力
INITIALIZE W02OUTREC
MOVE CNS-ERR-CAT03 TO W02ERR-CATEGORY
STRING R01EMP-ID DELIMITED BY SIZE
'/' DELIMITED BY SIZE
R01APPL-DATE DELIMITED BY SIZE
'/' DELIMITED BY SIZE
R01START-TIME DELIMITED BY SIZE
'-' DELIMITED BY SIZE
R01END-TIME DELIMITED BY SIZE
INTO W02ERR-DETAIL
END-STRING
WRITE W02OUTREC
ADD 1 TO CUN-W02OUT
END-IF.
*
*** #R01#を読み込む
PERFORM 1100R01INNSOR.
*
2020MATCHSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(2.3) *
* サブモジュール名: OVT-TYPE設定処理 *
* 処理概要 : 申請日が休日か判定しOVT-TYPEを設定 *
*****************************************************************
2200SETOVTSOR SECTION.
*
*** 初期設定(平日)
MOVE CNS-OVT-W TO WRK-OVT-TYPE-SET.
*** 休日判定(SEARCH ALL)
SET WRK-HD-IDX TO 1.
SEARCH ALL WRK-HOLIDAY-TABLE
AT END
CONTINUE
WHEN WRK-HD-DATE(WRK-HD-IDX) = R01APPL-DATE
IF WRK-HD-FLG(WRK-HD-IDX) = '1'
MOVE CNS-OVT-H TO WRK-OVT-TYPE-SET
END-IF
END-SEARCH.
*
*** レコード編集
MOVE R01INNREC TO W01OUTREC.
MOVE WRK-OVT-TYPE-SET TO W01OVT-TYPE.
*
2200SETOVTSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(3.0) *
* サブモジュール名: 終了処理 *
* 処理概要 : ファイルクローズ・件数出力 *
*****************************************************************
3000STPSOR SECTION.
*
*** 入出力ファイルCLOSE
CLOSE R01INNFIL
R02INNFIL
R03INNFIL
W01OUTFIL
W02OUTFIL.
*
*** 入力件数メッセージ出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGIINKES TO M00MSGCOD.
MOVE 'ZAN03R01' TO M00UMKDATS22-01.
MOVE CUN-R01INN TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
*** 入力件数メッセージ出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGIINKES TO M00MSGCOD.
MOVE 'ZAN03R02' TO M00UMKDATS22-01.
MOVE CUN-R02INN TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
*** 入力件数メッセージ出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGIINKES TO M00MSGCOD.
MOVE 'ZAN03R03' TO M00UMKDATS22-01.
MOVE CUN-R03INN TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
*** 出力件数メッセージ出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGOUTKES TO M00MSGCOD.
MOVE 'ZAN03W01' TO M00UMKDATS22-01.
MOVE CUN-W01OUT TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
*** 出力件数メッセージ出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGOUTKES TO M00MSGCOD.
MOVE 'ZAN03W02' TO M00UMKDATS22-01.
MOVE CUN-W02OUT TO M00UMKDATS22-02.
PERFORM 4000MSGOUTSOR.
*
*** 終了メッセージ出力
INITIALIZE M00MHOPAR.
MOVE CNS-MSGFIN TO M00MSGCOD.
PERFORM 4000MSGOUTSOR.
*
3000STPSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(4.0) *
* サブモジュール名: メッセージ出力処理 *
* 処理概要 : メッセージ編集・出力 *
*****************************************************************
4000MSGOUTSOR SECTION.
*
MOVE CNS-KN0002 TO M00UMKDATS22-03(1:1).
MOVE CNS-KN0002 TO M00UMKDATS22-04(1:1).
MOVE CNS-PRGIDX TO M00UMKDATS22-05.
CALL 'SUB02MSG' USING M00MHOPAR.
*
4000MSGOUTSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(9.9) *
* サブモジュール名: 異常終了処理 *
* 処理概要 : ABEND処理 *
*****************************************************************
9999ABDSOR SECTION.
*
MOVE CNS-ABD999 TO E01ABDCOD.
CALL 'SUB03END' USING E01ABDPAR.
*
9999ABDSOR-EXT.
EXIT.
+57
View File
@@ -0,0 +1,57 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. SUB01DAT.
*****************************************************************
* システム名 : 残業統計管理システム *
* プログラムID : SUB01DAT *
* プログラム名 : 運用日付取得サブ *
* 作成日 : 2026-06-14 *
* 処理概要 : FUNCTION CURRENT-DATEにより現在日付を取得 *
* しYYYYMMDD形式で返す *
* *
*****************************************************************
* 更新履歴 *
*---------------------------------------------------------------*
* 更新日付 担当者 更新内容 *
*---------------------------------------------------------------*
* 26-06-14 @@@ 新規作成 *
* *
*****************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-ZSERIES.
OBJECT-COMPUTER. IBM-ZSERIES.
*
DATA DIVISION.
*****************************************************************
WORKING-STORAGE SECTION.
*****************************************************************
01 WRKARA.
03 WRK-SYS-DATE PIC X(026).
03 WRK-DATE-8 PIC 9(008).
*
*****************************************************************
* リンケージエリア *
*****************************************************************
LINKAGE SECTION.
*
01 D01UBSPAR.
03 D01FKICOD PIC S9(004) COMP.
03 D01UBSUDATE PIC 9(008).
*
PROCEDURE DIVISION USING D01UBSPAR.
*****************************************************************
* サブモジュールNO: (0.0) *
* サブモジュール名: 制御処理 *
* 処理概要 : メインコントロール処理 *
*****************************************************************
0000MAINSOR SECTION.
*
*** 現在日付を取得する
MOVE FUNCTION CURRENT-DATE TO WRK-SYS-DATE.
*** YYYYMMDD部分を抽出
MOVE WRK-SYS-DATE(1:8) TO D01UBSUDATE.
*** 正常終了
MOVE ZERO TO D01FKICOD.
*
0000MAINSOR-EXT.
GOBACK.
+76
View File
@@ -0,0 +1,76 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. SUB02MSG.
*****************************************************************
* システム名 : 残業統計管理システム *
* プログラムID : SUB02MSG *
* プログラム名 : メッセージ編集出力サブ *
* 作成日 : 2026-06-14 *
* 処理概要 : メッセージ番号とパラメータを編集し *
* 標準出力へ出力する *
* *
*****************************************************************
* 更新履歴 *
*---------------------------------------------------------------*
* 更新日付 担当者 更新内容 *
*---------------------------------------------------------------*
* 26-06-14 @@@ 新規作成 *
* *
*****************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-ZSERIES.
OBJECT-COMPUTER. IBM-ZSERIES.
*
DATA DIVISION.
*****************************************************************
WORKING-STORAGE SECTION.
*****************************************************************
01 WRKARA.
03 WRK-MSG-LINE PIC X(303).
*
*****************************************************************
* リンケージエリア *
*****************************************************************
LINKAGE SECTION.
*
01 M00MHOPAR.
03 M00MSGCOD PIC 9(003).
03 M00UMKDATS22-01 PIC X(030).
03 M00UMKDATS22-02 PIC X(030).
03 M00UMKDATS22-03 PIC X(030).
03 M00UMKDATS22-04 PIC X(030).
03 M00UMKDATS22-05 PIC X(030).
03 M00UMKDATS22-06 PIC X(030).
03 M00UMKDATS22-07 PIC X(030).
03 M00UMKDATS22-08 PIC X(030).
03 M00UMKDATS22-09 PIC X(030).
03 M00UMKDATS22-10 PIC X(030).
*
PROCEDURE DIVISION USING M00MHOPAR.
*****************************************************************
* サブモジュールNO: (0.0) *
* サブモジュール名: 制御処理 *
* 処理概要 : メインコントロール処理 *
*****************************************************************
0000MAINSOR SECTION.
*
*** メッセージ行を編集する
STRING 'MSG['
M00MSGCOD
'] P1='
M00UMKDATS22-01
' P2='
M00UMKDATS22-02
' P3='
M00UMKDATS22-03
' P4='
M00UMKDATS22-04
' P5='
M00UMKDATS22-05
INTO WRK-MSG-LINE
END-STRING.
*** 標準出力へ出力
DISPLAY WRK-MSG-LINE.
*
0000MAINSOR-EXT.
GOBACK.
+55
View File
@@ -0,0 +1,55 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. SUB03END.
*****************************************************************
* システム名 : 残業統計管理システム *
* プログラムID : SUB03END *
* プログラム名 : ABEND処理サブ *
* 作成日 : 2026-06-14 *
* 処理概要 : ABENDコードを表示しプログラムを異常終了 *
* させる *
* *
*****************************************************************
* 更新履歴 *
*---------------------------------------------------------------*
* 更新日付 担当者 更新内容 *
*---------------------------------------------------------------*
* 26-06-14 @@@ 新規作成 *
* *
*****************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-ZSERIES.
OBJECT-COMPUTER. IBM-ZSERIES.
*
DATA DIVISION.
*****************************************************************
WORKING-STORAGE SECTION.
*****************************************************************
01 WRKARA.
03 WRK-ABEND-MSG PIC X(020).
*
*****************************************************************
* リンケージエリア *
*****************************************************************
LINKAGE SECTION.
*
01 E01ABDPAR.
03 E01ABDCOD PIC 9(003).
*
PROCEDURE DIVISION USING E01ABDPAR.
*****************************************************************
* サブモジュールNO: (0.0) *
* サブモジュール名: 制御処理 *
* 処理概要 : メインコントロール処理 *
*****************************************************************
0000MAINSOR SECTION.
*
*** 異常終了メッセージを表示する
MOVE 'ABEND CODE=' TO WRK-ABEND-MSG.
MOVE E01ABDCOD TO WRK-ABEND-MSG(12:3).
DISPLAY WRK-ABEND-MSG.
*** プログラムを異常終了させる
STOP RUN.
*
0000MAINSOR-EXT.
GOBACK.
+170
View File
@@ -0,0 +1,170 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. SUB04CHK.
*****************************************************************
* システム名 : 残業統計管理システム *
* プログラムID : SUB04CHK *
* プログラム名 : 項目チェックサブ *
* 作成日 : 2026-06-14 *
* 処理概要 : 指定されたタイプによりデータ項目の妥当性 *
* をチェックする *
* *
*****************************************************************
* 更新履歴 *
*---------------------------------------------------------------*
* 更新日付 担当者 更新内容 *
*---------------------------------------------------------------*
* 26-06-14 @@@ 新規作成 *
* *
*****************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-ZSERIES.
OBJECT-COMPUTER. IBM-ZSERIES.
*
DATA DIVISION.
*****************************************************************
WORKING-STORAGE SECTION.
*****************************************************************
01 WRKARA.
03 WRK-RETURN-CODE PIC 9(004).
03 WRK-SIGN PIC S9(004).
03 WRK-NN PIC 9(004).
*
*****************************************************************
* リンケージエリア *
*****************************************************************
LINKAGE SECTION.
*
01 C01CHKPAR.
03 C01CHKTYP PIC X(008).
03 C01CHKDAT PIC X(080).
03 C01CHKRRC PIC 9(004).
*
PROCEDURE DIVISION USING C01CHKPAR.
*****************************************************************
* サブモジュールNO: (0.0) *
* サブモジュール名: 制御処理 *
* 処理概要 : メインコントロール処理 *
*****************************************************************
0000MAINSOR SECTION.
*
*** チェックタイプにより分岐する
EVALUATE C01CHKTYP
*** 日付チェック(YYYYMMDD)
WHEN 'DATE'
PERFORM 1000CHKDATE
*** 時刻チェック(HHMM)
WHEN 'TIME'
PERFORM 2000CHKTIME
*** 数字チェック
WHEN 'NUM'
PERFORM 3000CHKNUM
*** 社員番号チェック(英数字8桁)
WHEN 'EMPID'
PERFORM 4000CHKEMP
WHEN OTHER
MOVE 9999 TO WRK-RETURN-CODE
END-EVALUATE.
*
*** 復帰コードを設定して復帰
MOVE WRK-RETURN-CODE TO C01CHKRRC.
*
0000MAINSOR-EXT.
GOBACK.
*****************************************************************
* サブモジュールNO: (1.0) *
* サブモジュール名: 日付チェック *
* 処理概要 : YYYYMMDD形式の妥当性チェック *
*****************************************************************
1000CHKDATE SECTION.
*
*** 月チェック(桁位置5〜6: 01-12)
MOVE FUNCTION NUMVAL(
C01CHKDAT(5:2)) TO WRK-NN.
IF (WRK-NN < 1) OR (WRK-NN > 12) THEN
MOVE 0001 TO WRK-RETURN-CODE
GO TO 1000CHKDATE-EXT
END-IF.
*** 日チェック(桁位置7〜8: 01-31)
MOVE FUNCTION NUMVAL(
C01CHKDAT(7:2)) TO WRK-NN.
IF (WRK-NN < 1) OR (WRK-NN > 31) THEN
MOVE 0001 TO WRK-RETURN-CODE
GO TO 1000CHKDATE-EXT
END-IF.
*** 正常
MOVE ZERO TO WRK-RETURN-CODE.
*
1000CHKDATE-EXT.
EXIT.
*****************************************************************
* サブモジュールNO: (2.0) *
* サブモジュール名: 時刻チェック *
* 処理概要 : HHMM形式の妥当性チェック *
*****************************************************************
2000CHKTIME SECTION.
*
*** 時チェック(桁位置1〜2: 00-23)
MOVE FUNCTION NUMVAL(
C01CHKDAT(1:2)) TO WRK-NN.
IF (WRK-NN > 23) THEN
MOVE 0002 TO WRK-RETURN-CODE
GO TO 2000CHKTIME-EXT
END-IF.
*** 分チェック(桁位置3〜4: 00-59)
MOVE FUNCTION NUMVAL(
C01CHKDAT(3:2)) TO WRK-NN.
IF (WRK-NN > 59) THEN
MOVE 0002 TO WRK-RETURN-CODE
GO TO 2000CHKTIME-EXT
END-IF.
*** 正常
MOVE ZERO TO WRK-RETURN-CODE.
*
2000CHKTIME-EXT.
EXIT.
*****************************************************************
* サブモジュールNO: (3.0) *
* サブモジュール名: 数字チェック *
* 処理概要 : 全桁が数字であることをチェック *
*****************************************************************
3000CHKNUM SECTION.
*
*** 非数字文字が含まれていないかチェック
INSPECT C01CHKDAT
TALLYING WRK-NN FOR
CHARACTERS BEFORE INITIAL SPACE.
IF WRK-NN > 0 THEN
MOVE 0003 TO WRK-RETURN-CODE
GO TO 3000CHKNUM-EXT
END-IF.
*** 正常
MOVE ZERO TO WRK-RETURN-CODE.
*
3000CHKNUM-EXT.
EXIT.
*****************************************************************
* サブモジュールNO: (4.0) *
* サブモジュール名: 社員番号チェック *
* 処理概要 : 英数字8桁のチェック *
*****************************************************************
4000CHKEMP SECTION.
*
*** 桁数チェック(8桁)
IF C01CHKDAT(9:72) NOT = SPACES THEN
MOVE 0004 TO WRK-RETURN-CODE
GO TO 4000CHKEMP-EXT
END-IF.
*** 英数字チェック
INSPECT C01CHKDAT(1:8)
TALLYING WRK-NN FOR
CHARACTERS BEFORE INITIAL SPACE.
IF WRK-NN > 0 THEN
MOVE 0004 TO WRK-RETURN-CODE
GO TO 4000CHKEMP-EXT
END-IF.
*** 正常
MOVE ZERO TO WRK-RETURN-CODE.
*
4000CHKEMP-EXT.
EXIT.
+153
View File
@@ -0,0 +1,153 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. SUB05TIM.
*****************************************************************
* システム名 : 残業統計管理システム *
* プログラムID : SUB05TIM *
* プログラム名 : 時刻丸め計算サブ *
* 作成日 : 2026-06-14 *
* 処理概要 : 時間値を指定単位で丸め計算する *
* *
*****************************************************************
* 更新履歴 *
*---------------------------------------------------------------*
* 更新日付 担当者 更新内容 *
*---------------------------------------------------------------*
* 26-06-14 @@@ 新規作成 *
* *
*****************************************************************
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. IBM-ZSERIES.
OBJECT-COMPUTER. IBM-ZSERIES.
*
DATA DIVISION.
*****************************************************************
WORKING-STORAGE SECTION.
*****************************************************************
01 WRKARA.
03 WRK-MINUTES PIC S9(005).
03 WRK-HOURS PIC S9(005)V9(001).
03 WRK-REMAINDER PIC S9(005).
*
*****************************************************************
* リンケージエリア *
*****************************************************************
LINKAGE SECTION.
*
01 T01TIMPAR.
03 T01TIMHRS PIC 9(004)V9(001).
03 T01TIMOUT PIC 9(004)V9(001).
03 T01TIMRRC PIC 9(004).
*
PROCEDURE DIVISION USING T01TIMPAR.
*****************************************************************
* サブモジュールNO: (0.0) *
* サブモジュール名: 制御処理 *
* 処理概要 : メインコントロール処理 *
*****************************************************************
0000MAINSOR SECTION.
*
*** 丸めモードにより分岐する
EVALUATE T01TIMRRC
*** モード0: 0.5時間単位・切上
WHEN 0
PERFORM 1000RNDHALF
*** モード1: 0.1時間単位・切上
WHEN 1
PERFORM 2000RNDUP
*** モード2: 0.1時間単位・切捨
WHEN 2
PERFORM 3000RNDDOWN
*** モード3: 単純四捨五入(0.1h単位)
WHEN 3
PERFORM 4000RNDNORMAL
WHEN OTHER
*** モード指定なし→そのまま出力
MOVE T01TIMHRS TO T01TIMOUT
END-EVALUATE.
*
0000MAINSOR-EXT.
GOBACK.
*****************************************************************
* サブモジュールNO: (1.0) *
* サブモジュール名: 0.5時間単位・切上 *
* 処理概要 : 30分単位で切り上げる *
*****************************************************************
1000RNDHALF SECTION.
*
*** 時間→分変換
COMPUTE WRK-MINUTES =
T01TIMHRS * 60.
*** 30分単位で切り上げ
DIVIDE WRK-MINUTES BY 30
GIVING WRK-HOURS
REMAINDER WRK-REMAINDER.
IF WRK-REMAINDER > 0 THEN
COMPUTE WRK-HOURS =
WRK-HOURS + 1
END-IF.
*** 分→時間変換
COMPUTE T01TIMOUT =
WRK-HOURS * 0.5.
*
1000RNDHALF-EXT.
EXIT.
*****************************************************************
* サブモジュールNO: (2.0) *
* サブモジュール名: 0.1時間単位・切上 *
* 処理概要 : 6分単位で切り上げる *
*****************************************************************
2000RNDUP SECTION.
*
*** 時間→分変換
COMPUTE WRK-MINUTES =
T01TIMHRS * 60.
*** 6分単位で切り上げ
DIVIDE WRK-MINUTES BY 6
GIVING WRK-HOURS
REMAINDER WRK-REMAINDER.
IF WRK-REMAINDER > 0 THEN
COMPUTE WRK-HOURS =
WRK-HOURS + 1
END-IF.
*** 分→時間変換
COMPUTE T01TIMOUT =
WRK-HOURS * 0.1.
*
2000RNDUP-EXT.
EXIT.
*****************************************************************
* サブモジュールNO: (3.0) *
* サブモジュール名: 0.1時間単位・切捨 *
* 処理概要 : 6分単位で切り捨てる *
*****************************************************************
3000RNDDOWN SECTION.
*
*** 時間→分変換
COMPUTE WRK-MINUTES =
T01TIMHRS * 60.
*** 6分単位で切り捨て
DIVIDE WRK-MINUTES BY 6
GIVING WRK-HOURS
REMAINDER WRK-REMAINDER.
*** 分→時間変換
COMPUTE T01TIMOUT =
WRK-HOURS * 0.1.
*
3000RNDDOWN-EXT.
EXIT.
*****************************************************************
* サブモジュールNO: (4.0) *
* サブモジュール名: 単純四捨五入(0.1h単位) *
* 処理概要 : 0.05を加算して切捨 *
*****************************************************************
4000RNDNORMAL SECTION.
*
*** 0.05を加算してV9(1)に収める
COMPUTE WRK-HOURS =
T01TIMHRS + 0.05.
*** V9(1)への代入で小数点第2位以下切捨
MOVE WRK-HOURS TO T01TIMOUT.
*
4000RNDNORMAL-EXT.
EXIT.
@@ -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へ)。
```
+143
View File
@@ -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(終了メッセージ)
```
---
## 出力レコード定義
### 出力ファイル1W01/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同項目を設定 | |
### 出力ファイル2W02/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同項目を設定 | |
### 出力ファイル3W03/ERROR-LOG
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | ERR-CATEGORY | 01で固定 | |
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容 |
+122
View File
@@ -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(終了メッセージ)
```
---
## 出力レコード定義
### 出力ファイル1W01/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.同項目を設定 | |
### 出力ファイル2W02/ERROR-LOG
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | ERR-CATEGORY | 02で固定 | 重複エラー |
| 2 | ERR-DETAIL | STRINGで編集 | EMP-IDと日付を編集 |
+123
View File
@@ -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(終了メッセージ)
```
---
## 出力レコード定義
### 出力ファイル1W01/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.同項目を設定 | |
### 出力ファイル2W02/ERROR-LOG
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | ERR-CATEGORY | 03で固定 | 打刻不突合 |
| 2 | ERR-DETAIL | STRINGで編集 | 社員番号と日付を編集 |