CftClub.ru
Клуб специалистов ЦФТ-Банк

как экранировать символы квадратных скобок[] в макросе

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
prog
Эксперт
НИКО-БАНК


Вступление в Клуб: 03.03.2008
СообщениеПн Сен 25, 2017 15:26   как экранировать символы квадратных скобок[] в макросе Ответить с цитатой
Полезность: Нет оценки
Доброго времени суток. Прошу помощи знающих людей.
Требуется создать макрос
Код:
pragma macro(m, 'моя_функция_с_двумя_параметрами(ссылка.[1].[2], [1])', substitute)


первый параметр - это обращение к реквизитам ссылки: ссылка.[1].[2]
второй параметр [1] макроподставновка

компилятор воспринимает ссылка.[1].[2] не как реквизиты ссылки а как макроподстановки 1 и 2

как экранировать квадратные скобки в макросе для того чтобы компилятор не воспринимал выражение ".[1].[2]" как макроподстановки?
vtar
Эксперт
Неподтвержденный


Вступление в Клуб: 20.03.2009
СообщениеПн Сен 25, 2017 17:17    Ответить с цитатой
Полезность: Нет оценки
попробуй закавычить

типа того как я для шаблона дат делал

Код:
pragma macro (fd,'to_char([1], ''YYYYMMDD'') ' ,substitute);

_________________
Нельзя всем дать всё: всех много, а всего мало
prog
Эксперт
НИКО-БАНК


Вступление в Клуб: 03.03.2008
СообщениеВт Сен 26, 2017 06:41    Ответить с цитатой
Полезность: Нет оценки
Что-то я видимо не понимаю. если закавычить выражение в макросе двумя одинарными кавычками

Код:
''выражение''


то на выходе, после отработки макроса получим

Код:
'выражение'


а нужно просто

Код:
выражение
Alkov
Профи
Неподтвержденный


Вступление в Клуб: 23.09.2010
СообщениеВт Сен 26, 2017 06:57    Ответить с цитатой
Полезность: Нет оценки
ну присвой ссылка.[1].[2] в переменную,
а в макро вынеси уже переменную...
Эмиралька
Профи
Неподтвержденный


Вступление в Клуб: 09.11.2015
СообщениеВт Сен 26, 2017 08:22   Re: как экранировать символы квадратных скобок[] в макросе Ответить с цитатой
Полезность: 3
prog пишет:
как экранировать квадратные скобки в макросе для того чтобы компилятор не воспринимал выражение ".[1].[2]" как макроподстановки?

Вот так:
Код:
pragma macro(m, 'моя_функция_с_двумя_параметрами(ссылка.[1].[2], {1})', substitute, false, '{}');
prog
Эксперт
НИКО-БАНК


Вступление в Клуб: 03.03.2008
СообщениеВт Сен 26, 2017 09:50    Ответить с цитатой
Полезность: Нет оценки
Спасибо большое, работает ). А можете объяснить как это работает

в доке есть синтаксис pragma macro и там меньше параметров

• MACRO(<имя макро переменной>,<текст макро-подстановки>
[, {usual substitute process execute} [,{false true quotes}] ] )
Эмиралька
Профи
Неподтвержденный


Вступление в Клуб: 09.11.2015
СообщениеСр Сен 27, 2017 09:53    Ответить с цитатой
Полезность: Нет оценки
prog пишет:
Спасибо большое, работает ). А можете объяснить как это работает

в доке есть синтаксис pragma macro и там меньше параметров

• MACRO(<имя макро переменной>,<текст макро-подстановки>
[, {usual substitute process execute} [,{false true quotes}] ] )

Возможно, у вас устаревшая документация. В документации к версии ядра 7.3.7.4 - опция уже описана.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru