Ver Mensaje Individual
  #1
Antiguo 11 de agosto de 2019, 23:44
Dasije
Forero Senior
Última Actividad 06.03.2022 17:04
Posts Posts: 173
Likes enviados Enviados: 1
Likes recibidos Recibidos: 79
Predeterminado Convertir DECIMAL a NUMERO para COBOL
0 Inactivo Inactivo

Hola buenas.

Comparto el código para convertir un campo decimal/currency a campos numéricos legible para COBOL de IBM, muy útil para importación de archivos generados desde Windev.

Código WinDev:
  1. PROCEDURE PUBLIC  convertir_DECIMAL_PIC_COBOL(IMPORTE is numeric(15,2), NUMERO_ENTEROS is int, SIGNO is boolean)
  2.  
  3. IMPORTE_FINAL is numeric(15,2)
  4.  
  5. CARACTER_SIGNO is fixed string on 1 = ""
  6.  
  7. RESULTADO is UNICODE string = ""
  8.  
  9. SWITCH IMPORTE
  10.     CASE < 0
  11.         IMPORTE_FINAL = IMPORTE * (-1)
  12.         CARACTER_SIGNO = "N"
  13.     OTHER CASE
  14.         IMPORTE_FINAL = IMPORTE
  15.         CARACTER_SIGNO = "0"
  16. END
  17.  
  18. SWITCH SIGNO
  19.     CASE True
  20.         NUMERO_ENTEROS-=1
  21.         RESULTADO = CARACTER_SIGNO+NumToString((IMPORTE_FINAL * 100),"0"+NUMERO_ENTEROS+".0F")     
  22.     CASE False
  23.         RESULTADO = NumToString((IMPORTE_FINAL * 100),"0"+NUMERO_ENTEROS+".0F")
  24. END
  25.  
  26. RESULT RESULTADO

Sí el número fuera -4.85 donde tiene 15 enteros y 2 decimales, el resultado sería así : N00000000000485

Saludos y espero que os sirvan para aquellos que trabajen desde la plataforma de IBM.



Empresa de desarrollo de aplicaciones en COBOL.

DASIJE INFORMATICA, S.L.
C/ TOMAS BRETON 20
11406 JEREZ DE LA FRONTERA
CADIZ

Teléfono : 956 11 21 11
Web: http://www.dasije.es / DASIJE INFORMATICA
E-m@il: clientes(@)dasije.es
Dasije is offline   Responder Con Cita