595 lines
27 KiB
COBOL
595 lines
27 KiB
COBOL
IDENTIFICATION DIVISION.
|
|
PROGRAM-ID. KIN01INP.
|
|
*****************************************************************
|
|
* システム名 : 勤怠休暇管理システム *
|
|
* プログラムID : KIN01INP *
|
|
* プログラム名 : 休暇申請CSV取込・検証処理 *
|
|
* 作成日 : 2026-06-17 *
|
|
* 処理概要 : CSV形式の休暇申請ファイルを読み込み、 *
|
|
* 休暇種別テーブル検索と項目チェックを行い、 *
|
|
* ステータスによってWORK-LEAVEまたは *
|
|
* ERROR-LOGへ振り分ける。 *
|
|
*****************************************************************
|
|
* 更新履歴 *
|
|
*---------------------------------------------------------------*
|
|
* 更新日付 担当者 更新内容 *
|
|
*---------------------------------------------------------------*
|
|
* 26-06-17 @@@ 新規作成 *
|
|
* *
|
|
*****************************************************************
|
|
ENVIRONMENT DIVISION.
|
|
CONFIGURATION SECTION.
|
|
SOURCE-COMPUTER. IBM-ZSERIES.
|
|
OBJECT-COMPUTER. IBM-ZSERIES.
|
|
*
|
|
INPUT-OUTPUT SECTION.
|
|
FILE-CONTROL.
|
|
SELECT R01INNFIL ASSIGN TO KIN01R01.
|
|
SELECT W01OUTFIL ASSIGN TO KIN01W01.
|
|
SELECT W02OUTFIL ASSIGN TO KIN01W02.
|
|
*
|
|
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 KIN01REC REPLACING ==(A)== BY ==W01==.
|
|
*
|
|
*****************************************************************
|
|
* ##W02## *
|
|
*****************************************************************
|
|
FD W02OUTFIL
|
|
LABEL RECORD IS STANDARD
|
|
BLOCK CONTAINS 0
|
|
RECORDING MODE IS V.
|
|
01 W02OUTREC.
|
|
COPY KIN05REC REPLACING ==(A)== BY ==W02==.
|
|
*
|
|
WORKING-STORAGE SECTION.
|
|
*
|
|
*****************************************************************
|
|
* コンスタント領域 *
|
|
*****************************************************************
|
|
01 CNSARA.
|
|
03 CNS-PRGIDX PIC X(008) VALUE 'KIN01INP'.
|
|
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-STAT-1 PIC X(001) VALUE '1'.
|
|
03 CNS-STAT-9 PIC X(001) VALUE '9'.
|
|
03 CNS-LEAVE-01 PIC X(002) VALUE '01'.
|
|
03 CNS-LEAVE-02 PIC X(002) VALUE '02'.
|
|
03 CNS-LEAVE-03 PIC X(002) VALUE '03'.
|
|
03 CNS-LEAVE-04 PIC X(002) VALUE '04'.
|
|
*
|
|
*****************************************************************
|
|
* カウンタ領域 *
|
|
*****************************************************************
|
|
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).
|
|
*** CSV分解用
|
|
03 WRK-COMMA-CNT PIC 9(002) COMP.
|
|
03 WRK-COMMA-DISP PIC 9(002).
|
|
03 WRK-LT-FOUND PIC X(001).
|
|
03 WRK-ERR-TYPE PIC X(001).
|
|
03 WRK-CSV-APPL-ID PIC X(009).
|
|
03 WRK-CSV-EMP-ID PIC X(008).
|
|
03 WRK-CSV-START-DATE PIC X(008).
|
|
03 WRK-CSV-START-TIME PIC X(004).
|
|
03 WRK-CSV-END-DATE PIC X(008).
|
|
03 WRK-CSV-END-TIME PIC X(004).
|
|
03 WRK-CSV-LEAVE-TYPE PIC X(002).
|
|
03 WRK-CSV-STATUS PIC X(001).
|
|
*** ステータス再定義(数値+88条件)
|
|
03 WRK-STATUS-NUM REDEFINES WRK-CSV-STATUS
|
|
PIC 9(001).
|
|
88 WRK-STATUS-ACTIVE VALUE 1.
|
|
88 WRK-STATUS-CANCEL VALUE 9.
|
|
*** 休暇種別内部テーブル(4件)
|
|
03 WRK-LEAVE-TYPE-TABLE.
|
|
05 WRK-LT-ENTRY OCCURS 4 TIMES
|
|
INDEXED BY WRK-LT-IDX.
|
|
07 WRK-LT-CODE PIC X(002).
|
|
*** REDEFINESデモ(同一領域 複数型 来回代入)
|
|
03 WRK-DEMO-AREA PIC 9(008).
|
|
03 WRK-DEMO-ALPHA REDEFINES WRK-DEMO-AREA
|
|
PIC X(008).
|
|
03 WRK-DEMO-GRP REDEFINES WRK-DEMO-AREA.
|
|
05 WRK-DEMO-TYPE PIC 9(004).
|
|
05 WRK-DEMO-VALUE 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.
|
|
*
|
|
*** 休暇種別テーブル設定
|
|
MOVE '01' TO WRK-LT-CODE(1).
|
|
MOVE '02' TO WRK-LT-CODE(2).
|
|
MOVE '03' TO WRK-LT-CODE(3).
|
|
MOVE '04' TO WRK-LT-CODE(4).
|
|
*
|
|
*** 運用日付取得
|
|
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.
|
|
*
|
|
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.
|
|
*
|
|
*** 休暇種別テーブル検索
|
|
PERFORM 2020LEAVSERSOR.
|
|
*
|
|
*** エラー判定(フィールド数/休暇種別)
|
|
IF WRK-COMMA-CNT NOT = 8
|
|
MOVE 'F' TO WRK-ERR-TYPE
|
|
PERFORM 2050ERRORSOR
|
|
ELSE IF WRK-LT-FOUND NOT = '1'
|
|
MOVE 'L' TO WRK-ERR-TYPE
|
|
PERFORM 2050ERRORSOR
|
|
ELSE
|
|
*** ステータス判定(IF/ELSE連鎖)
|
|
IF WRK-STATUS-ACTIVE
|
|
PERFORM 2030VALIDATESOR
|
|
ELSE IF WRK-STATUS-CANCEL
|
|
PERFORM 2040CANCELSOR
|
|
ELSE
|
|
MOVE 'S' TO WRK-ERR-TYPE
|
|
PERFORM 2050ERRORSOR
|
|
END-IF
|
|
END-IF.
|
|
*
|
|
*** 次のレコード読込
|
|
PERFORM 1100R01INNSOR.
|
|
*
|
|
2000MAJSOR-EXT.
|
|
EXIT.
|
|
*****************************************************************
|
|
* サブモジュールNO:(2.1) *
|
|
* サブモジュール名: CSV分解処理 *
|
|
* 処理概要 : UNSTRINGでCSVを8項目に分解する *
|
|
*****************************************************************
|
|
2010CSVSOR SECTION.
|
|
*
|
|
MOVE ZERO TO WRK-COMMA-CNT.
|
|
INITIALIZE WRK-CSV-APPL-ID
|
|
WRK-CSV-EMP-ID
|
|
WRK-CSV-START-DATE
|
|
WRK-CSV-START-TIME
|
|
WRK-CSV-END-DATE
|
|
WRK-CSV-END-TIME
|
|
WRK-CSV-LEAVE-TYPE
|
|
WRK-CSV-STATUS.
|
|
UNSTRING R01INNREC
|
|
DELIMITED BY ','
|
|
INTO WRK-CSV-APPL-ID
|
|
WRK-CSV-EMP-ID
|
|
WRK-CSV-START-DATE
|
|
WRK-CSV-START-TIME
|
|
WRK-CSV-END-DATE
|
|
WRK-CSV-END-TIME
|
|
WRK-CSV-LEAVE-TYPE
|
|
WRK-CSV-STATUS
|
|
TALLYING IN WRK-COMMA-CNT
|
|
END-UNSTRING.
|
|
*
|
|
2010CSVSOR-EXT.
|
|
EXIT.
|
|
*****************************************************************
|
|
* サブモジュールNO:(2.2) *
|
|
* サブモジュール名: 休暇種別テーブル検索処理 *
|
|
* 処理概要 : SEARCH(非ALL)で休暇種別の妥当性を検証 *
|
|
*****************************************************************
|
|
2020LEAVSERSOR SECTION.
|
|
*
|
|
MOVE '0' TO WRK-LT-FOUND.
|
|
SET WRK-LT-IDX TO 1.
|
|
SEARCH WRK-LT-ENTRY
|
|
VARYING WRK-LT-IDX
|
|
AT END
|
|
CONTINUE
|
|
WHEN WRK-LT-CODE(WRK-LT-IDX)
|
|
= WRK-CSV-LEAVE-TYPE
|
|
MOVE '1' TO WRK-LT-FOUND
|
|
END-SEARCH.
|
|
*
|
|
2020LEAVSERSOR-EXT.
|
|
EXIT.
|
|
*****************************************************************
|
|
* サブモジュールNO:(2.3) *
|
|
* サブモジュール名: 有効申請処理 *
|
|
* 処理概要 : SUB04CHKで日付/時刻チェックしW01出力 *
|
|
*****************************************************************
|
|
2030VALIDATESOR SECTION.
|
|
*
|
|
*** W01レコード初期化
|
|
INITIALIZE W01OUTREC.
|
|
*
|
|
*** SUB04CHKで社員番号チェック
|
|
INITIALIZE C01CHKPAR.
|
|
MOVE WRK-CSV-EMP-ID TO C01CHKDAT.
|
|
MOVE 'EMPID' TO C01CHKTYP.
|
|
CALL 'SUB04CHK' USING C01CHKPAR.
|
|
IF C01CHKRRC NOT = ZERO
|
|
MOVE '01' TO W02ERR-CATEGORY
|
|
STRING 'EMP-ID ERROR EMP='
|
|
WRK-CSV-EMP-ID
|
|
DELIMITED BY SIZE
|
|
INTO W02ERR-DETAIL
|
|
WRITE W02OUTREC
|
|
ADD 1 TO CUN-W02OUT
|
|
GO TO 2030VALIDATESOR-EXT
|
|
END-IF.
|
|
*
|
|
*** SUB04CHKで開始日付チェック
|
|
INITIALIZE C01CHKPAR.
|
|
MOVE WRK-CSV-START-DATE TO C01CHKDAT.
|
|
MOVE 'DATE' TO C01CHKTYP.
|
|
CALL 'SUB04CHK' USING C01CHKPAR.
|
|
IF C01CHKRRC NOT = ZERO
|
|
MOVE '01' TO W02ERR-CATEGORY
|
|
STRING 'START-DATE ERROR EMP='
|
|
WRK-CSV-EMP-ID
|
|
' DATE='
|
|
WRK-CSV-START-DATE
|
|
DELIMITED BY SIZE
|
|
INTO W02ERR-DETAIL
|
|
WRITE W02OUTREC
|
|
ADD 1 TO CUN-W02OUT
|
|
GO TO 2030VALIDATESOR-EXT
|
|
END-IF.
|
|
*
|
|
*** SUB04CHKで開始時刻チェック
|
|
INITIALIZE C01CHKPAR.
|
|
MOVE WRK-CSV-START-TIME TO C01CHKDAT.
|
|
MOVE 'TIME' TO C01CHKTYP.
|
|
CALL 'SUB04CHK' USING C01CHKPAR.
|
|
IF C01CHKRRC NOT = ZERO
|
|
MOVE '01' TO W02ERR-CATEGORY
|
|
STRING 'START-TIME ERROR EMP='
|
|
WRK-CSV-EMP-ID
|
|
' TIME='
|
|
WRK-CSV-START-TIME
|
|
DELIMITED BY SIZE
|
|
INTO W02ERR-DETAIL
|
|
WRITE W02OUTREC
|
|
ADD 1 TO CUN-W02OUT
|
|
GO TO 2030VALIDATESOR-EXT
|
|
END-IF.
|
|
*
|
|
*** SUB04CHKで終了日付チェック
|
|
INITIALIZE C01CHKPAR.
|
|
MOVE WRK-CSV-END-DATE TO C01CHKDAT.
|
|
MOVE 'DATE' TO C01CHKTYP.
|
|
CALL 'SUB04CHK' USING C01CHKPAR.
|
|
IF C01CHKRRC NOT = ZERO
|
|
MOVE '01' TO W02ERR-CATEGORY
|
|
STRING 'END-DATE ERROR EMP='
|
|
WRK-CSV-EMP-ID
|
|
' DATE='
|
|
WRK-CSV-END-DATE
|
|
DELIMITED BY SIZE
|
|
INTO W02ERR-DETAIL
|
|
WRITE W02OUTREC
|
|
ADD 1 TO CUN-W02OUT
|
|
GO TO 2030VALIDATESOR-EXT
|
|
END-IF.
|
|
*
|
|
*** SUB04CHKで終了時刻チェック
|
|
INITIALIZE C01CHKPAR.
|
|
MOVE WRK-CSV-END-TIME TO C01CHKDAT.
|
|
MOVE 'TIME' TO C01CHKTYP.
|
|
CALL 'SUB04CHK' USING C01CHKPAR.
|
|
IF C01CHKRRC NOT = ZERO
|
|
MOVE '01' TO W02ERR-CATEGORY
|
|
STRING 'END-TIME ERROR EMP='
|
|
WRK-CSV-EMP-ID
|
|
' TIME='
|
|
WRK-CSV-END-TIME
|
|
DELIMITED BY SIZE
|
|
INTO W02ERR-DETAIL
|
|
WRITE W02OUTREC
|
|
ADD 1 TO CUN-W02OUT
|
|
GO TO 2030VALIDATESOR-EXT
|
|
END-IF.
|
|
*
|
|
*** 複合条件デモ(AND+OR+3段ネスト)
|
|
IF W01START-DATE NOT = ZERO
|
|
AND W01END-DATE NOT = ZERO
|
|
AND W01START-TIME NOT = ZERO
|
|
IF W01START-DATE > W01END-DATE
|
|
OR (W01START-DATE = W01END-DATE
|
|
AND W01START-TIME >= W01END-TIME)
|
|
MOVE 10 TO WRK-DEMO-TYPE
|
|
ELSE
|
|
MOVE 20 TO WRK-DEMO-TYPE
|
|
END-IF
|
|
END-IF.
|
|
*
|
|
*** W01出力(新規/変更: APPL-ID=CSV値, STATUS='1')
|
|
MOVE WRK-CSV-APPL-ID TO W01APPL-ID.
|
|
MOVE WRK-CSV-EMP-ID TO W01EMP-ID.
|
|
MOVE WRK-CSV-LEAVE-TYPE TO W01LEAVE-TYPE.
|
|
MOVE WRK-CSV-START-DATE TO W01START-DATE.
|
|
MOVE WRK-CSV-START-TIME TO W01START-TIME.
|
|
MOVE WRK-CSV-END-DATE TO W01END-DATE.
|
|
MOVE WRK-CSV-END-TIME TO W01END-TIME.
|
|
MOVE WRK-CSV-STATUS TO W01STATUS.
|
|
WRITE W01OUTREC.
|
|
ADD 1 TO CUN-W01OUT.
|
|
*
|
|
2030VALIDATESOR-EXT.
|
|
EXIT.
|
|
*****************************************************************
|
|
* サブモジュールNO:(2.4) *
|
|
* サブモジュール名: 取消申請処理 *
|
|
* 処理概要 : 取消レコードをW01出力(検証は行わない) *
|
|
*****************************************************************
|
|
2040CANCELSOR SECTION.
|
|
*
|
|
*** W01レコード初期化
|
|
INITIALIZE W01OUTREC.
|
|
*
|
|
*** W01出力(取消: APPL-ID=CSV値, STATUS='9')
|
|
MOVE WRK-CSV-APPL-ID TO W01APPL-ID.
|
|
MOVE WRK-CSV-EMP-ID TO W01EMP-ID.
|
|
MOVE WRK-CSV-LEAVE-TYPE TO W01LEAVE-TYPE.
|
|
MOVE WRK-CSV-START-DATE TO W01START-DATE.
|
|
MOVE WRK-CSV-START-TIME TO W01START-TIME.
|
|
MOVE WRK-CSV-END-DATE TO W01END-DATE.
|
|
MOVE WRK-CSV-END-TIME TO W01END-TIME.
|
|
MOVE WRK-CSV-STATUS TO W01STATUS.
|
|
WRITE W01OUTREC.
|
|
ADD 1 TO CUN-W01OUT.
|
|
*
|
|
2040CANCELSOR-EXT.
|
|
EXIT.
|
|
*****************************************************************
|
|
* サブモジュールNO:(2.5) *
|
|
* サブモジュール名: エラー処理 *
|
|
* 処理概要 : エラーレコードをW02出力 *
|
|
*****************************************************************
|
|
2050ERRORSOR SECTION.
|
|
*
|
|
*** W02レコード初期化
|
|
INITIALIZE W02OUTREC.
|
|
MOVE '01' TO W02ERR-CATEGORY.
|
|
*
|
|
*** エラー種別判定
|
|
EVALUATE WRK-ERR-TYPE
|
|
WHEN 'F'
|
|
MOVE 1 TO WRK-DEMO-TYPE
|
|
MOVE WRK-COMMA-CNT TO WRK-DEMO-VALUE
|
|
STRING 'FIELD COUNT ERROR CNT='
|
|
WRK-DEMO-ALPHA
|
|
DELIMITED BY SIZE
|
|
INTO W02ERR-DETAIL
|
|
WHEN 'L'
|
|
MOVE 2 TO WRK-DEMO-TYPE
|
|
MOVE 0 TO WRK-DEMO-VALUE
|
|
STRING 'INVALID LEAVE TYPE='
|
|
WRK-CSV-LEAVE-TYPE
|
|
' EMP='
|
|
WRK-CSV-EMP-ID
|
|
' ERR='
|
|
WRK-DEMO-ALPHA
|
|
DELIMITED BY SIZE
|
|
INTO W02ERR-DETAIL
|
|
WHEN 'S'
|
|
MOVE 3 TO WRK-DEMO-TYPE
|
|
MOVE 0 TO WRK-DEMO-VALUE
|
|
STRING 'INVALID STATUS='
|
|
WRK-CSV-STATUS
|
|
' EMP='
|
|
WRK-CSV-EMP-ID
|
|
' ERR='
|
|
WRK-DEMO-ALPHA
|
|
DELIMITED BY SIZE
|
|
INTO W02ERR-DETAIL
|
|
WHEN OTHER
|
|
MOVE 9 TO WRK-DEMO-TYPE
|
|
MOVE 0 TO WRK-DEMO-VALUE
|
|
STRING 'UNKNOWN ERROR EMP='
|
|
WRK-CSV-EMP-ID
|
|
' ERR='
|
|
WRK-DEMO-ALPHA
|
|
DELIMITED BY SIZE
|
|
INTO W02ERR-DETAIL
|
|
END-EVALUATE.
|
|
*
|
|
WRITE W02OUTREC.
|
|
ADD 1 TO CUN-W02OUT.
|
|
*
|
|
2050ERRORSOR-EXT.
|
|
EXIT.
|
|
*****************************************************************
|
|
* サブモジュールNO:(3.0) *
|
|
* サブモジュール名: 終了処理 *
|
|
* 処理概要 : ファイルクローズ・件数と終了メッセージ出力 *
|
|
*****************************************************************
|
|
3000STPSOR SECTION.
|
|
*
|
|
*** 入出力ファイルCLOSE
|
|
CLOSE R01INNFIL
|
|
W01OUTFIL
|
|
W02OUTFIL.
|
|
*
|
|
*** 入出力ファイル件数出力
|
|
INITIALIZE M00MHOPAR.
|
|
MOVE CNS-MSGIINKES TO M00MSGCOD.
|
|
MOVE 'KIN01R01' TO M00UMKDATS22-01.
|
|
MOVE CUN-R01INN TO M00UMKDATS22-02.
|
|
PERFORM 4000MSGOUTSOR.
|
|
*
|
|
INITIALIZE M00MHOPAR.
|
|
MOVE CNS-MSGOUTKES TO M00MSGCOD.
|
|
MOVE 'KIN01W01' TO M00UMKDATS22-01.
|
|
MOVE CUN-W01OUT TO M00UMKDATS22-02.
|
|
PERFORM 4000MSGOUTSOR.
|
|
*
|
|
INITIALIZE M00MHOPAR.
|
|
MOVE CNS-MSGOUTKES TO M00MSGCOD.
|
|
MOVE 'KIN01W02' 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.
|