#include "stdio.h" #include "flatfile.h" #include "string.h" #include "astring.h" #include "stdlib.h" #include "amag.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], rem[2]; float dataout[4], missing, dt; double uttime,basetime, dumb1, dumb2, dumb3; int yr, mo, da, error, unit, nvar, nfiles, cfile,i, itime[6], order[3],n; long orow, pos, lpos; FILE *fpin; missing = -1.0e32; 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); orow = 0; error = 0; fgets(line,79,fpin); strcpy(rem,strmid(line,0,2)); strcpy(stat,strmid(line,0,2)); if (strpos(stat,"fa") >= 0) strcpy(stat,"FAR"); if (strpos(stat,"no") >= 0) strcpy(stat,"NOR"); if (strpos(stat,"gm") >= 0) strcpy(stat,"GML"); if (strpos(stat,"ha") >= 0) strcpy(stat,"HAN"); if (strpos(stat,"nu") >= 0) strcpy(stat,"NUR"); if (strpos(stat,"yo") >= 0) strcpy(stat,"YOR"); if (strpos(stat,"kv") >= 0) strcpy(stat,"KVI"); if (strpos(stat,"ou") >= 0) strcpy(stat,"OUL"); if (strpos(stat,"hl") >= 0) strcpy(stat,"HLL"); if (strpos(stat,"ki") >= 0) strcpy(stat,"KIL"); if (strpos(stat,"bo") >= 0) strcpy(stat,"BOR"); if (strpos(stat,"cr") >= 0) strcpy(stat,"CRK"); if (strpos(stat,"es") >= 0) strcpy(stat,"ESK"); if (strpos(stat,"hd") >= 0) strcpy(stat,"HAD"); if (strpos(stat,"le") >= 0) strcpy(stat,"LER"); if (strpos(stat,"oj") >= 0) strcpy(stat,"OUJ"); if (strpos(stat,"la") >= 0) strcpy(stat,"LAN"); if (strpos(stat,"ln") >= 0) strcpy(stat,"LAN"); if (strpos(stat,"up") >= 0) strcpy(stat,"UPS"); change_station_name(stat); dt = 5; itime[0] = atoi(strmid(line,10,2)); itime[1] = atoi(strmid(line,5,2)); itime[2] = atoi(strmid(line,2,2)); itime[3] = atoi(strmid(line,13,2)); itime[4] = atoi(strmid(line,15,2)); itime[5] = atoi(strmid(line,17,2)); basetime = c_i_to_r(itime); c_r_to_i(itime, basetime); strcpy(fileout,mklower(stat)); strcat(fileout,strmid(line,10,2)); strcat(fileout,c_int_str(itime[1],2)); strcat(fileout,c_int_str(itime[2],2)); strcpy(ff_var,"time,"); strcat(ff_var,stat); strcat(ff_var,"H,"); strcat(ff_var,stat); strcat(ff_var,"E,"); 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; n = 0; dt = 5.0; order[0] = 0; order[1] = 1; order[2] = 2; while ((!feof(fpin)) && (!error)) { fgets(line,79,fpin); strcpy(stat,strmid(line,0,2)); if (strcmp(stat,strmid(rem,0,2)) != 0) { uttime = basetime + (double) dt * (double) orow; if (dt*(float) orow < 24.0*3600.0) { for (i=0;i<3; i++) { dataout[order[i]] = atof(strmid(line,i*8,7)); if (dataout[order[i]] == 0.0) dataout[order[i]] = missing; if (dataout[order[i]] > 9999.0) dataout[order[i]] = missing; } /* dataout[order[i]] = atof(strmid(line,i*7,6)); if (dataout[order[i]] > 1024.0) dataout[order[i]] = missing; } */ error = fdput(unit,orow,uttime,dataout); orow++; } else { error = 1; } } } close(fpin); ffclose(unit); } }