Autor Tema: problema write  (Leído 11702 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado javi.mart

  • Novato
  • *
  • Mensajes: 5
    • Ver Perfil
problema write
« en: 21 de Febrero de 2009, 01:56:00 pm »
Buenas,

tengo el siguiente problema que no se como solventar, a ver si alguien me puede ayudar.

Quiero construir un archivo de texto en formato txt, para ello uso la funcion WS_DOWNLOAD que recibe una tabla interna con la que te construye el txt.

Yo utilizo 2 tablas internas iguales con la unica diferencia que un campo es int y en la otra es char, puesto que tengo que hacer collects y una vez echo los collects lo vuelco en la otra.

ejem:

BEGIN OF t1 OCCURS 0,
      .......................
        c1 type i,
        c2(6) type c,
 END OF t1.

BEGIN OF t2 OCCURS 0,
      .......................
        c1(5) type C,
        c2(6) type c,
 END OF t1.

Una vez hago los collects en t1 igualo los campos con t2:

........
t2.c1 = t1.c1.

como el siguiente campo de la tabla es un int y ademas en las especificaciones del programa se pide que su contenido aparezca
alineado a la derecha y tenga 5 posiciones utilizo un write para pasarlo a t2 que es un char de 5:

write t1.c2 to t2.c2 RIGHT-JUSTIFIED ("no me acuerdo si iba así porque no tengo delante el codigo pero para que os hagais una idea").

EL caso es que cuando saca el archivo a txt, como el campo c1 de la tabla t2  es un char de 5 me lo tendría que poner en la 5 posición ya que lo he pedido alineado a la derecha.
suponiendo que el campo c1 de t2 valiera 15 me lo deberia de sacar así:

1 2 3 4 5 -> posiciones
         1 5 -> contenido

el caso es que me lo saca asi:

1 2 3 4 5 -> posiciones
      1 5     -> contenido

con lo cual el archivo me sale mal formateado ya que entre el campo c1 y el campo c2 me deja el espacio en blanco.

alguien sabe como solucionar el problema??, ya que el archivo txt debe tener para cada campo en una posicion determinada ya que luego se usa  en otro programa para leerlo y debe de sacar los valores de unas posiciones determinadas

Pudiera ser que el problema estuviera en el write??
hay otra forma de hacerlo??

Muchas gracias!

saludos

Desconectado bisonye

  • Novato
  • *
  • Mensajes: 11
    • Ver Perfil
Re: problema write
« Respuesta #1 en: 24 de Febrero de 2009, 10:42:39 am »
Creo que cuando estás haciendo la descarga se está poniendo algún tipo de separador. Utiliza la GUI_download y pon el campo FIELD_SEPARATOR = ''.

Saludos

Desconectado cubanito

  • Novato
  • *
  • Mensajes: 4
    • Ver Perfil
Re: problema write
« Respuesta #2 en: 16 de Marzo de 2009, 10:52:21 pm »
Tambien pudes aplicarle un CONDENSE a tu campo char.
Sería algo así: CONDENSE t2-c1 NO-GAPS.

Saludos!!! 

Desconectado cryman

  • Novato
  • *
  • Mensajes: 1
    • Ver Perfil
Re: problema write
« Respuesta #3 en: 30 de Abril de 2010, 09:55:11 pm »
La solución sería aplicar la sentencia NO-SIGN de la siguiente manera:

WRITE t1-c1 TO t2-c1 RIGHT-JUSTIFIED NO-SIGN.

ya que por default (aunque no se vea) las variables del tipo int incluyen el signo positivo en su último caracter y por lo tanto la sentencia write lo incluye
(cuando es positivo el signo no se muestra porque se entiende que es positivo).

Para probarlo puede hacer el mismo write con números negativos y sin poner la sentencia "NO-SIGN" te aparecerá lo siguiente como resultado:

1 2 3 4 5    => posiciones
      1 5 -    => contenido

Espero que te sirva.
Saludos.   ;)