Iniciar Sesión

Ver la Versión Completa : [Duda] Configuración Regional númerica


Roger
26 de julio de 2016, 01:44
Necesito de alguna forma mediante el programa powecobol o algun activex detectar la configuración regional instalada en la maquina y si es posible cambiar al de mi pais, por defecto si es español viene 999.999,99 y mis programas estan echos para usar 999,999.99.

Hrmcobol
26 de julio de 2016, 02:05
Hola Roger, yo uso esto para cambiar de punto y coma --> coma a punto

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 caracter pic x(255).
01 buffer pic s9(9) comp-5.
01 retcode pic s9(9) comp-5.
01 errval pic 9.
PROCEDURE DIVISION.


MOVE "." TO JRH-SGLI-MIL
MOVE "," TO JRH-SGLI-DEC
MOVE 0 TO retcode errval

*> Setear separador de decimales (numeros)
move spaces to caracter
move JRH-SGLI-DEC to caracter(1:1)
move X"00" to caracter(2:1)
CALL "SetLocaleInfoA" with stdcall linkage
using by value 1024
by value 14
by reference caracter
RETURNING RETCODE
end-call
if retcode > 0
add 1 to errval
end-if



*> Setear separador de miles (numeros)
move spaces to caracter
move JRH-SGLI-MIL to caracter(1:1)
move X"00" to caracter(2:1)
CALL "SetLocaleInfoA" with stdcall linkage
using by value 1024
by value 15
by reference caracter
RETURNING RETCODE
end-call
if retcode > 0
add 1 to errval
end-if

INVOKE pow-self "Deactivate"

y el codigo siguiente lo da vuelta

ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 caracter pic x(255).
01 buffer pic s9(9) comp-5.
01 retcode pic s9(9) comp-5.
01 errval pic 9.
PROCEDURE DIVISION.


MOVE "," TO JRH-SGLI-MIL
MOVE "." TO JRH-SGLI-DEC
MOVE 0 TO retcode errval

*> Setear separador de decimales (numeros)
move spaces to caracter
move JRH-SGLI-DEC to caracter(1:1)
move X"00" to caracter(2:1)
CALL "SetLocaleInfoA" with stdcall linkage
using by value 1024
by value 14
by reference caracter
RETURNING RETCODE
end-call
if retcode > 0
add 1 to errval
end-if



*> Setear separador de miles (numeros)
move spaces to caracter
move JRH-SGLI-MIL to caracter(1:1)
move X"00" to caracter(2:1)
CALL "SetLocaleInfoA" with stdcall linkage
using by value 1024
by value 15
by reference caracter
RETURNING RETCODE
end-call
if retcode > 0
add 1 to errval
end-if

INVOKE pow-self "Deactivate"




Tenes qie incluir "KERNEL32.LIB"

Espero te sirva,
Saludos

Roger
26 de julio de 2016, 02:58
Hrmcobol me da el siguiente ERROR
error LNK2001:unresolved external symbol_SETLOCALEINFOA@12
fatal error LNK1120: 1 unresolved externals

Estas variables JRH-SGLI-MIL JRH-SGLI-DEC donde se registran en la working
o son globales?

Hrmcobol
26 de julio de 2016, 11:26
Perdon, me olvide la Working

01 JRH-SGLI-PARMS global external.
02 JRH-SGLI-DEC PIC X.
02 JRH-SGLI-MIL PIC X.
02 JRH-SGLI-SHOW PIC X. *> N:Numero M:Moneda
02 JRH-SGLI-RET PIC X.

Kuk
26 de julio de 2016, 17:40
Roger, tienes que añadir la opción de compilación ALPHAL(WORD) a las propiedades del código y recompilar todo.