What is the purpose of using CLC with a null first operand and then replacing the first part with LA? Isn't it better to use: &Lab MVC &Target.(0),&Source and then replace the length?
My biggest problem with the version below is that it does no RENT checking. Neither CLC nor LA will flag &Target if it is within a RSECT or if the RENT option is set. Also the XREF will not show &Target as modified. On Tue, 22 May 2012 11:46:24 -0700, John Ehrman wrote: >This version issues an MNOTE if the source operand is longer than the >target. The message severity can be modified to suit your preferences. > > 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 > AIF (L'&Target ge L'&Source).Done > MNote *,'MVC2: Length of ''&Source'' greater than length of ''&* > Target''.' >.Done MEnd > >Thanks for the comments and suggestions.
