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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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