no manejo pascal, así que iré explicando en base a C
parte de tu codigo está bien, pero ignoras el hecho que la propagación llega solo hasta la mitad del cuadrado y vuelve
para lo que quieres hacer debes manejar un ciclo de "entrada" (la primera mitad) y un ciclo de "salida" (la segunda mitad) tanto horizontal como vertical
primero ... lees el numero y revisas que mod%2==1
la entrada será hasta la mitad mas 1
int entrada = leido/2 +1;
int salida = leido/2;
esto ya que cuando divides un impar entre 2 y lo dejas como entero, quedará uno menos del medio, así que para 5 entrada es 3 y salida 2
haces un ciclo desde 1 hasta (menor que) entrada y otro desde salida hasta (mayor que) 1.... esto nos dirá cuantas letras van en esta capa
dentro del ciclo de entrada haces otro ciclo... este recorre desde 0 hasta entrada
dentro de este ciclo un if con el que medirás si la posición es menor o igual que el valor del ciclo entrada, si lo es escribe la respectiva letra, si no, escribe la maxima (que es el valor del ciclo anteror)
ejemplo
para Y desde 0 hasta Y < entrada{
para X desde 0 hasta X < entrada{
si(X<=Y) imprimir 'A'+X
sino imprimir 'A'+Y
}
}
esto con leido = 7 dará
leido = 7
entrada = 3
X= 0 1 2 3 4 5 6 7
Y________________
0| A A A A
1| A B B B
2| A B C C
3| A B C D
4|
5|
6|
ahora solo necesitas un poco de matemática para hacer los ciclos de "salida" que es casi lo mismo solo que superado la mitad y hacia atrás