Gracias Rui Pinto (Rapinto)
COBOL Foro
Foro dedicado a COBOL, a la Programación y a la Informática.
  COBOL Foro > IDE-s y compiladores COBOL > Cocina Casera > Cocina PowerCOBOL
Cocina PowerCOBOL Rutinas y ejemplos codificados por nuestros foreros.
Comunicados
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Información] JSON en Cobol... Fito PowerCOBOL (ActiveX, v4 - v11) 20 2 de julio de 2021 21:07
[Compilador] Json & Powercobol Joseg PowerCOBOL (ActiveX, v4 - v11) 1 12 de abril de 2021 13:13
[Componente] Generador código QR atncasiello PowerFORM 1 29 de diciembre de 2020 22:49
[Componente] Imprimir código QR Armando PowerCOBOL (ActiveX, v4 - v11) 12 18 de junio de 2019 22:53
[Sintaxis] Enviar y Recibir Mail fastpho PowerCOBOL (ActiveX, v4 - v11) 1 14 de octubre de 2017 08:07
Respuesta
 
Herramientas

  #11
Antiguo 26 de julio de 2021, 22:23
IDENTIFICATION DIVISION
AHidalgo
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de AHidalgo
DATA DIVISION
enero 2021
Buenos Aires
22.09.2021 15:42
PROCEDURE DIVISION
Posts: 13
Enviado: 4
Recibido: 0
Soluciones: 0
Reputación: 0
AHidalgo is an unknown quantity at this point
Predeterminado Ayuda: parsear un Json en PowerCobol

@fastpho, Hola, buenas tardes!, me podrás ayudar haciendo una prueba para ver si tenes el mismo error? (así descarto error humano). De los 4 campos que quiero recuperar solo me trae 2.

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01 FILA                      PIC 9(8).
  5.  01 WFEC-AMD         PIC X(10).
  6.  01 TIMPTOT             PIC X(9).
  7.  01 WS.
  8.    02 WS-NRO             PIC X(7).
  9.    02 WS-NRO-ORD    REDEFINES WS-NRO PIC 9(7).
  10.    02 WS-ID                  PIC X(3).
  11.    02 WS-IDMPAGO    REDEFINES WS-ID  PIC 9(3).
  12.  01 WGET-VTA-FEC    PIC X(20) IS GLOBAL VALUE "C:\APi\APIRFech1.TXT".
  13.  PROCEDURE       DIVISION.
  14.  INICIO.
  15.      INVOKE ChilkatJsonObject1 "LoadFile" USING WGET-VTA-FEC RETURNING ReturnValue.
  16.      IF ReturnValue NOT = 1 THEN
  17.         INVOKE pow-self "DisplayMessage" USING "error"
  18.         EXIT PROGRAM
  19.      END-IF.
  20. *
  21.      INVOKE ChilkatJsonObject1 "SizeOfArray" USING "Objeto" RETURNING IndiceArray.
  22.      MOVE ZEROS TO FILA FI-LA.
  23.      PERFORM VARYING FILA FROM FILA BY 1 UNTIL FILA = IndiceArray OR FILA > 10
  24. *
  25.            MOVE SPACES TO ObJsolicitar
  26.            STRING "Objeto["     delimited by size
  27.                   FILA          delimited by size
  28.                   "]"           delimited by size
  29.                   "."           delimited by size
  30.                   "concretado"  delimited by size
  31.                   into ObJsolicitar
  32.            END-STRING
  33.            INVOKE ChilkatJsonObject1 "StringOf" USING ObJsolicitar RETURNING WFEC-AMD
  34. *
  35.            MOVE SPACES TO ObJsolicitar
  36.            STRING "Objeto["     delimited by size
  37.                   FILA          delimited by size
  38.                   "]"           delimited by size
  39.                   "."           delimited by size
  40.                   "idModoDePago" delimited by size
  41.                   into ObJsolicitar
  42.            END-STRING
  43.            INVOKE ChilkatJsonObject1 "StringOf" USING ObJsolicitar RETURNING WS-ID
  44. *
  45.            INITIALIZE TIMPTOT WS-NRO WS-ID WFEC-AMD
  46.            MOVE SPACES TO ObJsolicitar
  47.            STRING "Objeto["     delimited by size
  48.                   FILA          delimited by size
  49.                   "]"           delimited by size
  50.                   "."           delimited by size
  51.                   "idVenta"     delimited by size
  52.                   into ObJsolicitar
  53.            END-STRING
  54.            INVOKE ChilkatJsonObject1 "StringOf" USING ObJsolicitar  RETURNING WS-NRO
  55.  
  56.            MOVE SPACES TO ObJsolicitar
  57.            STRING "Objeto["     delimited by size
  58.                   FILA          delimited by size
  59.                   "]"           delimited by size
  60.                   "."           delimited by size
  61.                   "total"       delimited by size
  62.                   into ObJsolicitar
  63.            END-STRING
  64.            INVOKE ChilkatJsonObject1 "StringOf" USING ObJsolicitar RETURNING TIMPTOT
  65. *
  66.            DISPLAY WFEC-AMD " , " WS-ID " , " TIMPTOT " , " WS-NRO " , fila " fila
  67.      END-PERFORM.
  68.      EXIT PROGRAM.

Si podes probar te lo voy a agradecer.
Cualquier ayuda es bienvenida!!
Saludos
Ana
Archivos Adjuntos
Tipo de Archivo: txt APIRFech1.txt (537,3 KB, 131 descargas Quién descargó)
AHidalgo no ha iniciado sesión   Responder Con Cita
  #12
Antiguo 27 de julio de 2021, 15:42
IDENTIFICATION DIVISION
fastpho
 Senior
Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Razón: Acceso a datos Cobol vía web 
ENVIRONMENT DIVISION
Avatar de fastpho
DATA DIVISION
diciembre 2016
Mendoza
51 años
01.07.2022 16:22
PROCEDURE DIVISION
Posts: 219
Enviado: 138
Recibido: 136
Soluciones: 21
Reputación: 19
fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point
Predeterminado

Hola @AHidalgo, corri tu ejemplo y el unico valor que no me da es el total , para que te lo lea te
paso un ejemplo leyendo los dos primeros registros
Código COBOL:
  1.  INVOKE ChilkatJsonObject1 "StringOf" USING "Objeto[0].total.moneda" RETURNING string-total
  2.           display "total moneda :" , string-total
  3.           INVOKE ChilkatJsonObject1 "StringOf" USING "Objeto[0].total.valor" RETURNING string-total
  4.           display "total valor :" , string-total
  5.  
  6.           INVOKE ChilkatJsonObject1 "StringOf" USING "Objeto[0].total.idComercio" RETURNING string-total
  7.           display "total idComercio :" , string-total
  8.  
  9.           INVOKE ChilkatJsonObject1 "StringOf" USING "Objeto[1].total.moneda" RETURNING string-total
  10.           display "total moneda :" , string-total
  11.           INVOKE ChilkatJsonObject1 "StringOf" USING "Objeto[1].total.valor" RETURNING string-total
  12.           display "total valor :" , string-total
  13.  
  14.           INVOKE ChilkatJsonObject1 "StringOf" USING "Objeto[1].total.idComercio" RETURNING string-total
  15.           display "total idComercio :" , string-total
de tu ejemplo la linea
Código COBOL:
  1.  INITIALIZE TIMPTOT WS-NRO WS-ID WFEC-AMD
esta mal ubicada
Saludos
fastpho no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
AHidalgo (28 de julio de 2021)
  #13
Antiguo 28 de julio de 2021, 00:11
IDENTIFICATION DIVISION
AHidalgo
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de AHidalgo
DATA DIVISION
enero 2021
Buenos Aires
22.09.2021 15:42
PROCEDURE DIVISION
Posts: 13
Enviado: 4
Recibido: 0
Soluciones: 0
Reputación: 0
AHidalgo is an unknown quantity at this point
Predeterminado

@fastpho, Gracias!!, también he comprobado ejecutar con un control un VBScript con el parseo y funciona bien, pero intentaba hacerlo en cobol puro.
Saludos
Ana
AHidalgo no ha iniciado sesión   Responder Con Cita
  #14
Antiguo 14 de junio de 2022, 11:29
IDENTIFICATION DIVISION
Mane9mb
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de Mane9mb
DATA DIVISION
junio 2022
Barcelona
30.06.2022 14:57
PROCEDURE DIVISION
Posts: 3
Enviado: 1
Recibido: 1
Soluciones: 0
Reputación: 0
Mane9mb is an unknown quantity at this point
Predeterminado

Buenas en mi caso necesito crear un JsonArray y dentro los JsonObject i no encuentro ningun ejemplo... alguien sabe la manera de poder declarar un JsonArray en netcobol
Mane9mb no ha iniciado sesión   Responder Con Cita
  #15
Antiguo 14 de junio de 2022, 15:38
IDENTIFICATION DIVISION
JCantero
 Senior
Activista del Foro: Activista del Foro - Razón: Por participación activa  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por muchos agradecimientos de parte de los Foreros 
ENVIRONMENT DIVISION
Avatar de JCantero
DATA DIVISION
junio 2016
Albacete
56 años
01.07.2022 17:59
PROCEDURE DIVISION
Posts: 264
Enviado: 84
Recibido: 176
Soluciones: 11
Reputación: 24
JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road
Predeterminado

Por ejemplo, para rellenar una tabla (concretamente de postgresql) que tiene una clave y tres campos con array alfabetico de 13, 3 y 3 elementos tal como así:

Código SQL:
  1. CREATE TABLE entidadejercicio.configuracion4 (
  2.     clave numeric(1,0) NOT NULL,
  3.     arqueo character varying(55) [13] NOT NULL,
  4.     pie character varying(55) [3] NOT NULL,
  5.     firma character varying(55) [3] NOT NULL
  6. );

Lo relleno con este codigo, para despues realizar un INSERT en la base de datos:

Código COBOL:
  1.            INITIALIZE msql
  2.              
  3.            STRING "INSERT INTO " delimited by size
  4.                     esquema delimited by " "
  5.                     "configuracion4    VALUES(0, '{" DELIMITED BY SIZE
  6.                  '"' delimited by size
  7.                  mun00-arqueo(1)
  8.                  '", "' delimited by size
  9.                  mun00-arqueo(2)
  10.                  '", "' delimited by size
  11.                  mun00-arqueo(3)
  12.                  '", "' delimited by size
  13.                  mun00-arqueo(4)
  14.                  '", "' delimited by size
  15.                  mun00-arqueo(5)
  16.                  '", "' delimited by size
  17.                  mun00-arqueo(6)
  18.                  '", "' delimited by size
  19.                  mun00-arqueo(7)
  20.                  '", "' delimited by size
  21.                  mun00-arqueo(8)
  22.                  '", "' delimited by size
  23.                  mun00-arqueo(9)
  24.                  '", "' delimited by size
  25.                  mun00-arqueo(10)
  26.                  '", "' delimited by size
  27.                  mun00-arqueo(11)
  28.                  '", "' delimited by size
  29.                  mun00-arqueo(12)
  30.                  '", "' delimited by size
  31.                  mun00-arqueo(13)
  32.                  '"}' delimited by size
  33.                  "'," delimited by size
  34.                  "'{" DELIMITED BY SIZE
  35.                  '"' delimited by size
  36.                  mun00-pie(1)
  37.                  '", "' delimited by size
  38.                  mun00-pie(2)
  39.                  '", "' delimited by size
  40.                  mun00-pie(3)
  41.                  '"}' delimited by size
  42.                  "'," delimited by size
  43.                  "'{" DELIMITED BY SIZE
  44.                  '"' delimited by size
  45.                  mun00-firmas(1)
  46.                  '", "' delimited by size
  47.                  mun00-firmas(2)
  48.                  '", "' delimited by size
  49.                  mun00-firmas(3)
  50.                  '"}' delimited by size
  51.                  "');" delimited by size
  52.                    INTO msql
  53.            perform insertar


Básicamente el JSON generado es algo como así:


Código:
{
    "clave": 0,
    "arqueo": [
      "                                                       ",
      "                                                       ",
      "                                                       ",
      "                                                       ",
      "                                                       ",
      "                                                       ",
      "                                                       ",
      "                                                       ",
      "                                                       ",
      "                                                       ",
      "                                                       ",
      "                                                       ",
      "                                                       "
    ],
    "pie": [
      "                                                       ",
      "                                                       ",
      "                                                       "
    ],
    "firma": [
      "               EL PRESIDENTE                ",
      "               EL INTERVENTOR               ",
      "                EL TESORERO                 "
    ]
  }
JCantero no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Kuk (15 de junio de 2022)
  #16
Antiguo 14 de junio de 2022, 16:26
IDENTIFICATION DIVISION
fastpho
 Senior
Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Razón: Acceso a datos Cobol vía web 
ENVIRONMENT DIVISION
Avatar de fastpho
DATA DIVISION
diciembre 2016
Mendoza
51 años
01.07.2022 16:22
PROCEDURE DIVISION
Posts: 219
Enviado: 138
Recibido: 136
Soluciones: 21
Reputación: 19
fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point fastpho is an unknown quantity at this point
Tableta Json

Hola @Mane9mb, te paso un ejemplo en visual basic , no es muy dificil pasarlo a cobol
usando el control ocx de chilkat
Código VB:
  1. Dim jArray As New ChilkatJsonArray
  2. success = jArray.AddObjectAt(0)
  3. Dim json As ChilkatJsonObject
  4. Set json = jArray.ObjectAt(0)
  5.  
  6. success = json.UpdateString("groupId","")
  7. success = json.UpdateString("sku","")
  8. success = json.UpdateString("title","")
  9. success = json.UpdateString("barcode","")
  10. success = json.UpdateString("category","")
  11. success = json.UpdateString("description","")
  12. success = json.UpdateString("images[0]","url1")
  13. success = json.UpdateString("images[1]","url...")
  14. success = json.UpdateString("isbn","")
  15. success = json.UpdateString("link","")
  16. success = json.UpdateString("linkLomadee","")
  17. success = json.UpdateString("prices[0].type","")
  18. success = json.UpdateNumber("prices[0].price","0")
  19. success = json.UpdateNumber("prices[0].priceLomadee","0")
  20. success = json.UpdateNumber("prices[0].priceCpa","0")
  21. success = json.UpdateNumber("prices[0].installment","0")
  22. success = json.UpdateNumber("prices[0].installmentValue","0")
  23. success = json.UpdateString("productAttributes.""Atributo 1""","Valor 1")
  24. success = json.UpdateString("productAttributes.""Atributo ...""","Valor ...")
  25. success = json.UpdateString("technicalSpecification.""Especificação 1""","Valor")
  26. success = json.UpdateString("technicalSpecification.""Especificação ...""","Valor ...")
  27. success = json.UpdateNumber("quantity","0")
  28. success = json.UpdateNumber("sizeHeight","0")
  29. success = json.UpdateNumber("sizeLength","0")
  30. success = json.UpdateNumber("sizeWidth","0")
  31. success = json.UpdateNumber("weightValue","0")
  32. success = json.UpdateNumber("declaredPrice","0")
  33. success = json.UpdateNumber("handlingTimeDays","0")
  34. success = json.UpdateBool("marketplace",0)
  35. success = json.UpdateString("marketplaceName","")
  36.  
  37. jArray.EmitCompact = 0
  38. Debug.Print jArray.Emit()
  39.  
  40. ' The output of this program is:
  41.  
  42. ' [
  43. '   {
  44. '     "groupId": "",
  45. '     "sku": "",
  46. '     "title": "",
  47. '     "barcode": "",
  48. '     "category": "",
  49. '     "description": "",
  50. '     "images": [
  51. '       "url1",
  52. '       "url..."
  53. '     ],
  54. '     "isbn": "",
  55. '     "link": "",
  56. '     "linkLomadee": "",
  57. '     "prices": [
  58. '       {
  59. '         "type": "",
  60. '         "price": 0,
  61. '         "priceLomadee": 0,
  62. '         "priceCpa": 0,
  63. '         "installment": 0,
  64. '         "installmentValue": 0
  65. '       }
  66. '     ],
  67. '     "productAttributes": {
  68. '       "Atributo 1": "Valor 1",
  69. '       "Atributo ...": "Valor ..."
  70. '     },
  71. '     "technicalSpecification": {
  72. '       "Especificação 1": "Valor",
  73. '       "Especificação ...": "Valor ..."
  74. '     },
  75. '     "quantity": 0,
  76. '     "sizeHeight": 0,
  77. '     "sizeLength": 0,
  78. '     "sizeWidth": 0,
  79. '     "weightValue": 0,
  80. '     "declaredPrice": 0,
  81. '     "handlingTimeDays": 0,
  82. '     "marketplace": false,
  83. '     "marketplaceName": ""
  84. '   }
  85. ' ]
Saludos ....
fastpho no ha iniciado sesión   Responder Con Cita
Han dicho Gracias: 2
Kuk (15 de junio de 2022), Mane9mb (14 de junio de 2022)
  #17
Antiguo 14 de junio de 2022, 16:30
IDENTIFICATION DIVISION
Mane9mb
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de Mane9mb
DATA DIVISION
junio 2022
Barcelona
30.06.2022 14:57
PROCEDURE DIVISION
Posts: 3
Enviado: 1
Recibido: 1
Soluciones: 0
Reputación: 0
Mane9mb is an unknown quantity at this point
Predeterminado

Hola JCantero

Entiendo, pero en este caso solo tengo que tractar JSON han comentado en este post sobre el ocx de Chillkat JsonObject que facilita a la hora de tractar objetos JsON pero que empiece como un Json Array no lo encontrado por eso si teneis un ejemplo os lo agradezco, lo que me muestras es para hacer un insert a la base de datos? no trabajo con base de datos en cobol todo se guarda en archivos...

perdonadme es mi primer año que toco cobol ja que jo estoy encargado de la parte de lAPI @JCantero,

Código COBOL:
  1. MOVE 0 TO "EmitCompact" OF ChilkatJsonArray1.
Código COBOL:
  1. MOVE 0 TO "EmitCompact" OF ChilkatJsonObject2.
Código COBOL:
  1.  INVOKE ChilkatJsonArray1 "AddArrayAt" USING "customerStatus"              "Prospect"            RETURNING Success0.
Código COBOL:
  1. INVOKE ChilkatJsonObject2 "AppendString" USING "customerType"              "Individual"          RETURNING Success1.
Mane9mb no ha iniciado sesión   Responder Con Cita
  #18
Antiguo 14 de junio de 2022, 17:08
IDENTIFICATION DIVISION
JCantero
 Senior
Activista del Foro: Activista del Foro - Razón: Por participación activa  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por muchos agradecimientos de parte de los Foreros 
ENVIRONMENT DIVISION
Avatar de JCantero
DATA DIVISION
junio 2016
Albacete
56 años
01.07.2022 17:59
PROCEDURE DIVISION
Posts: 264
Enviado: 84
Recibido: 176
Soluciones: 11
Reputación: 24
JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road
Predeterminado

Fuera del destino del uso del JSON, o de su generación, yo he puesto un ejemplo de uso para su mejor comprension.

Quieres un ejemplo ?

Tienes un ejemplo de JSON con array en mi post. Al final....

Y @fastpho, tambien te ha puesto otro ejemplo de JSON con array al final de su post, lo que está en verde.
JCantero no ha iniciado sesión   Responder Con Cita
  #19
Antiguo 15 de junio de 2022, 08:28
IDENTIFICATION DIVISION
Mane9mb
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de Mane9mb
DATA DIVISION
junio 2022
Barcelona
30.06.2022 14:57
PROCEDURE DIVISION
Posts: 3
Enviado: 1
Recibido: 1
Soluciones: 0
Reputación: 0
Mane9mb is an unknown quantity at this point
Predeterminado

@JCantero, Gracias por los ejemplos de verdad, pero lo que necesito es más como tractar esos objetos que define @fastpho, con el ocx que explica.

No he querido ni mucho menos menospreciar tu ayuda perdon si mhe explicado mal

Os lo agradezco mucho!

---------- Post añadido el 16 de junio de 2022 a las 14:17 ----------

Gracias, por su ayuda en tu ejemplo he podido pasarlo a cobol i que funcione,
Código COBOL:
  1. INVOKE ChilkatJsonArray1 "AddObjectCopyAt" USING jsonArray ChilkatJsonObject2
con esta linea si ya tienes el json creado lo insertas dentro del array

Un saludo!
Mane9mb no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
JCantero (16 de junio de 2022)
Respuesta

Tags
cobol , json , parse


Usuarios activos actualmente viendo este tema: 1 (0 miembros y 1 visitantes)
 
Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado



La franja horaria es GMT +1. Ahora son las 05:11.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2022, Jelsoft Enterprises Ltd.