VAR_INPUT
Sortier_Eingang: ARRAY[1..4] OF STRUCT
Antriebsnummer : INT;
Betriebsstunden : DINT;
END_STRUCT;
END_VAR
VAR_TEMP
tauschen : BOOL;
index, hilfsantriebsnummer, x : INT;
hilfsbetriebsstunden : DINT;
END_VAR
VAR_OUTPUT
Sortier_Ausgang: ARRAY[1..4] OF STRUCT
Antriebsnummer : INT;
Betriebsstunden : DINT;
END_STRUCT;
END_VAR
(* Arbeitsvariablen vorbelegen *)
FOR x:=1 TO 4 BY +1 DO
Sortier_Ausgang[x].Antriebsnummer := Sortier_Eingang[x].Antriebsnummer;
Sortier_Ausgang[x].Betriebsstunden := Sortier_Eingang[x].Betriebsstunden;
END_FOR;
REPEAT
tauschen := false;
FOR index := 4 TO 2 BY -1 DO
IF Sortier_Ausgang[index-1].Betriebsstunden > Sortier_Ausgang[index].Betriebsstunden
THEN
// Werte aus xxx.[Index] sichern
hilfsbetriebsstunden := Sortier_Ausgang[index].Betriebsstunden ;
hilfsantriebsnummer := Sortier_Ausgang[index].Antriebsnummer ;
// index = index-1
Sortier_Ausgang[index].Betriebsstunden := Sortier_Ausgang[index-1].Betriebsstunden ;
Sortier_Ausgang[index].Antriebsnummer := Sortier_Ausgang[index-1].Antriebsnummer ;
Sortier_Ausgang[index-1].Betriebsstunden := hilfsbetriebsstunden;
Sortier_Ausgang[index-1].Antriebsnummer := hilfsantriebsnummer;
tauschen := TRUE;
END_IF;
END_FOR;
UNTIL NOT tauschen
END_REPEAT;
END_FUNCTION_BLOCK