Not being conversant with Oracle 7, I cannot comment on why you would not get a fecth out of sequence error there. As to O8.1.6, when you select for update, Oracle obtains locks on all rows returned in the result set. When you issue a commit (BTW I'd like to know more about autocommit...can't find it in the documentation) the aforementioned locks are released and your place in the cursor is lost. Any subsequent attempts to fetch from the cursor will bomb.
See further: Oracle PL/SQL Programming by S. Feuerstein, published by O'Reilly