На первый взгляд, решение состоит в том, чтобы использовать эталонную модификацию для STRING вместе двух строк, включая пробел. Проблема заключается в том, что вы должны знать, сколько конечных пробелов присутствует в FIRST-NAME, иначе вы получите что-то вроде 'JOHNbbbbbbbbbbbbDOE', где b - это пробел.
Нет встроенной функции COBOL для определения количества конечных пробелов в строке, но есть одна для определения количества начальных пробелов в строке. Поэтому, насколько я могу судить, самый быстрый способ - поменять имя, найти количество начальных пробелов и использовать ссылочную модификацию, чтобы связать вместе имя и фамилию.
Вам нужно будет добавить эти поля в рабочее хранилище:
WORK-FIELD PIC X(15) VALUE SPACES.
TRAILING-SPACES PIC 9(3) VALUE ZERO.
FIELD-LENGTH PIC 9(3) VALUE ZERO.
- поменять имя
- ПЕРЕМЕСТИТЬ ОБРАТНУЮ ФУНКЦИЮ (ИМЯ) В РАБОЧЕМ ПОЛЕ.
- WORK-FIELD теперь содержит начальные пробелы вместо конечных пробелов.
- Найдите количество пробелов в FIRST-NAME
- ПРОВЕРЬТЕ ЗАГОТОВИТЕЛЬНЫЕ ПОМЕЩЕНИЯ ДЛЯ РАБОЧЕГО ПОЛЯ ДЛЯ ВЕДУЩИХ ПРОСТРАНСТВ.
- TRAILING-SPACE теперь содержит количество пробелов в FIRST-NAME.
- Найдите длину поля FIRST-NAME
- КОМПЬЮТЕРНАЯ ДЛИНА ПОЛЯ = ФУНКЦИОНАЛЬНАЯ ДЛИНА (ИМЯ).
- Объединить две строки вместе.
- STRING FIR-NAME (1: ДЛИНА ПОЛЯ - ПРОБЕЖНЫЕ ПРОСТРАНСТВА) «« ПОСЛЕДНЕЕ ИМЯ РАЗДЕЛЕНО РАЗМЕРОМ В ПОЛНОЕ ИМЯ.