#include "stdio.h" #include "flatfile.h" #include "astring.h" #include "string.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[200], stat[4], slat[10], slon[10]; float dataout[4], missing, dt; double uttime,uttime0,basetime, utold; int error, unit, nvar, nfiles, cfile, i, itime[6]; long orow, nlines, row; 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; itime[0] = atoi(strmid(filein,2,2)); itime[1] = atoi(strmid(filein,4,2)); itime[2] = atoi(strmid(filein,6,2)); itime[3] = 0; itime[4] = 0; itime[5] = 0; basetime = c_i_to_r(itime); c_r_to_i(itime, basetime); printf("%ld%ld %ld\n",itime[0],itime[2],basetime); fgets(line,200,fpin); fgets(line,200,fpin); printf("%s\n",strmid(line,22,10)); if (strpos(line,"Baker Lake") >= 0) { strcpy(stat,"BLC"); strcpy(slat,"64.33"); strcpy(slon,"264.0"); } if (strpos(line,"Cape Dorset") >= 0) { strcpy(stat,"CDC"); strcpy(slat,"64.20"); strcpy(slon,"283.4"); } if (strpos(line,"Great Whale") >= 0) { strcpy(stat,"GWC"); strcpy(slat,"55.27"); strcpy(slon,"282.22"); } if (strpos(line,"Cambridge Bay") >= 0) { strcpy(stat,"CBB"); strcpy(slat,"69.10"); strcpy(slon,"255.0"); } if (strpos(line,"Coral") >= 0) { strcpy(stat,"CHC"); strcpy(slat,"64.10"); strcpy(slon,"276.80"); } if (strpos(line,"Clyde River") >= 0) { strcpy(stat,"CYC"); strcpy(slat,"70.50"); strcpy(slon,"291.40"); } if (strpos(line,"Gjoa Haven") >= 0) { strcpy(stat,"GHC"); strcpy(slat,"68.60"); strcpy(slon,"264.1"); } if (strpos(line,"Igloolik") >= 0) { strcpy(stat,"IGC"); strcpy(slat,"69.30"); strcpy(slon,"278.2"); } if (strpos(line,"Pelly Bay") >= 0) { strcpy(stat,"PBC"); strcpy(slat,"68.50"); strcpy(slon,"270.30"); } if (strpos(line,"Pangnirtung") >= 0) { strcpy(stat,"PGC"); strcpy(slat,"66.10"); strcpy(slon,"294.20"); } if (strpos(line,"Resol") >= 0) { strcpy(stat,"RBC"); strcpy(slat,"74.70"); strcpy(slon,"265.2"); } if (strpos(line,"Repulse") >= 0) { strcpy(stat,"RPB"); strcpy(slat,"66.50"); strcpy(slon,"273.8"); } if (strpos(line,"P4") >= 0) { strcpy(stat,"AG4"); strcpy(slat,"-82.0"); strcpy(slon,"96.8"); } if (strpos(line,"luit") >= 0) { strcpy(stat,"IQA"); strcpy(slat,"63.45"); strcpy(slon,"291.7"); } change_station_name(stat); 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("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); strcat(ff_notes,",Latitude : "); strcat(ff_notes,slat); strcat(ff_notes,",Longitude : "); strcat(ff_notes,slon); 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; row = 0; utold = 0.0; for (i=0;i<13; i++) fgets(line,79,fpin); while ((!feof(fpin)) && (!error)) { fgets(line,79,fpin); uttime = basetime + atof(strmid(line,15,2))*3600.0 + atof(strmid(line,19,2))*60. +atof(strmid(line,23,2)); if (uttime-basetime < 24.0*3600.0 && uttime-uttime0 >= 0.) { for (i=0;i<3; i++) { dataout[i] = atof(strmid(line,26+i*11,10)); if (dataout[i] == 32767.0) dataout[i] = missing; } uttime0 = uttime; error = fdput(unit,orow,uttime,dataout); orow++; } else { error = 1; } } close(fpin); ffclose(unit); } }