Como ya se ha dicho, para mayúscula es UPCASE... y solo convierte a mayúscula un caracter a la vez, por eso hay que usar un FOR en su implementación, y recorrer la cadena caracter por caracter para transformarla por completa...
La verdad es que nunca he visto una función que haga eso en pascal, por eso tuve que hacer esta... probablemente no sea el método más apropiado... pero bueh!!! funciona bien... Espero te sirve...
Aquí te dejo una función que hice para solventar ese problema:
uses crt;
function minuscula(txt: string): string;
var i: integer;
Begin
for i:=1 to length(txt) do
Begin
if (ord(txt[i])>=65) and (ord(txt[i])<=90) then
Begin
txt[i]:=chr((ord(txt[i])+32));
End
else
Begin
case txt[i] of
'Á': txt[i]:='a';
'É': txt[i]:='e';
'Í': txt[i]:='i';
'Ó': txt[i]:='o';
'Ú': txt[i]:='u';
'Ñ': txt[i]:='ñ';
end;
end;
End;
minuscula:=txt;
End;
Begin
clrscr;
gotoxy(2,2);write('Ingresa una cadena: ');
readln(cad);
cad:=minuscula(cad);
gotoxy(2,5);write('Se ha transformado la cadena en minuscula:');
gotoxy(2,7);write(cad);
readkey;
End.