Misunderstanding with JDBCR4
Jevgeni Astanovski <[email protected]>
| Newsgroups | gmane.comp.lang.as400.c |
|---|---|
| Message-ID | <CAJuVQr0X+txGsmZ5RMGstEFzH1TxqbR4XoPCTt=+s38pjux2KA@mail.gmail.com> |
Hi, collegues Having a challenge of accessing external database from my ILE/C program, looked at Scott Klement JDBCR4. As I do not write RPG, had to spend some time porting library header from RPG to C. Not a big job. Generally works fine. However when I tried to see how JDBC_GetCol returns NullInd in case field is empty, ran into a problem. JDBC_GetCol is prototyped so: VAR32767 JDBC_GETCOL(RESHANDLE *, int, char *) ; VAR32767 and RESHANDLE are my defined types and they work fine. I call this function in my program: RESHANDLE rs ; char NullInd ; VAR32767 Field ; Field = JDBC_GETCOL(&rs, 48, &NullInd) ; It returns field value fine, however NullInd is always unchanged - field is empty or not. Run in debugger mode to see what Scott's program does. His function looks so: P JDBC_GetCol B export D JDBC_GetCol PI 32767A varying D rs like(ResultSet) D col 10I 0 value D nullInd 1N options(*nopass:*omit) D result s 32767A varying D str s like(jstring) D null s 1N inz(*OFF) /free jdbc_begin_object_group(5); monitor; str = getColString(rs: col); if (str = *NULL); result = ''; null = *ON; else; result = r(str); endif; on-error; null = *ON; result = ''; endmon; jdbc_end_object_group(); if (%parms >= 3 and %addr(nullInd)<>*NULL); nullInd = Null; endif; return result; /end-free Sorry for the formatting... What my debugging show is that Null variable has a proper value, but is never assigned to nullInd. I added NumParms variable and assigned value of %parms to it. From that I saw that NumParms is -1, however all 3 parameters are passed. Had a look at the manual for %parms. It says the following: "The value returned by %PARMS will be -1 if the system can determine that the operational descriptor was not passed, but in some cases when the system cannot detect this, the value returned by %PARMS may be an incorrect value that is zero or greater." Is there anything I can do about it? Any advise will be highly appreciated... Jevgeni. -- This is the Bare Metal Programming IBM i (AS/400 and iSeries) (C400-L) mailing list To post a message email: C400-L-Zwy7GipZuJhWk0Htik3J/[email protected] To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/c400-l or email: C400-L-request-Zwy7GipZuJhWk0Htik3J/[email protected] Before posting, please take a moment to review the archives at http://archive.midrange.com/c400-l.