static char sccsid[]="%Z% %M% %I% %E% %U%";
/****************************************************************************
*																			*
*	処理目的	：	コマンドライン パラメータをパラメータ変数へ設定する		*
*																			*
*	関数名		：	int cl_parm_data_set(iParmNum, sBuff, ParmL)			*
*																			*
*	引き数		：	(I)int  iParmNum										*
*					(I)char *sBuff;											*
*					(I)int  ParmL;											*
*																			*
*	戻り値		：	ERROR													*
*					NORMAL													*
*																			*
*	処理概要	：															*
*																			*
*****************************************************************************/
#include "colmn.h"

int cl_parm_data_set(iParmNum, sBuff, ParmL)
int  iParmNum;
char *sBuff;
int  ParmL;
{
	ScrPrCT     *pScrPrCT;		/* スクリプト・テーブル */
	tdtInfoParm  rInfoParm;		/* パラメータ情報構造体 */
	tdtInfoParm *pInfoParm, ***pTBL_vnam;
	int  iRc;
	int  i;
	int  iParmLen,*pSize;
	char *pIndBuff, *dVarp;		/* バッファーのインディケータ */
	uchar uw;
	short sw;
	long  lw;
	CnCB CnCBw;
	int RemL;	/* 1.25 Koba */

	/*
	 * カレント・スクリプト・テーブルの探索
	 */
	if (!(pScrPrCT = cl_search_src_ct())) {
		ERROROUT("pScrPrCT is NULL");
		return ECL_SYSTEM_ERROR;
	}

	pTBL_vnam = pScrPrCT->Vary->pTBL_pasento;
	pSize = (int *)pTBL_vnam[0];
/*	pSize = (int *)pScrPrCT->Vary->pTBL_pasento[0];	*/
	if (iParmNum == 0) {
		pScrPrCT->Vary->varnam_pasento = 0;
		cl_set_parm_bin(cl_var_size_parm(pSize),0);
		return NormalEnd;
	}
	else {
	/*	pSize = (int *)pScrPrCT->Vary->pTBL_pasento[0];	*/
		if (iParmNum > pSize[2] /* VAR_MAX_PAS */) {
			ERROROUT1("iParmNum(%d) is too large.",iParmNum);
			return ECL_SCR_PARM_ERR;
		}
	}
	/*             */
	if (!sBuff) {
		ERROROUT("sBuff is NULL");
		return ECL_SYSTEM_ERROR;
	}

	/*
	 * パラメータ変数のセット
	 */
	/* パラメータ数分ループ */
 
	RemL = ParmL;	/* 1.25 Koba */
	pIndBuff = sBuff;
	for (i=1;i<=iParmNum;i++) {
		if (RemL <= 0) {	/* 1.25 Koba */
			ERROROUT(FORMAT(337));	/* ParmSet:パラメータ長エラー */
			return ECL_SCR_PARM_ERR;
		}
		/* パラメータ データの取得 */
#if 1	/* 2020.4.30 */
		pInfoParm = cl_get_var_ent_opt(pTBL_vnam,i,'s');
#else
		pInfoParm = cl_get_var_ent(pTBL_vnam,i);
#endif
		cmn_chk_data(pIndBuff,&rInfoParm);
		rInfoParm.pi_hlen = 0;	/* 2019.9.12 */
/*
akxaxdump("cmn_chk_data",&rInfoParm,sizeof(tdtInfoParm));
*/
		iParmLen = rInfoParm.pi_len;
		iRc = cl_code_trans(&rInfoParm,pInfoParm);
/*
printf("cl_parm_data_set: iRc=%d\n",iRc);
*/
		if (iRc < 0) {
			ERROROUT1("ParmSet: CodeTrans error ret=%d",iRc);
			return ECL_SCR_PARM_ERR;
		}
		else if (!iRc) {
			cl_gx_rep_info_set_ign(pInfoParm,&rInfoParm,1);
			pInfoParm->pi_aux[1] |= D_AUX1_PROTECTED;
/*
akxaxdump("cl_gx_rep_info_set",pInfoParm,sizeof(tdtInfoParm));
*/
		}
/*
		else {
akxaxdump("cl_code_trans",pInfoParm,sizeof(tdtInfoParm));
		}
*/
		/* バッファー・インディケータに次のパラメータの先頭をセット */
		pIndBuff += iParmLen;
		RemL     -= iParmLen;
	}
	pScrPrCT->Vary->varnam_pasento = iParmNum;
/*	cl_set_parm_bin(cl_var_size_parm(pSize),iParmNum);	2020.4.30 */

	return NORMAL;
}
