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

📄 as49atsb1.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   "000012                                          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);

main(char argc,char *argv[])
{
	FILE *fi_obj,*fi_hed,*fo_dbf;
	long  i,m,n,x,y,z;
	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
			//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;
				while(c==0)
				{ c=fgetc(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
				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
//if (counter>110000) break;
				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=ptrRec-sourbuff+lenRec;
			if (i<7)
				sourbuff=sourbuff+m;
			else
			{	i=0;
				sourbuff=sourbuff+lenRec;
			}

		}//   End For(;;)
		 //		numbps=atol(parm1[3]);ltoa(numbs+j,chrpar0,10);

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

	return(0);
}

void _szx_disp(void)
{
	printf("Convert Program. Write by SunZhengxin .1997.");
	printf("\n\rConvert Text file to Format file .");
	printf("\n\r!!!For Ericsson As49 ChargMeter Only!!!");
	printf("\r\nFormat:\r\n\tAS49CConvert.EXE [textfile] [outfile]");
	printf("\r\r");
	printf("\r\n\nExample:Convert.EXE Meter225 OutMeter225");
	printf("\r\n\n\n");
}

⌨️ 快捷键说明

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