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.
As an Amazon Associate we earn from qualifying purchases.