gsub(/[.]/, " ", loc);
  nf = split(loc, locf);
  if (nf == 2) 
    { fnum = locf[1];
      if (match(locf[2], /^[A-Z]/))
        { unit = substr(locf[2],1,1);
          line = substr(locf[2],2);
        }
      else
        { unit = "";
          line = locf[2];
        }
    }
  else if (nf == 3) 
    { fnum = locf[1];
      unit = locf[2];
      line = locf[3]; 
    }
  else
    { error("bad location format"); }


First, the "bad" patterns:

    foreach sam ( ${samples} )
      echo " "; echo "${sam}"
      cat ${sam}-${maxlen}-srt.soc \
        | gawk '($9 ~ /[?*]/){print;}' \
        > ${sam}-${maxlen}-bad.soc
    end