📄 as49ccov.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 "HSNB"
#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;
int i,m,n,counter;
char sourbuff[200];
char parm1[8][10],JuTou[10],yyh[10];
char output[8][10];
char filename1[80]=SOURFILE;
char filename3[80]=DTBFFILE;
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);
for(m=0;m<200;m++)sourbuff[m]=NULL;
clrscr();
_szx_disp();
counter=0;
i=0; //Line counter of source file //I 字段计数器
//Main Loop
while(!(feof(fi_obj)))
{
//Main Buffer "sourbuff"
fgets(sourbuff,200,fi_obj);
i++;
sscanf(sourbuff,"%s%s%s%s%s%s%s%s",parm1[0],parm1[1],parm1[2],parm1[3],
parm1[4],parm1[5],parm1[6],parm1[7]);
while (strcmp(parm1[0],HeadMark))
{
fgets(sourbuff,200,fi_obj); //Search Record Head
if(feof(fi_obj))break;
i++;
sscanf(sourbuff,"%s%s%s%s%s%s%s%s",parm1[0],parm1[1],parm1[2],parm1[3],
parm1[4],parm1[5],parm1[6],parm1[7]);
if(feof(fi_obj))break; //if arrived eof exit
}
fgets(sourbuff,200,fi_obj); //get a Record to buffer
if(feof(fi_obj))break;
i++;
//distribut buffer to varible
sscanf(sourbuff,"%s%s%s%s%s%s%s%s",parm1[0],parm1[1],parm1[2],parm1[3],
parm1[4],parm1[5],parm1[6],parm1[7]);
if(!strcmp(parm1[0],"WO")) //skip title
{
fgets(sourbuff,200,fi_obj); //get a Record to buffer
m=strlen(sourbuff);
if(feof(fi_obj))break;
i++;
//distribut buffer to variable
sscanf(sourbuff,"%s%s%s%s%s%s%s%s",parm1[0],parm1[1],parm1[2],parm1[3],
parm1[4],parm1[5],parm1[6],parm1[7]);
}
//Now variable Ready
//Record Fromat Analysis
//Output Record
switch (strlen(parm1[0])){
//The Recoder Have a HeadNumber (First varable Length = 5)
case 5:strcpy(JuTou,parm1[0]); //Get New Jutou
strcpy(yyh,JuTou);
strcat(yyh,parm1[1]); //Make Subscriber Number
n=3;
while(strlen(parm1[n])!=8)
{
n++;
if(n>4)
{
printf("\nError!! At Line %i",i);
printf("\n%s",sourbuff);
exit(1);
}
}
strcpy(output[0],parm1[n]); strcpy(output[1],parm1[n+1]);
strcpy(output[2],parm1[n+2]);strcpy(output[3],parm1[n+3]);
for(n=0;n<4;n++)
{
if(strlen(output[n])!=8)
{
printf("\nError!! At Line %i",i);
printf("\n%s",sourbuff);
exit(1);
}
}
fprintf(fo_dbf,"%s %s %s %s %s\r\n",yyh,output[0],output[1],
output[2],output[3]);
counter++;
//clrscr();
gotoxy(40,20);
printf("Record:%i",counter);
break;
//The Recoder Haven't HeadNumber ( First Varable Lengther = 2)
case 2:strcpy(yyh,JuTou);
strcat(yyh,parm1[0]); //Make Subcriber Number
n=2;
while(strlen(parm1[n])!=8)
{
n++;
if(n>3)
{
printf("\nError!! At Line %i",i);
printf("\n%s",sourbuff);
exit(1);
}
}
//Read Meter
strcpy(output[0],parm1[n]); strcpy(output[1],parm1[n+1]);
strcpy(output[2],parm1[n+2]);strcpy(output[3],parm1[n+3]);
for(n=0;n<4;n++)
{
if(strlen(output[n])!=8)
{
printf("\nError!! At Line %i",i);
printf("\n%s",sourbuff);
exit(1);
}
}
fprintf(fo_dbf,"%s %s %s %s %s\r\n",yyh,output[0],output[1],
output[2],output[3]);
counter++;
gotoxy(40,20);
printf("Record:%i",counter);
break;
default:printf("\r\nError!! At Line %i",i);
printf("\r\n%s",sourbuff);
exit(1);
}
// numbps=atol(parm1[3]); numbpe=atol(parm3[0]);
// ltoa(numbs+j,chrpar0,10);
// ltoa(numbps+j,chrpar3,10);
};
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 + -