What Raven said it right, there are no gosubs in C++, and the nearest thing are the setjmp/longjmp functions, which I avoid like the plague!
Despite that though, I have a fundamental problem with goto and gosub, although I have been known to use the odd goto to exit from a deep set of loops, or jump to function cleanup code before exiting the function (only in BASIC or C - not required in C++ if you code it right).
Raven, If you look at my A* code in the Code snippets, you'll see that it's not simple code I'm talking about - that stuff should be really sensitive to variable corruption.
Maybe it's due to declaring globals within functions, which is another thing I don't do ... actually, thinking about it, maybe I can see how that could happen.
Your code (updated to compile cleanly

):
Init()
Build()
do
Render()
loop
function Init()
global m_Cube as dword
m_Cube = 1
endfunction
function Build()
make object cube m_Cube,10.0
endfunction
function Render()
y#=object angle y(m_cube)+(4.0/screen fps())
yrotate object m_cube, wrapvalue(y#)
endfunction
If you move the line 'global m_Cube as dword' outside the function, it compiles and works as expected.