Procedure.s Consolidate(s.s) Dim sets.s(100) Define.i n, i, j, k, p Define.s ts.s, temp.s n = 0 For i = 1 To Len(s) If Mid(s, i, 1) = ",": n + 1 Else sets(n) = sets(n) + Mid(s, i, 1) EndIf Next i For i = 0 To n p = i ts = "" For j = i To 0 Step -1 If ts = "": p = j EndIf ts = "" For k = 1 To Len(sets(p)) If j > 0: If FindString(sets(j-1), Mid(sets(p), k, 1)) = 0: ts = ts + Mid(sets(p), k, 1) EndIf EndIf Next k If Len(ts) < Len(sets(p)): If j > 0: sets(j-1) = sets(j-1) + ts sets(p) = "-" ts = "" EndIf Else p = i EndIf Next j Next i temp = sets(0) For i = 1 To n temp = temp + "," + sets(i) Next i ProcedureReturn s + " = " + temp EndProcedure OpenConsole() Dim test.s(3) ;= {"AB","AB,CD","AB,CD,DB","HIK,AB,CD,DB,FGH"} test(0) = "AB" test(1) = "AB,CD" test(2) = "AB,CD,DB" test(3) = "HIK,AB,CD,DB,FGH" For t.i = 0 To 3 PrintN(Consolidate(test(t))) Next t PrintN(#CRLF$ + "Press ENTER to exit"): Input() CloseConsole()