No, there is no equivalent to ROW_NUMBER in an OpenEdge database.
http://knowledgebase.progress.com/articles/Article/Is-ORACLE-row-number-function-supported-in-OpenEdge
Regarding ROWID:
Setting aside the discussion of whether or not it is a good idea to think of ROWIDs as integers... (you should re-read the linked kbase)
There is no guarantee that any particular ROWID value will ever exist and there is no reason why ROWIDs should start with zero or one or any other value.
If your thought is that ROWIDs and RECIDs are sort of the same and RECIDs are integers consisting of a block# and a position within that block,
ROWID 0 is still never going to exist because the first portion of a storage area is control data -- no rows are stored there.
You can successfully scan a table using guesses for ROWIDs or RECIDs (or by enumerating every possible value) but you have to be prepared to deal with gaps. This can be useful, for instance, when trying to recover data from a corrupted db. But it isn't something that one would normally do.
I think you have decided that ROWID is the solution to a problem that you are having but that the real problem is not "how to get ROWID 0". If I had to guess I would guess you are perhaps trying to get a result set in batches of N. In that case you should look at this: How to mimic SELECT ... LIMIT, OFFSET in OpenEdge SQL?