Outras Linguagens / Cobol
Como converter um endereço IP em hexadecimal e vice-versa
enviado por Humberto Henrique da Silva Cancelinha
Os verbos TCP-IP são passados, no COBOL, via CALL 'EZASOKET' USING.
Os endereços IP devem ser informados em hexadecimal, numa FULLWORD, para o progarama EZASOKET.
Este código converte um endereço TCP-IP do formato 999.999.999.999 para uma FULLWORD, e vice-versa.
ID DIVISION.
PROGRAM-ID. SWXTCPIP.
AUTHOR. HUMBERTO HENRIQUE CANCELINHA.
* SUBROTINA Converte um endereco IP, do formato:
* 1 - hexadecimal para o formato NNN.NNN.NNN.NNN. ou
* 2 - do formato NNN.NNN.NNN.NNN para o hexadecimal
* DATA 02 de maio de 2007
* OBJETIVO 1 - Recebe um endereco IP em HEXA ou NNN.NNN.NNN.NNN
* 2 - Converte para o formato oposto ao recebido.
* 3 - Devolve o IP convertido.
*
*-----------------------------------------------------------------
* HISTORICO DAS MANUTENCOES
* ---------- -----------------------------------------------------
* ANALISTA DESCRICAO
*CANCELINHA Permitir a conversao do formato hexa para o formato
* NNN.NNN.NNN.NNN e vice-versa.
*-----------------------------------------------------------------
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 FILLER.
03 W-ALFA.
05 W-ALFA1 PIC 9(03).
05 FILLER PIC X(01) VALUE '.'.
05 W-ALFA2 PIC 9(03).
05 FILLER PIC X(01) VALUE '.'.
05 W-ALFA3 PIC 9(03).
05 FILLER PIC X(01) VALUE '.'.
05 W-ALFA4 PIC 9(03).
03 W-FULL.
05 W-F1 PIC X(01).
05 W-F2 PIC X(01).
05 W-F3 PIC X(01).
05 W-F4 PIC X(01).
03 W-BINARY PIC 9(04) COMP.
03 FILLER REDEFINES W-BINARY.
05 W-B1 PIC X(01).
05 W-B2 PIC X(01).
*-----------------------------------------------------------------
LINKAGE SECTION.
01 LK-IP-HEXA PIC X(04).
01 LK-IP-ALFA PIC X(15).
*-----------------------------------------------------------------
PROCEDURE DIVISION USING LK-IP-HEXA
LK-IP-ALFA.
* Para converter de hexadecimal para NNN.NNN.NNN.NNN:
* LK-IP-HEXA deve conter o IP em hexadecimal
* LK-IP-ALFA deve conter SPACES ou LOW-VALUES
* A rotina retorna o IP convertido em LK-IP-ALFA.
*
* Para converter de NNN.NNN.NNN.NNN para hexadecimal:
* LK-IP-HEXA deve conter SPACES ou LOW-VALUES
* LK-IP-ALFA deve conter o IP NNN.NNN.NNN.NNN.
* A rotina retorna o IP convertido em LK-IP-HEXA.
*-----------------------------------------------------------------
IF LK-IP-ALFA EQUAL SPACES
OR LK-IP-ALFA EQUAL LOW-VALUES
MOVE LK-IP-HEXA TO W-FULL
MOVE ZEROS TO W-BINARY
MOVE W-F1 TO W-B2
MOVE W-BINARY TO W-ALFA1
MOVE W-F2 TO W-B2
MOVE W-BINARY TO W-ALFA2
MOVE W-F3 TO W-B2
MOVE W-BINARY TO W-ALFA3
MOVE W-F4 TO W-B2
MOVE W-BINARY TO W-ALFA4
MOVE W-ALFA TO LK-IP-ALFA
GOBACK.
MOVE LK-IP-ALFA TO W-ALFA.
MOVE SPACES TO W-FULL.
MOVE W-ALFA1 TO W-BINARY.
MOVE W-B2 TO W-F1.
MOVE W-ALFA2 TO W-BINARY.
MOVE W-B2 TO W-F2.
MOVE W-ALFA3 TO W-BINARY.
MOVE W-B2 TO W-F3.
MOVE W-ALFA4 TO W-BINARY.
MOVE W-B2 TO W-F4.
MOVE W-FULL TO LK-IP-HEXA.
GOBACK.
*====================== PROGRAM END ==============================
*================ MANUAL DE USO DA ROTINA ========================
1 - Definir os campos HEXA e ALFA.
HEXA he uma FULLWORD para endereco IP em formato HEXADECIMAL.
01 AX-HEXA-X PIC X(04).
ALFA he um campo alfanumerico, com 15 bytes, para endereco IP no
formato NNN.NNN.NNN.NNN
01 AX-ALFA-X PIC X(15).
2 - Para converter de HEXA para NNN.NNN.NNN.NNN:
. AX-HEXA-X deve conter o endereco IP em hexadecimal
. AX-ALFA-X deve conter o SPACES ou LOW-VALUES.
. A rotina devolve o IP convertido em AX-ALFA-X.
Para converter de NNN.NNN.NNN.NNN para HEXA:
. AX-HEXA-X deve conter o SPACES ou LOW-VALUES
. AX-ALFA-X deve conter o endereco IP no formato NNN.NNN.NNN.NNN.
. A rotina devolve o IP convertido em AX-HEXA-X.
3 - Fazer a chamada com CALL estatico.
CALL 'SWXTCPIP' USING AX-HEXA-X
AX-ALFA-X.
Versão impressa gerada em:
quarta-feira, 25 de novembro de 2009
© Copyright 2006 - R&W Consulting.