Metropoli BBS
VIEWER: execgetr.c MODE: TEXT (ASCII)
/*Copyright (C) 1992, 1994 by Thomas Glen Smith.	All Rights Reserved.*/
/* execgetr APL2 V1.0.0 ************************************************
* Called from execgetp to get the Aplcb associated with a token.		 *
***********************************************************************/
#define INCLUDES APLCB+APLCHDEF+APLTOKEN
#include "includes.h"
Aplcb execgetr(tok)
Apltoken tok; /* operand token */
{
	Errstop; Execgetq; Execgets; Treesrch;
	extern int aplerr, indxorg;
	Aplcb out=NULL;

	if (!(tok == NULL || aplerr))
		switch (tok->token_code) {
			case OPERAND_TOKEN:
				out = treesrch(tok->token_ptr.token_string);
				if (out == NULL) aplerr = 59; /* undefined operand */
				break;
			case QUOTE:
			case VECTOR_TOKEN:
				out = tok->token_ptr.token_vector;
				if (out != NULL && (out->aplflags & APLTEMP))
					tok->token_ptr.token_vector = NULL;
				break;
			case NULL_TOKEN: /* occurs for a null index value */
				out = NULL;
				break;
			default:
				out = execgets(tok); /* Try QUAD_stuff. */
				if (out != NULL || aplerr) break;
				out = execgetq(tok);
				if (out == NULL) aplerr = 69; /* unknown operand type */
				break;
		}
	return(errstop(0,NULL,NULL,out));
}
[ RETURN TO DIRECTORY ]