0

![]() |
![]() |
Junior |
Hola Amigos estoy migrando un archivo excel a un archivo plano de ahi a powercobol tengo dificultad al leer un archivo secuencial con mas de 50 caracteres la linea de lectura es la siguiente:CODE Código:
000002&09/06/15&TBI&"AYER VOMITO 4 VECES HOY DECAIDOHA TENIDO ERLICHIA"&ENRO+DEXA HEPAT&&&&&5.6&38.6&&
El "&" es el separador de campo.
Pero al leer lo toma de esta maneraCODE Código:
000002&09/06/15&TBI&"AYER VOMITO 4 VECES HOY DECAIDO HA TENIDO ERLICHIA"&ENRO+DEXA HEPAT&&&&&5.6&38.6&&COBOL Código:
Perform varying I from I by 1 until D(I) = "&" OR I > 700 CONTINUE move D(I) to NOM(II) ADD 1 TO II end-perform.
lectura en cobol.
"ojo al crear un tema no aparece el marcador de cobol en el foro."
![]() |
![]() |
Administrador |
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Junior |
Hola y algo asi ...SaludosCOBOL Código:
UNSTRING campo_total_ a_leer DELIMITED BY "&" INTO campo1 campo2 campo3 etc.
![]() |
![]() |
Junior |
COBOL Código:
FD REPORTE LABEL RECORD IS STANDARD. 01 REC-REPOR PIC X(2000).
![]() |
![]() |
Administrador |
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Junior |
Tambien pienso igual pero como puedo encontrar ese comando para borrar de la linea ??
![]() |
![]() |
Administrador |
@Gatomalo, se me ocurre lo siguiente:
En caso de que el número de campos (separados por ) sea siempre el mismo (aunque no contenga nada, la cantidad de dicho carácter siempre es la misma en cada registro), lo que puedes hacer es contarlos para cada registro "lógico".
Por ejemplo, si sabes que siempre debe haber 10 por registro, los vas contando. Si ves que has llegado al final de los datos del registro leído, pero el contador de -s es inferior a 10, lees el registro siguiente con pero sigues tratándolo como si fuera el anterior, es decir continuas el contado y la extracción de datos para el registro de destino actual.
Lo que quiero decir, es que hagas un o varios del fichero de entrada hasta que obtengas el registro de salida "lógico".
En caso de que la cantidad de -s es variable, ahora mismo lo veo un poco chungo de hacer...![]()
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Junior |
Si reviso la cadena y reemplazo el X"0A" o X"0D" o X"0D0A" por blanco
¿Como seria la sintaxis?
![]() |
![]() |
Administrador |
@Gatomalo, no se puede. Es decir, se puede hacer la acción en sí, pero no en este caso. Porque dicho carácter significa "salto de línea" que equivale a "fin registro" para el COBOL.
Salvo que vayas leyendo por bytes, uno por uno, y reemplaces todos los saltos de linea creando así un único registro conteniendo todo el churro...
¿Te han ayudado? NO TE OLVIDES de darle al botón
¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
- Haciendo clic en el icono
al lado de su nick
- Haciendo clic en el botón
en el editor y escribiendo su nick.
![]() |
![]() |
Junior |
Logre solucionar como este archivo venia del excel hice un reemplazo alt-010 por espacio del tabulador y quito todos los saltos de linea.
Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)
Marcadores