Das hat mit BLOB's ja nichts zu tun.

Du musst bei SQLBindCol die Länge eines Feldes abhängig vom Feldtyp übergeben.
Bei SQL_DECIMAL, SQL_NUMERIC also 'Stellen * 256 + Nachkomma', bei Zeichenfeldern aber wieder Original '%size(MyField)'.
Du benötigst also verschiedene SQLBindCol !

Die ILE-Definition des VARCHAR-Feldes ist:

D MyVarChar s 10000 varying

Wobei das Feld dann tatsächlich 10002 Bytes groß ist, 2 Byte für die Länge des Inhaltes.
%size(MyVarChar) liefert die physische Größe, also 10002
%len(MyVarChar) liefert die Länge des Netto-Inhaltes