Die TAATOOLS gibt es (leider) nicht mehr, allerdings kann man sich da auch mit DMPOBJ/DMPSYSOBJ behelfen.
Ggf. ein Grundsätzlicher Fehler:
Die RPG-Zählung bei Positionen in der DS "POS(nn)" beginnt bei 1, die relative Position zu einer Adresse bei 0. Die API-Strukturen beginnen ebenso bei 0.
Ich hoffe, du hast dies berücksichtigt.

Beim Aufruf des Spool-API's gibt es eine Error-Struktur, die man korrekt definieren muss um einen Fehler mitzubekommen. In diesem Fall ist das API bereits gescheitert und im USRSPC steht halt nichts.

ErrorStru DS <= nur schematisch;-)
AvailBytes bin(4) inz(%size(ErrorStru))
ProvBytes bin(4) inz(0)
ErrorId char(7) inz <= CPFxxxx
unused char(1) inz
ErrorData char(512) inz <= eigentlich beliebig, Daten zur CPF

Wenn du
clear ds_Error_code_ERRC0100;
ausführst, löscht du ebenso auch AvailBytes und kein API gibt einen Fehler zurück noch wird einer ausgelöst.
Dies ist vollkommen unnötig.
Ist nach dem API-Call ProvBytes > 0, dann ist ein Fehler aufgetreten, ansonsten sollten Daten im USRSPC stehen.

Auch dieses ist falsch:
FieldPointer = UserSpacePointer + ListHeader.Offset + (ListHeader.Size * (UserSpaceCounter - 1));
Wenn du die Strukturen ansiehst, so enthält jeder Eintrag seine eigene Länge.
Somit bekommt der Fieldpointer die 1. Adresse und muss um die Länge der Beschreibung verschoben werden. Die Anzahl der Einträge steht dann im Header, das ist korrekt.