#include "stdio.h" #include "flatfile.h" #include "string.h" #include "astring.h" #include "stdlib.h" #include "amag.h" #include "math.h" #include "misc.h" void main(int argc, char *argv[]) { char ff_var[100],ff_units[100],ff_source[100],ff_type[100]; char ff_notes[300], filein[100], fileout[100]; char line[80], stat[4]; float dataout[4],data[4], missing,dt,pi,h,d; double uttime,basetime, utold, dumb1, dumb2, dumb3; int yr, mo, da, error, unit, nvar, k, nfiles, cfile, itime[6]; long orow, pos, lpos, row, i; FILE *fpin; missing = -1.0e32; pi = 3.1415; if (argc < 2) { printf("Enter filename to convert : "); gets(filein); nfiles = 1; } else { nfiles = argc - 1; strcpy(filein, argv[1]); } for (cfile=1;cfile<=nfiles;cfile++) { if (cfile > 1) strcpy(filein,argv[cfile]); fpin = fopen(filein,"r"); printf("reading file : %s\n",filein); fgets(line,79,fpin); itime[0] = atoi(strmid(line,35,2)); itime[1] = 0; itime[2] = atoi(strmid(line,37,3)); itime[3] = 0; itime[4] = 0; itime[5] = 0; basetime = c_i_to_r(itime); c_r_to_i(itime, basetime); fgets(line,79,fpin); fgets(line,79,fpin); strcpy(stat,mkupper(strmid(filein,0,2))); if (strpos(stat,"BL") >= 0) strcpy(stat,"BLC"); if (strpos(stat,"CB") >= 0) strcpy(stat,"CBB"); if (strpos(stat,"CD") >= 0) strcpy(stat,"CDC"); if (strpos(stat,"GH") >= 0) strcpy(stat,"GHC"); if (strpos(stat,"GW") >= 0) strcpy(stat,"GWC"); if (strpos(stat,"CH") >= 0) strcpy(stat,"CHC"); if (strpos(stat,"CY") >= 0) strcpy(stat,"CYC"); if (strpos(stat,"IG") >= 0) strcpy(stat,"IGC"); if (strpos(stat,"PB") >= 0) strcpy(stat,"PBC"); if (strpos(stat,"PG") >= 0) strcpy(stat,"PGC"); if (strpos(stat,"RB") >= 0) strcpy(stat,"RPB"); if (strpos(stat,"RP") >= 0) strcpy(stat,"RPB"); if (strpos(stat,"RE") >= 0) strcpy(stat,"RPB"); if (strpos(stat,"IQ") >= 0) strcpy(stat,"IQA"); if (strpos(stat,"MC") >= 0) strcpy(stat,"MCM"); if (strpos(stat,"SP") >= 0) strcpy(stat,"SPA"); if (strpos(stat,"NA") >= 0) strcpy(stat,"NAN"); if (strpos(stat,"P1") >= 0) strcpy(stat,"PP1"); if (strpos(stat,"P2") >= 0) strcpy(stat,"PP2"); if (strpos(stat,"P3") >= 0) strcpy(stat,"PP3"); if (strpos(stat,"P4") >= 0) strcpy(stat,"PP4"); if (strpos(stat,"P5") >= 0) strcpy(stat,"PP5"); if (strpos(stat,"P6") >= 0) strcpy(stat,"PP6"); row = 0; utold = 0.0; orow = 0; error = 0; for (i=0;i<86400;i++) { fgets(line,79,fpin); if (strpos(line,"EOF") >= 0) error=1; if ((!feof(fpin)) && (!error)) { if (orow==0) { strcpy(fileout,mklower(stat)); strcat(fileout,c_int_str(itime[0],2)); strcat(fileout,c_int_str(itime[1],2)); strcat(fileout,c_int_str(itime[2],2)); printf("fileout : %s\n",fileout); strcpy(ff_var,"time,"); strcat(ff_var,stat); strcat(ff_var,"X,"); strcat(ff_var,stat); strcat(ff_var,"Y,"); strcat(ff_var,stat); strcat(ff_var,"Z"); strcpy(ff_units, "s,nT,nT,nT"); strcpy(ff_source,"from file listed below,same,same,same"); strcpy(ff_type,"T,R,R,R"); strcpy(ff_notes,"Converted from file : "); strcat(ff_notes,filein); nvar = 4; error = mkhead(fileout,nvar,ff_var,ff_units,ff_source, ff_type,ff_notes); if (!error) unit = ffcreate(fileout); if (error || unit == -1) error = 1; } uttime = basetime + (double) atof(strmid(line,0,12)); for (k=0;k<3; k++) { dataout[k] = atof(strmid(line,12+12*k,12)); if ((dataout[k] > 90000.0) || (dataout[k] == 32767.0)) { dataout[k] = missing; } } if (uttime > utold) { error = fdput(unit,row,uttime,dataout); row++; utold = uttime; } orow++; } } } close(fpin); ffclose(unit); }