marcusen@oodis01.ARPA (Marcusen) (11/03/88)
I am having a problem getting a replace statement to work in equel/c.
I believe that my syntax and logic are sound for two reasons: one, a
retrieve statement with the exact same conversions, range variable, and where
clause works; second, the replace statement works as is in ingres terminal
monitor mode.
The problem manifests itself by performing the getrow, the writedb's, but
bombs on the IIsyncup. By bombing I mean that it kicks out to the unix
prompt.
We are running: INGRES OSx Release 5.0/04 (pyr.u42/02)
QUESTION
*******************************************
Can anyone help me find a flaw in my logic?
Can anyone identify know problems with IIsyncup as it is expanded by an
ingres equel replace statement?
*******************************************
*******************************************
EQUEL CODE
*******************************************
## activate menuitem "Save":
## {
while (frs_lastrow) {
## getrow delete_auth2 mrt2 frs_lastrow(_flag=flag,
## _mrt2._mpcn=mpcn,_mrt2._qtr0=qtr0,_mrt2._qtr1=qtr1,
## _mrt2._qtr2=qtr2,_mrt2._qtr3=qtr3,_mrt2._qtr4=qtr4)
sprintf(wh_clause3," m.mpcn=\"%s\" and m.current=\"[4567]\" ",_mrt2._mpcn);
switch(_flag[0]){
case 'D':
case 'd':
## retrieve (_mrt._current=ascii(int2(m.current)-4)) where wh_clause3
## replace m(current=ascii(int2(m.current)-4)) where wh_clause3
break;
case 'C':
case 'c':
break;
default:
break;
}
frs_lastrow--;
}
## }
*******************************************
C CODE GENERATED BY INGRES
*******************************************
/* # line 133 "delete_auth.qc" */ /* host code */
sprintf(wh_clause3," m.mpcn=\"%s\" and m.current=\"[4567]\" ",_mrt2._mpcn);
switch(_flag[0]){
case 'D':
case 'd':
/* # line 138 "delete_auth.qc" */ /* retrieve */
{
IIwritedb("retrieve(current=ascii(int2(m.current)-");
IIwritedb("4))where ");
IIwritedb(wh_clause3);
IIretinit((char *)0,0);
if (IIerrtest() != 0) goto IIrtE3;
IIrtB3:
while (IInextget() != 0) {
IIretdom(1,32,0,_mrt._current);
if (IIerrtest() != 0) goto IIrtB3;
} /* IInextget */
IIflush((char *)0,0);
IIrtE3:;
}
/* # line 139 "delete_auth.qc" */ /* replace */
{
IIwritedb("replace m(current=ascii(int2(m.current)");
IIwritedb("-4))where ");
IIwritedb(wh_clause3);
IIsyncup((char *)0,0);
}
/* # line 141 "delete_auth.qc" */ /* host code */
break;
case 'C':
case 'c':
break;
default:
break;
}
frs_lastrow--;
}
}
Please respond to marcusen@oodis01.arpa
THANKS