/* sherryts.c * * * Emilio 4/1/99 * Updated program. * Emilio 3/3-9/99 * Wrote program. Debugged and ran. * * * COMPILE AS: gccemu sherryts * RUN AS: sherryts -o <name of output file> ******************************************************************************/ #include "emu.h" const char * cpszUsage = {"usage: sherryts \n\ \n\ Command-line switches specific to this program are:\n\ \n\ "}; /* local functions */ void Setup(void); void Process(void); void Output(void); /* local variables */ short ***out; int MaxTotPixels; int main(int argc, char *argv[]) { Initialize(&argc, argv, DOMASK); Setup(); Process(); Output(); CleanUp(); return(0); } /* ================================================================= */ void Setup(void) { int n, v, p, i; MaxTotPixels = 0; for (n=0; n < FlMskSitesN; n++) if (Masks[n].cellcount > MaxTotPixels) MaxTotPixels = Masks[n].cellcount; /* allocate memory and initialize out[][][] to 0.0 */ out = alloc3d_s(0,MskSitesN-1,0,nVars-1,0,MaxTotPixels-1); for (n=0; n < MskSitesN; n++) for (v=0; v < nVars; v++) for (i=0; i < MaxTotPixels; i++) out[n][v][i] = 0; } /* ================================================================= */ void Process(void) { int v, n, p, i, sindex; int bug=0; float *x; short *pvals; x = alloc1d_f(0,nRows*nCols-1); pvals = alloc1d_s(0,MskSitesN-1); for (v=0; v < nVars; v++) { ReadXY(x, pstVars[v], NONE, NONE); for (p=0; p < MskSitesN; p++) pvals[p] = 0; for (i=0; i < nRows*nCols; i++) if (masktest(pMask[i])) { sindex = siteindex(FlMskSitesIDs, pMask[i]); out[sindex][v][pvals[sindex]++] = (short) x[i]; } } /* END v FOR-LOOP (loop thru each variable) */ free1d_f(x,0,nRows*nCols-1); free1d_s(pvals,0,MskSitesN-1); } /* ================================================================= */ void Output(void) { FILE *fout; int v, n, p = 0; int bug=0; fout = OUTPUTfile(pszOutputFile, ".spect"); /* write out headers */ for (n=0; n < MskSitesN; n++) for (v=0; v < nVars; v++) fprintf(fout, "%d,", MskSitesIDs[n]); if (nVars > 1) { fprintf(fout, "\n"); for (n=0; n < MskSitesN; n++) for (v=0; v < nVars; v++) fprintf(fout, "band %d,", v+1); } /* write out data (out[][][]) */ for (p=0; p < MaxTotPixels; p++) { fprintf(fout, "\n"); for (n=0; n < MskSitesN; n++) if (p < Masks[n].cellcount) for (v=0; v < nVars; v++) fprintf(fout, "%d,", out[n][v][p]); else fprintf(fout, " ,"); } /* END p FOR-LOOP */ fclose(fout); } /* ================================================================= */ void ProcessCommandLineArgs(int * pArgc, char * argv[]) { } /* ================================================================= */ void LocalCleanUp(void) { free3d_s(out,0,MskSitesN-1,0,nVars-1,0,MaxTotPixels-1); }