I can't speak much for AS400, but usually cursors are the only way to retrieve data from an RDBMS. So you usually don't have any choice. AS400 may be different because you could possibly also access the data with file i/o operations.
Generally spoken, DB2 uses blocked cursors if possible, i.e. multiple rows are retrieved and send from the server to the client together. Thus, no new network round trip is incurred on each fetch - only when the rows cached at the client are exhausted. However, if you have a FOR UPDATE cursor, DB2 can't do that easily because the server has to know which row you want to update, i.e. it has to know the status. One approach chosen by DB2 LUW is, for example, to avoid block fetch in such cases.