Stała Holleritha

Stałe Holleritha , nazwane na cześć Hermana Holleritha , były używane we wczesnych programach FORTRAN , aby umożliwić manipulowanie danymi znakowymi.

Wczesny FORTRAN nie miał typu danych CHARACTER , tylko typy liczbowe. Aby wykonać manipulację znakami, znaki musiały zostać umieszczone w zmiennych numerycznych przy użyciu stałych Holleritha. Na przykład stała 3HABC określa trzyznakowy ciąg „ABC”, identyfikowany przez początkową liczbę całkowitą reprezentującą długość łańcucha 3 i określony znak Holleritha H , po którym następuje ciąg danych ABC . Te stałe były bez typu , więc nie było konwersji typów kwestie. Jeśli stała określała mniej znaków, niż można było pomieścić w elemencie danych, znaki były następnie przechowywane w elemencie wyrównanym do lewej i wypełnionym spacjami .

Mechanika

W standardzie FORTRAN 66 składnia Holleritha była dozwolona w następujących zastosowaniach:

  • Jako stałe w instrukcjach DATA
  • Jako stałe rzeczywiste argumenty w instrukcjach CALL podprogramu
  • Jako deskryptory edycji w instrukcjach FORMAT

Przenośność była problematyczna ze stałymi Holleritha. Po pierwsze, słów były różne w różnych systemach komputerowych, więc liczba znaków, które można było umieścić w każdym elemencie danych, również była różna. Implementacje wahały się od zaledwie dwóch do nawet dziesięciu znaków na słowo. Po drugie, trudno było manipulować poszczególnymi znakami w słowie w przenośny sposób. Doprowadziło to do znacznego przesunięcia i maskowania kodu przy użyciu niestandardowych funkcji specyficznych dla dostawcy. Fakt, że zestawy znaków różniły się między maszynami, również komplikował problem.

Niektórzy autorzy byli zdania, że ​​dla najlepszej przenośności należy używać tylko jednego znaku na element danych. Jednak biorąc pod uwagę małe rozmiary pamięci ówczesnych maszyn, technika ta została uznana za wyjątkowo nieekonomiczną.

Przestarzałość technologiczna

Jedną z głównych cech FORTRAN 77 był typ danych CHARACTER . Użycie tego typu danych radykalnie uprościło manipulowanie znakami w programach Fortran - sprawiając, że prawie wszystkie zastosowania techniki stałej Holleritha stały się przestarzałe.

Stałe Holleritha zostały usunięte ze standardu FORTRAN 77, chociaż nadal są opisane w dodatku dla tych, którzy chcą kontynuować wsparcie. Deskryptory edycji Holleritha zostały dopuszczone przez Fortran 90 i zostały usunięte ze standardu Fortran 95.

Przykłady

Poniżej znajduje się program hello world w języku FORTRAN 66 wykorzystujący stałe Holleritha. Zakłada się, że implementacja obsługuje co najmniej cztery znaki na słowo:

      

      
       

        
      
  
       PROGRAM  HELLO1  C  INTEGER  IHWSTR  (  3  )  DANE  IHWSTR  /  4  HHELL  ,  4  HO  WO  ,  3  HRLD  /  C  WRITE  (  6  ,  100  )  IHWSTR  STOP  100  FORMAT  (  3  A4  )  KONIEC 

Oprócz instrukcji DATA , stałe Holleritha były również dozwolone jako rzeczywiste argumenty w wywołaniach podprogramów. Jednak nie było sposobu, aby odbiorca mógł wiedzieć, ile znaków zostało przekazanych. Programista musiał przekazać informacje jawnie. Program hello world mógłby zostać napisany w następujący sposób – na maszynie, w której w słowie zapisane są cztery znaki:

      
       PROGRAM  HELLO2  CALL  WRTOUT (11HHELLO WORLD, 11)  STOP  KONIEC  C  PODPROGRAM  WRTOUT (IARRAY, NCHRS) C INTEGER IARRAY(1) INTEGER NCHRS C INTEGER ICPW DANE ICPW/4/ INTEGER I, NWRDS C NWRDS = (NCHRS + ICPW - 1) /ICPW WRITE (6100) (IARRAY(I), I=1,NWRDS)  RETURN  100 FORMAT (100A4)  END 

Chociaż technicznie nie jest to stała Holleritha, ta sama składnia Holleritha była dozwolona jako deskryptor edycji w instrukcjach FORMAT . Program Hello World można również zapisać jako:

      
       
      
   
       PROGRAM  HELLO3  WRITE  (  6  ,  100  )  STOP  100  FORMAT  (  11  HHELLO  WORLD  )  KONIEC 

Jedną z najbardziej zaskakujących cech było zachowanie deskryptorów edycji Holleritha, gdy były używane jako dane wejściowe. Następujący program zmieniłby się w czasie wykonywania HELLO WORLD na cokolwiek, co byłoby następnymi jedenastoma znakami w strumieniu wejściowym i wydrukowałby to wejście:

      
       
       
      
   
       PROGRAM  CO1  ODCZYTAJ  (  5  ,  100  )  ZAPISZ  (  6  ,  100  )  STOP  100  FORMATUJ  (  11  HELLO  WORLD  )  KONIEC 

Notatki

  • Amerykański standard FORTRAN . Amerykańskie Stowarzyszenie Normalizacyjne, X3.9-1966. P. 38.

4.2.6 Typ Holleritha . Dane Holleritha to ciąg znaków. Ciąg ten może składać się z dowolnych znaków, które można przedstawić w procesorze. Pusty znak jest ważnym i znaczącym znakiem w danych Holleritha.