Динамические правила вызова в COBOL довольно просты. Учитывая что-то вроде:
CALL WS-NAME USING...
COBOL разрешит имя программы, которая в данный момент хранится в WS-NAME
, в зависимости от библиотек загрузочного модуля
доступны для него на основе
линейный поиск. Используется первое совпадающее имя точки входа модуля загрузки, соответствующее WS-NAME
.
Неважно, насколько сложным или простым является определение WS-NAME
. Общая длина, используемая для имени
какой бы ни была длина WS-NAME
. Например:
01 WS-NAME.
05 WS-NAME-FIRST-PART PIC X(3).
05 WS-NAME-MIDDLE-PART PIC X(2).
05 WS-NAME-LAST-PART PIC X(3).
WS-NAME
состоит из 3 подчиненных полей, дающих в общей сложности 8 символов. Вы можете заполнить их индивидуально или просто переместить
что-то в WS-NAME
в целом. Если длина WS-NAME
меньше 8 символов, конечные символы будут
установить пробелы в любом принимающем поле. Например:
01 WS-SHORT-NAME.
05 WS-SHORT-NAME-FIRST-PART PIC X(4) VALUE 'AAAA'.
05 WS-SHORT-NAME-LAST-PART PIC X(2) VALUE 'BB'.
Здесь WS-SHORT-NAME
имеет длину всего 6 символов. MOVING WS-SHORT-NAME
на более длинную PIC X
переменную типа, как в:
MOVE WS-SHORT-NAME TO WS-NAME
В результате WS-NAME примет значение AAAABB bb (обратите внимание на два пробела). Во время поиска в библиотеке
для совпадающего имени точки входа конечные пробелы не имеют значения, поэтому в операторе CALL вы можете использовать
либо:
CALL WS-NAME
или
CALL-WS-SHORT-NAME
И они разрешатся к одной и той же точке входа.
Я не уверен, каковы правила длины для MicroFocus COBOL, но для IBM z / os динамически называется
имена программ не могут превышать 8 символов (если они есть, имя усекается до 8 символов).