When reading the xml tags, when the <ultimos> tag comes in 3 nodes and does not come in the room, the cobol generates a loop that blends the data, bringing data from the first into the 4 register.
In this case, the <ultimos> tag did not appear on the last node, and it generates a loop that blends the data.
If it comes, the program works normally.
----------------------------------------------------------------------
resp.xml
----------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<empresarialplatinum>
<administradores>
<administradores_pf>
<administrador_pf>
<consultas>
<resumo>
<qtd_total>2</qtd_total>
<data_ultima>09022018</data_ultima>
</resumo>
<totais>
<consulta>2</consulta>
<credito>0</credito>
<cheque>0</cheque>
</totais>
<consulta_mes_vigente>
<data>08022018</data>
<quantidade>2</quantidade>
</consulta_mes_vigente>
<consultas_mes>
<mes_ano>012018</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>122017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>112017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>102017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>092017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>082017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>072017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>062017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>052017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>042017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>032017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>022017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<ultimos>
<consulta>
<data>07022018</data>
<empresa>SULAMERICA</empresa>
</consulta>
<consulta>
<data>07022018</data>
<empresa>BRADESCO SEGUROS/WSBAREBV-PROD</empresa>
</consulta>
</ultimos>
</consultas>
</administrador_pf>
<administrador_pf>
<consultas>
<resumo>
<qtd_total>1</qtd_total>
<data_ultima>09022018</data_ultima>
</resumo>
<totais>
<consulta>1</consulta>
<credito>0</credito>
<cheque>0</cheque>
</totais>
<consulta_mes_vigente>
<data>08022018</data>
</consulta_mes_vigente>
<consultas_mes>
<mes_ano>012018</mes_ano>
<quantidade>1</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>122017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>112017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>102017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>092017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>082017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>072017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>062017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>052017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>042017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>032017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>022017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<ultimos>
<consulta>
<data>31012018</data>
<empresa>BRADESCO SEGUROS/WSBAREBV-PROD</empresa>
</consulta>
</ultimos>
</consultas>
</administrador_pf>
<administrador_pf>
<consultas>
<resumo>
<qtd_total>4</qtd_total>
<data_ultima>09022018</data_ultima>
</resumo>
<totais>
<consulta>4</consulta>
<credito>0</credito>
<cheque>0</cheque>
</totais>
<consulta_mes_vigente>
<data>08022018</data>
<quantidade>1</quantidade>
</consulta_mes_vigente>
<consultas_mes>
<mes_ano>012018</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>122017</mes_ano>
<quantidade>1</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>112017</mes_ano>
<quantidade>2</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>102017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>092017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>082017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>072017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>062017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>052017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>042017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>032017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>022017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<ultimos>
<consulta>
<data>06022018</data>
<empresa>CAIXA ECONOMICA FEDERAL</empresa>
</consulta>
<consulta>
<data>29122017</data>
<empresa>CAIXA ECONOMICA FEDERAL</empresa>
</consulta>
<consulta>
<data>15112017</data>
<empresa>CAIXA ECONOMICA FEDERAL</empresa>
</consulta>
<consulta>
<data>14112017</data>
<empresa>CAIXA ECONOMICA FEDERAL</empresa>
</consulta>
</ultimos>
</consultas>
</administrador_pf>
<administrador_pf>
<consultas>
<resumo>
<qtd_total>0</qtd_total>
<data_ultima>08022018</data_ultima>
</resumo>
<totais>
<consulta>0</consulta>
<credito>0</credito>
<cheque>0</cheque>
</totais>
<consulta_mes_vigente>
<data>08022018</data>
<quantidade>0</quantidade>
</consulta_mes_vigente>
<consultas_mes>
<mes_ano>012018</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>122017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>112017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>102017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>092017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>082017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>072017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>062017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>052017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>042017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>032017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
<consultas_mes>
<mes_ano>022017</mes_ano>
<quantidade>0</quantidade>
</consultas_mes>
</consultas>
</administrador_pf>
</administradores_pf>
</administradores>
</empresarialplatinum>
----------------------------------------------------------------------
lerefx77.cbl
----------------------------------------------------------------------
$set preprocess(prexml) nowarn endp IDENTIFICATION DIVISION. PROGRAM-ID. LEREFX77. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. DECIMAL-POINT IS COMMA. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT XML-FILE ASSIGN TO "resp.xml" ORGANIZATION IS XML DOCUMENT-TYPE IS OMITTED FILE STATUS IS XML-FILE-STATUS. DATA DIVISION. FILE SECTION. XD XML-FILE. 01 XML-EFX33-XML IDENTIFIED BY "empresarialplatinum". 02 XML-EFX33-036 IDENTIFIED BY "administradores". 03 XML-EFX33-037-F-ADMS IDENTIFIED BY "administradores_pf". 04 XML-EFX33-037-F-ADM IDENTIFIED BY "administrador_pf". 05 XML-EFX33-037-FA-CONS IDENTIFIED BY "consultas". 06 XML-EFX33-037-FACON-RES IDENTIFIED BY "resumo". 07 XML-EFX33-037-FACONR-QTDE PIC X(08) IDENTIFIED BY "qtd_total". 07 XML-EFX33-037-FACONR-DATA PIC X(08) IDENTIFIED BY "data_ultima". 06 XML-EFX33-037-FACON-TOT IDENTIFIED BY "totais". 07 XML-EFX33-037-FACONT-CON PIC X(08) IDENTIFIED BY "consulta". 07 XML-EFX33-037-FACONT-CRED PIC X(08) IDENTIFIED BY "credito". 07 XML-EFX33-037-FACONT-CH PIC X(08) IDENTIFIED BY "cheque". 06 XML-EFX33-037-FACON-VIG IDENTIFIED BY "consulta_mes_vigente". 07 XML-EFX33-037-FACONV-DATA PIC X(08) IDENTIFIED BY "data". 07 XML-EFX33-037-FACONV-QTDE PIC X(08) IDENTIFIED BY "quantidade". 06 XML-EFX33-037-FACON-MES IDENTIFIED BY "consultas_mes". 07 XML-EFX33-037-FACONM-DATA PIC X(06) IDENTIFIED BY "mes_ano". 07 XML-EFX33-037-FACONM-QTDE PIC X(08) IDENTIFIED BY "quantidade". 06 XML-EFX33-037-FACON-ULT IDENTIFIED BY "ultimos". 07 XML-EFX33-037-FACONU-CON IDENTIFIED BY "consulta". 08 XML-EFX33-037-FACONUC-DT PIC X(08) IDENTIFIED BY "data". 08 XML-EFX33-037-FACONUC-EMP PIC X(50) IDENTIFIED BY "empresa". 08 XML-EFX33-037-FACONUC-QT PIC X(08) IDENTIFIED BY "quantidade". *................................................................* WORKING-STORAGE SECTION. 01 XML-FILE-STATUS PIC S9(9) COMP. 01 ERRO-XML PIC 9(9) VALUE ZEROS. 01 WK-MSG PIC X(250) VALUE SPACES. 01 WK-COUNT PIC 9(05) VALUE ZEROS. 01 OK PIC X VALUE SPACES. *................................................................* PROCEDURE DIVISION. INICIO. OPEN INPUT XML-FILE IF XML-FILE-STATUS NOT = ZEROS MOVE XML-FILE-STATUS TO ERRO-XML STRING "ERRO ABERTURA XML >> " ERRO-XML INTO WK-MSG GO TO FIM END-IF . LER-XML. READ XML-FILE IF XML-FILE-STATUS < 0 EXHIBIT NAMED XML-FILE-STATUS GO TO FIM END-IF DISPLAY "Resposta da Consulta" DISPLAY "--------------------" DISPLAY " " PERFORM LER-RESP IF ERRO-XML NOT = ZEROS GO TO FIM END-IF DISPLAY "FIM DO ARQUIVO" . FIM. IF ERRO-XML NOT = ZEROS DISPLAY WK-MSG END-IF CLOSE XML-FILE STOP RUN. *----------------------------------------------------------------- LER-RESP. START XML-FILE KEY XML-EFX33-XML IF XML-FILE-STATUS < 0 EXIT PARAGRAPH END-IF PERFORM UNTIL EXIT IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF READ XML-FILE NEXT KEY XML-EFX33-XML IF XML-FILE-STATUS NOT = 0 EXIT PERFORM END-IF PERFORM LER-EFX33-036 IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF END-PERFORM EXIT. *----------------------------------------------------------------- LER-EFX33-036. START XML-FILE KEY XML-EFX33-036 IF XML-FILE-STATUS < 0 EXIT PARAGRAPH END-IF DISPLAY " " DISPLAY " ADMINSTRADORES " DISPLAY "------------" DISPLAY " " PERFORM UNTIL EXIT IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF READ XML-FILE NEXT KEY XML-EFX33-036 IF XML-FILE-STATUS NOT = 0 EXIT PERFORM END-IF PERFORM LER-EFX33-037-F-ADMS END-PERFORM EXIT. *----------------------------------------------------------------- LER-EFX33-037-F-ADMS. START XML-FILE KEY XML-EFX33-037-F-ADMS IF XML-FILE-STATUS < 0 EXIT PARAGRAPH END-IF DISPLAY " " DISPLAY " ADMINSTRADORES PF " DISPLAY "------------" DISPLAY " " PERFORM UNTIL EXIT IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF READ XML-FILE NEXT KEY XML-EFX33-037-F-ADMS IF XML-FILE-STATUS NOT = 0 EXIT PERFORM END-IF PERFORM LER-EFX33-037-F-ADM END-PERFORM EXIT. *----------------------------------------------------------------- LER-EFX33-037-F-ADM. START XML-FILE KEY XML-EFX33-037-F-ADM IF XML-FILE-STATUS < 0 EXIT PARAGRAPH END-IF DISPLAY " " DISPLAY " ADMINSTRADOR PF " DISPLAY "------------" DISPLAY " " PERFORM UNTIL EXIT IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF add 1 to wk-count display "ADMINSTRADOR " WK-COUNT DISPLAY "------------" READ XML-FILE NEXT KEY XML-EFX33-037-F-ADM IF XML-FILE-STATUS NOT = 0 EXIT PERFORM END-IF PERFORM LER-EFX33-037-FA-CONS END-PERFORM EXIT. *----------------------------------------------------------------- LER-EFX33-037-FA-CONS. START XML-FILE KEY XML-EFX33-037-FA-CONS IF XML-FILE-STATUS < 0 EXIT PARAGRAPH END-IF DISPLAY " " DISPLAY " CONSULTAS" DISPLAY "------------" DISPLAY " " PERFORM UNTIL EXIT IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF READ XML-FILE NEXT KEY XML-EFX33-037-FA-CONS IF XML-FILE-STATUS NOT = 0 EXIT PERFORM END-IF PERFORM LER-EFX33-037-FACON-RES PERFORM LER-EFX33-037-FACON-TOT PERFORM LER-EFX33-037-FACON-VIG PERFORM LER-EFX33-037-FACON-MES PERFORM LER-EFX33-037-FACON-ULT END-PERFORM accept ok EXIT. *----------------------------------------------------------------- LER-EFX33-037-FACON-RES. START XML-FILE KEY XML-EFX33-037-FACON-RES IF XML-FILE-STATUS < 0 EXIT PARAGRAPH END-IF DISPLAY " " DISPLAY " RESUMO " DISPLAY "------------" DISPLAY " " PERFORM UNTIL EXIT IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF READ XML-FILE NEXT KEY XML-EFX33-037-FACON-RES IF XML-FILE-STATUS NOT = 0 EXIT PERFORM END-IF DISPLAY XML-EFX33-037-FACONR-QTDE END-PERFORM EXIT. *----------------------------------------------------------------- LER-EFX33-037-FACON-TOT. START XML-FILE KEY XML-EFX33-037-FACON-TOT IF XML-FILE-STATUS < 0 EXIT PARAGRAPH END-IF DISPLAY " " DISPLAY " TOTAIS " DISPLAY "------------" DISPLAY " " PERFORM UNTIL EXIT IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF READ XML-FILE NEXT KEY XML-EFX33-037-FACON-TOT IF XML-FILE-STATUS NOT = 0 EXIT PERFORM END-IF DISPLAY XML-EFX33-037-FACONT-CON END-PERFORM EXIT. *----------------------------------------------------------------- LER-EFX33-037-FACON-VIG. START XML-FILE KEY XML-EFX33-037-FACON-VIG IF XML-FILE-STATUS < 0 EXIT PARAGRAPH END-IF DISPLAY " " DISPLAY " VIGENTE" DISPLAY "------------" DISPLAY " " PERFORM UNTIL EXIT IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF READ XML-FILE NEXT KEY XML-EFX33-037-FACON-VIG IF XML-FILE-STATUS NOT = 0 EXIT PERFORM END-IF DISPLAY XML-EFX33-037-FACONV-QTDE END-PERFORM EXIT. *----------------------------------------------------------------- LER-EFX33-037-FACON-MES. START XML-FILE KEY XML-EFX33-037-FACON-MES IF XML-FILE-STATUS < 0 EXIT PARAGRAPH END-IF DISPLAY " " DISPLAY " MES " DISPLAY "------------" DISPLAY " " PERFORM UNTIL EXIT IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF READ XML-FILE NEXT KEY XML-EFX33-037-FACON-MES IF XML-FILE-STATUS NOT = 0 EXIT PERFORM END-IF DISPLAY XML-EFX33-037-FACONM-DATA END-PERFORM EXIT. *----------------------------------------------------------------- LER-EFX33-037-FACON-ULT. START XML-FILE KEY XML-EFX33-037-FACON-ULT IF XML-FILE-STATUS < 0 EXIT PARAGRAPH END-IF DISPLAY " " DISPLAY " ULTIMOS " DISPLAY "------------" DISPLAY " " PERFORM UNTIL EXIT IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF READ XML-FILE NEXT KEY XML-EFX33-037-FACON-ULT IF XML-FILE-STATUS NOT = 0 EXIT PERFORM END-IF PERFORM LER-EFX33-037-FACONU-CON END-PERFORM EXIT. *----------------------------------------------------------------- LER-EFX33-037-FACONU-CON. START XML-FILE KEY XML-EFX33-037-FACONU-CON IF XML-FILE-STATUS < 0 EXIT PARAGRAPH END-IF DISPLAY " " DISPLAY " CONSULTA " DISPLAY "------------" DISPLAY " " PERFORM UNTIL EXIT IF ERRO-XML NOT = ZEROS EXIT PERFORM END-IF READ XML-FILE NEXT KEY XML-EFX33-037-FACONU-CON IF XML-FILE-STATUS NOT = 0 EXIT PERFORM END-IF DISPLAY XML-EFX33-037-FACONUC-EMP END-PERFORM EXIT.