IBM RPG II - IBM RPG II

РПГ II это очень ранняя и популярная версия IBM RPG язык программирования.

Он был разработан в конце 1960-х и предназначен для работы с самыми маленькими системами IBM того времени, такими как IBM 1130, IBM Система / 3, Система / 32, Система / 34, Система / 36. Однако он был также доступен для Система / 370, The Система певцов 10, Univac 90/25, 90/30, 90/40 и Ван В.С. Серии. ICL выпустила версии для своего ICL 2903 система и для VME / K; и Корпорация Берроуз произвел компилятор RPG II с расширениями базы данных для его B1700 серия компьютеров.

Расширенная версия РПГ III появился в 1978 году.

Он имеет ряд необычных функций, в том числе: подразумеваемый цикл обработки; и что это язык программирования с фиксированным форматом, поэтому программы трудно читать без специального шаблона отладки.[1]

Функции

RPG II - это язык программирования с фиксированным форматом, что означает, что код должен быть размещен в точных местах столбцов для получения правильных результатов. Существует восемь различных типов спецификаций, для каждого из которых используются отдельные формы кодирования, а также специальный шаблон отладки.[1] используется как вспомогательное средство для чтения распечаток программ.

Каждая программа RPG II выполняется в неявном цикле, программный цикл, который применяет программу последовательно к каждой записи файла - это задокументировано с помощью диаграммы «Логический поток» в шаблоне отладки.[1] Каждая запись (отдельная перфокарта) будет сравниваться с каждой строкой в ​​программе, которая будет воздействовать на запись или нет, в зависимости от того, был ли у этой строки «индикатор» включен или выключен - из набора логические переменные, пронумерованные 01–99 для определенных пользователем целей, или другие меньшие наборы, основанные на функциях обработки записей, полей или отчетов. Специальные переменные, такие как UDATE, UYEAR, PAGE и т. Д., Заполняются при запуске программы или при переполнении страницы, даже если для этих действий нет явных инструкций. Общие вычисления и вывод выполняются в «общем времени», после детального цикла, когда L1 / LR были установлены фиксированной логикой.

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

Такие устройства, как рабочая станция (WORKSTN), клавиатура (KEYBORD) или консоль (CONSOLE), не имеют фиксированного количества записей в начале задания и, следовательно, для включения RPG с фиксированной логикой «Последняя запись» "цикл, индикатор LR может быть включен с помощью инструкции SETON. LR не может быть засчитан.

РПГ II не претерпела значительных изменений с 1977 г. на System / 34 до 2000 г., когда Продвинутый / 36 был исключен из маркетинга. Изменения, внесенные в версию 1970-х годов, включали группировку IFEQ / IFNE / IFGT / IFGE / IFLT / IFLE и END. Кроме того, call / parm позволяет вызывать внешние подпрограммы. Еще одно изменение заключалось в том, что для внутренних подпрограмм вам больше не нужно было указывать SR в столбцах 7 и 8 спецификаций C (расчет).

Сторонние поставщики продали более 200 различных подпрограмм ассемблера, которые могли использоваться программистами System / 36 и Advanced / 36 для выхода за пределы ограничений RPG II. Некоторыми ограничениями RPG II для System / 3, 32, 34 и 36, включая Advanced / 36, были ограничение в 64 КБ и количество файлов, которые вы могли иметь в программе. Поэтому, если у вас было много строк программирования или большие массивы, было легко превысить 64000 байтов объектного кода. Однако RPG II, работающая на AS / 400 и последующих версиях iseries и IBM i (те, которые работают под OS / 400 или i5 / OS в так называемой S / 36E (среде выполнения)), эти ограничения (64 Кбайт и количество файлы) были либо значительно расширены, либо удалены.

Характеристики RPGII

В популярных Система / 36 реализация RPG II, существует 8 различных типов спецификаций:

U - Спецификация Auto Report требуется только для программ Auto Report.
ЧАС - Спецификация заголовка находится в верхней части программы и описывает параметры компилятора, такие как максимальный размер компиляции, является ли программа программой MRT (терминал с несколькими запросами) и какой тип листинга создается при компиляции программы. Имя объекта созданной программы находится в столбцах 75–80; если источник не имеет спецификации H, используется имя RPGOBJ.
F - Далее следуют спецификации файлов, в которых описаны файлы, используемые в программе. Файлы могут быть дисковыми файлами (DISK) или устройствами, такими как принтер (PRINTER), рабочая станция (WORKSTN), клавиатура (KEYBORD), неформатированный дисплей (CRT или DISPLAY) или определяемый пользователем (SPECIAL). Описываются размер записи, размер блока, индикаторы переполнения и внешние индикаторы. Вполне возможно, что программа RPG не будет использовать спецификации F.
E - Далее следуют спецификации расширений, которые описывают массивы и таблицы, которые могут быть предварительно извлечены из файлов на диске (входная таблица), взяты из констант, помещенных в конце источника между символами ** и / *, или построены на основе вычислений. .
L - Далее следуют спецификации счетчиков строк, и, если они есть, описывают форму для печати. Он определяет количество строк на странице и позиции, где начинается и заканчивается печать.
я - Далее следуют входные спецификации, описывающие области данных в файлах. RPG II позволяет переопределить области данных, чтобы поле с именем FLDA могло занимать ту же область, что и массив AR, содержащий 8 элементов по 1 символу каждый. Могут быть описаны не записываемые области, такие как структуры данных. В зависимости от значений входной записи индикаторы могут быть обусловлены.
C - Далее следуют расчетные спецификации. Итоговые поля можно описывать и накапливать. Возможны сложные вычисления и манипуляции со строками. Индикаторы могут быть условными.
О - Спецификации вывода, которые описывают запись вывода с точки зрения полей и позиций вывода.

Девятая была добавлена ​​позже в 1977 году:[2]

Т - Телекоммуникации

Коды операций появляются в столбцах 28–32 спецификации расчетов RPG-II.

Код операцииИмя
ДОБАВИТЬДобавлять
SUBВычесть
MULTУмножить
DIVРазделять
Z-ADDНоль и добавить
Z-SUBНоль и вычесть
MVRПереместить остаток
ДВИГАТЬСЯДвигаться
MOVELДвижение влево
МХЛЗОПерейти от высокой к низкой зоне
MLHZOПерейти от низкой к высокой зоне
MLLZOПерейти от низкой к низкой зоне
MHHZOДвигайтесь высоко в высокую зону
БИТОНБит на
НЕМНОГООткусил
ТЕСТБТестовый бит
ИДТИ КИдти к
ТЕГТег (пункт назначения GOTO)
EXSRВыполнить подпрограмму
BEGSRНачать подпрограмму
ENDSRКонец подпрограммы
УСТАНОВЛЕН НАУстановлен на
НАБОР ИЗОтправляться
EXCPTИсключение
ВЫХОДВыход
RLABLПереопределить ярлык
ULABLМетка пользователя
ВЫЗОВ1Вызов
PARM1Параметр
ЦЕПЬЦепь
ЧИТАТЬЧитать
ПРОЧИТАТЬЧитать равно
READPЧитать предыдущий
РЕДПЕЧитать предыдущее равно
SETLLУстановить нижние пределы
НАБОРНабор
ВРЕМЯВремя суток (000000-235959)
DSPLYОтображать
СОРТАСортировка массива
XFOOTCrossfoot
MOVEAПереместить массив
LOKUPПоиск (найти в массиве)
  1. CALL / PARM был добавлен в RPG II с выпуском 6.0 (также известный как VASP).

CHAIN ​​извлекает запись в индексированном файле, названном в Факторе 2, который соответствует точному ключу, указанному значением в Факторе 1.

SETLL заставляет указатель индекса для файла, названного в Факторе 2, позиционироваться в местоположении, указанном значением в Факторе 1.

СОРТА вызывает сортировку именованного массива на месте; то есть элементы появляются по порядку.

Z-SUB вычисляет коэффициент 2 с противоположным знаком и перемещается в поле результата.

XFOOT вызывает суммирование массива и перемещение результата в поле результата.

MVR должен следовать за операцией DIV. Целочисленный остаток от операции DIV помещается в поле результата. MVR после операции DIV для «56, разделенного на 3» поместит значение 2 в поле результата.

Индикаторы

Индикаторы либо «установлены», либо нет, поэтому они фактически представляют собой встроенную серию "флаги" или же логические типы данных.

  • Стандарт:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
  • Индикаторы остановки:
H1 H2 H3 H4 H5 H6 H7 H8 H9
  • Индикаторы соответствия:
M1 M2 M3 M4 M5 M6 M7 M8 M9 MR
  • Индикаторы контрольного уровня:
L0 L1 L2 L3 L4 L5 L6 L7 L8 L9
  • Индикаторы командных клавиш:
KA KB KC KD KE KF KG KH KI KJ KK KL KM KN KP KQ KR KS KT KU KV KW KX KY
Эти индикаторы относятся к клавишам команд с 1 по 24 в указанном порядке. Обратите внимание, что индикатора KO нет.
  • Индикатор первого цикла (1-я страница, в основном используется для файлов принтера):
1P
  • Индикатор последней записи:
LR
  • Индикаторы переполнения:
OA OB OC OD OE OF OG OV
  • Внешние индикаторы:
U1 U2 U3 U4 U5 U6 U7 U8
Система / 36 шаблонов SEU
3ЧАС
5F / файлы
6F / расширения
7E
8L
10I / заголовок
11I / поля
12C
13O / заголовок
14O / поля

Образец кода

     F ************************************************ ************** F * ДАННАЯ ПРОГРАММА СЧИТЫВАЕТ СОДЕРЖАНИЕ ФАЙЛА ЗАГОЛОВКИ СЧЕТА F * И ПЕЧАТАЕТ СЧЕТА, ОБРАБОТАННЫЕ НА ДАТУ, УСТАНОВЛЕННУЮ В ОБЛАСТИ F * ЛОКАЛЬНЫХ ДАННЫХ. ЕСТЬ ПЕРЕРЫВ ПО УРОВНЮ И ИТОГО ДЛЯ F * КАЖДОГО МАГАЗИНА. F *********************************************** ************** F * FINVHDR IP F 62 ДИСК F ПРИНТЕР 132 ПРИНТЕРА IINVHDR NS 01 1NC I 1 3 STORE L1 I 4 13 INVNO I 14 20 CUSTNO I 21 45 STNAM I 46 53 INVDAT I 54 622TOTINV I UDS I 1 8 RPTDAT C 01 INVDAT COMP RPTDAT 11 C 01 11 ДОБАВИТЬ TOTINV L1TOT 92 C 01 11 ДОБАВИТЬ TOTINV LRTOT 92 OPRINTER H 101 1P O OR OF O PAGE Z 106 O 102 'PAGE' O 59 'VERY БОЛЬШОЙ 72 "МАГАЗИНЫ, ИНК." O UDATE Y 17 O 8 'ДАТА РАБОТЫ' OH 1 1P O OR OF O 73 'ЕЖЕДНЕВНЫЕ ПРОДАЖИ ПО МАГАЗИНУ' OH 2 1P O OR OF O RPTDAT 83 O 63 'НА ДАТУ:' OH 1 1P O OR OF O 6 'МАГАЗИН 'O 18' СЧЕТ 'O 28' КЛИЕНТ 'O 58' КЛИЕНТ 'O 78' СЧЕТ 'OH 2 1P O OR OF O 6' НОМЕР 'O 18' НОМЕР 'O 28' НОМЕР 'O 58' НАЗВАНИЕ 'O 78' ИТОГО 'OD 0 L1 O STORE 6 OD 1 01 11 O INVNO 18 O CUSTNO 28 O STNAM 58 O TOTINV1B 78 OT 1 L1 O 45 'ИТОГО МАГАЗИНА ...' O L1TOT 1B 78 OT 1 LR O 45 'ВСЕГО ...' O LRTOT 1 78 

Рекомендации

  1. ^ а б c "Шаблон отладки IBM RPG", Музей истории компьютеров
  2. ^ "Компиляторы IBM System / 3 Model 8, Model 10, Model 12 и Model 15 RPG II", Спецификации программных продуктов IBM, ноябрь 1977 г., стр. 3

внешняя ссылка