RPG (Report Program Generator)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 21:49, 8 июня 2016.
RPGReport Program Generator
Парадигма мультипарадигмальный
Разработчики IBM
Печать дисциплины Строгая, статическая
Диалект
RPG, RPG II, RPG III, RPG 400, RPG IV, RPG/ILE; RPG/Free, Baby/36, Baby/400, Lattice RPG
Влияние
RPG II

RPG (Report Program Generator) - это машинно независимый язык. Его конструкция позволяет написать программы без досконального знания операционной системы. Из-за логики программного цикла обработки (PLC), программист может сосредоточиться на проблемах, которые должны быть решены программой, а не операционной системой. Компилятор преобразует спецификации в инструкции, которые делают все, что необходимо для воспроизведения требуемой мощности для программы.

Применение RPG

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

RPG обладает следующими преимуществами для пользователя:

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

Создание файлов

Система команд и управления (CANDE) а так же система контроля сообщений (MCS) создает программный файл. Cande облегчает редактирование и управление программами. Дополнительная информация на CANDE предоставляется в CANDE Operations Reference Manual.

Диалекты RPG

RPG для систем на основе MCP поддерживает два диалекта: RPG I и II RPG. RPG I диалект совместим с RPG IBM 360/20. Диалект RPG II совместим с IBM System / 36 RPG II. Оба диалекта поддерживают расширения на основе MCP. Если нужны функции RPG I, 1 должен быть введен в Source Dialect field (колонка 51) из спецификации управления; в противном случае, этот столбец должен быть пустым. Исходный код программы не проверяется по отношению к синтаксису выбранного диалекта; эта опция используется только для разрешения конфликтов между диалектами. При условии, что никакого конфликта не существует, функции RPG II могут быть использованы, если указан диалект RPG I; Аналогичным образом, функции RPG I могут быть использованы если указан диалект RPG II.

Программы написанные на RPG

Программа, написанная на языке RPG, называется исходным кодом RPG программы. RPG компилятор проверяет, что исходный код программы синтаксически правильный, и преобразует этот исходник в машинный код. После компиляции программы, она готова для исполнения системой.

Организация исходного файла

Организация исходного файла программы, написанной на RPG проиллюстрирована на Рисунке 1

Рисунок 1
Технические характеристики Описание
Контроль (Control) Предоставляет информацию о программе и выбирает опции компилятора. Спецификация управления не является обязательной.
База данных (Database) Устанавливает связь между программой RPG и DMSII. База данных спецификации используется для вызова базы данных.
Файл (File) Описывает файлы, используемые в программе, и связывает их с аппаратными устройствами.
Атрибут файла (File Attribute) Обеспечивает дополнительную информацию о файле, используемой операционной системой. Эти спецификации сразу следуют за спецификацией файла, к которому они относятся.
Расширение (Extension) Описывает векторы (таблицы и массивы) и записи-адреса файлов, используемых в программе.
Счётчик строк (Line Counter) Предоставляет информацию о количестве напечатанных строк на каждой странице вывода на принтер.
Связь (Telecommunications) Устанавливает и поддерживает связь между программой RPG и системой управления сообщениями (MCS).
Библиотека (Library) Ссылки программы RPG в библиотеку процедур, написанных на любом языке, который может быть вызван с помощью программы RPG.
Атрибут Библиотеки (Library Attribute) Содержит дополнительную информацию, используемую библиотеками операционной системы. Эти спецификации следуют непосредственно за спецификацией самой библиотеки, к которой они относятся.
Вход (Input) Описывает расположение записей, прочитанных программой.
Расчет (Calculation) Описывает последовательность и сроки проведения расчетов, выполненных на данных в программе. Расчет характеристики также можно описать входным и выходным контролем для некоторых файлов.
Вывод (Output) Определяет тип и формат данных, записанных в качестве выхода из программы.
Альтернативная последовательность упорядочения (Alternate Collating Sequence ) Изменяет EBCDIC последовательности упорядочения. Характеристики записи также могут быть использованы.
Перевод файла (File Translation) Переводит символы между набором символов EBCDIC и указанным пользователем набором символов. Может предшествовать или следовать спецификации альтернативной последовательности упорядочения. Характеристики записи также могут быть использованы.
Вектор данных (Vector Data) Нагрузки во время компиляции векторных данных. Характеристики записи Canbe также используется.
Векторные элементы данных (Vector Data Elements) Обеспечивает дополнительную информацию о векторе данных, который используется операционной системой.

Пример кода

Следующая программа получает номер клиента в качестве входного параметра и возвращает имя и адрес в качестве выходных параметров. Это самый примитивный вариант синтаксиса RPG IV.

      * Исторически сложилось так, что написание программы в RPG
      * проводится в столбик, хотя ограничений на форматирование нет.
      * Цель строки в коде определяется буквенным кодом в начале колонки.
      * Например, звёздочкой обозначаются комментарии.

      * Символ "F" (file)  определяет файлы и другие устройства ввода вывода.
     F ARMstF1   IF   E       K     Disk    Rename(ARMST:RARMST)

      * Символ "D" используется для определения переменных
     D pCusNo          S              6p 
     D pName           S             30a
     D pAddr1          S             30a
     D pAddr2          S             30a
     D pCity           S             25a
     D pState          S              2a
     D pZip            S             10a

      * Символ "C" (calculation) используется для исполняемых операторов
      * параметры определяются с помощью ключевых слов plist и parm 
     C     *entry        plist
     C                   parm                    pCusNo
     C                   parm                    pName
     C                   parm                    pAddr1
     C                   parm                    pAddr2
     C                   parm                    pCity
     C                   parm                    pState
     C                   parm                    pZip

      * Команда "chain используется для произвольного доступа к ключу файла
     C     pCusNo        chain     ARMstF1

      * Если запись найдена, то перемещаем поля из файла в параметры
     C                   if        %found
     C                   eval      pName  = ARNm01
     C                   eval      pAddr1 = ARAd01
     C                   eval      pAddr2 = ARAd02
     C                   eval      pCity  = ARCy01
     C                   eval      pState = ARSt01
     C                   eval      pZip   = ARZp15
     C                   endif

      * RPG использует флаги.  Один из них "LR" первоначально обозначал последнюю запись
     C                   eval      *InLR = *On

Связанные страницы