static parameter *NameParm( entry_pt *entry ) { // Process a symbolic dummy argument. parameter *result; sym_id sym; act_dim_list *dim_ptr; unsigned_16 flags; unsigned_16 class; sym = LkSym(); flags = sym->u.ns.flags; class = flags & SY_CLASS; if( class == SY_VARIABLE ) { if( InArgList( entry, sym ) ) { NameErr( AR_DUPLICATE_PARM, sym ); return( NULL ); } else if( flags & SY_SAVED ) { Error( SA_SAVED ); return( NULL ); } else if( flags & SY_IN_EC ) { IllName( sym ); return( NULL ); } else if( flags & SY_SUBSCRIPTED ) { dim_ptr = sym->u.ns.si.va.u.dim_ext; if( dim_ptr->dim_flags & DIM_PVD ) { dim_ptr->dim_flags |= DIM_ASSUMED; NameExt( SV_PVD, sym ); if( dim_ptr->dim_flags & DIM_USED_IN_IO ) { NameErr( SV_CANT_USE_ASSUMED, sym ); return( NULL ); } } } } else if( class == SY_PARAMETER ) {
sym_id LkSym( void ) { //=============== // Look up symbol in symbol table and set flag bits. sym_id sym; sym = SymLookup( CITNode->opnd, CITNode->opnd_size ); CITNode->sym_ptr = sym; CITNode->flags = sym->ns.flags; CITNode->size = sym->ns.xt.size; CITNode->typ = sym->ns.typ; if( ( sym->ns.name_len > STD_SYMLEN ) && ( ( ExtnSw & XS_LONG_NAME ) == 0 ) ) { NameExt( VA_NAME_LEN_EXT, sym ); ExtnSw |= XS_LONG_NAME; } return( sym ); }