J’ai une liste Q-LIST-1 de 100 occurrences :

Cette liste contiennent soit les client ou les conjoint ou bien client + les conjoint
Chacun des deux personne peut prendre prends 3 valeurs max : 10, 20 et 30


------------------------------------------------
-----ID------|----Valeur----
-----------------------------------------------
Id client-1 --| 10
-----------------------------------------------
Id conjoint-1| 10
-----------------------------------------------
Id client-1 --| 20
-----------------------------------------------
Id conjoint-1| 20
-----------------------------------------------
Id client-1--| 30
-----------------------------------------------
Id conjoint-1| 30
-----------------------------------------------

Il se peut y avoir un id client-1 sans conjoint (c-a-d sans id conjoint-1 pour la même valeur) ou un Id conjoint sans Id client ainsi de suite : tout les cas sans possible

L’objectif c’est de parcourir la liste et de mette dans un autre tableau,pour chaque occurrence L’id client et conjoint et sa valeur

Résultat final souhaitée ca sera :
---------------------------------------------------------
-----ID-CLI------ |-----ID-CONJ------|-----VALEUR-NV---
---------------------------------------------------------
Id client-1 | Id conjoint-1 | 10
---------------------------------------------------------
Id client-1 | Id conjoint-1 | 20
---------------------------------------------------------
Id client-1 | Id conjoint-1 | 30
---------------------------------------------------------

Voila mon algorithme que j’ai fait :

Perform varying I from 1 by 1 until I > Q-LIST-1
OR Flag-client-10-ok
--- If Valeur(I) = 10
------ IF ID(I) = Id-client
--------- Set Flag-client-10-ok to true
--------- ADD 1 to Q-NEW-LIST
--------- Move ID(I) to ID-CLI(Q-NEW-LIST)
------ End-if
--- End-if
End-perform


IF Set Flag-client-10-ok
--- Perform varying I from 1 by 1 until I > Q-LIST-1 OR Flag-conjoint-10-ok

------ If Valeur(I) = 10
--------- IF ID(I) = Id-conjoint
------------ Set Flag-conjoint-10-ok to true
* se positionner sur la même occurrence
------------ Move ID(I) to ID-CONJ(Q-NEW-LIST)
--------- End-if
------ End-if
--- End-perform

ELSE

--- Perform varying I from 1 by 1 until I > Q-LIST-1
OR Flag-conjoint-10-ok
------ If Valeur(I) = 10
--------- IF ID(I) = Id-conjoint
------------ Set Flag-conjoint-10-ok to true
------------ ADD 1 to Q-NEW-LIST
------------ Move ID(I) to ID-CONJ(Q-NEW-LIST)
--------- End-if
------ End-if
--- End-perform

La meme chose pour les valeur 20 et 30.

Est-ce qu’il y’a possibilité d’optimiser ce code,ou y’a-t-il une autre methode?

Merci pr votre aide