/*
 * cl_unlocked_dbio.pgc - cl 모듈 DB 접근 함수 (cl_unlocked_dbio), archived into libcldbio.a.
 * 완료됐지만 기간잠금이 없는 마감 기간 수 (NOT EXISTS).
 * ECPG (EXEC SQL) functions; run on the caller's XA branch. No EXEC SQL CONNECT.
 */
#include <string.h>
#include <userlog.h>
#include "cl_unlocked_dbio.h"

/* status='C' 마감 중 cl_period_lock 에 잠금이 없는 기간 수. */
long clqdb_unlocked(void)
{
    EXEC SQL BEGIN DECLARE SECTION;
    long h_v = 0;
    EXEC SQL END DECLARE SECTION;
    EXEC SQL SELECT count(DISTINCT c.period_key) INTO :h_v FROM cl_close_log c
        WHERE c.status = 'C'
          AND NOT EXISTS (SELECT 1 FROM cl_period_lock l
                          WHERE l.period_key = c.period_key AND l.locked);
    if (sqlca.sqlcode < 0) return -1;
    return h_v;
}
