Path: utzoo!mnetor!uunet!lll-winken!lll-tis!ames!mailrus!tut.cis.ohio-state.edu!ut-sally!utah-cs!utah-gr!uplherc!sp7040!obie!wsccs!dave From: dave@wsccs.UUCP (Dave E Martin "VAX Headroom") Newsgroups: comp.os.vms Subject: Re: Use of RMS from VAX C Message-ID: <229@wsccs.UUCP> Date: 1 Mar 88 22:24:31 GMT References: <8802150715.AA23998@ucbvax.Berkeley.EDU> Lines: 18 Summary: &= == =& while &= not == = & In article <8802150715.AA23998@ucbvax.Berkeley.EDU>, XPMAINT@TAMVENUS.BITNET (Shane Davis -- CSC XPrint Programmer) writes: > specifications. However, the VAX C compiler (V2.3) flags an error "Invalid > right operand of an &= operator" at this statement: > > file_fab.fab$l_nam=&file_nam; > > Please help me...if I can't get this one straightened out, I'll have to write > yet another 5-liner in MACRO to link with my C program in order to get around > yet another fluke of VAX C... > You have just asked the c compiler to bitwise and file_nam and file_fab.fab$l_nam. This IS DOCUMENTED in the c-compiler manual. you can fix it by separating =& with = & or =(&...). I have been using VAXC for two years EXTENSIVELY and have never had to write anything in macro to get around anything other than need of extreme speed. the =& equaling &= is left over from some earlier version of C, I'm not sure where, but this has been left in for compatibility. Also, this will occur with =* and probably any of the other "combined assignment" statements.