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. Та же программа показана позже с постепенно более современными версиями синтаксиса и более мягкими правилами.
* Исторически РПГ носила столбчатый характер, хотя и имела свободное форматирование. * было разрешено при определенных обстоятельствах. * Назначение различных строк кода определяется *буквенный код в графе 6. * Звездочка (*) в столбце 7 обозначает строку комментария. * Спецификации «F» (файл) определяют файлы и другие устройства ввода-вывода. F ARMstF1 IF EK Переименование диска (ARMST:RARMST) * Спецификации «D» (данные) используются для определения переменных. D pCusNo S 6p D pИмя S 30a D pAddr1 S 30a D pAddr2 S 30a Д пСити С 25а D pState S 2a D pZip S 10a * Спецификации «C» (расчет) используются для исполняемых операторов. * Параметры определяются с использованием кодов операций plist и parm. C *входной список C парм pCusNo C параметр pName C параметр pAddr1 C параметр pAddr2 C parm pCity C parm pState C парм pZip * Команда «цепочка» используется для произвольного доступа к файлу с ключом. C pCusNo цепочка ARMstF1 * Если запись найдена, переместите поля из файла в параметры C, если %Найдено C eval pName = ARNm01 Оценка pAddr1 = ARAd01 Оценка pAddr2 = ARAd02 Оценка pCity = ARCy01 Оценка pState = ARSt01 Оценка pZip = ARZp15 Конец С * В RPG используются переключатели. Один переключатель «LR» изначально обозначал «последнюю запись». * LR помечает программу и ее пространство данных как удаляемые из памяти. Оценка *InLR = *Вкл.
Та же программа с использованием бесплатных вычислений, доступных начиная с V5R1:
* Спецификации «F» (файл) определяют файлы и другие устройства ввода-вывода. FARMstF1 IF EK Переименование диска (ARMST:RARMST) * Спецификации «D» (данные) используются для определения переменных и параметров. * "Прототип" программы находится в отдельном файле. * разрешение другим программам вызывать его /копировать cust_pr * «Интерфейс процедуры» описывает параметры *ENTRY. D getCustInf PI D pCusNo 6p 0 const D pName 30a Д pAddr1 30a Д pАддр2 30а Д пСити 25а D pState 2a D pZip 10a /бесплатно // Команда "цепочка" используется для произвольного доступа к файлу с ключом цепочка pCusNo ARMstF1; // Если запись найдена, переносим поля из файла в параметры если% найдено; pName = ARNm01; pAddr1 = ARAd01; pAddr2 = ARAd02; pCity = ARCy01; pState = ARSt01; pZip = ARZp15; эндиф; // В RPG используются переключатели. Один переключатель «LR» изначально обозначал «последнюю запись». // LR фактически помечает программу и ее пространство данных как удаляемые из памяти. *InLR = *Вкл.; /конец свободен
Предположим, что таблица примера ARMSTF1 была создана с использованием следующего оператора SQL:
создать таблицу Armstf1 ( число дуг десятичное ( 7 , 0 ), arname char ( 30 ), aradd1 char ( 30 ), aradd2 char ( 30 ), arcity char ( 25 ), arstte char ( 2 ), arzip char ( 10 ))
Та же программа с использованием свободных вычислений и встроенного SQL:
* RPG IV больше не требует использования индикатора *INLR для завершения программы. * используя ключевое слово MAIN в спецификации «H» (заголовок) и определяя «основной» или * имя процедуры входа, программа начнется и завершится нормально, без использования * RPG Cycle, созданный десятилетиями, и вместо этого логика начала и конца, более похожая на C. H ГЛАВНЫЙ (getCustInf) * Спецификации «D» (данные) используются для определения переменных и параметров. * "Прототип" программы находится в отдельном файле. * разрешение другим программам вызывать его /копировать cust_pr * «Интерфейс процедуры» описывает параметры *ENTRY. P getCustInf B D getCustInf PI D pCusNo 6p 0 const D pName 30a Д pAddr1 30a Д pАддр2 30а Д пСити 25а D pState 2a D pZip 10a /бесплатно exec sql выберите arName, arAddr1, arAdd2, arCity, arStte, arZip в :pName, :pAddr1, :pAddr2, :pCity, :pState, :pZip из ARMstF1 где arCNum = :pCusNo только для получения получить только первую строку оптимизировать для 1 строки с КС; /конец свободен P GetCustInf E
Начиная с версии операционной системы V7R1, вышеуказанной программе не обязательно нужен прототип в отдельном файле, поэтому ее можно полностью записать так:
H main ( GetCustInf ) D ARMSTF1 E DS P GetCustInf B D GetCustInf PI extpgm ( 'CUS001' ) D inCusNo как ( arCNum ) const D outName как ( arName ) D outAddr1 как ( arAdd1 ) D outAddr2 как ( arAdd2 ) D outCity как ( arCity ) D outState типа ( arStte ) D outZip типа ( arZip ) / free exec sql select arName , arAdd1 : outAddr2 , arCity , outState , arZip в : outName , : outAddr1 , , arAdd2 , : outCity , : arStte , : outZip from ARMSTF1 где arCNum = : inCusNo извлекает первую 1 строку только с CS, использованием в данный момент зафиксированным ; / конец - бесплатно P GetCustInf E
Наконец, если вы примените к вашей операционной системе 7.1 связанный с PTF компилятора Technology Refresh 7 (TR7), то приведенную выше программу можно будет полностью закодировать в свободной форме следующим образом:
ctl — выбрать основной ( GetCustInf ); dcl - ds ARMSTF1 ext end - ds ; dcl - proc GetCustInf ; dcl - pi * n extpgm ( 'CUS001' ); inCusNo как ( arCNum ) const ; outName вроде ( arName ); outAddr1 вроде ( arAdd1 ); outAddr2 вроде ( arAdd2 ); outCity нравится ( arCity ); outState вроде ( arStte ); outZip как ( arZip ); конец - пи ; exec sql select arName , arAdd1 , arAdd2 , arCity , arStte , arZip in : outName , : outAddr1 , : outAddr2 , : outCity , : outState , : outZip from ARMSTF1 , где arCNum = : inCusNo извлекает первую 1 строку только с CS использованием в данный момент зафиксированным ; возвращаться ; конец - процесс ;
Ссылки
[ редактировать ]- ^ «РПГ ИЛЭ Введение» . ИБМ. Июнь 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