Para concatenar un nombre y sus apellidos dejando un espacio en blanco entremedias se usa la instrucción STRING tal y como se indica a continuación:
IDENTIFICATION DIVISION.
PROGRAM-ID. CONCATENAR-NA.
AUTHOR. DESCONOCIDO.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WHOLE-NAME PIC X(25).
01 FIRST-NAME PIC X(25).
01 MIDDLE-NAME PIC X(25).
01 LAST-NAME PIC X(25).
PROCEDURE DIVISION.
MAIN-STREET.
MOVE 'GEMA' TO FIRST-NAME.
MOVE 'FERNANDEZ' TO MIDDLE-NAME.
MOVE 'TEJEDOR' TO LAST-NAME.
STRING FIRST-NAME DELIMITED BY SPACE
' ' DELIMITED BY SIZE
MIDDLE-NAME DELIMITED BY SPACE
' ' DELIMITED BY SIZE
LAST-NAME DELIMITED BY SPACE
INTO WHOLE-NAME.
DISPLAY WHOLE-NAME.
STOP RUN.
MUY BUENO EL EJEMPLO
ResponderEliminarNos alegra que te parezca un ejemplo muy bueno.
EliminarY como se puede resolver el mismo problema si el nombre es compuesto? En ese mismo ejemplo imagina que el nombre es GEMA MARIA
ResponderEliminarHola Javier,
EliminarPerdón por la tardanza pero aquí va la respuesta.
Siguiendo el ejemplo anterior tendríamos algo como lo siguiente:
MOVE 'GEMA MARIA' TO FIRST-NAME
OJO!!! Sólo cambiaría el MOVE relativo al nombre o FIRST-NAME. El resultado sería 'GEMA MARIA FERNANDEZ TEJEDOR', ya que estás concatenando tres cadenas (una de ellas siendo 'GEMA MARIA') dejando un espacio entre medias. Lo que sería más complejo es si tuvieras la cadena 'GEMA MARIA FERNANDEZ TEJEDOR' y quisieras descomponerlo en nombre, apellido1 y apellido2. Aunque seguro que en estos casos, las aplicaciones están preparadas para almacenar los nombres compuestos con algún tipo de carácter y a la hora de mostrarlos en pantalla separar ambos nombres por ese carácter.
Espero que te sirva de ayuda.
Un saludo.
Muy bueno el ejemplo, gracias por el aporte
ResponderEliminarNos alegra que te parezca un ejemplo muy bueno.
Eliminar