Запись в Ada и использование оператора when

Я новичок в языке программирования Ada и работаю над параллельным программированием, но у меня проблема с одной реализацией. Это может быть очень фиктивный вопрос. Код следующий:

type status is array(1..6) of boolean; --boolean values for each track
track_available :status:=(others=>true); --true if track is available
protected track_handler is

entry track_req(n:in track_part_type); --n is track number
entry track_rel(n:in track_part_type); --n is track number

end track_handler;


protected body track_handler is
--implement entries
entry track_req(n: in track_part_type) when track_available(n) is --here where the error occurs
    begin
        req(n);
    end track_req;

entry track_rel(n: in track_part_type) when track_available(n) is
    begin
        rel(n);
    end track_rel;
end track_handler;

    procedure req(nr : track_part_type) is
    begin
        --null;
        track_available(nr):=false;
    end req;

    procedure rel(nr : track_part_type) is
    begin
        --null;
        track_available(nr):=true;
    end rel;

Здесь я получаю ошибку компиляции для оператора «when track_available (n)», в котором говорится, что «n не определено». Я думаю, что переменная n выходит за рамки, но мне также нужно проверить, является ли n-й индекс массива истинным или ложным. Как я могу решить эту проблему?

Спасибо.

8
задан Shark8 17 June 2015 в 21:51
поделиться