Suppose you have a select query which will fetch around 250 rows and you have an cursor associated with query which is multi-fetch cursor with rowset positioning for 100 rows.
In such case you will get sqlcode 100 for the third fetch.
For first two fetches it will retrieve 100 rows each along with sqlcode 0 and third fetch will return only 50 rows along with sqlcode 100.
Though Guyc is already explained let me try to explain again and I would suggest you to refer manuals.
This is what manual says for + 354
+354
A ROWSET FETCH STATEMENT MAY HAVE RETURNED ONE OR MORE ROWS OF DATA. HOWEVER, ONE OR MORE WARNING CONDITIONS WERE ALSO ENCOUNTERED. USE THE GET DIAGNOSTICS STATEMENT FOR MORE INFORMATION REGARDING THE CONDITIONS THAT WERE ENCOUNTERED
Lets say you are fetching 100 rows in a fetch and out of 100 rows around 10 rows has any sql error or warning then you will get +354