Leider ist das Feld "DSNAME_DATA" mit der konstanten Länge fix definiert. Das Problem aber ist, dass der SQL nur die Länge schreibt, für die Daten vorhanden sind.
Wenn du also erst 1000 Zeichen liest und dann 500, enthält das Feld immer noch die 500 Rest vom vorherigen Read. Einfach ein %SUBST() liefert dir ein VARCHAR wieder zurück.

Du kannst allerdings eine DS mit Overlay auf den CLOB definieren, die dann einen VARCHAR/VARUCS2 mit 4-Bytel Länge und der korrekten CCSID (1200/1141) beinhalten.

Wie oben schon beschrieben, kannst du aber mit dem IFS_READ in 2K-Blöcken, dem BASE64 und einem LIST_AGG drumrum auch längere Inhalte zusammen basteln.
Dann hast du nur 1 Aufruf, egal wie lang das Ergebnis dann ist (wegen der Beschränkung).

Wie kommen die auf eine url-Länge über 2K? Das maximum ist doch auf 2K festgelegt.
Mehr geht nur via HTML-Dokument (HEAD/BODY) mit z.B. JSON/XML-Daten.