KIN03EXP: SELECT INTO → CURSOR(DECLARE/OPEN/FETCH/CLOSE) pattern; SUB01DAT: COPY ZANDATAC; 基本設計書A: KIN08DBU/KIN09CSV specs updated; 品質管理: coverage stats, keyword docs, test criteria

This commit is contained in:
qiuqiuqiu
2026-06-30 21:22:15 +08:00
parent a110bccdaf
commit baa5be54d2
40 changed files with 3382 additions and 350 deletions
+73 -68
View File
@@ -208,72 +208,61 @@
1000ITTSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(1.1) *
* サブモジュール名:C1初回FETCH処理 *
* 処理概要 : LEAVE_RECORDSをSELECT INTO(初回のみ) *
* サブモジュールNO:(1.1) *
* サブモジュール名:C1 OPEN + 初回FETCH処理 *
* 機能概要 : C1(CURSOR FOR LEAVE_RECORDS)のOPEN+FETCH *
*****************************************************************
1100C1INITSOR SECTION.
*
MOVE SPACES TO SQL-APPL-ID.
EXEC SQL
SELECT APPLICATION_ID, EMP_ID, LEAVE_TYPE,
START_DATE, START_TIME,
END_DATE, END_TIME
FROM LEAVE_RECORDS
WHERE STATUS = '1'
ORDER BY EMP_ID, START_DATE
INTO :SQL-APPL-ID, :SQL-EMP-ID, :SQL-LEAVE-TYPE,
:SQL-START-DATE, :SQL-START-TIME,
:SQL-END-DATE, :SQL-END-TIME
END-EXEC.
*** C1 DECLARE
EXEC SQL
DECLARE C1 CURSOR FOR
SELECT APPLICATION_ID, EMP_ID, LEAVE_TYPE,
START_DATE, START_TIME,
END_DATE, END_TIME
FROM LEAVE_RECORDS
WHERE STATUS = '1'
ORDER BY EMP_ID, START_DATE
END-EXEC.
*
IF SQLCODE = 0
ADD 1 TO CUN-R01INN
ELSE
MOVE '1' TO WRK-R01EOF
END-IF.
*** C1 OPEN
EXEC SQL
OPEN C1
END-EXEC.
*
1100C1INITSOR-EXT.
*** C1 初回FETCH
IF SQLCODE = 0
EXEC SQL
FETCH C1
INTO :SQL-APPL-ID, :SQL-EMP-ID, :SQL-LEAVE-TYPE,
:SQL-START-DATE, :SQL-START-TIME,
:SQL-END-DATE, :SQL-END-TIME
END-EXEC
IF SQLCODE = 0
ADD 1 TO CUN-R01INN
ELSE
MOVE '1' TO WRK-R01EOF
END-IF
ELSE
MOVE '1' TO WRK-R01EOF
END-IF.
*
1100C1INITSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(1.2) *
* サブモジュール名:C1次回FETCH処理 *
* 処理概要 : br_fetch_nextで次行を読込(2回目以降) *
* サブモジュールNO:(1.2) *
* サブモジュール名:C1FETCH処理 *
* 機能概要 : C1のFETCH(2回目以降) *
*****************************************************************
1100C1FETCHSOR SECTION.
*
CALL 'br_fetch_next' USING SQLCODE.
*
IF SQLCODE = 0
MOVE SPACES TO SQL-APPL-ID
MOVE 0 TO WS-COL-IDX
MOVE 256 TO WS-COL-LEN
CALL 'br_get_col' USING
WS-COL-IDX, SQL-APPL-ID, WS-COL-LEN
MOVE 1 TO WS-COL-IDX
MOVE 256 TO WS-COL-LEN
CALL 'br_get_col' USING
WS-COL-IDX, SQL-EMP-ID, WS-COL-LEN
MOVE 2 TO WS-COL-IDX
MOVE 256 TO WS-COL-LEN
CALL 'br_get_col' USING
WS-COL-IDX, SQL-LEAVE-TYPE, WS-COL-LEN
MOVE 3 TO WS-COL-IDX
MOVE 256 TO WS-COL-LEN
CALL 'br_get_col' USING
WS-COL-IDX, SQL-START-DATE, WS-COL-LEN
MOVE 4 TO WS-COL-IDX
MOVE 256 TO WS-COL-LEN
CALL 'br_get_col' USING
WS-COL-IDX, SQL-START-TIME, WS-COL-LEN
MOVE 5 TO WS-COL-IDX
MOVE 256 TO WS-COL-LEN
CALL 'br_get_col' USING
WS-COL-IDX, SQL-END-DATE, WS-COL-LEN
MOVE 6 TO WS-COL-IDX
MOVE 256 TO WS-COL-LEN
CALL 'br_get_col' USING
WS-COL-IDX, SQL-END-TIME, WS-COL-LEN
EXEC SQL
FETCH C1
INTO :SQL-APPL-ID, :SQL-EMP-ID, :SQL-LEAVE-TYPE,
:SQL-START-DATE, :SQL-START-TIME,
:SQL-END-DATE, :SQL-END-TIME
END-EXEC.
IF SQLCODE = 0
ADD 1 TO CUN-R01INN
ELSE
MOVE '1' TO WRK-R01EOF
@@ -282,31 +271,38 @@
1100C1FETCHSOR-EXT.
EXIT.
*****************************************************************
* サブモジュールNO:(1.3) *
* サブモジュール名: 休日カレンダー読込処理 *
* 処理概要 : HOLIDAY_CALENDARをWORKING-STORAGEに格納 *
* サブモジュールNO:(1.3) *
* サブモジュール名: HOLIDAY_CALENDARの読込み *
* 機能概要 : HOLIDAY_CALENDARをWORKING-STORAGEに読込 *
*****************************************************************
1200HDINNSOR SECTION.
*
*** C2初回FETCH(SELECT INTO)
*** C2 DECLARE
EXEC SQL
DECLARE C2 CURSOR FOR
SELECT HOLIDAY_DATE
FROM HOLIDAY_CALENDAR
ORDER BY HOLIDAY_DATE
END-EXEC.
*
*** C2 OPEN + 初回FETCH
EXEC SQL
OPEN C2
END-EXEC.
*
EXEC SQL
FETCH C2
INTO :SQL-HD-DATE
END-EXEC.
*
*** 休日テーブルに全件読込
*** HOLIDAY_CALENDARの読込み
PERFORM UNTIL SQLCODE NOT = 0
ADD 1 TO WRK-HD-COUNT
MOVE SQL-HD-DATE TO WRK-HD-DATE(WRK-HD-COUNT)
CALL 'br_fetch_next' USING SQLCODE
IF SQLCODE = 0
MOVE 0 TO WS-COL-IDX
MOVE 256 TO WS-COL-LEN
CALL 'br_get_col' USING
WS-COL-IDX, SQL-HD-DATE, WS-COL-LEN
END-IF
EXEC SQL
FETCH C2
INTO :SQL-HD-DATE
END-EXEC
END-PERFORM.
*
1200HDINNSOR-EXT.
@@ -461,6 +457,15 @@
*****************************************************************
3000STPSOR SECTION.
*
*** CURSOR CLOSE
EXEC SQL
CLOSE C1
END-EXEC.
*
EXEC SQL
CLOSE C2
END-EXEC.
*
*** 出力ファイルCLOSE
CLOSE W01OUTFIL.
*