#include #include void open_archive(char *); void close_archive(void); void unpackSem2(short *); void main (int argc, char *argv[]){ FILE *fout; char arcfile[80],outfile[80]; short iend = 0; short i,j,rnum; extern struct archive_rec { long cSum; long ihd[4][6]; short cSumFlag; short major; short status[10]; short qual[16]; short minor[16]; short mdf[16][40]; float analog[17]; float head[4][27]; float ssLoc[16][2]; float mep0[16][9]; float mep90[16][9]; float mepOmni[16][4]; float ted0[16][8]; float ted30[16][8]; float ted0s[4][8]; float ted30s[4][8]; float tedback[4][2]; float tedfx[16][7]; } rec; if (argc < 3) { printf("Arguments: 1) Input archive file name\n"); printf(" 2) Output file name\n"); exit(0); } strcpy(arcfile,argv[1]); strcpy(outfile,argv[2]); /* printf("Archive file = %s\n",arcfile); */ /* Open the output file */ if (( fout = fopen(outfile,"w"))==NULL) { printf("Cannot open %s -- aborting.\n",outfile); exit(0); } /* Open the archive file */ open_archive(arcfile); rnum = 0; /* Daily POES archive data file has 2700 32-second records if it has a complete day */ while((rnum < 3000) && (iend == 0)){ unpackSem2(&iend); if(iend == 0) { fprintf(fout,"ihd:\n"); for(i=0; i<4; i++) { fprintf(fout,"%d %d %4d %3d %8ld %4d %5d\n", i,rec.ihd[i][0],rec.ihd[i][1],rec.ihd[i][2], rec.ihd[i][3],rec.ihd[i][4],rec.ihd[i][5]); } fprintf(fout,"ssLoc:\n"); for(i=0; i<16; i++) { fprintf(fout,"%d %6.2f %6.2f\n",i,rec.ssLoc[i][0],rec.ssLoc[i][1]); } fprintf(fout,"status:\n"); for(i=0; i<10; i++) fprintf(fout,"%4d ",rec.status[i]); fprintf(fout,"\n"); fprintf(fout,"qual:\n"); for(i=0; i<16; i++) fprintf(fout,"%3d ",rec.qual[i]); fprintf(fout,"\n"); fprintf(fout,"minor:\n"); for(i=0; i<16; i++) fprintf(fout,"%4d ",rec.minor[i]); fprintf(fout,"\n"); fprintf(fout,"mdf:\n"); for(i=0; i<40; i++) { fprintf(fout,"%3d ",i); for(j=0; j<16; j++) fprintf(fout,"%2d ",rec.mdf[j][i]); fprintf(fout,"\n"); } fprintf(fout,"analog:\n"); for(i=0; i<8; i++) fprintf(fout,"%8.2f ",rec.analog[i]); fprintf(fout,"\n"); for(i=8; i<16; i++) fprintf(fout,"%8.2f ",rec.analog[i]); fprintf(fout,"\n"); fprintf(fout,"head:\n"); for(j=0; j<27; j++) fprintf(fout,"%3d %10.2f %10.2f %10.2f %10.2f\n", j,rec.head[0][j],rec.head[1][j],rec.head[2][j], rec.head[3][j]); fprintf(fout,"mep0:\n"); for(j=0; j<16; j++) { fprintf(fout,"%2d ",j); for(i=0; i<9; i++) fprintf(fout,"%8.2f ",rec.mep0[j][i]); fprintf(fout,"\n"); } fprintf(fout,"mep90:\n"); for(j=0; j<16; j++) { fprintf(fout,"%2d ",j); for(i=0; i<9; i++) fprintf(fout,"%8.2f ",rec.mep90[j][i]); fprintf(fout,"\n"); } fprintf(fout,"mepOmni:\n"); for(j=0; j<16; j++) { fprintf(fout,"%2d %10.2f %10.2f %10.2f %10.2f\n", j,rec.mepOmni[j][0],rec.mepOmni[j][1], rec.mepOmni[j][2],rec.mepOmni[j][3]); } fprintf(fout,"ted0:\n"); for(j=0; j<16; j++) { fprintf(fout,"%2d ",j); for(i=0; i<8; i++) fprintf(fout,"%8.2f ",rec.ted0[j][i]); fprintf(fout,"\n"); } fprintf(fout,"ted30:\n"); for(j=0; j<16; j++) { fprintf(fout,"%2d ",j); for(i=0; i<8; i++) fprintf(fout,"%8.2f ",rec.ted30[j][i]); fprintf(fout,"\n"); } fprintf(fout,"ted0s:\n"); for(j=0; j<4; j++) { fprintf(fout,"%2d ",j); for(i=0; i<8; i++) fprintf(fout,"%8.2f ",rec.ted0s[j][i]); fprintf(fout,"\n"); } fprintf(fout,"ted30s:\n"); for(j=0; j<4; j++) { fprintf(fout,"%2d ",j); for(i=0; i<8; i++) fprintf(fout,"%8.2f ",rec.ted30s[j][i]); fprintf(fout,"\n"); } fprintf(fout,"tedback:\n"); for(j=0; j<4; j++) { fprintf(fout,"%2d ",j); for(i=0; i<2; i++) fprintf(fout,"%8.2f ",rec.tedback[j][i]); fprintf(fout,"\n"); } fprintf(fout,"tedfx:\n"); for(j=0; j<16; j++) { fprintf(fout,"%2d ",j); for(i=0; i<7; i++) fprintf(fout,"%8.2f ",rec.tedfx[j][i]); fprintf(fout,"\n"); } fprintf(fout,"=========================================\n"); rnum = rnum+1; } /* End if */ } /* End do */ printf("Records read: %d\n",rnum--); close_archive(); close(fout); printf("Done\n"); }