1 /*****************************************************************************
2
3 ExeLst()
4
5 This function executes a less-than-sign (<) command.
6 n< Iterate n times
7
8 *****************************************************************************/
9
10 #include "zport.h" /* define portability identifiers */
11 #include "tecoc.h" /* define general identifiers */
12 #include "defext.h" /* define external global variables */
13 #include "deferr.h" /* define identifiers for error messages */
14
ExeLst()15 DEFAULT ExeLst() /* execute a < command */
16 {
17 DBGFEN(1,"ExeLst",NULL);
18
19 if (++LStTop >= LPS_SIZE) { /* if loop stack is full */
20 ErrMsg(ERR_PDO); /* push-down list overflow */
21 DBGFEX(1,DbgFNm,"FAILURE");
22 return FAILURE;
23 }
24
25 if (EStTop == EStBot) { /* if no numeric argument */
26 NArgmt = INFINITE; /* make it an infinite loop */
27 } else {
28 if (GetNmA() == FAILURE) { /* get numeric argmument */
29 DBGFEX(1,DbgFNm,"FAILURE");
30 return FAILURE;
31 }
32 if (NArgmt <= 0) { /* if null loop */
33 if (FlowEL()== FAILURE) { /* flow to end of loop */
34 DBGFEX(1,DbgFNm,"FAILURE");
35 return FAILURE;
36 }
37 CmdMod = '\0'; /* clear modifiers flags */
38 DBGFEX(1,DbgFNm,"SUCCESS");
39 return SUCCESS;
40 }
41 }
42
43 LStack[LStTop].LIndex = NArgmt; /* store loop index */
44 LStack[LStTop].LAddr = CBfPtr; /* store loop start */
45
46 CmdMod = '\0'; /* clear modifiers flags */
47
48 DBGFEX(1,DbgFNm,"SUCCESS");
49 return SUCCESS;
50 }
51