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.