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;
}
}