int isPreferred(int i_message,int msgType, char * i_imsi, char *i_hlr, char *i_vlr, int *o_isAllowed, int *o_nsRelayReason, char *o_relayReason, char *o_planName, char *o_planType, int *o_isKnown, int *o_listPriority, int *o_opCode, int *o_attemptCount, char *prevVLR, int *mapVersion, char *clgPty, int *o_vlrErrCode, int *o_diffVPLMN,char *o_listId,char *o_networkName, int *timerS, int *o_inContext,int *o_hlrErrorCode,int *o_invokeId,PGconn *con) { int release = 0; EXEC SQL BEGIN DECLARE SECTION; VARCHAR po_plantype[1]; VARCHAR po_sl_relay_reason[1]; VARCHAR m_h_imsi[30]; VARCHAR po_prev_vlr[30]; VARCHAR po_clg_address[30]; VARCHAR m_h_hlraddress[30]; VARCHAR m_h_vlraddress[30]; VARCHAR po_planname[31]; VARCHAR po_network_name[31]; VARCHAR po_list_id[10]; //int m_ht_diffVPLMN; int m_ht_msgType; int m_ht_message; int po_opcode; int allow_yn; int prefflag; int po_map_version; int po_ns_relay_reason; //int m_ht_isKnown; int po_list_priority; int po_attemptcount; // int m_ht_vlrErrCode; int po_errorcode; int po_error_code; int po_gprs_log; int po_timer_s_yn; int po_context_yn; int po_hlr_error_code; int po_invoke_id; char buffer[512]; EXEC SQL END DECLARE SECTION; printf("entered into ispreffered\n"); m_ht_msgType = msgType; m_ht_message = i_message; memset((char *)m_h_imsi.arr,'\0', sizeof((char *)m_h_imsi.arr)); m_h_imsi.len=0; memset((char *)m_h_hlraddress.arr,'\0', sizeof((char *)m_h_hlraddress.arr)); m_h_hlraddress.len=0; memset((char *)m_h_vlraddress.arr,'\0', sizeof((char *)m_h_vlraddress.arr)); m_h_vlraddress.len=0; memset(buffer,'\0',sizeof(buffer)); m_h_imsi.len = strlen(i_imsi); strcpy((char *)m_h_imsi.arr, i_imsi); m_h_hlraddress.len = strlen(i_hlr); strcpy((char *)m_h_hlraddress.arr, i_hlr); m_h_vlraddress.len = strlen(i_vlr); strcpy((char *)m_h_vlraddress.arr, i_vlr); allow_yn = 1; prefflag = 0; po_map_version = 0; po_timer_s_yn = 0; po_context_yn = 0; po_ns_relay_reason = 0; memset((char *)po_prev_vlr.arr,'\0', sizeof((char *)po_prev_vlr.arr)); po_prev_vlr.len=0; memset((char *)po_clg_address.arr,'\0', sizeof((char *)po_clg_address.arr)); po_clg_address.len=0; po_sl_relay_reason.len = 0; memset((char *)po_sl_relay_reason.arr, '\0', sizeof((char *)po_sl_relay_reason.arr)); po_plantype.len = 0; memset((char *)po_plantype.arr, '\0', sizeof((char *)po_plantype.arr)); po_planname.len = 0; memset((char *)po_planname.arr, '\0', sizeof((char *)po_planname.arr)); po_network_name.len = 0; memset((char *)po_network_name.arr, '\0', sizeof((char *)po_network_name.arr)); po_list_id.len = 0; memset((char *)po_list_id.arr, '\0', sizeof((char *)po_list_id.arr)); po_list_priority = 0; po_attemptcount = 0; po_error_code = 0; po_errorcode = 0; po_hlr_error_code =0; po_invoke_id =0; *mapVersion = 0; *timerS = 0; *o_inContext = 0; PGresult *res = PQexec(con, "BEGIN"); if (PQresultStatus(res) != PGRES_COMMAND_OK) { fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(con)); PQclear(res); PQfinish(con); exit(1); } PQclear(res); //allow_yn,po_ns_relay_reason,po_sl_relay_reason=======these are output paraneters (total 21 output parameters are there but checking purpose iam passing only 3 parameters) printf("imsi==%s\tvlr==%s\thlr==%s\tmessahe===%d\tmsg_type==%d\n",m_h_imsi.arr,m_h_vlraddress.arr,m_h_hlraddress.arr,m_ht_message,m_ht_msgType); snprintf(buffer, sizeof(buffer),"SELECT smp_ss7_mig_dev.pr_pkg_oss_networkserver_pr_sp_apply_sl_yn('%s','%s','%s', %d ,%d)",m_h_imsi.arr,m_h_hlraddress.arr,m_h_vlraddress.arr,m_ht_message,m_ht_msgType,allow_yn,po_ns_relay_reason,po_sl_relay_reason); res = PQexec(con,buffer); if (PQresultStatus(res) != PGRES_TUPLES_OK) { printf("No data retrieved\n"); PQclear(res); PQfinish(con); exit(1); } PQclear(res); res = PQexec(con, "END"); PQclear(res);