Ver Mensaje Individual
  #2
Antiguo 2 de marzo de 2015, 17:14
Rapinto
Gran amigo del Foro
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: ¡Gracias! Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por ayudar mucho a los foreros Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por saber demasiado! 
Última Actividad 29.01.2018 20:23
Posts Posts: 240
Likes enviados Enviados: 19
Likes recibidos Recibidos: 224

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.  
Rapinto is offline   Responder Con Cita