include include "refspectra.h" # REFNEAREST -- Assign nearest reference spectrum based on sort key. procedure refnearest (input, refs) pointer input # List of input spectra pointer refs # List of reference spectra bool ignoreaps # Ignore apertures? int i, i1, nrefs, ap double sortval, d, d1 pointer sp, image, gval, refimages, refaps, refvals, refgvals bool clgetb(), streq(), refginput(), refgref() int imtgetim(), imtlen() begin call smark (sp) call salloc (image, SZ_FNAME, TY_CHAR) # Task parameters ignoreaps = clgetb ("ignoreaps") # Tabulate reference spectra. This expands the reference list, # checks the spectrum is a reference spectrum of the appropriate # aperture. call salloc (refimages, imtlen (refs), TY_POINTER) call salloc (refaps, imtlen (refs), TY_INT) call salloc (refvals, imtlen (refs), TY_DOUBLE) call salloc (refgvals, imtlen (refs), TY_POINTER) nrefs = 0 while (imtgetim (refs, Memc[image], SZ_FNAME) != EOF) { call refnoextn (Memc[image]) if (!refgref (Memc[image], ap, sortval, gval)) next for (i=0; i 0) # Assign nearest reference spectrum call refspectra (Memc[image], Memc[Memi[refimages+i1-1]], 1., Memc[Memi[refimages+i1-1]], 0.) else { # No reference spectrum found call refprint (STDERR, NO_REFSPEC, Memc[image], "", "", "", ap, 0, "") do i = 1, nrefs { if (!streq (Memc[gval], Memc[Memi[refgvals+i-1]])) { call refprint (STDERR, REF_GROUP, Memc[image], Memc[Memi[refimages+i-1]], Memc[gval], Memc[Memi[refgvals+i-1]], ap, Memi[refaps+i-1], "") next } if (!ignoreaps && ap != Memi[refaps+i-1]) call refprint (STDERR, REF_AP, Memc[image], Memc[Memi[refimages+i-1]], Memc[gval], Memc[Memi[refgvals+i-1]], ap, Memi[refaps+i-1], "") next } } } call sfree (sp) end