static    char    sccsid[]="%Z% %M% %I% %E% %U%";
/******************************************************************************
*                                                                             *
*      処理目的　　：  													      *
*                                                                             *
*      関数名　　　：　int cl_ex_get_proc_name( pparmList , pBuff , plen )    *
*                      (I)prmList	*pparmList                                *
*                      (O)char		*pBuff		                              *
*                      (O)int		*plen		                              *
*                                                                             *
*      引き数      ：　なし                                                   *
*                                                                             *
*                                                                             *
*      戻り値　　　：　ERROR                                    　            *
*                      NORMAL                                                 *
*                                                                             *
*      処理概要　　：　                                                       *
*                                                                             *
******************************************************************************/
#include <colmn.h>
extern CLPRTBL CLprocTable;

int cl_ex_get_proc_name(chklen, pparmList, Obj, pBuff, plen)
int chklen;
parmList *pparmList;
int  *Obj;
char **pBuff;
int  *plen;
{
	static char *_fn_="cl_ex_get_proc_name";
	int  rc,len,pos,n;
	char *p,*pn;
	tdtInfoParm InfoParm;

	pn = FORMAT(114);
	if (rc=cl_arg_to_char(pparmList,Obj,&InfoParm,FORMAT(326))) return rc;	/* "手続き名" */
	p   = InfoParm.pi_data;
	len = InfoParm.pi_dlen;

	*pBuff = p;
	*plen  = len;
	n = len;
	if (chklen > 0) {
		while (len > 0) {
			n = akxnskipto(p,len,".");
			if (n > chklen) {
				/* 手続き名が長すぎます(len=%d)。 */
				ERROROUT5(FORMAT(112),_fn_,pn,strtemp(p,len),len,chklen);
				rc = ECL_SCRIPT_ERROR;
			}
			else if (n<=0 || n==len-1) {
				rc = ECL_SCRIPT_ERROR;
				n = 0;
			}
			else if (cl_chk_proc_name(p,n)) {
				/* 手続き名[%s]が不正です。 */
				ERROROUT3(FORMAT(113),_fn_,pn,strtemp(p,n));
				rc = ECL_SCRIPT_ERROR;
			}
			if (rc) break;
			len -= ++n;
			p += n;
		}
	}
	if (n <= 0) {
		ERROROUT(FORMAT(327));	/* 手続き名がNULLです。 */
		rc = ECL_SCRIPT_ERROR;
	}

	return rc;
}
