Gracias Rui Pinto (Rapinto)
COBOL Foro
Foro dedicado a COBOL, a la Programación y a la Informática.
Retroceder   COBOL Foro > IDE-s y compiladores COBOL > Fujitsu COBOL > PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
Noticias y Avisos
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Aporte] Hyperfile SQL desde PowerCOBOL Dasije Cocina PowerCOBOL 3 14 de julio de 2018 16:46
[Sintaxis] SQL embebido - cursor con COUNT() en PowerCOBOL 7 drvedia1981 PowerCOBOL (ActiveX, v4 - v11) 10 12 de junio de 2018 15:16
[Aporte] Ejemplo PWC y SQL Embebido Josber Cocina PowerCOBOL 10 15 de junio de 2017 03:17
[Sintaxis] Variables en programa con SQL embebido DYANY IBM Enterprise COBOL 1 20 de diciembre de 2016 16:26
[Noticia] Conectarse a SQL Server Recato53 PowerCOBOL (ActiveX, v4 - v11) 5 9 de noviembre de 2015 10:55
Respuesta
 
Herramientas

  #1
Antiguo 18 de febrero de 2016, 23:05
IDENTIFICATION DIVISION
Hrmcobol
Guardián del Foro
ENVIRONMENT DIVISION
Avatar de Hrmcobol
DATA DIVISION
Forero desde (Registrado)febrero 2015
Argentina
UbicaciónPuerto Madryn
Edad67 años
Última Actividad02.11.2019 01:14
PROCEDURE DIVISION
PostsPosts: 261
Ha dicho GraciasEnviado: 92
Ha recibido agradecimientosRecibido: 83
Mejores respuestasSoluiones: 8
Medallas recibidas: 1Medallas: Guardián del Foro: Guardián del espíritu y clima del Foro - Razón: Por implicación en la vida del Foro 
ReputaciónReputación: 12
Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light
Predeterminado Sql Embebido

Hola camaradas, nunca use esta modalidad de acceso, use siempre DbAccessControl, de Power, necesitaría un código como ejemplo de como hacer para leer un tabla de una base, vía una ODBC. Estoy leyendo el manual pero no doy pie con bola.
En algún momento alguien subió algo al respecto, pero no logro encontrarlo.
Lo que quiero hacer en concreto es agregar campos a tablas ya existentes, tambien crear tablas nuevas en una base. Se que las instrucciones son CreateTable y AlterTable.
Todo desde un programa cobol.
Saludos y Gracias !!
Hrmcobol no ha iniciado sesión   Responder Con Cita
  #2
Antiguo 19 de febrero de 2016, 08:16
IDENTIFICATION DIVISION
Josber
Super Moderador
ENVIRONMENT DIVISION
Avatar de Josber
DATA DIVISION
Forero desde (Registrado)febrero 2015
España
UbicaciónAlicante
Última Actividad21.11.2019 09:09
PROCEDURE DIVISION
PostsPosts: 468
Ha dicho GraciasEnviado: 190
Ha recibido agradecimientosRecibido: 204
Mejores respuestasSoluiones: 31
Medallas recibidas: 1Medallas: Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por muchos agradecimientos 
ReputaciónReputación: 19
Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road
Predeterminado

A ver Hrm, primero tienes que empezar definiendo la estructura de la tabla en la WORKING, (y todas las variables que vayas a usar en SQL), por ejemplo

Código COBOL:
  1.             EXEC SQL
  2.                  BEGIN DECLARE SECTION
  3.             END-EXEC.
  4. *       FICHERO de GASTOS
  5.  01  REG-GAS    IS GLOBAL.
  6.      03  ID_GAS         PIC S9(11).
  7.      03  GASLIB         PIC X(4).       *> LIBRO DE REGISTRO AL QUE PERTENECE EL APUNTE
  8.      03  GASFEC         PIC X(8).       *> FECHA DEL APUNTE
  9.      03  GASDES         PIC X(60).      *> DESCRIPCIÓN DEL APUNTE
  10.      03  GASIMP         PIC S9(9)V999.      *> IMPORTE DEL APUNTE
  11.      03  GASTIP         PIC X.          *> TIPO DE APUNTE (Ingreso o Gasto)
  12.      03  GASOBS         PIC X(100).     *> OBSERVACIONES
  13.      03  GASUSU         PIC X(10).      *> USUARIO ALTA DEL APUNTE
  14.      03  GASUSU_FEC     PIC X(8).       *> FECHA EN LA QUE SE REALIZA EL APUNTE
  15.      03  GASHO.
  16.          05  GASHOR     PIC S9(6).      *> HORA EN LA QUE SE REALIZA EL APUNTE
  17.      03  GASUSU_MOD     PIC X(10).      *> USUARIO ULTIMA MODIFICACIÓN
  18.      03  GASFEC_MOD     PIC X(8).       *> FECHA ULTIMA MODIFICACIÓN
  19.      03  GASHO_MOD.
  20.          05  GASHOR_MOD     PIC S9(6).      *> HORA ULTIMA MODIFICACIÓN
  21.      03  GASELI         PIC X.          *> ¿APUNTE ELIMINADO?
  22. *
  23.  01  WGASLIB            PIC X(4)    IS GLOBAL.
  24.  01  WID_GAS            PIC S9(11)  IS GLOBAL.
  25.  01  ID_GAS1            PIC S9(11)  IS GLOBAL.
  26. *
  27.  01  SQLSTATE           PIC XXXXX   IS GLOBAL.
  28.  01  SQLCODE            PIC S9(9) COMP-5   GLOBAL.
  29.  01  SQLMSG         PIC X(600)     GLOBAL.
  30.  01  CONTASQL           PIC S9(9)   IS GLOBAL.  *> CONTADOR
  31.  01  WS-SQL         PIC X(250)      IS GLOBAL.
  32.             EXEC SQL
  33.                  END DECLARE SECTION
  34.             END-EXEC.

Ten en cuenta que TODAS las variables numéricas, en la WORKING tienen que llevar signo SÍ o SÍ.

- PARA LEER EL NÚMERO DE REGISTROS:

Código COBOL:
  1.      EXEC SQL
  2.           SELECT COUNT(GASLIB)
  3.                  FROM GASTOS
  4.                       WHERE GASLIB = :WGASLIB AND GASELI <> "S"
  5.                  INTO :CONTASQL
  6.      END-EXEC.

en CONTASQL se almacenaría el total de registros

- PARA LEER UN REGISTRO ESPECÍFICO

Código COBOL:
  1.      MOVE "Text" OF CAMPO10 TO WID_GAS.
  2.      
  3.      EXEC SQL
  4.           SELECT ID_GAS,
  5.                  GASFEC,
  6.                  GASDES,
  7.                  GASIMP,
  8.                  GASTIP,
  9.                  GASOBS,
  10.                  GASELI
  11.                  FROM GASTOS WHERE ID_GAS = :WID_GAS LIMIT 1
  12.                  INTO :ID_GAS,
  13.                       :GASFEC,
  14.                       :GASDES,
  15.                       :GASIMP,
  16.                       :GASTIP,
  17.                       :GASOBS,
  18.                       :GASELI
  19.      END-EXEC.
  20.      
  21.      IF SQLSTATE NOT = "00000" OR GASELI = "S"
  22.         ADD POW-DMICONERROR POW-DMOK GIVING ESTILO
  23.         INVOKE POW-SELF "DisplayMessage"
  24.                USING "*ERROR: El registro no existe ..."
  25.                      WS-ATENCION
  26.                      ESTILO
  27.         END-INVOKE
  28.         INVOKE CAMPO10 "SetFocus"
  29.         EXIT PROGRAM
  30.      END-IF.

- PARA LEER UN RANGO ESPECÍFICO DE REGISTROS

Código COBOL:
  1.      
  2.      EXEC SQL
  3.           DECLARE cursor1 CURSOR FOR
  4.                   SELECT ID_GAS,
  5.                          GASFEC,
  6.                          GASDES,
  7.                          GASIMP,
  8.                          GASTIP,
  9.                          GASOBS,
  10.                          GASELI
  11.                   FROM GASTOS WHERE GASLIB = :WGASLIB AND GASELI <> "S"
  12.                          ORDER BY ID_GAS ASC;
  13.      END-EXEC.
  14.      
  15.      EXEC SQL
  16.           OPEN cursor1
  17.      END-EXEC.
  18.      
  19.      PERFORM CARGAR THRU FIN-CARGAR UNTIL SQLSTATE = "02000".
  20.      
  21.      EXEC SQL
  22.           CLOSE cursor1
  23.      END-EXEC.
  24.      
  25.      EXEC SQL
  26.           COMMIT
  27.      END-EXEC.
  28.      .
  29.      .
  30.      .    
  31. *
  32.  CARGAR.
  33.      EXEC SQL
  34.           FETCH cursor1
  35.                 INTO :ID_GAS,
  36.                      :GASFEC,
  37.                      :GASDES,
  38.                      :GASIMP,
  39.                      :GASTIP,
  40.                      :GASOBS,
  41.                      :GASELI
  42.      END-EXEC.
  43.      
  44.      IF SQLSTATE = "02000"
  45.         GO FIN-CARGAR
  46.      END-IF.
  47.          
  48.      INVOKE VIEW2 "Add" USING 1 1 RETURNING WK-IDX
  49.      IF WK-IDX > 0 THEN
  50.         MOVE "ListItems"(WK-IDX) OF VIEW2 TO POW-PCMLIST
  51.      END-IF.
  52.      
  53.      MOVE GASFEC TO FECHA.
  54.      MOVE CORR FECHA TO FECHA1.
  55.      .
  56.      .
  57.      .
  58.      
  59.  FIN-CARGAR.
  60.      EXIT.

- PARA INSERTAR UN NUEVO REGISTRO

Código COBOL:
  1.         EXEC SQL
  2.              INSERT INTO GASTOS
  3.                     VALUES (
  4.                             NULL,
  5.                            :GASLIB,
  6.                            :GASFEC,
  7.                            :GASDES,
  8.                            :GASIMP,
  9.                            :GASTIP,
  10.                            :GASOBS,
  11.                            :GASUSU,
  12.                            :GASUSU_FEC,
  13.                            :GASHOR,
  14.                            :GASUSU_MOD,
  15.                            :GASFEC_MOD,
  16.                            :GASHOR_MOD,
  17.                            :GASELI     )
  18.         END-EXEC

El primer campo es NULL, porque el campo ID_GAS, que es la clave principal, es un campo AUTO_INCREMENT.

- PARA MODIFICAR UN REGISTRO EXISTENTE:

Código COBOL:
  1.      EXEC SQL
  2.           UPDATE GASTOS
  3.                  SET GASLIB =   :GASLIB,
  4.                      GASFEC =   :GASFEC,
  5.                      GASDES =   :GASDES,
  6.                      GASIMP =   :GASIMP,
  7.                      GASTIP =   :GASTIP,
  8.                      GASOBS =   :GASOBS,
  9.                      GASUSU_MOD = :GASUSU_MOD,
  10.                      GASFEC_MOD = :GASFEC_MOD,
  11.                      GASHOR_MOD = :GASHOR_MOD,
  12.                      GASELI =   :GASELI
  13.                   WHERE ID_GAS = :ID_GAS
  14.      END-EXEC.

Aquí no puedes poner el primer campo, porque la llave principal, no se puede volver a grabar, si lo pusieras daría el error S200 en SQLSTATE.

despues de cada vez que INSERTES/MODIFIQUES un registro, has de poner

Código COBOL:
  1. EXEC SQL
  2.         COMMIT
  3. END-EXEC.

o de lo contrario, no te modificará la tabla, en caso que que quiereas desacer los cambios, cambias el COMMIT por ROLLBACK, pero una vez que haya hecho el COMMIT, los cambios no se pueden deshacer.

Creo que está todo, si tienes dudas o problemas, dinoslo.

Un saludo.-
Josber no ha iniciado sesión   Responder Con Cita
Han dicho Gracias: 4
Fito (19 de febrero de 2016), Juanes ( 8 de julio de 2017), Kuk (19 de febrero de 2016), Lascu (12 de febrero de 2019)
  #3
Antiguo 19 de febrero de 2016, 11:46
IDENTIFICATION DIVISION
Josber
Super Moderador
ENVIRONMENT DIVISION
Avatar de Josber
DATA DIVISION
Forero desde (Registrado)febrero 2015
España
UbicaciónAlicante
Última Actividad21.11.2019 09:09
PROCEDURE DIVISION
PostsPosts: 468
Ha dicho GraciasEnviado: 190
Ha recibido agradecimientosRecibido: 204
Mejores respuestasSoluiones: 31
Medallas recibidas: 1Medallas: Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Razón: Por muchos agradecimientos 
ReputaciónReputación: 19
Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road Josber is on a distinguished road
Predeterminado

Se me ha pasado el ponerte como se crea la tabla

Código COBOL:
  1. EXEC SQL
  2. CREATE TABLE IF NOT EXIST 'gastos' (
  3.  'ID_GAS' int(11) unsigned NOT NULL AUTO_INCREMENT,
  4.  'GASLIB' varchar(4) DEFAULT NULL COMMENT 'LIBRO DE GASTOS',
  5.  'GASFEC' varchar(8) DEFAULT NULL COMMENT 'FECHA APUNTE',
  6.  'GASDES' varchar(60) DEFAULT NULL COMMENT 'DESCRIPCIÓN APUNTE',
  7.  'GASIMP' decimal(12,3) NOT NULL DEFAULT '0.000' COMMENT 'IMPORTE APUNTE',
  8.  'GASTIP' varchar(1) DEFAULT NULL COMMENT 'TIPO DE APUNTE(GASTO o INGRESO)',
  9.  'GASOBS' varchar(100) DEFAULT NULL COMMENT 'OBSERVACIONES APUNTE',
  10.  'GASUSU' varchar(10) DEFAULT NULL COMMENT 'USUARIO QUE HIZO EL APUNTE',
  11.  'GASUSU_FEC' varchar(8) DEFAULT NULL COMMENT 'FECHA QUE SE HIZO EL APUNTE',
  12.  'GASHOR' decimal(6,0) DEFAULT '0' COMMENT 'HORA EN LA QUE SE HIZO EL APUNTE',
  13.  'GASUSU_MOD' varchar(10) DEFAULT NULL COMMENT 'USUARIO ÚLTIMA MODIFICACIÓN',
  14.  'GASFEC_MOD' varchar(8) DEFAULT NULL COMMENT 'FECHA ÚLTIMA MODIFICACIÓN',
  15.  'GASHOR_MOD' decimal(6,0) DEFAULT NULL COMMENT 'HORA ÚLTIMA MODIFICACIÓN',
  16.  'GASELI' varchar(1) DEFAULT NULL COMMENT '¿APUNTE ELIMINADO?',
  17.  UNIQUE KEY ('ID_GAS')
  18. ) ENGINE=InnoDB DEFAULT CHARSET=latin1
  19. END-EXEC

Si no pones la instrucción IF NOT EXIST, te dará error si la tabla ya existe

- Si deseas eliminar elementos de la tabla:

Código COBOL:
  1. EXEC SQL
  2.         DELETE FROM GASTOS
  3.                    WHERE ID_GAS = :WID_GAS
  4. END-EXEC.

- Si quieres vaciar por completo una tabla, además de poner el contador AUTO_INCREMENT a 0, (si lo tiene la tabla, que no es obligatorio)

Código COBOL:
  1. EXEC SQL
  2.         TRUNCATE TABLE GASTOS
  3. END-EXEC.

- Si quieres eliminar por completo la tabla, (datos y estructura)

Código COBOL:
  1. EXEC SQL
  2.         DROP TABLE GASTOS
  3. END-EXEC.

¡Cuidado! que TRUNCATE y DROP, no tienen vuelta atrás

Si quieres ver cómo esta creada una tabla, desde el administrador de BD, no desde tu programa COBOL

Código SQL:
  1. SHOW CREATE TABLE Nombre_de_la_tabla

Esto te daría un fichero de texto plano muy similar al que utilizas para crear la tabla.

Un saludo y suerte.-

---------- Post añadido : 11:46 ---------- Post anterior : 11:30 ----------

Otra cosa a tener en cuenta, es cuando creas un número en SQL y has de ponerle un tamaño con decimales, esto se define entre paréntesis, el primer número indica el tamaño total, (incluidos los decimales) y el segundo los decimales, por ejemplo, un campo en COBOL del tipo

Código COBOL:
  1. 01  WNUM        PIC S9(7).
  2. 01  WDEC        PIC S9(7)V999.

en SQL, sería

Código SQL:
  1. 'WNUM' decimal(7,0),
  2. 'WDEC' decimal(10,3)

Si te fijas WDECIMAL en SQL, tiene un tamaño de 10, de los que 3 son decimales.
Los campos en SQL, se separan utilizando el símbolo de la , (coma), y las instrucciones se separan utilizando el símbolo ; (punto y coma), por ejemplo:

Código COBOL:
  1.      
  2.      EXEC SQL
  3.  
  4.           DECLARE cursor1 CURSOR FOR
  5.                   SELECT ID_GAS,
  6.                          GASFEC,
  7.                          GASDES,
  8.                          GASIMP,
  9.                          GASTIP,
  10.                          GASOBS,
  11.                          GASELI
  12.                   FROM GASTOS WHERE GASLIB = :WGASLIB AND GASELI <> "S"
  13.                          ORDER BY ID_GAS ASC;
  14.  
  15.           OPEN cursor1
  16.  
  17.      END-EXEC.

Cuidado con las comas y los punto y comas, que son obligatorios y es muy estricto en ésto.



Un saludo
Josber no ha iniciado sesión   Responder Con Cita
Han dicho Gracias: 4
Fito (19 de febrero de 2016), Hrmcobol (26 de febrero de 2016), Juanes ( 8 de julio de 2017), Kuk (19 de febrero de 2016)
  #4
Antiguo 24 de febrero de 2016, 16:14
IDENTIFICATION DIVISION
Hrmcobol
Guardián del Foro
ENVIRONMENT DIVISION
Avatar de Hrmcobol
DATA DIVISION
Forero desde (Registrado)febrero 2015
Argentina
UbicaciónPuerto Madryn
Edad67 años
Última Actividad02.11.2019 01:14
PROCEDURE DIVISION
PostsPosts: 261
Ha dicho GraciasEnviado: 92
Ha recibido agradecimientosRecibido: 83
Mejores respuestasSoluiones: 8
Medallas recibidas: 1Medallas: Guardián del Foro: Guardián del espíritu y clima del Foro - Razón: Por implicación en la vida del Foro 
ReputaciónReputación: 12
Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light
Predeterminado

Estimados, sigo colgado con este tema.
La pregunta es:
Como relaciono la ODBC con el PwCobol sin usar DbAccessControl
Saludos
Hrmcobol no ha iniciado sesión   Responder Con Cita
  #5
Antiguo 24 de febrero de 2016, 21:45
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad34 años
Última Actividad21.11.2019 13:02
PROCEDURE DIVISION
PostsPosts: 1.424
Ha dicho GraciasEnviado: 318
Ha recibido agradecimientosRecibido: 544
Mejores respuestasSoluiones: 87
ReputaciónReputació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

Hrmcobol, si no me equivoco, tienes que crear un fichero *.inf con la configuración de la conexión e indicarlo en COBOL85.CBR con la variable @ODBC_Inf.
Ejemplo:
Código:
@ODBC_Inf=PRUEBA.inf


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Hrmcobol (26 de febrero de 2016)
  #6
Antiguo 25 de febrero de 2016, 21:38
IDENTIFICATION DIVISION
Hrmcobol
Guardián del Foro
ENVIRONMENT DIVISION
Avatar de Hrmcobol
DATA DIVISION
Forero desde (Registrado)febrero 2015
Argentina
UbicaciónPuerto Madryn
Edad67 años
Última Actividad02.11.2019 01:14
PROCEDURE DIVISION
PostsPosts: 261
Ha dicho GraciasEnviado: 92
Ha recibido agradecimientosRecibido: 83
Mejores respuestasSoluiones: 8
Medallas recibidas: 1Medallas: Guardián del Foro: Guardián del espíritu y clima del Foro - Razón: Por implicación en la vida del Foro 
ReputaciónReputación: 12
Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light
Predeterminado

Asi Es Kuk, la conexión se hace r intermedio del @ODBC_Inf=PRUEBA.inf y el cobol85.cbr, logre abrir la base y leer registros de la tabla.
Gracias.
Hrmcobol no ha iniciado sesión   Responder Con Cita
  #7
Antiguo 26 de febrero de 2016, 04:44
IDENTIFICATION DIVISION
Juanghi
Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de Juanghi
DATA DIVISION
Forero desde (Registrado)febrero 2015
Argentina
UbicaciónCatamarca
Edad56 años
Última Actividad16.10.2019 00:38
PROCEDURE DIVISION
PostsPosts: 8
Ha dicho GraciasEnviado: 2
Ha recibido agradecimientosRecibido: 2
Mejores respuestasSoluiones: 0
ReputaciónReputación: 0
Juanghi is on a distinguished road
Predeterminado muy bueno el aporte de jorber

Como primer paso en tu proyecto deberias direccionar donde estara tu archivo de coneccion via odbc (ojo .. por fuera podes cambiar esa direccion tambien)

Luego ejecutar el SQLODBCS a los efectos de crear la sesion con el archivo de coneccion

seleccionas una seccon en este caso la llame SV4 asociada a una base "cursos", con su usuario y clave (root y su clave)

luego en la procedure estableces la coneccion y trabajas con todas aquellas
posiblidades que te brindo josber con comandos sql

al finalizar el programas te desconectas
Imágenes Adjuntas
Tipo de Archivo: png screenshot.165.png (3,8 KB, 46 descargas)
Tipo de Archivo: png screenshot.166.png (6,9 KB, 42 descargas)
Tipo de Archivo: png screenshot.167.png (7,1 KB, 41 descargas)
Tipo de Archivo: png screenshot.168.png (861 Bytes, 41 descargas)
Tipo de Archivo: png screenshot.169.png (1,1 KB, 38 descargas)
Juanghi no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Hrmcobol (26 de febrero de 2016)
  #8
Antiguo 26 de febrero de 2016, 14:56
IDENTIFICATION DIVISION
Hrmcobol
Guardián del Foro
ENVIRONMENT DIVISION
Avatar de Hrmcobol
DATA DIVISION
Forero desde (Registrado)febrero 2015
Argentina
UbicaciónPuerto Madryn
Edad67 años
Última Actividad02.11.2019 01:14
PROCEDURE DIVISION
PostsPosts: 261
Ha dicho GraciasEnviado: 92
Ha recibido agradecimientosRecibido: 83
Mejores respuestasSoluiones: 8
Medallas recibidas: 1Medallas: Guardián del Foro: Guardián del espíritu y clima del Foro - Razón: Por implicación en la vida del Foro 
ReputaciónReputación: 12
Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light
Predeterminado

Estimados, ante todo gracias por vuestra colaboración.
Ya he logrado leer y agregar registros a la tabla.
Aprendí la conexión Odbc/Cobol85/Sql.Inf
Ahora lo que quiero hacer es crear una tabla nueva con la instrucción CREATE TABLE, como se imaginaran copie el código del post que puso Josber, cuando compilo me da el siguiente error:
ART00101 CbLeer1-Click(20) : JMN2633I-S The SQL statement is invalid. ODBC-7600E NOT EXECUTABLE SQL STATEMENT..
Aparentemente el error es que " Create Table" no esta soportado.
Alguna idea?
Saludos

Les adjunto el código que escribí

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  
  5.      EXEC SQL BEGIN DECLARE SECTION END-EXEC.
  6.  
  7.  01 SQLSTATE        PIC  X(005).
  8.  
  9.      EXEC SQL END DECLARE SECTION END-EXEC.
  10.  
  11.  PROCEDURE DIVISION.
  12.  
  13.      EXEC SQL CONNECT TO 'maestro' END-EXEC.  *> Maestro es el nombre de la ODBC
  14.  
  15.         EXEC SQL
  16.         CREATE TABLE IF NOT EXIST 'gastos' (
  17.                 'ID_GAS'    int   (011) unsigned          NOT NULL AUTO_INCREMENT,
  18.                 'GASLIB'    varchar (004)               DEFAULT NULL,
  19.                 'GASFEC'    varchar (008)               DEFAULT NULL,
  20.                 'GASDES'    varchar (060)               DEFAULT NULL,
  21.                 'GASELI'    varchar (001)               DEFAULT NULL,
  22.             UNIQUE KEY ('ID_GAS')) ENGINE=InnoDB DEFAULT CHARSET=latin1
  23.         END-EXEC      
  24.  
  25.      IF  sqlstate not = "00000" INVOKE POW-SELF "DisplayMessage" USING sqlstate "Error".
  26.  
  27.      EXEC SQL DISCONNECT 'maestro'  END-EXEC.
Hrmcobol no ha iniciado sesión   Responder Con Cita
  #9
Antiguo 26 de febrero de 2016, 18:41
IDENTIFICATION DIVISION
Xavier
Acabo de llegar...
ENVIRONMENT DIVISION
Avatar de Xavier
DATA DIVISION
Forero desde (Registrado)enero 2016
España
UbicaciónValencia
Última Actividad09.01.2019 08:01
PROCEDURE DIVISION
PostsPosts: 14
Ha dicho GraciasEnviado: 9
Ha recibido agradecimientosRecibido: 2
Mejores respuestasSoluiones: 0
ReputaciónReputación: 0
Xavier is on a distinguished road
Predeterminado

Hola Hrm
Creo haber leído en algún sitio, ahora no recuerdo donde, que desde el SQL embebido solo puedes hacer uso del lenguaje DML (Data Manipulation Laguaje) que es que estáis comentando aquí, pero no puedes hacer uso del DDL (Data Definition Laguaje) que es el que sirve para definir objetos en la base de datos (Tablas, Vistas, etc.)
Xavier no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Hrmcobol (26 de febrero de 2016)
  #10
Antiguo 27 de febrero de 2016, 19:06
IDENTIFICATION DIVISION
Hrmcobol
Guardián del Foro
ENVIRONMENT DIVISION
Avatar de Hrmcobol
DATA DIVISION
Forero desde (Registrado)febrero 2015
Argentina
UbicaciónPuerto Madryn
Edad67 años
Última Actividad02.11.2019 01:14
PROCEDURE DIVISION
PostsPosts: 261
Ha dicho GraciasEnviado: 92
Ha recibido agradecimientosRecibido: 83
Mejores respuestasSoluiones: 8
Medallas recibidas: 1Medallas: Guardián del Foro: Guardián del espíritu y clima del Foro - Razón: Por implicación en la vida del Foro 
ReputaciónReputación: 12
Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light Hrmcobol is a glorious beacon of light
Predeterminado

Gracias Xavier. Estoy leyendo el manual un poco mas detenidamente y aparentemente es así como tu dices.

Entonces la pregunta es: No se pueden usar "Alter" y "Create" en PWC ?

Saludos
Hrmcobol no ha iniciado sesión   Responder Con Cita
Respuesta

Tags
embebido , embedded , 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 16:41.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2019, Jelsoft Enterprises Ltd.