View previous topic :: View next topic
|
Author |
Message |
grabeva
New User
Joined: 07 Sep 2006 Posts: 23
|
|
|
|
hello ......
i need some help.
I have a Cobol pgm, that parse xml to text, and final, convert text to xml.
Part of this text, are in "xml" formt, and i need not tu re-convert, i need to say at xml generate that this field, MUST not change.
how i write them?
i give part of the program
Code: |
ID DIVISION.
PROGRAM-ID. IVRNOMAX.
****************************************************************
* CONVERSOR MENSAJE XML A TEXTO y viceversa
****************************************************************
* ENTRADA : FORMATO XML
* SALIDA : FORMATO TEXTO
* FECHA : 04-02-08
****************************************************************
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
* definiciones de variables ....gb
77 servicio PIC 9(4) value zeros.
77 ind PIC 99 value zeros.
01 SW-CORRECTO PIC X(01).
88 CORRECTO VALUE 'S'.
88 INCORRECTO VALUE 'N'.
*
01 xml-document-length PIC 999 COMP.
*
copy ivrxml.
*
*****************************************************************
* COPY DE APLICATIVOS CON LOS NOMBRES DE LOS TAG
*****************************************************************
*
******************************************************************
** COPY : IVCCHSOL **
** DESCRIPCION : COPY DE INTERCAMBIO DEL MODULO IVRCHSOL **
** FECHA : 01/12/2007 - DYNAMIC **
******************************************************************
01 IVCCHSOl-ENTRADA.
10 SERVICEE PIC 9(04).
10 DATETIME PIC 9(08).
10 CHANNEL PIC X(03).
10 BRANCH PIC 9(03).
10 COUNTRYID PIC X(02).
10 ACCOUNT PIC 9(11).
10 TYPEE PIC 9(03).
10 QUANTITY PIC 9(10).
10 DELIVERY PIC 9(03).
10 DELIVERYDNI PIC 9(08).
01 IVCCHSOL-SALIDA.
10 REQUEST PIC 9(04).
10 RESPONSECODE PIC 9(04).
10 CASENUMBER PIC 9(10).
* 10 FILLER PIC X(380).
*
******************************************************************
** FIN COPY **
******************************************************************
*
******************************************************************
* Sample data definitions for processing numeric XML content. *
******************************************************************
01 TABLAS-CONVERSION.
05 TABLA-CURRENT-ELEM.
10 CURRENT-ELEMENT PIC X(100) OCCURS 9.
*
01 xfr-ed pic x(9) justified.
01 xfr-ed-1 redefines xfr-ed pic 999999.99.
01 NUMCHARS COMP PIC 999.
*
LINKAGE SECTION.
01 AREA-RECIBIDA PIC X(32005).
*
PROCEDURE DIVISION USING AREA-RECIBIDA.
MAINLINE SECTION.
PERFORM INICIO.
PERFORM PROCESO.
PERFORM FIN.
*
INICIO SECTION.
MOVE ZEROS TO XML-RETORNO
MOVE AREA-RECIBIDA TO XML-COMMAREA.
MOVE ZEROS TO SERVICIO
.
*
F-SALIDA.
EXIT.
*
PROCESO SECTION.
* ---------------
EVALUATE XML-ACCION
WHEN 1
PERFORM XML-A-TEXTO
WHEN 2
PERFORM TEXTO-A-XML
END-EVALUATE.
*
F-SALIDA.
EXIT.
*
*
FIN SECTION.
* ---------------
IF XML-RETORNO = 0
IF XML-ACCION = 1
DISPLAY 'FIN EXITOSO DE XML-PARSE'
ELSE
DISPLAY 'FIN EXITOSO DE XML-GENERATE'
END-IF
ELSE
IF XML-ACCION = 1
DISPLAY 'ERROR EN XML-PARSE, VERIFIQUE'
ELSE
DISPLAY 'ERROR EN XML-GENERATE, VERIFIQUE'
END-IF
END-IF.
*
MOVE XML-DOCUMENT-LENGTH TO XML-DATOS-LEN-R
MOVE XML-COMMAREA TO AREA-RECIBIDA
GOBACK.
*
F-SALIDA.
EXIT.
*
*
*-- RUTINAS DE TEXTO A XML
*
TEXTO-A-XML SECTION.
* ---------------
MOVE XML-DATOS(1:4) TO SERVICIO
*
EVALUATE SERVICIO
WHEN 1121
PERFORM TEXTO-SERVICIO-1121
WHEN 1122
PERFORM TEXTO-SERVICIO-1122
WHEN 1125
PERFORM TEXTO-SERVICIO-1125
WHEN 1126
PERFORM TEXTO-SERVICIO-1126
WHEN 1127
PERFORM TEXTO-SERVICIO-1127
WHEN OTHER
DISPLAY 'ESTE <SERVICE> '
SERVICIO 'NO ESTA DISPONIBLE, VERIFIQUE.'
EXIT
END-EVALUATE
.
*
F-SALIDA.
EXIT.
*
*
TEXTO-SERVICIO-1121 SECTION.
.
F-SALIDA.
EXIT.
*
TEXTO-SERVICIO-1122 SECTION.
.
F-SALIDA.
EXIT.
*
TEXTO-SERVICIO-1125 SECTION.
.
F-SALIDA.
EXIT.
*
TEXTO-SERVICIO-1126 SECTION.
.
F-SALIDA.
EXIT.
*
TEXTO-SERVICIO-1127 SECTION.
*
MOVE SPACES TO IVCCHSOL-SALIDA
*
XML GENERATE XML-AREA-DATOS
FROM IVCCHSOL-SALIDA
COUNT IN NUMCHARS
.
F-SALIDA.
EXIT.
*
*
*-- RUTINAS DE CONVERSION XML A TEXTO
*
XML-A-TEXTO SECTION.
* ---------------
XML PARSE XML-DATOS PROCESSING PROCEDURE XML-HANDLER
ON EXCEPTION
DISPLAY 'XML DOCUMENT ERROR ' XML-CODE
MOVE 1 TO XML-RETORNO
NOT ON EXCEPTION
DISPLAY 'XML DOCUMENT SUCCESSFULLY PARSED'
END-XML
.
*
F-SALIDA.
EXIT.
*
XML-HANDLER SECTION.
* ==> ORDER XML EVENTS MOST FREQUENT FIRST
*
EVALUATE XML-EVENT
*
WHEN 'START-OF-ELEMENT'
DISPLAY 'START ELEMENT TAG: <' XML-TEXT '>'
IF XML-TEXT = 'SERVICE'
COMPUTE SERVICIO = FUNCTION NUMVAL-C(XML-TEXT)
ELSE
ADD 1 TO IND
MOVE XML-TEXT TO CURRENT-ELEMENT(IND)
END-IF
*
WHEN 'CONTENT-CHARACTER'
DISPLAY 'CONTENT CHARACTER: <' XML-TEXT '>'
PERFORM EVALUA-SERVICIO
*
WHEN 'END-OF-ELEMENT'
DISPLAY 'END ELEMENT TAG: <' XML-TEXT '>'
MOVE SPACES TO CURRENT-ELEMENT(IND)
SUBTRACT 1 FROM IND
*
WHEN 'START-OF-DOCUMENT'
COMPUTE XML-DOCUMENT-LENGTH = FUNCTION LENGTH(XML-TEXT)
DISPLAY 'START OF DOCUMENT: LENGTH=' XML-DOCUMENT-LENGTH
' CHARACTERS.'
*
WHEN 'END-OF-DOCUMENT'
DISPLAY 'END OF DOCUMENT.'
*
WHEN 'VERSION-INFORMATION'
DISPLAY 'VERSION: <' XML-TEXT '>'
*
WHEN 'ENCODING-DECLARATION'
DISPLAY 'ENCODING: <' XML-TEXT '>'
*
WHEN 'STANDALONE-DECLARATION'
DISPLAY 'STANDALONE: <' XML-TEXT '>'
*
WHEN 'ATTRIBUTE-NAME'
DISPLAY 'ATTRIBUTE NAME: <' XML-TEXT '>'
*
WHEN 'ATTRIBUTE-CHARACTERS'
DISPLAY 'ATTRIBUTE VALUE CHARACTERS: <' XML-TEXT '>'
*
WHEN 'ATTRIBUTE-CHARACTER'
DISPLAY 'ATTRIBUTE VALUE CHARACTER: <' XML-TEXT '>'
*
WHEN 'START-OF-CDATA-SECTION'
DISPLAY 'START OF CDATA: <' XML-TEXT '>'
*
WHEN 'END-OF-CDATA-SECTION'
DISPLAY 'END OF CDATA: <' XML-TEXT '>'
*
WHEN 'PROCESSING-INSTRUCTION-TARGET'
DISPLAY 'PI TARGET: <' XML-TEXT '>'
*
WHEN 'PROCESSING-INSTRUCTION-DATA'
DISPLAY 'PI DATA: <' XML-TEXT '>'
*
WHEN 'COMMENT'
DISPLAY 'COMMENT: <' XML-TEXT '>'
*
WHEN 'EXCEPTION'
COMPUTE XML-DOCUMENT-LENGTH = FUNCTION LENGTH (XML-TEXT)
DISPLAY 'EXCEPTION ' XML-CODE ' AT OFFSET '
XML-DOCUMENT-LENGTH '.'
WHEN OTHER
DISPLAY 'UNEXPECTED XML EVENT: ' XML-EVENT '.'
END-EVALUATE.
F-SALIDA.
EXIT.
*
EVALUA-SERVICIO SECTION.
EVALUATE SERVICIO
WHEN 1121
PERFORM XML-SERVICIO-1121
WHEN 1122
PERFORM XML-SERVICIO-1122
WHEN 1125
PERFORM XML-SERVICIO-1125
WHEN 1126
PERFORM XML-SERVICIO-1126
WHEN 1127
PERFORM XML-SERVICIO-1127
WHEN OTHER
DISPLAY 'ESTE <SERVICE> '
SERVICIO 'NO ESTA DISPONIBLE, VERIFIQUE.'
EXIT
END-EVALUATE
.
F-SALIDA.
EXIT.
*
XML-SERVICIO-1121 SECTION.
F-SALIDA.
EXIT.
*
XML-SERVICIO-1122 SECTION.
F-SALIDA.
EXIT.
*
XML-SERVICIO-1125 SECTION.
F-SALIDA.
EXIT.
*
XML-SERVICIO-1126 SECTION.
F-SALIDA.
EXIT.
*
XML-SERVICIO-1127 SECTION.
EVALUATE CURRENT-ELEMENT(IND)
WHEN 'DATETIME'
COMPUTE DATETIME = FUNCTION NUMVAL-C(XML-TEXT)
WHEN 'CHANNEL'
MOVE XML-TEXT TO CHANNEL
WHEN 'BRANCH'
COMPUTE BRANCH = FUNCTION NUMVAL-C(XML-TEXT)
WHEN 'COUNTRYID'
MOVE XML-TEXT TO COUNTRYID
WHEN 'ACCOUNT'
COMPUTE ACCOUNT = FUNCTION NUMVAL-C(XML-TEXT)
WHEN 'TYPE'
COMPUTE TYPEe = FUNCTION NUMVAL-C(XML-TEXT)
WHEN 'QUANTITY'
COMPUTE QUANTITY = FUNCTION NUMVAL-C(XML-TEXT)
WHEN 'DELIVERY'
COMPUTE DELIVERY = FUNCTION NUMVAL-C(XML-TEXT)
WHEN 'DELIVERYDNI'
COMPUTE DELIVERYDNI = FUNCTION NUMVAL-C(XML-TEXT)
WHEN OTHER
DISPLAY 'HAY MAS CAMPOS INFORMADOS PARA <SERVICE> '
SERVICIO '<XML-TEXT> ' XML-TEXT
END-EVALUATE
.
F-SALIDA.
EXIT. |
|
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Hello,
Quote: |
Part of this text, are in "xml" formt, and i need not tu re-convert, |
You may be ahead if you convert the "xml text" to plain text, and then generate all of the plain text to the needed xml. |
|
Back to top |
|
|
grabeva
New User
Joined: 07 Sep 2006 Posts: 23
|
|
|
|
Sorry, i don't understand
thanks for your time |
|
Back to top |
|
|
CICS Guy
Senior Member
Joined: 18 Jul 2007 Posts: 2146 Location: At my coffee table
|
|
|
|
grabeva wrote: |
Sorry, i don't understand |
Me too, but it is your requirement that I don't understand...
It would be simpler if you posted a small sample if your input and required output....... |
|
Back to top |
|
|
grabeva
New User
Joined: 07 Sep 2006 Posts: 23
|
|
|
|
my input message contains:
some fields 'text' + some field 'xml'
my out message :
all fields 'xml'
if a pass the message with xml generate, convert with error de part of message with 'xml' how i do it? |
|
Back to top |
|
|
CICS Guy
Senior Member
Joined: 18 Jul 2007 Posts: 2146 Location: At my coffee table
|
|
|
|
Maybe not quite that small..... |
|
Back to top |
|
|
dick scherrer
Moderator Emeritus
Joined: 23 Nov 2006 Posts: 19244 Location: Inside the Matrix
|
|
|
|
Hello,
You currently have both text and xml data to deal with.
Quote: |
some fields 'text' + some field 'xml' |
Parse the existing xml into text.
At this point, you have only "fields 'text'".
Generate a complete xml output ("all fields 'xml'") from the text. |
|
Back to top |
|
|
grabeva
New User
Joined: 07 Sep 2006 Posts: 23
|
|
|
|
thanks
Gra |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
Just a mild suggestion
is there any reason why the process providing the data is mixing up formats
any chance to review it to straighten up things a little bit |
|
Back to top |
|
|
|