Notionally better because shorter examples of this sort could be
proliferated ad infinitum et nauseam; but that was not John Ehrman's
point, which I will let him explain.

On 5/16/12, retired mainframer <[email protected]> wrote:
> :>: -----Original Message-----
> :>: From: IBM Mainframe Assembler List [mailto:ASSEMBLER-
> :>: [email protected]] On Behalf Of John Ehrman
> :>: Sent: Wednesday, May 16, 2012 9:48 AM
> :>: To: [email protected]
> :>: Subject: MVC with 2nd operand length
> :>:
> :>: This macro uses the length attribute of the second operand as the
> length
> :>: value in the MVC:
> :>:         Macro
> :>: &Lab    MVC2  &Target,&Source
> :>: &Lab    CLC   0(0,0),&Source    X'D500 0000',S(&Source)
> :>:         Org   *-6               Back up to first byte of instruction
> :>:         LA    0,&Target.(0)     X'4100',S(&Target),S(&Source)
> :>:         Org   *-4               Back up to first byte of instruction
> :>:         DC    AL1(X'D2',L'&Source-1)  First 2 bytes of instruction
> :>:         Org   *+4               Step to next instruction
> :>:         MEnd
> :>:
> :>: Just write
> :>:         MVC2  Target,=C'Whatever you like'
>
> I must be missing something obvious.  Why not simply
>
>                 MACRO
>         &Lab    MVC2    &Target,&Source
>         &Lab    MVC     &Target(L'&Source-1),&Source
>                 MEND
>
> or avoid the macro completely with
>
>          &Lab   MVC      Label1(L'Label2-1),Label2
>


John Gilmore, Ashland, MA 01721 - USA

Reply via email to