#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, dumb1, dumb2, dumb3; int yr, mo, da, error, unit, nvar, nfiles, cfile,i, itime[6]; long orow, pos, lpos; 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); strcpy(stat,strmid(filein,8,3)); if (strpos(stat,"bsl") >= 0) strcpy(stat,"BSL"); if (strpos(stat,"cmo") >= 0) strcpy(stat,"CMO"); if (strpos(stat,"bou") >= 0) strcpy(stat,"BOU"); if (strpos(stat,"dlr") >= 0) strcpy(stat,"DLR"); if (strpos(stat,"frd") >= 0) strcpy(stat,"FRD"); if (strpos(stat,"frn") >= 0) strcpy(stat,"FRN"); if (strpos(stat,"hon") >= 0) strcpy(stat,"HON"); if (strpos(stat,"new") >= 0) strcpy(stat,"NEW"); if (strpos(stat,"sit") >= 0) strcpy(stat,"SIT"); if (strpos(stat,"sjg") >= 0) strcpy(stat,"SJG"); if (strpos(stat,"tuc") >= 0) strcpy(stat,"TUC"); change_station_name(stat); orow = 0; error = 0; for (i=0; i<16; i++) fgets(line,79,fpin); while ((!feof(fpin)) && (!error)) { fgets(line,79,fpin); if (orow == 0) { itime[0] = atoi(strmid(line,0,2)); itime[1] = atoi(strmid(line,2,2)); itime[2] = atoi(strmid(line,4,2)); printf("reading YY DD : %3li%3li%3li \n",itime[0],itime[1],itime[2]); itime[3] = 0; itime[4] = 0; itime[5] = 0; dt = 60.; basetime = c_i_to_r(itime); c_r_to_i(itime, basetime); 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("after C_to_i YY DD : %3li%3li \n",itime[0],itime[2]); strcpy(ff_var,"time,"); strcat(ff_var,stat); strcat(ff_var,"H,"); strcat(ff_var,stat); strcat(ff_var,"D,"); 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 + atof(strmid(line,7,2))*3600.0 + atof(strmid(line,9,2))*60.; if (uttime-basetime < 24.0*3600.0) { for (i=0;i<3; i++) { data[i] = atof(strmid(line,11+i*8,8))/10.;} h = data[0]; d = data[1]; if ((h<99999.0) && (d<99999.0)) { d = d*pi/(60.*180.); data[0] = h*cos(d); data[1] = h*sin(d);} for (i=0; i<3; i++) { if (data[i] < 99999.) { dataout[i] = data[i];} else { dataout[i] = missing; }} error = fdput(unit,orow,uttime,dataout); orow++; } else { error = 1; } } close(fpin); ffclose(unit); } }