#include #include #include #include #include #include "nrutil.h" #include "nrutil.c" #include "UVStruct.c" #include "UVCommon.c" void main(void) { int i, j, data_flg; int item, aux_step; int n_col, n_file, n_row, ok; int day, hh, mm; float x_in, y_in; float **data; char st[128], st2[128]; char sch_file[20], in_file[20], out_file[20], prev_file[20]; struct scan_header NSF; FILE *fp_sch, *fp_in, *fp_out, *fp_data; printf("Line Schedule File: "); // schedule of scans scanf("%s", &sch_file); fp_sch = fopen(sch_file, "r"); fp_in = fopen("test.txt", "r"); fp_data = fopen("96FL.NSF", "w"); // compilation of header data fprintf(fp_data, "Header:\n"); fprintf(fp_data, "Number_of_columns\t24\n"); fprintf(fp_data, "Labels:\n"); fprintf(fp_data, "File\tInstrument\tSource\tLocation\tEnvironment\t"); fprintf(fp_data, "Year\tDay\tDate\tOperation\tMeasurement_type\t"); fprintf(fp_data, "Measurement_purpose\tNumber_of_scans\tNumber_of_columns\t"); fprintf(fp_data, "Number_of_rows\tStart_time\tStop_time\t"); fprintf(fp_data, "Start_wavelength\tStop_wavelength\tIncrement_wavelength\t"); fprintf(fp_data, "Integration_time\tPMT_voltage\t"); fprintf(fp_data, "Comments\tData_file\tAnalysis_file\n"); fprintf(fp_data, "\t\t\t\t\t\t\t\t\t\t\t\t\t\t"); fprintf(fp_data, "[UTC]\t[UTC]\t[nm]\t[nm]\t[nm]\t[s]\t[V]\n"); fprintf(fp_data, "Data:\n"); fscanf(fp_sch, "%s %s %d", &st, &st, &n_col); // read schedule file header do{ fscanf(fp_sch, "%s", &st); } while(strcmp(st, "Data:") != 0); while(fscanf(fp_sch, "%s", &in_file) != EOF){ // read schedule file info strcpy(NSF.data_file, in_file); fscanf(fp_sch, "%d", &i); fscanf(fp_sch, "%s", NSF.inst); fscanf(fp_sch, "%s", NSF.source); fscanf(fp_sch, "%s", NSF.locat); fscanf(fp_sch, "%s", NSF.envir); fscanf(fp_sch, "%s", NSF.operat); fscanf(fp_sch, "%s", NSF.meas_type); fscanf(fp_sch, "%s", NSF.meas_purp); fscanf(fp_sch, "%s", NSF.comments); if(strcmp(in_file, prev_file) != 0){ // check if in_file exists fclose(fp_in); fp_in = fopen(in_file, "r"); } strcpy(prev_file, in_file); printf("%s\t", in_file); // load data do{ // load header info fscanf(fp_in, "%s", &st); } while(strcmp(st, "Item") != 0); fscanf(fp_in, "%d", &item); do{ fscanf(fp_in, "%s", &st); } while(strcmp(st, "time") != 0); fscanf(fp_in, "%s%s", &st, &st); sscanf(st, "%d:%d", &hh, &mm); NSF.start_time = hh + (float)mm/60.0; do{ fscanf(fp_in, "%s", &st); } while(strcmp(st, "time") != 0); fscanf(fp_in, "%s%s", &st, &st); sscanf(st, "%d:%d", &hh, &mm); NSF.stop_time = hh + (float)mm/60.0; do{ fscanf(fp_in, "%s", &st); } while(strcmp(st, "time") != 0); fscanf(fp_in, "%s", &st); sscanf(st, "%fsec", &NSF.int_time); do{ fscanf(fp_in, "%s", &st); } while(strcmp(st, "voltage") != 0); fscanf(fp_in, "%s", &st); sscanf(st, "%fV", &NSF.PMT_volt); do{ fscanf(fp_in, "%s", &st); } while(strcmp(st, "wavelength") != 0); fscanf(fp_in, "%s", &st); sscanf(st, "%fnm", &NSF.start_wl); do{ fscanf(fp_in, "%s", &st); } while(strcmp(st, "wavelength") != 0); fscanf(fp_in, "%s", &st); sscanf(st, "%fnm", &NSF.stop_wl); do{ fscanf(fp_in, "%s", &st); } while(strcmp(st, "wavelength") != 0); fscanf(fp_in, "%s", &st); sscanf(st, "%fnm", &NSF.inc_wl); do{ fscanf(fp_in, "%s", &st); } while(strcmp(st, "points") != 0); fscanf(fp_in, "%d", &NSF.n_row); do{ fscanf(fp_in, "%s", &st); } while(strcmp(st, "AXSS") != 0); fscanf(fp_in, "%d", &aux_step); do{ fscanf(fp_in, "%s", &st); } while(strcmp(st, "Frequency") != 0); fscanf(fp_in, "%s", &st); data = matrix(1, NSF.n_row, 1, 3); // load data for(i = 1; i <= NSF.n_row; i++){ fscanf(fp_in, "%f%f%f%f", &x_in, &y_in, &x_in, &y_in); data[i][1] = x_in; data[i][2] = y_in; data[i][3] = 0; // no uncertainty if(fmod((i-1), aux_step) == 0){ for(j = 1; j <= 10; j++){ fscanf(fp_in, "%f", &x_in); } } } sscanf(in_file, "%8s.%3d", &st, &NSF.day); NSF.year = 1996; day_to_date(1996, NSF.day, NSF.date); n_file = 1; do{ if(n_file < 10){ sprintf(out_file, "96%03dFL%1d.NSF", NSF.day, n_file); } else{ sprintf(out_file, "96%03dFL%c.NSF", NSF.day, n_file + 55); } ok = file_exist(out_file); n_file++; } while(ok == 1); fp_out = fopen(out_file, "w"); printf("%s\n", out_file); // store header in files fprintf(fp_data, "%s\t", out_file); fprintf(fp_out, "Header:\n"); fprintf(fp_out, "Instrument\t%s\n", NSF.inst); fprintf(fp_data, "%s\t", NSF.inst); fprintf(fp_out, "Source\t%s\n", NSF.source); fprintf(fp_data, "%s\t", NSF.source); fprintf(fp_out, "Location\t%s\n", NSF.locat); fprintf(fp_data, "%s\t", NSF.locat); fprintf(fp_out, "Environment\t%s\n", NSF.envir); fprintf(fp_data, "%s\t", NSF.envir); fprintf(fp_out, "Year\t%d\n", NSF.year); fprintf(fp_data, "%d\t", NSF.year); fprintf(fp_out, "Day\t%d\n", NSF.day); fprintf(fp_data, "%d\t", NSF.day); fprintf(fp_out, "Date\t%s\n", NSF.date); fprintf(fp_data, "%s\t", NSF.date); fprintf(fp_out, "Operation\t%s\n", NSF.operat); fprintf(fp_data, "%s\t", NSF.operat); fprintf(fp_out, "Measurement_type\t%s\n", NSF.meas_type); fprintf(fp_data, "%s\t", NSF.meas_type); fprintf(fp_out, "Measurement_purpose\t%s\n", NSF.meas_purp); fprintf(fp_data, "%s\t", NSF.meas_purp); fprintf(fp_out, "Number_of_scans\t1\n"); fprintf(fp_data, "1\t"); fprintf(fp_out, "Number_of_columns\t3\n"); fprintf(fp_data, "3\t"); fprintf(fp_out, "Number_of_rows\t%d\n", NSF.n_row); fprintf(fp_data, "%d\t", NSF.n_row); fprintf(fp_out, "Start_time\t%.5f\t[UTC]\n", NSF.start_time); fprintf(fp_data, "%.5f\t", NSF.start_time); fprintf(fp_out, "Stop_time\t%.5f\t[UTC]\n", NSF.stop_time); fprintf(fp_data, "%.5f\t", NSF.stop_time); fprintf(fp_out, "Start_wavelength\t%.2f\t[nm]\n", NSF.start_wl); fprintf(fp_data, "%.2f\t", NSF.start_wl); fprintf(fp_out, "Stop_wavelength\t%.2f\t[nm]\n", NSF.stop_wl); fprintf(fp_data, "%.2f\t", NSF.stop_wl); fprintf(fp_out, "Increment_wavelength\t%.2f\t[nm]\n", NSF.inc_wl); fprintf(fp_data, "%.2f\t", NSF.inc_wl); fprintf(fp_out, "Integration_time\t%.4f\t[s]\n", NSF.int_time); fprintf(fp_data, "%.4f\t", NSF.int_time); fprintf(fp_out, "PMT_voltage\t%.2f\t[V]\n", NSF.PMT_volt); fprintf(fp_data, "%.2f\t", NSF.PMT_volt); fprintf(fp_out, "Comments\t%s\n", NSF.comments); fprintf(fp_data, "%s\t", NSF.comments); fprintf(fp_out, "Data_file\t%s\n", NSF.data_file); fprintf(fp_data, "%s\t", NSF.data_file); fprintf(fp_out, "Analysis_program\tFmt_96NSF_Ln.c\n"); fprintf(fp_data, "Fmt_96NSF_Ln.c\n"); fprintf(fp_out, "Labels:\n"); fprintf(fp_out, "Wavelength\tSignal\tdS/S\n"); fprintf(fp_out, "[nm]\t[nA]\n"); fprintf(fp_out, "Data:\n"); for(i = 1; i <= NSF.n_row; i++){ fprintf(fp_out, "%.4f\t%.4f\t%.4f\n", data[i][1], data[i][2], data[i][3]); } fclose(fp_out); } fclose(fp_in); fclose(fp_sch); fclose(fp_data); }