3. Kifejezések és értékadás
- Kifejezések
- Értékadás
- Beépített numerikus műveletek
- Relációt kifejező operátorok
- Logikai műveletek
- Karakteres műveletek
f) Karakteres műveletek
Az új, illetve bővített
belső
függvények miatt a karakterek kezelése sokkal egyszerűbbé
vált. Ilyen függvények például:
c =
ACHAR(1) |
Az
ASCII tábla I. karaktere |
i =
IACHAR(C) |
A
karakter ASCII táblában elfoglalt helye |
i =
LEN_TRIM(STRING) |
Hossz,
sorvégi szóköz figyelmen kívül hagyása nélkül |
s =
TRIM(STRING) |
Karakterlánc
a sorvégi szóköz eltávolításával |
s =
ADJUSTL(STRING) |
Beallítás
balról: kezdő szóköz eltávolítása |
s =
ADJUSTR(STRING) |
Beállítás
jobbról: záró szóköz eltávolítása |
s =
REPEAT(STRING, NCOPIES) |
Karakterlánc
ismételt összefűzése |
i =
INDEX(STRING, SUBSTRING, BACK) |
Fordított
keresés: részstring elejére ugrik |
i =
SCAN(STRING, SET, BACK) |
Keresés:
karakterlánc bármely karaktere |
i =
VERIFY(STRING, SET, BACK) |
Keresés:
karakterlánc minden eleme |
Belső függvények alkalmazása
c = ACHAR(I)
- I:
integer – fontos: 0 ≤ I ≤ 127
- Végeredmény:
1 karakter hosszúságú
Példa:
ACHAR
(88)
! eredmény: 'X'
i
= IACHAR(C)
- C:
1 karakter hosszúságú – fontos: a karakter része az ISO 646:1983
szabvány
szerinti ASCII táblának
- Végeredmény:
integer 0 ≤ I ≤ 127
Példa:
IACHAR
('X')
!
eredmény: 88
i =
LEN_TRIM(STRING)
- STRING: karakterlánc
- Végeredmény: integer – ha a
karakterlánc csak üres karaktert tartalmaz, a végeredmény nulla
Példa:
LEN_TRIM (' A B ')
! eredmény: 4
LEN_TRIM
(' ')
! eredmény: 0
s =
TRIM(STRING)
- STRING: karakterlánc
- Végeredmény: bemenő
karakterlánc a záró szóköz
nélkül
– ha nem tartalmaz záró sorközt, a végeredmény megegyezik a bemenő
karakterlánccal
–
ha csak üres karaktert tartalmaz,
a végeredmény 0 hosszúságú
Példa:
TRIM
(' A B ')
! eredmény: ' A B'
s =
ADJUSTL(STRING)
- STRING: karakterlánc
- Végeredmény: bemenő
karakterlánc kezdő szóköz nélkül – megfelelő számú üres karakter
hozzáillesztésével
Példa:
ADJUSTL
(' WORD')
! eredmény: 'WORD '
s =
ADJUSTR(STRING)
- STRING: karakterlánc
- Végeredmény: bemenő
karakterlánc záró szóköz nélkül
– megfelelő számú üres karakter elejére illesztésével
Példa:
ADJUSTR
('WORD ')
! eredmény: ' WORD'
s =
REPEAT(STRING, NCOPIES)
- STRING: karakterlánc
- NCOPIES: integer – nem
negatív
- Végeredmény: bemenő
karakterlánc 'NCOPIES' számú
ismétlése
Példa:
REPEAT
('H', 2) ! eredmény:
'HH'
REPEAT
('XYZ', 0)
! eredmény: 0 hosszúságú
i =
INDEX(STRING, SUBSTRING, BACK)
- STRING: karakterlánc
- SUBSTRING: 'STRING'-gel
megegyező típusú
karakterlánc – fontos: 'SUBSTRING' hossza ≤
'STRING' hossza
- BACK: logikai típus
(opcionális)
- Végeredmény:
integer
- ha 'back' nincs jelen,
vagy .FALSE. értékű, akkor a végeredmény a 'STRING'-ben legelőször
előforduló
'SUBSTRING' helye (legkisebb integer érték)
- ha 'back' .TRUE.
értékű, akkor a végeredmény a STRING'-ben legutoljára
előforduló 'SUBSTRING' helye (legnagyobb integer érték)
- ha a 'STRING' nem
tartalmazz a 'SUBSTRING'-et, az eredmény 0
Példa:
INDEX
('FORTRAN',
'R')
!
eredmény: 3
INDEX
('FORTRAN', 'R',
BACK = .TRUE.)
!
eredmény: 5
INDEX
('FORTRAN', 'K')
! eredmény: 0
i =
SCAN(STRING, SET, BACK)
- STRING: karakterlánc
- SET: 'STRING'-gel
megegyező típusú karakterlánc
- BACK: logikai típus
(opcionális)
- Végeredmény: integer
- ha 'back' nincs jelen,
vagy .FALSE. értékű, és 'STRING' legalább
egy karakterét tartalmazza 'SET'-nek, akkor a
végeredmény a 'STRING'-ben
lévő legelső 'SET' karakter helye
- ha
' back' .TRUE. értékű, és
'STRING'
legalább egy
karakterét tartalmazza
'SET'-nek, akkor a végeredmény a 'STRING'-ben lévő legutolsó 'SET'
karakter
helye
- ha
a 'STRING' nem tartalmazz a 'SET'-et, vagy 'STRING' 0 hosszú, az
eredmény
0
Példa:
SCAN
('FORTRAN', 'TR')
!
eredmény: 3
SCAN
('FORTRAN',
'TR', BACK = .TRUE.)
!
eredmény: 5
SCAN
('FORTRAN', 'BCD')
!
eredmény: 0
i =
VERIFY(STRING, SET, BACK)
- STRING: karakterlánc
- SET: 'STRING'-gel
megegyező típusú karakterlánc
- BACK: logikai típus
(opcionális)
- Végeredmény: integer
- ha 'back' nincs jelen,
vagy .FALSE. értékű, és 'STRING' legalább
egy karakterét nem tartalmazza
'SET'-nek, akkor a végeredmény a
'STRING'-ben előforduló első karakter helye, amely nem része
'SET'-nek
- ha
' back' .TRUE. értékű, és
'STRING'
legalább egy
karakterét nem
tartalmazza 'SET'-nek, akkor a a végeredmény a 'STRING'-ben előforduló
utolsó
karakter helye, amely nem része 'SET'-nek
- ha
a 'STRING' tartalmazza a 'SET' összes karakterét, vagy 'STRING' 0
hosszú,
az eredmény 0
Példa:
VERIFY
('ABBA', 'A')
! eredmény: 2
VERIFY
('ABBA', 'A',
BACK = .TRUE.)
!
eredmény: 3
VERIFY
('ABBA', 'AB')
! eredmény:
0
Egyéb változások
- Átfedő részkarakterlácok engedélyezése
Példa:
text(1:5)
= test(3:7)
! Fortran 77-ben nem megengedett
- Összefűző operátor
használatának kisebb korlátozása
Példa:
Különböző hosszúságú (4, 6) karakterláncok összefűzése és kiíratása
10-karakter hosszúságú változóba.
CHARACTER(LEN=4)
:: John = 'John', Sam = 'Sam'
CHARACTER(LEN=6)
:: Lori = 'Lori', Reagan = 'Reagan'
CHARACTER(LEN=10)
:: Ans1, Ans2, Ans3, Ans4
Ans1
= John // Lori
!
Ans1='JohnLori '
Ans2
= Sam // Reagan
!
Ans2= 'Sam Reagan'
Ans3
= Reagan // Sam
!
Ans3='ReaganSam '
Ans4
= Lori // Sam
!
Ans4='Lori
Sam '
- Nulla-hosszúságú karakter
engedélyezése
Példa:
részkarakterlánc definiálása, ahol k > n
string(k:n)
! eredmény: 0
- Konstans
substringek
engedélyezése (Fortran 77-ben hibát eredményezne!)
Példa: integer változó (k)
konvertálása a megfelelő
karakterré
achar =
"0123456789"(k:k)
! megjegyzés: hiba ha k
< 0 vagy k > 9
<< Előző | Következő >>
Oldal tetejére | Vissza a főoldalra