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.