łączenie ciągów nieznany długości w COBOL

głosy
4

Jak mogę łączyć ze sobą dwa ciągi, o nieznanej długości, COBOL? Tak na przykład:

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

Jeśli FIRST-NAME = 'JOHN 'i LAST-NAME = 'DOE ', jak można uzyskać:

FULL-NAME = 'JOHN DOE                       '

w przeciwieństwie do:

FULL-NAME = 'JOHN            DOE            '
Utwórz 05/09/2008 o 21:49
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
4

Wierzę dodaje da ci to, czego pragną.

STRING
FIRST-NAME DELIMITED BY " ",
" ",
LAST-NAME DELIMITED BY SIZE
INTO FULL-NAME.
Odpowiedział 06/09/2008 o 01:11
źródło użytkownik

głosy
3

Na pierwszy rzut oka, rozwiązaniem jest zastosowanie modyfikacji odniesienia STRING razem dwóch strumieni, w tym miejscu. Problem polega na tym, że trzeba wiedzieć, jak są obecne w wielu po imieniu przestrzenie końcowe, inaczej będziesz produkować coś jak „JOHNbbbbbbbbbbbbDOE”, gdzie b jest przestrzeń.

Nie ma wewnętrzna funkcja COBOL do określenia liczby spacje w ciągu znaków, ale jest jeden, aby określić liczbę czołowych miejsc w ciąg. W związku z tym, najszybszym sposobem, o ile mi wiadomo, jest odwrócenie imię, znaleźć liczbę spacje i użyć odniesienia do modyfikacji łańcucha razem imiona i nazwiska.

Musisz dodać te pola do pamięci roboczej:

WORK-FIELD        PIC X(15) VALUE SPACES.
TRAILING-SPACES   PIC 9(3)  VALUE ZERO.
FIELD-LENGTH      PIC 9(3)  VALUE ZERO.
  1. Odwrócić po imieniu
    • MOVE działanie odwrotne (first-NAME) do pracy z pola.
    • PRACY pole zawiera teraz spacje zamiast spacje.
  2. Znajdź liczbę miejsc w spływu po imieniu
    • INSPECT WORK pola LICZENIE spływu-przestrzenie dla spacje.
    • TRAILING-SPACE zawiera teraz liczbę spacje w po imieniu.
  3. Znajdź długość pola po imieniu
    • COMPUTE Dziedzina-= długość FUNKCJA (first-NAME).
  4. Złączyć dwa ciągi razem.
    • STRING PIERWSZA NAME (1 DZIEDZINA-DŁUGOŚĆ - wleczone przestrzeniach) „„last NAZWA ograniczona przez rozmiar, na pełny NAME.
Odpowiedział 05/09/2008 o 22:12
źródło użytkownik

głosy
0

Można spróbować dokonywania pętlę dla uzyskać rzeczywistą długość.

Odpowiedział 19/04/2019 o 15:03
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more