Frage

Wie verkette ich in COBOL zwei Zeichenfolgen unbekannter Länge?Also zum Beispiel:

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

Wenn FIRST-NAME = 'JOHN ' Und LAST-NAME = 'DOE ', wie bekomme ich:

FULL-NAME = 'JOHN DOE                       '

im Gegensatz zu:

FULL-NAME = 'JOHN            DOE            '
War es hilfreich?

Lösung

Ich glaube, das Folgende wird Ihnen das geben, was Sie sich wünschen.

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

Andere Tipps

Auf den ersten Blick besteht die Lösung darin, mithilfe einer Referenzänderung die beiden Zeichenfolgen einschließlich des Leerzeichens mit einem String zu verknüpfen.Das Problem besteht darin, dass Sie wissen müssen, wie viele nachgestellte Leerzeichen in FIRST-NAME vorhanden sind, sonst erzeugen Sie etwas wie „JOHNbbbbbbbbbbbbDOE“, wobei b ein Leerzeichen ist.

Es gibt keine intrinsische COBOL-Funktion, um die Anzahl der nachgestellten Leerzeichen in einer Zeichenfolge zu bestimmen, aber eine, um die Anzahl der führenden Leerzeichen in einer Zeichenfolge zu bestimmen.Daher besteht meines Erachtens der schnellste Weg darin, den Vornamen umzukehren, die Anzahl der führenden Leerzeichen zu ermitteln und die Referenzänderung zu verwenden, um den Vor- und Nachnamen aneinanderzureihen.

Sie müssen diese Felder zum Arbeitsspeicher hinzufügen:

WORK-FIELD        PIC X(15) VALUE SPACES.
TRAILING-SPACES   PIC 9(3)  VALUE ZERO.
FIELD-LENGTH      PIC 9(3)  VALUE ZERO.
  1. Kehren Sie den VORNAMEN um
    • VERSCHIEBEN SIE DIE FUNKTION RÜCKWÄRTS (VORNAME) ZUM ARBEITSFELD.
    • WORK-FIELD enthält jetzt führende Leerzeichen statt nachfolgender Leerzeichen.
  2. Ermitteln Sie die Anzahl der nachgestellten Leerzeichen in FIRST-NAME
    • ÜBERPRÜFEN SIE DAS ARBEITSFELD UND ZÄHLEN SIE DIE NACHFÄHIGEN RÄUME FÜR FÜHRENDE RÄUME.
    • TRAILING-SPACE enthält jetzt die Anzahl der nachgestellten Leerzeichen in FIRST-NAME.
  3. Ermitteln Sie die Länge des Feldes VORNAME
    • FELD-LÄNGE BERECHNEN = FUNKTIONS-LÄNGE (VORNAME).
  4. Verketten Sie die beiden Zeichenfolgen miteinander.
    • STRING VORNAME (1:FIELD-LENGTH – TRAILING-SPACES) „ “ NACHNAME DURCH GRÖSSE BEGRENZT, IN VOLLSTÄNDIGEN NAMEN.

Sie könnten versuchen, eine Schleife zu erstellen, um die tatsächliche Länge zu ermitteln.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top