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 > Fujitsu COBOL > PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
Comunicados
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Tablas en Cobol dariodr COBOL - General 3 21 de abril de 2020 09:03
[Sintaxis] SQL embebido - cursor con COUNT() en PowerCOBOL 7 drvedia1981 PowerCOBOL (ActiveX, v4 - v11) 10 12 de junio de 2018 14:16
[Aporte] Tablas bidimensionales de longitud variable Kuk Cocina MicroFocus 2 23 de mayo de 2018 10:13
[Sintaxis] Variables en programa con SQL embebido DYANY IBM Enterprise COBOL 1 20 de diciembre de 2016 15:26
[Sintaxis] Ocultar Cursor Recato53 PowerCOBOL (ActiveX, v4 - v11) 3 21 de febrero de 2015 16:08
Respuesta
 
Herramientas

  #1
Antiguo 10 de abril de 2021, 01:16
IDENTIFICATION DIVISION
Nino
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de Nino
DATA DIVISION
septiembre 2019
Santiago De Chile
18.10.2021 12:18
PROCEDURE DIVISION
Posts: 5
Enviado: 3
Recibido: 9
Soluiones: 1
Reputación: 0
Nino is an unknown quantity at this point
Base de datos Cursor SQL sobre tablas de nombres variables

Hola apreciados colegas.
Necesito realizar un cursor SQL que realice una consulta sobre tablas que tienen nombres distintos pero igual estructura de datos (mismas columnas).
Es el típico proceso de datos almacenados en tablas de uso mensual (liquidaciones por ejemplo), respecto de las cuales necesito realizar una búsqueda según cierta lógica de control.
En cobol basta con asignar el nombre al archivo definido en la select:
Código COBOL:
  1.            SELECT OPTIONAL LIQSUE ASSIGN TO IDF-LIQSUE
...
Y , en el perform antes de abrir el archivo se le asigna un nombre según la lógica requerida,por ejemplo:
Código COBOL:
  1.      PERFORM VARYING GLOBAL-ANO FROM 2015 BY 1 UNTIL GLOBAL-ANO > 2021
  2.       PERFORM VARYING GLOBAL-MES FROM 1 BY 1 UNTIL GLOBAL-MES > 12
  3.         MOVE SPACES TO IDF-LIQSUE
  4.         STRING GLOBAL-ANO GLOBAL-MES 'LiqSue' DELIMITED SIZE INTO IDF-LIQSUE *> el nombre del archivo o tabla sería -por ejemplo- "202103LiqSue"
  5.         OPEN INPUT LIQSUE
  6.         PERFORM PROCESA-CONSULTA *> Lógica asociada a la consulta
  7.         CLOSE LIQSUE
  8.       END-PERFORM
  9.      END-PERFORM

... Entonces, el cursor SQL que se requiere, debe procesar nombres de tablas dinámicos (variables) que se diferencian entre sí SÓLO POR EL NOMBRE pero, que contienen datos relativos al periodo de proceso hurgado.

He probado creando las consultas en campos de texto, usando el los comandos SQL embebidos PREPARE y EXECUTE más, sin éxito hasta ahora.

Saludos cordiales para todos y los mejores deseos de salud !!!
Atte. Nino.
PD: GRACIAAAAAAAAAAAAAAASSSSSS !!!!!!
Nino no ha iniciado sesión   Responder Con Cita
  #2
Antiguo 10 de abril de 2021, 10:19
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
diciembre 2014
Madrid
36 años
19.10.2021 17:23
PROCEDURE DIVISION
Posts: 1.833
Enviado: 586
Recibido: 765
Soluiones: 95
Reputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

@Nino, hola bienvenido.

Lo primero, dinos con qué compilador trabajas.

Lo segundo, todo código SQL, sea embebido o no, trabaja con "punteros" hacía los recursos de la BBDD.

Si tabajas con SQL embebido, no habrá más remedio que declarar 2 cursores. Si trabajas con ODBC/JDBC, la cosa puede cambiar. Y si trabajas con controles tipo ADO etc, es aún otra historia.

Así que danos más datos.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Nino (10 de abril de 2021)
  #3
Antiguo 10 de abril de 2021, 13:07
IDENTIFICATION DIVISION
Nino
 Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de Nino
DATA DIVISION
septiembre 2019
Santiago De Chile
18.10.2021 12:18
PROCEDURE DIVISION
Posts: 5
Enviado: 3
Recibido: 9
Soluiones: 1
Reputación: 0
Nino is an unknown quantity at this point
Predeterminado

Gracias KUK.
Me declaro un completo ignorante, ávido de conocimientos y, lejos de llegar a incomodar de una a los foreros, dedico muchas horas a estudiar antes de preguntar (intentando descubrir la pólvora).
Utilizo SQL embebido, y POWERCOBOL 9.
No existe forma de expresar mis agradecimientos, por el valioso tiempo que me dedicas, excepto ponerme a tu disposición y a la de los demás colegas para siempre colaborar el lo que más pueda.
Saludos cordiales.
Nino.
Nino no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Kuk (10 de abril de 2021)
  #4
Antiguo 10 de abril de 2021, 18:48
IDENTIFICATION DIVISION
Kuk
 Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
diciembre 2014
Madrid
36 años
19.10.2021 17:23
PROCEDURE DIVISION
Posts: 1.833
Enviado: 586
Recibido: 765
Soluiones: 95
Reputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

@Nino, nos alegramos siempre de tener compañeros nuevos.
No dudes en preguntarnos todo lo que necesites.

En cuanto a tu problema, no te queda otra que declarar 2 cursores diferentes y trataros individualmente cada uno.
Puedes tenerlos ambos abiertos al mismo tiempo etc. sin problemas y tratarlos en los bucles anidados. Pero deben ser declarados por separado con nombres diferentes.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk no ha iniciado sesión   Responder Con Cita
  #5
Antiguo 14 de abril de 2021, 22:20
IDENTIFICATION DIVISION
Nitzer
 Guru de COBOL
Activista del Foro: Activista del Foro - Razón: Por Videoconferencia-Webinar  Guru de los Gurus: Por solidos y amplios conocimientos - Razón: Por aportar conocimientos excepcionales 
ENVIRONMENT DIVISION
Avatar de Nitzer
DATA DIVISION
noviembre 2015
Almeria
56 años
13.10.2021 12:43
PROCEDURE DIVISION
Posts: 144
Enviado: 57
Recibido: 102
Soluiones: 5
Reputación: 16
Nitzer is on a distinguished road Nitzer is on a distinguished road Nitzer is on a distinguished road Nitzer is on a distinguished road Nitzer is on a distinguished road Nitzer is on a distinguished road Nitzer is on a distinguished road Nitzer is on a distinguished road
Predeterminado

Hola a todos, @Nino no veo el problema, eso que comentas que haces en cobol con ficheros lo puedes hacer exactamente igual en Tablas de una BBDD.
Dinamicamente puedes cambiar el nombre de la tabla y que el proceso sea exactamente el mismo.

Estoy casi seguro que te he entendido y lo veo exactamente igual.
Yo tengo sentencias que para construirlas igual tengo 40 líneas de código, todo completamente dinámico.
Nitzer no ha iniciado sesión   Responder Con Cita
Respuesta

Tags
cursor , exec sql open cursor , execute , prepare , sql


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 20:08.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2021, Jelsoft Enterprises Ltd.