Vale ya me he puesto manos a la obra y he conseguido que funcione el Case of. Solo me funciona con la opcion 0 (salir) o si le doy a una opcion que no está entre 0 y 4 ( esto es lo siguiente que preguntaba, ahora ya funciona).
Lo que pasa ahora es que cuando le doy a la opcion 1 ( la unica que tengo de momento) no hace nada , ni puedo volver al menu ni cerrar el programa. A ver si alguien me ayuda .
Pongo el codigo tal cual lo tengo ahora:
Código Delphi
[-]program Algoprueba3;
{$APPTYPE CONSOLE}
uses
SysUtils;
Const MAXvuelos=100;
type
t_fecha_salida= record
minuto:0..59;
hora:0..23;
dia:1..31;
mes:1..12;
anyo: 2000..2100;
end;
t_fecha_llegada= record
minuto:0..59;
hora:0..23;
dia:1..31;
mes:1..12;
anyo: 2000..2100;
end;
t_vuelo= record
cod_vuelo: string[6];
aero_salida: string[3];
aero_llegada: string[3];
pasajeros: integer;
fecha_salida: t_fecha_salida;
fecha_llegada: t_fecha_llegada;
end;
t_index=1..MAXvuelos;
t_lista_vuelos= array[1..MAXvuelos]of t_vuelo;
var
v1:t_lista_vuelos;
nvuelos:integer;
op:integer;
procedure Leer_datos (VAR v1 : t_lista_vuelos; nvuelos:integer );
VAR
j: t_index;
begin
readln (nvuelos);
for j:=1 to nvuelos do
writeln ('Escriba el codigo de vuelo(AAA111): ');
readln(v1[j].cod_vuelo);
writeln ('¿Cual es el codigo del aeropuerto de salida?(AAA): ');
readln(v1[j].aero_salida);
writeln ('¿Cual es el codigo del aeropuerto de llegada?(AAA): ');
readln(v1[j].aero_llegada);
writeln ('¿Cuantos pasajeros hay en este vuelo?: ');
readln(v1[j].pasajeros);
end;
begin
repeat
writeln ('Escoja una de las siguentes opciones: ');
writeln ('--------------------------------------');
writeln ('1) Leer datos');
writeln ('2) Modificar los datos de vuelo por referencia');
writeln ('3) Conocer la puntualidad de los vuelos');
writeln ('4) Porcentajes de puntualidad segun fechas');
writeln ('0) Salir');
writeln;
readln (op);
writeln;
if (op<0) and (op>4) then
begin
writeln('La opcion no es correcta, escoja otra opcion.');
continue;
end;
case op of
1: Leer_datos (v1,nvuelos);
end;
until op=0;
end.
y estos son los mensajes de error en las lineas que he marcado como fallo.
[Warning] Algoprueba3.dpr(46): FOR-Loop variable 'j' may be undefined after loop
[Warning] Algoprueba3.dpr(73): Variable 'nvuelos' might not have been initialized
Muchas a todos por vuestra colaboración. 
No se si será que le faltan variables de entrada y/o salida al procedure.