Gracias Rui Pinto (Rapinto)
COBOL Foro
Foro dedicado a COBOL, a la Programación y a la Informática.
Retroceder   COBOL Foro > IDE-s y compiladores COBOL > Fujitsu COBOL
Fujitsu COBOL Sub-Foro dedicado a Compiladores e IDE-s de Fujitsu.
Noticias y Avisos
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Campos tipo BLOB mysql atncasiello PowerCOBOL (ActiveX) 2 8 de diciembre de 2018 13:25
[Aporte] OCX varios de Rapinto Roger Controles y Componentes (DLL/OCX) 3 12 de abril de 2018 21:21
[Compilador] Ejecución en varios PC-s desde la red Kemorenox RM/COBOL 4 9 de junio de 2017 10:23
[Sintaxis] Duda sobre STRING e INSPECT Anthony AcuCobol 2 9 de abril de 2015 20:18
[Sintaxis] Controles de varios formularios Begoguay PowerCOBOL (ActiveX) 1 18 de marzo de 2015 17:17
Respuesta
 
Herramientas

  #1
Antiguo 16 de enero de 2019, 22:52
IDENTIFICATION DIVISION
jmeza
Novato Junior
ENVIRONMENT DIVISION
Avatar de jmeza
DATA DIVISION
Forero desde (Registrado)abril 2017
Chile
UbicaciónCurico Chile
Última Actividad18.01.2019 15:44
PROCEDURE DIVISION
PostsPosts: 64
Ha dicho GraciasEnviado: 9
Ha recibido agradecimientosRecibido: 2
ReputaciónReputación: 2
jmeza is an unknown quantity at this point
Predeterminado STRING de varios campos separados por 1 espacio

Hola, podrían ayudar con lo siguiente:
Tengo un registro donde guardo los nombres de trabajadores y están separado por
Nombres Pic x(25)
Paterno Pic x(15)
Materno Pic x(15)
Como puedo hacer para imprimir que solo imprima los caracteres con información y no los espacios en blanco, que solo muestre un espacio en blanco entre cada campo.
Ejemplo actual me imprime asi, Meza Moya Juan Martin
Lo correcto seria, Meza Moya Juan Martin


Si me pueden ayudar con esto
Saludos[COLOR="Silver"]

Ejemplo actual me imprime asi,
Código:
 Meza          Moya           Juan Martin
Lo correcto seria,
Código:
Meza Moya Juan Martin
jmeza no ha iniciado sesión   Responder Con Cita
  #2
Antiguo 17 de enero de 2019, 16:49
IDENTIFICATION DIVISION
Roger
Forero
ENVIRONMENT DIVISION
Avatar de Roger
DATA DIVISION
Forero desde (Registrado)febrero 2015
Perú
UbicaciónLima
Última Actividad31.01.2019 16:53
PROCEDURE DIVISION
PostsPosts: 220
Ha dicho GraciasEnviado: 18
Ha recibido agradecimientosRecibido: 59
ReputaciónReputación: 9
Roger is on a distinguished road Roger is on a distinguished road Roger is on a distinguished road Roger is on a distinguished road Roger is on a distinguished road
Predeterminado

Código COBOL:
  1. WORKING STORAGE.
  2. 01 Nombres Pic x(25).
  3. 01 Paterno Pic x(15).
  4. 01 Materno Pic x(15).
  5. 01 NOMBRE PIC X(50).
  6. PROCEDURE DIVISION.
  7.      MOVE SPACES TO NOMBRE.
  8.      STRING NOMBRES DELIMITED BY "  "
  9.                  " " DELIMITED BY SPACE
  10.                  PATERNO DELIMITED BY "  "
  11.                  " " DELIMITED BY SPACE
  12.                  MATERNO DELIMITED BY "  "
  13.                  INTO NOMBRE
  14.        END-STRING.
  15.  
  16.        MOVE NOMBRE TO IMPRESION.

OJO SOLO EN LOS NOMBRES APELLIDOS DELIMTED BY " " PON DOS O TRES ESPACIOS PARA LOS NOMBRES COMPUESTOS O APELLIDOS EJEMPLO "DEL CARPIO" " DE LAS CASAS".
Roger no ha iniciado sesión   Responder Con Cita
  #3
Antiguo 17 de enero de 2019, 19:31
IDENTIFICATION DIVISION
JCantero
Novato Junior
ENVIRONMENT DIVISION
Avatar de JCantero
DATA DIVISION
Forero desde (Registrado)junio 2016
España
UbicaciónAlbacete
Edad52 años
Última Actividad18.02.2019 18:24
PROCEDURE DIVISION
PostsPosts: 37
Ha dicho GraciasEnviado: 7
Ha recibido agradecimientosRecibido: 22
ReputaciónReputación: 0
JCantero is on a distinguished road JCantero is on a distinguished road JCantero is on a distinguished road
Predeterminado

Si quieres tener en cuenta los nombre y apellidos compuestos tienes que analizar cada cada campo y montar despues como indica Roger.

Código COBOL:
  1. WORKING STORAGE.
  2. 01 Nombres Pic x(25).
  3. 01 Paterno Pic x(15).
  4. 01 Materno Pic x(15).
  5. 01 NOMBRE PIC X(60).
  6. 01 ipaterno pic 99.
  7. 01 imaterno pic 99.
  8. 01 inombres pic 99.
  9.  
  10. PROCEDURE DIVISION.
  11.      perform varying inombres from 1 by 1 until inombres = 25 or nombres(inombres:) = '  '
  12.          continue
  13.      end-perform
  14.      perform varying ipaterno from 1 by 1 until ipaterno = 15 or paterno(ipaterno:) = '  '
  15.          continue
  16.      end-perform
  17.      perform varying imaterno from 1 by 1 until imaterno = 15 or materno(imaterno:) = '  '
  18.          continue
  19.      end-perform
  20.  
  21.  ****** montar dependiendo del tamaño de cada uno.
  22. ****** pero tienes que ver si el campo esta en blanco o totalmente ocupado.
  23. ****** ¡¡ un lio ¡¡

Creo que lo mejor es ir montandolo sobre la marcha y evitar un monton de condiciones.
Quedaria asi:

Código COBOL:
  1. WORKING STORAGE.
  2. 01 Nombres Pic x(25).
  3. 01 Paterno Pic x(15).
  4. 01 Materno Pic x(15).
  5. 01 NOMBRE PIC X(60).
  6. 01 indice pic 99.
  7. 01 indicex pic 99.
  8.  
  9. PROCEDURE DIVISION.
  10.      move 1 to indice
  11.      initialize nombre
  12.      perform varying indicex from 1 by 1 until indicex > 15 or paterno(indicex:) = '  '
  13.          move paterno(indicex:1) to nombre(indice:1)
  14.          add 1 to indice
  15.      end-perform
  16.      add 1 to indice
  17.      perform varying indicex from 1 by 1 until indicex > 15 or materno(indicex:) = '  '
  18.          move materno(indicex:1) to nombre(indice:1)
  19.          add 1 to indice
  20.      end-perform
  21.      add 1 to indice
  22.      perform varying indicex from 1 by 1 until indicex > 25 or nombres(indicex:) = '  '
  23.          move nombres(indicex:1) to nombre(indice:1)
  24.          add 1 to indice
  25.      end-perform.
  26.  
  27. ***** en nombre lo tienes perfectamente montado.    


---------- Post añadido : 19:31 ---------- Post anterior : 19:21 ----------

Si quieres dejarlo asi (con una coma antes del nombre): Meza Moya, Juan Martin


Código COBOL:
  1. WORKING STORAGE.
  2. 01 Nombres Pic x(25).
  3. 01 Paterno Pic x(15).
  4. 01 Materno Pic x(15).
  5. 01 NOMBRE PIC X(60).
  6. 01 indice pic 99.
  7. 01 indicex pic 99.
  8.  
  9. PROCEDURE DIVISION.
  10.      move 1 to indice
  11.      initialize nombre
  12.      perform varying indicex from 1 by 1 until indicex > 15 or paterno(indicex:) = '  '
  13.          move paterno(indicex:1) to nombre(indice:1)
  14.          add 1 to indice
  15.      end-perform
  16.      add 1 to indice
  17.      perform varying indicex from 1 by 1 until indicex > 15 or materno(indicex:) = '  '
  18.          move materno(indicex:1) to nombre(indice:1)
  19.          add 1 to indice
  20.      end-perform
  21.      move ',' to nombre(indice:1)
  22.      add 2 to indice
  23.      perform varying indicex from 1 by 1 until indicex > 25 or nombres(indicex:) = '  '
  24.          move nombres(indicex:1) to nombre(indice:1)
  25.          add 1 to indice
  26.      end-perform.
  27.  
  28. ***** en nombre lo tienes perfectamente montado.    
JCantero no ha iniciado sesión   Responder Con Cita
  #4
Antiguo 18 de enero de 2019, 15:27
IDENTIFICATION DIVISION
jmeza
Novato Junior
ENVIRONMENT DIVISION
Avatar de jmeza
DATA DIVISION
Forero desde (Registrado)abril 2017
Chile
UbicaciónCurico Chile
Última Actividad18.01.2019 15:44
PROCEDURE DIVISION
PostsPosts: 64
Ha dicho GraciasEnviado: 9
Ha recibido agradecimientosRecibido: 2
ReputaciónReputación: 2
jmeza is an unknown quantity at this point
Predeterminado

Agradecido por su ayuda

Saludos
jmeza no ha iniciado sesión   Responder Con Cita
  #5
Antiguo 22 de enero de 2019, 01:39
IDENTIFICATION DIVISION
Fito
Novato Senior
ENVIRONMENT DIVISION
Avatar de Fito
DATA DIVISION
Forero desde (Registrado)febrero 2015
Argentina
UbicaciónCórdoba, Villa María
Edad47 años
Última Actividad18.02.2019 15:56
PROCEDURE DIVISION
PostsPosts: 170
Ha dicho GraciasEnviado: 66
Ha recibido agradecimientosRecibido: 50
ReputaciónReputación: 9
Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road
Predeterminado

Hola:

Otra opción:

Código COBOL:
  1. WORKING STORAGE.
  2. 01 Nombres Pic x(25).
  3. 01 Paterno Pic x(15).
  4. 01 Materno Pic x(15).
  5. 01 NOMBRE  PIC X(60).
  6. 01 l-nom      pic 9(5).
  7. 01 l-pat      pic 9(5).
  8. 01 l-mat      pic 9(5).
  9.  
  10. PROCEDURE DIVISION.
  11.  
  12. compute l-nom = function stored-chat-length(nombres).
  13. compute l-pat = function stored-chat-length(paterno).
  14. compute l-mat = function stored-chat-length(materno).
  15.  
  16. move spaces        to nombre.
  17. string nombres(1:l-nom)     delimited by size
  18.          " "                delimited by size
  19.          paterno(1:l-pat)   delimited by size
  20.          " "                delimited by size
  21.          materno(1:l-mat)   delimited by size
  22.     into nombre
  23. end-string.

Saludos.

Fito...
Fito no ha iniciado sesión   Responder Con Cita
Ha dicho Gracias : 1
JCantero (25 de enero de 2019)
  #6
Antiguo 22 de enero de 2019, 21:09
IDENTIFICATION DIVISION
Kuk
Administrador
ENVIRONMENT DIVISION
Avatar de Kuk
DATA DIVISION
Forero desde (Registrado)enero 2015
España
UbicaciónMadrid
Edad34 años
Última Actividad18.02.2019 19:44
PROCEDURE DIVISION
PostsPosts: 1.340
Ha dicho GraciasEnviado: 287
Ha recibido agradecimientosRecibido: 495
ReputaciónReputación: 10
Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road Kuk is on a distinguished road
Predeterminado

Fito, puedes reducir el tamaño del código poniendo DELIMITED una sol vez

Código COBOL:
  1. string nombres(1:l-nom) " "
  2.          paterno(1:l-pat) " "
  3.          materno(1:l-mat)  
  4.     delimited by size into nombre


NORMAS DEL FORO - obligatorias de conocer para TODOS.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale Pinchando en su Nick:

Kuk no ha iniciado sesión   Responder Con Cita
  #7
Antiguo 25 de enero de 2019, 00:38
IDENTIFICATION DIVISION
Fito
Novato Senior
ENVIRONMENT DIVISION
Avatar de Fito
DATA DIVISION
Forero desde (Registrado)febrero 2015
Argentina
UbicaciónCórdoba, Villa María
Edad47 años
Última Actividad18.02.2019 15:56
PROCEDURE DIVISION
PostsPosts: 170
Ha dicho GraciasEnviado: 66
Ha recibido agradecimientosRecibido: 50
ReputaciónReputación: 9
Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road Fito is on a distinguished road
Predeterminado

Seguro KUK, lo que pasa es que lo copié de uno de tengo con distintas delimitaciones.

Saludos.

Fito...
Fito no ha iniciado sesión   Responder Con Cita
Respuesta


Usuarios activos actualmente viendo este tema: 1 (0 miembros y 1 visitantes)
 
Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado



La franja horaria es GMT +1. Ahora son las 20:07.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2019, Jelsoft Enterprises Ltd.