1. ¿Está bien definir un arreglo de citas como ENTRY ARRAY [1..x] OF Cita(parámetros)?
(en la solución presentan ENTRY Cita(1..x)(parámetros))
2. En la sentencia DELAY, ¿el tiempo no se expresaba en ms?
(en la solución está en s)
3. En la letra del problema dice: "El supervisor recibirá los llamados de quejas y las registrará en una planilla. Cuando recibió 3 llamados de quejas o pasaron más de 5 minutos sin recibir ningún llamado de queja el supervisor atenderá las quejas pendientes". Lo que yo resolví como:
SELECT
WHEN cantQuejas < 3 DO
ACCEPT IngresarQueja();
cantQuejas := cantQuejas + 1;
OR
IF cantQuejas < 3 THEN
DELAY(5*60*100);
END;
WHILE cantQuejas <> 0 DO
iCaja := prioridad();
ACCEPT Intercambiar[iCaja](vProducto: IN OUT PRODUCTO);
cantQuejas := cantQuejas - 1;
END;
END;
¿Está mal eso? En la solución propuesta, utilizan una bandera luego del DELAY para ver si el Supervisor esperó ese tiempo para recibir una queja, pero lo que yo interpreto de eso, es que aunque hayan más de 3 quejas, el supervisor seguirá esperando esos 5 minutos, en lugar de esperar sólo si hay menos de tres quejas.
Adjunto código por las dudas.