static    char    sccsid[]="%Z% %M% %I% %E% %U%";
/********************************************************************
*                                                                   *
*      処理目的　　：  ＯＵＴＰＵＴメイン                           *
*                                                                   *
*      関数名　　　：　int cl_process_output( pLeaf )               *
*                                                                   *
*      引き数      ：　(I)Leaf          * pLeaf                     *
*                                                                   *
*                                                                   *
*      戻り値　　　：　ERROR                                        *
*                      NORMAL                                       *
*                                                                   *
*      処理概要　　：　                                             *
*                                                                   *
********************************************************************/
#include <colmn.h>
extern CLPRTBL *pCLprocTable;

int cl_proc_output(pLeaf,proc)
Leaf *pLeaf;                       /* カレントリーフデータ    */
ProcCT  *proc;
{
	int rc;
	MCAT *mcat;
                                       /* リンクチェック          */
	if ( pLeaf == NULL ) {
		ERROROUT("pLeaf == NULL");
		return ( ECL_SYSTEM_ERROR );
	}
                                       /* output コマンドか？     */
	if ( pLeaf->cmd.cid != C_OUTPUT ) {
		ERROROUT("pLeaf->cmd.cid != C_OUTPUT");
		return ( ECL_SYSTEM_ERROR );
	}

	if (pLeaf->cmd.prmp[0] == NULL) return ( ECL_SYSTEM_ERROR );
/*
	if (pCLprocTable->ListPBody) {
		mcat = &pCLprocTable->ListPBody->mCat;
	}
*/
	rc = 0;
	sswitch ( pLeaf->cmd.prmp[0]->prp )
		sicase ( "GR" )                 /* グループノード処理 */
			rc = cl_rp_grp_nfrm_gen(pLeaf,proc);
		sicase ( "DT" )                 /* データノード処理 */
			rc = cl_rp_data_nfrm_gen(pLeaf,proc);
		sicase ( "PR" )                 /* Print text for debug */
			rc = cl_print_text(&pLeaf->cmd.prmp[1],proc->Obj,
			                   pLeaf->cmd.prmnum-1,"Print: ");
		sicase ( "FM" )
			rc = cl_rp_frm_nfrm_gen(pLeaf);
		sicase ( "TX" )                 /* Text */
			rc = cl_rp_text_nfrm_gen(pLeaf, proc, 0);
		sicase ( "TN" )                 /* Text + (LF) */
			rc = cl_rp_text_nfrm_gen(pLeaf, proc, 1);
		sicase ( "TF" )                 /* Text File */
			rc = cl_rp_text_nfrm_gen(pLeaf, proc, 2);
		sicase ( "AC" )                 /* All Clear */
			cl_list_pac_clear(pCLprocTable->ListPBody);
			pCLprocTable->ListPBody = NULL ;
		sdefault
		{
			ERROROUT("not GT,DT,FM,TX,TN,TF,AC");
			return ( ECL_SYSTEM_ERROR );
		}
	endssw

	if (pCLprocTable->ListPBody) {
		mcat = &pCLprocTable->ListPBody->mCat;
		if (rc) mcat->mc_ipos = pCLprocTable->ListPBody->AllFieldlen;
		else pCLprocTable->ListPBody->AllFieldlen = mcat->mc_ipos;
	}
 
	return ( rc );
}
