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
*---------------------------------------------------------------
|