powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
14 сообщений из 14, страница 1 из 1
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34234604
Игорь2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли аналоги встроенных функций REPLACE, REPEAT, INSERT, CHR, ASCII
языка PL SQL DB2 EE for Windows в SQL for AS400 DB2/UDB ?

Если я правильно понял документацию, то их нет.

Какие приемы используют специалисты, либо могут порекомедовать для замены функций REPLACE, REPEAT, INSERT, CHR, ASCII в SQL для AS400 DB2/UDB ?


Может ли пользовательская функция в SQL для AS400 DB2/UDB возвращать таблицу, если я правильно понял документацию, то пользовательская функция в SQL для AS400 DB2/UDB возвращать таблицу не может.
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34236317
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь2004Есть ли аналоги встроенных функций REPLACE, REPEAT, INSERTЕсть такие, плохо искали Игорь2004CHR, ASCII Используйте CAST
Игорь2004
Может ли пользовательская функция в SQL для AS400 DB2/UDB возвращать таблицу, если я правильно понял документацию, то пользовательская функция в SQL для AS400 DB2/UDB возвращать таблицу не может.Похоже, что вы правы :((

Полезная ссылка:
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/db2/rbafzmst02.htm
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34236350
Игорь2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПолезная ссылка:
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/db2/rbafzmst02.htm
Спасибо за ссылку, я черпал информацию по следующей ссылке,
http://]http://publib.boulder.ibm.com/html/as400/v4r5/ic2924/index.htm?info/db2/rbafzmst02.htm
поскольку искал по ключевому слову “ AS400 ”. То есть приведенная Вами ссылка описывает последнию версию языка для AS400 ?

авторИспользуйте CAST
К сожалению я не могу сообразить каким образом с помощью функции CAST заменить CHR, ASCII. Не могли бы Вы привести пару примеров, Chr(65) = ‘A’
Merci beaucoup.
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34238595
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А версия os400 (iSeries) у вас какая?
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34238787
Игорь2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я хотел бы объяснить свою цель – я хочу переписать свои
строковые функции SQL Procedural Language DB2
http://www.universalthread.com/wconnect/wc.dll?2,54,33,29032
так чтобы они могли работать с AS400 (последняя и предпоследняя версии).
В нашей компании используется версия V5R3.
Я кстати с ней не работаю и никогда не работал, просто мне однажды был задан вопрос:
“Будут ли мои функции работать c AS400?”
Я собственно говоря, практически все переписал, но хотелось бы выслушать мнение экспертов.
Функцию CHR() я применяю в в функции STRFILTER(),
STRFILTER() - Удаляет все символы из первой строки, за исключением символов, содержащихся во второй строке

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
create function VFP.STRFILTER
(cExpressionSearched varchar( 4000 ), cSearchExpression varchar( 256 ))
returns varchar( 4000 )
specific  STRFILTER
deterministic no external action contains sql
-- STRFILTER() User-Defined Function
-- Removes all characters from a string except those specified.
-- STRFILTER( cExpressionSearched,  cSearchExpression)
-- Return Values  varchar(4000)
-- Parameters
--  cExpressionSearched  Specifies the character string to search.
--  cSearchExpression Specifies the characters to search for and retain in  cExpressionSearched.
-- Remarks
-- STRFILTER( ) removes all the characters from  cExpressionSearched that are not in  cSearchExpression, then returns the characters that remain.
-- Example
-- values VFP.STRFILTER('asdfghh5hh1jk6f3b7mn8m3m0m6','0123456789');  -- Displays 516378306
-- values VFP.STRFILTER('ABCDABCDABCD', 'AB');  -- Displays ABABAB
-- See Also CHRTRAN()  
begin atomic
   declare i smallint default  255  ;
     while i >=  0  and locate(chr(i), cSearchExpression) >  0   do
        set i =  i  -   1 ;
     end while;
  return case when i >=  0  then replace(translate(cExpressionSearched, cSearchExpression, cast(cSearchExpression concat cExpressionSearched as varchar( 4256 )), chr(i)), chr(i), '') else cExpressionSearched end;  
end             
@
я могу обойтись без CHR() , но интересно, существуют ли приемы, позволяющие ее заменить?
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34239051
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не сумел найти замены функции CHR() на AS/400. Похоже, что при необходимости её реализуют на Коболе - типичный подход для этой платформы

С другой стороны АЭСка вроде как позволяет хранить тесты как в родном EBCDIC, так и в ASCII кодировке. А это значит, что бинарное обращение к текстовым строкам в разной кодировке приведёт к неадекватным результатам. При работе с ними как текстом, DB2 IMHO должна их привести к "одному знаменателю", но это моё предположение, точно не знаю.

Если вам дорого душевное спокойствие, то лучше скажите, что на AS/400 ваш код не будет работать, пока IBM не приведут, как обещали, SQL к единому синтаксису :о)
Код: plaintext
1.
--
Per rectum ad astrum
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34240658
Игорь2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пара вопросов.
1) Аналог инструкции VALUES DB2 for Windows в DB2 for AS400?
Цитата из документации к DB2 for Windows
авторVALUES The VALUES statement is a form of query. It can be embedded in an application program or issued interactively.
Цитата из документации к DB2 for AS400 v5r3
авторVALUES
The VALUES statement provides a method for invoking a user-defined function from a trigger. Transition variables can be passed to the user-defined function.

Invocation
This statement can only be used in the triggered action of a CREATE TRIGGER statement

Каким образом в DB2 for AS400 v5r3 (и в предыдущих версиях) можно вывести в интерактивном режиме результаты работы функции на экран, то есть, имеется ли в DB2 for AS400 v5r3 аналог инструкции VALUES в DB2 for Windows ?

2) Каким образом можно создать множество функций сразу, то есть в одном сценарии.
В версии для Windows для создания множество функций сразу запускается Редактор команд, затем задается в левом нижнем углу окна statement termination Character некий символ, скажем, @, причем данный символ должен использоваться для разделения команд Create function в файле сценария.

В DB2 for AS400 v5r3 функция может возвращать таблицу, в предыдущих версиях нет.

авторЕсли вам дорого душевное спокойствие, то лучше скажите, что на AS/400 ваш код не будет работать, пока IBM не приведут, как обещали, SQL к единому синтаксису :о)
Я, в общем-то уже все переделал, нужно было переписать несколько строк кода.
Может ли мне кто-нибудь помочь с проверкой моих функций, нужно будет их создать и затем просто вызвать каждую функцию. Сами алгоритмы уже оттестированы, нужно просто проверить создадутся ли функции без ошибок на AS400 , и можно ли их затем вызвать.
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34242023
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь2004Пара вопросов.
1) Аналог инструкции VALUES DB2 for Windows в DB2 for AS400?
Каким образом в DB2 for AS400 v5r3 (и в предыдущих версиях) можно вывести в интерактивном режиме результаты работы функции на экран, то есть, имеется ли в DB2 for AS400 v5r3 аналог инструкции VALUES в DB2 for Windows ?
В v5r3 вы можете использовать VALUES в конструкции
Код: plaintext
insert into table ... values (...);
Т.е. при вставке 1 строки.
Результат скалярной функции можно посмотреть так:
Код: plaintext
select f(...) from sysibm.sysdummy1;

Игорь20042) Каким образом можно создать множество функций сразу, то есть в одном сценарии.
В версии для Windows для создания множество функций сразу запускается Редактор команд, затем задается в левом нижнем углу окна statement termination Character некий символ, скажем, @, причем данный символ должен использоваться для разделения команд Create function в файле сценария.
В iSeries Navigator Run SQL Scripts (примерный аналог Command Center) вы можете выполнять SQL (и не только) скрипты, причем ему не надо разделять отдельные команды специальным символом (statement termination Character) - оно умеет само контекст определить, в котором выполняется SQL команда - внутри udf/sp или сама по себе.
Игорь2004
В DB2 for AS400 v5r3 функция может возвращать таблицу, в предыдущих версиях нет.
Нет. В v5r2 тоже может.
Игорь2004Я, в общем-то уже все переделал, нужно было переписать несколько строк кода.
Может ли мне кто-нибудь помочь с проверкой моих функций, нужно будет их создать и затем просто вызвать каждую функцию. Сами алгоритмы уже оттестированы, нужно просто проверить создадутся ли функции без ошибок на AS400 , и можно ли их затем вызвать.На вашем месте я бы переписал функцию VFP.STRFILTER на языке программирования (с, яве, например). Особенно для v5r3 - там оператор set обрабатывается как селект из однострочной таблицы, и при использовании в циклке этого set вы получите сильные тормоза.
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34243098
Игорь2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Mark
Спасибо большое за полный ответ. Теперь у меня есть все необходимая информация.

авторНа вашем месте я бы переписал функцию VFP.STRFILTER на языке программирования (с, яве, например).
Правильнее был бы написать все на языках программирования, но на это уйдет достаточно много времени. Написание, отладка, сейчас пока нет времени, может быть в будущем. Напомню, что моей целью было написать функции, которые не содержат ошибок, при отладке я нашел ошибки во встроенных функциях PL SQL.

автори при использовании в циклке этого set вы получите сильные тормоза.
Код: plaintext
1.
2.
3.
declare i smallint default  255  ;
     while i >=  0  and locate(chr(i), cSearchExpression) >  0   do
        set i =  i  -   1 ;
     end while;
Если речь идет об то в реальной жизни, цикл будет выполняться один раз, мало кому нужно фильтровать строку по символу X’FF'.

To All
Может ли мне кто-нибудь помочь с проверкой моих функций, нужно будет их создать и затем просто вызвать каждую функцию. Сами алгоритмы уже оттестированы, нужно просто проверить создадутся ли функции без ошибок на AS400 , и можно ли их затем вызвать. Заодно проверить, не содержат ли встроенные функции SQL AS400 те же ошибки что и версия для Windows.
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34247562
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Присылайте исходники мне на мыло.
Игорь2004Заодно проверить, не содержат ли встроенные функции SQL AS400 те же ошибки что и версия для Windows.А с этого места, пожалуйста, по-подробнее...
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34249714
Игорь2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to Mark
спасибо за помощь
авторА с этого места, пожалуйста, по-подробнее...

версия для Windows
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
--  баг встроенной функции locate
values locate('','string', 100 );  -- возвращает 100, вообще, можно указать любое число в качестве третьего аргумента и функция возвратит его (если первый аргумент пустая строка). Хотя должна была бы возвращать всегда 0.

--  баг встроенной функции insert
values insert(repeat('a', 4000 ),  4000 ,  1 , 'b');   -- вызывает ошибку со следующим сообщением

SQL0443N  Подпрограмма "SYSFUN.INSERT" (с уникальным именем "INSERT1") вернула 
код ошибки в SQLSTATE и диагностическое сообщение "SYSFUN:01".  SQLSTATE= 38552 
SQL0443N  Подпрограмма "SYSFUN.INSERT" (с уникальным именем "INSERT1") вернула код ошибки в SQLSTATE и диагностическое сообщение "SYSFUN:01                                       ".

Хотя правильный результат  должен быть repeat('a', 3999 ) || ‘b’.

--  баг встроенной функции ascii 
values ascii(chr( 0 ));  -- возвращает  32 ,  правильный результат    0 

версия для AS400
коллега проверил по моей просьбе

Код: plaintext
select locate('','string', 100 ) from sysibm.sysdummy1;  -- возвращает  1  правильный результат  0 
то есть один баг уже найден

желательно также проверить
select insert(repeat('a',4000), 4000, 1, 'b') from sysibm.sysdummy1;
но заменить 4000 на максимальную длину строки
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34327746
Игорь2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To All
Может ли мне кто-нибудь помочь с проверкой моих функций для AS400, нужно будет их создать и затем просто вызвать каждую функцию. Сами алгоритмы уже оттестированы, нужно просто проверить создадутся ли функции без ошибок на AS400 , и можно ли их затем вызвать.
To Mark
Я отправил два письма на адрес, указанный в профиле, но видимо они не дошли.
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34327909
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь2004To Mark
Я отправил два письма на адрес, указанный в профиле, но видимо они не дошли.Дошли.
Я отправлял ответы на igor.nikiforov(at)gmail.com
Сейчас зафорвардил их (те 2 письма) на мейл в профайле.
Если не дошло - пишите в мне на то же мыло.
...
Рейтинг: 0 / 0
Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
    #34327948
Игорь2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Merci beaucoup.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Вопрос касательно аналога пользовательских функция в DB2 for Windows в AS400.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]