Rfo / - / r 4 & á г ? K FK I-72-32
Krammer Gergely
Lovas Istvánná SLIP
SZIMMETRIKUS LISTAKEZELŐ SZUBRUTIN RENDSZER
AZ MTA CDC 3300-AS ÉS ICT 1905-ÖS SZÁMOLÓGÉPÉN
еЮмп&алхап S4 cadem^
CENTRAL RESEARCH
INSTITUTE FOR PHYSICS
/ & ■
. ■ KÖNYVTÁRA * I
FUTATÓ INTŐÜL
BUDAPEST
К Ж 1 - 7 2 - 3 2
SLIP
- SZIMMETRIKUS LISTAKEZELŐ SZUBRUTIN RENDSZER AZ MTA CDC 3300-AS ÉS .ICT 1905-Ö S SZÁMOLÓGÉPÉN
Krammer G e r g e ly (MTA A u t o m a t iz á lá s i K utató I n t é z e t ) ' Lovas I s tv á n n á (MTA K özponti F i z i k a i K u ta tó I n t é z e t )
Computing T ech n iq u es Departm ent
SLIP i s a l i s t p r o c e s s in g s y s te m in w h ic h each e le m e n t i s l i n k e d to b o th i t s p r e d e c e s s o r and i t s s u c c e s s o r . The sy stem i s embedded in t h e FORTRAN la n g u a g e a s a s e t of s u b r o u t in e s . SLIP was d e v e lo p e d by J . Weizenbaum. The system h a s been im plem ented a t ICL 1905 and CDC 3 5 0 0 com puters i n order t o p r o v id e p o s s i b i l i t i e s f o r l i s t p r o c e s s in g and sy m b o lic m a n ip u la tio n o f a l g e b r a i c e x p r e s s i o n s .
KIVONAT
A SLIP sz im m e tr ik u s l i s t á k k e z e l é s é r e s z o l g á l ó FORTRAN szu b r u t i n r e n d s z e r . Weizenbaum d o lg o z ta k i 1 9 6 3 -b a n . A r e n d sz e r implemen
t á c i ó j a az ICL 1 9 0 5 -o s é s a CDC 3 3 0 0 - a s szám ológép ek re k é s z ü l t e l , ab
b ó l a c é l b ó l , h o g y m egterem tse a l i s t a i e l d p l g o z á s é s az a l g e b r a i k i f e j e z é s e k k e l v é g z e t t m ű v e le te k l e h e t ő s é g é t .
Р Е З Ю М Е
Для обработки симметричных списков Вейзенбаумом в 1963 г . была разработана систем а подпрограмм "SLIP4 , написанная на языке FORTRAN. С целью обработки списков и проведения операций с алгебраическими выраже
ниями система была приспособлена к ЭВМ ICL 1905 и CDC 3300.
TARTALOMJEGYZÉK
1 . BEVEZETÉS... 1
2 . A SLIP ADATSTRUKTÚRA... 5
5 . PR OGRAMSTRUKTURA... 7
4 . A SLIP FŰTIKOK EŐBB CSOPORTJAI... 9
4 . 1 A r e n d s z e r e l ő k é s z í t é s e é s é L ln d itá sa . . . . 9
4 . 2 H e ly ig é n y lé s é s f e l s z a b a d í t á s ... ... 9
4 . 5 L i s t á k é s z i t é s . In fo r m á c ió e l h e l y e z é s e é s v i s s z a n y e r é s e ... 11
4 . 4 V é g ig h a la d á s a l i s t á n , a SEQUENCER é s a READER. . . . 12
4 . 5 A l e i r ó l i s t a ... 15
4 . 6 R e k u r z i ó ... 15
4 . 7 I n p u t - O u t p u t ... 16
4 . 8 Egyéb r u t i n o k ... 17
5 . A SLIP SZUBRUTINOK RÉSZLETES LEÍRÁSA... 18
5 . 1 A r e n d s z e r e l ő k é s z í t é s e é s i n d í t á s a ... 18
5 . 2 L i s t a k é s z i t é s , In fo r m á c ió e l h e l y e z é s e é s v is s z a n y e r é s e 18 5 . 5 V é g ig h a la d á s a l i s t á n , a SEQUENCER é s a READER . . . 21
5 . 4 A l e i r ó l i s t a . . . 24
5 . 5 R e k u r z i ó ... 26
5 . 6 In p u t-O u tp u t . . . ... . . . 27
5 . 7 L is t á k i r a g j e l ö l é s e ... 28
5 . 8 L is t a m ű v e l e t e k ... 29
5 . 9 L i s t a v i z s g á l ó r u t in o k ... 50
5 .1 0 V egyes r u tin o k ... 51
6 . PÉLDÁK 59 7 . A RENDSZER HASZNÁLATÁVAL KAPCSOLATOS TUDNIVALÓK... 44
8 . A SLIP RUTINOK ÖSSZEFOGLALÓ TÁBLÁZATA... 48
9 . IRODALOMJEGYZÉK... 52
1 . BEVEZETÉS
A SLIP szim m etrik u s l i s t á k k e z e l é s é r e s z o l g á l ó FORTRAN s z u b r u t i n r e n d s z e r . Weizenbaum 1 9 6 5 -b a n k ö z ö lt e az IBM 7 0 9 0 -r e k i d o l g o z o t t s z u b r u tin o k a t ( [ 1 ] ) é s a z ó ta töb b más g é p t íp u s r a a d a p t á lt á k a z o k a t.
A l i s t a a szá m itó g ép ek nem numerikus a lk a lm a z á sa in a k nagy r é s z é n é l j ó l h a s z n á lh a t ó fo g a lo m . A l i s t a e le m e k b ő l á l l ; a l i s t a e le m e i v a g y tovább nem b o n th a tó ad a to k : atom ok, v a g y l i s t á k : a f ő l i s t a a l ~ l i s t á i . Az atomok j e l e n t é s e a lk a lm a zá so n k én t v á l t o z ó , h a so n ló k ép p e n a l i s t á k f e n t i a la p t u la jd o n s á g o n tú lm en ő s a j á t s á g a i .
A l i s t á k t á r o l á s á r a a j e l e n l e g e l t e r j e d t , s z e k v e n c i á l i s c im z é - sü szám ológépm em óriákban szo m széd o s m em óriaszavakból k i a l a k í t o t t c e l l á k a t h a sz n á lu n k . A szim m etrik u s l i s t á k e le m e i o ly a n c e llá k ; , am elyek t a r ta lm a z / h a t /п ак atom i in f o r m á c ió t é s ta r ta lm a z z á k a l i s t a k ö v etk ező e l e mének é s m eg elő ző elem ének g é p i c im é t . E zek et a m u ta tó k a t / p o i n t e r e k e t / k ö v e tv e a l i s t a egymás u t á n i e le m e i könnyen k e z e lh e t ő k , a l i s t a b ő v í t h e t ő , le b o n t h a t ó .
A l i s t a e le m e i m u tatók k al vannak egym áshoz k a p c s o lv a , nem k á L l, hogy a memóriában egymás u tá n i szavak b an h e ly e z k e d je n e k e l . Olyan a l k a l m a zá so k n á l, a m e ly e k n é l a program f u t á s a so rá n a l i s t á k dinam ikusan v á l to z n a k , ez a s z e r v e z é s l e h e t ő s é g e t n y ú jt a r e n d e lk e z é s r e á l l ó m em ória jó f e lh a s z n á l á s á r a : a p i l l a n a t n y i l a g szabad c e l l á k e g y k özös c á L l a lá n - con t a l á l h a t ó k , a m e ly r ő l minden l i s t a ig é n y é n e k m e g f e le lő e n kaphat újabb c e l l á k a t .
X X X
Ebben a l e í r á s b a n a l e h e t s é g e s a lk a lm a z á so k r a c sa k az ir o d a lo m je g y z é k e n k e r e s z t ü l u ta lu n k . C élunk az MTA k é t szá m o ló g ép ére párhuzam o
sa n m e g h o n o s íto tt SLIP s z u b r u tin o k f e l h a s z n á l ó i s z i n t ű l e í r á s a . A r e n d s z e r nagyobb r é s z e FORTRAN-ban i r t s z u b r u tin o k b ó l á l l , am elyek más gép
típ u s o n i s h a s z n á lh a t ó a k , ezen f e l ü l néhány a sse m b ly n y e lv e n i r t szu b r u t i n t i s t a r t a lm a z , a m ely ek et más g é p típ u s o k r a k ü lö n meg k e l l Í r n i .
A 2 - 4 . r é s z e k b e n v á z la t o s a n l e í r j u k a r e n d s z e r h a s z n á l a t á t , majd az 5 . r é s z b e n a r e n d s z e r v a la m en n y i s z u b r u t i n j á t . V égül a 6 . r é s z -
b en p é ld á k a t m utatunk b e . A 7- r é s z ta r ta lm a z z a az MTA CDC 3 3 0 0 -a s é s ICL 1 9 0 5 -o s szá m o ló g ép én im p le m e n tá lt r e n d s z e r f e l h a s z n á lá s á v a l k a p c s o l a t o s t u d n iv a l ó k a t .
Munkánk c é l j a e g y , a nem num erikus a lk a lm a z á so k b a n j ó l h a s z n á lh a t ó r e n d s z e r m e g v a ló s ít á s a v o l t , a tudom ányos kutatóm unka e l ő s e g í t é s e é rd e k é b e n . A dott c é l r a te r m é s z e t e s e n k i a l a k í t h a t ó e n n é l m e g fe le lő b b r e n d s z e r i s , de e l ő z ő l e g a SLIP-en tan u lm án yozh atók az i l y e n r e n d s z e r e k t u l a j d o n s á g a i .
Munkánkban nagy s e g í t s é g e t n y ú jto tt a k a f e lm e r ü lő problém ák m e g v ita tá s á b a n Ivanyos L a j o s n é , T a r já n M ihály. éB Zimányi J ó z s e fn é tu d o mányos munkatársak? e z ú to n mondunk k ö s z ö n e t é t .
- 3 -
2 . A SLIP ADATSTRUKTÚRA
Az a la p in fo r m á c ió s modul a SL IP-ben az ú g y n e v e z e tt c é l l a , am ely k é t , a memóriában egymás u tá n k ö v e tk e z ő " t á r o ló e g y s é g b ő l" á l l .
A c e l l a e l s ő r é s z é t CONT r é sz n e k n e v e z z ü k , a m ásodik r é s z a DATUM r é s z , am ely a f e lh a s z n á l ó sze m p o n tjá b ó l az atom i in fo r m á c ió h o r d o z ó ja :
ID LNKL LNKR CONT r é s z
DATUM r é s z
A CONT r é s z to v á b b i három r é s z r e b o m lik : ID , LNKL é s LNKR.
Az ID r é s z ta r ta lm a :
0 - ha a DATUM r é s z a f e l h a s z n á l ó á l t a l é r t e lm e z e t t a d a t , 1 - ha a DATUM r é s z e g y l i s t a " n ev e" ,
2 - a c e l l a e g y l i s t a f e j e ,
3 - a c e l l a eg y l i s t a ' " r e a d e r " - j e .
Az LNKL é s LNKR mező az e lő z ő / b a l / , i l l e t v e a k ö v e tk e z ő / j o b b / c e l l a g é p i cim ét t a r t a lm a z z a . A r e a d e r e k k i v é t e l é v e l m inden c e l l a e g y é s c sa k egy l i s t á h o z t a r t o z h a t , v a g y e g y a f e l h a s z n á l ó á l t a l k é s z í t e t t l i s t á h o z , va g y a r e n d s z e r á l t a l k e z e l t l i s t á h o z , az ú g y n e v e z e tt " sza b a d c e l lá k l i s t á j á " - h o z .
Ha a c e l l a ID r é s z e 0 , a DATUM r é s z e b á r m ily e n i n f o r m á c i ó t . t a r ta lm a z h a t. L eh et az a d a t e g é s z v a g y le b e g ő p o n t o s szám , k a r a k te r s t b . , az ad at e l ő á l l í t á s á r ó l é s f e l h a s z n á l á s á r ó l a program ozó á l t a l i r t FORTRAN program g o n d o sk o d ik . Az a la p s t r u k t u r á l i s e g y s é g a SL IP -ben a l i s t a . A l i s t a egy v a g y több ö s s z e k a p c s o l t c e l l á b ó l á l l , a c e l l á k az LNKL é s LNKR mezőkön - a szom széd os c e l l á k g é p i cimén - k e r e s z t ü l k a p cso ló d n a k egymás
h o z . Minden l i s t á e l e m / c e l l a / cime e lő f o r d u l a szom széd os l i s t a e l e m LNKL m ezőjében é s a m ásik szom széd LNKR m ező jéb en .
Minden l i s t á n a k v a n egy k i t ü n t e t e t t elem e / c e l l á j a / , amelynek az ID r é s z e = 2 . E zt a c e l l á t a l i s t a f e j é n e k n e v e z z ü k . Minden lis t á n a k c sa k e g y f e j e l e h e t . M ivel minden l i s t á n a k van e g y f e j e , e z e n k e r e s z t ü l a l i s t á r a v a l ó h iv a t k o z á s e g y é r te lm ű . A l i s t á r a v a ló h iv a t k o z á s e g y l i s t a n é v v e l t ö r t é n i k ; a l i s t a n é v o ly a n s z ó , m ely ta r ta lm a z z a a l i s t a f e j g é p i c i m é t . Ez a s z ó le h e t a program v a la m e ly v á l t o z ó j a , v a g y s z e r e p e l h e t e g y ID = 1 t i p u s u c e l l a DATUM r é s z é b e n .
A l i s t a f e j CONT r é s z é n e k LNKL-je a l i s t a l e g a l s ó e le m é r e , az LNKR-je a l i s t a l e g f e l s ő e lem ér e m u ta t.
A l i s t a f e j DATUM r é s z e u g y a n o ly a n m ezőkre van f e l o s z t v a , m int а СОNT r é s z e :
2 LNKL LM ÍR
Ж D E S C .L I S T R E F .C O U N T
Ж /L IST МАЖ/ mező a l i s t a m e g j e lö lé s é r e s z o l g á l h a t ,
DESCR.LIST mezőben v a g y a l e i r ó l i s t a cim e v a n , v a g y 0 , / a l e i r ó l i s t a fogalm án ak m a g y a r á z a tá t később m e g t a l á l j u k / , REF.COUNT mező e g y e g é s z szám ot t a r t a lm a z , m ely m egm u tatja, hogy
ez a l i s t a h á n y sz o r f o r d u l e l ő a l l i s t a k é n t .
Az L1 l i s t á r ó l a z t mondjuk, hogy az L2 l i s t a a l l i s t á j a , ha a z L1 l i s t a n e v é t az L2 l i s t a egy elem e a DATUM r é s z é b e n t a r ta lm a z z a . A n e v e t ta r ta lm a z ó c e l l a ID r é s z e = 1 , a z i l y e n c e l l á t lis t a k a p c s o ló n a k n e v e z z ü k .
1 LNKL LNKR
LISTANEV
N in c s a la p v e t ő k ü lö n b sé g l i s t a é s a l l i s t a k ö z ö t t , bárm ely l i s t a e lő f o r d u l h a t egy m á sik l i s t a a l l i s t á j a k é n t .
A le g b o n y o lu lt a b b s z e r k e z e t i e g y sé g a l i s t a s t r u k t u r a , am ely e g y f ő l i s t á b ó l é s t e t s z ő l e g e s szám ú a l l i s t á b ó l á l l h a t . Az a l l i s t á k l e h e tn e k a f ő l i s t a a l l i s t á i vagy e g y a l l i s t a a l l i s t á i , s t b . , I l y e n ö s s z e t e t t l i s t a s t r u k t u r á v a l á b r á z o lh a tó p é ld á u l e g y f a s t r u k t ú r a .
K özös a l l i s t á k m e g e n g e d e tte k ; több l i s t a k ö z ö s a l l i s t á j a csa k e g y s z e r f o r d u l e l ő a memóriában.
5
1
P é ld a e g y s z e r ű l i s t á r a
P é ld a ö s s z e t e t t l i s t á r a
- 7 -
? . PROGRAMSTRUKTÚRA
A S L I P - r e n d s z e r a l a p j á t az ú g y n e v e z e t t b á z i s p r i m i t i v r u t i nok a l k o t j á k ; e z e k v é g z i k a r e n d s z e r a l a p v e t ő f u n k c i ó i t . M eg ad o tt é r t é k e k e t b e t ö l t e n e k egy S L I P - c e l l a v a l a m e l y i k / I D , GONT, LNKL, LNKR, DATUM/ m e z e j é b e , i l l e t v e f ü g g v é n y é r t é k k é n t s z o l g á l t a t j á k a c e l l a v a l a m e l y i k m e z e jé b e n t á r o l t é r t é k e t .
A b á z i s p r i m i t i v r u t i n o k á l t a l á b a n a g é p i s z ó r é s z e i n v é g e z n e k m ű v e l e t e t , m e g írá s u k h o z i s m e r n i k e l l a c e l l a s z e r k e z e t é t , a z a - d o t t gépen, v a l ó k o n k r é t m e g v a l ó s i t á s á t , e z é r t e ze k a r u t i n o k a s s e m b l y n y e l v e n Í r ó d t a k .
A f e l h a s z n á l ó á l t a l á b a n a b á z i s p r i m i t i v r u t i n o k a t k ö z v e t l e n ü l nem h a s z n á l j a ; a S L I P - r e n d s z e r m agasabb s z i n t ű r u t i n j a i a z o n b a n e z e k r e a r u t i n o k r a é p ü l n e k , m i n t a l a p r a . A b á z i s p r i m i t í v e k t ő l e l t e k i n t v e a S L I P - r e n d s z e r r u t i n j a i FORTRAN n y e l v e n í r ó d t a k . A FORTRAN r u t i n o k j ó i e l h a t á r o l h a t ó c s o p o r t o k a t a l k o t n a k , a m e l y e k m in d e g y ik e a l i s t a k e z e l é s e g y - e g y m ó d já ra v o n a t k o z i k . A l e g t ö b b S L I P - r u t i n FORTRAN- f ü g g v é n y k é n t v a n m e g í r v a , de n i n c s l o g i k a i k ü l ö n b s é g a k ö z ö t t , h o g y az
i l l e t ő r u t i n t f ü g g v é n y k é n t v a g y s z u b r u t i n k é n t a k t i v i z á l j u k . Egy FORTRAN- -m o d u lo n b e l ü l a z o n b a n a l e g t ö b b szám o ló g ép F O R T R A N -re p re z e n tá c ió ja csa k az e g y i k módot e n g e d i meg.
P é l d á u l a
J = LIST (K)
u t a s í t á s s a l éppúgy l é t r e h o z h a t u n k egy l i s t á t , m in t - e g y m ásik FORTRAN- m odulban - a
CALL LIST (K) u t a s í t á s s a l .
A FORTRAN-ban a v á l t o z ó k n a k é s f ü g g v é n y e k n e k t i p u s a van ; ha más t i p u s d e k l a r á c i ó t nem a d u n k , az I , I , K, L, M, N b e t ű v e l kezdődő azo n o s í t ó k e g é s z t í p u s ú a k , a t ö b b i v a l ó s t i p u s u . A S L I P - r u t i n o k r a g a s z k o d nak e h h e z az i m p l i c i t t i p u s d e k l a r á c i ó h o z .
A f e l h a s z n á l ó n a k t e h á t t e k i n t e t b e k e l l v e n n i e a f ü g g v é n y e k t i -
p u s á t , am ik o r f e l h a s z n á l j a ő k e t : p é l d á u l a SEQLL*-függvény az i m p l i c i t t i p u s d e k l a r á c i ó m i a t t v a l ó s . A c e l l a DATUM-részét a SEQLL-függvény s e g í t s é g é v e l csa k e g y
A = SEQLL ( S , F )
t i p u s u u t a s í t á s s a l t u d j u k v á l t o z a t l a n fo r m á b a n á t v e n n i , a К = SEQLL ( S , F )
u t a s i t á s e s e t é b e n l e b e g ő p o n t o s - f i x p o n t o s k o n v e r z i ó t ö r t é n i k .
Az a t o m i i n f o r m á c i ó k e z e l é s e t e l j e s e n a f e l h a s z n á l ó f e l a d a t a , i g y a r e n d s z e r a DATUM-rész t í p u s á t sem i s m e r i . í g y ez a t í p u s k o n v e r z i ó a t a r t a l o m t u l a j d o n k é p p e n i t í p u s á t ó l / e g é s z , v a l ó s , l o g i k a i , k a r a k t e r , c im s t b . / f ü g g e t l e n , f o r m á l i s k o n v e r z i ó .
A nem k í v á n a t o s k o n v e r z i ó e l k e r ü l é s é r e t ö b b l e h e t ő s é g v a n . P é l d á u l :
• • •
EQUIVALENCE (INTREG, VALREG)
• • •
• • •
VALREG = SEQLL ( S , F)
C INTREG-BEN BENNE VAN VÁLTOZATLAN FORMÁBAN A
C CEILA DATUM RÉSZÉ
• • •
A r e n d s z e r h e z t a r t o z i k az IN TGER-függvény, am ely l e h e t ő v é t e s z i , h o g y egy v a l ó s t i p u s u v á l t o z ó b a n e l h e l y e z e t t é r t é k e t v á l t o z t a t á s / k o n v e r z i ó / n é l k ü l á t t ö l t s ü n k egy e g é s z t i p u s u v á l t o z ó b a . P é l d á u l :
К = INIGER (SEQLL (S , F ) )
A SLIP t e l j e s m é r t é k b e n k i h a s z n á l j a a FORTRAN-nak a z t a t u l a j d o n s á g á t , h o g y a f ü g g v é n y h i v á s o k t ö b b s z ö r ö s m é l y s é g b e n egym ásba s k a t u l y á z h a t ó k .
A n a g y b e t ű s r ö v i d í t é s e k e g y - e g y SLIP r u t i n n e v é t j e l e n t i k , am elynek p o n t o s l e i r á s á t a az p . f e j e z e t b e n t a l á l j u k m eg .
- 9 -
4 . A SLIP-RUTINOK FŐBB CSOPORTJAI
4 . 1 A r e n d s z e r e l ő k é s z í t é s e é s e l i n d í t á s a
A le g tö b b l i s t a k e z e l ő r en d sz e r h e z h a so n ló a n a SLIP a m em óriát dinam ikusan j e l ö l i k i . Ez a z t j e l e n t i , hogy a r e n d s z e r e l k é s z í t i a
" szabad c e l l á k l i s t á j á t " /LIST OF AVAILABLE SPACE, a to váb b iak b an LAVS/, s v a la h á n y sz o r egy uj c e l l á r a v a n s z ü k s é g , l e a k a s z t e g y c e l l á t a LAVS- r ó l . Ha v a la m e ly c e l l á r a a to v á b b ia k b a n már n in c s s z ü k s é g , a r e n d s z e r a f e l s z a b a d u l t c e l l á t v i s s z a a k a s z t j a a LAVS-ra.
A LAVS-t az IN1TAS r u t i n k é s z í t i e l a f e l h a s z n á l ó á l t a l e r r e a c é lr a k i j e l ö l t tö m b b ő l. A f e lh a s z n á ló n a k a program jában d e k l a r á l n i k e l l egy e g y d im e n z ió s tömböt é s h ív n ia k e l l az INITAS s z u b r u t i n t . Te
h á t minden programnak a k ö v etk ező k ép p en k e l l k e z d ő d n ie : PROGRAM PÉLDA
DIMENSION AREA (5 0 0 0 )
CALL INITAS (AREA, 5 0 0 0 )
A to v á b b ia k b a n a f e l h a s z n á l ó k ö z v e t le n ü l nem h iv a t k o z h a t az AREA töm bre.
5000 h e l y e t t te r m é s z e t e s e n más e g é s z szám i s á l l h a t a DIMENSION u t a s í tá s b a n .
A "szabad c e l l á k l i s t á j a " fo rm á já t t e k in t v e tu la jd o n k é p p e n nem S L I P - l i s t a , m iv el a k a p c s o la t a l i s t a - e l e m e k k ö z ö t t c s a k egy ir á n y b a n van meg,
4 . 2 H e ly ig é n y lé s é s f e l s z a b a d í t á s
B árm ilyen dinam ikus h e l y i g é n y l ő r e n d s z e r b e n a memória eredm ényes k ih a s z n á lá s a azon a l a p u l , hogy a z t a h e l y e t , m elyre n i n c s tovább szü k
s é g , a zo n n a l e le n g e d jü k . F elm erü l a k é r d é s , k i h a tá r o z z a meg, hogy m i
kor l e h e t e g y m em óriaegységet e le n g e d n i? Vannak n y e lv e k , / p l . : L IS P , SNOBOL/, m elyekben a memória f e l e t t i r e n d e lk e z é s t e l j e s e n a r e n d s z e r -
he z t a r t o z i k , a r e n d s z e r s z is z t e m a t ik u s a n v é g i g v i z s g á l j a a memória- e g y s é g e k e t , é s ö s s z e g y ű j t i a z o k a t , am elyekre n i n c s h iv a t k o z á s /" g a r b a g e c o l l e c t i o n " / . Más n y e lv e k b e n / p l . : IP L -V / ez t e l j e s e n a program ozó f e l a d a t a . A SL IP -b en a m em ória f e l e t t i r e n d e lk e z é s f e l e l ő s s é g e meg
o s z l i k a r e n d s z e r é s a f e l h a s z n á l ó k ö z ö t t . A l i s t á k m eg ő rzésén ek , i l l e t v e m eg sem m isítésén ek a l a p j a az u g y e n e v e z e tt r e f e r e n c i a c o u n t . A l i s t a f e j b e n v a n e g y mező, am elyben t á r o l t szám m egm u tatja, hogy az i l l e t ő l i s t a hány l i s t a a l l i s t á j a . A r e n d s z e r a u to m a tik u sa n m e g n ö v e li 1 - g y e l a r e f e r e n c i a c o u n t - j á t annak a l i s t á n a k , m elynek a n e v é t e g y má
s i k l i s t á n e l h e l y e z t ü k , i l l e t v e c s ö k k e n t i a r e f e r e n c i a c o u n t - o t , ha a l i s t a n ev ét k i t ö r ö l j ü k e g y l i s t á r ó l , vagy ha a n e v e t ta r ta lm a z ó l i s t á t magát k it ö r ö lj ü k .A m ik o r egy l i s t a r e f e r e n c i a c o u n tja n u llá r a c s ö k k e n t , err e a l i s t á r a n i n c s több h iv a t k o z á s , a r e n d sz e r a l i s t á t e l e n g e d i , azaz a l i s t a c e l l á i t v i s s z a h e l y e z i a LA VS-re. M indaddig, m ig a r e f e r e n c i a c o u n t p o z i t i v , a l i s t a a k t i v h a s z n á la tb a n v a n , a l i s t á t a r e n d s z e r m e g ő r z i.
Bár a z a u to m a tik u s e l l e n ő r z é s á lt a lá b a n m e g f e le lő , a f e l h a s z n á ló id ő n k én t m é g is maga a k a r j a az e l l e n ő r z é s t i r á n y í t a n i . / P l . : egy l i s t a egy a d o t t p il la n a t b a n n in c s h a s z n á la t b a n , később azonban szük
s é g l e s z r á . / A f e lh a s z n á ló n a k megvan a l e h e t ő s é g e , hogy e g y l i s t a k e z d e t i r e f e r e n c i a c o u n tj á t O -r a vagy 1 - r e á l l i t s a b e . Ha O -ra á l l í t o t t a b e , a l i s t a e le n g e d é s e a u to m a tik u s l e s z , ha 1- r e , a r e f e r e n c i a count sohasem le h e t 0 , te h á t az i l l e t ő l i s t á t csak a f e l h a s z n á l ó e n g e d h e ti e l a z erre s z o l g á l ó r u t i n /IRALST/ s e g í t s é g é v e l . A f e l h a s z n á l ó á l t a l k e z e l t l i s t a n e v é t te r m é s z e t e s e n e g y v á lto z ó b a n meg k e l l ő r i z n i .
A r e n d s z e r minden l i s t á n e lh e ly e z e n d ő a d a t o t m e g v iz s g á l, hogy az a d a t nem l i s t a n é v - e . Ha az adat l i s t a n é v , e z a z t j e l e n t i , hogy az a d o t t nevű l i s t á t a l l i s t á v á k iv á n jü k t e n n i , t e h á t a r e f e r e n c i a c o u n t- j á t 1- g y e l meg k e l l n ö v e l n i .
Amikor e g y uj c e l l á r a van s z ü k s é g , p l . : uj a d a to t kívánunk a l i s t á n e l h e l y e z n i , a r e n d s z e r e l v e s z e g y c e l l á t a LAVS t e t e j é r ő l . Ami
k o r e g y c e l l á r a n in c s to v á b b s z ü k s é g , a r e n d s z e r a f e l s z a b a d u l t c e l l á t v i s s z a a k a s z t j a a LAVS a l j á r a . A SLIP sz im m e tr iá já n a k e g y é r d e k e s k ö v e t k ezm én y e, hogy e g y e g é s z l i s t á t e g y s z e r r e e l l e h e t e n g e d n i, azaz a LAVS-ra v i s s z a a k a s z t a n i , a n é l k ü l , h o g y magukkal a c e l l á k k a l bárm it i s c s in á ln á n k , m in d ö ssz e 3 m u ta tó t k e l l k i c s e r é l n i a l i s t a h o s s z á t ó l f ü g g e t l e n ü l . A r e n d s z e r a c e l l a e le n g e d é s é n e k id ő p o n tjá b a n nem f o g l a l k o z i k annak v i z s g á l a t á v a l , hogy a c e l l a l i s t a k a p c s o l ó - e , s ig y a m e g fe le lő a l l i s t a r e f e r e n c i a co u n tjá n a k c s ö k k e n té s é t sem v é g z i e l . E rre uj c e l l a ig é n y lé s e k o r k e r ü l s o r . Amikor a r e n d s z e r l e v e s z a LAVS-ról egy c e l l á t ,
1 1
m in d ig me g v i z s g á l j a , hogy nem ta i'ta lm a z -e l i s t a n e v e t , ha ig e n , a meg
f e l e l ő r e f e r e n c i a c o u n to t c s ö k k e n ti e g g y e l. Ha az uj r e f e r e n c i a c o u n t 0 , a r e n d s z e r e le n g e d i az e g é s z l i s t á t .
T ehát egy o ly a n a l l i s t a ( t é n y l e g e s ) e le n g e d é s e , am elyre már sehonnan n in c s h iv a t k o z á s , akkor t ö r t é n i k c sa k meg, ha az á l t á l a l e f o g l a l t c e l l á k r a ú j b ó l sz ü k sé g v a n . E z z e l a r e n d s z e r i d ő t t a k a r í t meg.
4 . 3 L i s t a k é s z i t é s . I n f o r m á c i ó e l h e l y e z é s e é s v i s s z a n y e r é s e
L i s t á t a le g e g y s z e r ű b b módon a L IS T -fü ggvén y h ív á s á v a l k é s z í t h e t j ü k . Az
L = LIST (K)
u t a s i t á s . h a tá sá r a e l k é s z ü l eg y ü r e s l i s t a f e j . Ha az in p u t p a ra m éter 9 /LIST ( 9 ) / , az e l k é s z ü l t l i s t a r e f e r e n c i a c o u n tja 0 l e s z , k ü lö n b en a r e f e r e n c i a co u n t é r t é k e 1 .
A f e l h a s z n á l ó a l i s t á r a a l i s t a n e v é v e l h iv a t k o z h a t . A n é v eg y FORTRAN t á r o l ó e g y s é g , am ely ta r ta lm a z z a a l i s t a f e j g é p i c im é t. A l i s t a f e j cimének t á r o l á s i módja a névb en e l l e n ő r z é s t i s j e l e n t ; ha e g y l i s t á r a a n e v é v e l h iv a tk o z u n k , a r e n d s z e r e l l e n ő r z i , hogy v a ló b a n n é v - e , a benne lé v ő cim r e á l i s - e é s a cim v a ló b a n e g y l i s t a f e j r e m u ta t-e .
A L IS T -fü g g v én y h iv á s k o r a fü g g v én y é r t é k e k é n t a l i s t a n e v é t a d ja eredm én yül. Ha a z in p u t p a ra m éter nem 9 , hanem e g y К v á lt o z ó /am elyn ek é r t é k e nem 9 / , akkor K—ban i s a l i s t a n e v é t k a p ju k .
R e n d e lk e z é s r e á lln a k r u t in o k az a d a to k l i s t á n v a l ó e l h e l y e z é s é r e é s v i s s z a n y e r é s é r e . A SLIP s z im m e tr iá já b ó l k ö v e t k e z ik , hogy e g y a d a t e l h e l y e z é s e a l i s t á n m indig u j elem b e s z ú r á s á t j e l e n t i , még akk or i s , ha a l i s t a ü r e s . E lh e ly e z h e tü n k egy uj a d a t o t , eg y a d o t t l i s t a e l e m u tá n jo b b r a , v a g y az a d o t t l i s t a e l e m e l é b a l r a /NXTRGT, KXTLFT/. T er m é s z e te se n az a d o t t l i s t a e l e m l e h e t maga a l i s t a f e j i s . I ly e n k o r a z t mondjuk, hogy a l i s t a t e t e j é r e i l l . a lj á r a h e ly e z t ü k e l a z a d a to t
/NEWTOP, NEWBOT/. K ic s e r é l h e t j ü k e g y a d o tt l i s t a e l e m a d a t r é s z é t /SU B ST /, v a g y a l i s t a t e t e j é n , i l l e t v e a l j á n lé v ő a d a t o t /SUBSTP, SUBSBT/.
É rd ek es t u la jd o n s á g a a S L IP -r e n d sz e r n e k , hogy a l i s t a v é g é t /ВОТ- j á t / u g y a n o ly a n könnyen e l é r h e t j ü k , m in t a l i s t a e l e j é t /ТОР- j á t / , f ü g g e t le n ü l a l i s t a h o s s z á t ó l . M egkaphatjuk a l i s t a t e t e j é n , i l l e t v e a l já n t á r o l t a d a to k a t a TOP, BOT fü g g v én y ek h í v á s á v a l , k it ö r ö lh e t ü n k ada
t o t a l i s t a t e t e j é r ő l , i l l e t v e a l j á r ó l /POPTOP, POPBOT/.
4 . 4 V é g ig h a ln d á s a l i s t á n , a SEQUENCER é s a READER
A S L IP -r e n d sz e r e lő n y e abban m u ta tk o zik meg, h ogy a f e l h a s z n á ló n a k a f e l d o l g o z á s k o r nem k e l l m in dent t u d n ia a l i s t a s t r u k t ú r á j á r ó l . Tudnia k e l l , hogy m it k e l l t e n n i e a k ö v e tk e z ő li s t a e l e m m e l, de nem k e l l t u d n ia , hogy hány elem van a l i s t á n , vag y hány a l l i s t a kap
c s o l ó d i k a f ő l i s t á h o z s t b . Az i n d e x e l é s i t e c h n ik a go n d já t a r e n d s z e r l e v e s z i a program ozó v á l l á r ó l .
Az S = SEQRDR (L ) u t a s í t á s s a l k e l l k e z d e n i a l i s t á n v a ló v é g i g - h a la d á s t ; é s S l e s z a v é g ig h a la d á s t i r á n y i t ó " se q u e n c er " .
A l i s t a f e l d o l g o z á s l e h e t s z e k v e n c i á l i s . Meg k e l l h a t á r o z n i a f e l d o l g o z á s ir á n y á t /j o b b r a vagy b a l r a h a la d u n k -e a l i s t á n / é s mód
j á t : l i n e á r i s - e a f e l d o l g o z á s , a za z c sa k a f ő l i s t á t k ív á n ju k f e l d o l g o z n i , vagy s t r u k t u r á l i s : a f e l d o l g o z á s t az a l l i s t á k r a i s k i k ív á n ju k t e r j e s z t e n i .
A s e q u e n c e r / v a g y seq u en ce r e a d e r / lé n y e g é b e n e g y m u ta tó , m e ly a so ro n k ö v e tk e z ő l i s t a e l e m / c e l l a / cim ét ta r t a lm a z z a . Ha a f e l d o lg o z á s n á l a l i s t á n to v á b b h a la d tu n k , a r e n d s z e r a u to m a tik u sa n m eg v á l
t o z t a t j a a s e q u e n c e r t a r t a l m á t , m in d ig az a k t u á l i s c e l l a c im é t Í r j a be a se q u e n c e r b e . A s e q u e n c e r egy EORTRAN-változó, nem a LAVS-ból s z á r mazó c e l l a !
A s z e k v e n c i á l i s m echanizmus nem ő r z i meg a f e l d o l g o z á s " t ö r té n e lm é t " , a z a z , ha e g y s z e r l e s z á l l t u n k egy s z u b l i s t á r a , onnan a f ő l i s t á r a v i s s z a t é r n i nem l e h e t .
Egy l i s t á n a k tö b b seq u e n c e r e i s l e h e t e g y s z e r r e . K ezd etb en a s e q u e n c e r a l i s t a f e j é r e m u ta t.
A hhoz, hogy m eghatározzu k a k ö v e tk e z ő c e l l á t , meg k e l l monda
nunk a h a la d á s i r á n y á t . E z é r t mind a l i n e á r i s , mind a s t r u k t u r á l i s f e l d o l g o z á s n á l k é t fü g g v é n y á l l r e n d e lk e z é s r e a jobb ir á n y é s a b a l ir á n y szám ára. A SEQLR/SEQLL fü g g v én y ek az ú g y n e v e z e t t l i n e á r i s s e q u e n c e r fü g g v é n y e k .
Az ADAT = SEQXjR (S ,F ) u t a s í t á s h a t á s á r a az S se q u e n c e r a so r o n k ö v e tk e z ő c e l l a cim ét f o g j a t a r t a lm a z n i. Az F FORTRAN v á l t o z ó in f o r m á c i
ó t ta r ta lm a z a r r a v o n a tk o z ó a n , hogy az a k t u á l i s c e l l a e g y l i s t a f e j , l i s t a k a p c s o l ó va g y l i s t a e l e m - e . A fü g g v én y é r t é k e a c e l l a DATUM r é s z e .
A SEQSR/SEQSL fü g g v én y ek abban k ü lö n b ö zn ek az e l ő z ő k t ő l , h ogy a z e lő r e h a la d á s s t r u k t u r á l i s . Ha a f e l d o l g o z á s során e g y l i s t a k a p c s o l ó
- Í j
hoz érk ezü n k , az a l l i s t á b a v a l ó l e s z á l l á s a u to m a tik u sa n m e g tö r té n ik . A f e l d o l g o z á s során gyakran nem csak l e k e l l s z á l l n i a l e g a l a csonyabb s z i n t ű a l l i s t á b a , hanem v i s s z a i s k e l l t é r n i a f ő l i s t á r a . Az in d e x e lé s azonban l i s t a - s t r u k t ú r a e s e t é n so k k a l b o n y o lu lt a b b , m in t egy tömb e s e t é n , h is z e n a z i n d e x e lé s " tö r té n e lm é t" i s meg k e l l ő r i z n i ah
h o z , hogy a v i s s z a t é r é s a f ő l i s t á b a m e g tö r té n h e s s é k .
A rea d er—me chanizmus e z t a n e h é z s é g e t m egoldó i n d e x e l é s i t e c h n i
k a .
A rea d er o ly a n mint e g y verem , am elybe a m u tatók egymás f ö l é vannak e lt e m e t v e , e g y a d o tt p i l l a n a t b a n c s a k a l e g f e l s ő "él" k ö z ü lü k , a tö b b i az i n d e x e lé s t ö r t é n e lm é t ő r z i /p u sh -d o w n s t a c k / .
A r ea d er a LAVS-ról l e a k a s z t o t t c e l l á k b ó l á l l . A read erverem l e g f e l s ő elem ének cim e - a r e a d e r n e v e .
Egy r e a d e r c e l l a a k ö v e tk e z ő in f o r m á c ió t ta r ta lm a z z a :
3 IiPNTR l i n k
LOFRDR LCNTR
LPNTR ta r ta lm a z z a a l i s t a a k t u á l i s elem én ek e lm é t, LOFRDR az a k t u á l i s l i s t a f e j é n e k a cim e,
LCNTR a l e v e l c o u n t e r , mely m egm u tatja, h o g y m ily en s z i n t ű a l l i s t á b a n v a g y u n k , .
l i n k a verem ben l é v ő k ö v e tk ez ő r e a d e r c e l l a cim e.
А К = LRDROV (L) u t a s í t á s lé t r e h o z z a az Ъ l i s t a К nevű r e a d e r - j é t , azaz l é t r e h o z e g y c e l l á t , am elyben k e z d e tb e n a z LPMR é s LOFRDR mező az L nevű l i s t a f e j é n e k c im é t t a r t a lm a z z a , LCNTR é s a l i n k 0 .
Az a d v a n cer r u tin o k h a so n ló a k a se q u e n c e r r u tin o k h o z , de bőveb
bek abban az é r t e le m b e n , hogy a f e l h a s z n á l ó d e f i n i á l h a t j a a k e r e s é s t á r g y á t /m i ly e n a d a to t k e r e s / . A k e r e s é s t á r g y a l e h e t :
- egy l i s t a e l e m - egy l i s t a n é v
- f e j t ő l k ü lö n b ö ző l i s t a e l e m
/ID = 0 / /IC = 1 / /ID = 0 , 1 /
A k e r e s é s módjának / l i n e á r i s vagy s t r u k t u r á l i s / , irányának /jo b b v a g y b a l / é s tá rg y á n a k /e le m , k a p c s o ló , . s z ó / f ig y e l e m b e v é t e l é v e l ö s s z e s e n 12 l e h e t s é g e s a d v a n cer r u t i n l e h e t .
Egy a d v a n cer r u t i n neve ta r ta lm a z z a a k e r e s é s m ó d já t, t á r g y á t é s i r á n y á t .
Az ADV xyz (K, F) ad van cer r u t i n n e v é b e n x a k e r e s é s m ód ját h a t á r o z z a meg:
L l i n e á r i s S s t r u k t u r á l i s
у a k e r e s é s t á r g y á t h a t á r o z z a meg
E élem
N l i s t a n é v
W f e j t ő l kü lön b öző l i s t a e l e m z a k e r e s é s ir á n y é t h a t á r o z z a meg
L b a l ir á n y R jo b b i r á n y P é ld á u l az
D = ADVbEb (K, F)
u t a s i t á s h a t á s á r a а К r e a d e r a l i s t á n b a l ir á n y b a n , l i n e á r i s a n h a la d é s l i s t a e l e m e t k e r e s . А К rea d er LPNTR-je m in d ig az a k t u á l i s l i s t a e l e m c im é t ta r ta lm a z z a . A l l i s t á k b a nem t ö r t é n i k l e s z á l l á s . Ha a m egadott t á r g y a t m e g t a l á l t a / j e l e n e s e t b e n e g y l i s t a e l e m / , az F FORTRAN v á l t o z ó é r t é k e 0 . Ha a z e lő r e h a l a d á s so rá n a tá r g y m e g t a lá lá s a e l ő t t a l i s t a f e j h e z é r k e z i k , F n u l l á t ó l k ü lö n b ö ző é r t é k e t v e s z f e l . A fü g g v én y é r t é ke a m e g t a lá lt t á r g y c e l l a DATUM r é s z e .
A s t r u k t u r á l i s a d v a n cerek abban kü lön b özn ék a l i n e á r i s a d v a n - c e r e k t ő l , h o g y ha a r e a d e r az e lő r e h a la d á s s o r á n a l l i s t á h o z é r k e z ik , a k u t a t á s t az i l l e t ő t á r g y c e l l a u t á n az a l l i s t á n f o l y t a t j a .
Ha a s t r u k t u r á l i s f e l d o l g o z á s során a rea d er e g y l i s t a k a p c s o ló h o z é r k e z ik , a r e n d s z e r l e a k a s z t e g y uj c e l l á t a LAVS-ról é s h o z z á k a p c s o lj a a r e a d e r - c e l l á h o z . Ez a z u j c e l l a f o g j a t a r t a lm a z n i az i n fo r m á c ió t a f e l d o l g o z á s . e d d ig i m e n e t é r ő l, az e r e d e t i r e a d e r c e l l a / m e l y n ek cim ét а К = LRDROV ( b ) u t a s i t á s s z o l g á l t a t t a / p i l l a n a t n y i t a r t a lm á t . Az e r e d e t i r e a d e r c e l l a a z a l l i s t a a d a t a it ta r ta lm a z z a : LOFRDR-je m ost a z a l l i s t a f e j é n e k c im é t f o g j a t a r t a lm a z n i, LPNTR r é s z e a? ezen a l l i s t á n a k t u á l i s elem c im é t, a l i n k r é s z e p e d ig az u j c e l l a c im é t . LCNTR é r t é k e
- 1 5 -
1 - g y e l m eg n ö v ek szik , j e l e z v é n , hogy 1- g y e l m élyebb s z i n t ű a l l i s t á r a t ö r t é n t l e s z á l l á s .
Ha a z a l l i s t a minden e le m é t f e l d o l g o z t u k /v is s z a é r k e z t ü n k a f e j h e z / , a r e n d s z e r v i s s z a á l l í t j a a r e a d e r c e l l a ta r t a lm á t az e z t meg
e l ő z ő á l l a p o t LOFRDR é s EPNTR é r t é k e k v á ln a k a k t u á l i s s á é s a r e a d e r - lá n c m e g fe le lő e le m é t /m e ly e z e k e t a LOFRDRR é s LPHTR é r t é k e k e t t a r t a lm a z t a / e l e n g e d i . Az LCNTR é r t é k é t 1 - g y e l c s ö k k e n t i .
P é ld á u l az
D = ADVSEL (K, F)
s t r u k t u r á l i s ad v a n cer a f e l d o l g o z á s so rá n l e s z á l l az a l l i s t á k b a . К a r e a d e r n e v e . Az F FORTRAN v á lt o z ó é r t é k e 0 , ha a m egadott tá r g y a t meg
t a l á l t a , é s 0 - t ó l k ü lö n b ö z ő , ha a f ő l i s t a f e j é h e z v i s s z a é r k e z e t t . Ha a r e a d e r a f ő l i s t a f e j é t m e g t a l á l t a , a k u ta tá s abbamarad, ha azonban e g y a l l i s t ; f e j é h e z é r k e z i k , a r e a d e r f e le m e lk e d ik a magasabb s z i n t ű l i s t á r a é s a k u t a t á s e z e n a l i s t á n f o l y t a t ó d i k . A fü g g v én y é r t é k e a m e g t a lá lt t á r g y c e l l a DATUM r é s z e .
á-,5 A l e i r ó l i s t a
Minden l i s t á h o z h o zzá k a p cso lh a tu n k e g y ú g y n e v e z e t t l e i r ó l i s t á t . A - le ir ó l i s t a c e lla p á r o k b ó l á l l , a c e l l a p á r e l s ő elem e az ú g y n ev e
z e t t a ttr ib ú tu m o t ta r t a lm a z z a , a m ásodik elán a z a ttrib ú tu m h o z t a r t o z ó é r t é k e t .
A l e i r ó l i s t a nem a l l i s t a , mert á l e i r ó l i s t a n eve nem j e l e n ik meg sem m ilyen l i s t a k a p c s o ló b a n . Az L l i s t a l e i r ó l i s t á j á n a k ó i mét az L l i s t a f e j e t a r t a lm a z z a . A l e i r ó l i s t á v a l f o g l a l k o z ó r u tin o k p ara m éterk én t az L l i s t a n e v é t k a p já k meg.
Az EL l i s t á t a z L l e i r ó l i s t á j á v á t e h e t j ü k a MAKEDL (Ъ, LL) s z u b r u t i n - h i v á s s a l . Az N = NEWVAL (AT, VAL, L) U t a s i t á s az Ъ l i s t a l e i r ó l i s t á j á n m e g k e r esi az AT a ttr ib ú tu m o t é s a h o z z á t a r t o z ó é r t é k e t YAL-ra c s e r é l i k i . Ha AT a ttr ib ú tu m nem v o l t a z L l i s t a l e i r ó l i s t á j á n , AT uj a ttr ib ú tu m k é n t f e l k e r ü l a l e i r ó l i s t á r a a h o z z á ta r t o z ó VAL é r t é k k e l e g y ü t t . M egkereshetünk egy a d o t t a ttrib ú tu m h o z t a r t o z ó é r t é k e t az ITSVAL (AT, L) r u t i n s e g i t s é g é v e l s t b .
4-,6 R ekurzió
A FORTRAN nem r e k u r z ív n y e l v , a S L IP -ren d szerb en azonban van r e k u r z ió s h iv á s o k r a l e h e t ő s é g . A r e k u r z ió a la p v e t ő p ro b lém á ja a v i s z -
s z a t é r é s i cim ek t á r o l á s a é s a m e g f e le lő v i s s z a t é r é s i cim v i s s z a n y e r é s e , m á s r é s z t a p a ra m éterek á ta d á sa é s a l o k á l i s v á lt o z ó k é r té k é n e k m egőrzé
s e .
A S L IP -r e n d sz e r b e n a v i s s z a t é r é s i cim ek é s a param éterek a r e k u r z ió fo ly a m á n verem ben tá r o ló d n a k /p u sh -dow n l i s t / . A S L IP -r e n d sz e r i n d í t á s a k o r az INITAS r u t i n a s z a b a d c e ll á k l i s t á j á n a k e l k é s z í t é s e u tá n k é s z i t 100 darab ü r e s l i s t a f e j e t W ( l ) . . . W(lOO) n e v e k k e l. E zek et a l i s
t á k a t n y ilv á n o s li s t á k n a k n e v e z z ü k . A n y ilv á n o s l i s t á k r e f e r e n c i a c o u n t ja ig e n m agas, h o g y a f e l h a s z n á l ó v é l e t l e n ü l se t u d j a e le n g e d n i ő k e t . A n y il v á n o s l i s t á k n e v e it a program b á rm ely szegm ensében e l é r h e t
j ü k , ha COMMON u t a s í t á s b a n d e k la r á lj u k ő k e t:
COMMON /PUBLSS/W (lOO)
A n y il v á n o s l i s t á k n a k a r e k u r z ió e s e t é n nagy a j e l e n t ő s é g ü k , a r e n d s z e r e z e k e t a l i s t á k a t h a s z n á l j a verem k én t a v i s s z a t é r é s i c im e k , a l o k á l i s v á l t o z ó k , a p ram éterek i d ő l e g e s t á r o l á s á r a . A r e k u r z ió t a V ISIT nevű r u t i n i n d i t j a e l . A VISIT e g y , a r e n d s z e r h e z t a r t o z ó verem b e n t á r o l j a a v i s s z a t é r é s cim ét / a VISIT h i v á s a a l a t t so r o n k ö v e tk e z ő FORTRAN-utasitás c im é t / é s a v e z é r l é s t á t a d j a a r e k u r z ió s u t a s i t á s b l o k k k e z d ő e lm é r e , am it e l ő z ő l e g egy e g é s z tip u s u v á lto z ó b a e g y ASSIGN u t a s í t á s s a l k e l l e lh e ly e z n ü n k .
Ez a v á l t o z ó a VISIT r u t i n e l s ő bemenő p a r a m é te r e . A m ásodik p a r a m é te rt a r u t i n tu la jd o n k é p p e n nem h a s z n á lj a , m iv e l azonban a r u t i n b a v a ló b e l é p é s e l ő t t a p a ra m éterek é r té k e k is z á m it ó d ik ,' a m ásodik p a r a m é te r t á l t a l á b a n a l o k á l i s v á l t o z ó k m e g ő rzésére h a s z n á lj á k .
A r e k u r z ió a TERM fü g g v é n y h ív á s á v a l z á r u l b e , m ely k i v e s z i a v erem b ő l a v i s s z a t é r é s c im é t, a m e ly e t a VISIT h e l y e z e t t e l .
R e n d e lk e z é s r e á lln a k még to v á b b i r u t in o k : PARAMTN r u t in a
p a r a m é te r e it a n y il v á n o s l i s t á k á l t a l r e p r e z e n t á l t verm ekben h e l y e z i e l , a PRESRV (N ) az e l s ő N n y ilv á n o s l i s t á t v e r m e li s t b .
4 . 7 I n p u t-o u tp u t
Az e r e d e t i SLIP l e í r á s b a n in p u t- o u tp u t r u tin o k nem s z e r e p e ln e k , h i s z e n a FORTRAN n y e lv minden l e h e t ő s é g e a f e l h a s z n á l ó r e n d e lk e z é s é r e á l l . K ényelm i szem p o n tb ó l c é ls z e r ű n e k l á t s z o t t azonban a r e n d s z e r h e z i l l e s z t e n i l i s t a s tr u k tu r a k k ö z v e t le n b e o lv a s á s á r a , i l l e t v e k i í r á s á r a s z o l g á ló r u t in o k a t .
Az RDLSTA
(x)
r u t in b e o lv a s egy l i s t a s t r u k t u r á t . A t e l j e s- 1 7 -
a d a t l i s t á t é s a l l i s t á i t z á r ó j e le k k ö zé k e l l z á r n i , a l i s t a e l e m e k e t e g y m á stó l egy vag y több s z ó k ö z z e l k e l l e l v á l a s z t a n i . P é ld á u l а (А В (C D) E) J e ls o r o z a t b ó l e g y A ,B ,E elem ek b ő l á l l ó f ő l i s t á t é s C,D e lem ek b ő l á l l ó a l l i s t á t k é s z i t a r u t i n . A fü g g v én y é r t é k e , v a la m in t a p a ra m éter é r t é k e a f ő l i s t a neve l e s z .
b is t a s t r u k t u r á k k i í r á s á r a tö b b r u t i n á l l r e n d e lk e z é s r e . A PRLSTA (b ) r u t i n az L nevű l i s t á t so rn y o m ta tó n , a PULSTA ( b ) k á r ty a
ly u k a s z tó n n y o m ta tja k i a RDLSTA r u t i n n á l l e i r t formátum s z e r i n t .
A PELSTS (L , N) r u t i n az Ъ n evű l i s t a e le m e it az N p a ra m éter
t ő l fü g g ő en e g é s z v a g y le b e g ő p o n t o s szám okként v a g y k a r a k t é r fo rm á já ban n y o m ta tja k i .
A l i s t á k , i l l e t v e a l l i s t á k k e z d e t é t é s v é g é t a n y o m ta tá sk o r m e g j e l ö l i p l . s a RDLSTA t á r g y a lá s á n á l e m l í t e t t l i s t a n y o m ta tá s i k é p e :
BEGIN LIST A
В
BEGIN SUBLIST С
D
END SUBLIST E
END LIST 4 . 8 Egyéb r u tin o k
R e n d e lk e z é sr e á lln a k még r u t in o k l i s t á k k a l v a ló k ü lö n b ö ző mű
v e l e t e k e l v é g z é s é r e .
L em ásolhatunk e g y t e l j e s l i s t a s t r u k t u r á t /LSSCPY ( L ) / vagy e g y a d o t t l i s t a s t r ü k t u r a f ő l i s t á j á t /LSTCPY ( L ) / , e g y a d o tt l i s t á h o z h o z z á k a p c so lh a tu n k eg y m ásik l i s t á t /JOINLS (L I , L 2 ) / , egy a d o t t l i s t á t
" k ie g y e n e s i t h e tü n k " , a za z az a l l i s t á k a t a f ő l i s t á h o z h o z z á k a p c s o lh a t
ju k /IRONLS ( L ) / , m e g á lla p ít h a t j u k , hogy k é t l i s t a s t r ü k t u r a e g y e n lő - e /LSTEQL (L I , L2) - k é t l i s t a s t r ü k t u r a e g y e n lő , ha az adatok e g y e n lő k é s a l i s t á k s t r u k t ú r á j a i s m eg eg y ezik - / s t b .
A l i s t a m e g j e lö lé s é r e B z o lg á ló LISTMARK f e l t ö l t é s é t az MRKLSS (M, LST) fü g g v é n y v é g z i e l , e g y a d o t t l i s t a LISTMARK-Ját az LSTMRK (LST) fü g g v é n y h ív á s á v a l k a p h a tju k meg. A LISTMARK h a s z n á la tá n a k módja a f e l h a s z n á ló t ó l f ü g g .
5 . A SLIP SZUBRUTINOK RÉSZLETES LEÍRÁSA 5 . 1 A r e n d s z e r e l ő k é s z í t é s e é s I n d í t á s a
SUBROUTINE INITAS (A. N)
E l k é s z í t i a sz a b a d c e l l á k l i s t á j á t é s a n y ilv á n o s l i s t á k a t . P ram éterek : A ^ a l i s t á k számára k i j e l ö l t tömb n ev e
N az A tömb m érete
Az A tö m b a z o n o sitó n a k a r u t i n h ív á s a e l ő t t e l ő k e l l f o r d u l n ia e g y BIMENSION u t a s í t á s b a n . A r u t i n h ív á s a u tá n a f e l h a s z n á l ó nem h i v a t k o z h a t többé k ö z v e t l e n ü l az A töm bre.
Ha e g y FORTRAN-modulban h a s z n á ln i k ív á n ju k a n y il v á n o s l i s t á k a t , a modulban e l ő k e l l f o r d u l n i a a COMMON /PUBLSS/W (1 0 0 ) u t a s ít á s n a k .
A W tömb e le m e i ta r ta lm a z z á k a n y il v á n o s l i s t á k n e v e i t .
Az INITAS r u t i n t a S L IP -r e n d sz e r h a s z n á la t a e l ő t t h iv n i k e l l . 5 . 2 L i s t a k é s z i t é s . In fo r m á c ió e l h e l y e z é s e é s v i s s z a n y e r é s e
FUNCTION LIST (K)
K é s z í t egy ü r e s l i s t á t /ön m agéra m u tató l i s t a f e j e t / .
P a ra m éterek : X; bem en eten К = 9 * a z uj l i s t a r e f . co u n t j a n u l l a l e s z ; К / 9 e s e t é n 1 .
K ilé p é s k o r К / 9 e s e t é n К a l i s t a n e v e . A fü g g v én y é r t é k e : a l i s t a n e v e ,
FUNCITON IRALST (L)
Az Ъ nevű l i s t a r e f e r e n c i a co u n tj á t 1 - g y e l c s ö k k e n t i. Ha a r e f e r e n c i a c o u n t é r t é k e 0 l e t t , a l i s t á t e l e n g e d i . /H a a z Ь l i s t á n a k v o l t l e i r ó l i s t á j a , a k k o r a l e i r ó l i s t á t i s e l e n g e d i . /
P aram éter: Ъ l i s t a n é v
A fü g g v én y é r t é k e : a z L l i s t a uj r e f e r e n c i a c o u n t j a . FUNCTION MTLIST (L)
Az L nevű l i s t á b ó l ü r e s l i s t á t k é s z i t .
- 1 9 -
P a ra m éter: Ъ a k iü r ít e n d ő l i s t a neve
A fü g g v én y é r t é k e : a k i ü r í t e t t l i s t a n e v e . FUNCTION LPURGE (Ъ)
Az L n ev ű l i s t a a l l i s t á i t e l e n g e d i . P aram éter: L l i s t a n é v
A fü g g v én y é r t é k e : az e l e n g e d e t t a l l i s t á k szám a.
FUNCTION NEWTOP (D , L)
,Az Ъ n ev ű l i s t a t e t e j é n - a l i s t a f e j t ő l job b ra - e l h e l y e z i a D a d a t o t . Ha D e g y l i s t a n é v , az L l i s t a t e t e j é n l i s t a k a p c s o l ó t h e ly e z e l é s a D l i s t a r e f e r e n c i a c o u n tj á t 1 - g y e l m e g n ö v e li.
P aram éterek : P a z e l h e l y e z n i k iv á n t a d a t ; t i p u s a t e t s z ő l e g e s »
Ъ annak a l i s t á n a k a n e v e , m elyre az a d a to t e l k iv á n ju k h e l y e z n i ,
A fü g g v én y é r t é k e : a f e l f ü g g e s z t e t t u j c e l l a c im e . FUNCTION NEWBOT (P . Ъ)
Az L n ev ű l i s t a a l j á r a - a l i s t a f e j t ő l b a lr a - e l h e l y e z i a D a d a t o t . Működése NEWTOP-éhoz h a s o n ló .
FUNCITON NXTRGT (P . К)
Egy cim m el m egadott l i s t a e l e m m e llé jo b b r a e l h e l y e z i a D a d a t o t . Ha D e g y l i s t a n é v , k a p c s o l ó c e l l á t k é s z i t é s a D l i s t a r e f e r e n c i a c o u n t—
j á t 1 - g y e l m e g n ö v e li.
P aram éterek:^ a z e l h e l y e z n i k iv á n t a d a t ,
K -ban annak a lis t a e l e m n e k a cime v a n , a m l y m e l l é job bra az P a d a t o t k iv á n ju k e l h e l y e z n i .
FUNCTION NXTLFT (P . K)
Egy cim m el m egadott l i s t a é l e m m e llé b a lr a e l h e l y e z i a P a d a to t*
Működése NXTRGT-éhoz h a s o n ló . FUNCTION PAPIST ( A, N)
Egy l i s t á t k é s z i t 1 - e s r e f e r e n c i a c o u n t t a l é s e z e n a l i s t á n e l h e l y e z i az A tömb e l e m e i t .
P ram éterek : A tö m b a z o n o sitó
N a tömb e le m e in e k száma A fü g g v é n y é r t é k e : a k a p o tt l i s t a n e v e .
E gy l i s t á t k é s z í t О- a s r e f e r e n c i a c o u n t t a l é s e z e n a l i s t á n e l h e l y e z i a z A tömb e l e m e i t . Működése PALIST-éhoz h a s o n ló .
FUNCTION SUBST (P . K)
E gy cimmel m eg a d o tt c e l l a DATUM r é s z é t D-re c s e r é l i k i . P ra m éterek : D az uj a d a t
К-b an a zo n c e l l a cim e v a n , m elyn ek DATUM r é s z é t D -re k ív á n juk k i c s e r é l n i .
A fü g g v én y é r t é k e : A K -ban t á r o l t cimü c e l l a r é g i DATUM r é s z e . FUNCTION SUBÜBT (D. b )
Az L nevű l i s t a a lj á n - a l i s t a f e j t ő l b a lr a - lé v ő DATUM r é s z t D -re c s e r é l i k i .
P ram éterek : D az uj a d a t Ъ l i s t a n é v
A fü g g v én y é r t é k e : Az L nevű l i s t a a ljá n a k r é g i DATUM r é s z e . FUNCTION SUBSTP (D. L)
Az L nevű l i s t a t e t e j é n - a l i s t a f e j t ő l jo b b r a - lé v ő DATUM r é s z t D -re c s e r é l i k i . SUBSBT p á r j a .
FUNCTION BOT (Jj)
Az b nevű l i s t a a l j á r a e l h e l y e z e t t DÁTUMOT s z o l g á l t a t j a . P ram éter: L l i s t a n é v
A fü g g v én y é r t é k e : Az L nevű l i s t a a ljá n a k DATUM r é s z e . FUNCTION TOP (L)
Az L nevű l i s t a t e t e j é n e l h e l y e z e t t DÁTUMOT s z o l g á l t a t j a . BOT p á r j a .
FUNCTION POPBOT (b)
K i t ö r l i az L n evű l i s t a a l j á n l é v ő e le m e t . P ra m éter: Ь l i s t a n é v
A fü g g v én y é r t é k e : Az Ъ nevű l i s t a a l j á r ó l k i t ö r ö l t e le m DATUM r é s z e . FUNCTION PASBLS ( A , N)
FUNCTION POPTOP (L)
K i t ö r l i az L nevű l i s t a t e t e j é n l é v ő e le m e t . POPBOT p á r j a .
2 1
A К cimü c e l l á t k i t ö r i ! .
P aram éter: К-b a n a k it ö r le n d ő l i s t a e l e m cim ét k e l l m egadn i.
A fü g g v én y é r t é k e : a k i t ö r ö l t l i s t a e l e m DATUM r é s z e .
Az e d d ig f e l s o r o l t fü g g v én y ek param éterén ek t í p u s a t e t s z ő l e g e s l e h e t . A FORTRAN u g y a n is c sa k a p a ra m éter cim ét adja á t , a p a ra m éter é r t é k é t a ssem b ly r u t in o k k e z e l i k .
5*3 V é g lg h a la d á s a l i s t á n , a SEQUENCER é s a READER FUNCTION SEQRDR (L)
E l k é s z í t i az L nevű l i s t á h o z a s e q u e n c e r t . P aram éter: Ъ l i s t a n é v
A fü g g v é n y é r t é k e : a se q u e n c e r , a m e ly e t egy FORTRAN v á lt o z ó b a k e l l e l h e l y e z n i , p l . :
Z = SEQRDR (L) FUNCTION SEQLL (Z . F)
L ip e á r is se q u e n c e r , b a l ir á n y b a n h a la d a l i s t á n so ro n k ö v etk ez ő l i s t a e l e m i g .
P aram éter: Z a seq u e n c er
F v a l ó s t ip u s u v á l t o z ó , a k ö v etk ező é r t é k e k v a la m e ly ik é t v e s z i f e l :
0 . 0 ha k a p c so ló h o z é r k e z tü n k , 1 . 0 ha l i s t a f e j h e z é r k e z tü n k , - 1 . 0 ha l i s t a elem hez é r k e z tü n k . A fü g g v én y é r t é k e : a l i s t a e l e m DATUM r é s z e .
FUNCTION SEPER (Z . F)
L i n e á r i s , jo b b irá n y u h a la d á s . SEQLL p á r j a . FUNCTION SEQSL ( Z , F)
S t r u k t u r á l i s , b a l ir á n y ú h a la d á s . Paraméterek: Z a seq u en cer
F v a l ó s t ip u s u v á l t o z ó , a k ö v e tk ez ő é r té k e k v a la m e ly ik é t v e s z i f e l :
1 . 0 ha l i s t a f e j h e z érk ez tü n k - 1 . 0 ha lis t a e ie r a h e z é r k e z tü n k . A fü g g v én y é r t é k e : a l i s t a e l e m DATUM r é s z e .
.FUNCTION DELETE (К )
S t ü k t u r á l i s , jo b b ir á n y ú h a la d á s . SEQSL p á r j a . FUNCTION LRDROV Cb)
READER v á l t o z ó t k é s z í t a z Ъ l i s t á h o z . P ra m éter: L l i s t a n é v
A fü g g v én y é r t é k e s a r e a d e r n e v e , am ely et e g y FORTRAN v á lt o z ó b a k e l l e l h e l y e z n i : ,. p l . :
LR = LRDROV (L )
FUNCTION AD VIEL /AD VIER (LR. F)
L i n e á r i s a d v a n c e r , b a l/J o h h irányban h a la d a l i s t á n mind
a d d ig , amig e g y l i s t a e l e m e t nem t a l á l / a c e l l a ID r é s z e = 0 / . A l l i s t á k - ba nem e r e s z k e d ik l e .
P ra m éterek : LR a r e a d e r ,
F v a l ó s FORTRAN v á l t o z ó . É rték e 0 , 0 , ha a k e r e s é s s i k e r e s v o l t , azaz l i s t a e l e m e t t a l á l t } - 1 . 0 , ha nem v o l t s i k e r e s a k e r e s é s , v a g y is a l i s t a f e j é h e z ér k e z e t t v i s s z a .
A fü g g v én y é r t é k e : a l i s t a e l e m DATUM r é s z e . FUNCTION ADVLNL/ADVLNR (LR. F)
L in e á r i s a d v a n c e r , b a l / j o b b irá n y b a n h a la d a l i s t á n m in d a d d ig , am ig egy l i s t a k a p c s o l ó t nem t a l á l / a c e l l a ID r é s z e = 1 / . A l li s t á k b a nem . e r e s z k e d ik l e . Pram éterek é s a fü g g v én y é r t é k e : m in t ADVLEL/ADVLER- n é l .
FUNCTION ADVLWL/APVLWR (LR. F)
L i n e á r i s a d v a n c e r , b a l / j o b b ir á n y b a n h a la d a l i s t á n . A k e r e s é s tá r g y a l i s t a f e j t ő l k ü lö n b ö ző l i s t a e l e m *
P aram éterek é s a fü g g v é n y é r t é k e : m int ADVLEL/ADVLER-nél.
FUNCTION ADYSEL/ADVSER (LR. F)
S t r u k t u r á l i s a d v a n c e r , b a l/ j o b b ir á n y b a n h a la d a l i s t á n mind
a d d ig , am ig e g y l i s t a e l e m e t nem t a l á l / a c e l l a ID r é s z e = 0 / , A l l i s t á k b a l e s z á l l } a k e r e s é s a z e g é s z l i s t a s t r u k t u r á n t ö r t é n i k .
P aram éterek : LR a r e a d e r FUNCTION SEQ.SR ( Z . F )
- 2 3 -
F v a ló s FORTRAN v á l t o z ó . É rték e 0 . 0 , ha a k e r e s é s s i k e r e s v o l t , a za z l i s t a e l e m e t t a l á l t ; —1 . 0 , ha nem v o l t s i k e r e s a k e r e s é s , v a g y is a l i s t a f e j é h e z é r k e z e t t v i s s z a .
A fü g g v én y é r t é k e : a c e l l a DATUM r é s z e . FUNCTION ADVSNL/ADVSNR (DR. F )
S t r u k t u r á l i s a d v a n ce r , b a l/j o b b irá n y b a n h a la d a l i s t á n , mind
a d d ig , am ig l i s t a k a p c s o l ó t nem t a l á l / a c e l l a ID r é s z e = 1 / . A l l i s t á k - ba l e s z á l l .
Param éterek é s a fü g g v én y é r t é k e : mint ADVSEL/ADVSER-nél.
FUNCTION ADVSWI/ADVSWR (LR. F)
S t r u k t u r á l i s a d v a n ce r , b a l/j o b b ir á n y b a n h a la d a l i s t á n . A k e
r e s é s t á r g y a : l i s t a f e j t ő l k ü lö n b ö ző l i s t a e l e m . A l l i s t á k b a l e s z á l l á s t ö r t é n i k .
P aram éterek é s a fü g g v é n y é r t é k e : mint ADVSEL/ADVSER-nél.
FUNCTION INITRD (LR)
K e z d e ti á lla p o t b a h o z z a az LR r e a d e r t ; a r e a d e r a l i s t a f e j r e f o g m u ta tn i.
Pram éter: LR a r e a d e r
A fü g g v é n y é r t é k e : a rea d er n e v e . FUNCTION LCNTR (LR)
Az LR nevű r e a d e r s z i n t s z á m l á l ó j á t / l e v e l c o u n t e r / a d ja e r e d ményül .
P aram éter: LR a r e a d e r
A fü g g v én y é r t é k e : a s z i n t s z á m i á l ó . FUNCTION LPNTR (LR)
Annak a c e llá n a k a c im é t a d ja ered m én y ü l, a m ely re a r e a d e r mu
t a t . A r e a d e r v á l t o z a t l a n marad.
P aram éter: LR a r e a d e r
A fü g g v én y é r t é k e : az a k t u á l i s c e l l a cim e.
FUNCTION LRDRCP (LR)
L em á so lja az LR r e a d e r lá n c a k t u á lis á l l a p o t á t . P aram éter: LR - a r e a d e r
A fü g g v én y é r t é k e : a le m á s o lt r e a d e r n e v e .
A r e a d e r t v i s s z a á l l í t j a úgy, hogy a l i s t a s t r u k t u r a l e g f e l s ő s z in t ű l i s t á j á n a k a z o n k a p c s o ló elem ére m u ta sso n , a m e ly r ő l a l e s z á l l á s t ö r t é n t .
P aram éter: LR - a r e a d e r
A fü g g v é n y é r t é k e : a rea d er n e v e . FUNCTION LVLRV1 (LR)
A r e a d e r t v i s s z a á l l í t j a úgy, hogy a l i s t a s t r u k t u r a e g g y e l ma- g a s a b h s z in tü l i s t á j á n a k azon k a p c s o ló e le m é r e m u ta sso n , a m e ly r ő l a l e s z á l l á s t ö r t é n t .
P a ra m éter: LR a r e a d e r
A fü g g v é n y é r t é k e : a rea d er n e v e . FUNCTION RDRATN (LR)
A r e a d e r m e g v á lt o z t a t á s a n é lk ü l a l i s t a k ö v e tk e z ő e le m é r ő l m e g á l l a p í t j a , h ogy l i s t a k a p c s o l ó - e .
P a ra m éter: LR - a r ea d er
A fü g g v é n y é r t é k e : - 1 . 0 ha a k ö v e tk e z ő elem nem k a p c s o ló 0 . 0 ha a. k ö v e tk e z ő elem k a p c s o ló . FUNCTION IRARDR (LR)
E le n g e d i az LR.nevü r e a d e r t . P a ra m éter: LR a r e a d e r
A fü g g v é n y é r t é k e : a s z in t s z á m lá ló u t o l s ó á l l a p o t a . 5.4- A l e i r ó l i s t a
FUNCTION LVLRVT (L R )
FUNCTION LISTAV (L)
Az L n e v ű l i s t á h o z e g y ü r e s l e i r ó l i s t á t k é s z í t . P a ra m éter; L l i s t a n é v
A fü g g v é n y é r t é k e : a l e i r ó l i s t a n e v e . FUNCTION LDATVL (AT. VL. h)
Az L n e v ű l i s t a l e i r ó l i s t á j á n e l h e l y e z i a z AT a tt r ib ú tu m o t é s a VL é r t é k e t . Ha az L l i s t á n a k n in c s l e i r ó l i s t á j a , a .f ü g g v é n y k é - s z i t e g y l e i r ó l i s t á t é s e l h e l y e z i r a j t a az AT, VAL p á r t .
P a ram éterek : AT az e l h e l y e z n i k iv á n t a tt r ib ú tu m , VL az e l h e l y e z n i k iv á n t é r t é k
L l i s t a n é v