Well, it's a CLC (not an MVC)... but I understand your solution. With that 
approach, and PRINT NOGEN is in effect, I get this in the listing:

  Loc  Object Code    Addr1 Addr2
0002AC D501 0000 0000 00000 00000

and what I'm trying to do (if possible) is to show the relocatable addresses 
under Addr1 and Addr2 in the listing alongside the D501. I.e., I'd like to 
generate a single CLC instruction, so that it looks that way in the printed 
object code. (I realize that PRINT NOGEN would show the addresses in the 
expansion, but they still wouldn't appear on the same line as the CLC opcode.) 
So far, the best solution I've come up with is my approach # 2 below (a single 
DC statement) which produces:

  Loc  Object Code    Addr1 Addr2
0002AC D501BE65BE63              

That's not bad, but the assembler treats it like a DC (which it is), and not a 
machine instruction... and it looks like a DC in the object code.

The reason I'm generating the CLC in a macro is because the macro is doing much 
more than this. There are various macro keyword parameters that I haven't 
bothered showing here, and lots of analysis going on with the comparands before 
I generate the CLC. I genuinely believe that showing all those things here 
would only serve to complicate my question.

David

On Mon, 26 Feb 2024 13:44:17 +0000, Seymour J Metz <[email protected]> wrote:

>Why? What are you trying to solve by wrappng the MVC in a macro?
>
>         MVC   0(2),0
>         ORG   *-4
>         DC    S(&OP1)
>         DC    S(&OP2)
>
>but, again, why?
>
>--
>Shmuel (Seymour J.) Metz
>http://mason.gmu.edu/~smetz3
>עַם יִשְׂרָאֵל חַי
>נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר
>
>________________________________________
>From: IBM Mainframe Assembler List <[email protected]> on behalf 
>of David Eisenberg <[email protected]>
>Sent: Monday, February 26, 2024 8:22 AM
>To: [email protected]
>Subject: Macro parameters: parsing a relocatable address
>
>I’m seeking some guidance if anyone is able to help. I’d like to write a macro 
>like this:
>
>&NAME    MYCLC &FIELD1,&FIELD2
>
>in which both &FIELD1 and &FIELD2 are relocatable addresses. It’s &FIELD1 that 
>is of particular interest to me. &FIELD1 might be expressed as a hard-coded 
>displacement and base register, or a relocatable symbol… or it could be an 
>absolute symbol equivalent to a displacement, followed by a base register… 
>etc. I.e., it could be any valid relocatable address syntax. What &FIELD1 will 
>*not* have is an *explicit length.* The macro parameters will specify valid 
>relocatable addresses, and nothing more.
>
>My question: I’d like the MYCLC macro to generate a CLC instruction in which 
>the two parameters are compared to each other for a constant length of 2. So 
>far, the only ways I can think of to do this are:
>
>1. Parse &FIELD1 to figure out how the relocatable address is expressed, and 
>insert an explicit length of 2 to generate a valid CLC first operand. I would 
>do it that way, but (unless I'm missing something) it seems quite complex to 
>code.
>2. Generate this DC statement: DC X’D501’,S(&FIELD1,&FIELD2) . This seems to 
>work, but it’s a bit unattractive in a PRINT GEN (and it looks a bit odd in 
>the assembly listing, because the assembler doesn't treat it like a machine 
>instruction in the object code on the left side of the listing).
>
>I’m wondering if anyone can suggest a reasonable way to code option 1 above. 
>Can the macro assembler give me any help in parsing &FIELD1 so that I can 
>transform that parameter to insert an explicit length, regardless of how 
>&FIELD1 is expressed? Or is there some other approach that I haven’t 
>considered at all? Or should I just go with option 2 above?
>
>Please note that I don’t want the macro to generate more than one machine 
>instruction. One way or another, I just want the macro to generate a CLC for a 
>length of 2. (And I really do want the CLC located in the macro as opposed to 
>open code, because the macro does some analysis on the comparands prior to 
>generating the CLC.)
>
>Any advice would be appreciated... thank you!
>
>David

Reply via email to