Текущее время: Пт, июл 19 2024, 12:48

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Обход лимита количества Z функций в расчете заработной платы
СообщениеДобавлено: Пн, июл 08 2024, 17:26 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, сен 06 2017, 10:26
Сообщения: 54
Откуда: Чунга-чанга
Пол: Мужской
Добрый день!

Впервые столкнулся с проблемой, что в системе невозможно создать новую функцию расчета заработной платы из-за достигнутого лимита в include PCASFRU0 (я так понимаю максимум их 256 и генерирует его программа RPUCT300). Был ли у кого-то опыт обхода данного лимита? Можно попросить поделиться опытом? Проблема не срочная, но видимо через какое-то время предстоит её решать.

_________________
Еще не нуб, уже не профи


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обход лимита количества Z функций в расчете заработной платы
СообщениеДобавлено: Вт, июл 09 2024, 12:29 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1395
Да, лимит есть. Функции/операции кодируются идентификатором в один байт, поэтому максимальное их количество 255 (значение 0 не используется). Причем для Z-функции выделен диапазон от E6 до FF, 25 штук.

Делаете одну универсальную функцию, в которую в качестве параметра (например, 1-го) передаете имя под-функции. В реализации универсальную функции делаете разбор параметра, и вызываете соответствующее реализацию.
Если диапазон уже выбран, то место последней созданной функции отдаете универсальной, а ее вызов организуете уже через универсальную.

Аналогично можно сделать и в отношении операций, там лимиты такие же.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обход лимита количества Z функций в расчете заработной платы
СообщениеДобавлено: Вт, июл 09 2024, 12:43 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Ср, сен 06 2017, 10:26
Сообщения: 54
Откуда: Чунга-чанга
Пол: Мужской
Благодарю! Отличное решение!

_________________
Еще не нуб, уже не профи


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обход лимита количества Z функций в расчете заработной платы
СообщениеДобавлено: Ср, июл 17 2024, 23:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 23 2005, 12:50
Сообщения: 942
Пол: Мужской
По моему лимит только на автоиндексацию, т.е. когда название перформа под функцию/операцию автоматом выбирается, но в pe04 есть переключатель на свое название, тогда лимита вроде бы нет.
Я это проверял экспериментально на операциях (создал несколько до дампа, потом заменил операцию на ручной перформ и дампа не стало) поэтому не уверен, что не напутал чего, а так да на всех проектах с сопровождением, на которых участвовал, уже были универсальные операции/функции.

_________________
Нет таких денег, за которые кто-то будет работать лучше, чем энтузиасты бесплатно. Пол Грэм.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обход лимита количества Z функций в расчете заработной платы
СообщениеДобавлено: Чт, июл 18 2024, 07:33 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1395
Да, можно ввести свое имя для процедуры реализации. Но вызов этой процедуры все равно происходит по индексу процедуры. Размерность этого индекса - байт, поэтому ограничение в 255 функций/операций так не обойти.

Реализация вызова
Code:
FORM AS-FUNKTION.
PERFORM AS-FNUMB OF
DUMMY               "01 ##
FUACTIO             "02 ACTIO
FUADDCU             "03 ADDCU
FUASREI             "04 ASREI
FUBNKTR             "05 BNKTR
...
AS-FNUMB - код функции.

Если даже как-то поднять размерность AS-FNUMB, то сама конструкция PERFORM n OF subr1 subr2 ... ограничена лимитом в 256 процедур.
Code:
PERFORM n OF subr1 subr2 ...

This specification selects a subroutine subr of the current program from a list. The list subr1 subr2 ... can contain up to 256 directly specified subroutines. n must be a numeric data object containing a number between 1 and the specified number of subroutines when the statement is executed.
...


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB