Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Fujitsu COBOL
Fujitsu COBOL Sub-Foro dedicado a Compiladores e IDE-s de Fujitsu.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Compilador] String para Decimal Joseg PowerCOBOL (ActiveX, v4 - v11) 16 20 de marzo de 2026 12:52
[Sintaxis] ADO-CONNECT-STRING Breew PowerCOBOL (ActiveX, v4 - v11) 0 24 de abril de 2022 11:23
[Compilador] Ejecución en varios PC-s desde la red Kemorenox RM/COBOL 4 9 de junio de 2017 10:23
[Sintaxis] Controles de varios formularios Begoguay PowerCOBOL (ActiveX, v4 - v11) 1 18 de marzo de 2015 17:17

Respuesta
 
Herramientas

  #1
Antiguo 16 de enero de 2019, 22:52
jmeza
Forero Senior
Última Actividad 23.05.2026 02:04
Posts Posts: 106
Likes enviados Enviados: 26
Likes recibidos Recibidos: 4
Predeterminado STRING de varios campos separados por 1 espacio
0 Inactivo Inactivo

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 is offline   Responder Con Cita
  #2
Antiguo 17 de enero de 2019, 16:49
Roger
Forero Activo
Última Actividad 04.02.2021 13:03
Posts Posts: 236
Likes enviados Enviados: 26
Likes recibidos Recibidos: 60

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 is offline   Responder Con Cita
  #3
Antiguo 17 de enero de 2019, 19:31
JCantero
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros 
Última Actividad 02.09.2026 00:15
Posts Posts: 442
Likes enviados Enviados: 167
Likes recibidos Recibidos: 269

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 is offline   Responder Con Cita
  #4
Antiguo 18 de enero de 2019, 15:27
jmeza
Forero Senior
Última Actividad 23.05.2026 02:04
Posts Posts: 106
Likes enviados Enviados: 26
Likes recibidos Recibidos: 4

Agradecido por su ayuda

Saludos
jmeza is offline   Responder Con Cita
  #5
Antiguo 22 de enero de 2019, 01:39
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243

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 is offline   Responder Con Cita
  #6
Antiguo 22 de enero de 2019, 21:09
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

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 - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #7
Antiguo 25 de enero de 2019, 00:38
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243

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

Saludos.

Fito...
Fito is offline   Responder Con Cita
Respuesta



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

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:50.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.