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.
#error
#netexpress3.10
#NetExpress40
#ServerExpress
#NetExpress5.1
#netexpress
#ServerExpressHTTPURL
#COBOL
#NE5.1Error
#NetExpressSOAPWebservice
#COBOLserver
#NetExpress5.0
#XML
#MicroFocusCOBOL
#unix
#cobolserverexpress