A partir de um número decimal calcular o correspondente em hexadecimal


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por DORNELLES Carlos Alberto - Analista de Sistemas - Brasília DF. - cad_cobol@hotmail.com

Compativel com todos os compiladores e versões
         1         2         3         4         5         6         7         8
12345678901234567890123456789012345678901234567890123456789012345678901234567890

      *---------------------------------------------------------------
       IDENTIFICATION DIVISION.
      *---------------------------------------------------------------
       PROGRAM-ID.    CADHEXAD.
       AUTHOR.        CARLOS ALBERTO DORNELLES.
      *---------------------------------------------------------------
      * SISTEMA     : SICAD
      * PROGRAMA    : CADHEXAD
      * OBJETIVO    : A PARTIR DE UM NUMERO DECIMAL CALCULAR O 
      *             : CORRESPONDENTE EM HEXADECIMAL
      * ANALISTA    : CARLOS ALBERTO DORNELLES
      * LINGUAGEM   : COBOL
      * VERSAO      : V.001
      * DATA        : BRASILIA, 06 DE SETEMBRO DE 2006
      *---------------------------------------------------------------
      *                           MANUTENCAO
      *---------------------------------------------------------------
      * VRS DD.MM.AA AUTOR        DESCRICAO
      *
      *---------------------------------------------------------------

      *---------------------------------------------------------------
       DATA DIVISION.
      *---------------------------------------------------------------
      *---------------------------------------------------------------
       WORKING-STORAGE SECTION.
      *---------------------------------------------------------------
       01  WS-AUXILIARES.
           05 WS-NUMERO                  PIC 9(009)  VALUE ZEROES.
           05 WS-QUOCIENTE               PIC 9(009)  VALUE ZEROES.
           05 WS-RESTO                   PIC 9(002)  VALUE ZEROES.
           05 WS-X                       PIC 9(002)  VALUE ZEROES.
           05 WS-Y                       PIC 9(002)  VALUE 08.
           05 WS-HEXAD                   PIC X(008)  VALUE SPACES.
           05  TAB-HEXA                              VALUE
                                         "123456789ABCDEF".
               10  HEXA-VAL              PIC X(001)  OCCURS 15 TIMES.

      *---------------------------------------------------------------
       LINKAGE SECTION.
      *---------------------------------------------------------------
       01  PARM.
           05  LK-COMP                   PIC S9(04)  COMP.
           05  LK-NUMERO                 PIC 9(009).

      *---------------------------------------------------------------
      * PROCEDURE DIVISION USING PARM.
       PROCEDURE DIVISION.
      *---------------------------------------------------------------
           ACCEPT WS-NUMERO
      *     MOVE LK-NUMERO TO WS-NUMERO
           MOVE 1         TO WS-X
           PERFORM UNTIL WS-X GREATER THAN 08
              DIVIDE WS-NUMERO BY 16 GIVING    WS-QUOCIENTE
                                     REMAINDER WS-RESTO
              EVALUATE WS-RESTO
                 WHEN 0
                      MOVE WS-RESTO (2:1)      TO WS-HEXAD (WS-Y:1)
                 WHEN 1 THRU 15
                      MOVE HEXA-VAL (WS-RESTO) TO WS-HEXAD (WS-Y:1)
                 WHEN OTHER
                      DISPLAY 'ERRO NA DIVISAO - ' WS-RESTO
                      GOBACK
              END-EVALUATE
              MOVE WS-QUOCIENTE TO WS-NUMERO
              ADD 1             TO WS-X
              SUBTRACT 1      FROM WS-Y
           END-PERFORM
           DISPLAY 'RESULTADO - ' WS-HEXAD
           GOBACK.
      *---------------------------------------------------------------
      * END PROGRAM CADHEXAD
      *---------------------------------------------------------------


Teste realizados
Número em decimal Número em hexadecimal
000000010 00000000A
000000255 0000000FF
000000060 00000003C