/* Methode: Auslagern Eingangsparameter: sSachnummer = Sachnummer des Bauteils iBauteilmenge = angeforderte Bauteilmenge oZiel (optional) = Objekt, in welches die Bauteile ausgelagert werden sollen Wenn nicht angegeben, dann wird der erste Nachfolder des Bausteins 'Lager' als Ziel genommen Rckgabewert: boolean --> true, wenn Auslagerung komplett erfolgreich */ (sSachnummer:string;iBauteilmenge:integer;oZiel:object) :boolean is oBE:object; bWeitersuchen:boolean; iBE,iAusgelagert:integer; do --Wenn kein Ziel angegeben if oZiel = void then --Ziel ist der erste Nachfolger des Lagers im Netzwrk oZiel := Lager.nf; end; --Abbruchmerker initialisieren bWeitersuchen:= oZiel/=void and iBauteilmenge>0; --Solange weitergesucht werden soll while bWeitersuchen and --Und auszulagernde Bauteilmenge noch nicht erreicht iAusgelagert < iBauteilmenge and --und noch Bauteile im Lager sind iBE < Lager.AnzahlBEs loop --Naechstes Bauteil iBE := iBE + 1; --Bestimme BE oBE := Lager.BE(iBE); --Wenn dies das gesuchte Bauteil ist (Annahme: das BE hat ein Attribut sSachnummer vom Typ string) if oBE.sSachnummer = sSachnummer then --Wenn Bauteil ausgelagert werden kann if oBE.umlagern(oZiel) then --Zaehler erhoehen iAusgelagert := iAusgelagert + 1; --BE Zaehler ruecksetzen iBE := iBE - 1; --Wenn Bauteil nicht umgelagert werden kann else --Annahme: das Ziel ist nicht aufnahmebereit, also nicht weitersuchen bWeitersuchen := false; end; end; end; --Erfolg rueckmelden, wenn ale angeforderten Bauteile ausgelagert wurde result := iAusgelagert = iBauteilmenge; end;