dbTalk Databases Forums  

sqlstm.sqharc What is it? And what does it do? It keeps gettingcorrupted on me.

comp.databases.oracle.misc comp.databases.oracle.misc


Discuss sqlstm.sqharc What is it? And what does it do? It keeps gettingcorrupted on me. in the comp.databases.oracle.misc forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
44dd44@gmail.com
 
Posts: n/a

Default sqlstm.sqharc What is it? And what does it do? It keeps gettingcorrupted on me. - 01-31-2008 , 11:20 AM






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);

Reply With Quote
  #2  
Old   
Mark D Powell
 
Posts: n/a

Default Re: sqlstm.sqharc What is it? And what does it do? It keeps gettingcorrupted on me. - 02-02-2008 , 07:53 PM






On Jan 31, 12:20*pm, 44d... (AT) gmail (DOT) com wrote:
Quote:
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 --



Reply With Quote
  #3  
Old   
Mark D Powell
 
Posts: n/a

Default Re: sqlstm.sqharc What is it? And what does it do? It keeps gettingcorrupted on me. - 02-02-2008 , 07:53 PM



On Jan 31, 12:20*pm, 44d... (AT) gmail (DOT) com wrote:
Quote:
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 --



Reply With Quote
  #4  
Old   
Mark D Powell
 
Posts: n/a

Default Re: sqlstm.sqharc What is it? And what does it do? It keeps gettingcorrupted on me. - 02-02-2008 , 07:53 PM



On Jan 31, 12:20*pm, 44d... (AT) gmail (DOT) com wrote:
Quote:
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 --



Reply With Quote
  #5  
Old   
Mark D Powell
 
Posts: n/a

Default Re: sqlstm.sqharc What is it? And what does it do? It keeps gettingcorrupted on me. - 02-02-2008 , 07:53 PM



On Jan 31, 12:20*pm, 44d... (AT) gmail (DOT) com wrote:
Quote:
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 --



Reply With Quote
  #6  
Old   
44dd44@gmail.com
 
Posts: n/a

Default Re: sqlstm.sqharc What is it? And what does it do? It keeps gettingcorrupted on me. - 02-04-2008 , 10:02 AM



Thanks for your reply, Mark.
So far all the research I've been doing has also pointed me to a
memory error. I've checked my code, and all variables are memset w/
'\0' and sizeof().
I got as far as finding that the sqlstm.sqharc is sometimes either
stepped on or not populated. That's why the question in the title. If
I can find how how it gets populated, then maybe I can find out what's
stepping on it.
Regards
Tom

On Feb 2, 8:53 pm, Mark D Powell <Mark.Pow... (AT) eds (DOT) com> wrote:
Quote:
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 --


Reply With Quote
  #7  
Old   
44dd44@gmail.com
 
Posts: n/a

Default Re: sqlstm.sqharc What is it? And what does it do? It keeps gettingcorrupted on me. - 02-04-2008 , 10:02 AM



Thanks for your reply, Mark.
So far all the research I've been doing has also pointed me to a
memory error. I've checked my code, and all variables are memset w/
'\0' and sizeof().
I got as far as finding that the sqlstm.sqharc is sometimes either
stepped on or not populated. That's why the question in the title. If
I can find how how it gets populated, then maybe I can find out what's
stepping on it.
Regards
Tom

On Feb 2, 8:53 pm, Mark D Powell <Mark.Pow... (AT) eds (DOT) com> wrote:
Quote:
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 --


Reply With Quote
  #8  
Old   
44dd44@gmail.com
 
Posts: n/a

Default Re: sqlstm.sqharc What is it? And what does it do? It keeps gettingcorrupted on me. - 02-04-2008 , 10:02 AM



Thanks for your reply, Mark.
So far all the research I've been doing has also pointed me to a
memory error. I've checked my code, and all variables are memset w/
'\0' and sizeof().
I got as far as finding that the sqlstm.sqharc is sometimes either
stepped on or not populated. That's why the question in the title. If
I can find how how it gets populated, then maybe I can find out what's
stepping on it.
Regards
Tom

On Feb 2, 8:53 pm, Mark D Powell <Mark.Pow... (AT) eds (DOT) com> wrote:
Quote:
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 --


Reply With Quote
  #9  
Old   
44dd44@gmail.com
 
Posts: n/a

Default Re: sqlstm.sqharc What is it? And what does it do? It keeps gettingcorrupted on me. - 02-04-2008 , 10:02 AM



Thanks for your reply, Mark.
So far all the research I've been doing has also pointed me to a
memory error. I've checked my code, and all variables are memset w/
'\0' and sizeof().
I got as far as finding that the sqlstm.sqharc is sometimes either
stepped on or not populated. That's why the question in the title. If
I can find how how it gets populated, then maybe I can find out what's
stepping on it.
Regards
Tom

On Feb 2, 8:53 pm, Mark D Powell <Mark.Pow... (AT) eds (DOT) com> wrote:
Quote:
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 --


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.