teacl/src/exelst.c

41 lines
1.4 KiB
C
Raw Permalink Normal View History

/*****************************************************************************
ExeLst()
This function executes a less-than-sign (<) command.
n< Iterate n times
*****************************************************************************/
#include "zport.h" /* define portability identifiers */
#include "tecoc.h" /* define general identifiers */
#include "defext.h" /* define external global variables */
#include "deferr.h" /* define identifiers for error messages */
DEFAULT ExeLst() /* execute a < command */
{
DBGFEN(1,"ExeLst",NULL);
if (++LStTop >= LPS_SIZE) { /* if loop stack is full */
ErrMsg(ERR_PDO); /* push-down list overflow */
DBGFEX(1,DbgFNm,"FAILURE");
return FAILURE;
}
if (EStTop == EStBot) { /* if no numeric argument */
NArgmt = INFINITE; /* make it an infinite loop */
} else {
if (GetNmA() == FAILURE) { /* get numeric argmument */
DBGFEX(1,DbgFNm,"FAILURE");
return FAILURE;
}
if (NArgmt <= 0) { /* if null loop */
if (FlowEL()== FAILURE) { /* flow to end of loop */
DBGFEX(1,DbgFNm,"FAILURE");
return FAILURE;
}
CmdMod = '\0'; /* clear modifiers flags */
DBGFEX(1,DbgFNm,"SUCCESS");
return SUCCESS;
}
}
LStack[LStTop].LIndex = NArgmt; /* store loop index */
LStack[LStTop].LAddr = CBfPtr; /* store loop start */
CmdMod = '\0'; /* clear modifiers flags */
DBGFEX(1,DbgFNm,"SUCCESS");
return SUCCESS;
}