void CpRemBlock( void ) { sym_id rb; if( EmptyCSList() == FALSE ) { StmtErr( SP_BLK_IN_STRUCTURE ); } AddCSNode( CS_REMOTEBLOCK ); CSHead->bottom = NextLabel(); CSHead->branch = NextLabel(); GBranch( CSHead->branch ); if( BlockName( SY_RB_DEFINED ) ) { rb = CITNode->sym_ptr; if( ( rb->ns.flags & SY_REFERENCED ) == 0 ) { rb->ns.si.rb.ref_count = 0; } rb->ns.si.rb.ref_count++; CSHead->cs_info.rb = rb; GStartBlock(); BIStartRBorEP( rb ); } AdvanceITPtr(); ReqEOS(); StNumbers.in_remote = TRUE; ClearRem(); }
void InitSubProg( void ) { ProgSw &= ~( PS_END_OF_SUBPROG | PS_IN_SUBPROGRAM | PS_BLOCK_DATA ); FrlInit( &ITPool ); SgmtSw = 0; ArgList = NULL; Entries = NULL; EquivSets = NULL; SubProgId = NULL; STInit(); // <-------+ TDSubInit(); // Must come before InitStNumbers(). InitStNumbers(); ClearRem(); BIStartSubProg(); }
void CpEndBlock( void ) { CheckCSList( CS_REMOTEBLOCK ); if( CSHead->typ == CS_REMOTEBLOCK ) { GLabel( CSHead->bottom ); FreeLabel( CSHead->bottom ); // Make sure REMOTEBLOCK statement was valid. if( CSHead->cs_info.rb != NULL ) { GEndBlock(); } GLabel( CSHead->branch ); FreeLabel( CSHead->branch ); DelCSNode(); } else { Match(); } CSNoMore(); StNumbers.in_remote = FALSE; ClearRem(); CSNoMore(); BIEndRBorEP(); }