stringtranslate.com

Constante de Hollerith

Las constantes de Hollerith , llamadas en honor a Herman Hollerith , se utilizaron en los primeros programas FORTRAN para permitir la manipulación de datos de caracteres.

Los primeros FORTRAN no tenían CHARACTER tipos de datos , solo tipos numéricos. Para poder manipular caracteres, era necesario colocarlos en variables numéricas mediante constantes Hollerith. Por ejemplo, la constante 3HABCespecificaba una cadena de tres caracteres "ABC", identificada por el entero inicial que representaba la longitud de la cadena 3y el carácter Hollerith especificado H, seguido de la cadena data ABC. Estas constantes no tenían tipos , por lo que no había problemas de conversión de tipos . Si la constante especificaba menos caracteres de los que era posible almacenar en un elemento de datos, los caracteres se almacenaban en el elemento justificados a la izquierda y con espacios en blanco .

Mecánica

Según el estándar FORTRAN 66 , la sintaxis Hollerith estaba permitida en los siguientes usos:

La portabilidad era problemática con las constantes de Hollerith. En primer lugar, el tamaño de las palabras variaba en los distintos sistemas informáticos, por lo que la cantidad de caracteres que se podían colocar en cada elemento de datos también variaba. Las implementaciones variaban desde tan solo dos hasta diez caracteres por palabra. En segundo lugar, era difícil manipular caracteres individuales dentro de una palabra de manera portátil. Esto condujo a una gran cantidad de cambios y enmascaramientos de código utilizando características no estándar y específicas del proveedor. El hecho de que los conjuntos de caracteres variaran entre máquinas también complicaba el problema.

Algunos autores opinaban que, para lograr una mejor portabilidad, se debía utilizar un solo carácter por elemento de datos. Sin embargo, considerando el reducido tamaño de la memoria de las máquinas de la época, esta técnica se consideraba extremadamente derrochadora.

Obsolescencia tecnológica

Una de las principales características de FORTRAN 77 fue el CHARACTERtipo de datos de cadena. El uso de este tipo de datos simplificó enormemente la manipulación de caracteres en los programas Fortran, lo que hizo que casi todos los usos de la técnica de constantes de Hollerith quedaran obsoletos.

Las constantes Hollerith se eliminaron del estándar FORTRAN 77, aunque todavía se describen en un apéndice para aquellos que deseen seguir recibiendo soporte. Los descriptores de edición Hollerith se permitieron hasta Fortran 90 y se eliminaron del estándar Fortran 95.

Ejemplos

El siguiente es un programa de Hola mundo en FORTRAN 66 que utiliza constantes de Hollerith. Se supone que la implementación admite al menos cuatro caracteres por palabra:

  PROGRAMA HOLA1 C ENTERO IHWSTR ( 3 ) DATOS IHWSTR / 4 HHELL , 4 HO WO , 3 HRLD / C ESCRIBIR ( 6 , 100 ) IHWSTR DETENER  100 FORMATO ( 3 A4 ) FIN               

Además de DATAlas instrucciones, también se permitían las constantes Hollerith como argumentos reales en las llamadas a subrutinas. Sin embargo, no había forma de que el destinatario de la llamada supiera cuántos caracteres se habían pasado. El programador tenía que pasar la información explícitamente. El programa Hola mundo se podía escribir de la siguiente manera, en una máquina donde se almacenan cuatro caracteres en una palabra:

 PROGRAMA HOLA2 LLAMA WRTOUT (11HHELLO WORLD, 11) DETENER  FINdo ESCRITURA DE SUBRUTINA (IARRAY, NCHRS)do ENTERO IARRAY(1) [notas 1] ENTERO NCHRSdo Número entero ICPW DATOS ICPW/4/ [notas 2] ENTERO I, NWRDSdo NWRDS = (NCHRS + ICPW - 1) / ICPW ESCRIBIR (6,100) (IARRAY(I), I=1,NWRDS) DEVOLVER 100 FORMATO (100A4) [notas 3]  FIN

Aunque técnicamente no es una constante de Hollerith, se permitía la misma sintaxis de Hollerith como descriptor de edición en FORMATlas instrucciones. El programa Hola mundo también se podría escribir como:

  PROGRAMA HOLA3 ESCRIBIR ( 6 , 100 ) DETENER  100 FORMATO ( 11 HHELLO WORLD ) FIN          

Una de las características más sorprendentes fue el comportamiento de los descriptores de edición de Hollerith cuando se utilizaban como entrada. El siguiente programa cambiaría en tiempo de ejecución HELLO WORLDa los siguientes once caracteres del flujo de entrada e imprimiría esa entrada:

  PROGRAMA QUÉ1 LEER ( 5 , 100 ) ESCRIBIR ( 6 , 100 ) DETENER  100 FORMATEAR ( 11 HHELLO WORLD ) FIN             

Notas

  1. ^ FORTRAN 66 no tenía una manera de indicar una matriz de tamaño variable, por lo que se usaba un "1" para indicar que el tamaño era desconocido.
  2. ^ Cuatro caracteres por palabra.
  3. ^ Un recuento de 100 es un valor "suficientemente grande" para que se pueda escribir cualquier cantidad razonable de caracteres. Tenga en cuenta también que aquí también se codifican cuatro caracteres por palabra.

Referencias

4.2.6 Tipo Hollerith . Un dato Hollerith es una cadena de caracteres. Esta cadena puede constar de cualquier carácter que pueda representarse en el procesador. El carácter en blanco es un carácter válido y significativo en un dato Hollerith.