Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   AcuCobol (https://www.cobolforo.es/forumdisplay.php?f=23)
-   -   [Sintaxis] Error de sintaxis SQL (https://www.cobolforo.es/showthread.php?t=939)

GabrielACE 4 de enero de 2019 16:58

Error de sintaxis SQL
 
hola gente, tengo microfocus acucobol 9.11 y dbmaker

actualmente uso las tablas como si fueran archivos indexados, pero necesito acceder ahora
usando desde el mismo cobol a tablas mediante consultas tipo SQL


el tema es que cuando compilo me tira error de sintaxis

Código COBOL:
  1.      EXEC SQL
  2.          SELECT au_lname INTO :lastname FROM authors
  3.           WHERE au_id = '124-59-3864'
  4.      END-EXEC

pero se que la sintaxis esta bien, me parece que el problema es que no configure el compilador para ejecutar con SQL

alguien sabe si estoy en lo correcto? y de ser asi como modificar el compilador?

Kuk 4 de enero de 2019 21:08

GabrielACE, no es END-EXEC sino END EXEC con espacio entre END y EXEC.

GabrielACE 7 de enero de 2019 16:14

Cita:

Citación del post de Kuk (Mensaje 4703)
GabrielACE, no es END-EXEC sino END EXEC con espacio entre END y EXEC.

NOP

tampoco funciono
Código COBOL:
  1.  
  2.      159 00000A      DISPLAY "PRUEBA DE RUTINA PARA ALEATORIO"
  3.      160                     LINE 2 COL 1 ERASE
  4.      161                     "NUM MAXI: " LINE 5 COL 35.
  5.      162
  6.      163             EXEC SQL
  7. -->ERROR: Verb expected, EXEC found
  8.      164 000021            SELECT AT_NUCHASIS INTO :WS-NUCHASIS FROM autos
  9.      165                   WHERE AT_COAUTO= 123456;
  10.      166             END EXEC.
  11.      167

Kuk 7 de enero de 2019 19:18

GabrielACE, es que esto depende del dialecto. En Enterprise COBOL de IBM creo recordar que es como he dicho antes. Pero mirando la documentación de Micro Focus por ejemplo, es como lo habías hecho tú al principio, con guion.

A ver, ¿puedes publicar el error que te daba exactamente al principio, con END-EXEC?

GabrielACE 7 de enero de 2019 21:42

Cita:

Citación del post de Kuk (Mensaje 4707)
GabrielACE, es que esto depende del dialecto. En Enterprise COBOL de IBM creo recordar que es como he dicho antes. Pero mirando la documentación de Micro Focus por ejemplo, es como lo habías hecho tú al principio, con guion.

A ver, ¿puedes publicar el error que te daba exactamente al principio, con END-EXEC?

daba el mismo error.

estoy seguro de que tengo varios errores, el problema es que no tengo un ejemplo de microfocus con tablas SQL

por ejemplo, se que tengo que definir en la working el diseño de la tabla para que la reconozca

que en IBM se ponia
Código COBOL:
  1.           EXEC SQL BEGIN DECLARE SECTION
  2.          
  3.           CAMBIO TABLE
  4.           (
  5.  
  6.             CAM_FECHA     DECIMAL(8 ,0) NOT NULL,          
  7.             CAM_CAMBIO    DECIMAL(5, 4) NOT NULL          
  8.          
  9.           )
  10.           END-EXEC.

pero aqui me dice que es un error porque le falta el nivel 01

estoy complado con este tema :-S

Kuk 7 de enero de 2019 22:38

GabrielACE, no, olvídate de IBM. No tienes que declarar la tabla en formato SQL. En esa sección tienes que declarar las variables Host que vas a usar en tus querys.

:piensa: ¿Has activado el precompilador de SQL ?

Echa un vistazo a los ejemplos de SQL embebido que hay en el foro, te van a servir mucho.

Xavier 8 de enero de 2019 13:07

Hola GabrielACE
Yo trabajo con PowerCobol, pero creo que la sintaxis es la misma.
En la WORKING-STORAGE debes definir las variables que vas a utilizar para "recoger" los datos de la Base de Datos, Por ejemplo:
Código COBOL:
  1. * Declarar las variables de las Tablas
  2.      EXEC SQL BEGIN DECLARE SECTION END-EXEC.
  3.          01 TablaClientes GLOBAL.
  4.               02 wCodigoCliente PIC S9(9) COMP-5.
  5.               02 wNombreCliente PIC X(40).
  6.      EXEC SQL END DECLARE SECTION END-EXEC.
En la PROCEDURE DIVISION.
Código COBOL:
  1.      MOVE 1 TO wCodigoCliente
  2.      EXEC SQL
  3.              SELECT NombreCliente
  4.                 INTO :wNombreCliente
  5.                FROM TablaClientes
  6.               WHERE CodigoCliente = :wCodigoCliente
  7.      END-EXEC

Espero que te sirva

GabrielACE 8 de enero de 2019 21:22

Cita:

Citación del post de Kuk (Mensaje 4709)
GabrielACE, no, olvídate de IBM. No tienes que declarar la tabla en formato SQL. En esa sección tienes que declarar las variables Host que vas a usar en tus querys.

:piensa: ¿Has activado el precompilador de SQL ?

Echa un vistazo a los ejemplos de SQL embebido que hay en el foro, te van a servir mucho.

eso de activar el precompilador se que es una de las muchas cosas que me faltan

pero no tengo ni idea como activarlo, sabes como se hacer?

Kuk 9 de enero de 2019 21:11

1 Archivos Adjunto(s)
GabrielACE, si no activas el precompilador, que convierte la sintaxis SQL en CALL-s de Cobol, el programa te va a dar errores de sintaxis.

Habrá que mirar las propiedades del proyecto. En Micro Focus Visual COBOL es así:

GabrielACE 29 de enero de 2019 13:19

Gracias por la data, el problema es que es la version 9.11, asi que no tengo ninguna ventaja visual para esas cosas

Kuk 29 de enero de 2019 20:14

GabrielACE, pues de alguna manera se podrá activar el precompilador. Si es versión consola, habra que activar algún parámetro.

Échale un vistazo a esto:


La franja horaria es GMT +2. Ahora son las 14:46.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.