Variable SQL's gestalten sich nun mal schwierig.

Mit dem "Describe" erhält man eine SQLDA-Struktur, die die Feldtypen und Größen enthält.
Das Feld "SQLN" muss mit der Anzahl der Strukturfelder "SQLVAR" initialisiert werden.
Das Feld "SQLD" enthält NACH dem Describe die Anzahl Felder in dem Array.

Das Strukturfeld SQLVAR definiert man ambesten so:
D SQLVAR 80A DIM(200)
D SQLTYPE _ 2 B 0 OVERLAY(SQLVAR:1)
D SQLLEN _ 4 B 0 OVERLAY(SQLVAR:3)
D SQLDATA ___ * _ OVERLAY(SQLVAR:17)
:
:

Dadurch lassen sich die Felder auch mit ihrem Index ansprechen, z.B. "SQLTYPE(Ind)".

Kommen wir nun zum "Fetch ... USING Descriptor :SQLDA"

Der Describe setzt keine Adressen in den Pointern !!!

Das muss das Programm selbst erledigen.
D.H., mit der Anweisung ALLOC können Sie dynamischen Speicher zuordnen und der SQLDATA(n) zuweisen.
Dies muss für jedes Feld erfolgen.
Zu berücksichtigen sind da vor allem auch die Feldtypen (eine Liste ist im Handbuch der CD Library enthalten).
Man kann die Feldtypen auch vorgeben, SQL wandelt diese dann entsprechend um.

Erst dann ist ein Fetch möglich !

Da das ganze Thema ziemlich aufwändig ist, und hier der Ort für eine Schulung nicht der richtige ist, verweise ich auf das Handbuch "DB2 for AS/400 SQL Programming".