Skip to main content

Problem:

Do you have an example of how to convert a PIC X to a HEX value?

Resolution:

See the attached source code example.

Attachments:

hexcnvt.cbl

Old KB# 4680

Problem:

Do you have an example of how to convert a PIC X to a HEX value?

Resolution:

See the attached source code example.

Attachments:

hexcnvt.cbl

Old KB# 4680

I came up with the following code that can be insterted into an existing program:

To display hex values in a string:

          03  WS-HEX-TBL.

              05  WS-HEX-ENT               OCCURS 99 TIMES.

                  10  WS-HEX-TXT           PIC  X(01).

          03  WS-HEX-IDX                   PIC  9(03) COMP.

          03  WS-HEX-NBR-X.

              05  WS-HEX-NBR-X1            PIC  X(01) VALUE X"00".

              05  WS-HEX-NBR-X2            PIC  X(01).

          03  WS-HEX-NBR REDEFINES WS-HEX-NBR-X

                                           PIC  9(03) COMP.

          03  WS-HEX-M                     PIC  9(02).

          03  WS-HEX-R                     PIC  9(02).

          03  WS-HEX-X                     PIC  X(16)

              VALUE "0123456789ABCDEF".

          03  WS-HEX REDEFINES WS-HEX-X OCCURS 16 PIC X.

              MOVE SQLERRMC(1:SQLERRML) TO WS-HEX-TBL

              PERFORM WITH TEST BEFORE

                VARYING WS-HEX-IDX FROM 1 BY 1

                  UNTIL WS-HEX-IDX > SQLERRML

                  MOVE WS-HEX-TXT(WS-HEX-IDX) TO WS-HEX-NBR-X2

                  DIVIDE WS-HEX-NBR BY 16 GIVING    WS-HEX-M

                                          REMAINDER WS-HEX-R

                  ADD 1 TO WS-HEX-M, WS-HEX-R

                  DISPLAY WS-HEX-IDX " " WS-HEX-TXT   (WS-HEX-IDX)

                                     " " WS-HEX-NBR

                                     " " WS-HEX(WS-HEX-M)

                                         WS-HEX(WS-HEX-R)

              END-PERFORM