RPG es un lenguaje de programación de alto nivel para aplicaciones empresariales , introducido en 1959 para el IBM 1401. Es conocido principalmente por ser el lenguaje de programación principal de la línea de productos informáticos de gama media de IBM , incluido el sistema operativo IBM i . [ 1 ] RPG se ha caracterizado tradicionalmente por una serie de conceptos distintivos, como el ciclo de programa y la sintaxis orientada a columnas. [ 2 ] La versión más reciente es RPG IV , que incluye varias características de modernización, incluida la sintaxis de formato libre. [ 3 ]
Plataformas
El lenguaje de programación RPG fue creado originalmente por IBM para sus sistemas 1401. Posteriormente, IBM produjo implementaciones para los sistemas 7070/72/74 [ 4 ] [ 5 ] y System/360 ; [ 6 ] RPG II se convirtió en el lenguaje de programación principal para su línea de productos de computadoras de gama media ( System/3 , System/32 , System/34 , System/38 , System/36 y AS/400 ). También se han realizado implementaciones para DEC VAX , Sperry Univac BC/7, Univac System 80, Siemens BS2000 , Burroughs B700, B1700 , Hewlett Packard HP 3000 , la serie ICL 2900 , Honeywell 6220 y 2020, las series Four-Phase IV/70 e IV/90, Singer System 10 y WANG VS , así como diversos compiladores y entornos de ejecución para sistemas basados en Unix, como Infinite36 (anteriormente Unibol 36), y PC (Baby/400, Lattice-RPG).
Las aplicaciones RPG II aún son compatibles con los sistemas operativos VSE [ 7 ] y z/OS , [ 8 ] Unisys MCP , [ 9 ] Microsoft Windows [ 10 ] y OpenVMS . [ 11 ]
Historia
Fondo
Desarrollado originalmente por IBM en 1959, el nombre Report Program Generator describía el propósito del lenguaje: la generación de informes a partir de archivos de datos. [ 12 ] FOLDOC atribuye a Wilf Hey el trabajo en IBM que resultó en el desarrollo de RPG. [ a ] FARGO ( fourteen-o-one automatic report generation operation) fue el predecesor de RPG en el IBM 1401 .
Ambos lenguajes se diseñaron para facilitar la transición de los técnicos de las máquinas tabuladoras (Tab) de IBM a las nuevas computadoras. Los técnicos de las máquinas Tab estaban acostumbrados a conectar cables a los paneles de control para realizar operaciones de entrada, salida, control y conteo (suma, resta, multiplicación y división). Los programas de las máquinas Tab se ejecutaban mediante impulsos emitidos en un ciclo de máquina; por lo tanto, FARGO y RPG emulaban el concepto de ciclo de máquina con el ciclo del programa. RPG superó rápidamente a FARGO y lo reemplazó como el programa generador de informes preferido.
IBM implementó posteriormente RPG (7070-RG-902), pero no FARGO, en los IBM 7070/72/74 . [ 14 ] [ 15 ]
Los lenguajes alternativos generalmente disponibles en ese momento eran Assembler , COBOL , el traductor comercial COMTRAN o FORTRAN . Assembler y COBOL eran más comunes en las operaciones comerciales de mainframes (707X, 7080, modelos System/360 30 y superiores) y RPG era más utilizado por los clientes que estaban en transición desde equipos de tabulación ( 14xx , modelo System/360 20).
Juego de rol II
RPG II se introdujo alrededor de 1969 con la serie de computadoras System/3 . Posteriormente se utilizó en System/32 , System/34 y System/36 , con una versión mejorada del lenguaje. RPG II también estaba disponible para sistemas más grandes, incluyendo el mainframe IBM System/370 con DOS/VSE (luego VSE/SP , VSE/ESA y z/VSE ). ICL también produjo una versión para su sistema operativo VME/K .
En los inicios de RPG, su principal fortaleza residía en el ciclo de programa . Un programador escribía código para procesar un registro individual, y el ciclo ejecutaba el cambio en cada registro de un archivo, gestionando el flujo de control. En ese momento, cada registro (tarjeta perforada individual) se comparaba con cada línea del programa, que actuaba sobre el registro, o no, según si esa línea tenía un "indicador" activado o desactivado. El indicador consistía en un conjunto de variables lógicas numeradas del 01 al 99 para fines definidos por el usuario, u otros conjuntos más pequeños basados en funciones de procesamiento de registros, campos o informes. El concepto de saltos de nivel y registros coincidentes es exclusivo del lenguaje RPG II y se desarrolló originalmente pensando en los lectores de tarjetas. La función de registros coincidentes del ciclo permitía procesar fácilmente archivos con una relación de encabezado a detalle. Los programas RPG escritos para aprovechar el ciclo de programa podían generar informes complejos con muchas menos líneas de código que los programas escritos en COBOL y otros lenguajes orientados a los negocios.
Las especificaciones de archivos del programa enumeran todos los archivos que se escriben, leen o actualizan, seguidas de las especificaciones de definición de datos que contienen elementos del programa, como estructuras de datos y matrices dimensionales, de forma similar a la sección de "Almacenamiento de trabajo" de un programa COBOL. A continuación, se incluyen las especificaciones de cálculo, que contienen las instrucciones ejecutables. Posteriormente, se pueden incluir las especificaciones de salida, que se utilizan para determinar la estructura de otros archivos o informes. Alternativamente, los archivos, algunas estructuras de datos e informes pueden definirse externamente, lo que elimina en gran medida la necesidad de codificar manualmente las especificaciones de entrada y salida (" E/S ").
Juego de rol III
RPG III se creó para el System/38 y su sucesor, el AS/400 . RPG III se diferenció significativamente del lenguaje original, proporcionando construcciones estructuradas modernas como bloques IF-ENDIF, bucles DO y subrutinas . RPG III también estaba disponible para sistemas más grandes, incluido el mainframe IBM System/370 con OS/VS1 . Asimismo, Unisys lo ofrecía para el sistema operativo VS/9 que se ejecutaba en los mainframes UNIVAC Serie 90 .
Desde la introducción del IBM System/38 en 1979, la mayoría de los programadores de RPG dejaron de usar el ciclo y optaron por controlar el flujo del programa con estructuras de bucle estándar, aunque IBM ha seguido ofreciendo compatibilidad con versiones anteriores para dicho ciclo.
DE/RPG
DE/RPG o Data Entry RPG estaba disponible exclusivamente en la serie IBM 5280 de estaciones de trabajo de entrada de datos a principios de los años 80. Era similar a RPG III, pero carecía de Descripciones de Datos (DDS) externas para describir los datos (archivos), como ocurría en el System/38 y sus sucesores. En su lugar, la parte de DDS debía incluirse en el propio código fuente de RPG.
RPG/400
RPG/400 era, en esencia, RPG III ejecutándose en AS/400. IBM renombró el compilador RPG como "RPG/400", pero en el momento de su lanzamiento era idéntico al compilador RPG III de System/38. Prácticamente todos los productos IBM System/38 fueron renombrados como xxx/400, y el compilador RPG no fue una excepción. RPG III compilado con el compilador RPG/400 no aportó ninguna novedad al lenguaje RPG III hasta que IBM comenzó a desarrollar nuevos códigos de operación, como SCAN, CAT y XLATE, tras varios años de disponibilidad en AS/400. Estas mejoras a RPG III no estaban disponibles en la versión de System/38.
RPG IV y ILE RPG
RPG IV , también conocido como RPG ILE , [ 16 ] fue lanzado en 1994 como parte de la versión V3R2 de OS/400 (ahora conocido como IBM i). [ 17 ] [ 18 ]
Con el lanzamiento de RPG IV, el nombre RPG dejó de ser oficialmente una sigla . RPG IV ofreció una mayor variedad de expresiones dentro de su Especificación de Cálculo de Factor-2 Extendida y, posteriormente, su sintaxis de Procedimiento y Especificaciones de Cálculo de formato libre. RPG IV en el marco del Entorno de Lenguaje Integrado se conoce como ILE RPG, y las guías de usuario explican los matices de ambos. [ 19 ] [ 20 ] [ 21 ] IBM admite RPG IV e ILE RPG en la plataforma IBM i actual. [ 22 ]
En 2001, con el lanzamiento de OS/400 V5R1, RPG IV ofreció mayor libertad para los cálculos que la ofrecida por la Especificación de Cálculo de Factor-2 Extendido: una entrada de código fuente de formato libre con capacidad de texto, como alternativa al formato de código fuente original dependiente de columnas. El cálculo "/FREE" no requería que el código de operación se colocara en una columna en particular; el código de operación es opcional para las operaciones EVAL y CALLP; y la sintaxis generalmente se asemeja más a la de los lenguajes de programación de propósito general convencionales. Hasta noviembre de 2013, el formato libre se aplicó exclusivamente a las especificaciones de cálculo. [ 23 ] Con la actualización del lenguaje IBM i V7R1 TR7, los cálculos "/free" y "/end-free" ya no son necesarios, y el lenguaje finalmente rompió los lazos con las tarjetas perforadas.
IBM Rational Developer for i (RDi), [ 24 ] un entorno de desarrollo integrado basado en Eclipse , es recomendado por IBM para el desarrollo de RPG. [ 25 ] El editor de texto Source Entry Utility (SEU) ya no se recomienda para el desarrollo de RPG, y su desarrollo cesó después de IBM i 6.1. [ 26 ] Otras herramientas de desarrollo heredadas incluyen CODE/400 (basado en IBM WorkFrame/2) y VisualAge para RPG .
Mejoras lingüísticas continuas
IBM continúa mejorando el lenguaje RPG [ 27 ] mediante versiones de software y actualizaciones tecnológicas (TR) entre versiones. [ 28 ] [ 29 ] Se han añadido más funciones integradas (BIF). Tiene la capacidad de vincularse a objetos Java , [ 30 ] y API de IBM i ; se puede utilizar para escribir programas CGI con la ayuda del kit de herramientas web Cgidev2 de IBM , [ 31 ] RPG Toolbox y otros paquetes comerciales habilitados para la web. Incluso con los cambios, conserva una gran cantidad de compatibilidad con versiones anteriores, por lo que un programa RPG escrito hace 37 años podría ejecutarse hoy con poca o ninguna modificación.
El precompilador SQL permite a los desarrolladores de RPG aprovechar el motor de consultas SQL (SQE) de IBM, basado en costos. Con el enfoque tradicional de F-Spec, el desarrollador debía identificar una ruta de acceso específica a un conjunto de datos; ahora, puede implementar sentencias SQL estándar integradas directamente en el programa. Al compilarse, el precompilador SQL transforma las sentencias SQL en sentencias RPG que invocan a los programas del administrador de bases de datos, los cuales, en última instancia, ejecutan la consulta.
El lenguaje RPG IV se basa en el conjunto de caracteres EBCDIC , pero también admite UTF-8, UTF-16 y muchos otros. Algunos consideran peculiares las características de seguridad para subprocesos del lenguaje, ya que el equipo del compilador las gestionó asignando a cada subproceso su propio almacenamiento estático, en lugar de hacer que el entorno de ejecución de RPG fuera reentrante. Se ha observado que esto difumina la distinción entre un subproceso y un proceso (convirtiendo a los subprocesos de RPG IV en una especie de híbrido entre ambos).
En 2010, IBM lanzó RPG Open Access , también conocido como Rational Open Access: RPG Edition . Permite que un programador defina nuevos controladores de E/S, lo que posibilita la lectura y escritura de datos en fuentes para las que RPG no ofrece soporte integrado. [ 32 ]
Tipos de datos
RPG admite los siguientes tipos de datos.
Nota: El carácter en la columna de tipo de datos es el carácter que se codifica en la Especificación de Definición en la columna designada para el tipo de datos. Para comparar, en un lenguaje como C, donde las definiciones de variables son de formato libre y se usaría una palabra clave como `int` para declarar una variable entera, en RPG, una variable se define con una Especificación de Definición de formato fijo. En la Especificación de Definición, denotada por la letra D en la columna 6 de una línea de código fuente, el carácter del tipo de datos se codificaría en la columna 40. Además, si se omite el carácter del tipo de datos , es decir, se deja en blanco, el valor predeterminado es A si no se especifican posiciones decimales, P cuando se especifican posiciones decimales para campos independientes y S (ZONED) cuando se especifican posiciones decimales dentro de una estructura de datos.
Código de ejemplo
El siguiente programa recibe un número de cliente como parámetro de entrada y devuelve el nombre y la dirección como parámetros de salida. Esta es la versión más básica de la sintaxis de RPG IV. El mismo programa se muestra más adelante con versiones de sintaxis cada vez más modernas y reglas cada vez más flexibles.
* Históricamente, RPG era de naturaleza columnar, aunque de formato libre. * Se permitía en circunstancias particulares. * El propósito de varias líneas de código está determinado por un * Código de letra en la columna 6. * Un asterisco (*) en la columna 7 indica una línea de comentario. * Las especificaciones "F" (archivo) definen archivos y otros dispositivos de entrada/salida. F ARMstF1 IF Cambio de nombre de disco EK (ARMST:RARMST) * Las especificaciones "D" (datos) se utilizan para definir variables. D pCusNo S 6p D pName S 30a D pAddr1 S 30a D pAddr2 S 30a D pCity S 25a D pEstado S 2a D pZip S 10a * Las especificaciones "C" (cálculo) se utilizan para instrucciones ejecutables. * Los parámetros se definen mediante los códigos de operación plist y parm. C *entrada plist C parm pCusNo C parm pName C parm pAddr1 C parm pAddr2 C parm pCity C parm pState C parm pZip * El comando "chain" se utiliza para el acceso aleatorio a un archivo con clave. C pCusNo cadena ARMstF1 * Si se encuentra un registro, mueva los campos del archivo a los parámetros. C si %encontrado 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 fin si * RPG utiliza interruptores. Un interruptor "LR" originalmente significaba "último registro". * LR marca el programa y su espacio de datos como eliminables de la memoria. C eval *InLR = *On
El mismo programa utilizando cálculos gratuitos disponibles a partir de la versión V5R1:
* Las especificaciones "F" (archivo) definen archivos y otros dispositivos de entrada/salida. FARMstF1 IF Cambio de nombre de disco EK (ARMST:RARMST) * Las especificaciones "D" (datos) se utilizan para definir variables y parámetros. * El "prototipo" del programa se encuentra en un archivo aparte. * permitir que otros programas lo llamen así /copiar solicitud_cliente * La "interfaz de procedimiento" describe los parámetros *ENTRY. D getCustInf PI D pCusNo 6p 0 constante D pName 30a D pAddr1 30a D pAddr2 30a D pCiudad 25a D pEstado 2a D pZip 10a /gratis // El comando "chain" se utiliza para el acceso aleatorio a un archivo con clave. cadena pCusNo ARMstF1; // Si se encuentra un registro, mueva los campos del archivo a los parámetros. si %encontrado; pName = ARNm01; pAddr1 = ARAd01; pAddr2 = ARAd02; pCiudad = ARCy01; pState = ARSt01; pZip = ARZp15; fin si; // RPG utiliza interruptores. Un interruptor "LR" originalmente significaba "último registro". // LR marca el programa y su espacio de datos como eliminables de la memoria. *InLR = *Activado; /fin libre
Supongamos que la tabla de ejemplo ARMSTF1 se creó utilizando la siguiente instrucción 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 ))El mismo programa utilizando cálculos libres y SQL integrado:
* RPG IV ya no requiere el uso del indicador *INLR para finalizar un programa. * utilizando la palabra clave MAIN en la especificación "H" (encabezado) e identificando el "principal" o * nombre del procedimiento de entrada, el programa comenzará y terminará normalmente sin utilizar el * Ciclo de RPG de décadas de antigüedad y, en su lugar, una lógica de inicio y fin más "tipo C". H PRINCIPAL(obtenerInformaciónDelCliente) * Las especificaciones "D" (datos) se utilizan para definir variables y parámetros. * El "prototipo" del programa se encuentra en un archivo aparte. * permitir que otros programas lo llamen así /copiar solicitud_cliente * La "interfaz de procedimiento" describe los parámetros *ENTRY. P obtenerInformación del Cliente B D getCustInf PI D pCusNo 6p 0 constante D pName 30a D pAddr1 30a D pAddr2 30a D pCiudad 25a D pEstado 2a D pZip 10a /gratis exec sql select arName, arAddr1, arAdd2, arCity, arStte, arZip en :pName, :pAddr1, :pAddr2, :pCity, :pState, :pZip de ARMstF1 donde arCNum = :pCusNo solo para obtener Obtener solo la primera fila optimizar para 1 fila con CS; /fin libre P ObtenerInformación del Cliente E
A partir de la versión V7R1 del sistema operativo, el programa anterior no necesitaría necesariamente el prototipo en un archivo separado, por lo que podría escribirse completamente como:
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 ; / fin - P gratuito ObtenerInformaciónDelCliente EPor último, si aplica los PTF del compilador relacionados con Technology Refresh 7 (TR7) a su sistema operativo 7.1, entonces el programa anterior se puede codificar completamente en formato libre, como sigue:
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 ;Notas explicativas
Referencias
- ↑ "Introducción a RPG ILE" . IBM. Junio de 2012. Archivado del original el 29 de febrero de 2024. Consultado el 16 de marzo de 2021 .
- ↑ Tony Baritz; David Dunne (1991). AS/400: conceptos y funcionalidades . McGraw-Hill. ISBN 978-0-07-018301-8Archivado del original el 29/02/2024 . Consultado el 16/03/2021 .
- ↑ Alex Woodie (24 de agosto de 2020). "¿Es hora de cambiar el nombre de los juegos de rol?" . itjungle.com . Archivado del original el 23 de abril de 2021 . Consultado el 16 de marzo de 2021 .
- ↑ Sistemas de compilación 7070/7074: Generador de programas de informes . IBM . C28-6113.
- ↑ Guía de análisis de sistemas de programación - Generador de programas de informes de la serie IBM 7070 (PDF) . IBM . 1962. C28-6192. Archivado (PDF) del original el 19 de enero de 2024. Recuperado el 19 de enero de 2024 .
- ↑ IBM System/360 - Sistema operativo - Especificaciones del lenguaje RPG - Número de programa 380S-RG-038 (SO) (PDF) (Séptima ed.). IBM . Julio de 1973. GC24-3337-6. Archivado (PDF) del original el 19 de enero de 2024. Recuperado el 19 de enero de 2024 .
- ↑ "21CS VSEn" . Software del siglo XXI . Consultado el 22 de febrero de 2025 .
- ↑ "Lista de productos compatibles" . IBM. 16 de marzo de 2021. Archivado del original el 2 de mayo de 2021. Consultado el 17 de marzo de 2021 .
- ↑ "ClearPath MCP Express" (PDF) . Unisys. 2017. Archivado (PDF) del original el 12 de noviembre de 2020. Consultado el 17 de marzo de 2021 .
- ↑ "Juego de rol visual para .NET" . asna.com . ASNA. Archivado del original el 3 de abril de 2022. Consultado el 3 de abril de 2022 .
- ↑ "Migration RPG" . migrationspecialties.com . Archivado del original el 17 de mayo de 2021. Consultado el 17 de marzo de 2021 .
- ↑ "...El IBM 1401 y el Generador de Programas de Informes (RPG) contribuyeron significativamente a este éxito..." Archivado el 24/01/2012 en Wayback Machine , Sistema de Procesamiento de Datos IBM 1401 / 1959
- ↑ «Generador de Programas de Informes» . FOLDOC . Consultado el 26 de abril de 2026 .
- ↑ Sistemas de compilación 7070/7074: Generador de programas de informes . IBM . C28-6113.
- ↑ Guía de análisis de sistemas de programación - Generador de programas de informes de la serie IBM 7070 (PDF) . IBM . 1962. C28-6192. Archivado (PDF) del original el 19 de enero de 2024. Recuperado el 19 de enero de 2024 .
- ↑ "Generación de números aleatorios en ILE RPG mediante la API CEERAN0" , IBM.com
- ↑ "¿Cómo pudimos pasar por alto la mayoría de edad de RPG IV?" Archivado el 3 de marzo de 2017 en Wayback Machine , ibmsystemsmag.com
- ↑ "RPG/400" . IBM.com . International Business Machines Corporation. 8 de mayo de 2018. Archivado del original el 3 de abril de 2022. Consultado el 4 de abril de 2022 .
- ↑ "Referencia de ILE RPG" . IBM.com . International Business Machines Corporation. Junio de 2012. Archivado del original el 3 de abril de 2022. Consultado el 4 de abril de 2022 .
- ↑ "Guía del programador de ILE RPG" . IBM.com . International Business Machines Corporation. Junio de 2012. Archivado del original el 3 de abril de 2022. Consultado el 4 de abril de 2022 .
- ↑ "¿Quién debería usar esta guía?" . IBM.com . International Business Machines Corporation. Junio de 2012. Archivado del original el 3 de abril de 2022. Consultado el 4 de abril de 2022 .
- ↑ "Lenguajes de alto nivel" . IBM.com . International Business Machines Corporation. 8 de mayo de 2018. Archivado del original el 3 de abril de 2022. Consultado el 4 de abril de 2022 .
- ↑ Paris, Jon ; Gantner, Susan. "Totally Free RPG" . IBM Systems Magazine. Archivado del original el 8 de marzo de 2014. Recuperado el 8 de marzo de 2014 .
- ↑ "IBM Rational Developer for i" . IBM.com . International Business Machines Corporation. Archivado del original el 3 de abril de 2022. Consultado el 3 de abril de 2022 .
- ↑ "5770-WDS IBM Rational Development Studio para i V7.4" . IBM.com . International Business Machines Corporation. Archivado del original el 3 de abril de 2022. Consultado el 3 de abril de 2022 .
- ↑ "5770-WDS IBM Rational Development Studio para i V7.4" . IBM.com . International Business Machines Corporation. Archivado del original el 3 de abril de 2022. Consultado el 4 de abril de 2022 .
- ↑ IBM. "RPG Cafe" . IBM.com . International Business Machines Corporation. Archivado del original el 3 de abril de 2022. Consultado el 3 de abril de 2022 .
- ↑ IBM. "Actualizaciones de tecnología IBM i" . IBM.com . International Business Machines Corporation. Archivado del original el 12 de abril de 2022. Consultado el 3 de abril de 2022 .
- ↑ IBM. "Actualización tecnológica de IBM i" . IBM.com . International Business Machines Corporation. Archivado del original el 3 de abril de 2022. Consultado el 3 de abril de 2022 .
- ↑ "Guía del usuario de RPG/400" (PDF) . Ibm.com . Archivado (PDF) del original el 7 de agosto de 2017. Consultado el 6 de agosto de 2017 .
- ↑ "EASY400 CGIDEV2" . Easy400.net . Archivado del original el 26 de marzo de 2019. Consultado el 26 de marzo de 2019 .
- ↑ "Rational Open Access: RPG Edition" . IBM. Archivado del original el 29 de febrero de 2024. Consultado el 17 de marzo de 2021 .
Lecturas adicionales
- "9PAC, Generador de informes" . Historia de los lenguajes de programación (HOPL), Universidad Murdoch, AU. 2006. Archivado del original el 24 de diciembre de 2010. Consultado el 1 de abril de 2008 .
- "RPG, Generador de Programas de Informes" . Historia de los Lenguajes de Programación (HOPL), Universidad Murdoch, AU. 2006. Archivado del original el 15 de abril de 2011. Consultado el 1 de abril de 2008 .
- DuCharme, Bob (26 de febrero de 2006). "Extracción de datos de ordenadores a mediados del siglo XX y principios del siglo XXI" .
- Cozzi, Robert (1996). "El lenguaje moderno de los juegos de rol IV" .
- Shelly, Gary B.; Thomas J. Cashman (1977). Introducción a la programación informática RPG . Fullerton, California: Anaheim Publishing Company. ISBN 0-88236-225-9.
Enlaces externos
- Smith, Brian R.; Martin Barbeau; Susan Gantner; Jon Paris; Zdravko Vincetic; Vladimir Zupka (25 de abril de 2000). "¿Quién iba a pensar que se podía hacer eso con RPG IV? Una guía de hechicero para el acceso al sistema y más" (PDF) . Organización Internacional de Soporte Técnico de IBM . Consultado el 18 de febrero de 2012 ."Este libro rojo se centra en RPG IV como un lenguaje de desarrollo de aplicaciones moderno, próspero y completo para el siglo XXI."
- RPG Open : recursos gratuitos (de código abierto) para el desarrollo de aplicaciones RPG IV e IBM i.
- IBM (1964). Manual del RPG IBM 1401 (PDF) . C24-3261-1.
- IBM (2016). Guía del programador de ILE RPG (PDF) . SC09-2507-10.
- RPG II para MVS, OS/390 y z/OS : estado del producto IBM RPG II en z/OS.
- Lenguajes de programación compilados
- Lenguajes de programación de alto nivel
- Lenguajes de programación centrados en datos
- Lenguajes de programación procedimental
- Software de IBM
- Lenguajes de programación creados en 1959
- Lenguajes de programación de tipado estático