Yo haría un array('a'..'z') de tipo character --> type alfabeto is array(1..26) of character; .
A partir de aquí, declaramos dos variables de este tipo: uno para las mayúsculas y otro para las minúsculas.
Es decir:
Mayusculas: alfabeto:=('a','b','c','d','e',...,'z');
Minusculas: alfabeto:=('A','B','C','D','E',...,'Z');
Ahora hacemos la función que nos compara los carácteres:
funcion igual(A,B: in character) return boolean is
type alfabeto is array(1..26) of character;
mayusculas: alfabeto:=("abcdefghijklmnopqrstuvwxyz"); -- Es mas rápido escribirlo así.
minusculas: alfabeto:=("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
I:integer:=1;
num_letra1,num_letra2:integer;
begin
while I<26 loop
if A=mayusculas(I) or A=minusculas(I) then
num_letra1:=I;
end if;
if B=mayusculas(I) or A=minusculas(I) then
num_letra2:=I;
end if;
I:=I+1;
end while;
if num_letra1 = num_letra_2 then
return true;
else
return false;
end if;
end igual;
Creo que así funcionaria. No lo he probado. Es una función que pasados el carácter de la palabra 1 y el caracter de la palabra 2, te los compara y si son iguales te devuelve true, considerando como iguales A y a
De esta forma, si quieres comparar palabras, hacemos otra función que te devuelva si son iguales:
obtener_caracteres_palabras; -- Ej: caracter1:=caracter(I) en el caso de que lo tengamos en un array.
Mientras no palabra1_acabada y no palabra2_acabada y igual(caracter1,caracter2) entonces
obtener_caracteres;
fin mientras;
si palabra1_acabada=palabra2_acabada y ultimos_caracteres_palabras_iguales entonces
devolver true;
sino
devolver false;
fin si;