A literal in the literal pool should never be modified and the assembler is enforcing that rule where possible. The problem is that multiple =C'WOMBAT' in your program would only generate a single entry in the literal pool. Can each occurrence handle this modification of the value? The assembler is just stopping a bad coding practice and potential problems where possible.
Jon. ________________________________ From: Paul Gilmartin <paulgboul...@aim.com> To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Sent: Sat, May 26, 2012 9:04:28 PM Subject: Re: MVC with 2nd operand length On May 26, 2012, at 18:28, John Ehrman wrote: >> So, HLASM is apparently very good at inferring the length of >> the first argument to CLC at Pass 2, when it's needed, even in >> the challenging case of a previously unreferenced literal. > > By pass 2, the literal is well established, so it's not a challenge by > then. > Now, I'm truly mystified. The very simplest construct works for CLC: ssembler Option Summary (PTF UK71661) Page 1 HLASM R6.0 2012/05/26 21.49 Loc Object Code Addr1 Addr2 Stmt Source Statement 1 MACRO 2 &L CLC2 &A1,&A2 3 &L CLC &A1.(L'&A2),&A2 4 MEND 5 * 6 MACRO 7 &L MVC2 &A1,&A2 8 &L MVC &A1.(L'&A2),&A2 9 MEND 10 * 11 PRINT GEN 000000 00000 00019 12 FUNCS CSECT R:C 00000 13 USING FUNCS,12 14 MACCLC CLC2 =C'WOMBAT',=C'FOO' 000000 D502 C010 C016 00010 00016 15+MACCLC CLC =C'WOMBAT'(L'=C'FOO'),=C' 16 * --------------- 17 MACMVC MVC2 =C'WOMBAT',=C'FOO' 000006 0000 0000 0000 00000 00000 18+MACMVC MVC =C'WOMBAT'(L'=C'FOO'),=C' ** ASMA030E Invalid literal usage - =C'WOMBAT'(L'=C'FOO') ** ASMA435I Record 8 in SPPG.FUNCS3.JOB03131.D0000101.? on volume: 19 END 000010 E6D6D4C2C1E3 20 =C'WOMBAT' 000016 C6D6D6 21 =C'FOO' ... but fails for MVC! Why should there be any difference? Isn't an SS instruction an SS instruction, or are some SS instructions more equal than others? -- gil