diff --git a/src/libCom/calc/calcPerform.c b/src/libCom/calc/calcPerform.c index 24b9a1226..33128f974 100644 --- a/src/libCom/calc/calcPerform.c +++ b/src/libCom/calc/calcPerform.c @@ -68,7 +68,10 @@ * .32 12-11-92 mrk Removed include for stdioLib.h * .33 08-04-93 mgb Removed V5/V4 and EPICS_V2 conditionals * .34 05-11-94 jba Added support for CONST_PI, CONST_D2R, and CONST_R2D -> + * .34 08-18-94 jba Must skip over constant when looking for COND_END,COND_ELSE + + $Log% + */ /* This module contains the code for processing the arithmetic @@ -137,6 +140,15 @@ char *post; cond_flag = NOT_SET; pstacktop = &stack[0]; +/* DEBUG print statements +for (i=0;i<184;i++){ +printf ("%d_",post[i]); +if ( post[i] == -1 ) break; +if ( post[i] == 71 ) i=i+8; +} +printf ("*FINISHED*\n"); +*/ + /* set post to postfix expression in calc structure */ top = pstacktop; @@ -246,8 +258,9 @@ char *post; if (*pstacktop == 0.0) { /* skip to matching COND_ELSE */ for (got_if=1; got_if>0 && *(post+1) != END_STACK; ++post) { - if (*(post+1) == COND_IF ) got_if++; - if (*(post+1) == COND_ELSE) got_if--; + if (*(post+1) == CONSTANT ) post+=8; + else if (*(post+1) == COND_IF ) got_if++; + else if (*(post+1) == COND_ELSE) got_if--; } } /* remove condition from stack top */ @@ -258,8 +271,9 @@ char *post; /* result, true condition is on stack so skip false condition */ /* skip to matching COND_END */ for (got_if=1; got_if>0 && *(post+1) != END_STACK; ++post) { - if (*(post+1) == COND_IF ) got_if++; - if (*(post+1) == COND_END) got_if--; + if (*(post+1) == CONSTANT ) post+=8; + else if (*(post+1) == COND_IF ) got_if++; + else if (*(post+1) == COND_END) got_if--; } break; diff --git a/src/libCom/calcPerform.c b/src/libCom/calcPerform.c index 24b9a1226..33128f974 100644 --- a/src/libCom/calcPerform.c +++ b/src/libCom/calcPerform.c @@ -68,7 +68,10 @@ * .32 12-11-92 mrk Removed include for stdioLib.h * .33 08-04-93 mgb Removed V5/V4 and EPICS_V2 conditionals * .34 05-11-94 jba Added support for CONST_PI, CONST_D2R, and CONST_R2D -> + * .34 08-18-94 jba Must skip over constant when looking for COND_END,COND_ELSE + + $Log% + */ /* This module contains the code for processing the arithmetic @@ -137,6 +140,15 @@ char *post; cond_flag = NOT_SET; pstacktop = &stack[0]; +/* DEBUG print statements +for (i=0;i<184;i++){ +printf ("%d_",post[i]); +if ( post[i] == -1 ) break; +if ( post[i] == 71 ) i=i+8; +} +printf ("*FINISHED*\n"); +*/ + /* set post to postfix expression in calc structure */ top = pstacktop; @@ -246,8 +258,9 @@ char *post; if (*pstacktop == 0.0) { /* skip to matching COND_ELSE */ for (got_if=1; got_if>0 && *(post+1) != END_STACK; ++post) { - if (*(post+1) == COND_IF ) got_if++; - if (*(post+1) == COND_ELSE) got_if--; + if (*(post+1) == CONSTANT ) post+=8; + else if (*(post+1) == COND_IF ) got_if++; + else if (*(post+1) == COND_ELSE) got_if--; } } /* remove condition from stack top */ @@ -258,8 +271,9 @@ char *post; /* result, true condition is on stack so skip false condition */ /* skip to matching COND_END */ for (got_if=1; got_if>0 && *(post+1) != END_STACK; ++post) { - if (*(post+1) == COND_IF ) got_if++; - if (*(post+1) == COND_END) got_if--; + if (*(post+1) == CONSTANT ) post+=8; + else if (*(post+1) == COND_IF ) got_if++; + else if (*(post+1) == COND_END) got_if--; } break;