Phase 2c: 전 11모듈 per-service 레거시 구조 분해·확장 (실동작 유지)
- 10개 모듈(au py rc st lg cl mm vl mg cm)을 ac 템플릿대로 분해: svc/ 30 서비스 .pgc + 카피북 .h, 얇은 <mod>_svr 디스패처 dbio/ ~25 .pgc(+.h), batch/ ~17 .pgc, run/ ~17 .sh (모듈마다) - 파일: svc 330 + dbio 276 + batch 187 + run 187, 총 소스 1602본 - 서비스별 고유 실로직(정규화 md5), build.sh 자동발견(inline/split 양립) - 통합 검증: build DONE modules=11 servers=11 batches=187, 12서버 runok, 333 서비스 AVAIL, 매입체인 XA 커밋(status=S), prepared_xacts=0 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
c3b99a8b75
commit
fd8b418c6e
1404 changed files with 30322 additions and 5994 deletions
11
app/src/vl/dbio/vl_appr_dbio.h
Normal file
11
app/src/vl/dbio/vl_appr_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_appr_dbio.h - 승인 건수 조회 (매입 대비) copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_APPR_DBIO_H
|
||||
#define VL_APPR_DBIO_H
|
||||
|
||||
long vldb_appr_count(long pid);
|
||||
|
||||
#endif /* VL_APPR_DBIO_H */
|
||||
17
app/src/vl/dbio/vl_appr_dbio.pgc
Normal file
17
app/src/vl/dbio/vl_appr_dbio.pgc
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* vl_appr_dbio.pgc - 승인 건수 조회 (매입 대비) (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_appr_dbio.h"
|
||||
|
||||
long vldb_appr_count(long pid)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_pid = pid, h_cnt;
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM approval WHERE purchase_id = :h_pid;
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_appr_count FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_cnt;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_balance_dbio.h
Normal file
11
app/src/vl/dbio/vl_balance_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_balance_dbio.h - 가맹점 매입 순액 합계 (정산완료) copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_BALANCE_DBIO_H
|
||||
#define VL_BALANCE_DBIO_H
|
||||
|
||||
long vldb_merch_net(const char *merch, const char *bizdate);
|
||||
|
||||
#endif /* VL_BALANCE_DBIO_H */
|
||||
20
app/src/vl/dbio/vl_balance_dbio.pgc
Normal file
20
app/src/vl/dbio/vl_balance_dbio.pgc
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* vl_balance_dbio.pgc - 가맹점 매입 순액 합계 (정산완료) (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_balance_dbio.h"
|
||||
|
||||
long vldb_merch_net(const char *merch, const char *bizdate)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_net; char h_merch[64], h_bizdate[16];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
strncpy(h_merch, merch, sizeof(h_merch)-1); h_merch[sizeof(h_merch)-1] = 0;
|
||||
strncpy(h_bizdate, bizdate, sizeof(h_bizdate)-1); h_bizdate[sizeof(h_bizdate)-1] = 0;
|
||||
EXEC SQL SELECT coalesce(sum(net),0) INTO :h_net FROM purchase
|
||||
WHERE merchant_id = :h_merch AND biz_date = :h_bizdate AND status = 'S';
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_merch_net FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_net;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_batchchk_dbio.h
Normal file
11
app/src/vl/dbio/vl_batchchk_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_batchchk_dbio.h - 영업일 매입 건수 (배치 정합용) copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_BATCHCHK_DBIO_H
|
||||
#define VL_BATCHCHK_DBIO_H
|
||||
|
||||
long vldb_purchase_day_count(const char *bizdate);
|
||||
|
||||
#endif /* VL_BATCHCHK_DBIO_H */
|
||||
18
app/src/vl/dbio/vl_batchchk_dbio.pgc
Normal file
18
app/src/vl/dbio/vl_batchchk_dbio.pgc
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* vl_batchchk_dbio.pgc - 영업일 매입 건수 (배치 정합용) (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_batchchk_dbio.h"
|
||||
|
||||
long vldb_purchase_day_count(const char *bizdate)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_cnt; char h_bizdate[16];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
strncpy(h_bizdate, bizdate, sizeof(h_bizdate)-1); h_bizdate[sizeof(h_bizdate)-1] = 0;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM purchase WHERE biz_date = :h_bizdate;
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_purchase_day_count FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_cnt;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_bin_query_dbio.h
Normal file
11
app/src/vl/dbio/vl_bin_query_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_bin_query_dbio.h - BIN 등록/활성 여부 검증 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_BIN_QUERY_DBIO_H
|
||||
#define VL_BIN_QUERY_DBIO_H
|
||||
|
||||
int vldb_bin_active(const char *bin);
|
||||
|
||||
#endif /* VL_BIN_QUERY_DBIO_H */
|
||||
21
app/src/vl/dbio/vl_bin_query_dbio.pgc
Normal file
21
app/src/vl/dbio/vl_bin_query_dbio.pgc
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* vl_bin_query_dbio.pgc - BIN 등록/활성 여부 검증 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_bin_query_dbio.h"
|
||||
|
||||
int vldb_bin_active(const char *bin)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_cnt, h_active; char h_bin[16];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
strncpy(h_bin, bin, sizeof(h_bin)-1); h_bin[sizeof(h_bin)-1] = 0;
|
||||
EXEC SQL SELECT count(*), coalesce(sum(CASE WHEN status='ACTIVE' THEN 1 ELSE 0 END),0)
|
||||
INTO :h_cnt, :h_active FROM mm_bin WHERE bin = :h_bin;
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_bin_active FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
if (h_cnt == 0) return 1;
|
||||
if (h_active == 0) return 2;
|
||||
return 0;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_checklog_query_dbio.h
Normal file
11
app/src/vl/dbio/vl_checklog_query_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_checklog_query_dbio.h - 검증 로그 실패 건수 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_CHECKLOG_QUERY_DBIO_H
|
||||
#define VL_CHECKLOG_QUERY_DBIO_H
|
||||
|
||||
long vldb_checklog_fail(const char *check_type, const char *bizdate);
|
||||
|
||||
#endif /* VL_CHECKLOG_QUERY_DBIO_H */
|
||||
20
app/src/vl/dbio/vl_checklog_query_dbio.pgc
Normal file
20
app/src/vl/dbio/vl_checklog_query_dbio.pgc
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* vl_checklog_query_dbio.pgc - 검증 로그 실패 건수 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_checklog_query_dbio.h"
|
||||
|
||||
long vldb_checklog_fail(const char *check_type, const char *bizdate)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_cnt; char h_type[32], h_bizdate[16];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
strncpy(h_type, check_type, sizeof(h_type)-1); h_type[sizeof(h_type)-1] = 0;
|
||||
strncpy(h_bizdate, bizdate, sizeof(h_bizdate)-1); h_bizdate[sizeof(h_bizdate)-1] = 0;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM vl_check_log
|
||||
WHERE check_type = :h_type AND result_code <> 0 AND biz_date = :h_bizdate;
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_checklog_fail FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_cnt;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_close_dbio.h
Normal file
11
app/src/vl/dbio/vl_close_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_close_dbio.h - 의심거래 종결 처리 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_CLOSE_DBIO_H
|
||||
#define VL_CLOSE_DBIO_H
|
||||
|
||||
int vldb_close_suspect(long sid);
|
||||
|
||||
#endif /* VL_CLOSE_DBIO_H */
|
||||
18
app/src/vl/dbio/vl_close_dbio.pgc
Normal file
18
app/src/vl/dbio/vl_close_dbio.pgc
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* vl_close_dbio.pgc - 의심거래 종결 처리 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_close_dbio.h"
|
||||
|
||||
int vldb_close_suspect(long sid)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_sid = sid;
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL UPDATE vl_suspect SET status = 'CLOSED'
|
||||
WHERE suspect_id = :h_sid AND status = 'OPEN';
|
||||
if (sqlca.sqlcode < 0 || sqlca.sqlcode == 100) { userlog("vldb_close_suspect FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return 0;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_codeval_dbio.h
Normal file
11
app/src/vl/dbio/vl_codeval_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_codeval_dbio.h - 공통코드 유효성 (mm_code 활성) copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_CODEVAL_DBIO_H
|
||||
#define VL_CODEVAL_DBIO_H
|
||||
|
||||
int vldb_code_active(const char *grp, const char *code);
|
||||
|
||||
#endif /* VL_CODEVAL_DBIO_H */
|
||||
20
app/src/vl/dbio/vl_codeval_dbio.pgc
Normal file
20
app/src/vl/dbio/vl_codeval_dbio.pgc
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* vl_codeval_dbio.pgc - 공통코드 유효성 (mm_code 활성) (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_codeval_dbio.h"
|
||||
|
||||
int vldb_code_active(const char *grp, const char *code)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_cnt; char h_grp[32], h_code[32];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
strncpy(h_grp, grp, sizeof(h_grp)-1); h_grp[sizeof(h_grp)-1] = 0;
|
||||
strncpy(h_code, code, sizeof(h_code)-1); h_code[sizeof(h_code)-1] = 0;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM mm_code
|
||||
WHERE code_group = :h_grp AND code = :h_code AND status = 'ACTIVE';
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_code_active FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return (h_cnt > 0) ? 0 : 1;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_cross_dbio.h
Normal file
11
app/src/vl/dbio/vl_cross_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_cross_dbio.h - 교차검증 존재비트 (매입/가맹점/승인) copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_CROSS_DBIO_H
|
||||
#define VL_CROSS_DBIO_H
|
||||
|
||||
long vldb_cross_bits(long pid);
|
||||
|
||||
#endif /* VL_CROSS_DBIO_H */
|
||||
26
app/src/vl/dbio/vl_cross_dbio.pgc
Normal file
26
app/src/vl/dbio/vl_cross_dbio.pgc
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* vl_cross_dbio.pgc - 교차검증 존재비트 (매입/가맹점/승인) (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_cross_dbio.h"
|
||||
|
||||
long vldb_cross_bits(long pid)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_pid = pid, h_p, h_m, h_a;
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
long rc = 0;
|
||||
EXEC SQL SELECT count(*) INTO :h_p FROM purchase WHERE purchase_id = :h_pid;
|
||||
if (sqlca.sqlcode < 0) return -1;
|
||||
EXEC SQL SELECT count(*) INTO :h_m FROM purchase p
|
||||
JOIN merchant m ON m.merchant_id = p.merchant_id WHERE p.purchase_id = :h_pid;
|
||||
if (sqlca.sqlcode < 0) return -1;
|
||||
EXEC SQL SELECT count(*) INTO :h_a FROM approval WHERE purchase_id = :h_pid;
|
||||
if (sqlca.sqlcode < 0) return -1;
|
||||
if (h_p == 0) rc |= 1;
|
||||
if (h_m == 0) rc |= 2;
|
||||
if (h_a == 0) rc |= 4;
|
||||
return rc;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_dup_query_dbio.h
Normal file
11
app/src/vl/dbio/vl_dup_query_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_dup_query_dbio.h - 중복 매입 건수 (가맹점/금액/영업일) copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_DUP_QUERY_DBIO_H
|
||||
#define VL_DUP_QUERY_DBIO_H
|
||||
|
||||
long vldb_dup_count(const char *merch, long amt, const char *bizdate);
|
||||
|
||||
#endif /* VL_DUP_QUERY_DBIO_H */
|
||||
20
app/src/vl/dbio/vl_dup_query_dbio.pgc
Normal file
20
app/src/vl/dbio/vl_dup_query_dbio.pgc
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* vl_dup_query_dbio.pgc - 중복 매입 건수 (가맹점/금액/영업일) (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_dup_query_dbio.h"
|
||||
|
||||
long vldb_dup_count(const char *merch, long amt, const char *bizdate)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_amt = amt, h_cnt; char h_merch[64], h_bizdate[16];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
strncpy(h_merch, merch, sizeof(h_merch)-1); h_merch[sizeof(h_merch)-1] = 0;
|
||||
strncpy(h_bizdate, bizdate, sizeof(h_bizdate)-1); h_bizdate[sizeof(h_bizdate)-1] = 0;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM purchase
|
||||
WHERE merchant_id = :h_merch AND amount = :h_amt AND biz_date = :h_bizdate;
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_dup_count FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_cnt;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_fee_query_dbio.h
Normal file
11
app/src/vl/dbio/vl_fee_query_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_fee_query_dbio.h - 매입 수수료/금액/가맹점 조회 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_FEE_QUERY_DBIO_H
|
||||
#define VL_FEE_QUERY_DBIO_H
|
||||
|
||||
int vldb_purchase_fee(long pid, long *amt_out, long *fee_out, char *merch_out /*>=64*/);
|
||||
|
||||
#endif /* VL_FEE_QUERY_DBIO_H */
|
||||
20
app/src/vl/dbio/vl_fee_query_dbio.pgc
Normal file
20
app/src/vl/dbio/vl_fee_query_dbio.pgc
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* vl_fee_query_dbio.pgc - 매입 수수료/금액/가맹점 조회 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_fee_query_dbio.h"
|
||||
|
||||
int vldb_purchase_fee(long pid, long *amt_out, long *fee_out, char *merch_out)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_pid = pid, h_amt, h_fee; char h_merch[64];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL SELECT amount, fee, merchant_id INTO :h_amt, :h_fee, :h_merch
|
||||
FROM purchase WHERE purchase_id = :h_pid;
|
||||
if (sqlca.sqlcode < 0 || sqlca.sqlcode == 100) { userlog("vldb_purchase_fee FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
*amt_out = h_amt; *fee_out = h_fee;
|
||||
strncpy(merch_out, h_merch, 63); merch_out[63] = 0;
|
||||
return 0;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_format_dbio.h
Normal file
11
app/src/vl/dbio/vl_format_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_format_dbio.h - 가맹점ID 형식 위반 건수 (길이) copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_FORMAT_DBIO_H
|
||||
#define VL_FORMAT_DBIO_H
|
||||
|
||||
long vldb_bad_format_count(void);
|
||||
|
||||
#endif /* VL_FORMAT_DBIO_H */
|
||||
18
app/src/vl/dbio/vl_format_dbio.pgc
Normal file
18
app/src/vl/dbio/vl_format_dbio.pgc
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* vl_format_dbio.pgc - 가맹점ID 형식 위반 건수 (길이) (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_format_dbio.h"
|
||||
|
||||
long vldb_bad_format_count(void)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_cnt;
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM merchant
|
||||
WHERE length(merchant_id) < 4 OR length(merchant_id) > 16;
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_bad_format_count FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_cnt;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_ledger_query_dbio.h
Normal file
11
app/src/vl/dbio/vl_ledger_query_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_ledger_query_dbio.h - 원장 합계 조회 (SETTLELINK) copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_LEDGER_QUERY_DBIO_H
|
||||
#define VL_LEDGER_QUERY_DBIO_H
|
||||
|
||||
long vldb_ledger_sum(long pid);
|
||||
|
||||
#endif /* VL_LEDGER_QUERY_DBIO_H */
|
||||
18
app/src/vl/dbio/vl_ledger_query_dbio.pgc
Normal file
18
app/src/vl/dbio/vl_ledger_query_dbio.pgc
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* vl_ledger_query_dbio.pgc - 원장 합계 조회 (SETTLELINK) (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_ledger_query_dbio.h"
|
||||
|
||||
long vldb_ledger_sum(long pid)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_pid = pid, h_sum;
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL SELECT coalesce(sum(amount),0) INTO :h_sum FROM ledger
|
||||
WHERE purchase_id = :h_pid AND entry_type = 'SETTLELINK';
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_ledger_sum FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_sum;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_merch_query_dbio.h
Normal file
11
app/src/vl/dbio/vl_merch_query_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_merch_query_dbio.h - 가맹점 상태 조회 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_MERCH_QUERY_DBIO_H
|
||||
#define VL_MERCH_QUERY_DBIO_H
|
||||
|
||||
int vldb_merch_status(const char *merch, char *status_out /*>=16*/);
|
||||
|
||||
#endif /* VL_MERCH_QUERY_DBIO_H */
|
||||
19
app/src/vl/dbio/vl_merch_query_dbio.pgc
Normal file
19
app/src/vl/dbio/vl_merch_query_dbio.pgc
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* vl_merch_query_dbio.pgc - 가맹점 상태 조회 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_merch_query_dbio.h"
|
||||
|
||||
int vldb_merch_status(const char *merch, char *status_out)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
char h_merch[64], h_status[16];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
strncpy(h_merch, merch, sizeof(h_merch)-1); h_merch[sizeof(h_merch)-1] = 0;
|
||||
EXEC SQL SELECT status INTO :h_status FROM merchant WHERE merchant_id = :h_merch;
|
||||
if (sqlca.sqlcode < 0 || sqlca.sqlcode == 100) { userlog("vldb_merch_status FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
strncpy(status_out, h_status, 15); status_out[15] = 0;
|
||||
return 0;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_open_dbio.h
Normal file
11
app/src/vl/dbio/vl_open_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_open_dbio.h - 미결(OPEN) 의심거래 총수 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_OPEN_DBIO_H
|
||||
#define VL_OPEN_DBIO_H
|
||||
|
||||
long vldb_open_count(void);
|
||||
|
||||
#endif /* VL_OPEN_DBIO_H */
|
||||
17
app/src/vl/dbio/vl_open_dbio.pgc
Normal file
17
app/src/vl/dbio/vl_open_dbio.pgc
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* vl_open_dbio.pgc - 미결(OPEN) 의심거래 총수 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_open_dbio.h"
|
||||
|
||||
long vldb_open_count(void)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_cnt;
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM vl_suspect WHERE status = 'OPEN';
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_open_count FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_cnt;
|
||||
}
|
||||
12
app/src/vl/dbio/vl_purchase_dbio.h
Normal file
12
app/src/vl/dbio/vl_purchase_dbio.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
/*
|
||||
* vl_purchase_dbio.h - 매입 원거래 존재/금액 조회 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_PURCHASE_DBIO_H
|
||||
#define VL_PURCHASE_DBIO_H
|
||||
|
||||
int vldb_purchase_exists(long pid);
|
||||
long vldb_purchase_amount(long pid);
|
||||
|
||||
#endif /* VL_PURCHASE_DBIO_H */
|
||||
27
app/src/vl/dbio/vl_purchase_dbio.pgc
Normal file
27
app/src/vl/dbio/vl_purchase_dbio.pgc
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* vl_purchase_dbio.pgc - 매입 원거래 존재/금액 조회 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_purchase_dbio.h"
|
||||
|
||||
int vldb_purchase_exists(long pid)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_pid = pid, h_cnt;
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM purchase WHERE purchase_id = :h_pid;
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_purchase_exists FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return (h_cnt > 0) ? 1 : 0;
|
||||
}
|
||||
|
||||
long vldb_purchase_amount(long pid)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_pid = pid, h_amt;
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL SELECT amount INTO :h_amt FROM purchase WHERE purchase_id = :h_pid;
|
||||
if (sqlca.sqlcode < 0 || sqlca.sqlcode == 100) { userlog("vldb_purchase_amount FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_amt;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_refinteg_dbio.h
Normal file
11
app/src/vl/dbio/vl_refinteg_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_refinteg_dbio.h - 참조무결성 위반 건수 (가맹점 orphan) copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_REFINTEG_DBIO_H
|
||||
#define VL_REFINTEG_DBIO_H
|
||||
|
||||
long vldb_orphan_count(long pid);
|
||||
|
||||
#endif /* VL_REFINTEG_DBIO_H */
|
||||
19
app/src/vl/dbio/vl_refinteg_dbio.pgc
Normal file
19
app/src/vl/dbio/vl_refinteg_dbio.pgc
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* vl_refinteg_dbio.pgc - 참조무결성 위반 건수 (가맹점 orphan) (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_refinteg_dbio.h"
|
||||
|
||||
long vldb_orphan_count(long pid)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_pid = pid, h_cnt;
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM purchase p
|
||||
WHERE p.purchase_id = :h_pid
|
||||
AND NOT EXISTS (SELECT 1 FROM merchant m WHERE m.merchant_id = p.merchant_id);
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_orphan_count FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_cnt;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_report_dbio.h
Normal file
11
app/src/vl/dbio/vl_report_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_report_dbio.h - 심각도별 의심거래 리포트 (전기간) copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_REPORT_DBIO_H
|
||||
#define VL_REPORT_DBIO_H
|
||||
|
||||
long vldb_report_by_sev(const char *sev);
|
||||
|
||||
#endif /* VL_REPORT_DBIO_H */
|
||||
18
app/src/vl/dbio/vl_report_dbio.pgc
Normal file
18
app/src/vl/dbio/vl_report_dbio.pgc
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* vl_report_dbio.pgc - 심각도별 의심거래 리포트 (전기간) (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_report_dbio.h"
|
||||
|
||||
long vldb_report_by_sev(const char *sev)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_cnt; char h_sev[8];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
strncpy(h_sev, sev, sizeof(h_sev)-1); h_sev[sizeof(h_sev)-1] = 0;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM vl_suspect WHERE severity = :h_sev;
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_report_by_sev FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_cnt;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_rule_list_dbio.h
Normal file
11
app/src/vl/dbio/vl_rule_list_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_rule_list_dbio.h - 활성 검증규칙 수 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_RULE_LIST_DBIO_H
|
||||
#define VL_RULE_LIST_DBIO_H
|
||||
|
||||
long vldb_rule_count(void);
|
||||
|
||||
#endif /* VL_RULE_LIST_DBIO_H */
|
||||
17
app/src/vl/dbio/vl_rule_list_dbio.pgc
Normal file
17
app/src/vl/dbio/vl_rule_list_dbio.pgc
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* vl_rule_list_dbio.pgc - 활성 검증규칙 수 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_rule_list_dbio.h"
|
||||
|
||||
long vldb_rule_count(void)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_cnt;
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM vl_rule WHERE status = 'ACTIVE';
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_rule_count FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_cnt;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_settle_query_dbio.h
Normal file
11
app/src/vl/dbio/vl_settle_query_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_settle_query_dbio.h - 정산 순액 합계 조회 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_SETTLE_QUERY_DBIO_H
|
||||
#define VL_SETTLE_QUERY_DBIO_H
|
||||
|
||||
long vldb_settle_net(long pid);
|
||||
|
||||
#endif /* VL_SETTLE_QUERY_DBIO_H */
|
||||
17
app/src/vl/dbio/vl_settle_query_dbio.pgc
Normal file
17
app/src/vl/dbio/vl_settle_query_dbio.pgc
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
/*
|
||||
* vl_settle_query_dbio.pgc - 정산 순액 합계 조회 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_settle_query_dbio.h"
|
||||
|
||||
long vldb_settle_net(long pid)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_pid = pid, h_net;
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL SELECT coalesce(sum(net),0) INTO :h_net FROM settlement WHERE purchase_id = :h_pid;
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_settle_net FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_net;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_status_query_dbio.h
Normal file
11
app/src/vl/dbio/vl_status_query_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_status_query_dbio.h - 매입 상태값 조회 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_STATUS_QUERY_DBIO_H
|
||||
#define VL_STATUS_QUERY_DBIO_H
|
||||
|
||||
int vldb_purchase_status(long pid, char *status_out /*>=8*/);
|
||||
|
||||
#endif /* VL_STATUS_QUERY_DBIO_H */
|
||||
18
app/src/vl/dbio/vl_status_query_dbio.pgc
Normal file
18
app/src/vl/dbio/vl_status_query_dbio.pgc
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
/*
|
||||
* vl_status_query_dbio.pgc - 매입 상태값 조회 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_status_query_dbio.h"
|
||||
|
||||
int vldb_purchase_status(long pid, char *status_out)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_pid = pid; char h_status[8];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
EXEC SQL SELECT status INTO :h_status FROM purchase WHERE purchase_id = :h_pid;
|
||||
if (sqlca.sqlcode < 0 || sqlca.sqlcode == 100) { userlog("vldb_purchase_status FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
strncpy(status_out, h_status, 7); status_out[7] = 0;
|
||||
return 0;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_suspect_query_dbio.h
Normal file
11
app/src/vl/dbio/vl_suspect_query_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_suspect_query_dbio.h - 심각도별 의심거래 건수 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_SUSPECT_QUERY_DBIO_H
|
||||
#define VL_SUSPECT_QUERY_DBIO_H
|
||||
|
||||
long vldb_suspect_by_sev(const char *sev, const char *bizdate);
|
||||
|
||||
#endif /* VL_SUSPECT_QUERY_DBIO_H */
|
||||
20
app/src/vl/dbio/vl_suspect_query_dbio.pgc
Normal file
20
app/src/vl/dbio/vl_suspect_query_dbio.pgc
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* vl_suspect_query_dbio.pgc - 심각도별 의심거래 건수 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_suspect_query_dbio.h"
|
||||
|
||||
long vldb_suspect_by_sev(const char *sev, const char *bizdate)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_cnt; char h_sev[8], h_bizdate[16];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
strncpy(h_sev, sev, sizeof(h_sev)-1); h_sev[sizeof(h_sev)-1] = 0;
|
||||
strncpy(h_bizdate, bizdate, sizeof(h_bizdate)-1); h_bizdate[sizeof(h_bizdate)-1] = 0;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM vl_suspect
|
||||
WHERE severity = :h_sev AND biz_date = :h_bizdate;
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_suspect_by_sev FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_cnt;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_threshold_dbio.h
Normal file
11
app/src/vl/dbio/vl_threshold_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_threshold_dbio.h - 규칙 임계치 조회 copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_THRESHOLD_DBIO_H
|
||||
#define VL_THRESHOLD_DBIO_H
|
||||
|
||||
long vldb_rule_threshold(const char *rule_code);
|
||||
|
||||
#endif /* VL_THRESHOLD_DBIO_H */
|
||||
19
app/src/vl/dbio/vl_threshold_dbio.pgc
Normal file
19
app/src/vl/dbio/vl_threshold_dbio.pgc
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* vl_threshold_dbio.pgc - 규칙 임계치 조회 (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_threshold_dbio.h"
|
||||
|
||||
long vldb_rule_threshold(const char *rule_code)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_thr; char h_rule[32];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
strncpy(h_rule, rule_code, sizeof(h_rule)-1); h_rule[sizeof(h_rule)-1] = 0;
|
||||
EXEC SQL SELECT threshold INTO :h_thr FROM vl_rule
|
||||
WHERE rule_code = :h_rule AND status = 'ACTIVE';
|
||||
if (sqlca.sqlcode < 0 || sqlca.sqlcode == 100) { userlog("vldb_rule_threshold FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_thr;
|
||||
}
|
||||
11
app/src/vl/dbio/vl_tolerance_dbio.h
Normal file
11
app/src/vl/dbio/vl_tolerance_dbio.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
/*
|
||||
* vl_tolerance_dbio.h - 금액 허용오차 위반 건수 (amount != fee+net) copybook (part of libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch (no EXEC SQL CONNECT).
|
||||
* Return convention: >=0 ok, -1 = SQL error.
|
||||
*/
|
||||
#ifndef VL_TOLERANCE_DBIO_H
|
||||
#define VL_TOLERANCE_DBIO_H
|
||||
|
||||
long vldb_tolerance_break(const char *bizdate, long tol);
|
||||
|
||||
#endif /* VL_TOLERANCE_DBIO_H */
|
||||
19
app/src/vl/dbio/vl_tolerance_dbio.pgc
Normal file
19
app/src/vl/dbio/vl_tolerance_dbio.pgc
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* vl_tolerance_dbio.pgc - 금액 허용오차 위반 건수 (amount != fee+net) (libvldbio.a).
|
||||
* ECPG functions; run on the caller's XA branch. No EXEC SQL CONNECT.
|
||||
*/
|
||||
#include <string.h>
|
||||
#include <userlog.h>
|
||||
#include "vl_tolerance_dbio.h"
|
||||
|
||||
long vldb_tolerance_break(const char *bizdate, long tol)
|
||||
{
|
||||
EXEC SQL BEGIN DECLARE SECTION;
|
||||
long h_cnt, h_tol = tol; char h_bizdate[16];
|
||||
EXEC SQL END DECLARE SECTION;
|
||||
strncpy(h_bizdate, bizdate, sizeof(h_bizdate)-1); h_bizdate[sizeof(h_bizdate)-1] = 0;
|
||||
EXEC SQL SELECT count(*) INTO :h_cnt FROM purchase
|
||||
WHERE biz_date = :h_bizdate AND abs(amount - (fee + net)) > :h_tol;
|
||||
if (sqlca.sqlcode < 0) { userlog("vldb_tolerance_break FAIL [%d]", sqlca.sqlcode); return -1; }
|
||||
return h_cnt;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue