/*
 * VL_STATUS_CHK.pgc - vl 모듈 서비스 VL_STATUS_CHK (one service = one file).
 * 기능: 매입 상태 유효값 검증 (허용집합 밖 → RC 1).
 * 기존 인라인 vl_svr.pgc에서 분리; caller의 XA 브랜치에서 실행(EXEC SQL CONNECT 없음).
 * vl_svr가 tpsvrinit에서 이 서비스를 tpadvertise 한다.
 */
#include "VL_STATUS_CHK.h"

void VL_STATUS_CHK(TPSVCINFO *p)
{
    UBFH *b = (UBFH *)p->data;
    long rc = 0;
    EXEC SQL BEGIN DECLARE SECTION;
    long h_pid, h_cnt;
    char h_status[8];
    EXEC SQL END DECLARE SECTION;
    h_pid = getl(b, T_PURCHASE_ID);
    EXEC SQL SELECT status INTO :h_status FROM purchase WHERE purchase_id = :h_pid;
    if (sqlca.sqlcode < 0 || sqlca.sqlcode == 100) { setl(b, T_RC, 3); OK(b); }
    EXEC SQL SELECT count(*) INTO :h_cnt FROM (SELECT :h_status AS s) t
        WHERE t.s IN ('A','M','S','C','H','V');
    if (sqlca.sqlcode < 0) FAIL(b);
    if (h_cnt == 0) rc = 1;              /* 허용되지 않은 상태값 */
    Bchg(b, T_STATUS, 0, h_status, 0L);
    setl(b, T_RC, rc);
    OK(b);
}
