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;