Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL PowerCOBOL (ActiveX, v4 - v11)
PowerCOBOL (ActiveX, v4 - v11) Versiones del IDE basadas en ActiveX
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
Equivalente COBOL a campos Numeric(15,6) Hrmcobol Bases de datos 7 3 de febrero de 2016 08:53
[Sintaxis] Equivalencia de formato de campos numéricos Galileo COBOL - General 1 29 de enero de 2016 09:19
[Sintaxis] Campos VARBINARY ó BLOB en COBOL Josber COBOL - General 4 3 de diciembre de 2015 13:26
[Noticia] Conectarse a SQL Server Recato53 PowerCOBOL (ActiveX, v4 - v11) 5 9 de noviembre de 2015 10:55
[Sintaxis] Valores numericos y editados Breew PowerCOBOL (ActiveX, v4 - v11) 18 31 de marzo de 2015 16:33

Respuesta

  #1
Antiguo 15 de septiembre de 2020, 20:26
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
Predeterminado Campos numericos en SQL Server
0 Inactivo Inactivo

Hola Amigos:

Estoy con un problema. Me tengo que comunicar con una BBDD MS Sql Server y tengo problemas para pasar los campos numericos.

Me conecto vía ADO.

Los campos alfabéticos los carga perfectos.

Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  
  5.  01  warticulo   pic x(20).
  6.  01  redefines warticulo.
  7.      02 xart     pic 9(6).
  8.      02          pic x(14).
  9.      
  10.  01  wartdenom   pic x(150).
  11.  01  wartunimed  pic x(20).
  12.  01  wtexto      pic x(250)      value spaces.
  13.  01  wenviado    pic 9(4) comp-5 value zeros.
  14.  01  wzeros      pic 9           value zeros.
  15.  
  16.  01  wbaja       pic s9(10)      value zeros.
  17.  01  wstock      pic s9(14)v99.
  18.  01  wimp        pic 9(14),99.
  19.  
  20.  01  wunimed     pic x(10).
  21.  01  wiva        pic 99,99.
  22.  
  23.  
  24.  01  xprecio         pic 9(7)v9(8).
  25.  01  wprecio         pic 9(7)v9999.
  26.  01  xvprcla.
  27.      02 wven         pic 9(6).
  28.      02 wart         pic 9(6).
  29.      02 wfec         pic 9(8).
  30.  
  31.  PROCEDURE       DIVISION.
  32.  
  33.  comienzo.
  34.      open extend salida.
  35.      accept wsalhora             from time.
  36.      move "   Artículos"         to zlite.
  37.      move wsalhora               to zhora.
  38.      write reg-salida from zregsal.
  39.      close salida.
  40.  
  41.      move "Artículos"         to "Caption" of lblMSG.
  42.      perform refresca.
  43.  
  44.      move 'dbo."DKARTICULOS"'        to ADO-ARCHIVO.
  45.      perform inicializacion.
  46.  
  47.      perform fecha-sistema.
  48.      move fecha-amd           to wfec.
  49.      
  50.      open input arti venpre.
  51.  
  52. *    go sale.
  53.      
  54.  sigue.
  55.      initialize artcla.
  56.      start arti key is not < artcla invalid go sale.
  57.      
  58.  leo.
  59.      read arti next at end go sale.
  60.  
  61.      perform busca-precio.
  62.      if xprecio = zeros go leo.
  63.      
  64.      invoke OBJ-RECORDSET "ADDNEW".
  65.  
  66. *...............................................................    
  67.   *> codigo
  68.      move spaces           to warticulo.
  69.      move articulo         to xart.
  70.      invoke OBJ-FIELD(1)  "SET-VALUE" using warticulo.
  71.  
  72.    *> nombre
  73.      move artdenom         to wartdenom.
  74.      invoke OBJ-FIELD(2)  "SET-VALUE" using wartdenom.
  75.    
  76.    *> baja
  77.      move zeros            to wbaja.
  78.      invoke OBJ-FIELD(3)  "SET-VALUE" using wbaja.
  79.    
  80.    *> stock
  81.      move zeros            to wstock.
  82.      invoke OBJ-FIELD(4)  "SET-VALUE" using wstock.
  83.    
  84.    *> unidad de medida
  85.      move artunimed        to wartunimed.
  86.      invoke OBJ-FIELD(5)  "SET-VALUE" using wartunimed.
  87.    
  88.    *> precio
  89.      move xprecio          to wimp.
  90.      invoke OBJ-FIELD(6)  "SET-VALUE" using wimp.
  91.  
  92.      move zeros            to wimp.
  93.      invoke OBJ-FIELD(7)  "SET-VALUE" using wimp.
  94.      invoke OBJ-FIELD(8)  "SET-VALUE" using wimp.
  95.      invoke OBJ-FIELD(9)  "SET-VALUE" using wimp.
  96.      invoke OBJ-FIELD(10) "SET-VALUE" using wimp.
  97.      invoke OBJ-FIELD(11) "SET-VALUE" using wimp.
  98.  
  99.      invoke OBJ-FIELD(12) "SET-VALUE" using wzeros.
  100.      invoke OBJ-FIELD(13) "SET-VALUE" using wtexto.
  101.      invoke OBJ-FIELD(14) "SET-VALUE" using wtexto.
  102.    
  103.    *> enviado
  104.      move zeros            to wenviado.
  105.      invoke OBJ-FIELD(6)  "SET-VALUE" using wenviado.
  106. *...............................................................    
  107.      invoke OBJ-RECORDSET "UPDATE".
  108.      
  109.      go leo.
  110.      
  111.  sale.
  112.      close arti venpre.
  113.  
  114.      perform cierra.
  115.  
  116.      exit program.
  117.      
  118.  #include "copys\comunpro.cpy".
  119.  #include "copys\adoCnnAvaro.cpy".
  120.  
  121.  
  122.   busca-precio.
  123.      move articulo                  to wart.
  124.      move 99                        to wven.
  125.      perform busca-vpr thru f-busca-vpr.
  126.      move pre-precio     to xprecio.
  127.  
  128.  busca-vpr.
  129.      initialize vprcla pre-precio.
  130.      move wven       to vprven.
  131.      move wart       to vprart.
  132.      start venpre key is not < vprcla invalid go f-busca-vpr.
  133.  
  134.  leo-venpre.
  135.      read venpre next at end go f-busca-vpr.
  136.  
  137.      if vprven  not = wven or
  138.         vprart  not = wart or
  139.         vprfec      > wfec
  140.         go f-busca-vpr.
  141.  
  142.      move vprpre(1)     to pre-precio.
  143.  
  144.      go leo-venpre.
  145.  
  146.  f-busca-vpr.
  147.      exit.

Estoy tratando de cargar el precio y no lleva nada. Ya controlé que el precio venga bien de mis archivos.

El campo PRECIO está definido en la BBDD como "decimal (13,2)"

Para Postgres wimp pic +9(11),99.

Acá ya probé de todo.

Saludos.

Fito...

---------- Post añadido : 15:26 ---------- Post anterior : 13:57 ----------

Hola:

Me respondo solo.

Me parece que estoy para internación,

Si se fijan bien, antes de update, estoy pisando el dato 6. Eso es por copiar y pegar.

Ya mi mente mejorará... o no...

Saludos

Fito...
Fito is offline   Responder Con Cita
  #2
Antiguo 15 de septiembre de 2020, 21:57
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Fito, mira a ver poniéndoles COMP o COMP-4 o COMP-5.



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 is offline   Responder Con Cita
  #3
Antiguo 15 de septiembre de 2020, 23:30
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

@Fito, has probado a poner el punto decimal en vez de la coma en la definición de wimp.

01 wimp pic 9(14).99.

Yo en programas de migración a postgresql lo hago así. (quitando "decimal-point is comma.")
JCantero is offline   Responder Con Cita
  #4
Antiguo 15 de septiembre de 2020, 23:30
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

Holaaaa:

Ya está solucionado, no me traía nada, porque pisaba el dato con otra cosa. Al final lo dejé igual como lo tengo para Postgres

Código COBOL:
  1. 01  wimp         pic +9(14),99.

Así anda perfecto.

Saludos.

Fito...
Fito is offline   Responder Con Cita
  #5
Antiguo 17 de septiembre de 2020, 09:02
Nitzer
Guru de COBOL
Activista del Foro: Activista del Foro - Issue reason: Por Videoconferencia-Webinar Guru de los Gurus: Por solidos y amplios conocimientos - Issue reason: Por aportar conocimientos excepcionales 
Última Actividad 05.08.2026 17:33
Posts Posts: 200
Likes enviados Enviados: 70
Likes recibidos Recibidos: 157

Cuando se trabaja con Ado utilizando UPDATE se pueden pasar los númericos con la representación de Cobol, pero si accedes nativamente a la bbdd hay que hacer lo que dice jcantero.

Esto es lo que hago en esos casos:

Código COBOL:
  1. 01  VALORORIGINAL PIC S9(10)V99.
  2. 01  VALORNUEVO      PIC ----------,--.
  3. 01  VALORAPASAR    PIC X(13).
  4.  
  5. MOVE VALORORIGINAL TO VALORNUEVO
  6. MOVE VALORNUEVO TO VALORAPASAR
  7. INSPECT VALORAPASAR REPLACING ALL ',' BY '.'

Y después hago el insert con ese valor o el update.
Luego hago un INSPECT REPLACING y sustituyo la coma por el punto, siempre que estemos en un sistema decimal como el que se utiliza en España.
Y una vez cambiada paso el valor
Nitzer is offline   Responder Con Cita
Respuesta


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

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:50.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.