void GPassStmtNo( sym_id sn, FCODE routine ) { //=============================================== // Pass the label for a statement number. For example, // PRINT 10, ... // 10 FORMAT( ... ) EmitOp( routine ); GStmtAddr( sn ); }
void GEndCall( itnode *itptr, int num_stmts ) { //================================================ // Finish off a subprogram invocation. itnode *arg; if( num_stmts > 0 ) { EmitOp( FC_ALT_RET ); OutU16( num_stmts ); arg = itptr->list; for(;;) { if( (arg->opn.us & USOPN_WHAT) == USOPN_STN ) { GStmtAddr( arg->sym_ptr ); num_stmts--; } arg = arg->link; if( num_stmts == 0 ) break; } } else if( (itptr->sym_ptr->u.ns.flags & SY_SUBPROG_TYPE) == SY_SUBROUTINE ) { EmitOp( FC_EXPR_DONE ); } SetOpn( itptr, USOPN_SAFE ); }