Question

Comment concaténer deux chaînes de caractères, de longueur inconnue, en COBOL?Ainsi, par exemple:

WORKING-STORAGE.
    FIRST-NAME    PIC X(15) VALUE SPACES.
    LAST-NAME     PIC X(15) VALUE SPACES.
    FULL-NAME     PIC X(31) VALUE SPACES.

Si FIRST-NAME = 'JOHN ' et LAST-NAME = 'DOE ', comment puis-je obtenir:

FULL-NAME = 'JOHN DOE                       '

par opposition à:

FULL-NAME = 'JOHN            DOE            '
Était-ce utile?

La solution

Je crois que ce qui suit va vous donner ce que vous désirez.

STRING
FIRST-NAME DELIMITED BY " ",
" ",
LAST-NAME DELIMITED BY SIZE
INTO FULL-NAME.

Autres conseils

À première vue, la solution est d'utiliser la référence de modification de la CHAÎNE, les deux chaînes, y compris l'espace.Le problème est que vous devez savoir comment de nombreux espaces sont présents dans la PREMIÈRE NOM, sinon, vous allez produire quelque chose comme "JOHNbbbbbbbbbbbbDOE", où b est un espace.

Il n'y a pas intrinsèque COBOL fonction pour déterminer le nombre d'espaces dans une chaîne de caractères, mais il y en a un pour déterminer le nombre d'espaces dans une chaîne de caractères.Par conséquent, le moyen le plus rapide, autant que je puisse en dire, est de renverser le nom de la première, de trouver le nombre d'espaces de tête, et l'utilisation de référence de modification de la chaîne du nom et du prénom.

Vous devrez ajouter ces champs de travail de stockage:

WORK-FIELD        PIC X(15) VALUE SPACES.
TRAILING-SPACES   PIC 9(3)  VALUE ZERO.
FIELD-LENGTH      PIC 9(3)  VALUE ZERO.
  1. Inverser la de prénom
    • DÉPLACER LA FONCTION INVERSE (PREMIER DU NOM) DE TRAVAIL-CHAMP.
    • TRAVAIL-CHAMP contient des espaces, à la place des espaces.
  2. Trouver le nombre d'espaces dans la PREMIÈRE NOM
    • INSPECTER LE TRAVAIL EN CHAMP DE COMPTAGE DE FUITE-DES ESPACES POUR LES ESPACES DE TÊTE.
    • Tirant de l'arrière-ESPACE contient maintenant le nombre d'espaces dans la PREMIÈRE NOM.
  3. Trouver la longueur de la PREMIÈRE de NOM de domaine
    • CALCUL DE LONGUEUR DE CHAMP = FONCTION DE LA LONGUEUR (PREMIER DU NOM).
  4. Concaténer deux chaînes.
    • LA CHAÎNE-NOM (1:LONGUEUR DE CHAMP DE FUITE DES ESPACES DE) “ “ LAST-NAME DÉLIMITÉ PAR LA TAILLE, EN PLEIN NOM.

Vous pouvez essayer de faire une boucle pour obtenir la longueur réelle.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top