/*****************************************************************************

	ExeJ()

	This function executes a J command.

*****************************************************************************/

#include "ZPort.h"		/* define portability identifiers */
#include "DefTeco.h"		/* define general identifiers */

extern	DEFAULT	DoCJR();	/* do C, J or R stuff */
extern	DEFAULT	GetNmA();	/* get numeric argument */

EXTERN	char	*EBfBeg;	/* beginning of edit buffer */
EXTERN	char	*GapBeg;	/* beginning of edit buffer gap */
EXTERN	WORD	EStBot;		/* expression stack bottom */
EXTERN	WORD	EStTop;		/* expression stack top */
EXTERN	LONG	NArgmt;		/* numeric argument */


DEFAULT ExeJ()			/* execute J command */
{
#if DEBUGGING
DbgInd+=2;if(DbgLvl>=1){DbgMsg();DbgDBf("ExeJ: called.\015\012");DbgROf();}
#endif

	if (EStTop == EStBot)			/* if no numeric argument */
		NArgmt = 0L;			/* default is 0J */
	else
		if (GetNmA() == FAILURE)	/* get numeric argument */
#if DEBUGGING
{if(DbgLvl>=1)
{DbgMsg();DbgDBf("ExeJ: returning FAILURE.\015\012");DbgROf();}DbgInd-=2;
#endif
			return(FAILURE);
#if DEBUGGING
}
#endif

#if DEBUGGING
if(DbgLvl>=1)
{DbgMsg();DbgDBf("ExeJ: returning DoCJR().\015\012");DbgROf();}DbgInd-=2;
#endif
	return(DoCJR((EBfBeg-GapBeg)+NArgmt));
}
