![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
This is generated by a Pro*C compiler running on an AIX box. It usually contains the proper data, but every once in a while, and only on 2 certain record types, it gets populated w/ blanks. If I process those record types separately, then there's no problem w/ any of the record types (there are 7 of them for the record). So, what is sqharc, and how does it get populated? The pre-compiler generated code doesn't populate it anywhere. I've searched online, but the only hits I get are copies of code from people asking for help w/ problems. As for documentation, I haven't found any that help. I've searched both IBM and Oracle sites. Nada e niente. I copied the code below, but it's all generated by the pre-compiler, and the original is very basic - initialize the necessary fields and do a SELECT to return 1 row. Can anybody help? Regards Tom good value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 9001000a0059bf0 populated sqparc w/ sqharc - 9001000a0059bf0 bad value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 2020202020202020 populated sqparc w/ sqharc - 2020202020202020 Here's the original code, the generated code is below -- * * * * *init(); * * * * *sprintf(tmpSeqno, "%06d", numSeqno); * * * * *strncpy(tmpConnectionid, retransmissionrequestStruct.cFromConnectionID, sizeof(retransmissionrequestStruct.cFromConnection ID)); * * *string stringCmd("SELECT NVL(OUT_EVENT_ID, 0),NVL(TO_CHAR(BUS_DATE,'DD-MON-YYYY'),' '),NVL(TO_CHAR(TIME_ON_OUTEVENT,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(TIME_OFF_OUTEVENT ,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(AS_IS_ID, 0),NVL(TO_CHAR(T1_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T1_5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T2_TIME,'DD-MON- YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T3_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T4_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL( TO_CHAR(T6_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(MESSAGE_ID,' '),NVL(MESSAGE_TYPE,' '),NVL(OUT_SEQ_NO,' '),NVL(OUT_VERSION_NO,' '),NVL(SUBSCRIBER_ID,' '),NVL(OUT_CONNECTION_ID,' '),NVL(OUT_ACCOUNT_ID,' '),NVL(STATUS_IND,' '),NVL(TRAILING_OUT_MSG_DATA,' '),NVL(REJECT_CODE,' ')"); * * * * *stringCmd.append(whereClause1); * * * * *stringCmd.append(tmpSeqno); * * * * *stringCmd.append(whereClause2); * * * * *stringCmd.append(tmpConnectionid); * * * * *stringCmd.append(whereClause3); * * * * stringCmd.copy(cmd,stringCmd.size()); * * * * * * * * * EXEC SQL EXECUTE * * * * * * * * * * * * BEGIN * * * * * * * * * * * * *EXECUTE IMMEDIATE :cmd * * * * * * * *INTO :sqliOutEventKey, * * * * * * * * * * *:sqlcBusinessDate, * * * * * * * * * * * * * :sqlcTimeOnOutEvent, * * * * * * * * * * * * * :sqlcTimeOffOutEvent, * * * * * * * * * * * * * :sqliAsIsKey, * * * * * * * * * * * * * *:sqlcT1, * * * * * * * * * * * * * *:sqlcT1_5, * * * * * * * * * * * * * *:sqlcT2, * * * * * * * * * * * * * *:sqlcT3, * * * * * * * * * * * * * *:sqlcT4, * * * * * * * * * * * * * *:sqlcT5, * * * * * * * * * * * * * *:sqlcT6, * * * * * * * * * * * * * *:sqlcMsgID, * * * * * * * * * * * * * *:sqlcMsgType, * * * * * * * * * * * * * *:sqlcMsgSeqno, * * * * * * * * * * * * * *:sqlcVersion, * * * * * * * * * * * * * *:sqlcSubscriberID, * * * * * * * * * * * * * *:sqlcConnectionID, * * * * * * * * * * * * * *:sqlcAccountID, * * * * * * * * * * * * * *:sqlcStatus, * * * * * * * * * * * * * *:sqlcOutTrailingMsgData, * * * * * * * * * * * * * *:sqlcErrorCode; * * * * * * * * * * * * END; * * * * * * * * *END-EXEC; Here's the generated code -- * *struct sqlexd sqlstm; * *sqlstm.sqlvsn = 12; * *sqlstm.arrsiz = 23; * *sqlstm.sqladtp = &sqladt; * *sqlstm.sqltdsp = &sqltds; * *sqlstm.stmt = "begin EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey , :sqlc\ BusinessDate , :sqlcTimeOnOutEvent , :sqlcTimeOffOutEvent , :sqliAsIsKey ,:sq \ lcT1 , :sqlcT1_5 , :sqlcT2 , :sqlcT3 , :sqlcT4 , :sqlcT5 , :sqlcT6 , :sqlcMsgI \ D , :sqlcMsgType , :sqlcMsgSeqno , :sqlcVersion , :sqlcSubscriberID , :sqlcCon \ nectionID , :sqlcAccountID , :sqlcStatus , :sqlcOutTrailingMsgData , :sqlcErro \ rCode ; END ;"; * *sqlstm.iters = (unsigned int *)1; * *sqlstm.offset = (unsigned int *)5; * *sqlstm.cud = sqlcud0; * *sqlstm.sqlest = (unsigned char **)&sqlca; * *sqlstm.sqlety = (unsigned short)256; * *sqlstm.occurs = (unsigned int *)0; * *sqlstm.sqhstv[0] = (unsigned char **)cmd; * *sqlstm.sqhstl[0] = (unsigned long )4096; * *sqlstm.sqhsts[0] = ( * * * * int *)0; * *sqlstm.sqindv[0] = ( * * * * short *)0; * *sqlstm.sqinds[0] = ( * * * * int *)0; * *sqlstm.sqharm[0] = (unsigned long )0; * *sqlstm.sqadto[0] = (unsigned short )0; * *sqlstm.sqtdso[0] = (unsigned short )0; * *sqlstm.sqhstv[1] = (unsigned char **)&sqliOutEventKey; * *sqlstm.sqhstl[1] = (unsigned long )sizeof(long); * *sqlstm.sqhsts[1] = ( * * * * int *)0; * *sqlstm.sqindv[1] = ( * * * * short *)0; * *sqlstm.sqinds[1] = ( * * * * int *)0; * *sqlstm.sqharm[1] = (unsigned long )0; * *sqlstm.sqadto[1] = (unsigned short )0; * *sqlstm.sqtdso[1] = (unsigned short )0; * *sqlstm.sqhstv[2] = (unsigned char **)sqlcBusinessDate; * *sqlstm.sqhstl[2] = (unsigned long )32; * *sqlstm.sqhsts[2] = ( * * * * int *)0; * *sqlstm.sqindv[2] = ( * * * * short *)0; * *sqlstm.sqinds[2] = ( * * * * int *)0; * *sqlstm.sqharm[2] = (unsigned long )0; * *sqlstm.sqadto[2] = (unsigned short )0; * *sqlstm.sqtdso[2] = (unsigned short )0; * *sqlstm.sqhstv[3] = (unsigned char **)sqlcTimeOnOutEvent; * *sqlstm.sqhstl[3] = (unsigned long )32; * *sqlstm.sqhsts[3] = ( * * * * int *)0; * *sqlstm.sqindv[3] = ( * * * * short *)0; * *sqlstm.sqinds[3] = ( * * * * int *)0; * *sqlstm.sqharm[3] = (unsigned long )0; * *sqlstm.sqadto[3] = (unsigned short )0; * *sqlstm.sqtdso[3] = (unsigned short )0; * *sqlstm.sqhstv[4] = (unsigned char **)sqlcTimeOffOutEvent; * *sqlstm.sqhstl[4] = (unsigned long )32; * *sqlstm.sqhsts[4] = ( * * * * int *)0; * *sqlstm.sqindv[4] = ( * * * * short *)0; * *sqlstm.sqinds[4] = ( * * * * int *)0; * *sqlstm.sqharm[4] = (unsigned long )0; * *sqlstm.sqadto[4] = (unsigned short )0; * *sqlstm.sqtdso[4] = (unsigned short )0; * *sqlstm.sqhstv[5] = (unsigned char **)&sqliAsIsKey; * *sqlstm.sqhstl[5] = (unsigned long )sizeof(long); * *sqlstm.sqhsts[5] = ( * * * * int *)0; * *sqlstm.sqindv[5] = ( * * * * short *)0; * *sqlstm.sqinds[5] = ( * * * * int *)0; * *sqlstm.sqharm[5] = (unsigned long )0; * *sqlstm.sqadto[5] = (unsigned short )0; * *sqlstm.sqtdso[5] = (unsigned short )0; * *sqlstm.sqhstv[6] = (unsigned char **)sqlcT1; * *sqlstm.sqhstl[6] = (unsigned long )32; * *sqlstm.sqhsts[6] = ( * * * * int *)0; * *sqlstm.sqindv[6] = ( * * * * short *)0; * *sqlstm.sqinds[6] = ( * * * * int *)0; * *sqlstm.sqharm[6] = (unsigned long )0; * *sqlstm.sqadto[6] = (unsigned short )0; * *sqlstm.sqtdso[6] = (unsigned short )0; * *sqlstm.sqhstv[7] = (unsigned char **)sqlcT1_5; * *sqlstm.sqhstl[7] = (unsigned long )32; * *sqlstm.sqhsts[7] = ( * * * * int *)0; * *sqlstm.sqindv[7] = ( * * * * short *)0; * *sqlstm.sqinds[7] = ( * * * * int *)0; * *sqlstm.sqharm[7] = (unsigned long )0; * *sqlstm.sqadto[7] = (unsigned short )0; * *sqlstm.sqtdso[7] = (unsigned short )0; * *sqlstm.sqhstv[8] = (unsigned char **)sqlcT2; * *sqlstm.sqhstl[8] = (unsigned long )32; * *sqlstm.sqhsts[8] = ( * * * * int *)0; * *sqlstm.sqindv[8] = ( * * * * short *)0; * *sqlstm.sqinds[8] = ( * * * * int *)0; * *sqlstm.sqharm[8] = (unsigned long )0; * *sqlstm.sqadto[8] = (unsigned short )0; * *sqlstm.sqtdso[8] = (unsigned short )0; * *sqlstm.sqhstv[9] = (unsigned char **)sqlcT3; * *sqlstm.sqhstl[9] = (unsigned long )32; * *sqlstm.sqhsts[9] = ( * * * * int *)0; * *sqlstm.sqindv[9] = ( * * * * short *)0; * *sqlstm.sqinds[9] = ( * * * * int *)0; * *sqlstm.sqharm[9] = (unsigned long )0; * *sqlstm.sqadto[9] = (unsigned short )0; * *sqlstm.sqtdso[9] = (unsigned short )0; * *sqlstm.sqhstv[10] = (unsigned char **)sqlcT4; * *sqlstm.sqhstl[10] = (unsigned long )32; * *sqlstm.sqhsts[10] = ( * * * * int *)0; * *sqlstm.sqindv[10] = ( * * * * short *)0; * *sqlstm.sqinds[10] = ( * * * * int *)0; * *sqlstm.sqharm[10] = (unsigned long )0; * *sqlstm.sqadto[10] = (unsigned short )0; * *sqlstm.sqtdso[10] = (unsigned short )0; * *sqlstm.sqhstv[11] = (unsigned char **)sqlcT5; * *sqlstm.sqhstl[11] = (unsigned long )32; * *sqlstm.sqhsts[11] = ( * * * * int *)0; * *sqlstm.sqindv[11] = ( * * * * short *)0; * *sqlstm.sqinds[11] = ( * * * * int *)0; * *sqlstm.sqharm[11] = (unsigned long )0; * *sqlstm.sqadto[11] = (unsigned short )0; * *sqlstm.sqtdso[11] = (unsigned short )0; * *sqlstm.sqhstv[12] = (unsigned char **)sqlcT6; * *sqlstm.sqhstl[12] = (unsigned long )32; * *sqlstm.sqhsts[12] = ( * * * * int *)0; * *sqlstm.sqindv[12] = ( * * * * short *)0; * *sqlstm.sqinds[12] = ( * * * * int *)0; * *sqlstm.sqharm[12] = (unsigned long )0; * *sqlstm.sqadto[12] = (unsigned short )0; * *sqlstm.sqtdso[12] = (unsigned short )0; * *sqlstm.sqhstv[13] = (unsigned char **)sqlcMsgID; * *sqlstm.sqhstl[13] = (unsigned long )15; * *sqlstm.sqhsts[13] = ( * * * * int *)0; * *sqlstm.sqindv[13] = ( * * * * short *)0; * *sqlstm.sqinds[13] = ( * * * * int *)0; * *sqlstm.sqharm[13] = (unsigned long )0; * *sqlstm.sqadto[13] = (unsigned short )0; * *sqlstm.sqtdso[13] = (unsigned short )0; * *sqlstm.sqhstv[14] = (unsigned char **)sqlcMsgType; * *sqlstm.sqhstl[14] = (unsigned long )2; * *sqlstm.sqhsts[14] = ( * * * * int *)0; * *sqlstm.sqindv[14] = ( * * * * short *)0; * *sqlstm.sqinds[14] = ( * * * * int *)0; * *sqlstm.sqharm[14] = (unsigned long )0; * *sqlstm.sqadto[14] = (unsigned short )0; * *sqlstm.sqtdso[14] = (unsigned short )0; * *sqlstm.sqhstv[15] = (unsigned char **)sqlcMsgSeqno; * *sqlstm.sqhstl[15] = (unsigned long )6; * *sqlstm.sqhsts[15] = ( * * * * int *)0; * *sqlstm.sqindv[15] = ( * * * * short *)0; * *sqlstm.sqinds[15] = ( * * * * int *)0; * *sqlstm.sqharm[15] = (unsigned long )0; * *sqlstm.sqadto[15] = (unsigned short )0; * *sqlstm.sqtdso[15] = (unsigned short )0; * *sqlstm.sqhstv[16] = (unsigned char **)sqlcVersion; * *sqlstm.sqhstl[16] = (unsigned long )3; * *sqlstm.sqhsts[16] = ( * * * * int *)0; * *sqlstm.sqindv[16] = ( * * * * short *)0; * *sqlstm.sqinds[16] = ( * * * * int *)0; * *sqlstm.sqharm[16] = (unsigned long )0; * *sqlstm.sqadto[16] = (unsigned short )0; * *sqlstm.sqtdso[16] = (unsigned short )0; * *sqlstm.sqhstv[17] = (unsigned char **)sqlcSubscriberID; * *sqlstm.sqhstl[17] = (unsigned long )4; * *sqlstm.sqhsts[17] = ( * * * * int *)0; * *sqlstm.sqindv[17] = ( * * * * short *)0; * *sqlstm.sqinds[17] = ( * * * * int *)0; * *sqlstm.sqharm[17] = (unsigned long )0; * *sqlstm.sqadto[17] = (unsigned short )0; * *sqlstm.sqtdso[17] = (unsigned short )0; * *sqlstm.sqhstv[18] = (unsigned char **)sqlcConnectionID; * *sqlstm.sqhstl[18] = (unsigned long )4; * *sqlstm.sqhsts[18] = ( * * * * int *)0; * *sqlstm.sqindv[18] = ( * * * * short *)0; * *sqlstm.sqinds[18] = ( * * * * int *)0; * *sqlstm.sqharm[18] = (unsigned long )0; * *sqlstm.sqadto[18] = (unsigned short )0; * *sqlstm.sqtdso[18] = (unsigned short )0; * *sqlstm.sqhstv[19] = (unsigned char **)sqlcAccountID; * *sqlstm.sqhstl[19] = (unsigned long )4; * *sqlstm.sqhsts[19] = ( * * * * int *)0; * *sqlstm.sqindv[19] = ( * * * * short *)0; * *sqlstm.sqinds[19] = ( * * * * int *)0; * *sqlstm.sqharm[19] = (unsigned long )0; * *sqlstm.sqadto[19] = (unsigned short )0; * *sqlstm.sqtdso[19] = (unsigned short )0; * *sqlstm.sqhstv[20] = (unsigned char **)sqlcStatus; * *sqlstm.sqhstl[20] = (unsigned long )1; * *sqlstm.sqhsts[20] = ( * * * * int *)0; * *sqlstm.sqindv[20] = ( * * * * short *)0; * *sqlstm.sqinds[20] = ( * * * * int *)0; * *sqlstm.sqharm[20] = (unsigned long )0; * *sqlstm.sqadto[20] = (unsigned short )0; * *sqlstm.sqtdso[20] = (unsigned short )0; * *sqlstm.sqhstv[21] = (unsigned char **)sqlcOutTrailingMsgData; * *sqlstm.sqhstl[21] = (unsigned long )256; * *sqlstm.sqhsts[21] = ( * * * * int *)0; * *sqlstm.sqindv[21] = ( * * * * short *)0; * *sqlstm.sqinds[21] = ( * * * * int *)0; * *sqlstm.sqharm[21] = (unsigned long )0; * *sqlstm.sqadto[21] = (unsigned short )0; * *sqlstm.sqtdso[21] = (unsigned short )0; * *sqlstm.sqhstv[22] = (unsigned char **)sqlcErrorCode; * *sqlstm.sqhstl[22] = (unsigned long )4; * *sqlstm.sqhsts[22] = ( * * * * int *)0; * *sqlstm.sqindv[22] = ( * * * * short *)0; * *sqlstm.sqinds[22] = ( * * * * int *)0; * *sqlstm.sqharm[22] = (unsigned long )0; * *sqlstm.sqadto[22] = (unsigned short )0; * *sqlstm.sqtdso[22] = (unsigned short )0; * *sqlstm.sqphsv = sqlstm.sqhstv; * *sqlstm.sqphsl = sqlstm.sqhstl; * *sqlstm.sqphss = sqlstm.sqhsts; * *sqlstm.sqpind = sqlstm.sqindv; * *sqlstm.sqpins = sqlstm.sqinds; * *sqlstm.sqparm = sqlstm.sqharm; * *sqlstm.sqparc = sqlstm.sqharc; * *sqlstm.sqpadto = sqlstm.sqadto; * *sqlstm.sqptdso = sqlstm.sqtdso; * *sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); |
#3
| |||
| |||
|
|
This is generated by a Pro*C compiler running on an AIX box. It usually contains the proper data, but every once in a while, and only on 2 certain record types, it gets populated w/ blanks. If I process those record types separately, then there's no problem w/ any of the record types (there are 7 of them for the record). So, what is sqharc, and how does it get populated? The pre-compiler generated code doesn't populate it anywhere. I've searched online, but the only hits I get are copies of code from people asking for help w/ problems. As for documentation, I haven't found any that help. I've searched both IBM and Oracle sites. Nada e niente. I copied the code below, but it's all generated by the pre-compiler, and the original is very basic - initialize the necessary fields and do a SELECT to return 1 row. Can anybody help? Regards Tom good value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 9001000a0059bf0 populated sqparc w/ sqharc - 9001000a0059bf0 bad value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 2020202020202020 populated sqparc w/ sqharc - 2020202020202020 Here's the original code, the generated code is below -- * * * * *init(); * * * * *sprintf(tmpSeqno, "%06d", numSeqno); * * * * *strncpy(tmpConnectionid, retransmissionrequestStruct.cFromConnectionID, sizeof(retransmissionrequestStruct.cFromConnection ID)); * * *string stringCmd("SELECT NVL(OUT_EVENT_ID, 0),NVL(TO_CHAR(BUS_DATE,'DD-MON-YYYY'),' '),NVL(TO_CHAR(TIME_ON_OUTEVENT,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(TIME_OFF_OUTEVENT ,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(AS_IS_ID, 0),NVL(TO_CHAR(T1_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T1_5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T2_TIME,'DD-MON- YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T3_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T4_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL( TO_CHAR(T6_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(MESSAGE_ID,' '),NVL(MESSAGE_TYPE,' '),NVL(OUT_SEQ_NO,' '),NVL(OUT_VERSION_NO,' '),NVL(SUBSCRIBER_ID,' '),NVL(OUT_CONNECTION_ID,' '),NVL(OUT_ACCOUNT_ID,' '),NVL(STATUS_IND,' '),NVL(TRAILING_OUT_MSG_DATA,' '),NVL(REJECT_CODE,' ')"); * * * * *stringCmd.append(whereClause1); * * * * *stringCmd.append(tmpSeqno); * * * * *stringCmd.append(whereClause2); * * * * *stringCmd.append(tmpConnectionid); * * * * *stringCmd.append(whereClause3); * * * * stringCmd.copy(cmd,stringCmd.size()); * * * * * * * * * EXEC SQL EXECUTE * * * * * * * * * * * * BEGIN * * * * * * * * * * * * *EXECUTE IMMEDIATE :cmd * * * * * * * *INTO :sqliOutEventKey, * * * * * * * * * * *:sqlcBusinessDate, * * * * * * * * * * * * * :sqlcTimeOnOutEvent, * * * * * * * * * * * * * :sqlcTimeOffOutEvent, * * * * * * * * * * * * * :sqliAsIsKey, * * * * * * * * * * * * * *:sqlcT1, * * * * * * * * * * * * * *:sqlcT1_5, * * * * * * * * * * * * * *:sqlcT2, * * * * * * * * * * * * * *:sqlcT3, * * * * * * * * * * * * * *:sqlcT4, * * * * * * * * * * * * * *:sqlcT5, * * * * * * * * * * * * * *:sqlcT6, * * * * * * * * * * * * * *:sqlcMsgID, * * * * * * * * * * * * * *:sqlcMsgType, * * * * * * * * * * * * * *:sqlcMsgSeqno, * * * * * * * * * * * * * *:sqlcVersion, * * * * * * * * * * * * * *:sqlcSubscriberID, * * * * * * * * * * * * * *:sqlcConnectionID, * * * * * * * * * * * * * *:sqlcAccountID, * * * * * * * * * * * * * *:sqlcStatus, * * * * * * * * * * * * * *:sqlcOutTrailingMsgData, * * * * * * * * * * * * * *:sqlcErrorCode; * * * * * * * * * * * * END; * * * * * * * * *END-EXEC; Here's the generated code -- * *struct sqlexd sqlstm; * *sqlstm.sqlvsn = 12; * *sqlstm.arrsiz = 23; * *sqlstm.sqladtp = &sqladt; * *sqlstm.sqltdsp = &sqltds; * *sqlstm.stmt = "begin EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey , :sqlc\ BusinessDate , :sqlcTimeOnOutEvent , :sqlcTimeOffOutEvent , :sqliAsIsKey ,:sq \ lcT1 , :sqlcT1_5 , :sqlcT2 , :sqlcT3 , :sqlcT4 , :sqlcT5 , :sqlcT6 , :sqlcMsgI \ D , :sqlcMsgType , :sqlcMsgSeqno , :sqlcVersion , :sqlcSubscriberID , :sqlcCon \ nectionID , :sqlcAccountID , :sqlcStatus , :sqlcOutTrailingMsgData , :sqlcErro \ rCode ; END ;"; * *sqlstm.iters = (unsigned int *)1; * *sqlstm.offset = (unsigned int *)5; * *sqlstm.cud = sqlcud0; * *sqlstm.sqlest = (unsigned char **)&sqlca; * *sqlstm.sqlety = (unsigned short)256; * *sqlstm.occurs = (unsigned int *)0; * *sqlstm.sqhstv[0] = (unsigned char **)cmd; * *sqlstm.sqhstl[0] = (unsigned long )4096; * *sqlstm.sqhsts[0] = ( * * * * int *)0; * *sqlstm.sqindv[0] = ( * * * * short *)0; * *sqlstm.sqinds[0] = ( * * * * int *)0; * *sqlstm.sqharm[0] = (unsigned long )0; * *sqlstm.sqadto[0] = (unsigned short )0; * *sqlstm.sqtdso[0] = (unsigned short )0; * *sqlstm.sqhstv[1] = (unsigned char **)&sqliOutEventKey; * *sqlstm.sqhstl[1] = (unsigned long )sizeof(long); * *sqlstm.sqhsts[1] = ( * * * * int *)0; * *sqlstm.sqindv[1] = ( * * * * short *)0; * *sqlstm.sqinds[1] = ( * * * * int *)0; * *sqlstm.sqharm[1] = (unsigned long )0; * *sqlstm.sqadto[1] = (unsigned short )0; * *sqlstm.sqtdso[1] = (unsigned short )0; * *sqlstm.sqhstv[2] = (unsigned char **)sqlcBusinessDate; * *sqlstm.sqhstl[2] = (unsigned long )32; * *sqlstm.sqhsts[2] = ( * * * * int *)0; * *sqlstm.sqindv[2] = ( * * * * short *)0; * *sqlstm.sqinds[2] = ( * * * * int *)0; * *sqlstm.sqharm[2] = (unsigned long )0; * *sqlstm.sqadto[2] = (unsigned short )0; * *sqlstm.sqtdso[2] = (unsigned short )0; * *sqlstm.sqhstv[3] = (unsigned char **)sqlcTimeOnOutEvent; * *sqlstm.sqhstl[3] = (unsigned long )32; * *sqlstm.sqhsts[3] = ( * * * * int *)0; * *sqlstm.sqindv[3] = ( * * * * short *)0; * *sqlstm.sqinds[3] = ( * * * * int *)0; * *sqlstm.sqharm[3] = (unsigned long )0; * *sqlstm.sqadto[3] = (unsigned short )0; * *sqlstm.sqtdso[3] = (unsigned short )0; * *sqlstm.sqhstv[4] = (unsigned char **)sqlcTimeOffOutEvent; * *sqlstm.sqhstl[4] = (unsigned long )32; * *sqlstm.sqhsts[4] = ( * * * * int *)0; * *sqlstm.sqindv[4] = ( * * * * short *)0; * *sqlstm.sqinds[4] = ( * * * * int *)0; * *sqlstm.sqharm[4] = (unsigned long )0; * *sqlstm.sqadto[4] = (unsigned short )0; * *sqlstm.sqtdso[4] = (unsigned short )0; * *sqlstm.sqhstv[5] = (unsigned char **)&sqliAsIsKey; * *sqlstm.sqhstl[5] = (unsigned long )sizeof(long); * *sqlstm.sqhsts[5] = ( * * * * int *)0; * *sqlstm.sqindv[5] = ( * * * * short *)0; * *sqlstm.sqinds[5] = ( * * * * int *)0; * *sqlstm.sqharm[5] = (unsigned long )0; * *sqlstm.sqadto[5] = (unsigned short )0; * *sqlstm.sqtdso[5] = (unsigned short )0; * *sqlstm.sqhstv[6] = (unsigned char **)sqlcT1; * *sqlstm.sqhstl[6] = (unsigned long )32; * *sqlstm.sqhsts[6] = ( * * * * int *)0; * *sqlstm.sqindv[6] = ( * * * * short *)0; * *sqlstm.sqinds[6] = ( * * * * int *)0; * *sqlstm.sqharm[6] = (unsigned long )0; * *sqlstm.sqadto[6] = (unsigned short )0; * *sqlstm.sqtdso[6] = (unsigned short )0; * *sqlstm.sqhstv[7] = (unsigned char **)sqlcT1_5; * *sqlstm.sqhstl[7] = (unsigned long )32; * *sqlstm.sqhsts[7] = ( * * * * int *)0; * *sqlstm.sqindv[7] = ( * * * * short *)0; * *sqlstm.sqinds[7] = ( * * * * int *)0; * *sqlstm.sqharm[7] = (unsigned long )0; * *sqlstm.sqadto[7] = (unsigned short )0; * *sqlstm.sqtdso[7] = (unsigned short )0; * *sqlstm.sqhstv[8] = (unsigned char **)sqlcT2; * *sqlstm.sqhstl[8] = (unsigned long )32; * *sqlstm.sqhsts[8] = ( * * * * int *)0; * *sqlstm.sqindv[8] = ( * * * * short *)0; * *sqlstm.sqinds[8] = ( * * * * int *)0; * *sqlstm.sqharm[8] = (unsigned long )0; * *sqlstm.sqadto[8] = (unsigned short )0; * *sqlstm.sqtdso[8] = (unsigned short )0; * *sqlstm.sqhstv[9] = (unsigned char **)sqlcT3; * *sqlstm.sqhstl[9] = (unsigned long )32; * *sqlstm.sqhsts[9] = ( * * * * int *)0; * *sqlstm.sqindv[9] = ( * * * * short *)0; * *sqlstm.sqinds[9] = ( * * * * int *)0; * *sqlstm.sqharm[9] = (unsigned long )0; * *sqlstm.sqadto[9] = (unsigned short )0; * *sqlstm.sqtdso[9] = (unsigned short )0; * *sqlstm.sqhstv[10] = (unsigned char **)sqlcT4; * *sqlstm.sqhstl[10] = (unsigned long )32; * *sqlstm.sqhsts[10] = ( * * * * int *)0; * *sqlstm.sqindv[10] = ( * * * * short *)0; * *sqlstm.sqinds[10] = ( * * * * int *)0; * *sqlstm.sqharm[10] = (unsigned long )0; * *sqlstm.sqadto[10] = (unsigned short )0; * *sqlstm.sqtdso[10] = (unsigned short )0; * *sqlstm.sqhstv[11] = (unsigned char **)sqlcT5; * *sqlstm.sqhstl[11] = (unsigned long )32; * *sqlstm.sqhsts[11] = ( * * * * int *)0; * *sqlstm.sqindv[11] = ( * * * * short *)0; * *sqlstm.sqinds[11] = ( * * * * int *)0; * *sqlstm.sqharm[11] = (unsigned long )0; * *sqlstm.sqadto[11] = (unsigned short )0; * *sqlstm.sqtdso[11] = (unsigned short )0; * *sqlstm.sqhstv[12] = (unsigned char **)sqlcT6; * *sqlstm.sqhstl[12] = (unsigned long )32; * *sqlstm.sqhsts[12] = ( * * * * int *)0; * *sqlstm.sqindv[12] = ( * * * * short *)0; * *sqlstm.sqinds[12] = ( * * * * int *)0; * *sqlstm.sqharm[12] = (unsigned long )0; * *sqlstm.sqadto[12] = (unsigned short )0; * *sqlstm.sqtdso[12] = (unsigned short )0; * *sqlstm.sqhstv[13] = (unsigned char **)sqlcMsgID; * *sqlstm.sqhstl[13] = (unsigned long )15; * *sqlstm.sqhsts[13] = ( * * * * int *)0; * *sqlstm.sqindv[13] = ( * * * * short *)0; * *sqlstm.sqinds[13] = ( * * * * int *)0; * *sqlstm.sqharm[13] = (unsigned long )0; * *sqlstm.sqadto[13] = (unsigned short )0; * *sqlstm.sqtdso[13] = (unsigned short )0; * *sqlstm.sqhstv[14] = (unsigned char **)sqlcMsgType; * *sqlstm.sqhstl[14] = (unsigned long )2; * *sqlstm.sqhsts[14] = ( * * * * int *)0; * *sqlstm.sqindv[14] = ( * * * * short *)0; * *sqlstm.sqinds[14] = ( * * * * int *)0; * *sqlstm.sqharm[14] = (unsigned long )0; * *sqlstm.sqadto[14] = (unsigned short )0; * *sqlstm.sqtdso[14] = (unsigned short )0; * *sqlstm.sqhstv[15] = (unsigned char **)sqlcMsgSeqno; * *sqlstm.sqhstl[15] = (unsigned long )6; * *sqlstm.sqhsts[15] = ( * * * * int *)0; * *sqlstm.sqindv[15] = ( * * * * short *)0; * *sqlstm.sqinds[15] = ( * * * * int *)0; * *sqlstm.sqharm[15] = (unsigned long )0; * *sqlstm.sqadto[15] = (unsigned short )0; * *sqlstm.sqtdso[15] = (unsigned short )0; * *sqlstm.sqhstv[16] = (unsigned char **)sqlcVersion; * *sqlstm.sqhstl[16] = (unsigned long )3; * *sqlstm.sqhsts[16] = ( * * * * int *)0; * *sqlstm.sqindv[16] = ( * * * * short *)0; * *sqlstm.sqinds[16] = ( * * * * int *)0; * *sqlstm.sqharm[16] = (unsigned long )0; * *sqlstm.sqadto[16] = (unsigned short )0; * *sqlstm.sqtdso[16] = (unsigned short )0; * *sqlstm.sqhstv[17] = (unsigned char **)sqlcSubscriberID; * *sqlstm.sqhstl[17] = (unsigned long )4; * *sqlstm.sqhsts[17] = ( * * * * int *)0; * *sqlstm.sqindv[17] = ( * * * * short *)0; * *sqlstm.sqinds[17] = ( * * * * int *)0; * *sqlstm.sqharm[17] = (unsigned long )0; * *sqlstm.sqadto[17] = (unsigned short )0; * *sqlstm.sqtdso[17] = (unsigned short )0; * *sqlstm.sqhstv[18] = (unsigned char **)sqlcConnectionID; * *sqlstm.sqhstl[18] = (unsigned long )4; * *sqlstm.sqhsts[18] = ( * * * * int *)0; * *sqlstm.sqindv[18] = ( * * * * short *)0; * *sqlstm.sqinds[18] = ( * * * * int *)0; * *sqlstm.sqharm[18] = (unsigned long )0; * *sqlstm.sqadto[18] = (unsigned short )0; * *sqlstm.sqtdso[18] = (unsigned short )0; * *sqlstm.sqhstv[19] = (unsigned char **)sqlcAccountID; * *sqlstm.sqhstl[19] = (unsigned long )4; * *sqlstm.sqhsts[19] = ( * * * * int *)0; * *sqlstm.sqindv[19] = ( * * * * short *)0; * *sqlstm.sqinds[19] = ( * * * * int *)0; * *sqlstm.sqharm[19] = (unsigned long )0; * *sqlstm.sqadto[19] = (unsigned short )0; * *sqlstm.sqtdso[19] = (unsigned short )0; * *sqlstm.sqhstv[20] = (unsigned char **)sqlcStatus; * *sqlstm.sqhstl[20] = (unsigned long )1; * *sqlstm.sqhsts[20] = ( * * * * int *)0; * *sqlstm.sqindv[20] = ( * * * * short *)0; * *sqlstm.sqinds[20] = ( * * * * int *)0; * *sqlstm.sqharm[20] = (unsigned long )0; * *sqlstm.sqadto[20] = (unsigned short )0; * *sqlstm.sqtdso[20] = (unsigned short )0; * *sqlstm.sqhstv[21] = (unsigned char **)sqlcOutTrailingMsgData; * *sqlstm.sqhstl[21] = (unsigned long )256; * *sqlstm.sqhsts[21] = ( * * * * int *)0; * *sqlstm.sqindv[21] = ( * * * * short *)0; * *sqlstm.sqinds[21] = ( * * * * int *)0; * *sqlstm.sqharm[21] = (unsigned long )0; * *sqlstm.sqadto[21] = (unsigned short )0; * *sqlstm.sqtdso[21] = (unsigned short )0; * *sqlstm.sqhstv[22] = (unsigned char **)sqlcErrorCode; * *sqlstm.sqhstl[22] = (unsigned long )4; * *sqlstm.sqhsts[22] = ( * * * * int *)0; * *sqlstm.sqindv[22] = ( * * * * short *)0; * *sqlstm.sqinds[22] = ( * * * * int *)0; * *sqlstm.sqharm[22] = (unsigned long )0; * *sqlstm.sqadto[22] = (unsigned short )0; * *sqlstm.sqtdso[22] = (unsigned short )0; * *sqlstm.sqphsv = sqlstm.sqhstv; * *sqlstm.sqphsl = sqlstm.sqhstl; * *sqlstm.sqphss = sqlstm.sqhsts; * *sqlstm.sqpind = sqlstm.sqindv; * *sqlstm.sqpins = sqlstm.sqinds; * *sqlstm.sqparm = sqlstm.sqharm; * *sqlstm.sqparc = sqlstm.sqharc; * *sqlstm.sqpadto = sqlstm.sqadto; * *sqlstm.sqptdso = sqlstm.sqtdso; * *sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); |
#4
| |||
| |||
|
|
This is generated by a Pro*C compiler running on an AIX box. It usually contains the proper data, but every once in a while, and only on 2 certain record types, it gets populated w/ blanks. If I process those record types separately, then there's no problem w/ any of the record types (there are 7 of them for the record). So, what is sqharc, and how does it get populated? The pre-compiler generated code doesn't populate it anywhere. I've searched online, but the only hits I get are copies of code from people asking for help w/ problems. As for documentation, I haven't found any that help. I've searched both IBM and Oracle sites. Nada e niente. I copied the code below, but it's all generated by the pre-compiler, and the original is very basic - initialize the necessary fields and do a SELECT to return 1 row. Can anybody help? Regards Tom good value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 9001000a0059bf0 populated sqparc w/ sqharc - 9001000a0059bf0 bad value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 2020202020202020 populated sqparc w/ sqharc - 2020202020202020 Here's the original code, the generated code is below -- * * * * *init(); * * * * *sprintf(tmpSeqno, "%06d", numSeqno); * * * * *strncpy(tmpConnectionid, retransmissionrequestStruct.cFromConnectionID, sizeof(retransmissionrequestStruct.cFromConnection ID)); * * *string stringCmd("SELECT NVL(OUT_EVENT_ID, 0),NVL(TO_CHAR(BUS_DATE,'DD-MON-YYYY'),' '),NVL(TO_CHAR(TIME_ON_OUTEVENT,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(TIME_OFF_OUTEVENT ,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(AS_IS_ID, 0),NVL(TO_CHAR(T1_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T1_5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T2_TIME,'DD-MON- YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T3_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T4_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL( TO_CHAR(T6_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(MESSAGE_ID,' '),NVL(MESSAGE_TYPE,' '),NVL(OUT_SEQ_NO,' '),NVL(OUT_VERSION_NO,' '),NVL(SUBSCRIBER_ID,' '),NVL(OUT_CONNECTION_ID,' '),NVL(OUT_ACCOUNT_ID,' '),NVL(STATUS_IND,' '),NVL(TRAILING_OUT_MSG_DATA,' '),NVL(REJECT_CODE,' ')"); * * * * *stringCmd.append(whereClause1); * * * * *stringCmd.append(tmpSeqno); * * * * *stringCmd.append(whereClause2); * * * * *stringCmd.append(tmpConnectionid); * * * * *stringCmd.append(whereClause3); * * * * stringCmd.copy(cmd,stringCmd.size()); * * * * * * * * * EXEC SQL EXECUTE * * * * * * * * * * * * BEGIN * * * * * * * * * * * * *EXECUTE IMMEDIATE :cmd * * * * * * * *INTO :sqliOutEventKey, * * * * * * * * * * *:sqlcBusinessDate, * * * * * * * * * * * * * :sqlcTimeOnOutEvent, * * * * * * * * * * * * * :sqlcTimeOffOutEvent, * * * * * * * * * * * * * :sqliAsIsKey, * * * * * * * * * * * * * *:sqlcT1, * * * * * * * * * * * * * *:sqlcT1_5, * * * * * * * * * * * * * *:sqlcT2, * * * * * * * * * * * * * *:sqlcT3, * * * * * * * * * * * * * *:sqlcT4, * * * * * * * * * * * * * *:sqlcT5, * * * * * * * * * * * * * *:sqlcT6, * * * * * * * * * * * * * *:sqlcMsgID, * * * * * * * * * * * * * *:sqlcMsgType, * * * * * * * * * * * * * *:sqlcMsgSeqno, * * * * * * * * * * * * * *:sqlcVersion, * * * * * * * * * * * * * *:sqlcSubscriberID, * * * * * * * * * * * * * *:sqlcConnectionID, * * * * * * * * * * * * * *:sqlcAccountID, * * * * * * * * * * * * * *:sqlcStatus, * * * * * * * * * * * * * *:sqlcOutTrailingMsgData, * * * * * * * * * * * * * *:sqlcErrorCode; * * * * * * * * * * * * END; * * * * * * * * *END-EXEC; Here's the generated code -- * *struct sqlexd sqlstm; * *sqlstm.sqlvsn = 12; * *sqlstm.arrsiz = 23; * *sqlstm.sqladtp = &sqladt; * *sqlstm.sqltdsp = &sqltds; * *sqlstm.stmt = "begin EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey , :sqlc\ BusinessDate , :sqlcTimeOnOutEvent , :sqlcTimeOffOutEvent , :sqliAsIsKey ,:sq \ lcT1 , :sqlcT1_5 , :sqlcT2 , :sqlcT3 , :sqlcT4 , :sqlcT5 , :sqlcT6 , :sqlcMsgI \ D , :sqlcMsgType , :sqlcMsgSeqno , :sqlcVersion , :sqlcSubscriberID , :sqlcCon \ nectionID , :sqlcAccountID , :sqlcStatus , :sqlcOutTrailingMsgData , :sqlcErro \ rCode ; END ;"; * *sqlstm.iters = (unsigned int *)1; * *sqlstm.offset = (unsigned int *)5; * *sqlstm.cud = sqlcud0; * *sqlstm.sqlest = (unsigned char **)&sqlca; * *sqlstm.sqlety = (unsigned short)256; * *sqlstm.occurs = (unsigned int *)0; * *sqlstm.sqhstv[0] = (unsigned char **)cmd; * *sqlstm.sqhstl[0] = (unsigned long )4096; * *sqlstm.sqhsts[0] = ( * * * * int *)0; * *sqlstm.sqindv[0] = ( * * * * short *)0; * *sqlstm.sqinds[0] = ( * * * * int *)0; * *sqlstm.sqharm[0] = (unsigned long )0; * *sqlstm.sqadto[0] = (unsigned short )0; * *sqlstm.sqtdso[0] = (unsigned short )0; * *sqlstm.sqhstv[1] = (unsigned char **)&sqliOutEventKey; * *sqlstm.sqhstl[1] = (unsigned long )sizeof(long); * *sqlstm.sqhsts[1] = ( * * * * int *)0; * *sqlstm.sqindv[1] = ( * * * * short *)0; * *sqlstm.sqinds[1] = ( * * * * int *)0; * *sqlstm.sqharm[1] = (unsigned long )0; * *sqlstm.sqadto[1] = (unsigned short )0; * *sqlstm.sqtdso[1] = (unsigned short )0; * *sqlstm.sqhstv[2] = (unsigned char **)sqlcBusinessDate; * *sqlstm.sqhstl[2] = (unsigned long )32; * *sqlstm.sqhsts[2] = ( * * * * int *)0; * *sqlstm.sqindv[2] = ( * * * * short *)0; * *sqlstm.sqinds[2] = ( * * * * int *)0; * *sqlstm.sqharm[2] = (unsigned long )0; * *sqlstm.sqadto[2] = (unsigned short )0; * *sqlstm.sqtdso[2] = (unsigned short )0; * *sqlstm.sqhstv[3] = (unsigned char **)sqlcTimeOnOutEvent; * *sqlstm.sqhstl[3] = (unsigned long )32; * *sqlstm.sqhsts[3] = ( * * * * int *)0; * *sqlstm.sqindv[3] = ( * * * * short *)0; * *sqlstm.sqinds[3] = ( * * * * int *)0; * *sqlstm.sqharm[3] = (unsigned long )0; * *sqlstm.sqadto[3] = (unsigned short )0; * *sqlstm.sqtdso[3] = (unsigned short )0; * *sqlstm.sqhstv[4] = (unsigned char **)sqlcTimeOffOutEvent; * *sqlstm.sqhstl[4] = (unsigned long )32; * *sqlstm.sqhsts[4] = ( * * * * int *)0; * *sqlstm.sqindv[4] = ( * * * * short *)0; * *sqlstm.sqinds[4] = ( * * * * int *)0; * *sqlstm.sqharm[4] = (unsigned long )0; * *sqlstm.sqadto[4] = (unsigned short )0; * *sqlstm.sqtdso[4] = (unsigned short )0; * *sqlstm.sqhstv[5] = (unsigned char **)&sqliAsIsKey; * *sqlstm.sqhstl[5] = (unsigned long )sizeof(long); * *sqlstm.sqhsts[5] = ( * * * * int *)0; * *sqlstm.sqindv[5] = ( * * * * short *)0; * *sqlstm.sqinds[5] = ( * * * * int *)0; * *sqlstm.sqharm[5] = (unsigned long )0; * *sqlstm.sqadto[5] = (unsigned short )0; * *sqlstm.sqtdso[5] = (unsigned short )0; * *sqlstm.sqhstv[6] = (unsigned char **)sqlcT1; * *sqlstm.sqhstl[6] = (unsigned long )32; * *sqlstm.sqhsts[6] = ( * * * * int *)0; * *sqlstm.sqindv[6] = ( * * * * short *)0; * *sqlstm.sqinds[6] = ( * * * * int *)0; * *sqlstm.sqharm[6] = (unsigned long )0; * *sqlstm.sqadto[6] = (unsigned short )0; * *sqlstm.sqtdso[6] = (unsigned short )0; * *sqlstm.sqhstv[7] = (unsigned char **)sqlcT1_5; * *sqlstm.sqhstl[7] = (unsigned long )32; * *sqlstm.sqhsts[7] = ( * * * * int *)0; * *sqlstm.sqindv[7] = ( * * * * short *)0; * *sqlstm.sqinds[7] = ( * * * * int *)0; * *sqlstm.sqharm[7] = (unsigned long )0; * *sqlstm.sqadto[7] = (unsigned short )0; * *sqlstm.sqtdso[7] = (unsigned short )0; * *sqlstm.sqhstv[8] = (unsigned char **)sqlcT2; * *sqlstm.sqhstl[8] = (unsigned long )32; * *sqlstm.sqhsts[8] = ( * * * * int *)0; * *sqlstm.sqindv[8] = ( * * * * short *)0; * *sqlstm.sqinds[8] = ( * * * * int *)0; * *sqlstm.sqharm[8] = (unsigned long )0; * *sqlstm.sqadto[8] = (unsigned short )0; * *sqlstm.sqtdso[8] = (unsigned short )0; * *sqlstm.sqhstv[9] = (unsigned char **)sqlcT3; * *sqlstm.sqhstl[9] = (unsigned long )32; * *sqlstm.sqhsts[9] = ( * * * * int *)0; * *sqlstm.sqindv[9] = ( * * * * short *)0; * *sqlstm.sqinds[9] = ( * * * * int *)0; * *sqlstm.sqharm[9] = (unsigned long )0; * *sqlstm.sqadto[9] = (unsigned short )0; * *sqlstm.sqtdso[9] = (unsigned short )0; * *sqlstm.sqhstv[10] = (unsigned char **)sqlcT4; * *sqlstm.sqhstl[10] = (unsigned long )32; * *sqlstm.sqhsts[10] = ( * * * * int *)0; * *sqlstm.sqindv[10] = ( * * * * short *)0; * *sqlstm.sqinds[10] = ( * * * * int *)0; * *sqlstm.sqharm[10] = (unsigned long )0; * *sqlstm.sqadto[10] = (unsigned short )0; * *sqlstm.sqtdso[10] = (unsigned short )0; * *sqlstm.sqhstv[11] = (unsigned char **)sqlcT5; * *sqlstm.sqhstl[11] = (unsigned long )32; * *sqlstm.sqhsts[11] = ( * * * * int *)0; * *sqlstm.sqindv[11] = ( * * * * short *)0; * *sqlstm.sqinds[11] = ( * * * * int *)0; * *sqlstm.sqharm[11] = (unsigned long )0; * *sqlstm.sqadto[11] = (unsigned short )0; * *sqlstm.sqtdso[11] = (unsigned short )0; * *sqlstm.sqhstv[12] = (unsigned char **)sqlcT6; * *sqlstm.sqhstl[12] = (unsigned long )32; * *sqlstm.sqhsts[12] = ( * * * * int *)0; * *sqlstm.sqindv[12] = ( * * * * short *)0; * *sqlstm.sqinds[12] = ( * * * * int *)0; * *sqlstm.sqharm[12] = (unsigned long )0; * *sqlstm.sqadto[12] = (unsigned short )0; * *sqlstm.sqtdso[12] = (unsigned short )0; * *sqlstm.sqhstv[13] = (unsigned char **)sqlcMsgID; * *sqlstm.sqhstl[13] = (unsigned long )15; * *sqlstm.sqhsts[13] = ( * * * * int *)0; * *sqlstm.sqindv[13] = ( * * * * short *)0; * *sqlstm.sqinds[13] = ( * * * * int *)0; * *sqlstm.sqharm[13] = (unsigned long )0; * *sqlstm.sqadto[13] = (unsigned short )0; * *sqlstm.sqtdso[13] = (unsigned short )0; * *sqlstm.sqhstv[14] = (unsigned char **)sqlcMsgType; * *sqlstm.sqhstl[14] = (unsigned long )2; * *sqlstm.sqhsts[14] = ( * * * * int *)0; * *sqlstm.sqindv[14] = ( * * * * short *)0; * *sqlstm.sqinds[14] = ( * * * * int *)0; * *sqlstm.sqharm[14] = (unsigned long )0; * *sqlstm.sqadto[14] = (unsigned short )0; * *sqlstm.sqtdso[14] = (unsigned short )0; * *sqlstm.sqhstv[15] = (unsigned char **)sqlcMsgSeqno; * *sqlstm.sqhstl[15] = (unsigned long )6; * *sqlstm.sqhsts[15] = ( * * * * int *)0; * *sqlstm.sqindv[15] = ( * * * * short *)0; * *sqlstm.sqinds[15] = ( * * * * int *)0; * *sqlstm.sqharm[15] = (unsigned long )0; * *sqlstm.sqadto[15] = (unsigned short )0; * *sqlstm.sqtdso[15] = (unsigned short )0; * *sqlstm.sqhstv[16] = (unsigned char **)sqlcVersion; * *sqlstm.sqhstl[16] = (unsigned long )3; * *sqlstm.sqhsts[16] = ( * * * * int *)0; * *sqlstm.sqindv[16] = ( * * * * short *)0; * *sqlstm.sqinds[16] = ( * * * * int *)0; * *sqlstm.sqharm[16] = (unsigned long )0; * *sqlstm.sqadto[16] = (unsigned short )0; * *sqlstm.sqtdso[16] = (unsigned short )0; * *sqlstm.sqhstv[17] = (unsigned char **)sqlcSubscriberID; * *sqlstm.sqhstl[17] = (unsigned long )4; * *sqlstm.sqhsts[17] = ( * * * * int *)0; * *sqlstm.sqindv[17] = ( * * * * short *)0; * *sqlstm.sqinds[17] = ( * * * * int *)0; * *sqlstm.sqharm[17] = (unsigned long )0; * *sqlstm.sqadto[17] = (unsigned short )0; * *sqlstm.sqtdso[17] = (unsigned short )0; * *sqlstm.sqhstv[18] = (unsigned char **)sqlcConnectionID; * *sqlstm.sqhstl[18] = (unsigned long )4; * *sqlstm.sqhsts[18] = ( * * * * int *)0; * *sqlstm.sqindv[18] = ( * * * * short *)0; * *sqlstm.sqinds[18] = ( * * * * int *)0; * *sqlstm.sqharm[18] = (unsigned long )0; * *sqlstm.sqadto[18] = (unsigned short )0; * *sqlstm.sqtdso[18] = (unsigned short )0; * *sqlstm.sqhstv[19] = (unsigned char **)sqlcAccountID; * *sqlstm.sqhstl[19] = (unsigned long )4; * *sqlstm.sqhsts[19] = ( * * * * int *)0; * *sqlstm.sqindv[19] = ( * * * * short *)0; * *sqlstm.sqinds[19] = ( * * * * int *)0; * *sqlstm.sqharm[19] = (unsigned long )0; * *sqlstm.sqadto[19] = (unsigned short )0; * *sqlstm.sqtdso[19] = (unsigned short )0; * *sqlstm.sqhstv[20] = (unsigned char **)sqlcStatus; * *sqlstm.sqhstl[20] = (unsigned long )1; * *sqlstm.sqhsts[20] = ( * * * * int *)0; * *sqlstm.sqindv[20] = ( * * * * short *)0; * *sqlstm.sqinds[20] = ( * * * * int *)0; * *sqlstm.sqharm[20] = (unsigned long )0; * *sqlstm.sqadto[20] = (unsigned short )0; * *sqlstm.sqtdso[20] = (unsigned short )0; * *sqlstm.sqhstv[21] = (unsigned char **)sqlcOutTrailingMsgData; * *sqlstm.sqhstl[21] = (unsigned long )256; * *sqlstm.sqhsts[21] = ( * * * * int *)0; * *sqlstm.sqindv[21] = ( * * * * short *)0; * *sqlstm.sqinds[21] = ( * * * * int *)0; * *sqlstm.sqharm[21] = (unsigned long )0; * *sqlstm.sqadto[21] = (unsigned short )0; * *sqlstm.sqtdso[21] = (unsigned short )0; * *sqlstm.sqhstv[22] = (unsigned char **)sqlcErrorCode; * *sqlstm.sqhstl[22] = (unsigned long )4; * *sqlstm.sqhsts[22] = ( * * * * int *)0; * *sqlstm.sqindv[22] = ( * * * * short *)0; * *sqlstm.sqinds[22] = ( * * * * int *)0; * *sqlstm.sqharm[22] = (unsigned long )0; * *sqlstm.sqadto[22] = (unsigned short )0; * *sqlstm.sqtdso[22] = (unsigned short )0; * *sqlstm.sqphsv = sqlstm.sqhstv; * *sqlstm.sqphsl = sqlstm.sqhstl; * *sqlstm.sqphss = sqlstm.sqhsts; * *sqlstm.sqpind = sqlstm.sqindv; * *sqlstm.sqpins = sqlstm.sqinds; * *sqlstm.sqparm = sqlstm.sqharm; * *sqlstm.sqparc = sqlstm.sqharc; * *sqlstm.sqpadto = sqlstm.sqadto; * *sqlstm.sqptdso = sqlstm.sqtdso; * *sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); |
#5
| |||
| |||
|
|
This is generated by a Pro*C compiler running on an AIX box. It usually contains the proper data, but every once in a while, and only on 2 certain record types, it gets populated w/ blanks. If I process those record types separately, then there's no problem w/ any of the record types (there are 7 of them for the record). So, what is sqharc, and how does it get populated? The pre-compiler generated code doesn't populate it anywhere. I've searched online, but the only hits I get are copies of code from people asking for help w/ problems. As for documentation, I haven't found any that help. I've searched both IBM and Oracle sites. Nada e niente. I copied the code below, but it's all generated by the pre-compiler, and the original is very basic - initialize the necessary fields and do a SELECT to return 1 row. Can anybody help? Regards Tom good value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 9001000a0059bf0 populated sqparc w/ sqharc - 9001000a0059bf0 bad value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 2020202020202020 populated sqparc w/ sqharc - 2020202020202020 Here's the original code, the generated code is below -- * * * * *init(); * * * * *sprintf(tmpSeqno, "%06d", numSeqno); * * * * *strncpy(tmpConnectionid, retransmissionrequestStruct.cFromConnectionID, sizeof(retransmissionrequestStruct.cFromConnection ID)); * * *string stringCmd("SELECT NVL(OUT_EVENT_ID, 0),NVL(TO_CHAR(BUS_DATE,'DD-MON-YYYY'),' '),NVL(TO_CHAR(TIME_ON_OUTEVENT,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(TIME_OFF_OUTEVENT ,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(AS_IS_ID, 0),NVL(TO_CHAR(T1_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T1_5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T2_TIME,'DD-MON- YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T3_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T4_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL( TO_CHAR(T6_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(MESSAGE_ID,' '),NVL(MESSAGE_TYPE,' '),NVL(OUT_SEQ_NO,' '),NVL(OUT_VERSION_NO,' '),NVL(SUBSCRIBER_ID,' '),NVL(OUT_CONNECTION_ID,' '),NVL(OUT_ACCOUNT_ID,' '),NVL(STATUS_IND,' '),NVL(TRAILING_OUT_MSG_DATA,' '),NVL(REJECT_CODE,' ')"); * * * * *stringCmd.append(whereClause1); * * * * *stringCmd.append(tmpSeqno); * * * * *stringCmd.append(whereClause2); * * * * *stringCmd.append(tmpConnectionid); * * * * *stringCmd.append(whereClause3); * * * * stringCmd.copy(cmd,stringCmd.size()); * * * * * * * * * EXEC SQL EXECUTE * * * * * * * * * * * * BEGIN * * * * * * * * * * * * *EXECUTE IMMEDIATE :cmd * * * * * * * *INTO :sqliOutEventKey, * * * * * * * * * * *:sqlcBusinessDate, * * * * * * * * * * * * * :sqlcTimeOnOutEvent, * * * * * * * * * * * * * :sqlcTimeOffOutEvent, * * * * * * * * * * * * * :sqliAsIsKey, * * * * * * * * * * * * * *:sqlcT1, * * * * * * * * * * * * * *:sqlcT1_5, * * * * * * * * * * * * * *:sqlcT2, * * * * * * * * * * * * * *:sqlcT3, * * * * * * * * * * * * * *:sqlcT4, * * * * * * * * * * * * * *:sqlcT5, * * * * * * * * * * * * * *:sqlcT6, * * * * * * * * * * * * * *:sqlcMsgID, * * * * * * * * * * * * * *:sqlcMsgType, * * * * * * * * * * * * * *:sqlcMsgSeqno, * * * * * * * * * * * * * *:sqlcVersion, * * * * * * * * * * * * * *:sqlcSubscriberID, * * * * * * * * * * * * * *:sqlcConnectionID, * * * * * * * * * * * * * *:sqlcAccountID, * * * * * * * * * * * * * *:sqlcStatus, * * * * * * * * * * * * * *:sqlcOutTrailingMsgData, * * * * * * * * * * * * * *:sqlcErrorCode; * * * * * * * * * * * * END; * * * * * * * * *END-EXEC; Here's the generated code -- * *struct sqlexd sqlstm; * *sqlstm.sqlvsn = 12; * *sqlstm.arrsiz = 23; * *sqlstm.sqladtp = &sqladt; * *sqlstm.sqltdsp = &sqltds; * *sqlstm.stmt = "begin EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey , :sqlc\ BusinessDate , :sqlcTimeOnOutEvent , :sqlcTimeOffOutEvent , :sqliAsIsKey ,:sq \ lcT1 , :sqlcT1_5 , :sqlcT2 , :sqlcT3 , :sqlcT4 , :sqlcT5 , :sqlcT6 , :sqlcMsgI \ D , :sqlcMsgType , :sqlcMsgSeqno , :sqlcVersion , :sqlcSubscriberID , :sqlcCon \ nectionID , :sqlcAccountID , :sqlcStatus , :sqlcOutTrailingMsgData , :sqlcErro \ rCode ; END ;"; * *sqlstm.iters = (unsigned int *)1; * *sqlstm.offset = (unsigned int *)5; * *sqlstm.cud = sqlcud0; * *sqlstm.sqlest = (unsigned char **)&sqlca; * *sqlstm.sqlety = (unsigned short)256; * *sqlstm.occurs = (unsigned int *)0; * *sqlstm.sqhstv[0] = (unsigned char **)cmd; * *sqlstm.sqhstl[0] = (unsigned long )4096; * *sqlstm.sqhsts[0] = ( * * * * int *)0; * *sqlstm.sqindv[0] = ( * * * * short *)0; * *sqlstm.sqinds[0] = ( * * * * int *)0; * *sqlstm.sqharm[0] = (unsigned long )0; * *sqlstm.sqadto[0] = (unsigned short )0; * *sqlstm.sqtdso[0] = (unsigned short )0; * *sqlstm.sqhstv[1] = (unsigned char **)&sqliOutEventKey; * *sqlstm.sqhstl[1] = (unsigned long )sizeof(long); * *sqlstm.sqhsts[1] = ( * * * * int *)0; * *sqlstm.sqindv[1] = ( * * * * short *)0; * *sqlstm.sqinds[1] = ( * * * * int *)0; * *sqlstm.sqharm[1] = (unsigned long )0; * *sqlstm.sqadto[1] = (unsigned short )0; * *sqlstm.sqtdso[1] = (unsigned short )0; * *sqlstm.sqhstv[2] = (unsigned char **)sqlcBusinessDate; * *sqlstm.sqhstl[2] = (unsigned long )32; * *sqlstm.sqhsts[2] = ( * * * * int *)0; * *sqlstm.sqindv[2] = ( * * * * short *)0; * *sqlstm.sqinds[2] = ( * * * * int *)0; * *sqlstm.sqharm[2] = (unsigned long )0; * *sqlstm.sqadto[2] = (unsigned short )0; * *sqlstm.sqtdso[2] = (unsigned short )0; * *sqlstm.sqhstv[3] = (unsigned char **)sqlcTimeOnOutEvent; * *sqlstm.sqhstl[3] = (unsigned long )32; * *sqlstm.sqhsts[3] = ( * * * * int *)0; * *sqlstm.sqindv[3] = ( * * * * short *)0; * *sqlstm.sqinds[3] = ( * * * * int *)0; * *sqlstm.sqharm[3] = (unsigned long )0; * *sqlstm.sqadto[3] = (unsigned short )0; * *sqlstm.sqtdso[3] = (unsigned short )0; * *sqlstm.sqhstv[4] = (unsigned char **)sqlcTimeOffOutEvent; * *sqlstm.sqhstl[4] = (unsigned long )32; * *sqlstm.sqhsts[4] = ( * * * * int *)0; * *sqlstm.sqindv[4] = ( * * * * short *)0; * *sqlstm.sqinds[4] = ( * * * * int *)0; * *sqlstm.sqharm[4] = (unsigned long )0; * *sqlstm.sqadto[4] = (unsigned short )0; * *sqlstm.sqtdso[4] = (unsigned short )0; * *sqlstm.sqhstv[5] = (unsigned char **)&sqliAsIsKey; * *sqlstm.sqhstl[5] = (unsigned long )sizeof(long); * *sqlstm.sqhsts[5] = ( * * * * int *)0; * *sqlstm.sqindv[5] = ( * * * * short *)0; * *sqlstm.sqinds[5] = ( * * * * int *)0; * *sqlstm.sqharm[5] = (unsigned long )0; * *sqlstm.sqadto[5] = (unsigned short )0; * *sqlstm.sqtdso[5] = (unsigned short )0; * *sqlstm.sqhstv[6] = (unsigned char **)sqlcT1; * *sqlstm.sqhstl[6] = (unsigned long )32; * *sqlstm.sqhsts[6] = ( * * * * int *)0; * *sqlstm.sqindv[6] = ( * * * * short *)0; * *sqlstm.sqinds[6] = ( * * * * int *)0; * *sqlstm.sqharm[6] = (unsigned long )0; * *sqlstm.sqadto[6] = (unsigned short )0; * *sqlstm.sqtdso[6] = (unsigned short )0; * *sqlstm.sqhstv[7] = (unsigned char **)sqlcT1_5; * *sqlstm.sqhstl[7] = (unsigned long )32; * *sqlstm.sqhsts[7] = ( * * * * int *)0; * *sqlstm.sqindv[7] = ( * * * * short *)0; * *sqlstm.sqinds[7] = ( * * * * int *)0; * *sqlstm.sqharm[7] = (unsigned long )0; * *sqlstm.sqadto[7] = (unsigned short )0; * *sqlstm.sqtdso[7] = (unsigned short )0; * *sqlstm.sqhstv[8] = (unsigned char **)sqlcT2; * *sqlstm.sqhstl[8] = (unsigned long )32; * *sqlstm.sqhsts[8] = ( * * * * int *)0; * *sqlstm.sqindv[8] = ( * * * * short *)0; * *sqlstm.sqinds[8] = ( * * * * int *)0; * *sqlstm.sqharm[8] = (unsigned long )0; * *sqlstm.sqadto[8] = (unsigned short )0; * *sqlstm.sqtdso[8] = (unsigned short )0; * *sqlstm.sqhstv[9] = (unsigned char **)sqlcT3; * *sqlstm.sqhstl[9] = (unsigned long )32; * *sqlstm.sqhsts[9] = ( * * * * int *)0; * *sqlstm.sqindv[9] = ( * * * * short *)0; * *sqlstm.sqinds[9] = ( * * * * int *)0; * *sqlstm.sqharm[9] = (unsigned long )0; * *sqlstm.sqadto[9] = (unsigned short )0; * *sqlstm.sqtdso[9] = (unsigned short )0; * *sqlstm.sqhstv[10] = (unsigned char **)sqlcT4; * *sqlstm.sqhstl[10] = (unsigned long )32; * *sqlstm.sqhsts[10] = ( * * * * int *)0; * *sqlstm.sqindv[10] = ( * * * * short *)0; * *sqlstm.sqinds[10] = ( * * * * int *)0; * *sqlstm.sqharm[10] = (unsigned long )0; * *sqlstm.sqadto[10] = (unsigned short )0; * *sqlstm.sqtdso[10] = (unsigned short )0; * *sqlstm.sqhstv[11] = (unsigned char **)sqlcT5; * *sqlstm.sqhstl[11] = (unsigned long )32; * *sqlstm.sqhsts[11] = ( * * * * int *)0; * *sqlstm.sqindv[11] = ( * * * * short *)0; * *sqlstm.sqinds[11] = ( * * * * int *)0; * *sqlstm.sqharm[11] = (unsigned long )0; * *sqlstm.sqadto[11] = (unsigned short )0; * *sqlstm.sqtdso[11] = (unsigned short )0; * *sqlstm.sqhstv[12] = (unsigned char **)sqlcT6; * *sqlstm.sqhstl[12] = (unsigned long )32; * *sqlstm.sqhsts[12] = ( * * * * int *)0; * *sqlstm.sqindv[12] = ( * * * * short *)0; * *sqlstm.sqinds[12] = ( * * * * int *)0; * *sqlstm.sqharm[12] = (unsigned long )0; * *sqlstm.sqadto[12] = (unsigned short )0; * *sqlstm.sqtdso[12] = (unsigned short )0; * *sqlstm.sqhstv[13] = (unsigned char **)sqlcMsgID; * *sqlstm.sqhstl[13] = (unsigned long )15; * *sqlstm.sqhsts[13] = ( * * * * int *)0; * *sqlstm.sqindv[13] = ( * * * * short *)0; * *sqlstm.sqinds[13] = ( * * * * int *)0; * *sqlstm.sqharm[13] = (unsigned long )0; * *sqlstm.sqadto[13] = (unsigned short )0; * *sqlstm.sqtdso[13] = (unsigned short )0; * *sqlstm.sqhstv[14] = (unsigned char **)sqlcMsgType; * *sqlstm.sqhstl[14] = (unsigned long )2; * *sqlstm.sqhsts[14] = ( * * * * int *)0; * *sqlstm.sqindv[14] = ( * * * * short *)0; * *sqlstm.sqinds[14] = ( * * * * int *)0; * *sqlstm.sqharm[14] = (unsigned long )0; * *sqlstm.sqadto[14] = (unsigned short )0; * *sqlstm.sqtdso[14] = (unsigned short )0; * *sqlstm.sqhstv[15] = (unsigned char **)sqlcMsgSeqno; * *sqlstm.sqhstl[15] = (unsigned long )6; * *sqlstm.sqhsts[15] = ( * * * * int *)0; * *sqlstm.sqindv[15] = ( * * * * short *)0; * *sqlstm.sqinds[15] = ( * * * * int *)0; * *sqlstm.sqharm[15] = (unsigned long )0; * *sqlstm.sqadto[15] = (unsigned short )0; * *sqlstm.sqtdso[15] = (unsigned short )0; * *sqlstm.sqhstv[16] = (unsigned char **)sqlcVersion; * *sqlstm.sqhstl[16] = (unsigned long )3; * *sqlstm.sqhsts[16] = ( * * * * int *)0; * *sqlstm.sqindv[16] = ( * * * * short *)0; * *sqlstm.sqinds[16] = ( * * * * int *)0; * *sqlstm.sqharm[16] = (unsigned long )0; * *sqlstm.sqadto[16] = (unsigned short )0; * *sqlstm.sqtdso[16] = (unsigned short )0; * *sqlstm.sqhstv[17] = (unsigned char **)sqlcSubscriberID; * *sqlstm.sqhstl[17] = (unsigned long )4; * *sqlstm.sqhsts[17] = ( * * * * int *)0; * *sqlstm.sqindv[17] = ( * * * * short *)0; * *sqlstm.sqinds[17] = ( * * * * int *)0; * *sqlstm.sqharm[17] = (unsigned long )0; * *sqlstm.sqadto[17] = (unsigned short )0; * *sqlstm.sqtdso[17] = (unsigned short )0; * *sqlstm.sqhstv[18] = (unsigned char **)sqlcConnectionID; * *sqlstm.sqhstl[18] = (unsigned long )4; * *sqlstm.sqhsts[18] = ( * * * * int *)0; * *sqlstm.sqindv[18] = ( * * * * short *)0; * *sqlstm.sqinds[18] = ( * * * * int *)0; * *sqlstm.sqharm[18] = (unsigned long )0; * *sqlstm.sqadto[18] = (unsigned short )0; * *sqlstm.sqtdso[18] = (unsigned short )0; * *sqlstm.sqhstv[19] = (unsigned char **)sqlcAccountID; * *sqlstm.sqhstl[19] = (unsigned long )4; * *sqlstm.sqhsts[19] = ( * * * * int *)0; * *sqlstm.sqindv[19] = ( * * * * short *)0; * *sqlstm.sqinds[19] = ( * * * * int *)0; * *sqlstm.sqharm[19] = (unsigned long )0; * *sqlstm.sqadto[19] = (unsigned short )0; * *sqlstm.sqtdso[19] = (unsigned short )0; * *sqlstm.sqhstv[20] = (unsigned char **)sqlcStatus; * *sqlstm.sqhstl[20] = (unsigned long )1; * *sqlstm.sqhsts[20] = ( * * * * int *)0; * *sqlstm.sqindv[20] = ( * * * * short *)0; * *sqlstm.sqinds[20] = ( * * * * int *)0; * *sqlstm.sqharm[20] = (unsigned long )0; * *sqlstm.sqadto[20] = (unsigned short )0; * *sqlstm.sqtdso[20] = (unsigned short )0; * *sqlstm.sqhstv[21] = (unsigned char **)sqlcOutTrailingMsgData; * *sqlstm.sqhstl[21] = (unsigned long )256; * *sqlstm.sqhsts[21] = ( * * * * int *)0; * *sqlstm.sqindv[21] = ( * * * * short *)0; * *sqlstm.sqinds[21] = ( * * * * int *)0; * *sqlstm.sqharm[21] = (unsigned long )0; * *sqlstm.sqadto[21] = (unsigned short )0; * *sqlstm.sqtdso[21] = (unsigned short )0; * *sqlstm.sqhstv[22] = (unsigned char **)sqlcErrorCode; * *sqlstm.sqhstl[22] = (unsigned long )4; * *sqlstm.sqhsts[22] = ( * * * * int *)0; * *sqlstm.sqindv[22] = ( * * * * short *)0; * *sqlstm.sqinds[22] = ( * * * * int *)0; * *sqlstm.sqharm[22] = (unsigned long )0; * *sqlstm.sqadto[22] = (unsigned short )0; * *sqlstm.sqtdso[22] = (unsigned short )0; * *sqlstm.sqphsv = sqlstm.sqhstv; * *sqlstm.sqphsl = sqlstm.sqhstl; * *sqlstm.sqphss = sqlstm.sqhsts; * *sqlstm.sqpind = sqlstm.sqindv; * *sqlstm.sqpins = sqlstm.sqinds; * *sqlstm.sqparm = sqlstm.sqharm; * *sqlstm.sqparc = sqlstm.sqharc; * *sqlstm.sqpadto = sqlstm.sqadto; * *sqlstm.sqptdso = sqlstm.sqtdso; * *sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); |
#6
| |||
| |||
|
|
On Jan 31, 12:20 pm, 44d... (AT) gmail (DOT) com wrote: This is generated by a Pro*C compiler running on an AIX box. It usually contains the proper data, but every once in a while, and only on 2 certain record types, it gets populated w/ blanks. If I process those record types separately, then there's no problem w/ any of the record types (there are 7 of them for the record). So, what is sqharc, and how does it get populated? The pre-compiler generated code doesn't populate it anywhere. I've searched online, but the only hits I get are copies of code from people asking for help w/ problems. As for documentation, I haven't found any that help. I've searched both IBM and Oracle sites. Nada e niente. I copied the code below, but it's all generated by the pre-compiler, and the original is very basic - initialize the necessary fields and do a SELECT to return 1 row. Can anybody help? Regards Tom good value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 9001000a0059bf0 populated sqparc w/ sqharc - 9001000a0059bf0 bad value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 2020202020202020 populated sqparc w/ sqharc - 2020202020202020 Here's the original code, the generated code is below -- init(); sprintf(tmpSeqno, "%06d", numSeqno); strncpy(tmpConnectionid, retransmissionrequestStruct.cFromConnectionID, sizeof(retransmissionrequestStruct.cFromConnection ID)); string stringCmd("SELECT NVL(OUT_EVENT_ID, 0),NVL(TO_CHAR(BUS_DATE,'DD-MON-YYYY'),' '),NVL(TO_CHAR(TIME_ON_OUTEVENT,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(TIME_OFF_OUTEVENT ,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(AS_IS_ID, 0),NVL(TO_CHAR(T1_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T1_5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T2_TIME,'DD-MON- YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T3_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T4_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL( TO_CHAR(T6_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(MESSAGE_ID,' '),NVL(MESSAGE_TYPE,' '),NVL(OUT_SEQ_NO,' '),NVL(OUT_VERSION_NO,' '),NVL(SUBSCRIBER_ID,' '),NVL(OUT_CONNECTION_ID,' '),NVL(OUT_ACCOUNT_ID,' '),NVL(STATUS_IND,' '),NVL(TRAILING_OUT_MSG_DATA,' '),NVL(REJECT_CODE,' ')"); stringCmd.append(whereClause1); stringCmd.append(tmpSeqno); stringCmd.append(whereClause2); stringCmd.append(tmpConnectionid); stringCmd.append(whereClause3); stringCmd.copy(cmd,stringCmd.size()); EXEC SQL EXECUTE BEGIN EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey, :sqlcBusinessDate, :sqlcTimeOnOutEvent, :sqlcTimeOffOutEvent, :sqliAsIsKey, :sqlcT1, :sqlcT1_5, :sqlcT2, :sqlcT3, :sqlcT4, :sqlcT5, :sqlcT6, :sqlcMsgID, :sqlcMsgType, :sqlcMsgSeqno, :sqlcVersion, :sqlcSubscriberID, :sqlcConnectionID, :sqlcAccountID, :sqlcStatus, :sqlcOutTrailingMsgData, :sqlcErrorCode; END; END-EXEC; Here's the generated code -- struct sqlexd sqlstm; sqlstm.sqlvsn = 12; sqlstm.arrsiz = 23; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "begin EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey , :sqlc\ BusinessDate , :sqlcTimeOnOutEvent , :sqlcTimeOffOutEvent , :sqliAsIsKey , :sq \ lcT1 , :sqlcT1_5 , :sqlcT2 , :sqlcT3 , :sqlcT4 , :sqlcT5 , :sqlcT6 , :sqlcMsgI \ D , :sqlcMsgType , :sqlcMsgSeqno , :sqlcVersion , :sqlcSubscriberID , :sqlcCon \ nectionID , :sqlcAccountID , :sqlcStatus , :sqlcOutTrailingMsgData , :sqlcErro \ rCode ; END ;"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )5; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = (unsigned char *)cmd; sqlstm.sqhstl[0] = (unsigned long )4096; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( short *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned long )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqhstv[1] = (unsigned char *)&sqliOutEventKey; sqlstm.sqhstl[1] = (unsigned long )sizeof(long); sqlstm.sqhsts[1] = ( int )0; sqlstm.sqindv[1] = ( short *)0; sqlstm.sqinds[1] = ( int )0; sqlstm.sqharm[1] = (unsigned long )0; sqlstm.sqadto[1] = (unsigned short )0; sqlstm.sqtdso[1] = (unsigned short )0; sqlstm.sqhstv[2] = (unsigned char *)sqlcBusinessDate; sqlstm.sqhstl[2] = (unsigned long )32; sqlstm.sqhsts[2] = ( int )0; sqlstm.sqindv[2] = ( short *)0; sqlstm.sqinds[2] = ( int )0; sqlstm.sqharm[2] = (unsigned long )0; sqlstm.sqadto[2] = (unsigned short )0; sqlstm.sqtdso[2] = (unsigned short )0; sqlstm.sqhstv[3] = (unsigned char *)sqlcTimeOnOutEvent; sqlstm.sqhstl[3] = (unsigned long )32; sqlstm.sqhsts[3] = ( int )0; sqlstm.sqindv[3] = ( short *)0; sqlstm.sqinds[3] = ( int )0; sqlstm.sqharm[3] = (unsigned long )0; sqlstm.sqadto[3] = (unsigned short )0; sqlstm.sqtdso[3] = (unsigned short )0; sqlstm.sqhstv[4] = (unsigned char *)sqlcTimeOffOutEvent; sqlstm.sqhstl[4] = (unsigned long )32; sqlstm.sqhsts[4] = ( int )0; sqlstm.sqindv[4] = ( short *)0; sqlstm.sqinds[4] = ( int )0; sqlstm.sqharm[4] = (unsigned long )0; sqlstm.sqadto[4] = (unsigned short )0; sqlstm.sqtdso[4] = (unsigned short )0; sqlstm.sqhstv[5] = (unsigned char *)&sqliAsIsKey; sqlstm.sqhstl[5] = (unsigned long )sizeof(long); sqlstm.sqhsts[5] = ( int )0; sqlstm.sqindv[5] = ( short *)0; sqlstm.sqinds[5] = ( int )0; sqlstm.sqharm[5] = (unsigned long )0; sqlstm.sqadto[5] = (unsigned short )0; sqlstm.sqtdso[5] = (unsigned short )0; sqlstm.sqhstv[6] = (unsigned char *)sqlcT1; sqlstm.sqhstl[6] = (unsigned long )32; sqlstm.sqhsts[6] = ( int )0; sqlstm.sqindv[6] = ( short *)0; sqlstm.sqinds[6] = ( int )0; sqlstm.sqharm[6] = (unsigned long )0; sqlstm.sqadto[6] = (unsigned short )0; sqlstm.sqtdso[6] = (unsigned short )0; sqlstm.sqhstv[7] = (unsigned char *)sqlcT1_5; sqlstm.sqhstl[7] = (unsigned long )32; sqlstm.sqhsts[7] = ( int )0; sqlstm.sqindv[7] = ( short *)0; sqlstm.sqinds[7] = ( int )0; sqlstm.sqharm[7] = (unsigned long )0; sqlstm.sqadto[7] = (unsigned short )0; sqlstm.sqtdso[7] = (unsigned short )0; sqlstm.sqhstv[8] = (unsigned char *)sqlcT2; sqlstm.sqhstl[8] = (unsigned long )32; sqlstm.sqhsts[8] = ( int )0; sqlstm.sqindv[8] = ( short *)0; sqlstm.sqinds[8] = ( int )0; sqlstm.sqharm[8] = (unsigned long )0; sqlstm.sqadto[8] = (unsigned short )0; sqlstm.sqtdso[8] = (unsigned short )0; sqlstm.sqhstv[9] = (unsigned char *)sqlcT3; sqlstm.sqhstl[9] = (unsigned long )32; sqlstm.sqhsts[9] = ( int )0; sqlstm.sqindv[9] = ( short *)0; sqlstm.sqinds[9] = ( int )0; sqlstm.sqharm[9] = (unsigned long )0; sqlstm.sqadto[9] = (unsigned short )0; sqlstm.sqtdso[9] = (unsigned short )0; sqlstm.sqhstv[10] = (unsigned char *)sqlcT4; sqlstm.sqhstl[10] = (unsigned long )32; sqlstm.sqhsts[10] = ( int )0; sqlstm.sqindv[10] = ( short *)0; sqlstm.sqinds[10] = ( int )0; sqlstm.sqharm[10] = (unsigned long )0; sqlstm.sqadto[10] = (unsigned short )0; sqlstm.sqtdso[10] = (unsigned short )0; sqlstm.sqhstv[11] = (unsigned char *)sqlcT5; sqlstm.sqhstl[11] = (unsigned long )32; sqlstm.sqhsts[11] = ( int )0; sqlstm.sqindv[11] = ( short *)0; sqlstm.sqinds[11] = ( int )0; sqlstm.sqharm[11] = (unsigned long )0; sqlstm.sqadto[11] = (unsigned short )0; sqlstm.sqtdso[11] = (unsigned short )0; sqlstm.sqhstv[12] = (unsigned char *)sqlcT6; sqlstm.sqhstl[12] = (unsigned long )32; sqlstm.sqhsts[12] = ( int )0; sqlstm.sqindv[12] = ( short *)0; sqlstm.sqinds[12] = ( int )0; sqlstm.sqharm[12] = (unsigned long )0; sqlstm.sqadto[12] = (unsigned short )0; sqlstm.sqtdso[12] = (unsigned short )0; sqlstm.sqhstv[13] = (unsigned char *)sqlcMsgID; sqlstm.sqhstl[13] = (unsigned long )15; sqlstm.sqhsts[13] = ( int )0; sqlstm.sqindv[13] = ( short *)0; sqlstm.sqinds[13] = ( int )0; sqlstm.sqharm[13] = (unsigned long )0; sqlstm.sqadto[13] = (unsigned short )0; sqlstm.sqtdso[13] = (unsigned short )0; sqlstm.sqhstv[14] = (unsigned char *)sqlcMsgType; sqlstm.sqhstl[14] = (unsigned long )2; sqlstm.sqhsts[14] = ( int )0; sqlstm.sqindv[14] = ( short *)0; sqlstm.sqinds[14] = ( int )0; sqlstm.sqharm[14] = (unsigned long )0; sqlstm.sqadto[14] = (unsigned short )0; sqlstm.sqtdso[14] = (unsigned short )0; sqlstm.sqhstv[15] = (unsigned char *)sqlcMsgSeqno; sqlstm.sqhstl[15] = (unsigned long )6; sqlstm.sqhsts[15] = ( int )0; sqlstm.sqindv[15] = ( short *)0; sqlstm.sqinds[15] = ( int )0; sqlstm.sqharm[15] = (unsigned long )0; sqlstm.sqadto[15] = (unsigned short )0; sqlstm.sqtdso[15] = (unsigned short )0; sqlstm.sqhstv[16] = (unsigned char *)sqlcVersion; sqlstm.sqhstl[16] = (unsigned long )3; sqlstm.sqhsts[16] = ( int )0; sqlstm.sqindv[16] = ( short *)0; sqlstm.sqinds[16] = ( int )0; sqlstm.sqharm[16] = (unsigned long )0; sqlstm.sqadto[16] = (unsigned short )0; sqlstm.sqtdso[16] = (unsigned short )0; sqlstm.sqhstv[17] = (unsigned char *)sqlcSubscriberID; sqlstm.sqhstl[17] = (unsigned long )4; sqlstm.sqhsts[17] = ( int )0; sqlstm.sqindv[17] = ( short *)0; sqlstm.sqinds[17] = ( int )0; sqlstm.sqharm[17] = (unsigned long )0; sqlstm.sqadto[17] = (unsigned short )0; sqlstm.sqtdso[17] = (unsigned short )0; sqlstm.sqhstv[18] = (unsigned char *)sqlcConnectionID; sqlstm.sqhstl[18] = (unsigned long )4; sqlstm.sqhsts[18] = ( int )0; sqlstm.sqindv[18] = ( short *)0; sqlstm.sqinds[18] = ( int )0; sqlstm.sqharm[18] = (unsigned long )0; sqlstm.sqadto[18] = (unsigned short )0; sqlstm.sqtdso[18] = (unsigned short )0; sqlstm.sqhstv[19] = (unsigned char *)sqlcAccountID; sqlstm.sqhstl[19] = (unsigned long )4; sqlstm.sqhsts[19] = ( int )0; sqlstm.sqindv[19] = ( short *)0; sqlstm.sqinds[19] = ( int )0; sqlstm.sqharm[19] = (unsigned long )0; sqlstm.sqadto[19] = (unsigned short )0; sqlstm.sqtdso[19] = (unsigned short )0; sqlstm.sqhstv[20] = (unsigned char *)sqlcStatus; sqlstm.sqhstl[20] = (unsigned long )1; sqlstm.sqhsts[20] = ( int )0; sqlstm.sqindv[20] = ( short *)0; sqlstm.sqinds[20] = ( int )0; sqlstm.sqharm[20] = (unsigned long )0; sqlstm.sqadto[20] = (unsigned short )0; sqlstm.sqtdso[20] = (unsigned short )0; sqlstm.sqhstv[21] = (unsigned char *)sqlcOutTrailingMsgData; sqlstm.sqhstl[21] = (unsigned long )256; sqlstm.sqhsts[21] = ( int )0; sqlstm.sqindv[21] = ( short *)0; sqlstm.sqinds[21] = ( int )0; sqlstm.sqharm[21] = (unsigned long )0; sqlstm.sqadto[21] = (unsigned short )0; sqlstm.sqtdso[21] = (unsigned short )0; sqlstm.sqhstv[22] = (unsigned char *)sqlcErrorCode; sqlstm.sqhstl[22] = (unsigned long )4; sqlstm.sqhsts[22] = ( int )0; sqlstm.sqindv[22] = ( short *)0; sqlstm.sqinds[22] = ( int )0; sqlstm.sqharm[22] = (unsigned long )0; sqlstm.sqadto[22] = (unsigned short )0; sqlstm.sqtdso[22] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); I did not read the code carefully because it the gererated code rather than just the original pro*c but normally most problems the developers I have worked with suffer come down to the following things: failure to properly terminate C strings, failure to set and check the length indicator, failure to declare and check null indicators for every nullable column, and failure to handle errors properly. Because you can get the data when you process the failing rows without the other data that implies that you are likely suffering from some type of overflow or data handling condition. HTH -- Mark D Powell -- |
#7
| |||
| |||
|
|
On Jan 31, 12:20 pm, 44d... (AT) gmail (DOT) com wrote: This is generated by a Pro*C compiler running on an AIX box. It usually contains the proper data, but every once in a while, and only on 2 certain record types, it gets populated w/ blanks. If I process those record types separately, then there's no problem w/ any of the record types (there are 7 of them for the record). So, what is sqharc, and how does it get populated? The pre-compiler generated code doesn't populate it anywhere. I've searched online, but the only hits I get are copies of code from people asking for help w/ problems. As for documentation, I haven't found any that help. I've searched both IBM and Oracle sites. Nada e niente. I copied the code below, but it's all generated by the pre-compiler, and the original is very basic - initialize the necessary fields and do a SELECT to return 1 row. Can anybody help? Regards Tom good value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 9001000a0059bf0 populated sqparc w/ sqharc - 9001000a0059bf0 bad value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 2020202020202020 populated sqparc w/ sqharc - 2020202020202020 Here's the original code, the generated code is below -- init(); sprintf(tmpSeqno, "%06d", numSeqno); strncpy(tmpConnectionid, retransmissionrequestStruct.cFromConnectionID, sizeof(retransmissionrequestStruct.cFromConnection ID)); string stringCmd("SELECT NVL(OUT_EVENT_ID, 0),NVL(TO_CHAR(BUS_DATE,'DD-MON-YYYY'),' '),NVL(TO_CHAR(TIME_ON_OUTEVENT,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(TIME_OFF_OUTEVENT ,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(AS_IS_ID, 0),NVL(TO_CHAR(T1_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T1_5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T2_TIME,'DD-MON- YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T3_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T4_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL( TO_CHAR(T6_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(MESSAGE_ID,' '),NVL(MESSAGE_TYPE,' '),NVL(OUT_SEQ_NO,' '),NVL(OUT_VERSION_NO,' '),NVL(SUBSCRIBER_ID,' '),NVL(OUT_CONNECTION_ID,' '),NVL(OUT_ACCOUNT_ID,' '),NVL(STATUS_IND,' '),NVL(TRAILING_OUT_MSG_DATA,' '),NVL(REJECT_CODE,' ')"); stringCmd.append(whereClause1); stringCmd.append(tmpSeqno); stringCmd.append(whereClause2); stringCmd.append(tmpConnectionid); stringCmd.append(whereClause3); stringCmd.copy(cmd,stringCmd.size()); EXEC SQL EXECUTE BEGIN EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey, :sqlcBusinessDate, :sqlcTimeOnOutEvent, :sqlcTimeOffOutEvent, :sqliAsIsKey, :sqlcT1, :sqlcT1_5, :sqlcT2, :sqlcT3, :sqlcT4, :sqlcT5, :sqlcT6, :sqlcMsgID, :sqlcMsgType, :sqlcMsgSeqno, :sqlcVersion, :sqlcSubscriberID, :sqlcConnectionID, :sqlcAccountID, :sqlcStatus, :sqlcOutTrailingMsgData, :sqlcErrorCode; END; END-EXEC; Here's the generated code -- struct sqlexd sqlstm; sqlstm.sqlvsn = 12; sqlstm.arrsiz = 23; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "begin EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey , :sqlc\ BusinessDate , :sqlcTimeOnOutEvent , :sqlcTimeOffOutEvent , :sqliAsIsKey , :sq \ lcT1 , :sqlcT1_5 , :sqlcT2 , :sqlcT3 , :sqlcT4 , :sqlcT5 , :sqlcT6 , :sqlcMsgI \ D , :sqlcMsgType , :sqlcMsgSeqno , :sqlcVersion , :sqlcSubscriberID , :sqlcCon \ nectionID , :sqlcAccountID , :sqlcStatus , :sqlcOutTrailingMsgData , :sqlcErro \ rCode ; END ;"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )5; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = (unsigned char *)cmd; sqlstm.sqhstl[0] = (unsigned long )4096; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( short *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned long )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqhstv[1] = (unsigned char *)&sqliOutEventKey; sqlstm.sqhstl[1] = (unsigned long )sizeof(long); sqlstm.sqhsts[1] = ( int )0; sqlstm.sqindv[1] = ( short *)0; sqlstm.sqinds[1] = ( int )0; sqlstm.sqharm[1] = (unsigned long )0; sqlstm.sqadto[1] = (unsigned short )0; sqlstm.sqtdso[1] = (unsigned short )0; sqlstm.sqhstv[2] = (unsigned char *)sqlcBusinessDate; sqlstm.sqhstl[2] = (unsigned long )32; sqlstm.sqhsts[2] = ( int )0; sqlstm.sqindv[2] = ( short *)0; sqlstm.sqinds[2] = ( int )0; sqlstm.sqharm[2] = (unsigned long )0; sqlstm.sqadto[2] = (unsigned short )0; sqlstm.sqtdso[2] = (unsigned short )0; sqlstm.sqhstv[3] = (unsigned char *)sqlcTimeOnOutEvent; sqlstm.sqhstl[3] = (unsigned long )32; sqlstm.sqhsts[3] = ( int )0; sqlstm.sqindv[3] = ( short *)0; sqlstm.sqinds[3] = ( int )0; sqlstm.sqharm[3] = (unsigned long )0; sqlstm.sqadto[3] = (unsigned short )0; sqlstm.sqtdso[3] = (unsigned short )0; sqlstm.sqhstv[4] = (unsigned char *)sqlcTimeOffOutEvent; sqlstm.sqhstl[4] = (unsigned long )32; sqlstm.sqhsts[4] = ( int )0; sqlstm.sqindv[4] = ( short *)0; sqlstm.sqinds[4] = ( int )0; sqlstm.sqharm[4] = (unsigned long )0; sqlstm.sqadto[4] = (unsigned short )0; sqlstm.sqtdso[4] = (unsigned short )0; sqlstm.sqhstv[5] = (unsigned char *)&sqliAsIsKey; sqlstm.sqhstl[5] = (unsigned long )sizeof(long); sqlstm.sqhsts[5] = ( int )0; sqlstm.sqindv[5] = ( short *)0; sqlstm.sqinds[5] = ( int )0; sqlstm.sqharm[5] = (unsigned long )0; sqlstm.sqadto[5] = (unsigned short )0; sqlstm.sqtdso[5] = (unsigned short )0; sqlstm.sqhstv[6] = (unsigned char *)sqlcT1; sqlstm.sqhstl[6] = (unsigned long )32; sqlstm.sqhsts[6] = ( int )0; sqlstm.sqindv[6] = ( short *)0; sqlstm.sqinds[6] = ( int )0; sqlstm.sqharm[6] = (unsigned long )0; sqlstm.sqadto[6] = (unsigned short )0; sqlstm.sqtdso[6] = (unsigned short )0; sqlstm.sqhstv[7] = (unsigned char *)sqlcT1_5; sqlstm.sqhstl[7] = (unsigned long )32; sqlstm.sqhsts[7] = ( int )0; sqlstm.sqindv[7] = ( short *)0; sqlstm.sqinds[7] = ( int )0; sqlstm.sqharm[7] = (unsigned long )0; sqlstm.sqadto[7] = (unsigned short )0; sqlstm.sqtdso[7] = (unsigned short )0; sqlstm.sqhstv[8] = (unsigned char *)sqlcT2; sqlstm.sqhstl[8] = (unsigned long )32; sqlstm.sqhsts[8] = ( int )0; sqlstm.sqindv[8] = ( short *)0; sqlstm.sqinds[8] = ( int )0; sqlstm.sqharm[8] = (unsigned long )0; sqlstm.sqadto[8] = (unsigned short )0; sqlstm.sqtdso[8] = (unsigned short )0; sqlstm.sqhstv[9] = (unsigned char *)sqlcT3; sqlstm.sqhstl[9] = (unsigned long )32; sqlstm.sqhsts[9] = ( int )0; sqlstm.sqindv[9] = ( short *)0; sqlstm.sqinds[9] = ( int )0; sqlstm.sqharm[9] = (unsigned long )0; sqlstm.sqadto[9] = (unsigned short )0; sqlstm.sqtdso[9] = (unsigned short )0; sqlstm.sqhstv[10] = (unsigned char *)sqlcT4; sqlstm.sqhstl[10] = (unsigned long )32; sqlstm.sqhsts[10] = ( int )0; sqlstm.sqindv[10] = ( short *)0; sqlstm.sqinds[10] = ( int )0; sqlstm.sqharm[10] = (unsigned long )0; sqlstm.sqadto[10] = (unsigned short )0; sqlstm.sqtdso[10] = (unsigned short )0; sqlstm.sqhstv[11] = (unsigned char *)sqlcT5; sqlstm.sqhstl[11] = (unsigned long )32; sqlstm.sqhsts[11] = ( int )0; sqlstm.sqindv[11] = ( short *)0; sqlstm.sqinds[11] = ( int )0; sqlstm.sqharm[11] = (unsigned long )0; sqlstm.sqadto[11] = (unsigned short )0; sqlstm.sqtdso[11] = (unsigned short )0; sqlstm.sqhstv[12] = (unsigned char *)sqlcT6; sqlstm.sqhstl[12] = (unsigned long )32; sqlstm.sqhsts[12] = ( int )0; sqlstm.sqindv[12] = ( short *)0; sqlstm.sqinds[12] = ( int )0; sqlstm.sqharm[12] = (unsigned long )0; sqlstm.sqadto[12] = (unsigned short )0; sqlstm.sqtdso[12] = (unsigned short )0; sqlstm.sqhstv[13] = (unsigned char *)sqlcMsgID; sqlstm.sqhstl[13] = (unsigned long )15; sqlstm.sqhsts[13] = ( int )0; sqlstm.sqindv[13] = ( short *)0; sqlstm.sqinds[13] = ( int )0; sqlstm.sqharm[13] = (unsigned long )0; sqlstm.sqadto[13] = (unsigned short )0; sqlstm.sqtdso[13] = (unsigned short )0; sqlstm.sqhstv[14] = (unsigned char *)sqlcMsgType; sqlstm.sqhstl[14] = (unsigned long )2; sqlstm.sqhsts[14] = ( int )0; sqlstm.sqindv[14] = ( short *)0; sqlstm.sqinds[14] = ( int )0; sqlstm.sqharm[14] = (unsigned long )0; sqlstm.sqadto[14] = (unsigned short )0; sqlstm.sqtdso[14] = (unsigned short )0; sqlstm.sqhstv[15] = (unsigned char *)sqlcMsgSeqno; sqlstm.sqhstl[15] = (unsigned long )6; sqlstm.sqhsts[15] = ( int )0; sqlstm.sqindv[15] = ( short *)0; sqlstm.sqinds[15] = ( int )0; sqlstm.sqharm[15] = (unsigned long )0; sqlstm.sqadto[15] = (unsigned short )0; sqlstm.sqtdso[15] = (unsigned short )0; sqlstm.sqhstv[16] = (unsigned char *)sqlcVersion; sqlstm.sqhstl[16] = (unsigned long )3; sqlstm.sqhsts[16] = ( int )0; sqlstm.sqindv[16] = ( short *)0; sqlstm.sqinds[16] = ( int )0; sqlstm.sqharm[16] = (unsigned long )0; sqlstm.sqadto[16] = (unsigned short )0; sqlstm.sqtdso[16] = (unsigned short )0; sqlstm.sqhstv[17] = (unsigned char *)sqlcSubscriberID; sqlstm.sqhstl[17] = (unsigned long )4; sqlstm.sqhsts[17] = ( int )0; sqlstm.sqindv[17] = ( short *)0; sqlstm.sqinds[17] = ( int )0; sqlstm.sqharm[17] = (unsigned long )0; sqlstm.sqadto[17] = (unsigned short )0; sqlstm.sqtdso[17] = (unsigned short )0; sqlstm.sqhstv[18] = (unsigned char *)sqlcConnectionID; sqlstm.sqhstl[18] = (unsigned long )4; sqlstm.sqhsts[18] = ( int )0; sqlstm.sqindv[18] = ( short *)0; sqlstm.sqinds[18] = ( int )0; sqlstm.sqharm[18] = (unsigned long )0; sqlstm.sqadto[18] = (unsigned short )0; sqlstm.sqtdso[18] = (unsigned short )0; sqlstm.sqhstv[19] = (unsigned char *)sqlcAccountID; sqlstm.sqhstl[19] = (unsigned long )4; sqlstm.sqhsts[19] = ( int )0; sqlstm.sqindv[19] = ( short *)0; sqlstm.sqinds[19] = ( int )0; sqlstm.sqharm[19] = (unsigned long )0; sqlstm.sqadto[19] = (unsigned short )0; sqlstm.sqtdso[19] = (unsigned short )0; sqlstm.sqhstv[20] = (unsigned char *)sqlcStatus; sqlstm.sqhstl[20] = (unsigned long )1; sqlstm.sqhsts[20] = ( int )0; sqlstm.sqindv[20] = ( short *)0; sqlstm.sqinds[20] = ( int )0; sqlstm.sqharm[20] = (unsigned long )0; sqlstm.sqadto[20] = (unsigned short )0; sqlstm.sqtdso[20] = (unsigned short )0; sqlstm.sqhstv[21] = (unsigned char *)sqlcOutTrailingMsgData; sqlstm.sqhstl[21] = (unsigned long )256; sqlstm.sqhsts[21] = ( int )0; sqlstm.sqindv[21] = ( short *)0; sqlstm.sqinds[21] = ( int )0; sqlstm.sqharm[21] = (unsigned long )0; sqlstm.sqadto[21] = (unsigned short )0; sqlstm.sqtdso[21] = (unsigned short )0; sqlstm.sqhstv[22] = (unsigned char *)sqlcErrorCode; sqlstm.sqhstl[22] = (unsigned long )4; sqlstm.sqhsts[22] = ( int )0; sqlstm.sqindv[22] = ( short *)0; sqlstm.sqinds[22] = ( int )0; sqlstm.sqharm[22] = (unsigned long )0; sqlstm.sqadto[22] = (unsigned short )0; sqlstm.sqtdso[22] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); I did not read the code carefully because it the gererated code rather than just the original pro*c but normally most problems the developers I have worked with suffer come down to the following things: failure to properly terminate C strings, failure to set and check the length indicator, failure to declare and check null indicators for every nullable column, and failure to handle errors properly. Because you can get the data when you process the failing rows without the other data that implies that you are likely suffering from some type of overflow or data handling condition. HTH -- Mark D Powell -- |
#8
| |||
| |||
|
|
On Jan 31, 12:20 pm, 44d... (AT) gmail (DOT) com wrote: This is generated by a Pro*C compiler running on an AIX box. It usually contains the proper data, but every once in a while, and only on 2 certain record types, it gets populated w/ blanks. If I process those record types separately, then there's no problem w/ any of the record types (there are 7 of them for the record). So, what is sqharc, and how does it get populated? The pre-compiler generated code doesn't populate it anywhere. I've searched online, but the only hits I get are copies of code from people asking for help w/ problems. As for documentation, I haven't found any that help. I've searched both IBM and Oracle sites. Nada e niente. I copied the code below, but it's all generated by the pre-compiler, and the original is very basic - initialize the necessary fields and do a SELECT to return 1 row. Can anybody help? Regards Tom good value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 9001000a0059bf0 populated sqparc w/ sqharc - 9001000a0059bf0 bad value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 2020202020202020 populated sqparc w/ sqharc - 2020202020202020 Here's the original code, the generated code is below -- init(); sprintf(tmpSeqno, "%06d", numSeqno); strncpy(tmpConnectionid, retransmissionrequestStruct.cFromConnectionID, sizeof(retransmissionrequestStruct.cFromConnection ID)); string stringCmd("SELECT NVL(OUT_EVENT_ID, 0),NVL(TO_CHAR(BUS_DATE,'DD-MON-YYYY'),' '),NVL(TO_CHAR(TIME_ON_OUTEVENT,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(TIME_OFF_OUTEVENT ,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(AS_IS_ID, 0),NVL(TO_CHAR(T1_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T1_5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T2_TIME,'DD-MON- YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T3_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T4_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL( TO_CHAR(T6_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(MESSAGE_ID,' '),NVL(MESSAGE_TYPE,' '),NVL(OUT_SEQ_NO,' '),NVL(OUT_VERSION_NO,' '),NVL(SUBSCRIBER_ID,' '),NVL(OUT_CONNECTION_ID,' '),NVL(OUT_ACCOUNT_ID,' '),NVL(STATUS_IND,' '),NVL(TRAILING_OUT_MSG_DATA,' '),NVL(REJECT_CODE,' ')"); stringCmd.append(whereClause1); stringCmd.append(tmpSeqno); stringCmd.append(whereClause2); stringCmd.append(tmpConnectionid); stringCmd.append(whereClause3); stringCmd.copy(cmd,stringCmd.size()); EXEC SQL EXECUTE BEGIN EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey, :sqlcBusinessDate, :sqlcTimeOnOutEvent, :sqlcTimeOffOutEvent, :sqliAsIsKey, :sqlcT1, :sqlcT1_5, :sqlcT2, :sqlcT3, :sqlcT4, :sqlcT5, :sqlcT6, :sqlcMsgID, :sqlcMsgType, :sqlcMsgSeqno, :sqlcVersion, :sqlcSubscriberID, :sqlcConnectionID, :sqlcAccountID, :sqlcStatus, :sqlcOutTrailingMsgData, :sqlcErrorCode; END; END-EXEC; Here's the generated code -- struct sqlexd sqlstm; sqlstm.sqlvsn = 12; sqlstm.arrsiz = 23; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "begin EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey , :sqlc\ BusinessDate , :sqlcTimeOnOutEvent , :sqlcTimeOffOutEvent , :sqliAsIsKey , :sq \ lcT1 , :sqlcT1_5 , :sqlcT2 , :sqlcT3 , :sqlcT4 , :sqlcT5 , :sqlcT6 , :sqlcMsgI \ D , :sqlcMsgType , :sqlcMsgSeqno , :sqlcVersion , :sqlcSubscriberID , :sqlcCon \ nectionID , :sqlcAccountID , :sqlcStatus , :sqlcOutTrailingMsgData , :sqlcErro \ rCode ; END ;"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )5; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = (unsigned char *)cmd; sqlstm.sqhstl[0] = (unsigned long )4096; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( short *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned long )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqhstv[1] = (unsigned char *)&sqliOutEventKey; sqlstm.sqhstl[1] = (unsigned long )sizeof(long); sqlstm.sqhsts[1] = ( int )0; sqlstm.sqindv[1] = ( short *)0; sqlstm.sqinds[1] = ( int )0; sqlstm.sqharm[1] = (unsigned long )0; sqlstm.sqadto[1] = (unsigned short )0; sqlstm.sqtdso[1] = (unsigned short )0; sqlstm.sqhstv[2] = (unsigned char *)sqlcBusinessDate; sqlstm.sqhstl[2] = (unsigned long )32; sqlstm.sqhsts[2] = ( int )0; sqlstm.sqindv[2] = ( short *)0; sqlstm.sqinds[2] = ( int )0; sqlstm.sqharm[2] = (unsigned long )0; sqlstm.sqadto[2] = (unsigned short )0; sqlstm.sqtdso[2] = (unsigned short )0; sqlstm.sqhstv[3] = (unsigned char *)sqlcTimeOnOutEvent; sqlstm.sqhstl[3] = (unsigned long )32; sqlstm.sqhsts[3] = ( int )0; sqlstm.sqindv[3] = ( short *)0; sqlstm.sqinds[3] = ( int )0; sqlstm.sqharm[3] = (unsigned long )0; sqlstm.sqadto[3] = (unsigned short )0; sqlstm.sqtdso[3] = (unsigned short )0; sqlstm.sqhstv[4] = (unsigned char *)sqlcTimeOffOutEvent; sqlstm.sqhstl[4] = (unsigned long )32; sqlstm.sqhsts[4] = ( int )0; sqlstm.sqindv[4] = ( short *)0; sqlstm.sqinds[4] = ( int )0; sqlstm.sqharm[4] = (unsigned long )0; sqlstm.sqadto[4] = (unsigned short )0; sqlstm.sqtdso[4] = (unsigned short )0; sqlstm.sqhstv[5] = (unsigned char *)&sqliAsIsKey; sqlstm.sqhstl[5] = (unsigned long )sizeof(long); sqlstm.sqhsts[5] = ( int )0; sqlstm.sqindv[5] = ( short *)0; sqlstm.sqinds[5] = ( int )0; sqlstm.sqharm[5] = (unsigned long )0; sqlstm.sqadto[5] = (unsigned short )0; sqlstm.sqtdso[5] = (unsigned short )0; sqlstm.sqhstv[6] = (unsigned char *)sqlcT1; sqlstm.sqhstl[6] = (unsigned long )32; sqlstm.sqhsts[6] = ( int )0; sqlstm.sqindv[6] = ( short *)0; sqlstm.sqinds[6] = ( int )0; sqlstm.sqharm[6] = (unsigned long )0; sqlstm.sqadto[6] = (unsigned short )0; sqlstm.sqtdso[6] = (unsigned short )0; sqlstm.sqhstv[7] = (unsigned char *)sqlcT1_5; sqlstm.sqhstl[7] = (unsigned long )32; sqlstm.sqhsts[7] = ( int )0; sqlstm.sqindv[7] = ( short *)0; sqlstm.sqinds[7] = ( int )0; sqlstm.sqharm[7] = (unsigned long )0; sqlstm.sqadto[7] = (unsigned short )0; sqlstm.sqtdso[7] = (unsigned short )0; sqlstm.sqhstv[8] = (unsigned char *)sqlcT2; sqlstm.sqhstl[8] = (unsigned long )32; sqlstm.sqhsts[8] = ( int )0; sqlstm.sqindv[8] = ( short *)0; sqlstm.sqinds[8] = ( int )0; sqlstm.sqharm[8] = (unsigned long )0; sqlstm.sqadto[8] = (unsigned short )0; sqlstm.sqtdso[8] = (unsigned short )0; sqlstm.sqhstv[9] = (unsigned char *)sqlcT3; sqlstm.sqhstl[9] = (unsigned long )32; sqlstm.sqhsts[9] = ( int )0; sqlstm.sqindv[9] = ( short *)0; sqlstm.sqinds[9] = ( int )0; sqlstm.sqharm[9] = (unsigned long )0; sqlstm.sqadto[9] = (unsigned short )0; sqlstm.sqtdso[9] = (unsigned short )0; sqlstm.sqhstv[10] = (unsigned char *)sqlcT4; sqlstm.sqhstl[10] = (unsigned long )32; sqlstm.sqhsts[10] = ( int )0; sqlstm.sqindv[10] = ( short *)0; sqlstm.sqinds[10] = ( int )0; sqlstm.sqharm[10] = (unsigned long )0; sqlstm.sqadto[10] = (unsigned short )0; sqlstm.sqtdso[10] = (unsigned short )0; sqlstm.sqhstv[11] = (unsigned char *)sqlcT5; sqlstm.sqhstl[11] = (unsigned long )32; sqlstm.sqhsts[11] = ( int )0; sqlstm.sqindv[11] = ( short *)0; sqlstm.sqinds[11] = ( int )0; sqlstm.sqharm[11] = (unsigned long )0; sqlstm.sqadto[11] = (unsigned short )0; sqlstm.sqtdso[11] = (unsigned short )0; sqlstm.sqhstv[12] = (unsigned char *)sqlcT6; sqlstm.sqhstl[12] = (unsigned long )32; sqlstm.sqhsts[12] = ( int )0; sqlstm.sqindv[12] = ( short *)0; sqlstm.sqinds[12] = ( int )0; sqlstm.sqharm[12] = (unsigned long )0; sqlstm.sqadto[12] = (unsigned short )0; sqlstm.sqtdso[12] = (unsigned short )0; sqlstm.sqhstv[13] = (unsigned char *)sqlcMsgID; sqlstm.sqhstl[13] = (unsigned long )15; sqlstm.sqhsts[13] = ( int )0; sqlstm.sqindv[13] = ( short *)0; sqlstm.sqinds[13] = ( int )0; sqlstm.sqharm[13] = (unsigned long )0; sqlstm.sqadto[13] = (unsigned short )0; sqlstm.sqtdso[13] = (unsigned short )0; sqlstm.sqhstv[14] = (unsigned char *)sqlcMsgType; sqlstm.sqhstl[14] = (unsigned long )2; sqlstm.sqhsts[14] = ( int )0; sqlstm.sqindv[14] = ( short *)0; sqlstm.sqinds[14] = ( int )0; sqlstm.sqharm[14] = (unsigned long )0; sqlstm.sqadto[14] = (unsigned short )0; sqlstm.sqtdso[14] = (unsigned short )0; sqlstm.sqhstv[15] = (unsigned char *)sqlcMsgSeqno; sqlstm.sqhstl[15] = (unsigned long )6; sqlstm.sqhsts[15] = ( int )0; sqlstm.sqindv[15] = ( short *)0; sqlstm.sqinds[15] = ( int )0; sqlstm.sqharm[15] = (unsigned long )0; sqlstm.sqadto[15] = (unsigned short )0; sqlstm.sqtdso[15] = (unsigned short )0; sqlstm.sqhstv[16] = (unsigned char *)sqlcVersion; sqlstm.sqhstl[16] = (unsigned long )3; sqlstm.sqhsts[16] = ( int )0; sqlstm.sqindv[16] = ( short *)0; sqlstm.sqinds[16] = ( int )0; sqlstm.sqharm[16] = (unsigned long )0; sqlstm.sqadto[16] = (unsigned short )0; sqlstm.sqtdso[16] = (unsigned short )0; sqlstm.sqhstv[17] = (unsigned char *)sqlcSubscriberID; sqlstm.sqhstl[17] = (unsigned long )4; sqlstm.sqhsts[17] = ( int )0; sqlstm.sqindv[17] = ( short *)0; sqlstm.sqinds[17] = ( int )0; sqlstm.sqharm[17] = (unsigned long )0; sqlstm.sqadto[17] = (unsigned short )0; sqlstm.sqtdso[17] = (unsigned short )0; sqlstm.sqhstv[18] = (unsigned char *)sqlcConnectionID; sqlstm.sqhstl[18] = (unsigned long )4; sqlstm.sqhsts[18] = ( int )0; sqlstm.sqindv[18] = ( short *)0; sqlstm.sqinds[18] = ( int )0; sqlstm.sqharm[18] = (unsigned long )0; sqlstm.sqadto[18] = (unsigned short )0; sqlstm.sqtdso[18] = (unsigned short )0; sqlstm.sqhstv[19] = (unsigned char *)sqlcAccountID; sqlstm.sqhstl[19] = (unsigned long )4; sqlstm.sqhsts[19] = ( int )0; sqlstm.sqindv[19] = ( short *)0; sqlstm.sqinds[19] = ( int )0; sqlstm.sqharm[19] = (unsigned long )0; sqlstm.sqadto[19] = (unsigned short )0; sqlstm.sqtdso[19] = (unsigned short )0; sqlstm.sqhstv[20] = (unsigned char *)sqlcStatus; sqlstm.sqhstl[20] = (unsigned long )1; sqlstm.sqhsts[20] = ( int )0; sqlstm.sqindv[20] = ( short *)0; sqlstm.sqinds[20] = ( int )0; sqlstm.sqharm[20] = (unsigned long )0; sqlstm.sqadto[20] = (unsigned short )0; sqlstm.sqtdso[20] = (unsigned short )0; sqlstm.sqhstv[21] = (unsigned char *)sqlcOutTrailingMsgData; sqlstm.sqhstl[21] = (unsigned long )256; sqlstm.sqhsts[21] = ( int )0; sqlstm.sqindv[21] = ( short *)0; sqlstm.sqinds[21] = ( int )0; sqlstm.sqharm[21] = (unsigned long )0; sqlstm.sqadto[21] = (unsigned short )0; sqlstm.sqtdso[21] = (unsigned short )0; sqlstm.sqhstv[22] = (unsigned char *)sqlcErrorCode; sqlstm.sqhstl[22] = (unsigned long )4; sqlstm.sqhsts[22] = ( int )0; sqlstm.sqindv[22] = ( short *)0; sqlstm.sqinds[22] = ( int )0; sqlstm.sqharm[22] = (unsigned long )0; sqlstm.sqadto[22] = (unsigned short )0; sqlstm.sqtdso[22] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); I did not read the code carefully because it the gererated code rather than just the original pro*c but normally most problems the developers I have worked with suffer come down to the following things: failure to properly terminate C strings, failure to set and check the length indicator, failure to declare and check null indicators for every nullable column, and failure to handle errors properly. Because you can get the data when you process the failing rows without the other data that implies that you are likely suffering from some type of overflow or data handling condition. HTH -- Mark D Powell -- |
#9
| |||
| |||
|
|
On Jan 31, 12:20 pm, 44d... (AT) gmail (DOT) com wrote: This is generated by a Pro*C compiler running on an AIX box. It usually contains the proper data, but every once in a while, and only on 2 certain record types, it gets populated w/ blanks. If I process those record types separately, then there's no problem w/ any of the record types (there are 7 of them for the record). So, what is sqharc, and how does it get populated? The pre-compiler generated code doesn't populate it anywhere. I've searched online, but the only hits I get are copies of code from people asking for help w/ problems. As for documentation, I haven't found any that help. I've searched both IBM and Oracle sites. Nada e niente. I copied the code below, but it's all generated by the pre-compiler, and the original is very basic - initialize the necessary fields and do a SELECT to return 1 row. Can anybody help? Regards Tom good value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 9001000a0059bf0 populated sqparc w/ sqharc - 9001000a0059bf0 bad value -- populated sqpind w/ sqindv - 0 populated sqpins w/ sqinds - 0 populated sqparm w/ sqharm - 0 getting sqharc - 2020202020202020 populated sqparc w/ sqharc - 2020202020202020 Here's the original code, the generated code is below -- init(); sprintf(tmpSeqno, "%06d", numSeqno); strncpy(tmpConnectionid, retransmissionrequestStruct.cFromConnectionID, sizeof(retransmissionrequestStruct.cFromConnection ID)); string stringCmd("SELECT NVL(OUT_EVENT_ID, 0),NVL(TO_CHAR(BUS_DATE,'DD-MON-YYYY'),' '),NVL(TO_CHAR(TIME_ON_OUTEVENT,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(TIME_OFF_OUTEVENT ,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(AS_IS_ID, 0),NVL(TO_CHAR(T1_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T1_5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T2_TIME,'DD-MON- YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T3_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T4_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(TO_CHAR(T5_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL( TO_CHAR(T6_TIME,'DD-MON-YYYY HH24:MI:SS'),' '),NVL(MESSAGE_ID,' '),NVL(MESSAGE_TYPE,' '),NVL(OUT_SEQ_NO,' '),NVL(OUT_VERSION_NO,' '),NVL(SUBSCRIBER_ID,' '),NVL(OUT_CONNECTION_ID,' '),NVL(OUT_ACCOUNT_ID,' '),NVL(STATUS_IND,' '),NVL(TRAILING_OUT_MSG_DATA,' '),NVL(REJECT_CODE,' ')"); stringCmd.append(whereClause1); stringCmd.append(tmpSeqno); stringCmd.append(whereClause2); stringCmd.append(tmpConnectionid); stringCmd.append(whereClause3); stringCmd.copy(cmd,stringCmd.size()); EXEC SQL EXECUTE BEGIN EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey, :sqlcBusinessDate, :sqlcTimeOnOutEvent, :sqlcTimeOffOutEvent, :sqliAsIsKey, :sqlcT1, :sqlcT1_5, :sqlcT2, :sqlcT3, :sqlcT4, :sqlcT5, :sqlcT6, :sqlcMsgID, :sqlcMsgType, :sqlcMsgSeqno, :sqlcVersion, :sqlcSubscriberID, :sqlcConnectionID, :sqlcAccountID, :sqlcStatus, :sqlcOutTrailingMsgData, :sqlcErrorCode; END; END-EXEC; Here's the generated code -- struct sqlexd sqlstm; sqlstm.sqlvsn = 12; sqlstm.arrsiz = 23; sqlstm.sqladtp = &sqladt; sqlstm.sqltdsp = &sqltds; sqlstm.stmt = "begin EXECUTE IMMEDIATE :cmd INTO :sqliOutEventKey , :sqlc\ BusinessDate , :sqlcTimeOnOutEvent , :sqlcTimeOffOutEvent , :sqliAsIsKey , :sq \ lcT1 , :sqlcT1_5 , :sqlcT2 , :sqlcT3 , :sqlcT4 , :sqlcT5 , :sqlcT6 , :sqlcMsgI \ D , :sqlcMsgType , :sqlcMsgSeqno , :sqlcVersion , :sqlcSubscriberID , :sqlcCon \ nectionID , :sqlcAccountID , :sqlcStatus , :sqlcOutTrailingMsgData , :sqlcErro \ rCode ; END ;"; sqlstm.iters = (unsigned int )1; sqlstm.offset = (unsigned int )5; sqlstm.cud = sqlcud0; sqlstm.sqlest = (unsigned char *)&sqlca; sqlstm.sqlety = (unsigned short)256; sqlstm.occurs = (unsigned int )0; sqlstm.sqhstv[0] = (unsigned char *)cmd; sqlstm.sqhstl[0] = (unsigned long )4096; sqlstm.sqhsts[0] = ( int )0; sqlstm.sqindv[0] = ( short *)0; sqlstm.sqinds[0] = ( int )0; sqlstm.sqharm[0] = (unsigned long )0; sqlstm.sqadto[0] = (unsigned short )0; sqlstm.sqtdso[0] = (unsigned short )0; sqlstm.sqhstv[1] = (unsigned char *)&sqliOutEventKey; sqlstm.sqhstl[1] = (unsigned long )sizeof(long); sqlstm.sqhsts[1] = ( int )0; sqlstm.sqindv[1] = ( short *)0; sqlstm.sqinds[1] = ( int )0; sqlstm.sqharm[1] = (unsigned long )0; sqlstm.sqadto[1] = (unsigned short )0; sqlstm.sqtdso[1] = (unsigned short )0; sqlstm.sqhstv[2] = (unsigned char *)sqlcBusinessDate; sqlstm.sqhstl[2] = (unsigned long )32; sqlstm.sqhsts[2] = ( int )0; sqlstm.sqindv[2] = ( short *)0; sqlstm.sqinds[2] = ( int )0; sqlstm.sqharm[2] = (unsigned long )0; sqlstm.sqadto[2] = (unsigned short )0; sqlstm.sqtdso[2] = (unsigned short )0; sqlstm.sqhstv[3] = (unsigned char *)sqlcTimeOnOutEvent; sqlstm.sqhstl[3] = (unsigned long )32; sqlstm.sqhsts[3] = ( int )0; sqlstm.sqindv[3] = ( short *)0; sqlstm.sqinds[3] = ( int )0; sqlstm.sqharm[3] = (unsigned long )0; sqlstm.sqadto[3] = (unsigned short )0; sqlstm.sqtdso[3] = (unsigned short )0; sqlstm.sqhstv[4] = (unsigned char *)sqlcTimeOffOutEvent; sqlstm.sqhstl[4] = (unsigned long )32; sqlstm.sqhsts[4] = ( int )0; sqlstm.sqindv[4] = ( short *)0; sqlstm.sqinds[4] = ( int )0; sqlstm.sqharm[4] = (unsigned long )0; sqlstm.sqadto[4] = (unsigned short )0; sqlstm.sqtdso[4] = (unsigned short )0; sqlstm.sqhstv[5] = (unsigned char *)&sqliAsIsKey; sqlstm.sqhstl[5] = (unsigned long )sizeof(long); sqlstm.sqhsts[5] = ( int )0; sqlstm.sqindv[5] = ( short *)0; sqlstm.sqinds[5] = ( int )0; sqlstm.sqharm[5] = (unsigned long )0; sqlstm.sqadto[5] = (unsigned short )0; sqlstm.sqtdso[5] = (unsigned short )0; sqlstm.sqhstv[6] = (unsigned char *)sqlcT1; sqlstm.sqhstl[6] = (unsigned long )32; sqlstm.sqhsts[6] = ( int )0; sqlstm.sqindv[6] = ( short *)0; sqlstm.sqinds[6] = ( int )0; sqlstm.sqharm[6] = (unsigned long )0; sqlstm.sqadto[6] = (unsigned short )0; sqlstm.sqtdso[6] = (unsigned short )0; sqlstm.sqhstv[7] = (unsigned char *)sqlcT1_5; sqlstm.sqhstl[7] = (unsigned long )32; sqlstm.sqhsts[7] = ( int )0; sqlstm.sqindv[7] = ( short *)0; sqlstm.sqinds[7] = ( int )0; sqlstm.sqharm[7] = (unsigned long )0; sqlstm.sqadto[7] = (unsigned short )0; sqlstm.sqtdso[7] = (unsigned short )0; sqlstm.sqhstv[8] = (unsigned char *)sqlcT2; sqlstm.sqhstl[8] = (unsigned long )32; sqlstm.sqhsts[8] = ( int )0; sqlstm.sqindv[8] = ( short *)0; sqlstm.sqinds[8] = ( int )0; sqlstm.sqharm[8] = (unsigned long )0; sqlstm.sqadto[8] = (unsigned short )0; sqlstm.sqtdso[8] = (unsigned short )0; sqlstm.sqhstv[9] = (unsigned char *)sqlcT3; sqlstm.sqhstl[9] = (unsigned long )32; sqlstm.sqhsts[9] = ( int )0; sqlstm.sqindv[9] = ( short *)0; sqlstm.sqinds[9] = ( int )0; sqlstm.sqharm[9] = (unsigned long )0; sqlstm.sqadto[9] = (unsigned short )0; sqlstm.sqtdso[9] = (unsigned short )0; sqlstm.sqhstv[10] = (unsigned char *)sqlcT4; sqlstm.sqhstl[10] = (unsigned long )32; sqlstm.sqhsts[10] = ( int )0; sqlstm.sqindv[10] = ( short *)0; sqlstm.sqinds[10] = ( int )0; sqlstm.sqharm[10] = (unsigned long )0; sqlstm.sqadto[10] = (unsigned short )0; sqlstm.sqtdso[10] = (unsigned short )0; sqlstm.sqhstv[11] = (unsigned char *)sqlcT5; sqlstm.sqhstl[11] = (unsigned long )32; sqlstm.sqhsts[11] = ( int )0; sqlstm.sqindv[11] = ( short *)0; sqlstm.sqinds[11] = ( int )0; sqlstm.sqharm[11] = (unsigned long )0; sqlstm.sqadto[11] = (unsigned short )0; sqlstm.sqtdso[11] = (unsigned short )0; sqlstm.sqhstv[12] = (unsigned char *)sqlcT6; sqlstm.sqhstl[12] = (unsigned long )32; sqlstm.sqhsts[12] = ( int )0; sqlstm.sqindv[12] = ( short *)0; sqlstm.sqinds[12] = ( int )0; sqlstm.sqharm[12] = (unsigned long )0; sqlstm.sqadto[12] = (unsigned short )0; sqlstm.sqtdso[12] = (unsigned short )0; sqlstm.sqhstv[13] = (unsigned char *)sqlcMsgID; sqlstm.sqhstl[13] = (unsigned long )15; sqlstm.sqhsts[13] = ( int )0; sqlstm.sqindv[13] = ( short *)0; sqlstm.sqinds[13] = ( int )0; sqlstm.sqharm[13] = (unsigned long )0; sqlstm.sqadto[13] = (unsigned short )0; sqlstm.sqtdso[13] = (unsigned short )0; sqlstm.sqhstv[14] = (unsigned char *)sqlcMsgType; sqlstm.sqhstl[14] = (unsigned long )2; sqlstm.sqhsts[14] = ( int )0; sqlstm.sqindv[14] = ( short *)0; sqlstm.sqinds[14] = ( int )0; sqlstm.sqharm[14] = (unsigned long )0; sqlstm.sqadto[14] = (unsigned short )0; sqlstm.sqtdso[14] = (unsigned short )0; sqlstm.sqhstv[15] = (unsigned char *)sqlcMsgSeqno; sqlstm.sqhstl[15] = (unsigned long )6; sqlstm.sqhsts[15] = ( int )0; sqlstm.sqindv[15] = ( short *)0; sqlstm.sqinds[15] = ( int )0; sqlstm.sqharm[15] = (unsigned long )0; sqlstm.sqadto[15] = (unsigned short )0; sqlstm.sqtdso[15] = (unsigned short )0; sqlstm.sqhstv[16] = (unsigned char *)sqlcVersion; sqlstm.sqhstl[16] = (unsigned long )3; sqlstm.sqhsts[16] = ( int )0; sqlstm.sqindv[16] = ( short *)0; sqlstm.sqinds[16] = ( int )0; sqlstm.sqharm[16] = (unsigned long )0; sqlstm.sqadto[16] = (unsigned short )0; sqlstm.sqtdso[16] = (unsigned short )0; sqlstm.sqhstv[17] = (unsigned char *)sqlcSubscriberID; sqlstm.sqhstl[17] = (unsigned long )4; sqlstm.sqhsts[17] = ( int )0; sqlstm.sqindv[17] = ( short *)0; sqlstm.sqinds[17] = ( int )0; sqlstm.sqharm[17] = (unsigned long )0; sqlstm.sqadto[17] = (unsigned short )0; sqlstm.sqtdso[17] = (unsigned short )0; sqlstm.sqhstv[18] = (unsigned char *)sqlcConnectionID; sqlstm.sqhstl[18] = (unsigned long )4; sqlstm.sqhsts[18] = ( int )0; sqlstm.sqindv[18] = ( short *)0; sqlstm.sqinds[18] = ( int )0; sqlstm.sqharm[18] = (unsigned long )0; sqlstm.sqadto[18] = (unsigned short )0; sqlstm.sqtdso[18] = (unsigned short )0; sqlstm.sqhstv[19] = (unsigned char *)sqlcAccountID; sqlstm.sqhstl[19] = (unsigned long )4; sqlstm.sqhsts[19] = ( int )0; sqlstm.sqindv[19] = ( short *)0; sqlstm.sqinds[19] = ( int )0; sqlstm.sqharm[19] = (unsigned long )0; sqlstm.sqadto[19] = (unsigned short )0; sqlstm.sqtdso[19] = (unsigned short )0; sqlstm.sqhstv[20] = (unsigned char *)sqlcStatus; sqlstm.sqhstl[20] = (unsigned long )1; sqlstm.sqhsts[20] = ( int )0; sqlstm.sqindv[20] = ( short *)0; sqlstm.sqinds[20] = ( int )0; sqlstm.sqharm[20] = (unsigned long )0; sqlstm.sqadto[20] = (unsigned short )0; sqlstm.sqtdso[20] = (unsigned short )0; sqlstm.sqhstv[21] = (unsigned char *)sqlcOutTrailingMsgData; sqlstm.sqhstl[21] = (unsigned long )256; sqlstm.sqhsts[21] = ( int )0; sqlstm.sqindv[21] = ( short *)0; sqlstm.sqinds[21] = ( int )0; sqlstm.sqharm[21] = (unsigned long )0; sqlstm.sqadto[21] = (unsigned short )0; sqlstm.sqtdso[21] = (unsigned short )0; sqlstm.sqhstv[22] = (unsigned char *)sqlcErrorCode; sqlstm.sqhstl[22] = (unsigned long )4; sqlstm.sqhsts[22] = ( int )0; sqlstm.sqindv[22] = ( short *)0; sqlstm.sqinds[22] = ( int )0; sqlstm.sqharm[22] = (unsigned long )0; sqlstm.sqadto[22] = (unsigned short )0; sqlstm.sqtdso[22] = (unsigned short )0; sqlstm.sqphsv = sqlstm.sqhstv; sqlstm.sqphsl = sqlstm.sqhstl; sqlstm.sqphss = sqlstm.sqhsts; sqlstm.sqpind = sqlstm.sqindv; sqlstm.sqpins = sqlstm.sqinds; sqlstm.sqparm = sqlstm.sqharm; sqlstm.sqparc = sqlstm.sqharc; sqlstm.sqpadto = sqlstm.sqadto; sqlstm.sqptdso = sqlstm.sqtdso; sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn); I did not read the code carefully because it the gererated code rather than just the original pro*c but normally most problems the developers I have worked with suffer come down to the following things: failure to properly terminate C strings, failure to set and check the length indicator, failure to declare and check null indicators for every nullable column, and failure to handle errors properly. Because you can get the data when you process the failing rows without the other data that implies that you are likely suffering from some type of overflow or data handling condition. HTH -- Mark D Powell -- |
![]() |
| Thread Tools | |
| Display Modes | |
| |