COMTRAN (COMmercial TRANslator) es uno de los primeros lenguajes de programación desarrollados en IBM . Fue concebido como el equivalente en programación empresarial del lenguaje de programación científica FORTRAN (FORmula TRANslator). Fue uno de los precursores del lenguaje COBOL . Desarrollado por Bob Bemer en 1957, el lenguaje fue el primero en incluir el elemento de lenguaje de programación conocido como cláusula de imagen .
Contribuciones a COBOL
Se incorporaron varios elementos de COMTRAN a COBOL:
- Cláusula de imagen .
- Parafrasear: dividir el código en párrafos (sin saltos de línea significativos).
- Nombres de párrafos. Los nombres de los párrafos y los saltos (
GO TO's) se asignan a un nombre de párrafo, no a un número de línea. AT ENDcláusula sobre operaciones de entrada de archivos.- Constante figurativa
HIGH-VALUE. - Pasar un valor numérico (
RETURN-CODE) al sistema operativo cuando el programa finaliza .
Cláusula de imagen
Un elemento de cláusula de imagen define cómo se debe formatear un elemento de datos en particular para su salida. Consiste en una cadena de letras y dígitos. Es similar al especificador de formato FORTRAN que se ve en las instrucciones READ y WRITE, o las cadenas de formato que se ven en lenguajes más modernos como C. Esto se convirtió en una parte importante de COBOL.
Programa de muestra
Este es un programa COMTRAN de muestra que realiza cálculos de nómina. [1]
01001 * PROCEDIMIENTO 01002 LLAMAR ( EMPLEADO . NÚMERO ) EMPLOYNO , 01003 ( BONDEDUCTION ) BONDEDUCT , 01004 ( BONDENOMINATION ) BONDENOM , 01005 ( BONDACUMULATION ) BONDACUM , 01006 ( INSURANCE . PREM ) INSPREM , 01007 ( RETIREMENT . PREM ) RETPREM , 01008 ( DEPARTMENT . TOTAL ) DPT . 01009 INICIO . ABRIR TODOS LOS ARCHIVOS . 01010 OBTENER . MASTER . OBTENER MASTER , AL FINALIZAR HACER FIN . DE . MASTERS . 01011 OBTENER . DETALLE . OBTENER DETALLE , AL FINAL IR AL FINAL DE DETALLES 01012 COMPARAR NÚMEROS DE EMPLEADO IR A CALCULAR PAGAR CUANDO EL DETALLE NÚMERO DE EMPLEADO 01013 SEA IGUAL AL NÚMERO DE EMPLEADO MAESTRO , DETALLE BAJO CUANDO EL DETALLE 01014 NÚMERO DE EMPLEADO SEA MENOR QUE EL NÚMERO DE EMPLEADO MAESTRO 01015 DETALLE ALTO MOVER ' M ' AL CÓDIGO DE ERROR MAESTRO , ARCHIVAR EL MAESTRO EN EL ARCHIVO DE ERROR 01016 01017 OBTENER MAESTRO , AL FINAL HACER FIN DE NÚMEROS DE EMPLEADO 01018 IR A COMPARAR NÚMEROS DE EMPLEADO 02001 DETALLE BAJO MOVER
'D' PARA DETALLAR CÓDIGO DE ERROR , DETALLE DE ARCHIVO EN 02002 ERROR . ARCHIVO . 02003 IR A OBTENER . DETALLE . 02004 FIN . DE . MAESTROS . SI DETALLE EMPLOYNO = ALTO . VALOR ENTONCES IR A 02005 FIN . DE . EJECUTAR DE LO CONTRARIO ESTABLECER MAESTRO EMPLOYNO = ALTO . VALOR . 02006 FIN . DE . DETALLES . SI MASTEREMPLOYNO = ALTO . VALOR ENTONCES IR A 02007 FIN . DE . EJECUTAR DE LO CONTRARIO ESTABLECER DETALLE EMPLOYNO = ALTO . VALOR , IR A 02008 PARA COMPARAR . NÚMEROS . DE . EMPLEADOS . 02009 FIN . DE . EJECUTAR . MOVER TOTAL GENERAL CORRESPONDIENTE A PAYRECORD , ARCHIVO 02010 PAYRECORD , CERRAR TODOS LOS ARCHIVOS . 02011 DETENER 1234. 02012 CALCULAR . PAGAR . SI HORAS DE DETALLE ES MAYOR QUE 40 , ENTONCES ESTABLECER DETALLE 02013 BRUTO = ( HORAS DE DETALLE - 40 ) * TASA MAESTRA * 1 . 5 . 02014 ESTABLECER DETALLE BRUTO = DETALLE BRUTO + TASA MAESTRA * 40 , HACER 02015 RUTINA FICA , HACER RUTINA DE RETENCIÓN DE IMPUESTO . 02016 SI MAESTRO
BONDEDUCT NO ES IGUAL A CERO ENTONCES HACER 02017 BOND . RUTINA . 02018 HACER BUSCAR ÍNDICE = 1 ( 1 ) 12 . 02019 NETO . ESTABLECER PAYRECORD NETPAY = DETALLE BRUTO - DETALLE FICA - DETALLE 02020 WHT - DETALLE JUBILACIÓN - DETALLE SEGURO - DETALLE 02021 BONDEDUCT .
Referencias
- ^ Véase el ejemplo en la página 87 del Manual de referencia general del traductor comercial IBM F28-8043, junio de 1960 (pdf, 8,2 M)
Lectura adicional
- Las primeras computadoras de IBM , por Charles Bashe, Lyle Johnson, John Palmer y Emerson Pugh, 1986, MIT Press, ISBN 0-262-02225-7 .
Enlaces externos
- Programadores de genealogía resuelven el problema del Y2K en 1958 Archivado el 4 de marzo de 2007 en Wayback Machine
- Manual de referencia general de IBM Commercial Translator (pdf, 8,2 M) Página 87.