Как обрабатывать структуру данных размером более 16 МБ в RPGLE

Я не могу скомпилировать программу RPGLE, так как она включает в себя массив структур данных размером более 16 МБ.

Ошибка компиляции:

RNF0376 — размер элемента данных превышает максимальное значение в 16 773 104 байта.

Я знаю, что мы можем использовать указатели в качестве обходного пути, есть ли другое решение?


person Sadam Husain    schedule 13.11.2017    source источник
comment
Это большая структура данных. Моя общая альтернатива (пользовательское пространство) также не превышает 16 МБ). Что вы пытаетесь сделать, что требует такого большого массива?   -  person jmarkmurphy    schedule 13.11.2017
comment
Имеет ли смысл создавать физический файл в библиотеке TEMP? Это будет продолжаться только до тех пор, пока текущая работа.   -  person Mike    schedule 13.11.2017
comment
Кроме того, подумайте о разнице между массивом структур и структурой массивов. Второй легче разбить на отдельные массивы. Ваше общее количество байтов будет таким же высоким, но они будут храниться как отдельные переменные, а не как одна огромная структура данных. Иногда такая разница может радовать компилятор.   -  person Mike    schedule 13.11.2017
comment
На самом деле это вложенный массив структур данных. Он имеет два массива и множество других полей в виде подполей. Я пытаюсь вернуть этот массив структуры данных для веб-службы.   -  person Sadam Husain    schedule 14.11.2017
comment
можно ли использовать модель хранения терапространства для этой структуры данных?   -  person Sadam Husain    schedule 14.11.2017
comment
Вы можете использовать teraspace, но это не изменит ограничение размера структуры данных. Возможно, вы захотите сделать небольшой редизайн, чтобы разбить веб-службу на более мелкие части, а не на одну огромную веб-службу.   -  person jmarkmurphy    schedule 14.11.2017
comment
Можете ли вы показать WSDL для веб-сервиса?   -  person danny117    schedule 14.11.2017
comment
На самом деле, это веб-сервис, основанный на REST.   -  person Sadam Husain    schedule 15.11.2017


Ответы (1)


Решит ли динамический массив вашу проблему?

Мне любопытно, как вы возвращаете это веб-службе? Это программа SQLRPGLE, использующая SET RESULTS ARRAY и действующая как внешняя хранимая процедура?

Если это так, вы можете объявить ГЛОБАЛЬНУЮ ВРЕМЕННУЮ ТАБЛИЦУ, заполнить ее и УСТАНОВИТЬ КУРСОР РЕЗУЛЬТАТОВ...

person Mike Lopez    schedule 17.11.2017