IBM РПГ
Парадигма | Мультипарадигмальность |
---|---|
Разработчик | ИБМ |
Впервые появился | 1959 год |
Стабильная версия | РПГ IV версия 7 выпуск 4
/ 6 октября 2020 г. |
Дисциплина набора текста | Сильный , статичный |
ТЫ | CPF , SSP , OS/400 , IBM i , OS/VS1 , z/OS , DOS/VSE , VSE/SP , VSE/ESA , z/VSE , VS/9 , PRIMOS , OpenVMS , Wang VS , Burroughs MCP , HP MPE , MS-DOS , OS/2 , Microsoft Windows |
Диалекты | |
РПГ, РПГ II , РПГ III , РПГ 400, РПГ IV , РПГ/ИЛЭ; РПГ/бесплатно, Бэби/36, Бэби/400, Решётчатая РПГ, VAX RPG II | |
Под влиянием | |
9PAC , ФАРГО |
RPG — язык программирования высокого уровня для бизнес-приложений , представленный в 1959 году для IBM 1401 . Он наиболее известен как основной язык программирования линейки компьютерных продуктов IBM среднего класса, включая IBM i операционную систему . [1] В RPG традиционно присутствует ряд отличительных концепций, таких как программный цикл и столбцово-ориентированный синтаксис. [2] Самая последняя версия — RPG IV , которая включает в себя ряд возможностей модернизации, включая синтаксис свободной формы. [3]
Платформы
[ редактировать ]Язык программирования RPG изначально был создан IBM для своих систем 1401. Позже IBM выпустила реализации для 7070/72/74. [4] [5] и Система/360 ; [6] RPG II стал основным языком программирования для их компьютеров среднего класса линейки ( System/3 , System/32 , System/34 , System/38 , System/36 и AS/400 ). Также были реализованы DEC VAX , Sperry Univac BC/7, Univac system 80, Siemens BS2000 , Burroughs B700, B1700 , Hewlett Packard HP 3000 , серия ICL 2900 , Honeywell 6220 и 2020, Four-Phase IV/70 и IV. /90, Singer System 10 и WANG VS , а также различные компиляторы и среды выполнения для систем на базе Unix, таких как Infinite36 (ранее Unibol 36) и ПК (Baby/400, Lattice-RPG).
Приложения RPG II по-прежнему поддерживаются IBM z/VSE. [7] и z/OS , операционные системы [8] Унисис МКП , [9] Microsoft Windows [10] и ОпенВМС . [11]
История
[ редактировать ]Фон
[ редактировать ]Первоначально разработанный IBM в 1959 году, название Report Program Generator описывало назначение языка: создание отчетов из файлов данных. [12] FOLDOC благодарит Уилфа Хей за работу в IBM, результатом которой стала разработка ролевой игры. [13] FARGO ( « -один автоматического Четырнадцать отчетов создания » Операция ) была предшественником RPG на IBM 1401 .
Оба языка были предназначены для облегчения перехода технических специалистов по счетных машин IBM (Tab) записывающему оборудованию к новым на тот момент компьютерам. Технические специалисты по станкам привыкли подключать провода к панелям управления для выполнения операций ввода, вывода, управления и счета (сложение, вычитание, умножение, деление). Программы табулатурных машин выполнялись импульсами, излучаемыми в машинном цикле; следовательно, FARGO и RPG эмулировали понятие машинного цикла с помощью программного цикла. RPG превосходила FARGO и быстро заменила ее в качестве предпочтительной программы для создания отчетов.
Позже IBM реализовала RPG (7070-RG-902), но не FARGO, на IBM 7070/72/74. [14] [15]
Альтернативными языками, обычно доступными в то время, были Ассемблер , КОБОЛ или ФОРТРАН . Ассемблер и COBOL были более распространены в бизнес-операциях на мэйнфреймах ( System/360 модели 30 и выше), а RPG чаще использовалась клиентами, которые переходили от оборудования для создания таблиц (System/360 модели 20).
РПГ II
[ редактировать ]RPG II была представлена примерно в 1969 году вместе с System/3 серией компьютеров . Позже он использовался в System/32 , System/34 и System/36 с улучшенной версией языка. RPG II также был доступен для более крупных систем, включая IBM System/370 мэйнфрейм под управлением DOS/VSE (затем VSE/SP , VSE/ESA и z/VSE ). ICL также выпустила версию своей операционной системы VME/K .
На заре развития RPG ее основным преимуществом был программный цикл . Программист писал код для обработки отдельной записи, а программный цикл выполнял изменения для каждой записи файла, заботясь о потоке управления. В это время каждая запись (индивидуальная перфокарта) будет сравниваться с каждой строкой в программе, которая будет действовать на запись или нет, в зависимости от того, включен или нет в этой строке «индикатор». Индикатор состоял из набора логических переменных с номерами 01–99 для определяемых пользователем целей или других более мелких наборов на основе функций обработки записей, полей или отчетов. Концепция разрывов уровней и сопоставления записей уникальна для языка RPG II и изначально была разработана для чтения карт. Функция сопоставления записей цикла позволила легко обрабатывать файлы, имеющие связь между заголовком и подробностями. Программы RPG, написанные с использованием преимуществ программного цикла, могут создавать сложные отчеты с гораздо меньшим количеством строк компьютерного кода, чем программы, написанные на языке программирования. COBOL и другие бизнес-ориентированные языки.
В спецификациях файлов программы перечислены все файлы, в которые записываются, считываются или обновляются, за которыми следуют спецификации определения данных, содержащие элементы программы, такие как структуры данных и размерные массивы, что очень похоже на раздел «Рабочее хранилище» в программе COBOL. Далее следуют Спецификации вычислений, которые содержат исполняемые инструкции. Далее могут следовать выходные характеристики, которые можно использовать для определения макета других файлов или отчетов. В качестве альтернативы файлы, некоторые структуры данных и отчеты могут быть определены извне, что в основном устраняет необходимость вручную определять спецификации ввода и вывода кода (« I/O »).
РПГ III
[ редактировать ]RPG III был создан для System/38 и его преемника AS/400 . RPG III значительно отошел от исходного языка, предоставив современные структурированные конструкции, такие как блоки IF-ENDIF, циклы DO и подпрограммы . RPG III также был доступен для более крупных систем, включая IBM System/370 мэйнфрейм под управлением OS/VS1 . Он также был доступен в Unisys для операционной системы VS/9 , работающей на мэйнфреймах UNIVAC Series 90 .
С момента появления IBM System/38 в 1979 году большинство программистов ролевых игр прекратили использование цикла в пользу управления потоком программы с помощью стандартных конструкций циклов, хотя IBM продолжала обеспечивать обратную совместимость для цикла.
ДЕ/РПГ
[ редактировать ]DE/RPG или Data Entry RPG был доступен исключительно на рабочих станциях ввода данных серии IBM 5280 в начале 80-х. Он был похож на RPG III, но не имел внешних описаний данных (DDS) для описания данных (файлов), как в System/38 и его преемниках. Вместо этого часть DDS пришлось включить в сам исходник RPG.
РПГ/400
[ редактировать ]RPG/400 по сути был RPG III, работающим на AS/400. IBM переименовала компилятор RPG в «RPG/400», но на момент своего появления он был идентичен компилятору RPG III в System/38. Практически все продукты IBM System/38 были переименованы в xxx/400, и компилятор RPG не стал исключением. RPG III, скомпилированный с помощью компилятора RPG/400, не предлагал ничего нового для языка RPG III, пока IBM не начала разработку новых кодов операций, таких как SCAN, CAT и XLATE, после нескольких лет доступности AS/400. Эти улучшения RPG III не были доступны в версии RPG III System/38.
РПГ IV и ИЛЭ РПГ
[ редактировать ]РПГ IV , он же РПГ ИЛЭ [16] ) был выпущен в 1994 году как часть версии V3R2 OS/400 (теперь известной как IBM i). [17] [18]
С выходом RPG IV название RPG официально больше не было инициализмом . RPG IV предлагала большее разнообразие выражений в своей расширенной спецификации расчета коэффициента-2, а позже в своих спецификациях вычислений в свободном формате и синтаксисе процедур. RPG IV в рамках интегрированной языковой среды известен как ILE RPG, и в руководствах пользователя объясняются нюансы обоих. [19] [20] [21] RPG IV и ILE RPG поддерживаются IBM на текущей платформе IBM i. [22]
В 2001 году, с выпуском OS / 400 V5R1, RPG IV предложил большую свободу для вычислений, чем предлагалась в спецификации вычислений Extended Factor-2: исходная запись в свободном формате с возможностью текста в качестве альтернативы исходному источнику, зависящему от столбца. формат. Вычисление «/FREE» не требовало размещения кода операции в определенном столбце; код операции не является обязательным для операций EVAL и CALLP; и синтаксис обычно более похож на синтаксис основных языков программирования общего назначения. До ноября 2013 года свободный формат применялся исключительно к спецификациям расчета. [23] С IBM i обновлением языка V7R1 TR7 вычисления «/free» и «/end-free» больше не нужны, и язык окончательно разорвал связь с перфокартами.
IBM Rational Developer for i (RDi), [24] Интегрированная среда Eclipse на базе разработки рекомендована IBM для разработки RPG. [25] Текстовый редактор Source Entry Utility (SEU) больше не рекомендуется для разработки RPG, и разработка была прекращена после IBM i 6.1. [26] Другие устаревшие инструменты разработчика включают CODE/400 (на основе IBM WorkFrame/2) и VisualAge для RPG .
Продолжающиеся улучшения языка
[ редактировать ]IBM продолжает совершенствовать язык RPG [27] посредством выпусков программного обеспечения и внутрирелизных «обновлений технологий» (TR). [28] [29] Добавлено больше встроенных функций (BIF). Он имеет возможность связываться с Java , объектами [30] IBM i и API ; его можно использовать для написания программ CGI с помощью веб-инструментария Cgidev2 от IBM , [31] RPG Toolbox и другие коммерческие веб-пакеты. Даже с учетом изменений она сохраняет значительную обратную совместимость, поэтому программа RPG, написанная 37 лет назад, может работать сегодня с небольшими изменениями или вообще без них.
Прекомпилятор SQL позволяет нынешним разработчикам ролевых игр воспользоваться преимуществами SQE (SQL Query Engine) IBM, основанного на затратах. При традиционном подходе F-Spec разработчик должен был определить конкретный путь доступа к набору данных, теперь они могут реализовать стандартные встроенные операторы SQL непосредственно в программе. При компиляции прекомпилятор SQL преобразует операторы SQL в операторы RPG, которые вызывают программы менеджера базы данных, которые в конечном итоге реализуют запрос запроса.
Язык RPG IV основан на наборе символов EBCDIC , но также поддерживает UTF-8, UTF-16 и многие другие наборы символов. Некоторые считают, что потокобезопасные аспекты языка являются своеобразными, поскольку команда компиляторов решила проблему потоков, предоставив каждому потоку собственное статическое хранилище, вместо того, чтобы сделать среду выполнения RPG повторно входящей. Было отмечено, что это запутывает различие между потоком и процессом (что делает потоки RPG IV своего рода гибридом между потоками и процессами).
В 2010 году IBM запустила RPG Open Access , также известную как Rational Open Access: RPG Edition . Он позволяет программисту определять новые обработчики ввода-вывода, что позволяет считывать данные и записывать их в источники, для которых RPG не обеспечивает встроенную поддержку. [32]
Типы данных
[ редактировать ]RPG поддерживает следующие типы данных.
Примечание:
Символ в столбце типа данных — это символ, который закодирован в спецификации определения в столбце, предназначенном для типа данных. Для сравнения: в таком языке, как C, где определения переменных имеют свободный формат и для объявления целочисленной переменной используется такое ключевое слово, как int , в RPG переменная определяется с помощью спецификации определения фиксированного формата. В спецификации определения, обозначаемой буквой D в столбце 6 исходной строки, символ типа данных будет закодирован в столбце 40 . Кроме того, если символ типа данных опущен, то есть оставлен пустым, по умолчанию используется значение A , если десятичные позиции не указаны, P, когда десятичные позиции указаны для автономных полей, и S (ZONED), когда десятичные позиции указаны в пределах структура данных.
Тип данных | Имя | Длина | Описание |
---|---|---|---|
A
|
Буквенно-цифровой символ | От 1 до 16 773 104 байт (фиксировано) От 1 до 16 773 100 байт (разной длины) |
Буквенно-цифровой символ |
B
|
Двоично-числовой | 1 байт (8-бит) 2 байта (16 бит) 4 байта (32-битный) 8 байт (64-бит) |
Двоичное целое число со знаком |
C
|
персонаж UCS-2 | От 1 до 8 386 552 символов (фиксировано) От 1 до 8 386 550 символов (варьируется) |
16-битный символ UCS-2 ( DBCS или EGCS) |
D
|
Дата | 10 байт | Дата: год, месяц, день |
F
|
с плавающей запятой Число | 4 байта (32-битный) 8 байт (64-бит) |
Знаковое двоичное вещественное число с плавающей запятой |
G
|
Графический персонаж | От 1 до 8 386 552 символов (фиксировано) От 1 до 8 386 550 символов (варьируется) |
16-битный графический символ ( DBCS или EGCS) |
I
|
Целочисленное число | 1 байт (8-бит) 2 байта (16 бит) 4 байта (32-битный) 8 байт (64-бит) |
Двоичное целое число со знаком |
N
|
Индикатор символа | 1 байт | '1' = ИСТИНА '0' = ЛОЖЬ |
O
|
Объект | Размер не разглашается | Ссылка на объект |
P
|
Упакованные десятичные числа | от 1 до 63 цифр, 2 цифры в байте плюс знак |
Десятичное число со знаком и фиксированной запятой, состоящее из целых и дробных цифр. |
S
|
Зонированное десятичное число | от 1 до 63 цифр, 1 цифра на байт |
Десятичное число со знаком и фиксированной запятой, состоящее из целых и дробных цифр. |
T
|
Время | 8 байт | Время: час, минута, секунда |
U
|
Целочисленное число | 1 байт (8-бит) 2 байта (16 бит) 4 байта (32-битный) 8 байт (64-бит) |
Беззнаковое двоичное целое число |
Z
|
Временная метка | 26 байт | Дата и время : год, месяц, день, час, минута, секунда, микросекунды |
*
|
Базовый указатель Указатель процедуры Системный указатель |
16 байт | Адрес к данным Обращение к активированной процедуре Адрес объекта |
Пример кода
[ редактировать ]Следующая программа получает номер клиента в качестве входного параметра и возвращает имя и адрес в качестве выходных параметров. Это самая примитивная версия синтаксиса RPG IV. Та же программа показана позже с постепенно более современными версиями синтаксиса и постепенно более смягченными правилами.
* Historically RPG was columnar in nature, though free-formatting * was allowed under particular circumstances. * The purpose of various lines code are determined by a * letter code in column 6. * An asterisk (*) in column 7 denotes a comment line * "F" (file) specs define files and other i/o devices F ARMstF1 IF E K Disk Rename(ARMST:RARMST) * "D" (data) specs are used to define variables 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) specs are used for executable statements * Parameters are defined using plist and parm opcodes C *entry plist C parm pCusNo C parm pName C parm pAddr1 C parm pAddr2 C parm pCity C parm pState C parm pZip * The "chain" command is used for random access of a keyed file C pCusNo chain ARMstF1 * If a record is found, move fields from the file into parameters 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 makes use of switches. One switch "LR" originally stood for "last record" * LR flags the program and its dataspace as removable from memory C eval *InLR = *On
Та же программа с использованием бесплатных вычислений, доступных начиная с V5R1:
* "F" (file) specs define files and other i/o devices FARMstF1 IF E K Disk Rename(ARMST:RARMST) * "D" (data) specs are used to define variables and parameters * The "prototype" for the program is in a separate file * allowing other programs to call it /copy cust_pr * The "procedure interface" describes the *ENTRY parameters D getCustInf PI D pCusNo 6p 0 const D pName 30a D pAddr1 30a D pAddr2 30a D pCity 25a D pState 2a D pZip 10a /free // The "chain" command is used for random access of a keyed file chain pCusNo ARMstF1; // If a record is found, move fields from the file into parameters if %found; pName = ARNm01; pAddr1 = ARAd01; pAddr2 = ARAd02; pCity = ARCy01; pState = ARSt01; pZip = ARZp15; endif; // RPG makes use of switches. One switch "LR" originally stood for "last record" // LR actually flags the program and its dataspace as removable from memory. *InLR = *On; /end-free
Предположим, что таблица примера ARMSTF1 была создана с использованием следующего оператора SQL:
create table armstf1
(arcnum decimal(7,0),
arname char(30),
aradd1 char(30),
aradd2 char(30),
arcity char(25),
arstte char(2),
arzip char(10))
Та же программа с использованием свободных вычислений и встроенного SQL:
* RPG IV no longer requires the use of the *INLR indicator to terminate a program. * by using the MAIN keyword on the "H" (Header) spec, and identifying the "main" or * entry procedure name, the program will begin and end normally without using the * decades-old RPG Cycle and instead a more "C like" begin and end logic. H MAIN(getCustInf) * "D" (data) specs are used to define variables and parameters * The "prototype" for the program is in a separate file * allowing other programs to call it /copy cust_pr * The "procedure interface" describes the *ENTRY parameters P getCustInf B D getCustInf PI D pCusNo 6p 0 const D pName 30a D pAddr1 30a D pAddr2 30a D pCity 25a D pState 2a D pZip 10a /free exec sql select arName, arAddr1, arAdd2, arCity, arStte, arZip into :pName, :pAddr1, :pAddr2, :pCity, :pState, :pZip from ARMstF1 where arCNum = :pCusNo for fetch only fetch first 1 row only optimize for 1 row with CS; /end-free P GetCustInf E
Начиная с версии операционной системы V7R1, вышеуказанной программе не обязательно нужен прототип в отдельном файле, поэтому ее можно полностью записать так:
H main(GetCustInf)
D ARMSTF1 E DS
P GetCustInf B
D GetCustInf PI extpgm('CUS001')
D inCusNo like(arCNum) const
D outName like(arName)
D outAddr1 like(arAdd1)
D outAddr2 like(arAdd2)
D outCity like(arCity)
D outState like(arStte)
D outZip like(arZip)
/free
exec sql select arName, arAdd1, arAdd2, arCity, arStte, arZip
into :outName, :outAddr1, :outAddr2, :outCity, :outState,
:outZip
from ARMSTF1
where arCNum = :inCusNo
fetch first 1 row only
with CS
use currently committed;
/end-free
P GetCustInf E
Наконец, если вы примените к вашей операционной системе 7.1 связанный с PTF компилятора Technology Refresh 7 (TR7), то приведенную выше программу можно будет полностью закодировать в свободной форме следующим образом:
ctl-opt main(GetCustInf);
dcl-ds ARMSTF1 ext end-ds;
dcl-proc GetCustInf;
dcl-pi *n extpgm('CUS001');
inCusNo like(arCNum) const;
outName like(arName);
outAddr1 like(arAdd1);
outAddr2 like(arAdd2);
outCity like(arCity);
outState like(arStte);
outZip like(arZip);
end-pi;
exec sql select arName, arAdd1, arAdd2, arCity, arStte, arZip
into :outName, :outAddr1, :outAddr2, :outCity, :outState,
:outZip
from ARMSTF1
where arCNum = :inCusNo
fetch first 1 row only
with CS
use currently committed;
return;
end-proc;
Ссылки
[ редактировать ]- ^ «РПГ ИЛЭ Введение» . ИБМ. Июнь 2012 г. Архивировано из оригинала 29 февраля 2024 г. Проверено 16 марта 2021 г.
- ^ Тони Баритц; Дэвид Данн (1991). AS/400 — концепции и возможности . МакГроу-Хилл. ISBN 978-0-07-018301-8 . Архивировано из оригинала 29 февраля 2024 г. Проверено 16 марта 2021 г.
- ^ Алекс Вуди (24 августа 2020 г.). «Пришло ли время переименовать RPG?» . itjungle.com . Архивировано из оригинала 23 апреля 2021 г. Проверено 16 марта 2021 г.
- ^ 7070/7074 Системы компиляции: Генератор программ отчетов . ИБМ . С28-6113.
- ^ Руководство по системному анализу программирования — Генератор программ отчетов IBM 7070 Series (PDF) . ИБМ . 1962. С28-6192. Архивировано (PDF) из оригинала 19 января 2024 г. Проверено 19 января 2024 г.
- ^ IBM System / 360 - Операционная система - Спецификации языка RPG - Номер программы 380S-RG-038 (OS) (PDF) (Седьмое изд.). ИБМ . Июль 1973 г. GC24-3337-6. Архивировано (PDF) из оригинала 19 января 2024 г. Проверено 19 января 2024 г.
- ^ «IBM DOS/VS RPG-II» . ИБМ. 03.08.2020. Архивировано из оригинала 17 апреля 2021 г. Проверено 17 марта 2021 г.
- ^ «Список поддерживаемых продуктов» . ИБМ. 16 марта 2021 г. Архивировано из оригинала 2 мая 2021 г. Проверено 17 марта 2021 г.
- ^ «ClearPath MCP Express» (PDF) . Unisys. 2017. Архивировано (PDF) из оригинала 12 ноября 2020 г. Проверено 17 марта 2021 г.
- ^ «Визуальная RPG для .NET» . asna.com . АСНА. Архивировано из оригинала 3 апреля 2022 года . Проверено 3 апреля 2022 г.
- ^ «Миграционная РПГ» . migrationspecialties.com . Архивировано из оригинала 17 мая 2021 г. Проверено 17 марта 2021 г.
- ^ «...IBM 1401 и генератор программ отчетов (RPG) внесли значительный вклад в этот успех...» Архивировано 24 января 2012 г. в Wayback Machine , Система обработки данных IBM 1401 / 1959 г.
- ^ но там указан 1965 год, а не упомянутый здесь 1959 год.
- ^ 7070/7074 Системы компиляции: Генератор программ отчетов . ИБМ . С28-6113.
- ^ Руководство по системному анализу программирования — Генератор программ отчетов IBM 7070 Series (PDF) . ИБМ . 1962. С28-6192. Архивировано (PDF) из оригинала 19 января 2024 г. Проверено 19 января 2024 г.
- ^ «Генерация случайных чисел в ILE RPG с использованием API CEERAN0» [ постоянная мертвая ссылка ] , IBM.com
- ^ «Как мы пропустили совершеннолетие RPG IV?» Архивировано 3 марта 2017 г. на Wayback Machine , ibmsystemsmag.com.
- ^ «РПГ/400» . IBM.com . Международная корпорация бизнес-машин. 8 мая 2018 г. Архивировано из оригинала 3 апреля 2022 г. . Проверено 4 апреля 2022 г.
- ^ «Справочник ИЛЭ по РПГ» . IBM.com . Международная корпорация бизнес-машин. Июнь 2012. Архивировано из оригинала 3 апреля 2022 года . Проверено 4 апреля 2022 г.
- ^ «Руководство программиста ILE RPG» . IBM.com . Международная корпорация бизнес-машин. Июнь 2012. Архивировано из оригинала 3 апреля 2022 года . Проверено 4 апреля 2022 г.
- ^ «Кому следует использовать это руководство» . IBM.com . Международная корпорация бизнес-машин. Июнь 2012. Архивировано из оригинала 3 апреля 2022 года . Проверено 4 апреля 2022 г.
- ^ «Языки высокого уровня» . IBM.com . Международная корпорация бизнес-машин. 8 мая 2018 г. Архивировано из оригинала 3 апреля 2022 г. . Проверено 4 апреля 2022 г.
- ^ Пэрис, Джон ; Гантнер, Сьюзен. «Совершенно бесплатная ролевая игра» . Журнал IBM Systems. Архивировано из оригинала 8 марта 2014 года . Проверено 8 марта 2014 г.
- ^ «IBM Rational Developer для i» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 3 апреля 2022 года . Проверено 3 апреля 2022 г.
- ^ «5770-WDS IBM Rational Development Studio для i V7.4» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 3 апреля 2022 года . Проверено 3 апреля 2022 г.
- ^ «5770-WDS IBM Rational Development Studio для i V7.4» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 3 апреля 2022 года . Проверено 4 апреля 2022 г.
- ^ ИБМ. «РПГ-кафе» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 3 апреля 2022 года . Проверено 3 апреля 2022 г.
- ^ ИБМ. «Обновления технологий IBM и» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 12 апреля 2022 года . Проверено 3 апреля 2022 г.
- ^ ИБМ. «Обновление технологий IBM и технологий» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 3 апреля 2022 года . Проверено 3 апреля 2022 г.
- ^ «Руководство пользователя RPG/400» (PDF) . IBM.com . Архивировано (PDF) из оригинала 7 августа 2017 года . Проверено 6 августа 2017 г.
- ^ «EASY400 CGIDEV2» . Easy400.net . Архивировано из оригинала 26 марта 2019 года . Проверено 26 марта 2019 г.
- ^ «Рациональный открытый доступ: издание RPG» . ИБМ. Архивировано из оригинала 29 февраля 2024 г. Проверено 17 марта 2021 г.
Дальнейшее чтение
[ редактировать ]- «9PAC, Генератор отчетов» . История языков программирования (HOPL), Университет Мердока, Австралия. 2006. Архивировано из оригинала 24 декабря 2010 г. Проверено 1 апреля 2008 г.
- «RPG, Генератор программ отчетов» . История языков программирования (HOPL), Университет Мердока, Австралия. 2006. Архивировано из оригинала 15 апреля 2011 г. Проверено 1 апреля 2008 г.
- Дюшарм, Боб (26 февраля 2006 г.). «Извлечение данных из компьютеров в середине двадцатого и начале двадцать первого века» .
- Коцци, Роберт (1996). «Язык современных ролевых игр IV» .
- Шелли, Гэри Б.; Томас Дж. Кэшман (1977). Введение в ролевые игры по компьютерному программированию . Фуллертон, Калифорния: Издательская компания Анахайма. ISBN 0-88236-225-9 .
Внешние ссылки
[ редактировать ]- Смит, Брайан Р.; Мартин Барбо; Сьюзан Гантнер; Джон Пэрис; Здравко Винчетич; Владимир Зупка (25 апреля 2000 г.). «Кто знал, что вы сможете сделать это с помощью RPG IV? Руководство для чародея по доступу к системе и многому другому» (PDF) . Международная организация технической поддержки IBM . Проверено 18 февраля 2012 г. «Эта красная книга посвящена RPG IV как современному, процветающему и богатому языку разработки приложений для 21 века».
- Midrange.com — здесь доступно большое количество примеров кода.
- RPGPGM.COM — обширный ресурс статей с примерами кода RPG и сопутствующего программирования.
- RPG Open — бесплатные ресурсы (с открытым исходным кодом) для разработки приложений RPG IV и IBM i.
- ИБМ (1964). Руководство по IBM 1401 RPG (PDF) . C24-3261-1.
- ИБМ (2016). Руководство программиста ILE RPG (PDF) . SC09-2507-10.
- RPG II для MVS, OS/390 и z/OS — Статус продукта IBM RPG II в z/OS