>CLEAR ALL >PUBLIC pnSeed > >pnSeed = 1 > >SELECT getnumber() as nSeed FROM appkg!one_record_dummy > >PROCEDURE getnumber > LOCAL lnRetVal > > lnRetVal = 10 * pnSeed > pnSeed = pnSeed + 1 > > RETURN lnRetVal >ENDPROC >>
CLOSE TABLES ALL CLEAR PUBLIC pnSeed CREATE CURSOR one_record_dummy (AA I) APPEND BLANK pnSeed = 0 ? "simple value: getnumber1() ... parser call one time" SELECT getnumber1() as nSeed FROM one_record_dummy pnSeed = 0 ? "complex expression: getnumber2()+0 ... parser call two times" SELECT getnumber2()+0 as nSeed FROM one_record_dummy PROCEDURE getnumber1 pnSeed = m.pnSeed + 1 ? "CALL",m.pnSeed RETURN IIF(m.pnSeed=1; ,'12' ; && SQL PARSER EVAL getnumber1's datatype ,'ABC') && DATA EVAL ENDPROC PROCEDURE getnumber2 pnSeed = m.pnSeed + 1 ? "CALL",m.pnSeed RETURN IIF(m.pnSeed=1 , 1 ; && PARSER EVAL getnumber2()+0 , IIF(m.pnSeed=2 , ""; && PARSER EVAL getnumber2() and discard the value !!! BUG , 33)) && DATA EVAL ENDPROC