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
Comunicados
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Campos tipo BLOB mysql atncasiello PowerCOBOL (ActiveX, v4 - v11) 2 8 de diciembre de 2018 13:25
[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 MySQL 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
 
Herramientas

  #1
Antiguo 15 de septiembre de 2020, 20:26
IDENTIFICATION DIVISION
Fito
Guardián del Foro
Guardián del Foro: Guardián del espíritu y clima del Foro - Razón: Por el Avatar  Activista del Foro: Activista del Foro - Razón: Por aportar ideas 
ENVIRONMENT DIVISION
Avatar de Fito
DATA DIVISION
Forero desde (Registrado)febrero 2015
Argentina
Ubicación Córdoba, Villa María
Edad49 años
Última Actividad30.11.2020 20:24
PROCEDURE DIVISION
PostsPosts: 246
Ha dicho GraciasEnviado: 122
Ha recibido agradecimientosRecibido: 107
Mejores respuestasSoluiones: 13
ReputaciónReputación: 16
Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road
Predeterminado Campos numericos en SQL Server

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 no ha iniciado sesión   Responder Con Cita
Mejores respuestas Soluciones: 2
  #2
Antiguo 15 de septiembre de 2020, 21:57
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
Ubicación Madrid
Edad35 años
Última Actividad30.11.2020 22:20
PROCEDURE DIVISION
PostsPosts: 1.659
Ha dicho GraciasEnviado: 471
Ha recibido agradecimientosRecibido: 662
Mejores respuestasSoluiones: 91
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

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


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
  #3
Antiguo 15 de septiembre de 2020, 23:30
IDENTIFICATION DIVISION
JCantero
Novato Senior
ENVIRONMENT DIVISION
Avatar de JCantero
DATA DIVISION
Forero desde (Registrado)junio 2016
España
Ubicación Albacete
Edad54 años
Última Actividad30.11.2020 19:39
PROCEDURE DIVISION
PostsPosts: 150
Ha dicho GraciasEnviado: 38
Ha recibido agradecimientosRecibido: 97
Mejores respuestasSoluiones: 7
ReputaciónReputación: 14
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

@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 no ha iniciado sesión   Responder Con Cita
  #4
Antiguo 15 de septiembre de 2020, 23:30
IDENTIFICATION DIVISION
Fito
Guardián del Foro
Guardián del Foro: Guardián del espíritu y clima del Foro - Razón: Por el Avatar  Activista del Foro: Activista del Foro - Razón: Por aportar ideas 
ENVIRONMENT DIVISION
Avatar de Fito
DATA DIVISION
Forero desde (Registrado)febrero 2015
Argentina
Ubicación Córdoba, Villa María
Edad49 años
Última Actividad30.11.2020 20:24
PROCEDURE DIVISION
PostsPosts: 246
Ha dicho GraciasEnviado: 122
Ha recibido agradecimientosRecibido: 107
Mejores respuestasSoluiones: 13
ReputaciónReputación: 16
Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road
Predeterminado
1 usuarios han marcado este post como "Solución"

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 no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Kuk (16 de septiembre de 2020)
  #5
Antiguo 17 de septiembre de 2020, 09:02
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
Forero desde (Registrado)noviembre 2015
España
Ubicación Almeria
Edad55 años
Última Actividad30.11.2020 19:45
PROCEDURE DIVISION
PostsPosts: 118
Ha dicho GraciasEnviado: 46
Ha recibido agradecimientosRecibido: 80
Mejores respuestasSoluiones: 5
ReputaciónReputación: 14
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
1 usuarios han marcado este post como "Solución"

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 no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
Kuk (17 de septiembre de 2020)
Respuesta


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