Ver la Versión Completa : [Sintaxis] Crear Archivo Xml
Anthony
15 de mayo de 2015, 22:30
Hola Coboleros Alguien que me pueda Orientar para Generar un Archivo Xml con los datos que estan en los registros de Cobol..! Ejemplo (datos de una factura).
O si se puede transformar los datos de un archivo txt o csv a XML, dado a que puedo exportar mis datos a esos tipos de archivos.
Cualquier ayuda me sirve..! Gracias..
Rapinto
16 de mayo de 2015, 21:08
Anthony,
O Acucobol permite comandos COM (OLE2)???
Se permitir posso passar-te um exemplo para usar a MSXML Library do Windows.
O ficheiro XML é um ficheiro line sequencial. apenas tem uma estrutura associada.
Poderias gravar directamento os dados para esse ficheiro de texto.
Por Exemplo:
<Documento>
<DocumentoNr>123456789</DocumentoNr>
<DocumentoData>20150515</DocumentoData>
</Documento
Un saludo,
Rui Pinto
Cuitinof
18 de febrero de 2016, 22:19
Hola. Este post es viejo pero si no pudiste hacerlo, te puedo pasar un programa que lo hace. Saludos!
Kuk
19 de febrero de 2016, 08:33
Cuitinof, si tienes una solución, pégala aquí directamente para que no haya que pedírtelo cada vez. Si mañana alguien llega con el mismo problema, tendrá tu solución a su disposición ;)
Gusaiello
25 de febrero de 2016, 18:41
Crear un archivo XML es algo muy sencillo, tal como lo muestra Rapinto en su breve ejemplo.
Para hacerlo desde AcuCobol, lo único que hay que hacer es declarar la estructura del archivo como LINE SEQUENTIAL y luego meterle los registros adentro.
Hasta aca todo muy sencillo, pero ahora viene lo que no se como hacer : como hago que funcione?
Es decir, como hago que el archivo sea transmitido y en el caso particular del archivo por el cual preguntaba Anthony, como recibo la respuesta (la cual también viene en el mismo formato XML).
Por las dudas aclaro que el lenguaje es ACUCOBOL GT para Windows.
Kuk
25 de febrero de 2016, 19:03
Gusaiello, una cosa es generar un XML, y totalmente otra qué hacer con él después, enviarlo a algún lado o no.
Quiero decir, el hecho de generar un fichero XML es simplemente crear un fichero te texto. Para leerlo, es un poco más complicado pero sigue siendo lectura de un fichero de texto (luego un par de bucles buscando tag-s de apertura y cierre para determinar el valor).
¿Qué necesitas hacer con dicho XML, para qué lo generas?
P.D. MicroFocus tiene su propio XML Parser (http://documentation.microfocus.com/help/index.jsp?topic=%2Fcom.microfocus.eclipse.infocent er.extendACUSuite%2FBKRFRFPROC00000001S293.html) integrado, manejable desde COBOL. No sé si Acu lo tiene...
Gusaiello
25 de febrero de 2016, 19:36
Te explico cual es el tema para que se entienda hacia donde apunta la pregunta de Anthony y luego la mía.
En Argentina se ha implementado una nueva modalidad de facturación denominada Factura Electrónica, lo cual significa que los sistemas de facturación, previo a la emisión de una factura, deben solicitar autorización a la AFIP (Administración Federal de Ingresos Públicos) a través de webservice.
Los datos que se envían son tipo y número de documento del comprador, importe total facturado, alícuotas de iva, etc, es decir los datos básicos que a la AFIP le interesan.
Tenemos dando vueltas por aquí algunas interfases que hacen este trabajo : nosotros les pasamos los datos necesarios a la interfase, la llamamos desde nuestro programa COBOL y esta se encarga de la negociación con los webservices de AFIP.
Lo que aparentemente estamos intentando hacer es evitar la necesidad de comprar la mencionada interfase y tratar de resolverlo con nuestras propias herramientas, pero no se si la versión de COBOL que estamos utilizando (ACUCOBOL GT en mi caso) tiene la posibilidad de hacer esto.
Por eso decía anteriormente que la creación del archivo es muy sencillo, el tema es lo que hay que hacer a continuación con este archivo (enviarlo y recibir la respuesta).
Luego, una vez recibida la respuesta también es muy sencillo leerla, como vos bien decís, es simplemente analizar lo que está entre los tag-s.
Kuk
25 de febrero de 2016, 22:46
Gusaiello, si Acu no opera con COM/OLE, lo que podría ser una solución es un VBScript el cual cogerá el XML generado y hará el trabajo de envío y recepción.
Buscando en Google hay varios ejemplos de VBScript usando WebServices. Aquí está uno de ellos, aunque no sé si contiene todo lo necesario:
function ProcessSend()
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.4.0")
Set oXMLDoc = CreateObject("MSXML2.DOMDocument")
oXMLHTTP.onreadystatechange = getRef("HandleStateChange")
strEnvelope = "callNo="&callNo&"&exp="&exp
call oXMLHTTP.open("POST","http://localhost:11883/ServiceCall.asmx/"&posFirm,false)'<< changed true to false here.
call oXMLHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
call oXMLHTTP.send(strEnvelope)
end function
Sub HandleStateChange
if(oXMLHTTP.readyState = 4) then
dim szResponse: szResponse = oXMLHTTP.responseText
call oXMLDoc.loadXML(szResponse)
if(oXMLDoc.parseError.errorCode <> 0) then
'call msgbox("ERROR")
response = oXMLHTTP.responseText&" "&oXMLDoc.parseError.reason
'call msgbox(oXMLDoc.parseError.reason)
else
response = oXMLDoc.getElementsByTagName("string")(0).childNodes(0).text
end if
end if
End Sub
vBulletin v3.8.7, Derechos ©2000-2026, Jelsoft Enterprises Ltd.