PDA

Ver la Versión Completa : [Sintaxis] Campo numerico como texto en Excell Conection


Breew
3 de mayo de 2015, 19:34
Hola amigos , de vuelta con los campos de edicion.

Os explico, intento leer datos de una hoja de excell y modificar algun campo.
El caso es que lo intento hacer como en el ejemplo del power.
Leo el campo en la hoja de texto y lo muevo hacia una tabla.

01 setdata pic x(50).
PROCEDURE DIVISION.
MOVE "Text" OF "TableCells"(ROW-NUM 5) OF CmTable1 TO SET-DATA.
MOVE SET-DATA TO "Text"(ROW-NUM 5) OF CmExcel1.

Si introduzco un numero entero, lo graba con formato numerico y calcula correctamente. En cambio si introduzco un numero decimal con coma, la hoja lo interpreta como texto y no calcula.
Si lo introduzco con punto decimal, lo graba como numero y funciona.
En cambio cuando vuelvo a importar el dato al programa y lo salvo sin modificar, en la hoja aparece como texto y no lo calcula.

He probado dejarlo en un pow-numeric antes de pasarlo a la hoja de excell , pero se comporta de la misma manera.

Alguna sugerencia ?

Saludos .

Kuk
4 de mayo de 2015, 09:19
Breew, prueba con float, es decir:


01 WS-NUMERO COMP-1.
PROCEDURE DIVISION.

MOVE "Text" OF "TableCells"(ROW-NUM 5) OF CmTable1 TO WS-NUMERO.
MOVE WS-NUMERO TO "Text"(ROW-NUM 5) OF CmExcel1.


No he usado nunca este control, pero comprueba tambien si tiene propiedad "Numeric":


MOVE "Numeric" OF "TableCells"(ROW-NUM 5) OF CmTable1 TO SET-DATA.
MOVE SET-DATA TO "Numeric"(ROW-NUM 5) OF CmExcel1.


Pero si la tiene, sono haz MOVE de/a variables WORKING numericas.

Josber
4 de mayo de 2015, 14:15
Y sobre todo, asegúrate que en ese control, o en todo el proyecto, tienes definido

SPECIAL-NAMES.
DECIMAL-POINT IS COMMA.

Un saludo.-

Breew
4 de mayo de 2015, 16:03
Hola.

Estupendo, he probado con float y funciona perfecto, aunque no entiendo el motivo ;-).

Tambien he hecho pruebas con la propiedad numeric y tambien funciona, eso si , como dices de numeric a numeric, ya que si no mete ceros en todos los campos . :silba:

Deberia investigar las propiedades de cada comando, pero no se por donde comenzar. Muchas gracias por vuestra ayuda.


Saludos .:beber:

Josber
4 de mayo de 2015, 16:54
A ver Brew, POW-NUMERIC y POW-TEXT, existen sobre todo por retrocompatibilidad con versiones anteriores, en las versiones nuevas, pusieron el "Text" para facilitar el movimiento de variables, pero más de una vez, cuando mueves una variable numérica con MOVE "Text" OF ..., te mueve también basura. Si quieres que lo que se mueva sea de verdad números y no tener problemas, hazlo con MOVE POW-NUMERIC OF ..., también está su versión para texto que es POW-TEXT, con un máximo de X(256), POW-MULTITEXT que es X(4092) y POW-MULTITEXT8 que es X(8192)

Y la mejor manera de saber que hace cada propiedad es probando y, ante la duda, consultar por aquí

Un saludo.-

Breew
4 de mayo de 2015, 21:14
Hola Josber.

Tomo nota de estas propiedades, que poco a poco me vais descubriendo. Hace poco que Roger me aconsejo el Power (la verdad es que estoy encantado), anteriormente cuando hacia alguna cosa lo hacia con Rmcobol y el cambio es bastante brusco.

Gracias a vosotros voy prosperando , pero por desgracia, cada avance es un mar de incognitas.
Paciencia conmigo.

Saludos .

Kuk
4 de mayo de 2015, 21:59
Breew, no te preocupes. Parece dificil al principio pero cuanto mas aprendas mas facil sera y realmente es un entorno muy comodo.

En cuanto a tu pregunta del por que sobre el campo de tipo Float: los campos propios de COBOL no son "nativos" Win32, sino arrays de Char. Entre ellos los campos decimales (incluso los empaquetados COMP-3). Los tipos "nativos" serian, nombres dependiendo del lenguaje:


Short = SmallInt : 2 bytes = S9(4) COMP-5
Int = Integer = LongInt : 4 bytes = S9(9) COMP-5
Long Long : 8 bytes = S9(18) COMP-5
Float (Floating point single precision) : 4 bytes = COMP-1
Double (Floating point double precision) : 8 bytes = COMP-2


Hay byte tambien pero no nos interesa. PowerCOBOL tiene equivalentes a esos campos estandar Win32, y siempre que tratemos controles Win32, hay que usar campos estandar.

Josber
5 de mayo de 2015, 08:43
Hace poco que Roger me aconsejo el Power (la verdad es que estoy encantado), anteriormente cuando hacia alguna cosa lo hacia con Rmcobol y el cambio es bastante brusco.

Todos hemos pasado por ahí Brew, creo que la mayoría hemos aprendido con el manual que hay por internet y que se llamaba algo así como Un proyecto con Fujitsu Power Cobol, preguntando y la más común de prueba/fallo. Por suerte el PWC es el que más se parece al COBOL ANSI y al RM/Cobol.

Que tiempos aquellos en los que programaba con RM, hacías lo que querías con el programa y, lo más importante, el programa hacía lo que querías, no serían tan bonitos como los de ahora, pero eran robustos como ellos solos ... :llora: :llora:

Ya sabes, mientras podamos, estamos aquí para lo que necesites

Un saludo.-