Основной файл 'P' чем-то похож на таблицу SQL FROM
. С SQL вам не нужно явно указывать, когда читать следующую строку из таблицы, когда вы запускаете оператор UPDATE
или DELETE
; вам нужно только указать, какие строки обрабатывать с WHERE
и, возможно, какие действия предпринять со столбцами. Вы не имеете прямого контроля над временем дискового ввода-вывода в базовой логике; RPG (и SQL) позаботится об этом автоматически.
Но также можно использовать оператор SQL FETCH
для более прямого контроля над обработкой отдельных строк. Вы можете думать о полном процедурном файле RPG как о редактируемой таблице SQL FETCH
. При полной процедурной обработке вам потребуется кодировать операции (глаголы), такие как READ
или WRITE
, чтобы переходить от записи к записи.
В этом смысле переход от старой культуры файлов RPG 'P' к более поздним процедурным файлам RPG 'подобен переходу к более примитивной форме взаимодействия с базой данных до появления чего-то более современного, такого как SQL.
Тем не менее, одновременный и последующий прогресс в языке RPG одновременно позволил RPG эволюционировать до сегодняшнего полностью свободного языка, который не имеет необходимой визуальной связи с его ранними корнями, как просто «R'eport« P'rogram » Генератор. Сегодня он эффективно используется многими системными программистами в IBM i, возможно, чаще, чем C. (C все еще имеет пару заметных преимуществ, например, он имеет усовершенствованные оптимизаторы, которые недоступны для других языков, операции на битовом уровне, такие как сдвиги, и т. д .; зависит от того, какие функции необходимы, подходит ли RPG или нет. Ускоренная разработка, безусловно, возможна в RPG.)
Чтобы понять, как используются файлы 'P'rimary (и' S'econdary и связанные с ними), необходимо понять, как работает RPG "Cycle". Если используются полнопроцедурные файлы, вы фактически кодируете свою собственную версию цикла. В ответ вы получаете «цикл», который никоим образом не ограничивает вас; логика именно такая, как вы ее кодируете.