Aliohjelman aluksi etsitään onko kyse jostakin erikoisoperaatiosta. Mikäli ei ole toimitaan kuten ennenkin. Mikäli on kyse jostakin erikoisesta operaatiosta, poistetaan hakumaskin alusta operaatio.
/****************************************************************************/ int /* 1 = ei täsmää */ cJasen::tutki_tasmaako( /* 0 = täsmää */ const char *maski ,/* s Maski muutettuna isoiksi kirjaimeksi */ int knro /* s Kentän numero. */ ) { int i,tulos,ehto_ind=0; const char *m; cJasen mjasen; char ikentta[80]; // Kentän knro sisältö isoksi muutettuna merkkijonona kopioi_jono(N_S(ikentta),kentta_jonoksi(knro)); for (i=1; EHDOT[i].ehto; i++) if ( strstr(maski,EHDOT[i].ehto) == maski ) { ehto_ind = i; break; } m = maski+EHDOT[ehto_ind].pit; switch ( EHDOT[ehto_ind].kasky ) { case YHT: return wildmat(ikentta,m); case ERIS: return !wildmat(ikentta,m); case PIEN: case PIENYHT: case SUUR: case SUURYHT: mjasen.sijoita(knro,m); mjasen.tee_avain(knro); tee_avain(knro); tulos = strcmp(Avain(),mjasen.Avain()); switch ( EHDOT[ehto_ind].kasky ) { case PIEN: return !(tulos<0); case PIENYHT: return !(tulos<=0); case SUUR: return !(tulos>0); case SUURYHT: return !(tulos>=0); } default: return 1; } }