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

Расширения. Получение строки.

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
KhrushchevAV
Участник со стажем
<Банки (менее 3 участников)>


Вступление в Клуб: 17.10.2014
СообщениеВт Апр 18, 2017 13:27   Расширения. Получение строки. Ответить с цитатой
Полезность: Нет оценки
Расширения. Дистрибутив.
Есть такая операция
HOOK.DEPN_GET_STR
которая позволяет, по идее, банку гибко настраивать всякие там коды по депозитам, совсем не ломая дистрибутив.

Но что-то я не догоняю. Толи этим никто не пользуется, толи лыжи не едут, толи еще что...
Операция хоть и описана как возвращающая строку - на самом деле ничего не возвращает.
Код:
Begin
   null;
   &call_meth
End;


транслируется в :
Код:

      ...
      RES_1 := Z$DEPN_DEPN_GET_STR.DEPN_GET_STR_EXECUTE(...);
      return null;
   end;


Как видим, возвращает всегда null что бы не делали банковские программисты в своих расширениях.
Смешно, но в коде проверяется кое-где. Что там нам вернули из расширения...

Поделитесь плз, методами обхода. Желательно без правки дистрибутива.
Guest_SPb
Участник со стажем
Неподтвержденный


Вступление в Клуб: 27.02.2014
СообщениеВт Апр 18, 2017 13:44   Re: Расширения. Получение строки. Ответить с цитатой
Полезность: 1
Посмотрите как у вас настроен вызов этого хука в справочнике "Расширения и перекрытия. Точки вызова".
У меня хук дистрибутива компилируется в
Код:
      RES_1 := Z$HOOK_BANK_DEPN_GET_STR.DEPN_GET_STR_EXECUTE(NULL,'HOOK_BANK',P_THIS => P_THIS,P_CODE_INFO => P_CODE_INFO,P_ON_DATE => P_ON_DATE,P_ADDS => P_ADDS);
      if not RES_1 is NULL then
         return RES_1;
      end if;
      return null;


Для этого в справочнике "Расширения и перекрытия. Точки вызова" у этого хука вариант "Обработка завершения" выставлен в "Вернуть первый непустой результат".
И если будете менять настройку вызова этого хука в справочнике, то надо не забывать указывать "Перекомпилировать точку вызова".
KhrushchevAV
Участник со стажем
<Банки (менее 3 участников)>


Вступление в Клуб: 17.10.2014
СообщениеВт Апр 18, 2017 13:48    Ответить с цитатой
Полезность: Нет оценки
Во блин!
И у меня стоит "Вернуть первый непустой результат". (А попробовал все варианты).
И перекомпиляция не помогает...

У вас какая версия?
Может это после исправили? (У нас 16.5)
Guest_SPb
Участник со стажем
Неподтвержденный


Вступление в Клуб: 27.02.2014
СообщениеВт Апр 18, 2017 13:50    Ответить с цитатой
Полезность: Нет оценки
KhrushchevAV пишет:
Во блин!
У вас какая версия?
Может это после исправили? (У нас 16.5)


16.6.11
KhrushchevAV
Участник со стажем
<Банки (менее 3 участников)>


Вступление в Клуб: 17.10.2014
СообщениеВт Апр 18, 2017 14:49    Ответить с цитатой
Полезность: 1
ЦФТ ответило быстро и по делу. (Точнее программист ЦФТ на прямое письмо. Дай бог ей здоровья.)

Напишу сюда "для истории".
Сам бы низачто не догадался.

Оказалось, операции в HOOK и в HOOK_BANK имели разный тип возвращаемого значения. Строка32000 и Строка_32000. Для макроса &call_meth этого оказалось достаточно, чтобы скомпилироваться в безусловный return null;

Поправил тип возвращаемого значения. И компилятор сгенерировал желаемые:
Код:
      RES_1 := Z$HOOK_BANK_DEPN_GET_STR.DEPN_GET_STR_EXECUTE(...);
      if not RES_1 is NULL then
         return RES_1;
      end if;
      return null;
   end;
nobel
Участник - экстремал
Неподтвержденный


Вступление в Клуб: 28.09.2011
СообщениеСр Апр 19, 2017 09:51    Ответить с цитатой
Полезность: Нет оценки
KhrushchevAV пишет:
ЦФТ ответило быстро и по делу. (Точнее программист ЦФТ на прямое письмо. Дай бог ей здоровья.)

Напишу сюда "для истории".
Сам бы низачто не догадался.

Оказалось, операции в HOOK и в HOOK_BANK имели разный тип возвращаемого значения. Строка32000 и Строка_32000. Для макроса &call_meth этого оказалось достаточно, чтобы скомпилироваться в безусловный return null;

Поправил тип возвращаемого значения. И компилятор сгенерировал желаемые:
Код:
      RES_1 := Z$HOOK_BANK_DEPN_GET_STR.DEPN_GET_STR_EXECUTE(...);
      if not RES_1 is NULL then
         return RES_1;
      end if;
      return null;
   end;


это обычная ошибка при обновлении версии ИБСО.в документации по обновлению обычно выкладываю список HOOK которые будет изменены или удалены.обычны мы анализируем данный excel файл.
там могут изменяться количество параметров,типы параметров,тип возвращаемого результата или вообще использоваться больше не будут
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

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