/*	以下はGUI_FUNC.CのFunc_Exec()内でインクルード	*/

/*	メイン事前処理		*/
int	chkbefore()
{
	int		l;
	parnow=999;
	MMI_SendMessage(Message_NowExec,MM_SETMSG,1,statusStr[2]);
	MMI_SendMessage(Dialog_MesBack[0],MM_ERASE,0);
	MMI_SendMessage(Dialog_MesBack[0],MM_SHOW,0);
	MMI_SetPtr(81);
	MMI_SetWakeObj(UNUSED);
	/*	ファイル名取得		*/
	MMI_SendMessage(Text_OUTFile,MM_GETTEXT,3,path_file,sizeof(path_file),FALSE);
	for(i=0,j=0;i<sizeof(path_file);i++)
	{
		if(path_file[i]<=0x20 && path_file[i]!=0x00)
			path_file[j]=path_file[i];
		else
		{
			path_file[j]=path_file[i];
			j=j+1;
		}
	}
	if(*path_file==0)
	{
		printf("ファイル名未入力\n");
		AlertDisp(MES_filename1);
		return -1;
	}
	path_file_upr=_strupr(path_file);
	if(isalpha(path_file[0])==0 || path_file[1]!=':')
	{
		printf("ファイル名異常(ドライブNo.無し)\n");
		AlertDisp(MES_filename2);
		return -1;
	}
	/*	ドライブ情報取得	*/
	if(chkdrive<4)
	{
		chk_devtype=0;			/*	type FDD	*/
		chk_devunit=chkdrive;	/*	FFD UNIT No	*/
	}
	ldr=0xff;
	if(chkdrive!=4)	/*	FDD	*/
	{
		for(i=0;i<26;i++)
		{
			if(cmosdata.ldrvkid[i].drvtype==chk_devtype && cmosdata.ldrvkid[i].drvnum==chk_devunit)
				ldr=i;
		}
	}
	else			/*	CD	*/
	{
		ldr=16;
		chk_devtype=cmosdata.ldrvkid[16].drvtype;
		chk_devunit=cmosdata.ldrvkid[16].drvnum;
	}
	if((ldr==0xff)||(ldr==16 && chk_devtype!=0x81))
	{
		printf("システム情報未登録\n");
		AlertDisp(MES_cmosdata);
		return -1;
	}
	/*	検査対象==出力先?	*/
	if(path_file[0]==(ldr+'A'))
	{
		printf("出力先不適合(出力先==検査対象)\n");
		AlertDisp(MES_deveqfile);
		return -1;
	}
	/*	ﾘﾄﾗｲ数他取得		*/
	MMI_SendMessage(NumBox_Retry,  MM_GETNUMBOX,5,&retray_set,&Nmin,&Nmax,&Ndlt,&Ncol);
	MMI_SendMessage(NumBox_ErrStop,MM_GETNUMBOX,5,&error_set, &Nmin,&Nmax,&Ndlt,&Ncol);
	/*	こんそ〜る情報出力	*/
	printf("検査対象    =%s\n",devtypeStr[chkdrive]);
	printf("情報出力先  =%s\n",path_file_upr);
	printf("出力モード  =%s\n",modeStr[outputMode]);
	printf("リトライ数  =%02d\nエラー停止数=%02d\n",retray_set,error_set);
	printf("Device  Type=0x%02x  Unit=%1d  DRIVE=%c:\n",chk_devtype,chk_devunit,ldr+'A');
	/*	メモリー確認(16Kbytes要らないけど一応)	*/
	int		needMem;
	if(chk_devtype==0x81)	needMem= 4; /*  16/4 */
	else					needMem=32; /* 128/4 */
	while(TL_checkMemory(1)<needMem)
	{
		if(MMI_CallMessage(MMI_GetApliId(),GM_PURGE,0,0)!=NOERR)
		{
			printf("メモリー不足(処理用メモリー)\n");
			AlertDisp(MES_memout);
			execFlag=FALSE;
			return -1;
		}
	}
	/****	CD情報取得		****/
	if(chk_devtype==0x81)	//	CD情報 
	{
		iCD_trk=(void *)TL_malloc(iCDtrk_size);
		l=0;
	CDchkLoop:	//	CD演奏中かな? 
		ret=CDerrorChk(cdr_mphase(0,&iCDp_stat,&iCDp_now,&iCDp_trk,&iCDp_dsk),&l);
		if(ret==-1)			goto Illigal_CD;
		if(ret== 1)			goto CDchkLoop;
		if(iCDp_stat==1)	cdr_mstop(0);
		l=0;
	CDinfLoop:	//	CDInfo取得 
		ret=CDerrorChk(cdr_cdinfo(0,&iCD_type,&iCD_start,&iCD_end,iCD_trk,&iCD_dsk),&l);
		if(ret==-1)			goto Illigal_CD;
		if(ret== 1)			goto CDinfLoop;

		iCD_trk[iCD_end].min  =iCD_dsk.min;
		iCD_trk[iCD_end].sec  =iCD_dsk.sec;
		iCD_trk[iCD_end].frame=iCD_dsk.frame;
		if(iCD_type==1)
		{
			printf("DATA TRACKが無い\n");
			AlertDisp(MES_datatrak);
			goto Illigal_CD;
		}
		cdr_rdrvmd(0,&iCDo_sec);
		cdr_sdrvmd(0,iCDtrk_size);
	}
	else
	/****	FD情報取得		****/
	{
		iFD_buf=(FDSECID *)TL_malloc(iFDmax_trak*sizeof(FDSECID));
		for(i=0;i<iFDmax_trak;i++)
		{
			for(j=0;j<iFDmax_sect;j++)
			{
				iFD_buf[i].iFD_id[0][j].trakno=0;
				iFD_buf[i].iFD_id[0][j].hedno =0;
				iFD_buf[i].iFD_id[0][j].secno =0;
				iFD_buf[i].iFD_id[0][j].seccnt=0;
				iFD_buf[i].iFD_id[0][j].crc1  =0;
				iFD_buf[i].iFD_id[0][j].crc2  =0;
				iFD_buf[i].iFD_id[1][j].trakno=0;
				iFD_buf[i].iFD_id[1][j].hedno =0;
				iFD_buf[i].iFD_id[1][j].secno =0;
				iFD_buf[i].iFD_id[1][j].seccnt=0;
				iFD_buf[i].iFD_id[1][j].crc1  =0;
				iFD_buf[i].iFD_id[1][j].crc2  =0;
			}
		}
		iFD_devno=0x0020 | chk_devunit;
		/*	FD Mode Escape		*/
		DKB_rdmode(iFD_devno,&iFD_m1old,&iFD_m2old);
		/*	SEEK TRACK 0		*/
		ret=DKB_restore(iFD_devno);
		if(ret==(FDerr_STAT | FDerr_DNR))
		{
			printf("デバイス非準備\n");
			AlertDisp(MES_devpoff);
			goto Illigal_FD;
		}
		else
		if((ret & 0x80f8)!=0)
		{
			printf("アクセスエラー %x\n",ret);
			AlertDisp(MES_readfd1);
			goto Illigal_FD;
		}
		if(FileOpen()!=0)	goto Illigal_FD;
		/*	HD/DD/Dの区別		*/
		modeDD=0,modeFM=0;
		ret=FDDget_sectmode(iFD_devno,0,0,0);
		if(ret==0x8001)
		{
			printf("ｱｸｾｽ不能\n");
			Fchk(fprintf(fp,"アクセスできませんでした\n"),Illigal_FD2)
			AlertDisp(MES_devnoacc);
			goto Illigal_FD2;
		}
		if(ret==FDmode_ERR)
		{
			printf("NOT HD/DD/D Format\n");
			Fchk(fprintf(fp,"HD/DD/Dの区別に失敗しました\n"),Illigal_FD2)
			AlertDisp(MES_trakex);
			goto Illigal_FD2;
		}
		if((ret & 0x30)==FDmode_HD)
		{
			printf("2HD Format\n");
			Fchk(fprintf(fp,"Format Type=2HD\n"),Illigal_FD2)
			modeDD=FDmode_HD;
		}
		if((ret & 0x30)==FDmode_DD)
		{
			printf("DD(D) Format.Now Chaking DD/D.\n");
			ret=FDDcheck_DDorD(iFD_devno);
			if(ret==FDmode_ERR)
			{
				printf("DD/D Unknown\n");
				Fchk(fprintf(fp,"DD/Dの区別に失敗しました\n"),Illigal_FD2)
				AlertDisp(MES_media2dd);
				goto Illigal_FD2;
			}
			else
			{
				if((ret & 0x30)==FDmode_D)
				{
					printf("2D Format\n");
					Fchk(fprintf(fp,"Format Type=2D\n"),Illigal_FD2)
					modeDD=FDmode_D;
				}
				else
				if((ret & 0x30)==FDmode_DD)
				{
					printf("2DD Format\n");
					Fchk(fprintf(fp,"Format Type=2DD\n"),Illigal_FD2)
					modeDD=FDmode_DD;
				}
			}
		}
	}
	return 0;

Illigal_FD2:
	fclose(fp);
Illigal_FD:
	TL_free((char *)iFD_buf);
	return -1;

Illigal_CD:
	TL_free((char *)iCD_trk);
	return -1;
}

/*	メイン処理			*/
int	chkmain()
{
	stopFlag=FALSE;
	ret=retray_cnt=error_cnt=rtrySm_cnt=0;

	/****	CD検査部メイン		****/
	if(chk_devtype==0x81)
	{
		if(FileOpen()!=0)	return -1;
		long			chkall_len=0;		//	%表示用 
		long			chkend_len=0;
		long			chkpst_len=0;
		char			chktrk=0;
		long			tw1,tw2,tl;
		char			lm,ls,lf,em,es,ef,df;
		int				lcnt,CDret;
		unsigned int	tw;

		/*	CDトラックデータ出力	*/
		if(outputMode==1)
			Fchk(fprintf(fp,"Table of Contents.\n"),CDchkEnd2)
		for(i=iCD_start-1;i<iCD_end;i++)
		{
			CDgetTIM(i,df,lm,ls,lf)
			CDgetNXT(i,em,es,ef)
			tw1=(long)CDtime(lm,ls,lf);
			tw2=(long)CDtime(em,es,ef);
			if(df!=0)
			{
				chktrk=chktrk+1;
				chkall_len=chkall_len+(tw2-tw1);
			}
			if(outputMode==1)
			{
				if(df==0)
					Fchk(fprintf(fp,"No=%02d  AUDIO %02d:%02d:%02d(%06d)〜\n",i+1,lm,ls,lf,tw1),CDchkEnd2)
				else
					Fchk(fprintf(fp,"No=%02d  DATA  %02d:%02d:%02d(%06d)〜\n",i+1,lm,ls,lf,tw1),CDchkEnd2)
			}
			if(df==0)
				printf("No=%02d AUDIO %02d:%02d:%02d(%06d)〜\n",i+1,lm,ls,ls,tw1);
			else
				printf("No=%02d DATA  %02d:%02d:%02d(%06d)〜\n",i+1,lm,ls,ls,tw1);
		}
		CDgetTIM(iCD_end,df,lm,ls,lf)
		tw1=(long)CDtime(lm,ls,lf);
		if(outputMode==1)
			Fchk(fprintf(fp,"End          %02d:%02d:%02d(%06d).\n\n",lm,ls,lf,tw1),CDchkEnd2)
		printf("End         %02d:%02d:%02d(%06d).\n",lm,ls,lf,tw1);

		iCD_buf=TL_malloc(iCDbuf_size);
		/*	ポストギャップ検索	*/
		long	pi;
		printf("ポストギャップ検索中\n");
		for(i=iCD_start-1;i<iCD_end;i++)
		{
			CDgetTIM(i,df,lm,ls,lf)
			CDgetNXT(i,em,es,ef)
			if(df!=0)
			{
				tw1=(long)CDtime(lm,ls,lf)-150;
				tw2=(long)CDtime(em,es,ef)-150;
				pi =(long)CDtime(em,es,ef)-150;
				printf("TRK=%d STEP 1\n",i+1);
				while(pi>tw1)
				{
					DispChk();
					CDret=cdr_read(0,pi,iCD_buf,1);
					snsUserStop(CDchkEnd)
					if((CDret & ~CDERR7)!=0)
						pi=pi-25;
					else
						break;
				}
				printf("TRK=%d STEP 2\n",i+1);
				while(pi<tw2)
				{
					CDret=cdr_read(0,pi,iCD_buf,1);
					snsUserStop(CDchkEnd)
					if((CDret & ~CDERR7)==0)
						pi=pi+1;
					else
						break;
				}
				if(i==(iCD_end-1))
					pi=pi+150;
				else
					pi=pi+149;
				df=iCD_trk[i+1].min & 0x80;
				iCD_trk[i+1].min  =(pi/(60*75)) | df;
				iCD_trk[i+1].sec  =(pi/75)%60;
				iCD_trk[i+1].frame=pi%75;
				CDgetTIM(i,df,lm,ls,lf)
				CDgetNXT(i,em,es,ef)
				tw1=(long)CDtime(lm,ls,lf);
				tw2=(long)CDtime(em,es,ef);
				chkpst_len=chkpst_len+(tw2-tw1);
			}
		}
		/*	メイン処理		*/
		DispExecMes(1);
			  printf(   "TOC Data:DATA TRACK COUNT=%02d FRAME=%06d\n",chktrk,chkall_len);
		Fchk(fprintf(fp,"TOC Data:DATA TRACK COUNT=%02d FRAME=%06d\n",chktrk,chkall_len),CDchkEnd)
			  printf(   "検査対象:FRAME=%06d\n",chkpst_len);
		Fchk(fprintf(fp,"検査対象:FRAME=%06d\n",chkpst_len),CDchkEnd)
		for(i=iCD_start-1;i<iCD_end;i++)
		{
			CDgetTIM(i,df,lm,ls,lf)
			CDgetNXT(i,em,es,ef)

			if(df==0)	goto CDchkNext;
			tw1=(long)CDtime(lm,ls,lf);
			tw2=(long)CDtime(em,es,ef);
			tw=(unsigned int)(tw2-tw1);
			printf("CHK TRK=%02d Start=%06d Len=%06d\n",i+1,tw1,tw);
			if(outputMode==1)
				Fchk(fprintf(fp,"CHK TRK=%02d Start=%06d Len=%06d\n",i+1,tw1,tw),CDchkEnd)

			while(CDtime(lm,ls,lf)<CDtime(em,es,ef))
			{
				iCD_read.min  =lm;
				iCD_read.sec  =ls;
				iCD_read.frame=lf;
				tw1=(long)CDtime(lm,ls,lf);
				retray_cnt=0;
			CDchkRetay:
				CDret=cdr_tread(0,&iCD_read,iCD_buf,1);

				if((CDret & (CDERR0 | CDERR4 | CDERR5))!=0)		/*	読込みエラーだ!!	*/
				{
					retray_cnt=retray_cnt+1;
					rtrySm_cnt=rtrySm_cnt+1;
					if(retray_cnt<=retray_set)
					{
							  printf(   "ﾘﾄﾗｲ%04d:",retray_cnt);
						Fchk(fprintf(fp,"ﾘﾄﾗｲ%04d:",retray_cnt),CDchkEnd)
							  printf(   "ERR=%02x TRK=%02d TIME=%02d:%02d:%02d(%06d)\n",CDret,i+1,lm,ls,lf,tw1);
						Fchk(fprintf(fp,"ERR=%02x TRK=%02d TIME=%02d:%02d:%02d(%06d)\n",CDret,i+1,lm,ls,lf,tw1),CDchkEnd)
						goto CDchkRetay;
					}
					else
					{
						error_cnt =error_cnt+1;
						retray_cnt=0;
							  printf(   "ｴﾗｰ %04d:",error_cnt);
						Fchk(fprintf(fp,"ｴﾗｰ %04d:",error_cnt),CDchkEnd)
							  printf(   "ERR=%02x TRK=%02d TIME=%02d:%02d:%02d(%06d)\n",CDret,i+1,lm,ls,lf,tw1);
						Fchk(fprintf(fp,"ERR=%02x TRK=%02d TIME=%02d:%02d:%02d(%06d)\n",CDret,i+1,lm,ls,lf,tw1),CDchkEnd)
						CheckError(CDchkEnd)
						if(error_cnt>=error_set && error_set!=0)
						{
								  printf(   "\nERROR数規定値に到達\n");
							Fchk(fprintf(fp,"\nERROR数規定値に到達\n"),CDchkEnd)
							Fchk(fprintf(fp,"STOP.  TRK=%02d TIME=%02d:%02d:%02d(%06d)\n",i+1,lm,ls,lf,tw1),CDchkEnd)
							AlertDisp(MES_errover);
							ret=-1;
							goto CDchkEnd;
						}
					}
				}
				if((CDret & ~CDERR7)!=0)
				{
					if(cdr_tseek(0,&iCD_read)==CDERR0)
					{
							  printf("ＣＤ排出\n");
						Fchk(fprintf(fp,"TRK=%02d TIME=%02d:%02d:%02d ",i+1,lm,ls,lf),CDchkEnd)
						Fchk(fprintf(fp,"検査中にＣＤが認識できなくなりました\n"),CDchkEnd)
						AlertDisp(MES_devout);
						ret=-1;
						goto CDchkEnd;
					}
				}
			CDchkSns:
				/*	強制終了判定		*/
				snsUserStop(CDchkEnd)
				/*	次のフレームへ		*/
				lf=lf+1;
				if(lf>=75)	{ls=ls+1;lf=0;}
				if(ls>=60)	{lm=lm+1;ls=0;}
				/*	%表示		*/
				chkend_len=chkend_len+1;
				NumSetPar(parnow,(chkend_len*100/chkpst_len))
			}
		CDchkNext:{}
		}
		ret=0;
		/*	終了メッセージ		*/
		chkEndMessage(CDchkEnd)
	CDchkEnd:
		TL_free((char *)iCD_trk);
	CDchkEnd2:
		cdr_restore(0);
		cdr_mstop(0);
		TL_free(iCD_buf);
		cdr_sdrvmd(0,iCDo_sec);
		fclose(fp);
		file_no=file_no+1;
		return	ret;
	}
	else
	/****	FD検査部メイン		****/
	{
		int		chktrk_len=0;
		int		chkmax_len;
		int		k,err_cnt,sec,retErr;
		/*	Secter Information Get	*/
		if(modeDD==FDmode_D)	chkmax_len=42;
		else					chkmax_len=84;
		DispExecMes(2);

		if(outputMode==1)	Fchk(fprintf(fp,"FD Sector Information.\n"),FDchkEnd)

		for(iFD_cylno=0;iFD_cylno<chkmax_len;iFD_cylno++)
		{
			NumSetPar(parnow,chktrk_len)
			for(iFD_head=0;iFD_head<2;iFD_head++)
			{
				/*	単密度､倍密度判別	*/
				ret=FDDget_sectmode(iFD_devno,iFD_cylno,iFD_head,modeDD);
				printf(   "TRK=%2d  SID=%1d   ",iFD_cylno,iFD_head);
				if(ret==FDmode_ERR || ret==0x8001)
				{
					if(iFD_head==1)
					{
						printf("SIDE 1 Read ERROR\n");
						Fchk(fprintf(fp,"SIDE 1 が読込めません\n"),FDchkEnd)
						AlertDisp(MES_trakex);
						goto FDchkEnd;
					}
					else
					{
						printf("END\n");
						Fchk(fprintf(fp,"%dｼﾘﾝﾀﾞ まで検査しました\n",iFD_cylno-1),FDchkEnd)
						/*	終了メッセージ		*/
						chkEndMessage(FDchkEnd)
						goto FDchkEnd;
					}
				}
				if((ret & 0x80)==FDmode_MFM)
				{
					modeFM=FDmode_MFM;
					printf("MFM\n");
					if(outputMode==1)
						Fchk(fprintf(fp,"Cylinder=%2d Side=%1d  倍密度(MFM)\n",iFD_cylno,iFD_head),FDchkEnd)
				}
				else
				if((ret & 0x80)==FDmode_FM)
				{
					modeFM=FDmode_FM;
					printf(" FM\n");
					if(outputMode==1)
						Fchk(fprintf(fp,"Cylinder=%2d Side=%1d  単密度(FM)\n",iFD_cylno,iFD_head),FDchkEnd)
				}
				/*	セクタ情報取得		*/
				for(k=0;k<3;k++)
				{
					iFD_IDcnt=iFD_IDtop=err_cnt=0;
				FDgetSECT:
					ret=DKB_rdsecid(iFD_devno,iFD_cylno,iFD_head,&iFD_IDget);
					if((ret & 0x80fd)!=0 && err_cnt<8)
					{
						err_cnt=err_cnt+1;
						goto FDgetSECT;
					}
					else
					if(err_cnt>=8)
						goto FDgetSECTend;
					sec=(int)iFD_IDget.secno;
					if(sec>=iFDmax_sect)
					{
						Fchk(fprintf(fp," 特殊フォーマット(ｾｸﾀNo.大きすぎます)\n"),FDchkEnd)
						CheckError(FDchkEnd)
						goto FDchkNxt;
					}
					else
					{
							iFD_buf[iFD_cylno].iFD_id[iFD_head][sec]=iFD_IDget;
					}
					if(iFD_IDtop==0)
					{
						iFD_IDtop=sec;
						if(iFD_IDtop==0)
						{
							Fchk(fprintf(fp," 特殊フォーマット(ｾｸﾀNo.0存在します)\n"),FDchkEnd)
							CheckError(FDchkEnd)
							goto FDchkNxt;
						}
					}
					else
					if(iFD_IDtop==sec && iFD_IDcnt!=0)
						goto FDgetSECTnxt;
					iFD_IDcnt=iFD_IDcnt+1;
					goto FDgetSECT;
				FDgetSECTnxt:
					snsUserStop(FDchkEnd)
				}
				FDgetSECTend:
				if(iFD_IDcnt==0)
				{
					Fchk(fprintf(fp," ｾｸﾀID 取得失敗\n"),FDchkEnd)
					CheckError(FDchkEnd)
					goto FDchkNxt;
				}
				else
				{
					/*	セクタ数カウント&不連続チェック	*/
					iFD_IDcnt=0;
					for(k=1;k<(iFDmax_sect-1);k++)
					{
						if(iFD_buf[iFD_cylno].iFD_id[iFD_head][k-1].secno!=0
						&& iFD_buf[iFD_cylno].iFD_id[iFD_head][k  ].secno==0
						&& iFD_buf[iFD_cylno].iFD_id[iFD_head][k+1].secno!=0)
						{
							Fchk(fprintf(fp," 特殊フォーマット(ｾｸﾀ不連続です)\n"),FDchkEnd)
							CheckError(FDchkEnd)
						}
						if(iFD_buf[iFD_cylno].iFD_id[iFD_head][k].secno!=0)
						{
							iFD_IDcnt=iFD_IDcnt+1;
						}
					}
					for(k=1;k<=iFD_IDcnt;k++)
					{
						/*	情報OUT		*/
						if(iFD_buf[iFD_cylno].iFD_id[iFD_head][k].secno!=0 && outputMode!=0)
						Fchk(fprintf(fp," Sct=%03d Len=%04d CRC=%02X%02X  "
										,iFD_buf[iFD_cylno].iFD_id[iFD_head][k].secno
										,secLen[iFD_buf[iFD_cylno].iFD_id[iFD_head][k].seccnt]
										,iFD_buf[iFD_cylno].iFD_id[iFD_head][k].crc1
										,iFD_buf[iFD_cylno].iFD_id[iFD_head][k].crc2
									)
							,FDchkEnd)
						/*	セクタ検査	*/
						iFD_m1=modeFM | modeDD | iFD_buf[iFD_cylno].iFD_id[iFD_head][k].seccnt;
						iFD_m2=0x0200 | (unsigned int)iFD_IDcnt;
						DKB_setmode(iFD_devno,iFD_m1,iFD_m2);
						iFD_secn=(int)iFD_buf[iFD_cylno].iFD_id[iFD_head][k].secno;
						iFD_secc=1;
						retErr=DKB_chksec(iFD_devno,iFD_cylno,iFD_head,iFD_secn,iFD_secc,&iFD_secz);
						/*	結果OUT		*/
						if((retErr & 0x80fd)!=0)
						{
							if(outputMode==0)
							{
								Fchk(fprintf(fp,"Cylinder=%2d Side=%1d ",iFD_cylno,iFD_head),FDchkEnd)
								Fchk(fprintf(fp," Sct=%03d Len=%04d CRC=%02X%02X  "
												,iFD_buf[iFD_cylno].iFD_id[iFD_head][k].secno
												,secLen[iFD_buf[iFD_cylno].iFD_id[iFD_head][k].seccnt]
												,iFD_buf[iFD_cylno].iFD_id[iFD_head][k].crc1
												,iFD_buf[iFD_cylno].iFD_id[iFD_head][k].crc2
											)
									,FDchkEnd)
							}
							Fchk(fprintf(fp,"ERR=%04x\n",retErr & 0x80fd),FDchkEnd)
							CheckError(FDchkEnd)
						}
						else
						if(outputMode!=0)
							Fchk(fprintf(fp,"OK\n"),FDchkEnd)
					}
				}
			FDchkNxt:
				/*	強制終了判定		*/
				snsUserStop(FDchkEnd)
			}
			chktrk_len=chktrk_len+1;
		}
		ret=0;
	FDchkEnd:
		fclose(fp);
		TL_free((char *)iFD_buf);
		file_no=file_no+1;
		/*	FD Mode Reset		*/
		DKB_setmode(iFD_devno,iFD_m1old,iFD_m2old);
		return ret;
	}
}


/*	メイン事後処理		*/
int	chkafter()
{
	MMI_SetPtr(80);
	MMI_SendMessage(NumBox_Par,MM_SETNUMBOX,5,0,0,0,0,0);
	DispExecMes(0);
	MMI_SendMessage(Message_NowExec,MM_SETMSG,1,statusStr[1]);
	MMI_SendMessage(Dialog_MesBack[0],MM_ERASE,0);
	MMI_SendMessage(Dialog_MesBack[0],MM_SHOW,0);
	MMI_SetWakeObj(Text_OUTFile);
return 0;
}
