Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   Cocina PowerCOBOL (https://www.cobolforo.es/forumdisplay.php?f=24)
-   -   [PowerCOBOL + COM/OLE] Ligar ao Site da União Europeia VAT Number (https://www.cobolforo.es/showthread.php?t=59)

Rapinto 2 de marzo de 2015 17:09

Ligar ao Site da União Europeia VAT Number
 
1 Archivos Adjunto(s)
Código para aceder ao Site da União Europeia, para validar se o Numero VAT é Válido.

No caso de Numeros VAT (NIF) Portugues, o site devolve o nome, morada e Código Postal a quem pertence o Numero.
No caso Espanhol, só devolve "válido" ou "inválido" .

De qualquer modo apenas pretendo dar uma ajuda na utilização do COM+ (OLE2).

O ficheiro ZIP anexo é um PPJ da versão 9 do Fujitsu Cobol.

Quem não tiver a versão 9, aqui vai o código.

Código COBOL:
  1. REPOSITORY
  2.     CLASS COM AS "*COM"
  3.     CLASS COMEXCEPTION AS "*COM-EXCEPTION".

Criar 2 textbox como "CmPais-ISO" e "CMNRCONTR"
Criar + 3 textbox como "CMNOME" "CMMORADA" "CMCODP"
Criar um botão e no "Click" colocar o código:
Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01 WINHTTP               PIC X(128) VALUE "WinHttp.WinHttpRequest.5.1".
  5.  01 WSDL                  PIC X(256) VALUE "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl".
  6.  01 xTraffic-Conditions.
  7.     03 xtr01 pic x(060) value "<?xml version=""1.0"" encoding=""UTF-8""?>".
  8.     03 xtr02 pic x(080) value "<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"">".
  9.     03 xtr03 pic x(019) value "  <SOAP-ENV:Body>".
  10.     03 xtr04 pic x(086) value "    <tns1:checkVat xmlns:tns1=""urn:ec.europa.eu:taxud:vies:services:checkVat:types"">".
  11.     03 xtr05 pic x(024) value "      <tns1:countryCode>".
  12.     03 xtrPais PIC X(02) VALUE "PT".
  13.     03 XTR05A PIC X(20) VALUE  "</tns1:countryCode>".
  14.     03 xtr06 pic x(022) value "      <tns1:vatNumber>".
  15.     03 XTRNIF  PIC X(050) VALUE SPACE.
  16.     03 xtr07 pic x(022) value "    </tns1:checkVat>".
  17.     03 xtr08 pic x(020) value "  </SOAP-ENV:Body>".
  18.     03 xtr09 pic x(022) value "</SOAP-ENV:Envelope>".
  19.  01 Traffic-Conditions redefines xTraffic-Conditions pic x(386).
  20.  
  21.  01 WEBSERVICE USAGE OBJECT REFERENCE COM.
  22.  
  23.  01 OP1 PIC X(256) VALUE "POST".
  24.  01 OP2 PIC X(256) VALUE "http://ec.europa.eu/taxation_customs/vies/services/checkVatService/".
  25.  01 OP3 PIC X(256) VALUE "FALSE".
  26. *
  27.  01 OP4 PIC X(256) VALUE "Content-Type".
  28.  01 OP5 PIC X(256) VALUE "text/xml; charset=utf-8".
  29.  01 OP6 PIC X(256) VALUE "SOAPAction".
  30.  
  31.  01 COUNTER     pic s9(09) comp-5.
  32.  01 DMICON      pic s9(09) comp-5.
  33.  01 returnvalue pic s9(09) comp-5.
  34.  01 RESPOSTA    PIC X(8192).
  35.  01 NOME        PIC X(0064).
  36.  01 MORADA      PIC X(0256).
  37.  01 WMORADA     PIC X(0256).
  38.  01 MOR         PIC X(100).
  39.  01 LOCP        PIC X(100).
  40.  01 CODP        PIC X(012).
  41. *
  42.  01   MSG.
  43.     03  MSG01     PIC X(016)   VALUE "O resultado é: " .
  44.     03  MSG02     PIC X(015)   VALUE SPACE.
  45.     03  MSG03     PIC X(006)   VALUE "Nome: ".
  46.     03  MSG04     PIC X(061)   VALUE SPACE.
  47.     03  MSG05     PIC X(008)   VALUE "Morada: ".
  48.     03  MSG06     PIC X(061)   VALUE SPACE.
  49.     03  MSG07     PIC X(010)   VALUE "C.Postal:".
  50.     03  MSG08     PIC X(010)   VALUE SPACE.
  51.     03  MSG09     PIC X(080)   VALUE "Se pretende passar os dados para a Ficha, pressione o botão SIM.".
  52. *
  53.  
  54. *
  55.  PROCEDURE       DIVISION.
  56.  MAIN SECTION.
  57.  MAIN-00.
  58.     MOVE SPACE TO XTRNIF.
  59.     IF "text" OF CmPais-ISO NOT = SPACE MOVE "text" OF CmPais-ISO TO xtrPais
  60.          ELSE
  61.             MOVE ZERO TO DMICON
  62.             INVOKE POW-SELF "DisplayMessage" USING "Não tem País definido!"  "Teste" POW-DMICONINFORMATION
  63.             GO TO MAIN-99-EXIT.
  64.     IF "TEXT" OF CMNRCONTR NOT = SPACE MOVE "TEXT" OF CMNRCONTR TO XTRNIF
  65.         ELSE
  66.         GO TO MAIN-99-EXIT.
  67.     MOVE ZERO TO COUNTER.
  68.     INSPECT XTRNIF TALLYING COUNTER  FOR ALL SPACES.
  69.     SUBTRACT COUNTER FROM 50 GIVING COUNTER. ADD 1 TO COUNTER.
  70.     MOVE "</tns1:vatNumber>" TO XTRNIF(COUNTER:).
  71. *   INVOKE ButtonPlus1 "OpenWebsite" USING sAddress.
  72.     INVOKE COM "CREATE-OBJECT" USING WINHTTP RETURNING WEBSERVICE.
  73. *
  74.     INVOKE WEBSERVICE "OPEN" USING op1 op2 op3.
  75. *
  76.     INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP4 .
  77.     INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP5 .
  78.     INVOKE WEBSERVICE "setRequestHeader" using OP6 OP4 .
  79. *
  80.     INVOKE WEBSERVICE "send" USING TRAFFIC-CONDITIONS.
  81. *
  82.     INVOKE WEBSERVICE "get-Responsetext" RETURNING RESPOSTA.
  83. *****
  84.     MOVE RESPOSTA TO XMLLINHA.
  85.     MOVE "valid" TO XMLFIELDSEARCH.
  86.     CALL "GETXMLFIELD".
  87.     MOVE XMLFIELDRESULT TO OK.
  88.     IF XMLFIELDRESULT = "true" MOVE " VALIDO " TO MSG02
  89.          ELSE   MOVE "INVALIDO" TO MSG02.
  90.     MOVE X"0A0A0A" TO MSG02(12:3).
  91. *
  92.     MOVE "name" TO XMLFIELDSEARCH.
  93.     CALL "GETXMLFIELD".
  94.     move XMLFIELDRESULT TO MSG04.
  95. *
  96.     MOVE "address" TO XMLFIELDSEARCH.
  97.     CALL "GETXMLFIELD".
  98.     move XMLFIELDRESULT TO MORADA.
  99. *
  100.     MOVE X"0A" TO MSG04(60:1).
  101.     UNSTRING MORADA DELIMITED BY "<" INTO WMORADA.
  102.     UNSTRING WMORADA DELIMITED BY X"0A" INTO MOR  COUNT IN COUNTER
  103.                                              LOCP COUNT IN COUNTER
  104.                                              CODP COUNT IN COUNTER.
  105.     MOVE MOR TO MSG06.
  106.     MOVE CODP TO MSG08.
  107.     MOVE SPACE TO MSG08(9:).
  108.     MOVE X"0D0A" TO MSG06(60:1).
  109.  MAIN-70.
  110.     IF OK NOT = "t" GO TO MAIN-80.
  111.     IF "ENABLED" OF CMNOME = POW-FALSE GO TO MAIN-80.
  112.     MOVE X"0A0A" TO MSG09.
  113.     MOVE "  Se pretende passar os dados para a Ficha, pressione o botão SIM." TO MSG09.
  114.     MOVE X"0A0A" TO MSG09(1:2).
  115.     MOVE ZERO TO DMICON.
  116.     ADD POW-DMICONINFORMATION POW-DMYESNO POW-DMDEFBUTTON2 TO DMICON.
  117.     INVOKE POW-SELF "DisplayMessage" USING MSG "R.P.S. - Faturação" DMICON
  118.                RETURNING ReturnValue.
  119.     IF RETURNVALUE = POW-DMRYES
  120.          MOVE MSG04 TO "TEXT" OF CMNOME
  121.          MOVE MSG06 TO "TEXT" OF CMMORADA
  122.          MOVE MSG08 TO "TEXT" OF CMCODP.
  123.     GO TO MAIN-90.
  124.  MAIN-80.
  125.     MOVE SPACE TO MSG09.
  126.     MOVE ZERO TO DMICON.
  127.     INVOKE POW-SELF "DisplayMessage" USING MSG "R.P.S. - Faturação" POW-DMICONINFORMATION
  128.                RETURNING ReturnValue.
  129.  MAIN-90.
  130.     SET WEBSERVICE TO NULL.
  131.     MOVE SPACE TO NOME MOR LOCP CODP RESPOSTA.
  132.  MAIN-99-EXIT.
  133.     EXIT PROGRAM.

Espero que ajude alguém.

Saludos,
Rui Pinto

Rapinto 2 de marzo de 2015 17:14

Como já não aceitava mais vai neste Post o código para a "New Procedure" GETXMLFIELD":
Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01   WFIELDSEARCH            PIC X(0128).
  5.  01   WFIELDSEARCHEND         PIC X(0128).
  6.  01   XMLIDX.
  7.     03  XMLIDX1                 PIC S9(009).
  8.     03  XMLIDX2                 PIC S9(009).
  9.     03  XMLIDX3                 PIC S9(009).
  10.     03  XMLIDX8                 PIC S9(009).
  11.     03  XMLIDX9                 PIC S9(009).
  12. *
  13.  PROCEDURE       DIVISION.
  14.  MAIN SECTION.
  15.  MAIN-00.
  16. *
  17.     INITIALIZE XMLIDX WFIELDSEARCH WFIELDSEARCHEND XMLFIELDRESULT.
  18.     IF XMLLINHA = SPACE GO TO MAIN-99-EXIT.
  19.     IF XMLFIELDSEARCH = SPACE GO TO MAIN-99-EXIT.
  20.     MOVE "<" TO WFIELDSEARCH.
  21.     MOVE XMLFIELDSEARCH TO WFIELDSEARCH(2:)
  22.     PERFORM VARYING XMLIDX8 FROM 128 BY -1 UNTIL XMLIDX8 < 1
  23.          IF WFIELDSEARCH(XMLIDX8:1) NOT = SPACE
  24.               ADD 1 TO XMLIDX8
  25.               MOVE ">" TO WFIELDSEARCH(XMLIDX8:1)
  26.               EXIT PERFORM
  27.          END-IF
  28.     END-PERFORM.
  29. *   SUBTRACT XMLIDX8 FROM 128 GIVING XMLIDX8.
  30.     MOVE "</" TO WFIELDSEARCHEND.
  31.     MOVE WFIELDSEARCH(2:) TO WFIELDSEARCHEND(3:).
  32.     MOVE XMLIDX8  TO XMLIDX9.
  33.     ADD 1 TO XMLIDX9.
  34.  MAIN-05.
  35.     PERFORM VARYING XMLIDX1 FROM 1 BY 1 UNTIL XMLIDX1 > 8196
  36.           IF XMLLINHA(XMLIDX1:XMLIDX8) = WFIELDSEARCH
  37.               ADD XMLIDX8 TO XMLIDX1
  38.               EXIT PERFORM
  39.           END-IF
  40.     END-PERFORM
  41.     IF XMLIDX1 > 8195 GO TO MAIN-99-EXIT.
  42.     PERFORM VARYING XMLIDX2 FROM XMLIDX1 BY 1 UNTIL XMLIDX2 > 8196
  43.           IF XMLLINHA(XMLIDX2:XMLIDX9) = WFIELDSEARCHEND
  44.               ADD 1 TO XMLIDX2
  45.               EXIT PERFORM
  46.           END-IF
  47.           IF XMLLINHA(XMLIDX2:1) = "<"
  48.                 MOVE "<" TO XMLFIELDRESULT
  49.                 MOVE 8186 TO XMLIDX2
  50.                 EXIT PERFORM
  51.           END-IF
  52.     END-PERFORM
  53.     IF XMLIDX2 > 8195 GO TO MAIN-99-EXIT.
  54.     SUBTRACT 1 FROM XMLIDX2.
  55.     SUBTRACT XMLIDX1 FROM XMLIDX2 GIVING XMLIDX3.
  56.     MOVE XMLLINHA(XMLIDX1:XMLIDX3) TO XMLFIELDRESULT.
  57.  MAIN-99-EXIT.
  58.     EXIT PROGRAM.  

Joseg 29 de enero de 2018 17:37

Cita:

Citación del post de Rapinto (Mensaje 180)
Como já não aceitava mais vai neste Post o código para a "New Procedure" GETXMLFIELD":
Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01   WFIELDSEARCH            PIC X(0128).
  5.  01   WFIELDSEARCHEND         PIC X(0128).
  6.  01   XMLIDX.
  7.     03  XMLIDX1                 PIC S9(009).
  8.     03  XMLIDX2                 PIC S9(009).
  9.     03  XMLIDX3                 PIC S9(009).
  10.     03  XMLIDX8                 PIC S9(009).
  11.     03  XMLIDX9                 PIC S9(009).
  12. *
  13.  PROCEDURE       DIVISION.
  14.  MAIN SECTION.
  15.  MAIN-00.
  16. *
  17.     INITIALIZE XMLIDX WFIELDSEARCH WFIELDSEARCHEND XMLFIELDRESULT.
  18.     IF XMLLINHA = SPACE GO TO MAIN-99-EXIT.
  19.     IF XMLFIELDSEARCH = SPACE GO TO MAIN-99-EXIT.
  20.     MOVE "<" TO WFIELDSEARCH.
  21.     MOVE XMLFIELDSEARCH TO WFIELDSEARCH(2:)
  22.     PERFORM VARYING XMLIDX8 FROM 128 BY -1 UNTIL XMLIDX8 < 1
  23.          IF WFIELDSEARCH(XMLIDX8:1) NOT = SPACE
  24.               ADD 1 TO XMLIDX8
  25.               MOVE ">" TO WFIELDSEARCH(XMLIDX8:1)
  26.               EXIT PERFORM
  27.          END-IF
  28.     END-PERFORM.
  29. *   SUBTRACT XMLIDX8 FROM 128 GIVING XMLIDX8.
  30.     MOVE "</" TO WFIELDSEARCHEND.
  31.     MOVE WFIELDSEARCH(2:) TO WFIELDSEARCHEND(3:).
  32.     MOVE XMLIDX8  TO XMLIDX9.
  33.     ADD 1 TO XMLIDX9.
  34.  MAIN-05.
  35.     PERFORM VARYING XMLIDX1 FROM 1 BY 1 UNTIL XMLIDX1 > 8196
  36.           IF XMLLINHA(XMLIDX1:XMLIDX8) = WFIELDSEARCH
  37.               ADD XMLIDX8 TO XMLIDX1
  38.               EXIT PERFORM
  39.           END-IF
  40.     END-PERFORM
  41.     IF XMLIDX1 > 8195 GO TO MAIN-99-EXIT.
  42.     PERFORM VARYING XMLIDX2 FROM XMLIDX1 BY 1 UNTIL XMLIDX2 > 8196
  43.           IF XMLLINHA(XMLIDX2:XMLIDX9) = WFIELDSEARCHEND
  44.               ADD 1 TO XMLIDX2
  45.               EXIT PERFORM
  46.           END-IF
  47.           IF XMLLINHA(XMLIDX2:1) = "<"
  48.                 MOVE "<" TO XMLFIELDRESULT
  49.                 MOVE 8186 TO XMLIDX2
  50.                 EXIT PERFORM
  51.           END-IF
  52.     END-PERFORM
  53.     IF XMLIDX2 > 8195 GO TO MAIN-99-EXIT.
  54.     SUBTRACT 1 FROM XMLIDX2.
  55.     SUBTRACT XMLIDX1 FROM XMLIDX2 GIVING XMLIDX3.
  56.     MOVE XMLLINHA(XMLIDX1:XMLIDX3) TO XMLFIELDRESULT.
  57.  MAIN-99-EXIT.
  58.     EXIT PROGRAM.  


Este código deixou de funcionar. Houve alterações?

Rapinto 29 de enero de 2018 19:53

Joseg,

Depois de tanto tempo a funcionar, eles devem ter acertado qualquer coisa.
O erro parece-me ser no:
Código COBOL:
  1.  Traffic-Conditions redefines xTraffic-Conditions pic x(386).
tem que ter pic x(417)
Enganei-me a somar os tamanhos todos.
A string não chegava lá completa mas funcionava e eu nunca dei por ela.
Agora devem ter acertado alguma coisa e o programa queixou-se.

Um abraço,
Rui Pinto

Joseg 30 de enero de 2018 13:14

Cita:

Citación del post de Rapinto (Mensaje 3915)
Joseg,

Depois de tanto tempo a funcionar, eles devem ter acertado qualquer coisa.
O erro parece-me ser no:
Código COBOL:
  1.  Traffic-Conditions redefines xTraffic-Conditions pic x(386).
tem que ter pic x(417)
Enganei-me a somar os tamanhos todos.
A string não chegava lá completa mas funcionava e eu nunca dei por ela.
Agora devem ter acertado alguma coisa e o programa queixou-se.

Um abraço,
Rui Pinto


Obrigado, já esta ok :)

Abraço

Joseg 9 de noviembre de 2021 17:41

Cita:

Citación del post de Rapinto (Mensaje 179)
Código para aceder ao Site da União Europeia, para validar se o Numero VAT é Válido.

No caso de Numeros VAT (NIF) Portugues, o site devolve o nome, morada e Código Postal a quem pertence o Numero.
No caso Espanhol, só devolve "válido" ou "inválido" .

De qualquer modo apenas pretendo dar uma ajuda na utilização do COM+ (OLE2).

O ficheiro ZIP anexo é um PPJ da versão 9 do Fujitsu Cobol.

Quem não tiver a versão 9, aqui vai o código.

Código COBOL:
  1. REPOSITORY
  2.     CLASS COM AS "*COM"
  3.     CLASS COMEXCEPTION AS "*COM-EXCEPTION".

Criar 2 textbox como "CmPais-ISO" e "CMNRCONTR"
Criar + 3 textbox como "CMNOME" "CMMORADA" "CMCODP"
Criar um botão e no "Click" colocar o código:
Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01 WINHTTP               PIC X(128) VALUE "WinHttp.WinHttpRequest.5.1".
  5.  01 WSDL                  PIC X(256) VALUE "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl".
  6.  01 xTraffic-Conditions.
  7.     03 xtr01 pic x(060) value "<?xml version=""1.0"" encoding=""UTF-8""?>".
  8.     03 xtr02 pic x(080) value "<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"">".
  9.     03 xtr03 pic x(019) value "  <SOAP-ENV:Body>".
  10.     03 xtr04 pic x(086) value "    <tns1:checkVat xmlns:tns1=""urn:ec.europa.eu:taxud:vies:services:checkVat:types"">".
  11.     03 xtr05 pic x(024) value "      <tns1:countryCode>".
  12.     03 xtrPais PIC X(02) VALUE "PT".
  13.     03 XTR05A PIC X(20) VALUE  "</tns1:countryCode>".
  14.     03 xtr06 pic x(022) value "      <tns1:vatNumber>".
  15.     03 XTRNIF  PIC X(050) VALUE SPACE.
  16.     03 xtr07 pic x(022) value "    </tns1:checkVat>".
  17.     03 xtr08 pic x(020) value "  </SOAP-ENV:Body>".
  18.     03 xtr09 pic x(022) value "</SOAP-ENV:Envelope>".
  19.  01 Traffic-Conditions redefines xTraffic-Conditions pic x(386).
  20.  
  21.  01 WEBSERVICE USAGE OBJECT REFERENCE COM.
  22.  
  23.  01 OP1 PIC X(256) VALUE "POST".
  24.  01 OP2 PIC X(256) VALUE "http://ec.europa.eu/taxation_customs/vies/services/checkVatService/".
  25.  01 OP3 PIC X(256) VALUE "FALSE".
  26. *
  27.  01 OP4 PIC X(256) VALUE "Content-Type".
  28.  01 OP5 PIC X(256) VALUE "text/xml; charset=utf-8".
  29.  01 OP6 PIC X(256) VALUE "SOAPAction".
  30.  
  31.  01 COUNTER     pic s9(09) comp-5.
  32.  01 DMICON      pic s9(09) comp-5.
  33.  01 returnvalue pic s9(09) comp-5.
  34.  01 RESPOSTA    PIC X(8192).
  35.  01 NOME        PIC X(0064).
  36.  01 MORADA      PIC X(0256).
  37.  01 WMORADA     PIC X(0256).
  38.  01 MOR         PIC X(100).
  39.  01 LOCP        PIC X(100).
  40.  01 CODP        PIC X(012).
  41. *
  42.  01   MSG.
  43.     03  MSG01     PIC X(016)   VALUE "O resultado é: " .
  44.     03  MSG02     PIC X(015)   VALUE SPACE.
  45.     03  MSG03     PIC X(006)   VALUE "Nome: ".
  46.     03  MSG04     PIC X(061)   VALUE SPACE.
  47.     03  MSG05     PIC X(008)   VALUE "Morada: ".
  48.     03  MSG06     PIC X(061)   VALUE SPACE.
  49.     03  MSG07     PIC X(010)   VALUE "C.Postal:".
  50.     03  MSG08     PIC X(010)   VALUE SPACE.
  51.     03  MSG09     PIC X(080)   VALUE "Se pretende passar os dados para a Ficha, pressione o botão SIM.".
  52. *
  53.  
  54. *
  55.  PROCEDURE       DIVISION.
  56.  MAIN SECTION.
  57.  MAIN-00.
  58.     MOVE SPACE TO XTRNIF.
  59.     IF "text" OF CmPais-ISO NOT = SPACE MOVE "text" OF CmPais-ISO TO xtrPais
  60.          ELSE
  61.             MOVE ZERO TO DMICON
  62.             INVOKE POW-SELF "DisplayMessage" USING "Não tem País definido!"  "Teste" POW-DMICONINFORMATION
  63.             GO TO MAIN-99-EXIT.
  64.     IF "TEXT" OF CMNRCONTR NOT = SPACE MOVE "TEXT" OF CMNRCONTR TO XTRNIF
  65.         ELSE
  66.         GO TO MAIN-99-EXIT.
  67.     MOVE ZERO TO COUNTER.
  68.     INSPECT XTRNIF TALLYING COUNTER  FOR ALL SPACES.
  69.     SUBTRACT COUNTER FROM 50 GIVING COUNTER. ADD 1 TO COUNTER.
  70.     MOVE "</tns1:vatNumber>" TO XTRNIF(COUNTER:).
  71. *   INVOKE ButtonPlus1 "OpenWebsite" USING sAddress.
  72.     INVOKE COM "CREATE-OBJECT" USING WINHTTP RETURNING WEBSERVICE.
  73. *
  74.     INVOKE WEBSERVICE "OPEN" USING op1 op2 op3.
  75. *
  76.     INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP4 .
  77.     INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP5 .
  78.     INVOKE WEBSERVICE "setRequestHeader" using OP6 OP4 .
  79. *
  80.     INVOKE WEBSERVICE "send" USING TRAFFIC-CONDITIONS.
  81. *
  82.     INVOKE WEBSERVICE "get-Responsetext" RETURNING RESPOSTA.
  83. *****
  84.     MOVE RESPOSTA TO XMLLINHA.
  85.     MOVE "valid" TO XMLFIELDSEARCH.
  86.     CALL "GETXMLFIELD".
  87.     MOVE XMLFIELDRESULT TO OK.
  88.     IF XMLFIELDRESULT = "true" MOVE " VALIDO " TO MSG02
  89.          ELSE   MOVE "INVALIDO" TO MSG02.
  90.     MOVE X"0A0A0A" TO MSG02(12:3).
  91. *
  92.     MOVE "name" TO XMLFIELDSEARCH.
  93.     CALL "GETXMLFIELD".
  94.     move XMLFIELDRESULT TO MSG04.
  95. *
  96.     MOVE "address" TO XMLFIELDSEARCH.
  97.     CALL "GETXMLFIELD".
  98.     move XMLFIELDRESULT TO MORADA.
  99. *
  100.     MOVE X"0A" TO MSG04(60:1).
  101.     UNSTRING MORADA DELIMITED BY "<" INTO WMORADA.
  102.     UNSTRING WMORADA DELIMITED BY X"0A" INTO MOR  COUNT IN COUNTER
  103.                                              LOCP COUNT IN COUNTER
  104.                                              CODP COUNT IN COUNTER.
  105.     MOVE MOR TO MSG06.
  106.     MOVE CODP TO MSG08.
  107.     MOVE SPACE TO MSG08(9:).
  108.     MOVE X"0D0A" TO MSG06(60:1).
  109.  MAIN-70.
  110.     IF OK NOT = "t" GO TO MAIN-80.
  111.     IF "ENABLED" OF CMNOME = POW-FALSE GO TO MAIN-80.
  112.     MOVE X"0A0A" TO MSG09.
  113.     MOVE "  Se pretende passar os dados para a Ficha, pressione o botão SIM." TO MSG09.
  114.     MOVE X"0A0A" TO MSG09(1:2).
  115.     MOVE ZERO TO DMICON.
  116.     ADD POW-DMICONINFORMATION POW-DMYESNO POW-DMDEFBUTTON2 TO DMICON.
  117.     INVOKE POW-SELF "DisplayMessage" USING MSG "R.P.S. - Faturação" DMICON
  118.                RETURNING ReturnValue.
  119.     IF RETURNVALUE = POW-DMRYES
  120.          MOVE MSG04 TO "TEXT" OF CMNOME
  121.          MOVE MSG06 TO "TEXT" OF CMMORADA
  122.          MOVE MSG08 TO "TEXT" OF CMCODP.
  123.     GO TO MAIN-90.
  124.  MAIN-80.
  125.     MOVE SPACE TO MSG09.
  126.     MOVE ZERO TO DMICON.
  127.     INVOKE POW-SELF "DisplayMessage" USING MSG "R.P.S. - Faturação" POW-DMICONINFORMATION
  128.                RETURNING ReturnValue.
  129.  MAIN-90.
  130.     SET WEBSERVICE TO NULL.
  131.     MOVE SPACE TO NOME MOR LOCP CODP RESPOSTA.
  132.  MAIN-99-EXIT.
  133.     EXIT PROGRAM.

Espero que ajude alguém.

Saludos,
Rui Pinto


Este código deixou de funcionar :(
Alguém pode ajudar?

Saludos!

Kuk 9 de noviembre de 2021 18:21

@Joseg, qué error te sale? Esto ayudará entender qué es lo que falla.

Joseg 9 de noviembre de 2021 19:12

Cita:

Citación del post de Kuk (Mensaje 7276)
@Joseg, qué error te sale? Esto ayudará entender qué es lo que falla.

Nesta linha:
Código COBOL:
  1. INVOKE WEBSERVICE "get-Responsetext" RETURNING RESPOSTA.

"RESPOSTA" é a seguinte:
Código XML:
  1. <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>The given SOAPAction
  2.  Content-Type does not match an operation.</faultstring></soap:Fault></soap:Body></soap:Envelope>

Kuk 9 de noviembre de 2021 20:05

@Joseg, el tiene pinta de venir de aquí:

Código COBOL:
  1.  01 OP5 PIC X(256) VALUE "text/xml; charset=utf-8".

Te propongo que te descargues el programa SoapUI o hagas unos test en un cliente Soap Online como este: SOAP Web Client

Una vez hayas encontrado el problema, corrijas el código Cobol.

Joseg 9 de noviembre de 2021 20:39

Cita:

Citación del post de Kuk (Mensaje 7278)
@Joseg, el tiene pinta de venir de aquí:

Código COBOL:
  1.  01 OP5 PIC X(256) VALUE "text/xml; charset=utf-8".

Te propongo que te descargues el programa SoapUI o hagas unos test en un cliente Soap Online como este: SOAP Web Client

Una vez hayas encontrado el problema, corrijas el código Cobol.

Gracias pela dica !!!!

Pode ser um problema no servidor, mas no link que me enviaste também não dá.

Consegues validar um NIF de Espanha, ou de outro país?

Saludos,

Kuk 10 de noviembre de 2021 11:35

1 Archivos Adjunto(s)
@Joseg, acabo de probar con https https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl y funciona con SoapUI 2.5.1

fastpho 10 de noviembre de 2021 14:02

Cita:

Citación del post de Joseg (Mensaje 7277)
Nesta linha:
Código COBOL:
  1. INVOKE WEBSERVICE "get-Responsetext" RETURNING RESPOSTA.

"RESPOSTA" é a seguinte:
Código XML:
  1. <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>The given SOAPAction
  2.  Content-Type does not match an operation.</faultstring></soap:Fault></soap:Body></soap:Envelope>

Hola @Joseg, El problema esta en el dato de envio es invalido, estuve probando el ejemplo original de RUI , y le falta el cierre de
Código XML:
  1. </tns1:checkVat>
agregando esta linea a la variable de envio Traffic-Conditions funciona bien ....
Me trajo los datos correctos
Saludos..

Kuk 10 de noviembre de 2021 14:38

@fastpho, bien visto compañero :bien:

Yo utilicé el WSDL original con el SoapUI y será por eso que me funcionó.

Lo raro es que antes haya funcionado...

fastpho 10 de noviembre de 2021 16:11

Cita:

Citación del post de fastpho (Mensaje 7281)
Hola @Joseg, El problema esta en el dato de envio es invalido, estuve probando el ejemplo original de RUI , y le falta el cierre de
Código XML:
  1. </tns1:checkVat>
agregando esta linea a la variable de envio Traffic-Conditions funciona bien ....
Me trajo los datos correctos
Saludos..

Perdon , copie mal , el cierre que falta es ....
Código COBOL:
  1. "</tns1:vatNumber>". *> falta del ejemplo de RUI
Saludos ....

Joseg 11 de noviembre de 2021 00:43

Cita:

Citación del post de fastpho (Mensaje 7286)
Perdon , copie mal , el cierre que falta es ....
Código COBOL:
  1. "</tns1:vatNumber>". *> falta del ejemplo de RUI
Saludos ....

Não esta a faltar !!

Ver este código. Continua a não funcionar :(

Código COBOL:
  1.   MOVE ZERO TO COUNTER.
  2.      INSPECT XTRNIF TALLYING COUNTER  FOR ALL SPACES.
  3.      SUBTRACT COUNTER FROM 50 GIVING COUNTER. ADD 1 TO COUNTER.
  4.      MOVE "</tns1:vatNumber>" TO XTRNIF(COUNTER:).
  5.  
  6.      INVOKE COM "CREATE-OBJECT" USING WINHTTP RETURNING WEBSERVICE

Kuk 11 de noviembre de 2021 09:54

@Joseg, has probado con https?

Joseg 11 de noviembre de 2021 10:48

1 Archivos Adjunto(s)
Cita:

Citación del post de Kuk (Mensaje 7290)
@Joseg, has probado con https?

Com https tb não dá :(

fastpho 11 de noviembre de 2021 12:12

1 Archivos Adjunto(s)
Hola @Joseg, te paso un ejemplo funcionando con tus datos ......
La respuesta del servidor es leida con chilkat xml
Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4. *----------------------------------------------------------------------
  5. * Variables para el Objeto WinHttpRequest
  6. *----------------------------------------------------------------------
  7.  01  HttpJob           pic x(128) value "WinHttp.WinHttpRequest.5.1".
  8.  01  WinHttpReq        usage object reference OLE.
  9. *> POST , GET , PUT
  10.  01  TipoEnvio         pic x(4) value "POST".
  11. * Verdero o falso dependiendo si la comunicacion es asyn -  sync
  12.  01 OLE-TRUE           PIC 1(1)  BIT VALUE B"1".
  13.  01 OLE-FALSE          PIC 1(1)  BIT VALUE B"0".
  14. *https:
  15.  01 ServerName         pic x(256) value "http://ec.europa.eu/taxation_customs/vies/services/checkVatService".
  16.  01 ReqHead1           pic x(256) value "Content-Type".
  17.  01 ReqHead2           pic x(256) value "application/soap+xml; charset=utf-8".
  18.  01 status-string      pic  x(256).
  19.  01 Respuesta          PIC  x(450).
  20.  01 xTraffic-Conditions.
  21.     03 xtr01   pic x(42) value "<?xml version=""1.0"" encoding=""UTF-8""?>".
  22.     03 xtr02   pic x(80) value "<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"">".
  23.     03 xtr03   pic x(17) value "  <SOAP-ENV:Body>".
  24.     03 xtr04   pic x(86) value "    <tns1:checkVat xmlns:tns1=""urn:ec.europa.eu:taxud:vies:services:checkVat:types"">".
  25.     03 xtr05   pic x(24) value "      <tns1:countryCode>".
  26.     03 xtrPais pic X(02) VALUE "PT". *>IT
  27.     03 XTR05A  pic X(19) VALUE "</tns1:countryCode>".
  28.     03 xtr06   pic x(22) value "      <tns1:vatNumber>".  *> 03 XTRNIF  pic X(11) VALUE "07392740960".
  29.     03 XTRNIF  pic X(9) VALUE "510944299".
  30.     03 xtr06C  pic x(17) value "</tns1:vatNumber>". *> falta del ejemplo de RUI
  31.     03 xtr07   pic x(16) value "</tns1:checkVat>".
  32.     03 xtr08   pic x(18) value "  </SOAP-ENV:Body>".
  33.     03 xtr09   pic x(20) value "</SOAP-ENV:Envelope>".
  34.  01 Traffic-Conditions redefines xTraffic-Conditions pic x(374).
  35.  01 ReturnValue      pic s9(5) comp-5 VALUE ZEROS.    
  36.  
  37.  01 Campo-Valida     pic x(10).
  38.  01 Campo-Name       pic x(30).
  39.  01 Campo-Address    pic x(30).  
  40.  
  41.  PROCEDURE       DIVISION.
  42. *-----------------    
  43.  INICIO-Peticion.
  44. *-----------------------------
  45. * Crea el objeto WinHttpRequest      
  46.      invoke OLE "CREATE-OBJECT"   using HttpJob returning WinHttpReq.
  47. *------------------------------
  48. * Open la  HTTP request.
  49.      invoke WinHttpReq  "OPEN" using   TipoEnvio ,  ServerName , ole-true.
  50. *
  51.       invoke WinHttpReq "setRequestHeader" using ReqHead1 ReqHead2.
  52. *
  53. * ------------------------------    
  54. *  Envia HTTP request.
  55.      invoke WinHttpReq  "send" using Traffic-Conditions.
  56. *------------------------------    
  57. * Espera la respuesta completa
  58.      invoke WinHttpReq  "WaitForResponse" using  ole-true.
  59. *-------------------------------
  60.  
  61. *--------------------------------------------
  62. * Muestra Estado de comunicacion
  63.  
  64.      invoke WinHttpReq  "get-StatusText" returning status-string.
  65.      display "*---------------------------------*"
  66.      display "Respuesta Server: " , status-string
  67.  
  68.      
  69. * ---------------------------------------------------------------------------
  70.      invoke WinHttpReq "get-Responsetext" RETURNING Respuesta.
  71.      display "*-------xml de salida--------*"    
  72.      display Respuesta.
  73.      display "*-------fin de salida--------*".      
  74.    
  75. * ---------------------------------------------------------------------------
  76.  Leo-Xml. *>chilkat xml
  77.      INVOKE ChilkatXml1 "LoadXml" USING Respuesta RETURNING ReturnValue.
  78.       if ReturnValue not = 1 then
  79.            INVOKE pow-self "DisplayMessage" USING "error"
  80.            exit program
  81.       end-if.
  82.  
  83.      INVOKE ChilkatXml1 "TagContent" USING "valid"    RETURNING Campo-Valida.
  84.      INVOKE ChilkatXml1 "TagContent" USING "name"     RETURNING Campo-Name.
  85.      INVOKE ChilkatXml1 "TagContent" USING "address"  RETURNING Campo-Address.
  86.      display "valid : " , Campo-Valida.
  87.      display "name  : " , Campo-Name.
  88.      display "address:" , Campo-Address.
  89.      
  90.      
Saludos

fastpho 11 de noviembre de 2021 13:43

@Joseg, revisando detenidamente el ejemplo de RUI , no me había dado cuenta
que inserta a la variable Traffic-Conditions , cuando el usuario ingresa el
valor del NIF con las siguientes lineas
Código COBOL:
  1.         MOVE ZERO TO COUNTER.
  2.     INSPECT XTRNIF TALLYING COUNTER  FOR ALL SPACES.
  3.     SUBTRACT COUNTER FROM 50 GIVING COUNTER. ADD 1 TO COUNTER.
  4.     MOVE "</tns1:vatNumber>" TO XTRNIF(COUNTER:).
el problema que le veo al ejemplo es la peticion en las cabeceras
cambiando estas lineas :
Código COBOL:
  1.     INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP4 .
  2.     INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP5 .
  3.     INVOKE WEBSERVICE "setRequestHeader" USING  OP6 OP4.
  4.  
Por esta sola :
Código COBOL:
  1. INVOKE WEBSERVICE "setRequestHeader" USING OP4 OP5 .
Funciona perfectamente
Saludos .....

Kuk 11 de noviembre de 2021 15:08

@Joseg, he hecho pruebas (acabé instalando el Fujitsu).

Funciona en mi caso comentando las siguientes líneas:

Código COBOL:
  1.     *>INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP4 .
  2.     *>INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP5 .
  3.     *>INVOKE WEBSERVICE "setRequestHeader" using OP6 OP4 .

Este es mi código:

Código COBOL:
  1. *>
  2.  IDENTIFICATION DIVISION.
  3.  PROGRAM-ID.   TEST001.
  4.  
  5.  ENVIRONMENT     DIVISION.
  6.  CONFIGURATION SECTION.
  7.  REPOSITORY.
  8.      CLASS COM AS "*COM"
  9.      CLASS COMEXCEPTION AS "*COM-EXCEPTION".
  10.  
  11.  DATA            DIVISION.
  12.  WORKING-STORAGE SECTION.
  13.  01 WINHTTP               PIC X(128) VALUE "WinHttp.WinHttpRequest.5.1".
  14.  01 WSDL                  PIC X(256) VALUE "https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl".
  15.  01 xTraffic-Conditions   PIC X(384).
  16.    
  17.  *>01 Traffic-Conditions redefines xTraffic-Conditions pic x(386).
  18.  
  19.  01 WEBSERVICE USAGE OBJECT REFERENCE COM.
  20.  
  21.  01 OP1 PIC X(256) VALUE "POST".
  22.  01 OP2 PIC X(256) VALUE "http://ec.europa.eu/taxation_customs/vies/services/checkVatService/".
  23.  01 OP3 PIC X(256) VALUE "FALSE".
  24. *
  25.  01 OP4 PIC X(256) VALUE "Content-Type".
  26.  01 OP5 PIC X(256) VALUE "text/xml; charset=utf-8".
  27.  01 OP6 PIC X(256) VALUE "SOAPAction".
  28.  
  29.  
  30.  01 RESPOSTA    PIC X(8192).
  31.  
  32.  01 resultado1   PIC X(5).
  33.  01 resultado2   PIC X(5).
  34.  
  35.  *>01  long  PIC 9(4) COMP-5.
  36.  
  37.  PROCEDURE       DIVISION.
  38.  MAIN SECTION.
  39.  MAIN-00.
  40.  
  41.      STRING
  42.      '<?xml version="1.0" encoding="UTF-8"?>' & X"0D0A"
  43.      '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">' & X"0D0A"
  44.      '  <SOAP-ENV:Body>' & X"0D0A"
  45.      '    <tns1:checkVat xmlns:tns1="urn:ec.europa.eu:taxud:vies:services:checkVat:types">' & X"0D0A"
  46.      '      <tns1:countryCode>ES</tns1:countryCode>' & X"0D0A"
  47.      '      <tns1:vatNumber>B63272603</tns1:vatNumber>' & X"0D0A"
  48.      '    </tns1:checkVat>' & X"0D0A"
  49.      '  </SOAP-ENV:Body>' & X"0D0A"
  50.      '</SOAP-ENV:Envelope>' & X"0D0A"
  51. *          '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">' & X"0D0A"
  52. *     '   <soapenv:Header/>' & X"0D0A"
  53. *     '   <soapenv:Body>' & X"0D0A"
  54. *     '      <urn:checkVat>' & X"0D0A"
  55. *     '         <urn:countryCode>ES</urn:countryCode>' & X"0D0A"
  56. *     '         <urn:vatNumber>B63272603</urn:vatNumber>' & X"0D0A"
  57. *     '      </urn:checkVat>' & X"0D0A"
  58. *     '   </soapenv:Body>' & X"0D0A"
  59. *     '</soapenv:Envelope>' & X"0D0A"
  60.          DELIMITED BY SIZE INTO xTraffic-Conditions
  61.      
  62.      display xTraffic-Conditions
  63.      display " "    
  64.          
  65.      INVOKE COM "CREATE-OBJECT" USING WINHTTP RETURNING WEBSERVICE.
  66. *
  67.      INVOKE WEBSERVICE "OPEN" USING op1 op2 op3.
  68. *
  69.     *>INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP4 .
  70.     *>INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP5 .
  71.     *>INVOKE WEBSERVICE "setRequestHeader" using OP6 OP4 .
  72. *
  73.    
  74.      *>compute long = function stored-char-length(xTRAFFIC-CONDITIONS)      
  75.     *>display long
  76.      
  77.      INVOKE WEBSERVICE "send" USING xTRAFFIC-CONDITIONS
  78. *
  79.      INVOKE WEBSERVICE "get-Responsetext" RETURNING RESPOSTA
  80.  
  81.      display RESPOSTA
  82.      display " "
  83.      
  84.      unstring RESPOSTA delimited by "<valid>" into resultado1 resultado2
  85.      
  86.      inspect resultado2 replacing all "<" by spaces
  87.      
  88.      display "RESULTADO: " resultado2
  89.      
  90.      EXIT PROGRAM
  91.      .

Resultado:

Código:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <tns1:checkVat xmlns:tns1="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
      <tns1:countryCode>ES</tns1:countryCode>
      <tns1:vatNumber>B63272603</tns1:vatNumber>
    </tns1:checkVat>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><checkVatResponse xmlns="urn:ec.europa.eu:taxud:vies:services:checkVat:types"><countryCode>ES</countryCode><vatNumber>B63272603</vatNumber><requestDate>2021-11-11+01:00</requestDate><valid>true</valid><name>---</name><address>---</address></checkVatResponse></soap:Body></soap:Envelope>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
 
RESULTADO: true


Joseg 11 de noviembre de 2021 18:45

Cita:

Citación del post de Kuk (Mensaje 7294)
@Joseg, he hecho pruebas (acabé instalando el Fujitsu).

Funciona en mi caso comentando las siguientes líneas:

Código COBOL:
  1.     *>INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP4 .
  2.     *>INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP5 .
  3.     *>INVOKE WEBSERVICE "setRequestHeader" using OP6 OP4 .

Este es mi código:

Código COBOL:
  1. *>
  2.  IDENTIFICATION DIVISION.
  3.  PROGRAM-ID.   TEST001.
  4.  
  5.  ENVIRONMENT     DIVISION.
  6.  CONFIGURATION SECTION.
  7.  REPOSITORY.
  8.      CLASS COM AS "*COM"
  9.      CLASS COMEXCEPTION AS "*COM-EXCEPTION".
  10.  
  11.  DATA            DIVISION.
  12.  WORKING-STORAGE SECTION.
  13.  01 WINHTTP               PIC X(128) VALUE "WinHttp.WinHttpRequest.5.1".
  14.  01 WSDL                  PIC X(256) VALUE "https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl".
  15.  01 xTraffic-Conditions   PIC X(384).
  16.    
  17.  *>01 Traffic-Conditions redefines xTraffic-Conditions pic x(386).
  18.  
  19.  01 WEBSERVICE USAGE OBJECT REFERENCE COM.
  20.  
  21.  01 OP1 PIC X(256) VALUE "POST".
  22.  01 OP2 PIC X(256) VALUE "http://ec.europa.eu/taxation_customs/vies/services/checkVatService/".
  23.  01 OP3 PIC X(256) VALUE "FALSE".
  24. *
  25.  01 OP4 PIC X(256) VALUE "Content-Type".
  26.  01 OP5 PIC X(256) VALUE "text/xml; charset=utf-8".
  27.  01 OP6 PIC X(256) VALUE "SOAPAction".
  28.  
  29.  
  30.  01 RESPOSTA    PIC X(8192).
  31.  
  32.  01 resultado1   PIC X(5).
  33.  01 resultado2   PIC X(5).
  34.  
  35.  *>01  long  PIC 9(4) COMP-5.
  36.  
  37.  PROCEDURE       DIVISION.
  38.  MAIN SECTION.
  39.  MAIN-00.
  40.  
  41.      STRING
  42.      '<?xml version="1.0" encoding="UTF-8"?>' & X"0D0A"
  43.      '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">' & X"0D0A"
  44.      '  <SOAP-ENV:Body>' & X"0D0A"
  45.      '    <tns1:checkVat xmlns:tns1="urn:ec.europa.eu:taxud:vies:services:checkVat:types">' & X"0D0A"
  46.      '      <tns1:countryCode>ES</tns1:countryCode>' & X"0D0A"
  47.      '      <tns1:vatNumber>B63272603</tns1:vatNumber>' & X"0D0A"
  48.      '    </tns1:checkVat>' & X"0D0A"
  49.      '  </SOAP-ENV:Body>' & X"0D0A"
  50.      '</SOAP-ENV:Envelope>' & X"0D0A"
  51. *          '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">' & X"0D0A"
  52. *     '   <soapenv:Header/>' & X"0D0A"
  53. *     '   <soapenv:Body>' & X"0D0A"
  54. *     '      <urn:checkVat>' & X"0D0A"
  55. *     '         <urn:countryCode>ES</urn:countryCode>' & X"0D0A"
  56. *     '         <urn:vatNumber>B63272603</urn:vatNumber>' & X"0D0A"
  57. *     '      </urn:checkVat>' & X"0D0A"
  58. *     '   </soapenv:Body>' & X"0D0A"
  59. *     '</soapenv:Envelope>' & X"0D0A"
  60.          DELIMITED BY SIZE INTO xTraffic-Conditions
  61.      
  62.      display xTraffic-Conditions
  63.      display " "    
  64.          
  65.      INVOKE COM "CREATE-OBJECT" USING WINHTTP RETURNING WEBSERVICE.
  66. *
  67.      INVOKE WEBSERVICE "OPEN" USING op1 op2 op3.
  68. *
  69.     *>INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP4 .
  70.     *>INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP5 .
  71.     *>INVOKE WEBSERVICE "setRequestHeader" using OP6 OP4 .
  72. *
  73.    
  74.      *>compute long = function stored-char-length(xTRAFFIC-CONDITIONS)      
  75.     *>display long
  76.      
  77.      INVOKE WEBSERVICE "send" USING xTRAFFIC-CONDITIONS
  78. *
  79.      INVOKE WEBSERVICE "get-Responsetext" RETURNING RESPOSTA
  80.  
  81.      display RESPOSTA
  82.      display " "
  83.      
  84.      unstring RESPOSTA delimited by "<valid>" into resultado1 resultado2
  85.      
  86.      inspect resultado2 replacing all "<" by spaces
  87.      
  88.      display "RESULTADO: " resultado2
  89.      
  90.      EXIT PROGRAM
  91.      .

Resultado:

Código:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <tns1:checkVat xmlns:tns1="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
      <tns1:countryCode>ES</tns1:countryCode>
      <tns1:vatNumber>B63272603</tns1:vatNumber>
    </tns1:checkVat>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><checkVatResponse xmlns="urn:ec.europa.eu:taxud:vies:services:checkVat:types"><countryCode>ES</countryCode><vatNumber>B63272603</vatNumber><requestDate>2021-11-11+01:00</requestDate><valid>true</valid><name>---</name><address>---</address></checkVatResponse></soap:Body></soap:Envelope>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
 
RESULTADO: true


Ja esta ok :beber:
Gracias a todos pela ajuda :sis:

Paulo 6 de septiembre de 2022 17:56

Olá a todos.
Talvez possa interessar a alguém esta solução.
O serviço SOAP do VIES deixou outra vez de responder na semana passada (para o codigo feito pelo Rui).
Para solucionar basta fazer o seguinte: (inclui a alteração para resolver o erro anterior de 2021)

Código COBOL:
  1. ***** alterado 2021-11-16 para resolver erro de comunicação
  2. *   INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP4 .
  3. *   INVOKE WEBSERVICE "setRequestHeader" USING OP6 OP5 .
  4. *   INVOKE WEBSERVICE "setRequestHeader" using OP6 OP4 .
  5. ****** fim alteração
  6. *
  7. ***** alterado 2022-09-06 para resolver erro de comunicação
  8.     INVOKE WEBSERVICE "setRequestHeader" USING OP4 OP5 .
  9. ****** fim alteração

Saludos

Paulo 7 de septiembre de 2022 10:19

Também alteraram a resposta XML
Os campos <valid> <name> <address>
passaram a <ns2:valid> <ns2:name> <ns2:address>


La franja horaria es GMT +2. Ahora son las 14:46.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.