Bijkomend probleem is dat _NAMEPREF door _SETSORT niet herkend wordt als een tag waarop gesorteerd kan worden.
Idealiter wordt _SETSORT uitgebreid met meer dan 3 sorteerargumenten en sorteert _SETSORT ook op _NAMEPREF. Maar daar ben je nu niets mee.
Een mogelijke oplossing is te werken met een stringset op namen en per string in die set een personenset die je dan sorteert op voornaam en geboortedatum.
Dus zoiets als:
_SETDEF(namen)
_SETDEF(naam)
_SETBEGI(Index)
_SETCLR(naam)
_SETADD(naam, [:[:[:_SURN[&[?_SURN?][?_NAMEPREF?], &]:][:_NAMEPREF:]:]|[&<onbekend>&]:])
[?_SETORDE(namen,[:_SETEXP(naam,1,_SETSTRI):])==?]?_BEGI
_SETADD(namen,[:_SETEXP(naam,1,_SETSTRI):])
_SETDEF([:idx[:_SETEXP(naam,1,_SETSTRI):]._PATH:])
_END
_SETADD([:idx[:_SETEXP(naam,1,_SETSTRI):]._PATH:])
_SETEND
De stringset sorteer je dan:
_SETSORT(namen, _SORTNUM)
En dan doorloop je die stringset, en je sorteert telkens de corresponderende personenset op voornaam en geboortedatum:
_SETBEGI( namen )
_SETSORT([:idx[:_SETSTRI:]._PATH:], _NAMEFIRS, _BIRTDATE)
_SETBEGI([:idx[:_SETSTRI:]._PATH:])
hier wegschrijven in gewenste formaat
_SETEND
_SETEND
Ik heb bovenstaande code niet uitgeprobeerd, maar ik gebruik deze constructie wel in de index van het CBG rapport 'Kwartierstaat in stamreeksen'.