Оператор определения конечной метки NC-подпрограммы <NCSUB.ENDLABEL>


Возвращает строковое значение конечной метки NC-подпрограммы, а также позволяет присвоить конечной метки NC-подпрограммы произвольную строку.

 

Формат:

S$ = NCSUB.ENDLABEL(<Номер NC-подпрограммы>)

или

NCSUB.ENDLABEL(<Номер NC-подпрограммы>) = S$

 

Описание:

<Номер NC-подпрограммы> – уникальный идентификатор NC-подпрограммы.

<S$> – произвольная строковая переменная. Во втором случае также может задаваться строковая константа или произвольное выражение, возвращающее строку.

Оператор может использоваться аналогично строковой переменной в выражениях и функциях обрабатывающих строки.

Оператор следует использовать для определения конечной метки NC-подпрограммы при выводе в управляющую программу строк, идентифицирующих конец подпрограммы. В качестве метки можно задать и номер кадра.

Обычно на начало трансляции технологических команд в УП место расположения конкретной подпрограммы в УП неизвестно. В это время конечная метка NC-подпрограммы установлена в значение по умолчанию <ELabelNxxx>, где <xxx> – номер NC-подпрограммы. В процессе реализации NC-подпрограммы, т.е. вывода ее в УП, становится возможным определить конечную метку. Поэтому в процедуре обработки команды конца подпрограммы <PPFUN ENDSUB(51)> следует использовать оператор определения конечной метки для установки конечной метки подпрограммы:

 

NCSub.EndLabel(CLD[2]) = S$ ! Присвоение конечной метки

 

Здесь:

<S$> – строковая переменная или произвольное выражение, возвращающее строку, соответствующую метке или номеру кадра подпрограммы.

<CLD[2]> – номер NC-подпрограммы переданный через предопределенный массив параметров технологической команды <CLD>.

 

Примечание: При включенной автоматической нумерации кадров УП перед началом выполнения процедуры обработки команды конца подпрограммы <PPFUN ENDSUB(51)> конечной метке автоматически присваивается текущее значение регистра номера кадра. В таких случаях можно не использовать оператор для задания конечной метки.

При вызове подпрограммы обычно требуется определить, где расположена данная подпрограмма. Поэтому в процедуре обработки команды вызова подпрограммы <PPFUN CALLSUB(52)> следует использовать оператор определения конечной метки подпрограммы:

 

S$ = NCSub.EndLabel(CLD[2]) ! Получение конечной метки

 

Затем следует вывести данную метку в текст управляющей программы в нужном формате.

 

Примечание: Если выполнение процедуры обработки технологической команды вызова подпрограммы <PPFUN CALLSUB(52)> производится раньше, чем произошло присвоение значения конечной метки (до того как подпрограмма выведена в УП), то оператор определения конечной метки вернет значение по умолчанию вида <ELabelNxxx>. После окончания трансляции всей УП, если подпрограмма была выведена в УП, и метке было присвоено значение отличающееся от значения по умолчанию, производится замена всех значений по умолчанию в тексте УП на вновь присвоенную метку.

В этом случае преобразования, осуществляемые над строкой, содержащей значение метки (значение по умолчанию вида <ELabelNxxx>), не должны нарушать целостность выражения по умолчанию, иначе результат трансляции УП может оказаться неверным. В таких случаях преобразования над строкой метки следует производить не при получении значения метки, а перед присвоением значения метки в процедуре обработки технологической команды конца подпрограммы <PPFUN ENDSUB(51)>.

 

 

 

Сопутствующие ссылки:

Операторы работы с NC-подпрограммами

Оператор определения начальной метки NC-подпрограммы <NCSUB.STARTLABEL>