⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 as49atsb.cpp

📁 西门子交换机话单处理
💻 CPP
字号:
//FORMAT CONVETER PROGRAME 			格式转换程序
//conveter text file to dbf file    转换文本文件到数据库文件
//source file  :      HM.TXT
//relation file:_SQREDB1.HED
//output file  :SQRESPES.DBF
#define  SOURFILE		""
#define  DTBFFILE		""
#define  SPACE          "        "
#define  ESC			0x1b
#define  FIELDNUM		9          //总字段数
#define  FIELDLEN		8
#define  HeadMark   "012                "
//#define  HeadMark   "012                                          007"
//#define  HeadMark   "000012                  "
#define  lenBuff    2048
#define  lenHead    800
#define  lenRec     268
#define  offsetAN   51    //A-Sub Number,Right justified
#define  offsetBN   72    //B-Sub Number,Right justfied
#define  offsetDate 146   //Date for start of Charging
#define  offsetST   152   //Time for start of Charging
#define  offsetET   158   //Time for stop of Charging
#define  offsetCD   170   //Chargable Duration
#define  numberRB   7
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
void 	 _szx_disp(void);
char * findMark(char*,char*,int,int);

main(char argc,char *argv[])
{
	FILE *fi_obj,*fi_hed,*fo_dbf;
	long  i,m,n,x,y,z,o,p,q;
	long counter;
	long char *counterstr="          ";
	long char BillHead[lenHead];
	long char *sourbuff;
	long char *ptrRec;
	long char *ptrbuff;
	long fpos;
	long char recbuff[lenRec];
	long char *an="          ",*bn="                  ";
	long char *date="      ",*st="      ",*et="      ",*cd="      ";

	long char recstr[lenRec];

	char c;
	long char parm1[8][10],JuTou[10],yyh[10];
	long char output[8][10];
	long char filename1[80]=SOURFILE;
	long char filename3[80]=DTBFFILE;
	long char *ptr_str;

	union lcnt{
		long lgcnt;
		char chcnt[4];
	}count;

	//Check Command Line Parameter
	if(argc<3){
	_szx_disp();
	printf("\nPress ESC key exit.\n");
	do{}while(getch()!=ESC);
	return (-300);
	}
	else	{
	strcpy(filename1,argv[1]);
	strcpy(filename3,argv[2]);
	}

	//Error Handler
	if ((fi_obj=fopen(filename1,"rb"))==0){
	_szx_disp();
	printf("\nPress ESC key exit.\n");
	do{}while(getch()!=ESC);
	return(-301);
	}

	//Error Handler
	if ((fo_dbf=fopen(filename3,"wb+"))==0){
	_szx_disp();
	printf("\nPress ESC key exit.\n");
	do{}while(getch()!=ESC);
	return(-303);
	}

	fseek(fi_obj,0,SEEK_SET);		fseek(fo_dbf,0,SEEK_SET);

	//flash Buffer
	clrscr();
	_szx_disp();
	counter=0;
	i=0;      //Line counter of source file               //I 字段计数器

	fgets(BillHead,lenHead+1,fi_obj);//Read Charging File Head

	//Main Loop
	if ((sourbuff = (char *) malloc(lenBuff+1)) == NULL)
	{
		printf("Not enough memory to allocate buffer\n");
		exit(1);  /* terminate program if out of memory */
	}
	ptrbuff=sourbuff;             //save buffer pointer
	//x=ptrbuff+lenBuff-ptrRec;
	//y=sourbuff-ptrbuff; z=ptrRec-ptrbuff;

	for(m=0;m<lenBuff;m++)sourbuff[m]=NULL;
	for(m=0;m<lenRec;m++)recbuff[m]=NULL;

	while(!(feof(fi_obj)))
	{
		fread(sourbuff,lenBuff,1,fi_obj); //Get Data to Buffer
		i=0;
		for(;;)
		{
			//x=ptrbuff+lenBuff-ptrRec;
			//y=sourbuff-ptrbuff;z=ptrRec-ptrbuff;

			if(sourbuff[0])
			{  //ptrRec=strstr(sourbuff,HeadMark); //Search Record head
				 ptrRec=findMark(sourbuff,HeadMark,lenBuff,strlen(HeadMark));

				 //if(ptrRec==NULL)    //No found record head
				 //		sourbuff++;      //move buff pointer,find next
				 if(sourbuff-ptrbuff>lenBuff-lenRec)//Near Buff end
				 //	 sourbuff[0]=0;
				 { fpos=ftell(fi_obj);
					 fseek(fi_obj,fpos-(sourbuff-ptrbuff),SEEK_SET);
					 sourbuff=ptrbuff;                   //Restore buffer pointer
					 fread(sourbuff,lenBuff,1,fi_obj); //Get Data to Buffer


				 }
				 //{  sourbuff=ptrbuff;
				 //		fpos=ftell(fi_obj);
				 //		fseek(fi_obj,fpos-(lenBuff-(ptrRec-ptrbuff))+lenRec,SEEK_SET);
				 //}
				 ptrRec=ptrRec-3;
			}
			//else ptrRec=NULL;
			//z=ptrRec-ptrbuff;

			//i=lenRec;
			//if(ptrbuff+lenBuff-ptrRec<440)     //Next Buffer&File Pointer Modify
			if(sourbuff[0]==0)
			{
				fpos=ftell(fi_obj);
				//x=ptrbuff+lenBuff-ptrRec;
				//y=sourbuff-ptrbuff; z=ptrRec-ptrbuff;

				fseek(fi_obj,fpos-(lenBuff-(ptrRec-ptrbuff))+lenRec,SEEK_SET);
				c=0;
				//if (counter>3499)
				//		c=0;
				while(c==0)
				{ c=fgetc(fi_obj);
					//fpos=ftell(fi_obj);
				 };
				fseek(fi_obj,ftell(fi_obj)-1,SEEK_SET);
				//fpos=ftell(fi_obj);
				sourbuff=ptrbuff;                   //Restore buffer pointer
				fread(sourbuff,lenBuff,1,fi_obj); //Get Data to Buffer
				i=0;
				if(feof(fi_obj))break;
				continue;
			}
			if (ptrRec)
			{
				i++;
				for(n=0;n<10;n++)	an[n]=ptrRec[offsetAN+n];
				for(n=0;n<18;n++) bn[n]=ptrRec[offsetBN+n];
				for(n=0;n<6;n++)
				{
					date[n]=ptrRec[offsetDate+n];
					st[n]=ptrRec[offsetST+n];
					et[n]=ptrRec[offsetET+n];
					cd[n]=ptrRec[offsetCD+n];
				}
				counter++;				//Output Record
				gotoxy(40,20);		//clrscr();
				ltoa(counter,counterstr,10);
				printf("Record:%s",counterstr);
				fprintf(fo_dbf,"%s %s %s %s %s %s\r\n",an,bn,date,st,et,cd);
			}
			//fpos=ftell(fi_obj);
			if(ptrRec==NULL)
				m=1;
			else
				m=lenRec; //ptrRec-sourbuff+lenRec;
				sourbuff=sourbuff+m;  //lenRec;

		}//   End For(;;)

	}; //    End While
	free(ptrbuff);
	fclose(fi_obj);
	fclose(fo_dbf);

	return(0);
}

void _szx_disp(void)
{
	printf("Convert Program. Write by SunZhengxin .1999.");
	printf("\n\rConvert Tape file to Format Textfile .");
	printf("\n\r!!!For Ericsson As49 ChargBill Only!!!");
	printf("\r\nFormat:\r\n\tAS49ATSBILL.EXE [billfile] [outfile]");
	printf("\r\r");
	printf("\r\n\nExample:Convert.EXE Bill225 OutBill225");
	printf("\r\n\n\n");
}


char *findMark(char *buff, char *mark,int bufflen,int marklen)
{
	long int i,m,n;
	i=0;  m=0; // n=0;
	for (i=0;i<marklen;i++)
	{ if(buff[m+i]==mark[i])
			 continue;
		else
		{	 m++;
			 i=-1;
			 if(m>bufflen)return NULL;
			 else continue;
		}
	}
	return buff+m;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -