Here's a simplified version of a macro which I've been using to convert
data to printable hex for over 30 years.  It uses the extra one-byte
move instead of needing a pad byte, so that the user doesn't need to
know about that, and sets the zones to zero so that it only needs a
16-byte table, which can default to being a literal.

         MACRO
&LABEL   TOHEX &TARGET,&SOURCE
&LABEL   UNPK  &TARGET.(L'&TARGET-1),&SOURCE
         MVC   &TARGET+L'&TARGET-1(1),&SOURCE+L'&SOURCE-1
         NI    &TARGET,X'0F'
         MVZ   &TARGET+1(L'&TARGET-1),&TARGET
         TR    &TARGET,=C'0123456789ABCDEF'
         MEND  ,

The NI and MVZ can alternatively be done using NC with a literal, and in
the real macro the 16-byte hex table can be provided as a parameter.

Jonathan Scott
IBM Hursley, UK

Reply via email to