Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Sintaxis] Valores numericos y editados (https://www.cobolforo.es/showthread.php?t=77)

Breew 30 de marzo de 2015 15:33

Hola .

Vaya Fallo, No doy una con los numericos.
Comienzo a entender el tema de las variables numericas.

De todas maneras, me estoy calentando la cabeza y no consigo hacerlo funcionar bien.

Si quisiera hacer que dos numeros tecleados en pantalla con formato numerico de edicion me de el resultado en un tercer campo tambien visualizados como edicion, no me sale ni a tiros.

En el Form he creado 2 CmText donde introduzo el formato ZZZ9,99 y el resultado seria un tercer CmText tambien con ZZZ9,99

la procedure seria la siguiente
Código COBOL:
  1.  ENVIRONMENT     DIVISION.
  2.  DATA            DIVISION.
  3.  WORKING-STORAGE SECTION.
  4.  01 campo1          pic 9999v99.
  5.  01 campo2          pic 9999v99.
  6.  
  7.  
  8.  PROCEDURE       DIVISION.
  9.       move "text" of cmtext1 to campo1.
  10.       move "text" of cmtext2 to campo2.
  11.       Add campo1  to Campo2.
  12.       Move campo2 to "text" of cmtext3.

He hecho varias pruebas con decimal point is comma y no consigo saber si en los CmText debo tambien marcarlo o que es lo que debo de hacer.

Gracias de antemano por el incordio que os estoy dando.

Kuk 30 de marzo de 2015 16:28

Breew, "Text" no vale para calculos. Debes usar siempre POW-NUMERIC. Ya es el propio control el que se encarga de darle formato que has establecido. Haz lo siguiente:

Código COBOL:
  1. *******************************
  2.      ENVIRONMENT     DIVISION.
  3.      DATA            DIVISION.
  4.      WORKING-STORAGE SECTION.
  5.      01 campo1          pic 9999v99.
  6.      01 campo2          pic 9999v99.
  7.      
  8.      PROCEDURE       DIVISION.
  9.           move POW-NUMERIC of cmtext1 to campo1.
  10.           move POW-NUMERIC of cmtext2 to campo2.
  11.           Add campo1  to Campo2.
  12.           Move campo2 to POW-NUMERIC of cmtext3.

O incluso puedes hacer esto:

Código COBOL:
  1. ADD POW-NUMERIC OF CmText1 TO POW-NUMERIC OF CmText2
  2.     GIVING POW-NUMERIC OF CmText3

O tambien con COMPUTE:

Código COBOL:
  1. COMPUTE POW-NUMERIC OF CmText3 =
  2.     POW-NUMERIC OF CmText1 + POW-NUMERIC OF CmText2    

Breew 30 de marzo de 2015 21:30

Muchas gracias a todos.

Bueno, ya voy perfilando el tema, desconocia totalmente el artibuto de pow-numeric.

Como decia, lo voy perfilando, pero aun me queda un gran problema, la coma decimal.

No acaba de funcionar, he definido en el form decimal point is comma.

Tambien en el render text y he configurado ZZZ9,99 pero cuando tecleo el numero no me funciona el punto decimal , en cambio la coma si.

¿ Como podria hacer funcionar el punto decimal del teclado numerico ?

Perdonad el machaque.

Kuk 30 de marzo de 2015 23:17

Breew, en el evento "KeyPress" del/de los CmText que quieras hacer eso le pones el siguiente codigo:

Código COBOL:
  1. IF  POW-ARG-KEYASCII = 46 *> punto
  2.     MOVE 44 TO POW-ARG-KEYASCII *> coma
  3. END-IF

Asi cuando teclees punto decimal, te saldra coma.

Breew 30 de marzo de 2015 23:51

Hola.


Todo funciona por fin !!!! :apl:
Casi he dado una voltereta de alegria. Muchisimas gracias.
Por cierto, ya para rizar el rizo, me haria falta alinear a la derecha el contenido de los cmtext .
Algun consejo ??? :)

Saludos Cordiales

Josber 31 de marzo de 2015 08:51

Cita:

Citación del post de Breew (Mensaje 293)
Por cierto, ya para rizar el rizo, me haria falta alinear a la derecha el contenido de los cmtext .
Algun consejo ??? . 0:-)

En las propiedades, pestaña Single Line, marcas Editable Label y un poco más abajo En Alignment lo tienes.

Un saludo.-

Kuk 31 de marzo de 2015 09:56

A mi no me gusta mucho Editable Label, porque no toma apariencia "moderna".
Yo lo que hago es fijar fuente Courier New, con esto queda en posiciones fijas. Luego si alguno es mas largo por diseño del Form, le meto unas B-s y listo. Por ejemeplo:
  • ZZZZ9,99
  • BBZZ9,99

Josber 31 de marzo de 2015 15:46

A mi tampoco me gusta el Editable Label Kuk, de vez en cuando, hace "cosas raras", pero algunas veces, por narices hay que usarlo.

Un saludo.-

Kuk 31 de marzo de 2015 16:33

Josber, prueba el metodo de ajustar con B-s (poniendo fuente Courier New). Los nuemros normalmente no deben ser ajustados en el centro, sino en la derecha. Y para otra cosa que no sea el ajuste realmente no sirve para nada el Editable ese, que ademas como decias, efectivamente falla bastante.

Si tienes varios CmText uno debajo del otro, y alguno es mas largo que los otros, a esos otros les pones tantas B-s por delante cuantas Z-s demas tenga el mas largo.

Código:

BBBZZZ9,99.
BBBZZZ9,99.
BBZZZZ9,99.
ZZZZZZ9,99.

Asi queda todo bien ajustado en la derecha! ;)


La franja horaria es GMT +2. Ahora son las 01:27.

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