static    char    sccsid[]="%Z% %M% %I% %E% %U%";
/******************************************************************************
*                                                                             *
*      処理目的　　：  ＥＬＳＥコマンドメイン                                 *
*                                                                             *
*      関数名　　　：　int cl_process_else( pLeaf, pProc )                    *
*                                                                             *
*      引き数      ：　(I)Leaf          * pLeaf                               *
*                      (I)ProcCT        * pProc                               *
*                                                                             *
*                                                                             *
*      戻り値　　　：　ERROR                                    　            *
*                      NORMAL                                                 *
*                                                                             *
*      処理概要　　：　                                                       *
*                                                                             *
******************************************************************************/

#include "colmn.h"
#define NEORET

int cl_process_else(pLeaf, pProc)
Leaf   *pLeaf;
ProcCT *pProc;
{
	int rc;
	char buf[32];
	int id;
/*	IfCB *pIfCB;	*/
	BlockCB *pIfCB;
	BlockCB *pBlockCB;

	if (!(pIfCB = pProc->pcrBlockCB)) return -1;
	id = pIfCB->cid;
	if (id==C_IF || id==C_SWITCH || id==C_TRY) ;
	else return -1;

	if( pIfCB->ElseFlag == L_ON ) {
		if (cl_get_cmd_name(pLeaf->cmd.cid,buf)) return -2;
		ERROROUT1(FORMAT(366),buf);	/* %sが重複しています。 */
		return ECL_EX_ELSE;
	}

	/* ＥＬＳＥコマンドフラグをオン */
	pIfCB->ElseFlag = L_ON;

	if (pLeaf->cmd.cid==C_FINALLY || pIfCB->TureFlag != L_ON ){
		pProc->Nextleaf = pLeaf->leftleaf;
		cl_ret_leaf_push(pProc,pLeaf->rightleaf);
	}
	else {
		pProc->Nextleaf = pLeaf->rightleaf;
	}

	return 0;
}
