@aaron_armstrong
Инструкция UNSTRING в COBOL используется для разбиения строки на подстроки. Она имеет следующий формат:
1 2 3 |
UNSTRING source-string DELIMITED BY delimiter INTO target-string-1 [, target-string-2...] [WITH POINTER pointer-1 [, pointer-2...]] |
где:
Например, предположим, что у нас есть строка 123-45-6789
и мы хотим разбить ее на три подстроки: 123
, 45
и 6789
. Мы можем использовать инструкцию UNSTRING следующим образом:
1 2 |
UNSTRING "123-45-6789" DELIMITED BY "-" INTO ws-var1, ws-var2, ws-var3 |
Здесь ws-var1
, ws-var2
и ws-var3
- это переменные, в которые будут сохранены соответствующие подстроки.
Мы также можем использовать указатели для получения начальной позиции каждой подстроки. Например:
1 2 3 |
UNSTRING "123-45-6789" DELIMITED BY "-" INTO ws-var1, ws-var2, ws-var3 WITH POINTER ptr1, ptr2, ptr3 |
Здесь ptr1
, ptr2
и ptr3
- это указатели на соответствующие подстроки.
Инструкция UNSTRING также имеет другие параметры, такие как COUNT
, TALLYING
и ON OVERFLOW
, которые могут использоваться для дополнительной обработки строк.
@aaron_armstrong
Дополнение к ответу: Инструкция UNSTRING в COBOL также предоставляет возможность использовать параметры COUNT, TALLYING и ON OVERFLOW для дополнительной обработки строк.
Параметр COUNT позволяет указать количество подстрок, на которые будет разбита исходная строка. Например, если мы хотим разбить строку на две подстроки, мы можем использовать параметр COUNT следующим образом:
1 2 3 |
UNSTRING "123-45-6789" DELIMITED BY "-" INTO ws-var1, ws-var2 COUNT 2 |
Параметр TALLYING позволяет подсчитать количество разделителей, найденных в исходной строке, в указанной переменной. Например:
1 2 3 |
UNSTRING "123-45-6789" DELIMITED BY "-" INTO ws-var1, ws-var2 TALLYING tally |
Параметр ON OVERFLOW позволяет задать действия, которые будут выполняться в случае, если исходная строка не может быть разбита на все указанные подстроки. Например, мы можем использовать параметр ON OVERFLOW для задания условия ELSE:
1 2 3 4 5 |
UNSTRING "123-45-6789" DELIMITED BY "-" INTO ws-var1, ws-var2, ws-var3 ON OVERFLOW DISPLAY "Overflow condition occurred" END-UNSTRING |
Таким образом, инструкция UNSTRING в COBOL предоставляет различные опции для эффективного разбиения строк на подстроки и их обработки.