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, результатом которой стала разработка RPG. [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