Sorry, I still don't get it.  Say you have a table with 6 rows, column 1 is named A and column 2 is named B.  Then you do a select * from that table.  I would view that as 

row    A         B
1      x          y
2      a          b
3      e          f
4      n          m
5      t           o
6      q           d

So that the value of row 4 column a was 'n'  and the value of row 2 column b was 'b'

How do you extract those values from the stem?

do i = 1 to stem.a.0
   say stem.a.i
   say stem.b.i


do i = 1 to rs.0

Is actually more of the construct I first pictured.  But, my first implementation didn't work correctly and I gave up on that, thinking for some reason that it wasn't possible.

This discussion got me thinking about it again.

This change would mean any one already using the existing format would need to change their code.

I would like to hear what people think?

Sounds fine to me as I have no code to change :)

In general terms the above looks more straight forward, but with /hex trick the existing solution is still acceptable.

If you were to change it, would it be OO_STEM_OF_COLUMNS then? Maybe you can have both ;)