Files
cobol-tna-system/src/KYU06UPD.cbl
T
qiuqiuqiu 71232af484 Add Subsystem D (SHA01-10): social insurance subsystem + design-resource consistency fixes
- 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
2026-07-15 20:32:51 +08:00

317 lines
14 KiB
COBOL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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-NET200B FB *
*****************************************************************
FD R02INNFIL
LABEL RECORD IS STANDARD
BLOCK CONTAINS 0
RECORDING MODE IS F.
01 R02INNREC.
COPY KYU04REC REPLACING ==(A)== BY ==R02==.
*
*****************************************************************
* W03: ERROR-LOGVB *
*****************************************************************
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.