Jump to content

IBM РПГ

(Перенаправлено с RPG (язык программирования) )
РПГ
Генератор программ отчетов
Парадигма Мультипарадигмальность
Разработчик ИБМ
Впервые появился 1959 год ; 65 лет назад ( 1959 )
Стабильная версия
РПГ IV версия 7 выпуск 4 / 6 октября 2020 г. ( 2020-10-06 )
Дисциплина набора текста Сильный , статичный
ТЫ 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).

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 »).

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.

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                    использованием   в данный момент   зафиксированным  ;           возвращаться  ;         конец  -  процесс  ; 
  1. ^ «РПГ ИЛЭ Введение» . ИБМ. Июнь 2012 г. Архивировано из оригинала 29 февраля 2024 г. Проверено 16 марта 2021 г.
  2. ^ Тони Баритц; Дэвид Данн (1991). AS/400 — концепции и возможности . МакГроу-Хилл. ISBN  978-0-07-018301-8 . Архивировано из оригинала 29 февраля 2024 г. Проверено 16 марта 2021 г.
  3. ^ Алекс Вуди (24 августа 2020 г.). «Пришло ли время переименовать RPG?» . itjungle.com . Архивировано из оригинала 23 апреля 2021 г. Проверено 16 марта 2021 г.
  4. ^ 7070/7074 Системы компиляции: Генератор программ отчетов . ИБМ . С28-6113.
  5. ^ Руководство по системному анализу программирования — Генератор программ отчетов IBM 7070 Series (PDF) . ИБМ . 1962. С28-6192. Архивировано (PDF) из оригинала 19 января 2024 г. Проверено 19 января 2024 г.
  6. ^ IBM System / 360 - Операционная система - Спецификации языка RPG - Номер программы 380S-RG-038 (OS) (PDF) (Седьмое изд.). ИБМ . Июль 1973 г. GC24-3337-6. Архивировано (PDF) из оригинала 19 января 2024 г. Проверено 19 января 2024 г.
  7. ^ «IBM DOS/VS RPG-II» . ИБМ. 03.08.2020. Архивировано из оригинала 17 апреля 2021 г. Проверено 17 марта 2021 г.
  8. ^ «Список поддерживаемых продуктов» . ИБМ. 16 марта 2021 г. Архивировано из оригинала 2 мая 2021 г. Проверено 17 марта 2021 г.
  9. ^ «ClearPath MCP Express» (PDF) . Unisys. 2017. Архивировано (PDF) из оригинала 12 ноября 2020 г. Проверено 17 марта 2021 г.
  10. ^ «Визуальная RPG для .NET» . asna.com . АСНА. Архивировано из оригинала 3 апреля 2022 года . Проверено 3 апреля 2022 г.
  11. ^ «Миграционная РПГ» . migrationspecialties.com . Архивировано из оригинала 17 мая 2021 г. Проверено 17 марта 2021 г.
  12. ^ «...IBM 1401 и генератор программ отчетов (RPG) внесли значительный вклад в этот успех...» Архивировано 24 января 2012 г. в Wayback Machine , Система обработки данных IBM 1401 / 1959 г.
  13. ^ но там указан 1965 год, а не упомянутый здесь 1959 год.
  14. ^ 7070/7074 Системы компиляции: Генератор программ отчетов . ИБМ . С28-6113.
  15. ^ Руководство по системному анализу программирования — Генератор программ отчетов IBM 7070 Series (PDF) . ИБМ . 1962. С28-6192. Архивировано (PDF) из оригинала 19 января 2024 г. Проверено 19 января 2024 г.
  16. ^ «Генерация случайных чисел в ILE RPG с использованием API CEERAN0» [ постоянная мертвая ссылка ] , IBM.com
  17. ^ «Как мы пропустили совершеннолетие RPG IV?» Архивировано 3 марта 2017 г. на Wayback Machine , ibmsystemsmag.com.
  18. ^ «РПГ/400» . IBM.com . Международная корпорация бизнес-машин. 8 мая 2018 г. Архивировано из оригинала 3 апреля 2022 г. . Проверено 4 апреля 2022 г.
  19. ^ «Справочник ИЛЭ по РПГ» . IBM.com . Международная корпорация бизнес-машин. Июнь 2012. Архивировано из оригинала 3 апреля 2022 года . Проверено 4 апреля 2022 г.
  20. ^ «Руководство программиста ILE RPG» . IBM.com . Международная корпорация бизнес-машин. Июнь 2012. Архивировано из оригинала 3 апреля 2022 года . Проверено 4 апреля 2022 г.
  21. ^ «Кому следует использовать это руководство» . IBM.com . Международная корпорация бизнес-машин. Июнь 2012. Архивировано из оригинала 3 апреля 2022 года . Проверено 4 апреля 2022 г.
  22. ^ «Языки высокого уровня» . IBM.com . Международная корпорация бизнес-машин. 8 мая 2018 г. Архивировано из оригинала 3 апреля 2022 г. . Проверено 4 апреля 2022 г.
  23. ^ Пэрис, Джон ; Гантнер, Сьюзен. «Совершенно бесплатная ролевая игра» . Журнал IBM Systems. Архивировано из оригинала 8 марта 2014 года . Проверено 8 марта 2014 г.
  24. ^ «IBM Rational Developer для i» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 3 апреля 2022 года . Проверено 3 апреля 2022 г.
  25. ^ «5770-WDS IBM Rational Development Studio для i V7.4» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 3 апреля 2022 года . Проверено 3 апреля 2022 г.
  26. ^ «5770-WDS IBM Rational Development Studio для i V7.4» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 3 апреля 2022 года . Проверено 4 апреля 2022 г.
  27. ^ ИБМ. «РПГ-кафе» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 3 апреля 2022 года . Проверено 3 апреля 2022 г.
  28. ^ ИБМ. «Обновления технологий IBM и» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 12 апреля 2022 года . Проверено 3 апреля 2022 г.
  29. ^ ИБМ. «Обновление технологий IBM и технологий» . IBM.com . Международная корпорация бизнес-машин. Архивировано из оригинала 3 апреля 2022 года . Проверено 3 апреля 2022 г.
  30. ^ «Руководство пользователя RPG/400» (PDF) . IBM.com . Архивировано (PDF) из оригинала 7 августа 2017 года . Проверено 6 августа 2017 г.
  31. ^ «EASY400 CGIDEV2» . Easy400.net . Архивировано из оригинала 26 марта 2019 года . Проверено 26 марта 2019 г.
  32. ^ «Рациональный открытый доступ: издание RPG» . ИБМ. Архивировано из оригинала 29 февраля 2024 г. Проверено 17 марта 2021 г.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 58aef584ccd6e53a6d0bc3a04e759b35__1719864480
URL1:https://arc.ask3.ru/arc/aa/58/35/58aef584ccd6e53a6d0bc3a04e759b35.html
Заголовок, (Title) документа по адресу, URL1:
IBM RPG - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)