В чем разница между первичными и полными процедурными файлами, как это определено в RPG?
Первичные и полные процедурные файлы в RPG
Ответы (3)
Первичный файл использует логический цикл RPG для чтения ваших данных. Полный процедурный файл — это файл, в котором ваша логика контролирует доступ к вашим записям данных. Полные процедурные файлы, безусловно, наиболее распространены. На самом деле, я не думаю, что когда-либо писал программу, использующую логический цикл, со времен школы. Я редко вижу их в дикой природе.
Логический цикл RPG работает примерно так:
- Чтение записи в основном файле.
- Выполнение спецификаций расчета прорыва уровня
- Переместите данные из файловой области в поля в вашей программе RPG.
- Выполнение спецификаций расчета уровня детализации
- Вернитесь к началу.
После считывания последней записи устанавливается индикатор LR и выполняются расчеты пробоя уровня, после чего программа завершается.
Да, в RPG все ПОЛНОСТЬЮ отличается. Та же таблица базы данных, но на 100% другая логика программы.
Этот выбор — сердце и душа программирования RPG. Поэтому начните читать Руководство программиста RPG .
Если вы новичок в программировании iSeries (а по другим вашим вопросам я знаю, что вы ;-), используйте полные процедурные файлы. Это похоже на другие языки и системы.
Еще лучше использовать последнюю версию ILE RPG. Это поддерживает все концепции, которые вы знаете из других языков (процедуры, функции, локальные переменные и свободный формат). Старые версии тоже неплохие и делают то, для чего они созданы, но их концепции немного более экзотичны.
Первичный файл чем-то похож на таблицу SQL FROM
. В SQL вам не нужно явно указывать, когда читать следующую строку из таблицы, когда вы запускаете оператор UPDATE
или DELETE
; вам нужно только указать, какие строки обрабатывать с помощью WHERE
и, возможно, какие действия предпринять в отношении столбцов. У вас нет прямого контроля над синхронизацией дискового ввода-вывода в базовой логике; RPG (и SQL) позаботятся об этом автоматически.
Но также можно использовать оператор SQL FETCH
, чтобы иметь более прямой контроль над обработкой отдельных строк. Вы можете думать о F'ull-процедурном файле RPG как о таблице SQL FETCH
ed. При «полнопроцедурной обработке» вам потребуется закодировать операции (глаголы), такие как READ
или WRITE
, для перехода от записи к записи.
В этом смысле переход от старой культуры «основных файлов» RPG к более поздним «полным» процедурным файлам RPG подобен переходу к более примитивной форме взаимодействия с базой данных до появления чего-то более современного, такого как SQL.
Тем не менее, одновременные и более поздние усовершенствования языка RPG одновременно позволили RPG развиться до сегодняшнего языка полностью свободной формы, который не имеет необходимой визуальной связи со своими ранними корнями как просто программа «отчета». . Сегодня он эффективно используется многими системными программистами на IBM i, возможно, чаще, чем C. (C по-прежнему имеет несколько заметных преимуществ, например, он имеет расширенные оптимизаторы, недоступные для других языков, операции на уровне битов, такие как сдвиги, и т. д.; это зависит от того, какие функции необходимы, подходит ли RPG или нет. Более быстрое развитие, безусловно, возможно в RPG.)
Чтобы понять, как используются «первичные» (и «вторичные» и связанные с ними) файлы, необходимо понять, как работает «Цикл» RPG. Если используются «полные процедурные файлы», вы эффективно кодируете свою собственную версию «цикла». Взамен вы получаете «цикл», который вас никоим образом не ограничивает; логика именно такая, какой вы ее кодируете.