BLOB-Felder können nur über Pointer adressiert werden, d.h., SQL liefert beim Select nur einen Pointer auf den Bereich:

d myBlobPtr S *
d MyBlob s 1000 based(myBlobPtr)
d MyBlob2 s 1000

/exec sql
+ select myblob into :myblobptr ....
/end-exec

Das gleiche gilt auch bei Update/Insert, in diesem Fall ist die Adresse selbst zur Verfügung zu stellen:

eval myblobptr = %Addr(myBlob2)
/exec sql
+ update mytable set myblob=:myblobptr ...
/end-exec

Der Unterschied ist hier, dass der BLOB-Bereich nicht von SQL angelegt wird.
Natürlich kann die gelesene Variable auch für Update/Insert verwendet werden.

Es ist darauf zu achten, dass die Variable MyBlob nicht größer definiert sein darf, als in der Tabelle definiert, da es sonst zu Speicherschutzfehlern kommt.