mboost-dp1
Gammelt software
- Forside
- ⟨
- Forum
- ⟨
- Tagwall
Jeg har lige set en usenet post fra en som supporterer 1 million linier Fortran - oprindeligt udviklet på PDP-11 (70'er teknologi) så ikke overraskende Fortran 66 (ikke Fortran 77). Med Hollerith konstanter. Yuck.
Og for de 99.999% der lever i lykkelig uvidenhed om Hollerith konstanter så er det tekst gemt i integer.
Eksempel:
Og for de 99.999% der lever i lykkelig uvidenhed om Hollerith konstanter så er det tekst gemt i integer.
Eksempel:
PROGRAM H
INTEGER*4 IA(4),I
DATA IA/4HHell,4Ho wo,4Hrld ,4H! /
IA(4)=4H!!
WRITE(6,100) (IA(I),I=1,4)
100 FORMAT(1X,4(A4))
END
#9
Det er rigtigt at det varede længe inden det blev almindeligt.
Mange ældre sprog inklusive Cobol og Fortran 77 havde fast længde strenge.
Men der er undtagelser.
Basic mener jeg har haft variabel længde strenge siden 60'erne.
Pascal. Turbo Pascal have String og VAX Pascal have Varying Char tilbage i midt-80'erne. ISO 10206 Extended Pascal definerede en standard variabel længde String i 1990.
Muligvis har PL/I og MUMPS også haft.
Men det var vel først i 90'erne med Python, C++ STL, Java etc. at det blev en selvfølge.
Det er rigtigt at det varede længe inden det blev almindeligt.
Mange ældre sprog inklusive Cobol og Fortran 77 havde fast længde strenge.
Men der er undtagelser.
Basic mener jeg har haft variabel længde strenge siden 60'erne.
Pascal. Turbo Pascal have String og VAX Pascal have Varying Char tilbage i midt-80'erne. ISO 10206 Extended Pascal definerede en standard variabel længde String i 1990.
Muligvis har PL/I og MUMPS også haft.
Men det var vel først i 90'erne med Python, C++ STL, Java etc. at det blev en selvfølge.
#11
Selv folk der programmerer men ikke kender Fortran kan blive forvirret.
Lad os tage 77 versionen foerst:
CHARACTER*16 S
erklarerer en variabel s af typen fast laengde streng med 16 tegn
DATA S/'Hello world ! '/
initialiserer s med en værdi
S(14:14)='!'
erstatter en del af strengen med en anden værdi
WRITE(6,100) S
100 FORMAT(1X,A)
udskriver
Nogenlunde til at forstaa.
66 versionen er mere tricky, fordi Fortran 66 ikke har en streng type. derfor gemmer man teksten i integers.
INTEGER*4 IA(4),I
erklærer en variabel ia som et integer array med 4 elementer (da der kan være 4 tegn i en 32 bit integer så skal der bruges 4 elementer til 16 tegn)
DATA IA/4HHell,4Ho wo,4Hrld ,4H! /
initalisering af array (tricket er at 4Habcd er en konstant som har værdien svarende til 'abcd')
IA(4)=4H!!
ændrer værdi igen med nH syntaxen
WRITE(6,100) (IA(I),I=1,4)
100 FORMAT(1X,4(A4))
udskriver alle array elementer
Selv folk der programmerer men ikke kender Fortran kan blive forvirret.
Lad os tage 77 versionen foerst:
CHARACTER*16 S
erklarerer en variabel s af typen fast laengde streng med 16 tegn
DATA S/'Hello world ! '/
initialiserer s med en værdi
S(14:14)='!'
erstatter en del af strengen med en anden værdi
WRITE(6,100) S
100 FORMAT(1X,A)
udskriver
Nogenlunde til at forstaa.
66 versionen er mere tricky, fordi Fortran 66 ikke har en streng type. derfor gemmer man teksten i integers.
INTEGER*4 IA(4),I
erklærer en variabel ia som et integer array med 4 elementer (da der kan være 4 tegn i en 32 bit integer så skal der bruges 4 elementer til 16 tegn)
DATA IA/4HHell,4Ho wo,4Hrld ,4H! /
initalisering af array (tricket er at 4Habcd er en konstant som har værdien svarende til 'abcd')
IA(4)=4H!!
ændrer værdi igen med nH syntaxen
WRITE(6,100) (IA(I),I=1,4)
100 FORMAT(1X,4(A4))
udskriver alle array elementer
@arne..
formålet med
"S(14:14)='!'
erstatter en del af strengen med en anden værdi"
?
er det bare for at vise hvordan man udskifter et tegn i strengen eller er det på en eller anden måde påkrævet for at have ! til sidst i 'Hello World'?
Er du på en mission for at udbrede kendskab til Fortran, og i så fald, hvorfor? :-)
Jeg får grimme minder fra tiden med C64 basic og GW Basic :-)
formålet med
"S(14:14)='!'
erstatter en del af strengen med en anden værdi"
?
er det bare for at vise hvordan man udskifter et tegn i strengen eller er det på en eller anden måde påkrævet for at have ! til sidst i 'Hello World'?
Er du på en mission for at udbrede kendskab til Fortran, og i så fald, hvorfor? :-)
Jeg får grimme minder fra tiden med C64 basic og GW Basic :-)
#15
At tilføje det andet udråbstegn med et assignment kom med i 66 eksemplet for at vise at H formatet ikke kun var i DATA statement. Og 77 eksemplet skulle jo så gøre det samme.
Fortran (77) var mit første programmeringssprog og vil derfor altid være noget særligt for mig. Og heg bed mærke i den usenet diskussion. Jeg postede det her for skal vi kalde det "nørd interessen". Jeg tror ikke at der er nogen som vil kaste sig over Fortran, men derfor kan det jo være meget sjovt at se noget anderledes.
At tilføje det andet udråbstegn med et assignment kom med i 66 eksemplet for at vise at H formatet ikke kun var i DATA statement. Og 77 eksemplet skulle jo så gøre det samme.
Fortran (77) var mit første programmeringssprog og vil derfor altid være noget særligt for mig. Og heg bed mærke i den usenet diskussion. Jeg postede det her for skal vi kalde det "nørd interessen". Jeg tror ikke at der er nogen som vil kaste sig over Fortran, men derfor kan det jo være meget sjovt at se noget anderledes.
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.