RPG
Тази статия се отнася за програмен език. Вижте ролева игра за съответния жанр игри.

RPG е един от малкото езици направени за перфокарти, използван и до днес.

История на езика и развитие 
Първоначално той е създаден от IBM през 1960 г. и става много популярен в IBM 1401. В началото RPG e бил акроним на Report Program Generator, като целта на езика била да генерира доклади от файлове с данни, включително подобни записи и обобщени доклади. За вбъдеще RPG продължил да се развива под крилото на IBM за mainframe системите, особено за S/360 – като бил създаден RPG II.

През 1994 г. бил създаден RPG IV, който предлагал голямо разнообразие от вътрешни изрази като новите му разширени Factor-2 изчислителни спецификации.

През 2001 г. излиза версията му за OS/400 V5R1, RPG IV предлага много по-голяма свобода на изчисленията: free-format text-capable source вход, като алтернативен на оригиналния колонно-зависим source формат. FREE изчисленията не изисквали операционния код да бъде поставян в отделна (собствена) колона. Операционния код бил незадължителен за EVAL и CALLP операциите и синтактичния код много приличал на този от mainstream.

Днес RPG IV е значително по-силен език. Тои включва протопипни функции и процедури, статични и динамични свойства, достъп до С стандартни библиотеки и динамично свързани библиотеки. Може да бъде редактиран на прости редактори или на редактора за PC IBM's Websphere Development Studio.

Обща характеристика 
RPG (Report Program Generator) е език за решаване на специализирани задачи от икономическата област – счетоводство, ичисляване на работни заплати, складови наличности и други. Специална програма реализира поставените задачи, описани чрез езика RPG.

Сложният синтаксис се преодолява с използването на специализирани формуляри, в които се въвеждат програмите. Програмирането на RPG представлява формално попълване на бланки, като няма алгоритъм на програмата.

Попълват се следните бланки:

Бланка 1. Описание на файловете
Бланка 2. Вход
Бланка 3. Пресмятане
Бланка 4. Изход

Бланка 1. Описание на файловете
Име на файла
Тип: входен | изходен | обновяем
Вид: първичен, вторичен, табличен, ...
Край – има ли маркер в края на файла
Подредба на записите: нарастваща, намаляваща
Формат на записа: фиксирана дължина, променлива дължина
Дължина на блок – брой байтове
Максимална дължина на запис – брой байтове
Тип на В/И устройство: ПК, МЛ, диск, печатащо, ...
Име на В/И устройство
Етикети за защита: стандартни | няма
Управление на магнетофона: пренавиване и др.

Бланка 2. Вход
Описва процеса на въвеждане на данните – обикновено това са подредени перфокарти.

Лява половина – описание на записа
Дясна половина – описание на полетата

Бланка 3. Пресмятане
Описва изпълнителния процес върху данните.

Индикатори за операцията (режими)
Операнд 1: име на поле, тип
Операция: аритметична (ADD, SUB и т.н.), пренасяне, сравнение, ...
Операнд 2: име на поле, тип
Резултат: има на поле, дължина на полето, десетични позиции, закръгляне, индикатори за +, 0 и –л

Бланка 4. Изход
Задава макет на печата: характеристики на заглавния ред и данните.

Име на файл
Тип на запис
Индикатори (свързани с ПК, ПЛ, ...)
Описание на полетата и литералите

Използват се индикатори – ключове, които приемат състояние включено и изключено. Подпрограми могат да се създават на Асемблер, но не и на езика RPG, който задава фиксирана схема на работа.

Примерен код на езика:
 „F“ (file) specs define files and other i/o devices
     FARMstF1 UF E Disk Rename(ARMST:RARMST)

      * „D“ 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“ stands for
        // "last record". This ends program execution.
        *InLR = *On;
      /end-free
RPG не се предлага масово за микро компютри, с изключение на версията Baby/34, която дава възможност да се симулират операциите на IBM System/34 и да се създават изпълнителни програми на RPG II. Този език става основата за създаване на група езици, наричани „икономически езици“, тъй като се използват обикновено за създаване на бази от данни за икономически приложения. Такъв език е dBase II, а по-късно и dBase III, разпространени от Ashton-Tate Company. Икономическата информация може да се съхранява и извлича с помощта на прост език за управление на бази от данни.

Езици за програмиране