feat: SQL between/hostvar-key alignment, class-condition parsing, gcov merge across scenario runs

This commit is contained in:
hangshuo652
2026-08-09 17:43:00 +08:00
parent f331c8fa2a
commit 273a3f8211
31 changed files with 3789 additions and 272 deletions
+34
View File
@@ -0,0 +1,34 @@
program_id: JIN05UPD
db_type: SQLite
db_name: JIN.db
db_tables:
- name: EMPLOYEE
columns:
- name: EMP_ID
type: CHAR(8)
primary_key: true
- name: KANA_SEI
type: VARCHAR(20)
- name: KANA_MEI
type: VARCHAR(20)
- name: KANJI_NAME
type: VARCHAR(40)
- name: SUB_CODE
type: CHAR(4)
- name: BIRTH_DATE
type: CHAR(8)
- name: DEPT_CODE
type: CHAR(4)
- name: ENTRY_DATE
type: CHAR(8)
- name: STATUS
type: CHAR(1)
runs:
- id: normal
subprograms:
- SUB01DAT
- SUB02MSG
- SUB03END
+16
View File
@@ -23,6 +23,22 @@ db_tables:
- name: STATUS
type: CHAR(1)
command_line: YEARMONTH=202607
runs:
- id: normal
- id: no_parm
command_line: ""
- id: feb
command_line: YEARMONTH=202602
- id: feb_leap
command_line: YEARMONTH=202402
- id: invalid_month
command_line: YEARMONTH=202613
- id: empty_emp
command_line: YEARMONTH=202607
delete_all_rows: true
subprograms:
- SUB02MSG
- SUB03END
+19
View File
@@ -77,3 +77,22 @@ runs:
include_invalid_period: true
modes: ["NORMAL", "RESET"]
inject_duplicate_pk: true
- id: sql_delete_error
# RESET 時 DELETE MONTHLY_ABSENCE の SQL エラー(テーブル削除)→ 9100DBERRSOR
sysin:
period: "202607"
include_invalid_period: true
modes: ["RESET"]
inject_duplicate_pk: false
drop_tables: [MONTHLY_ABSENCE]
- id: sql_select_error
# UPSERT 前 SELECT COUNT 的 SQL エラー(テーブル削除)→ SELECT COUNT failed 分岐
sysin:
period: "202607"
include_invalid_period: true
modes: ["NORMAL"]
final_mode: "NORMAL"
inject_duplicate_pk: false
drop_tables: [MONTHLY_ABSENCE]
+24
View File
@@ -49,6 +49,30 @@ db_tables:
- name: UPDATED_AT
type: TIMESTAMP
runs:
- id: FULL
command_line: "YEARMONTH=202607,MODE=FULL"
seed_extra_rows:
DAILY_RECORDS: 100
- id: SHORT
command_line: "YEARMONTH=202607,MODE=SHORT"
# Fix A: PARM 组合 + 空结果集场景
- id: missing_mode
# WS-COMMA-CNT < 1 → 'WARNING: Missing MODE'MODE 默认 FULL
command_line: "YEARMONTH=202607"
- id: reordered_parm
# KEY1=MODEVALUE1→WS-MODE+ KEY2=YEARMONTHVALUE2→WS-YEARMONTH
command_line: "MODE=FULL,YEARMONTH=202607"
- id: missing_ym
# YEARMONTH 未指定 → SPACE → ABENDSUB03END
command_line: "MODE=FULL"
- id: empty_daily
# 首 FETCH EOF:删除 DAILY_RECORDS 表 → 光标 OPEN/FETCH 失败 → SQLCODE≠0 → WS-DAILY-EOF
# delete_all_rows 空表时 gixsql 首次 FETCH 返回 SQLCODE=0,无法触发 EOF
command_line: "YEARMONTH=202607,MODE=FULL"
drop_tables: [DAILY_RECORDS]
subprograms:
- SUB02MSG
- SUB03END
+32
View File
@@ -0,0 +1,32 @@
program_id: KYU02REG
db_type: SQLite
db_name: SALARY.db
db_tables:
- name: EMP_MASTER
columns:
- name: EMP_ID
type: CHAR(8)
primary_key: true
- name: EMP_NAME
type: VARCHAR(40)
- name: DEPT_CODE
type: CHAR(2)
- name: REGION_CODE
type: CHAR(2)
- name: CATEGORY_CODE
type: CHAR(3)
- name: BASE_SALARY
type: DECIMAL(9,0)
- name: HOURLY_RATE
type: DECIMAL(7,0)
- name: DEPENDENT_COUNT
type: SMALLINT
- name: STATUS
type: CHAR(1)
- name: UPDATED_AT
type: TIMESTAMP
subprograms:
- SUB02MSG
- SUB03END
+50
View File
@@ -0,0 +1,50 @@
program_id: KYU04CAL
db_type: SQLite
db_name: SALARY.db
db_tables:
- name: EMP_MASTER
columns:
- name: EMP_ID
type: CHAR(8)
primary_key: true
- name: EMP_NAME
type: VARCHAR(40)
- name: DEPT_CODE
type: CHAR(2)
- name: REGION_CODE
type: CHAR(2)
- name: CATEGORY_CODE
type: CHAR(3)
- name: BASE_SALARY
type: DECIMAL(9,0)
- name: HOURLY_RATE
type: DECIMAL(7,0)
- name: DEPENDENT_COUNT
type: SMALLINT
- name: STATUS
type: CHAR(1)
- name: UPDATED_AT
type: TIMESTAMP
- name: OVT_MONTHLY
columns:
- name: EMP_ID
type: CHAR(8)
primary_key: true
- name: YEAR_MONTH
type: CHAR(6)
primary_key: true
- name: OVT_TYPE
type: CHAR(1)
- name: OVT_HOURS
type: DECIMAL(4,1)
- name: OVT_COUNT
type: DECIMAL(9)
- name: UPDATED_AT
type: TIMESTAMP
subprograms:
- SUB01DAT
- SUB02MSG
- SUB03END
+36
View File
@@ -0,0 +1,36 @@
program_id: KYU05DED
db_type: SQLite
db_name: SALARY.db
db_tables:
- name: TAX_TABLE
columns:
- name: TAX_FROM
type: DECIMAL(9,0)
primary_key: true
- name: TAX_TO
type: DECIMAL(9,0)
primary_key: true
- name: TAX_RATE
type: DECIMAL(5,4)
- name: DEDUCTION
type: DECIMAL(9,0)
- name: INSURANCE_TABLE
columns:
- name: INS_INCOME_FROM
type: DECIMAL(9,0)
primary_key: true
- name: INS_INCOME_TO
type: DECIMAL(9,0)
primary_key: true
- name: INS_HEALTH_RATE
type: DECIMAL(7,6)
- name: INS_PENSION_RATE
type: DECIMAL(7,6)
- name: UPDATED_AT
type: TIMESTAMP
subprograms:
- SUB02MSG
- SUB03END
+29
View File
@@ -0,0 +1,29 @@
program_id: KYU06UPD
db_type: SQLite
db_name: SALARY.db
db_tables:
- name: SALARY_RESULTS
columns:
- name: EMP_ID
type: CHAR(8)
primary_key: true
- name: YEAR_MONTH
type: CHAR(6)
primary_key: true
- name: GROSS_PAYMENT
type: DECIMAL(9,0)
- name: INCOME_TAX
type: DECIMAL(9,0)
- name: INSURANCE
type: DECIMAL(9,0)
- name: RESIDENT_TAX
type: DECIMAL(9,0)
- name: NET_PAYMENT
type: DECIMAL(9,0)
- name: UPDATED_AT
type: TIMESTAMP
subprograms:
- SUB02MSG
- SUB03END
+45
View File
@@ -0,0 +1,45 @@
program_id: SHA02MNC
db_type: SQLite
db_name: INSURANCEDB.db
db_tables:
- name: INSURANCE_RATES
columns:
- name: GRADE_CODE
type: CHAR(2)
primary_key: true
- name: MONTHLY_FROM
type: DECIMAL(9,0)
- name: MONTHLY_TO
type: DECIMAL(9,0)
- name: HEALTH_RATE
type: DECIMAL(7,6)
- name: PENSION_RATE
type: DECIMAL(7,6)
- name: EFFECTIVE_FROM
type: CHAR(6)
- name: EFFECTIVE_TO
type: CHAR(6)
- name: EMP_MASTER
columns:
- name: EMP_ID
type: CHAR(8)
primary_key: true
- name: EMP_NAME
type: VARCHAR(40)
- name: DEPT_CODE
type: CHAR(2)
- name: BASE_SALARY
type: DECIMAL(9,0)
runs:
- id: normal
- id: emp_open_fail
drop_tables: [EMP_MASTER]
inject_duplicate_pk: false
subprograms:
- SUB01DAT
- SUB02MSG
- SUB04CHK
+32
View File
@@ -0,0 +1,32 @@
program_id: SHA03MNP
db_type: SQLite
db_name: INSURANCEDB.db
db_tables:
- name: INSURANCE_RATES
columns:
- name: GRADE_CODE
type: CHAR(2)
primary_key: true
- name: MONTHLY_FROM
type: DECIMAL(9,0)
- name: MONTHLY_TO
type: DECIMAL(9,0)
- name: HEALTH_RATE
type: DECIMAL(7,6)
- name: PENSION_RATE
type: DECIMAL(7,6)
- name: EFFECTIVE_FROM
type: CHAR(6)
- name: EFFECTIVE_TO
type: CHAR(6)
runs:
- id: normal
- id: rates_open_fail
drop_tables: [INSURANCE_RATES]
inject_duplicate_pk: false
subprograms:
- SUB01DAT
- SUB02MSG
+19
View File
@@ -0,0 +1,19 @@
program_id: SHA04TWO
db_type: SQLite
db_name: INSURANCEDB.db
db_tables:
- name: INSURED_MASTER
columns:
- name: EMP_ID
type: CHAR(8)
primary_key: true
- name: INSURED_NO
type: CHAR(10)
primary_key: true
- name: STATUS
type: CHAR(1)
subprograms:
- SUB01DAT
- SUB02MSG
+30
View File
@@ -0,0 +1,30 @@
program_id: SHA06TWM
db_type: SQLite
db_name: INSURANCEDB.db
db_tables:
- name: INSURANCE_RATES
columns:
- name: GRADE_CODE
type: CHAR(2)
primary_key: true
- name: HEALTH_RATE
type: DECIMAL(7,0)
- name: PENSION_RATE
type: DECIMAL(7,0)
- name: EMP_MASTER
columns:
- name: EMP_ID
type: CHAR(8)
primary_key: true
- name: BIRTH_DATE
type: CHAR(8)
- name: DEPENDENT_COUNT
type: SMALLINT
- name: REGION_CODE
type: CHAR(2)
subprograms:
- SUB01DAT
- SUB02MSG
+34
View File
@@ -0,0 +1,34 @@
program_id: SHA07KBR
db_type: SQLite
db_name: INSURANCEDB.db
db_tables:
- name: QUALIFICATION_CHANGES
columns:
- name: CHG_ID
type: DECIMAL(9,0)
primary_key: true
- name: EMP_ID
type: CHAR(8)
- name: CHG_DATE
type: CHAR(8)
- name: CHG_TYPE
type: CHAR(2)
- name: INSURER_CODE
type: CHAR(4)
- name: PREV_INSURER
type: CHAR(4)
- name: REASON
type: VARCHAR(100)
- name: EMP_MASTER
columns:
- name: EMP_ID
type: CHAR(8)
primary_key: true
- name: EMP_NAME
type: VARCHAR(40)
subprograms:
- SUB01DAT
- SUB02MSG