/*
 * VL_BIN.pgc - vl 모듈 서비스 VL_BIN (one service = one file).
 * 기능: BIN 유효성 검증 vs mm_bin (RC 1=미등록,2=비활성).
 * 기존 인라인 vl_svr.pgc에서 분리; caller의 XA 브랜치에서 실행(EXEC SQL CONNECT 없음).
 * vl_svr가 tpsvrinit에서 이 서비스를 tpadvertise 한다.
 */
#include "VL_BIN.h"

void VL_BIN(TPSVCINFO *p)
{
    UBFH *b = (UBFH *)p->data;
    char bin[16];
    long rc = 0;
    EXEC SQL BEGIN DECLARE SECTION;
    long h_cnt, h_active;
    char h_bin[16];
    EXEC SQL END DECLARE SECTION;
    gets_(b, T_KEY1, bin, sizeof(bin));
    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) FAIL(b);
    if (h_cnt == 0) rc = 1;
    else if (h_active == 0) rc = 2;
    setl(b, T_RC, rc);
    OK(b);
}
