stringtranslate.com

IBM RPG II

RPG II es una versión muy temprana y popular del lenguaje de programación IBM RPG .

Fue desarrollado a finales de los años 1960 y diseñado para funcionar en los sistemas IBM más pequeños de la época, como IBM 1130 , IBM System/3 , System/32 , System/34 y System/36 . También estaba disponible para las series de mainframes System/370 , The Singer System 10 , Sperry Univac 90/25, 90/30, 90/40, System 80 y 1100 [1] y Wang VS Series. ICL produjo versiones para su sistema ICL 2903 y para VME/K ; y Burroughs Corporation produjo un compilador RPG II con extensiones de base de datos para su serie de computadoras B1700 . Digital Equipment Corporation tenía su propia implementación llamada VAX RPG II para sistemas VAX/VMS . [2]

Una versión mejorada del RPG III apareció en 1978.

Tiene una serie de características inusuales, entre ellas: un bucle de procesamiento implícito y que es un lenguaje de programación de formato fijo, por lo que los programas son difíciles de leer sin una plantilla de depuración especial. [3]

Características

RPG II es un lenguaje de programación de formato fijo, lo que significa que el código debe colocarse en las ubicaciones exactas de las columnas para generar resultados correctos. Hay ocho tipos de especificaciones diferentes y se utilizan formas de codificación independientes para escribir cada una de ellas, y se utiliza una plantilla de depuración especial [3] como ayuda para leer las impresiones del programa.

Cada programa RPG II se ejecuta dentro de un bucle implícito, el ciclo del programa , que aplica el programa sucesivamente a cada registro de un archivo; esto se documenta mediante un diagrama de "Flujo lógico" en la plantilla de depuración. [3] Cada registro (tarjeta perforada individual) se compararía con cada línea del programa, que actuaría sobre el registro, o no, en función de si esa línea tenía un "indicador" encendido o apagado, a partir de 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. Las variables especiales como UDATE, UYEAR, PAGE, etc., se completan cuando comienza el programa o cuando se produce un desbordamiento de página, aunque no haya una instrucción explícita para estas actividades. Los cálculos totales y la salida se realizan en "tiempo total", después del ciclo de detalle cuando L1/LR se ha activado mediante una lógica fija.

El concepto de ciclo de programación de RPG encajaba perfectamente con una máquina cíclica que leía cartas, resumía su contenido e imprimía un resultado, como una máquina tabuladora . El lenguaje se amplió para manejar otros dispositivos de entrada y salida y proporciona un método rápido y eficiente de programación.

Los dispositivos como la estación de trabajo (WORKSTN), el teclado (KEYBORD) o la consola (CONSOLE) no tienen un número fijo de registros al inicio del trabajo y, por lo tanto, para incorporar el ciclo de "Último registro" de RPG de lógica fija, el indicador LR se puede activar con una instrucción SETON. LR no se puede desactivar.

RPG II no evolucionó mucho desde la implementación de 1977 en el System/34 hasta el año 2000, cuando se suspendió la comercialización del Advanced/36 . Los cambios que se realizaron a partir de la versión de los años 70 incluyeron la agrupación IFEQ/IFNE/IFGT/IFGE/IFLT/IFLE y END. Además, el call/parm para poder llamar a subrutinas externas. Otro cambio fue que, para las subrutinas internas, ya no era necesario poner SR en las columnas 7 y 8 de las especificaciones C (cálculo).

Los proveedores de terceros vendían más de 200 subrutinas de ensamblador diferentes que podían ser utilizadas por los programadores de System/36 y Advanced/36 para superar las limitaciones de RPG II. Algunas de las limitaciones de RPG II en System/3, 32, 34 y 36, incluido Advanced/36, eran el límite de 64K y la cantidad de archivos que se podían tener en un programa. Por lo tanto, si se tenían muchas líneas de programación o matrices grandes, era fácil superar los 64.000 bytes de código objeto. Sin embargo, cuando RPG II se ejecutaba en AS/400 y sus sucesores iseries e IBM i (aquellos que ejecutaban OS/400 o i5/OS en lo que se denomina S/36E (entorno de ejecución)), esos límites (los 64K bytes y la cantidad de archivos) se ampliaron en gran medida o se eliminaron.

Especificaciones del RPGII

En la implementación System/36 de RPG II, hay ocho tipos de especificaciones (spec) diferentes, es decir, una línea de texto de formato fijo, de 80 caracteres (bytes) de longitud, derivada del uso original de entrada de tarjeta perforada para sistemas IBM anteriores, como el System/3 . Las especificaciones similares se agrupaban y cada tipo debía estar en un orden específico: U , T , H , F , E , L , I , C y O.

Los códigos de especificación aparecen en la columna 6 de una especificación RPG-II:

Los códigos de operación aparecen en las columnas 28 a 32 de una especificación de cálculo RPG-II.

  1. CALL/PARM se agregó a RPG II con la versión 6.0 (también conocida como VASP).

CADENA recupera el registro en el archivo indexado nombrado en el Factor 2 que coincide con la clave exacta especificada por el valor en el Factor 1.

SETLL hace que el puntero de índice del archivo nombrado en el Factor 2 se posicione en la ubicación especificada por el valor en el Factor 1.

SORTA hace que la matriz nombrada se ordene en su lugar; es decir, los elementos aparecen en orden.

Z-SUB calcula el factor 2 con signo opuesto y lo mueve al campo de resultado.

XFOOT hace que se sume una matriz y el resultado se mueva al campo de resultado.

MVR debe seguir a una operación DIV. El resto entero de la operación DIV se coloca en el campo de resultado. MVR después de la operación DIV para "56 dividido por 3" colocaría el valor 2 en el campo de resultado.

Indicadores

Los indicadores están 'establecidos' o no, son "banderas" o tipos de datos booleanos .

     01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
H1H2H3H4H5H6H7H8H9
M1 M2 M3 M4 M5 M6 M7 M8 M9, y MRque refleja que se ha producido la coincidencia
L0 L1 L2 L3 L4 L5 L6 L7 L8 L9
KA KB KC KD KE KF KG KH KI KJ KK KL KM KN KP KQ KR KS KT KU KV KW KX KY
Estos indicadores se refieren a las teclas de comando 1 a 24, en ese orden. Tenga en cuenta que no hay ningún KOindicador.
1P
OA OB OC OD OE DE OG OV
LR
U1U2U3U4U5U6U7U8

Se disponía de hojas plegables, plantillas, revestidas de plástico contra el desgaste y las manchas, que resumían las distintas especificaciones. Se utilizaban para la inspección visual y la verificación del texto del código fuente de formato fijo cuando se comparaba con su salida impresa. Coincidían y se alineaban con el espaciado estándar del texto de la época, tal como se extraía del uso original de las tarjetas perforadas :

Código de muestra

 F*************************************************************** F* ESTE PROGRAMA LEE EL CONTENIDO DE UN ARCHIVO DE ENCABEZADO DE FACTURA  F* E IMPRIME LAS FACTURAS PROCESADAS PARA LA FECHA ESTABLECIDA EN LA  F* ÁREA DE DATOS LOCALES. EXISTEN RUPTURAS DE NIVEL Y TOTALES PARA  A LA MIERDA CON CADA TIENDA.  F*************************************************************** F* DISCO FINVHDR IP F 62 IMPRESORA DE 132 DE IMPRESORA IINVHDR NS 01 1NC Yo 1 3 TIENDA L1 I 4 13 INVNO I 14 20 NÚMERO PERSONALIZADO Yo 21 45 STNAM Yo 46 53 INVDAT Yo 54 622TOTINV Yo UDS Yo 1 8 RPTDAT C 01 INVDAT COMP RPTDAT 11 C 01 11 AGREGAR ATINV L1TOT 92 C 01 11 AGREGAR ATINV LRTOT 92 IMPRESORA H 101 1P O O DE O PAGINA Z 106 O 102 'PAGINA' O 59 'MUY GRANDE' O 72 'TIENDAS, INC.' FECHA DE ÚLTIMA HORA 17 O 8 'FECHA DE EJECUCIÓN' OH11P O O DE O 73 'VENTAS DIARIAS POR TIENDA' OH21P O O DE ORPTDAT 83 O 63 'PARA LA FECHA:' OH11P O O DE O 6 'TIENDA' O 18 'FACTURA' O 28 'CLIENTE' O 58 'CLIENTE' O 78 'FACTURA' OH21P O O DE O 6 'NÚMERO' O 18 'NÚMERO' O 28 'NÚMERO' O 58 'NOMBRE' O 78 'TOTAL' Sobredosis 0 L1 O TIENDA 6 Día de la Independencia 1 01 11 El número de inscripción 18 EL CUSTNO 28 El pilar 58 El TOTINV1B 78 OT 1 L1 O 45 'TOTAL DE LA TIENDA...' O L1TOT 1B 78 OT 1 LR O 45 'GRAN TOTAL...' El LRTOT 1 78

Referencias

  1. ^ "Sistema Sperry Univac 1100/60" (PDF) . Consultado el 18 de enero de 2021 .
  2. ^ "Manual de herramientas y lenguaje de software VAX/VMS" (PDF) . bitsavers.org . 1985 . Consultado el 31 de diciembre de 2020 .
  3. ^ abc "Plantilla de depuración de IBM RPG", Museo de Historia de la Computación
  4. ^ "Compiladores RPG II de IBM System/3 Modelo 8, Modelo 10, Modelo 12 y Modelo 15", Especificaciones de productos de programas de IBM, noviembre de 1977, pág. 3

Enlaces externos