Highlighted
andcmatias Absent Member.
Absent Member.
512 views

Micro Focus Server Express 5.1 Wrap Pack 12 - xml reading gets looped and blends data.

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.

0 Likes
The opinions expressed above are the personal opinions of the authors, not of Micro Focus. By using this site, you accept the Terms of Use and Rules of Participation. Certain versions of content ("Material") accessible here may contain branding from Hewlett-Packard Company (now HP Inc.) and Hewlett Packard Enterprise Company. As of September 1, 2017, the Material is now offered by Micro Focus, a separately owned and operated company. Any reference to the HP and Hewlett Packard Enterprise/HPE marks is historical in nature, and the HP and Hewlett Packard Enterprise/HPE marks are the property of their respective owners.