Ich habe das so gelöst, als Item-Menü im KS wo 5 Items gleichzeitig angezeigt werden :


Pseudo-Code --- die Operator- und Vergleich-Zeichen sollten sich selber erklären. 8)
Code:
<> var ItemVar1 bis letzte_ItemVar = 0

<> if itemNr1 has it
 <> var ItemVar1 = 1
:ELSE
 <> if itemNr2 has it
  <> var ItemVar1 = 2
 :ELSE ... bis zu den Anzahl der Items
:END

<> if itemNr2 has it
 <> if var ItemVar1 != 2
  <> var ItemVar2 = 2
:ELSE 
 <> if itemNr3 has it
  <> if var ItemVar1 != 3
   <> var ItemVar2 = 3 ... bis zu den Anzahl der Items
    ... viele :END
:END

... es kommt pro ItemVar eine Fork-Abfrage mehr dazu bis ...

<> if letztesItem has it
 <> if var ItemVar1 != letzte_ItemID
  ... weitere Fork-Abfragen (jetzt nicht eingerückt) ...
   <> if var letzte_ItemVar-1 != letzte_ItemID
    <> var letzte_ItemVar = letzte_ItemID
    ... viele :END
:END

Sortier-Algorithmus mit Zeigern --- alle "0" = "Item nicht da" nach hinten sortieren

<> var Var_Zeiger1 = Nummer[erste_ItemVar]
<> cycle :
<> if Var_Zeiger1 < Nummer[letzte_ItemVar]
 <> var Zeiger1_Wert = var[Var_Zeiger1]
 <> if Zeiger1_Wert == 0
  <> var Var_Zeiger2 = Var_Zeiger1
  <> var Var_Zeiger2 += 1
   <> cycle :
    <> var Zeiger2_Wert = var[Var_Zeiger2]
    <> if Zeiger2_Wert > 0
     <> var[Var_Zeiger1] = var[Var_Zeiger2]
     <> var[Var_Zeiger2] = 0
     <> break cycle
     <>
    :ELSE
     <> if Var_Zeiger2 > Nummer[letzte_ItemVar]
      <> break cycle
      <>
     :ELSE
      <> var Var_Zeiger2 += 1
      <>
     :END
     <>
    :END
    <>
   :END cycle
   <>
  :END
  <> var Var_Zeiger1 += 1
  <>
 :ELSE
 <> break cycle
 <>
 :END
 <>
:END cycle
PS: "!=" heißt "nicht gleich".