PDA

Ver la Versión Completa : [Noticia] Traslado Caracteres de Excel a powercobol


Gatomalo
4 de marzo de 2016, 00:02
Amigos del foro, estos pasando información de EXCEL a Powercobol mediante un archivo plano que lo leo en forma secuencial pero algunos caracteres que estan escritos en excel no pasan en forma correcta "ñ" sale otro caracter los que estan acentuados de igual forma asi tambien otras letras & ....
Como puedo hacer para mantener la informacion original y no cambie pense usar
INSPECT NOMBRE CONVERTING "Ñ" TO "N".
pero son muchos caracteres.:llora:

Kuk
4 de marzo de 2016, 09:06
Gatomalo, te sale un caracter raro o dos? El problema es de la codificación del fichero Excel, me parece... Por ejemplo, en el rpgorama es ASCII (ISO-8859-1) y el fichero Excel es UTF8.

Gatomalo
4 de marzo de 2016, 16:12
Asi es en algunos casos se cambia una letra por otra "LULú" x "LULé" , en otras
un caracter por 2caracteres "&" x " ►".
que puedo hacer alguna forma para unificar

Kuk
4 de marzo de 2016, 16:47
Gatomalo, en Fujitsu hay funciones como UTF8-OF y UCS2-OF (creo) pero ninguna que haga lo contrario. Con lo cual, lo que yo haría es un bucle recorriendo la cadena y sustituyendo los caracteres raros por los buenos. Eso si, no te fíes de lo que ves en un editor de texto, tienes que mirar el valor en hexadecimal y evaluar en hexadecimal también:

WORKING-STORAGE SECTION.
01 WS-TEXTO PIC X(100).
01 IDX-1 PIC 9(9) COMP-5.

PROCEDURE DIVISION.

...
MOVE 1 TO IDX-1

PERFORM UNTIL IDX-1 > 98
EVALUATE WS-TEXTO(IDX-1:2)

WHEN X"EFBB" *> á
MOVE WS-TEXTO(IDX-1 + 2:) TO WS-TEXTO WS-TEXTO(IDX-1 + 1:)
MOVE "á" TO WS-TEXTO(IDX-1:1)

WHEN X"BFC3" *> é
MOVE WS-TEXTO(IDX-1 + 2:) TO WS-TEXTO WS-TEXTO(IDX-1 + 1:)
MOVE "é" TO WS-TEXTO(IDX-1:1)

...etc

ADD 1 TO IDX-1
END-PERFORM

Gatomalo
4 de marzo de 2016, 17:22
Me tenia hacer este bucle son tantos los caracteres y como son varias hojas de excel a exportar no se que con que caracter me topare, pero ni modo.
:carta:

Kuk
4 de marzo de 2016, 18:49
Gatomalo, sólo son los caracteres especiales, normalmente, los que dan guerra. Los acentuados, la Ñ y poco más...