- Add SHA01CVT-SHA10S10: all 10 programs, COPY books (13), binaries, design docs, resource usage lists, DDL schema_sha.sql - Add KYU01REC-KYU06REC COPY books (previously missing from git) - Fix design-code inconsistencies detected in audit: - SHA07KBR: remove dead SHACHKAC COPY (SUB04CHK never called) - SHA02MNC: 2020TYPSOR paragraph -> inline EVALUATE; SUB04CHK = PARM val - SHA05TWN: REVISED-TYPE values 'C'/'N' -> 'A'(定期決定)/'B'(月変) - SHA03MNP: 2010CALCSOR/2020WRTSOR -> inline implementation - SHA04TWO: remove GRADE-HISTORY from DB table list (not accessed) - SHA06TWM: add SALARYDB.EMP-MASTER to DB table list - SHA10S10: fix error file W99OUTFIL, 10+1 file count - Fix comment column alignment (Area A col 7) in SHA07KBR, SHA08SRT - Update KYU source/design docs: BOM removal, classification comment cleanup - Update README: Subsystem D added, program count 39
317 lines
14 KiB
COBOL
317 lines
14 KiB
COBOL
IDENTIFICATION DIVISION.
|
||
PROGRAM-ID. KYU06UPD.
|
||
*****************************************************************
|
||
* システム名 : 給与計算システム *
|
||
* プログラムID : KYU06UPD *
|
||
* プログラム名 : 給与計算結果DB2更新処理 *
|
||
* 作成日 : 2026-07-01 *
|
||
* 処理概要 : SALARY-NETをDB2 SALARY-RESULTSに登録 *
|
||
* 重複時(-803)はUPDATEに切替 *
|
||
*****************************************************************
|
||
* 更新履歴 *
|
||
*---------------------------------------------------------------*
|
||
* 更新日付 担当者 更新内容 *
|
||
*---------------------------------------------------------------*
|
||
* 2026-07-01 @@@ 新規作成 *
|
||
* *
|
||
*****************************************************************
|
||
ENVIRONMENT DIVISION.
|
||
CONFIGURATION SECTION.
|
||
SOURCE-COMPUTER. IBM-ZSERIES.
|
||
OBJECT-COMPUTER. IBM-ZSERIES.
|
||
*
|
||
INPUT-OUTPUT SECTION.
|
||
FILE-CONTROL.
|
||
SELECT R02INNFIL ASSIGN TO EXTERNAL KYU06R02.
|
||
SELECT W03OUTFIL ASSIGN TO EXTERNAL KYU06W03.
|
||
*
|
||
DATA DIVISION.
|
||
FILE SECTION.
|
||
*
|
||
*****************************************************************
|
||
* R02: SALARY-NET(200B FB) *
|
||
*****************************************************************
|
||
FD R02INNFIL
|
||
LABEL RECORD IS STANDARD
|
||
BLOCK CONTAINS 0
|
||
RECORDING MODE IS F.
|
||
01 R02INNREC.
|
||
COPY KYU04REC REPLACING ==(A)== BY ==R02==.
|
||
*
|
||
*****************************************************************
|
||
* W03: ERROR-LOG(VB) *
|
||
*****************************************************************
|
||
FD W03OUTFIL
|
||
LABEL RECORD IS STANDARD
|
||
BLOCK CONTAINS 0
|
||
RECORDING MODE IS V.
|
||
01 W03OUTREC.
|
||
COPY KYU99REC REPLACING ==(A)== BY ==W03==.
|
||
*
|
||
WORKING-STORAGE SECTION.
|
||
*
|
||
*****************************************************************
|
||
* SQLCA *
|
||
*****************************************************************
|
||
EXEC SQL INCLUDE SQLCA END-EXEC.
|
||
*
|
||
*****************************************************************
|
||
* コンスタント領域 *
|
||
*****************************************************************
|
||
01 CNSARA.
|
||
03 CNS-PRGIDX PIC X(008) VALUE 'KYU06UPD'.
|
||
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-YEAR-MONTH-PARM PIC X(006).
|
||
*
|
||
*****************************************************************
|
||
* カウンタ領域 *
|
||
*****************************************************************
|
||
01 CUNARA.
|
||
03 CUN-R02INN PIC S9(009) COMP-3 VALUE ZERO.
|
||
03 CUN-W03OUT PIC S9(009) COMP-3 VALUE ZERO.
|
||
03 CUN-DB-INS PIC S9(009) COMP-3 VALUE ZERO.
|
||
03 CUN-DB-UPD PIC S9(009) COMP-3 VALUE ZERO.
|
||
*
|
||
*****************************************************************
|
||
* 作業領域 *
|
||
*****************************************************************
|
||
01 WRKARA.
|
||
03 WRK-EOF PIC X(001).
|
||
88 WRK-EOF-Y VALUE '1'.
|
||
03 WRK-YEAR-MONTH PIC X(006).
|
||
*
|
||
*****************************************************************
|
||
* DB2ホスト変数 *
|
||
*****************************************************************
|
||
01 DBVARA.
|
||
03 DBV-EMP-ID PIC X(008).
|
||
03 DBV-YEAR-MONTH PIC X(006).
|
||
03 DBV-GROSS-PAYMENT PIC 9(009).
|
||
03 DBV-INCOME-TAX PIC 9(009).
|
||
03 DBV-INSURANCE PIC 9(009).
|
||
03 DBV-RESIDENT-TAX PIC 9(009).
|
||
03 DBV-NET-PAYMENT PIC 9(009).
|
||
*
|
||
*****************************************************************
|
||
* サブプログラム連絡領域 *
|
||
*****************************************************************
|
||
COPY ZANMSGAC.
|
||
COPY ZANENDAC.
|
||
*
|
||
PROCEDURE DIVISION.
|
||
*****************************************************************
|
||
* サブモジュールNO: (0.0) *
|
||
* サブモジュール名: 制御処理 *
|
||
*****************************************************************
|
||
0000MAJCOLSOR SECTION.
|
||
*
|
||
PERFORM 1000ITTSOR.
|
||
PERFORM 2000MAJSOR
|
||
UNTIL WRK-EOF-Y.
|
||
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.
|
||
*
|
||
*** PARM取得
|
||
ACCEPT WRK-YEAR-MONTH
|
||
FROM COMMAND-LINE.
|
||
IF WRK-YEAR-MONTH = SPACES
|
||
MOVE '202605' TO WRK-YEAR-MONTH
|
||
END-IF.
|
||
MOVE WRK-YEAR-MONTH TO CNS-YEAR-MONTH-PARM.
|
||
*
|
||
OPEN INPUT R02INNFIL.
|
||
OPEN OUTPUT W03OUTFIL.
|
||
*
|
||
*** DB接続
|
||
EXEC SQL
|
||
CONNECT TO 'data/SALARY.db'
|
||
END-EXEC.
|
||
*
|
||
PERFORM 1100R02INNSOR.
|
||
*
|
||
1000ITTSOR-EXT.
|
||
EXIT.
|
||
*
|
||
*****************************************************************
|
||
* サブモジュールNO: (1.1) *
|
||
* サブモジュール名: R02読込処理 *
|
||
*****************************************************************
|
||
1100R02INNSOR SECTION.
|
||
*
|
||
READ R02INNFIL
|
||
AT END
|
||
SET WRK-EOF-Y TO TRUE
|
||
NOT AT END
|
||
ADD 1 TO CUN-R02INN
|
||
END-READ.
|
||
*
|
||
1100R02INNSOR-EXT.
|
||
EXIT.
|
||
*
|
||
*****************************************************************
|
||
* サブモジュールNO: (2.0) *
|
||
* サブモジュール名: 主処理 *
|
||
*****************************************************************
|
||
2000MAJSOR SECTION.
|
||
*
|
||
MOVE R02EMP-ID TO DBV-EMP-ID.
|
||
MOVE CNS-YEAR-MONTH-PARM TO DBV-YEAR-MONTH.
|
||
MOVE R02GROSS-PAYMENT TO DBV-GROSS-PAYMENT.
|
||
MOVE R02INCOME-TAX TO DBV-INCOME-TAX.
|
||
MOVE R02INSURANCE TO DBV-INSURANCE.
|
||
MOVE R02RESIDENT-TAX TO DBV-RESIDENT-TAX.
|
||
MOVE R02NET-PAYMENT TO DBV-NET-PAYMENT.
|
||
*
|
||
EXEC SQL
|
||
INSERT INTO SALARY-RESULTS
|
||
(EMP-ID, YEAR-MONTH,
|
||
GROSS-PAYMENT, INCOME-TAX,
|
||
INSURANCE, RESIDENT-TAX,
|
||
NET-PAYMENT, UPDATED-AT)
|
||
VALUES
|
||
(:DBV-EMP-ID, :DBV-YEAR-MONTH,
|
||
:DBV-GROSS-PAYMENT, :DBV-INCOME-TAX,
|
||
:DBV-INSURANCE, :DBV-RESIDENT-TAX,
|
||
:DBV-NET-PAYMENT, CURRENT TIMESTAMP)
|
||
END-EXEC.
|
||
*
|
||
IF SQLCODE = 0
|
||
ADD 1 TO CUN-DB-INS
|
||
PERFORM 1100R02INNSOR
|
||
EXIT SECTION
|
||
END-IF.
|
||
*
|
||
IF SQLCODE = -803
|
||
EXEC SQL
|
||
UPDATE SALARY-RESULTS SET
|
||
GROSS-PAYMENT = :DBV-GROSS-PAYMENT
|
||
,INCOME-TAX = :DBV-INCOME-TAX
|
||
,INSURANCE = :DBV-INSURANCE
|
||
,RESIDENT-TAX = :DBV-RESIDENT-TAX
|
||
,NET-PAYMENT = :DBV-NET-PAYMENT
|
||
,UPDATED-AT = CURRENT TIMESTAMP
|
||
WHERE EMP-ID = :DBV-EMP-ID
|
||
AND YEAR-MONTH = :DBV-YEAR-MONTH
|
||
END-EXEC
|
||
IF SQLCODE = 0
|
||
ADD 1 TO CUN-DB-UPD
|
||
ELSE
|
||
PERFORM 2100ERROUTSOR
|
||
END-IF
|
||
PERFORM 1100R02INNSOR
|
||
EXIT SECTION
|
||
END-IF.
|
||
*
|
||
PERFORM 2100ERROUTSOR.
|
||
PERFORM 1100R02INNSOR.
|
||
*
|
||
2000MAJSOR-EXT.
|
||
EXIT.
|
||
*
|
||
*****************************************************************
|
||
* サブモジュールNO: (2.1) *
|
||
* サブモジュール名: エラー出力処理 *
|
||
*****************************************************************
|
||
2100ERROUTSOR SECTION.
|
||
*
|
||
MOVE 'DB-ERR' TO W03ERR-CATEGORY.
|
||
MOVE DBV-EMP-ID TO W03ERR-DETAIL.
|
||
WRITE W03OUTREC.
|
||
ADD 1 TO CUN-W03OUT.
|
||
*
|
||
2100ERROUTSOR-EXT.
|
||
EXIT.
|
||
*
|
||
*****************************************************************
|
||
* サブモジュールNO: (3.0) *
|
||
* サブモジュール名: 終了処理 *
|
||
*****************************************************************
|
||
3000STPSOR SECTION.
|
||
*
|
||
CLOSE R02INNFIL
|
||
W03OUTFIL.
|
||
*
|
||
INITIALIZE M00MHOPAR.
|
||
MOVE CNS-MSGIINKES TO M00MSGCOD.
|
||
MOVE 'KYU06R02' TO M00UMKDATS22-01.
|
||
MOVE CUN-R02INN TO M00UMKDATS22-02.
|
||
PERFORM 4000MSGOUTSOR.
|
||
*
|
||
INITIALIZE M00MHOPAR.
|
||
MOVE CNS-MSGOUTKES TO M00MSGCOD.
|
||
MOVE 'DB-INSERT' TO M00UMKDATS22-01.
|
||
MOVE CUN-DB-INS TO M00UMKDATS22-02.
|
||
PERFORM 4000MSGOUTSOR.
|
||
*
|
||
INITIALIZE M00MHOPAR.
|
||
MOVE CNS-MSGOUTKES TO M00MSGCOD.
|
||
MOVE 'DB-UPDATE' TO M00UMKDATS22-01.
|
||
MOVE CUN-DB-UPD TO M00UMKDATS22-02.
|
||
PERFORM 4000MSGOUTSOR.
|
||
*
|
||
INITIALIZE M00MHOPAR.
|
||
MOVE CNS-MSGOUTKES TO M00MSGCOD.
|
||
MOVE 'KYU06W03' 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) *
|
||
* サブモジュール名: メッセージ出力処理 *
|
||
*****************************************************************
|
||
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.
|