Seuraava on hahmotelma siitä, miten cJasen voisi alustaa avaimensa. Jos on käytössä "viisaat kenttä- luokat", niin silloin tietenkin kukin kenttä itse osaa muuttua avaimeksi.
/****************************************************************************/
void cJasen::tee_avain(int kentan_nro)
{
avain = kentta(kentan_nro).getAvain();
}
"Tyhmästä versio" voisi olla seuraavan näköinen:
/****************************************************************************/
void cJasen::tee_avain(int kentan_nro)
{
char s[20]; string st;
int i; double d;
switch (kentan_nro) {
case 1: case 3: case 5: // yms. merkkijonot
avain = kentta_jonoksi(kentan_nro);
poista_tyhjat(avain);
for (i=avain.length(); i++)
avain[i] = JARJESTYS.Avainarvo(avain[i]);
poista_tyhjat(avain);
return;
case 2: // hetukenttä
st = hetu + " ";
avain = st;
avain[0] = st[4]; /* Vaihdetaan pv ja vuosi keskenään! */
avain[1] = st[5];
avain[4] = st[0];
avain[5] = st[1];
return;
case 9: // kokonaislukukentät
i = liittymisvuosi;
sprintf(s,"%+05d",i);
avain = s;
if ( avain[0] == '- ' ) avain[0]='+'- 1; /* jotta - < + */
return;
case 10: case 11: // yms. desimaalikentät
d = kentta_doubleksi(kentan_nro); // Tätä ei ole, mutta tehtäisiin.
sprintf(s,"%+015.7lf",d);
avain = s;
if ( avain[0] == '- ' ) avain[0]='+'- 1; /* jotta - < + */
return;
default:
avain = "";
return;
}
}