Первичные и полные процедурные файлы в RPG

В чем разница между первичными и полными процедурными файлами, как это определено в RPG?


person abhinav singh    schedule 02.02.2010    source источник


Ответы (3)


Первичный файл использует логический цикл RPG для чтения ваших данных. Полный процедурный файл — это файл, в котором ваша логика контролирует доступ к вашим записям данных. Полные процедурные файлы, безусловно, наиболее распространены. На самом деле, я не думаю, что когда-либо писал программу, использующую логический цикл, со времен школы. Я редко вижу их в дикой природе.

Логический цикл RPG работает примерно так:

  1. Чтение записи в основном файле.
  2. Выполнение спецификаций расчета прорыва уровня
  3. Переместите данные из файловой области в поля в вашей программе RPG.
  4. Выполнение спецификаций расчета уровня детализации
  5. Вернитесь к началу.

После считывания последней записи устанавливается индикатор LR и выполняются расчеты пробоя уровня, после чего программа завершается.

person Tracy Probst    schedule 06.02.2010
comment
Поверьте, они все еще там. Я сам написал довольно много программ с помощью Program Cycle. Всегда любил индикатор общего времени. Может, потому что я работал в другой сфере (логистика, ERP), а может просто возраст... ;-) - person robertnl; 07.02.2010
comment
Общее время. Есть выражение, которого я давно не слышал. - person Tracy Probst; 09.02.2010
comment
Оказывается, в PERL тоже был (есть) режим с циклической логикой, чем-то напоминающий ранние RPG. Этот режим не в фаворе в обоих языках, однако в каждой парадигме есть моменты, когда она достаточно хорошо удовлетворяет потребности конкретной проблемы. Сейчас мы от него ушли, отчасти для эффективности, а также для более гибкого управления. Даже когда задача идеально подходит в данный момент для цикла, вы часто обнаружите, что новые функции требуют логики, которая плохо вписывается в цикл. И @robertnl, я думаю, это возраст ;-) - person WarrenT; 24.09.2012
comment
Третий вариант теперь обычно рекомендуется выше основных файлов или полнопроцедурного. Встроенный SQL позволяет делать больше, используя меньше кода и более эффективно. - person WarrenT; 24.09.2012
comment
Да, встроенный SQL. Был там, сделал это, получил футболку. Это здорово, эффективно и современно. И мне так и не удалось убедить своих коллег перейти с полностью процедурного на SQL (даже младших). Итак, представьте себе эту ситуацию. Я занимался олдскульными вещами (цикл), обычными вещами (полностью процедурными) и современными вещами (встроенный SQL). Мне было весело. И все же многие коллеги хотели делать то же самое, что и годом ранее, и годом ранее. Странный. - person robertnl; 25.09.2012
comment
@WarrenT, я довольно много программировал на Perl, включая логику цикла. Это я читал в мануале. Это имело смысл для меня, и я использовал его пару раз. Никогда не осознавал, что это было естественно для меня, как для старого любителя ролевых игр. Только теперь я понимаю пушистые глаза других программистов. Это весело!! - person robertnl; 25.09.2012

Да, в RPG все ПОЛНОСТЬЮ отличается. Та же таблица базы данных, но на 100% другая логика программы.

Этот выбор — сердце и душа программирования RPG. Поэтому начните читать Руководство программиста RPG .

Если вы новичок в программировании iSeries (а по другим вашим вопросам я знаю, что вы ;-), используйте полные процедурные файлы. Это похоже на другие языки и системы.

Еще лучше использовать последнюю версию ILE RPG. Это поддерживает все концепции, которые вы знаете из других языков (процедуры, функции, локальные переменные и свободный формат). Старые версии тоже неплохие и делают то, для чего они созданы, но их концепции немного более экзотичны.

person robertnl    schedule 05.02.2010

Первичный файл чем-то похож на таблицу SQL FROM. В SQL вам не нужно явно указывать, когда читать следующую строку из таблицы, когда вы запускаете оператор UPDATE или DELETE; вам нужно только указать, какие строки обрабатывать с помощью WHERE и, возможно, какие действия предпринять в отношении столбцов. У вас нет прямого контроля над синхронизацией дискового ввода-вывода в базовой логике; RPG (и SQL) позаботятся об этом автоматически.

Но также можно использовать оператор SQL FETCH, чтобы иметь более прямой контроль над обработкой отдельных строк. Вы можете думать о F'ull-процедурном файле RPG как о таблице SQL FETCHed. При «полнопроцедурной обработке» вам потребуется закодировать операции (глаголы), такие как READ или WRITE, для перехода от записи к записи.

В этом смысле переход от старой культуры «основных файлов» RPG к более поздним «полным» процедурным файлам RPG подобен переходу к более примитивной форме взаимодействия с базой данных до появления чего-то более современного, такого как SQL.

Тем не менее, одновременные и более поздние усовершенствования языка RPG одновременно позволили RPG развиться до сегодняшнего языка полностью свободной формы, который не имеет необходимой визуальной связи со своими ранними корнями как просто программа «отчета». . Сегодня он эффективно используется многими системными программистами на IBM i, возможно, чаще, чем C. (C по-прежнему имеет несколько заметных преимуществ, например, он имеет расширенные оптимизаторы, недоступные для других языков, операции на уровне битов, такие как сдвиги, и т. д.; это зависит от того, какие функции необходимы, подходит ли RPG или нет. Более быстрое развитие, безусловно, возможно в RPG.)

Чтобы понять, как используются «первичные» (и «вторичные» и связанные с ними) файлы, необходимо понять, как работает «Цикл» RPG. Если используются «полные процедурные файлы», вы эффективно кодируете свою собственную версию «цикла». Взамен вы получаете «цикл», который вас никоим образом не ограничивает; логика именно такая, какой вы ее кодируете.

person user2338816    schedule 30.03.2014