Ver Mensaje Individual
  #6
Antiguo 15 de diciembre de 2017, 15:54
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243

Hola Rui:

Sé que se puede hacer con cobol, el tema es el tiempo. Hacer y probar una rutina para interpretar el JSON me va a llevar mucho tiempo, que no tengo. Hay que tener en cuenta niveles, arrays y todas esas cosas. Cuando otros lenguajes lo tienen solucionado de manera sencilla.

En windev, por medio de una función (JSONtoVariant()) lo pasas a un array tipo variant y después con bucles anidados vas sacando todo. Por eso hice un exe en windev, que me lea el JOSN que lo grabo en un archivo, lo proceso y lo meto en otro archivo ya con el formato tipo tabla para leerlo desde cobol, trabajarlo así tipo batch.

Te pego un ejemplo (esto es una pequeña prueba, tengo que desarrollarlo para darle formato de tabla al txt de salida).
Código WinDev:
  1. VP is Variant = JSONToVariant(sJson)
  2.  
  3. FileId = fCreate("d:\yeison\verpedidos.txt",foReadWrite)
  4.  
  5. FOR EACH m OF VP..Member
  6.     LineRead = m..Name
  7.     fWriteLine(FileId, LineRead)   
  8.     FOR EACH m2 OF m..Member
  9.         LineRead = "   --1--   " + m2..Name
  10.         fWriteLine(FileId, LineRead)
  11.         IF m2..Name = "cabecera" THEN
  12.             FOR EACH m3 OF m2..Member
  13.                 LineRead = "   --2--    "+m3..Name +":"+ m3..Value
  14.                 fWriteLine(FileId, LineRead)   
  15.             END
  16.         ELSE
  17.             FOR i = 1 TO m2..Occurrence
  18.                 FOR EACH m3 OF m2[i]..Member
  19.                     LineRead = "   --3--    "+m3..Name +":"+ m3..Value
  20.                     fWriteLine(FileId, LineRead)   
  21.                    
  22.                 END
  23.             END
  24.         END
  25.     END
  26. END
  27.  
  28. fClose(FileId)

Muchas gracias por los aportes. Sigo probando y cuando tenga todo listo posteo el resultado.

Saludos.

Fito...
Fito is offline   Responder Con Cita