A coworker posed the following question.

Given a COBOL statement that moves a field defined as S9(9) comp-3 
to a field defined S9(8) comp-3, the generated assembler code looks like this:
                       
   01A598  D204 5E58 17B3          MVC   3672(5,5),1971(1)   
   01A59E  940F 5E58                   NI    3672(5),X'0F'       
   01A5A2  F844 5E58 5E58          ZAP   3672(5,5),3672(5,5)

I know the following:
1.      The program was compiled with the TRUNC option
2.      The source and target field are the same length (5 bytes)
3.      the first line does the actual move
4.      the second line is generated because the TRUNC compile option

So why is IBM generating the ZAP instruction?
The only use to this is to abend with S0C7 if the data is garbage.
Right?

I too can see no good reason for ZAP.
Not a pressing issue, just both puzzled.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to