task body KUNDE is
ZAHLEN, REST: GELD_T;
begin
loop
-- Geld zusammenkratzen
TANKWART.BEZAHLEN(ZAHLEN);
ZAPFSAEULE.PUMPE;
TANKWART.RESTGELD(REST);
end loop;
end KUNDE;
task body TANKWART is
ZAHLEN, REST: GELD_T;
MAXMENGE, ISTMENGE: LITER_T;
begin
loop
accept BEZAHLEN(BETRAG: GELD_T) do
ZAHLEN:=BETRAG;
end BEZAHLEN;
-- maximale Benzinmenge berechnen
ZAPFSAEULE.BERECHTIGUNG(MAXMENGE);
accept BENZIN(MENGE: LITER_T) do
ISTMENGE:=MENGE;
end BENZIN;
-- Restgeld berechnen
accept RESTGELD(BETRAG: out GELD_T) do
BETRAG:=REST;
end RESTGELD;
end loop;
end TANKWART;
task ZAPFSAEULE is
MAXMENGE, ISTMENGE: LITER_T;
begin
loop
accept BERECHTIGUNG(MENGE: LITER_T) do
MAXMENGE:=MENGE;
end BERECHTIGUNG;
accept PUMPE do
-- Tanken bis voll oder MAXMENGE erreicht
end PUMPE;
TANKWART.BENZIN(ISTMENGE);
end loop;
end ZAPFSAEULE;