Articulo de referencia

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 pr...

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:

  • Como constantes en DATAdeclaraciones
  • Como argumentos reales constantes en CALLdeclaraciones de subrutinas
  • Como descriptores de edición en FORMATdeclaraciones

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 
      FIN
do
      ESCRITURA DE SUBRUTINA (IARRAY, NCHRS)
do
      ENTERO IARRAY(1) [notas 1]
      ENTERO NCHRS
do
      Número entero ICPW
      DATOS ICPW/4/ [notas 2]
      ENTERO I, NWRDS
do
      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

  • Norma americana FORTRAN . Asociación Americana de Normas, X3.9-1966. pág. 38.

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.

Obtenido de "https://es.wikipedia.org/w/index.php?title=Constante_de_Hollerith&oldid=1208393852"