informatyka
I Nr 4
M iesięcznik Rok X X I
Kwiecień 1986
O rgan K o m ite tu In fo rm a ty k i M N SZW iT oraz K o m itetu N aukow o-Technicznego NOT ds. In fo rm a ty k i
K O L E G I U M R E D A K C Y J N E ;
D r in ż . W a c ł a w IS Z K O W S K I, m g r T e r e s a J A B Ł O Ń S K A ( s e k r e t a r z r e d a k c j i ) , W ła d y s ł a w K L E P A C Z ( z a s tę p c a r e d a k t o r a n a c z e l n e g o ) , d r in ż . J a n u s z Z A L E W S K I ( z a s t ę p c a r e d a k t o r a n a c z e ln e g o )
S T A L E W S P Ó Ł P R A C U J Ą :
M g r in ż . W ito ld A B R A M O W IC Z ( S z w a j c a r i a ) , m g r I n ż . T e r e s a W IL C Z E K
P R Z E W O D N IC Z Ą C Y R A D Y P R O G R A M O W E J :
P r o f . d r b a b . J u l i u s z L e c h K u l i k o w s k i
M a t e r i a ł ó w n i e z a m ó w i o n y c h r e d a k c j a n i e z w r a c a
R e d a k c j a : 00-041 W a r s z a w a , u l . J a s n a l i l i i , p a k . 243 i 244, t e l . 27-71-40 l u b 26-82-61 w . 114
Z a k l . G r a f . „ T a m k a ” . Z a m . 0248-1300/86.
O b j. 4,0 a r k . d r u k . N a k ł a d 8300 c g z. P-8S.
I S S N 0J42-9B51, I N D E K S 38124
C e n a e g z e m p l a r z a 120 zł P r e n u m e r a t a r o c z n a 1440 zł
WYDAWNICTWO g
I SIGMA i
00-950 Warszawa skrytka pocztowa 1004
u l Biała 4
At 1986
W NUM ERZE: "Strona
K o n w ersja o p ro g ra m o w an ia n a języ k A da
B ria n A. W ic h m a n n 1
U P T — u n iw e rsa ln y p rocesor do red a g o w a n ia te k stó w dla M ery 400
R o m a n Faber, M ichał O stro w ski 5
R ozw iązanie pasm ow ych u k ła d ó w ró w n a ń liniow ych n a m ik ro k o m p u te rach
A n d rze j T. Janczura 9
R e k u re n c ja w języ k u F o rth
Z b ig n ie w S zk a ra d n ik 10
K o m p u te ry osobiste w zasto so w an iach p ro fe sjo n a ln y ch (2)
M ichał K leiber, M aciej L eśn y , R o m u a ld S zu n ie w ic z 11 Ję zy k p ro g ra m o w an ia Icon (2)
J erzy K a rczm a rc zu k 13.
M onitor ja k o n arz ęd zie stru k tu ra liz a c ji . pro g ram ó w w spółbieżnych (2)
L e sze k K o tu lsk i 16.
S te ro w n ik E th e rn e t w system ie M ultibus
Oprać. R o m a n G rabow icz 20
ZE Ś W IA TA I 22
H isto ria i rozw ój m ik ro p ro ceso ró w
S ir C liv e S in c la ire o trz e c ie j przem y sło w ej rew o lu c ji S ta n d a ry z a c ja ję zy k a BASIC
Kto je st kim w IF IP — P ie rre B obillier
TER M IN O LO G IA 30
T rzydziestolecie te rm in u b a jt C a rd w a re
WyliGznik
W N A J B L I Ż S Z Y C H N U M E R A C H :
© P a w e ł G r z e g o r z e w ic z o m e c h a n i z m i e p ó ł a u t o m a t y c z n e g o g e n e r o w a n i a p o l e c e ń d la s y s t e m u o p e r a c y j n e g o R S X -1 1 M
O P i o t r Z a s k ó r s k i i E w a K a s p r z a k o t e c h n o l o g i i w y t w a r z a n i a o p r o g r a m o w a n i a u ż y t k o w e g o z k o m p u t e r o w y m w s p o m a g a n i e m
O K r z y s z t o f P e r y c z o m i k r o k o m p u t e r o w y m s y s t e m i e o p e r a c y j n y m S I
© A n d r z e j M a c io ł i A d a m S t a w o w y o ś r o d k a c h d o p r z e t w a r z a n i a t e k s t ó w
• D in e s B j o r n e r o r o l i i z a k r e s i e i o r m a l n e j d e f i n i c j i A d y
© P i o t r C o f ta o n o r m i e IE E E d l a j ę z y k ó w a s e m b l e r o w y c h d l a m i k r o p r o c e s o r ó w
© K r z y s z t o f M i c h a l i k o p r o g r a m o w a n i u lo g i c z n y m
BRIAN A. WICHMANN J.GJ. MEIJERINK
National Physical Laboratory Teddington, Middlesex
Wielka Brytania
I / 1 W %
Konwersja oprogramowania na język Ada
B iblioteka o p ro g ra m o w an ia p ow inna zapew niać sp e łn ie
nie m ożliw ie szerokiego za k resu p otrzeb użytkow ników przez ja k n a jm n ie jsz ą liczbę podprogram ów . Rozwój i roz
pow szechnienie b ib lio tek i w ym aga znacznego w ysiłku, szczególnie pod w zględem d o k u m e n tac y jn y m , i często po
tęg u je tru d n o śc i w doborze odpow iedniego p odprogram u do określonego zastosow ania. K ształt k o n k re tn e j b ib lio te
ki, ja k np. N A G F o rtr a n L ib ra ry [6] (NAG, ang. N um eri- cal A lgorithm s G roup), je st ograniczony przez możliwości języka. N ie m ożna z a k ła d ać więc, że o p ty m a ln a postać podprogram u w F o rtra n ie je st o p ty m a ln a ta k że dla innego języka.
W a rty k u le ty m rozw ażono k o n w ersję k rótkiego po d p ro gram u z F o rtr a n u i P asc ala n a Adę. P rzy k ład o w y podpro
g ram g en e ro w a n ia liczb losow ych w y b ran o dlatego, że je st m ały, a jednocześnie o b e jm u je w iele isto tn y ch zagadnień spotykanych p rzy p ro je k to w a n iu p ak ietó w w Adzie. Nie m usi być do tego p o trze b n a d o k ła d n a znajom ość Ady, gdyż w ystęp u jące pro b lem y są w zględnie niezależne od języka, a poszczególne k ro k i k o n w e rsji w yjaśniono dość dokładnie.
KONW ERSJA Z PA SC A L A NA ADĘ
K o nw ersji o p ro g ra m o w an ia m ożna dokonyw ać skutecznie bez d okładnej znajom ości zastosow anych ^algorytm ów . Z u pełnie n a tu ra ln a je s t k o n w e rsja z języka w ysokiego pozio
m u n a kod m aszynow y, p rz e p ro w ad z an a m echanicznie - bez zrozum ienia treśc i p ro g ra m ó w przez kom pilatory. Poniższy przykład dotyczy g e n e ra to ra liczb losow ych. Szczegóły je go im p lem e n ta cji om ów iono w uprzednio o p ublikow anym arty k u le [8], a w y n ik i te sto w an ia losow ości g enerow anych ciągów liczbow ych przed staw io n o w rap o rcie [9]. Ich zn a
jomość n ie je s t w y m ag a n a do zrozum ienia procesu k o n w ersji. W p ie rw sz ej kolejności om ów iono w e rsję n ap isan ą w P asc alu [1], ze w zględu n a oczyw iste podobieństw o m ię
dzy P asc ale m i A dą.
W p ro g ra m ie p rze d staw io n y m n a w y d ru k u 1 zdefiniow a
no fu n k cję ran d o m , b ęd ą cą g e n e ra to re m liczb losowych.
Z m ienne ix, iy i iz sta n o w ią tzw . posiew (ang. seeds) do w łaściw ych obliczeń i m uszą być zain ic jo w an e przed pierw szym w yw ołaniem . Ich w arto śc i są całkow ite i m u szą znajd o w ać się w przedziałach, odpow iednio, [1,30268], [1,30306] i [1,30322]. S łu żą one do w y g en e ro w a n ia 48-bito- w ych ciągów losow ych n a p o d sta w ie trze ch ciągów 16-bi- tow ych o postaci:
ix := (ix * 1 7 1 ) m od 30269 iy : = (iy*172) m od 30307 iz : = (iz*170) m od 30323
P oniew aż 30269, 30307 i 30323 są liczb am i pierw szym i, w szystkie ciągi m uszą być m a k sy m a ln ej długości (por. [5], str. 19). T en k ro k n ie m oże je d n a k być w y k o n an y n a k o m p u te rz e 16-bitow ym bez p o w sta n ia n a d m ia ru . M ożna tego u n ik n ąć w p ro w a d z a ją c m o d yfikację:
iy = k * 176 + r
gdzie k i r są liczbam i całk o w ity m i o w arto śc iac h o g ra n i
czonych n astęp u jąco :
p ro g ra n name ( o u tp u t ) ; v a r
l x : 1 . . 30268; ł : 1 . . 30306; l z : 1 . . 30322;
f u n c tio n ran d o a : r e a l ;
n l , k , r : i n te g e r ; x : r e a l ; b eg in
I c a lc u l a t e k and r f o r lx } k ;> ix d lv 177;
r s* l x - k • 177;
n l - k - k ♦ 171 • r ;
{ -312 <* n l <* 30096, so now red u c e ran g e 1 i f n i < 0 th en
lx :« n i ♦ 30269 e la e
lx : i n i ;
{ k and r f o r ly g e n e ra to r } k :* ly d lv 176;
r :« iy - k * 176;
n l :■ - 35 • k ♦ r • 172;
{ red u ce ran g e , -6020 <* n i <« 30100 ] i f n l < 0 th e n .
ly :* n i ♦ 30307 e la e
l y :* n l ; s ■
( now th e aaae f o r i t ) k :> i z d iv 178;
r :» i z - k • 178;
n l - 63 • k ♦ r • 170;
{ red u c e r a n g e , -10710 <« n i <« 30090 J i f n i < 0 th en
l z :* n i ♦ 30323 e ls e
l z : s n l ;
x :* ix /3 0 2 6 9 .0 ♦ iy /3 0 3 0 7 .0 ♦ iz /3 0 3 2 3 .0 ; ran d o a :* x - truncC x)
end ' {randofo} ;
b e g in (Hain program}
iz :* 1;
i y :« 10001;
l x : • U987;
W y d r u k 1. O r y g i n a l n y p r o g r a m w P a s c a l u
W tedy o trzy m u je się rów ności:
172 * iy = k * 176 * 172 + r * 172 =*
= k * 30272 + r * 172 =
=.■— k * 35 + r * 172 mod 30307
a p o stę p u ją c analogicznie dla pozostałych zm iennych rów ności:
iz = k * 178 + r
170 * iz = — k * 63 + r * 170 mod 30323 ix = k * 177 + r
171 * ix — — k * 2 + r * 171 m od 30269 0 < k ^ l 7 2
0 < r < 175
N owe w arto śc i są ograniczone do sz esn astu bitów , a Ich okres w ynosi ok. 6.95E12. Część ułam k o w a sum y ty c h
1
trzech w arto śc i, b ęd ą ca częścią u ła m k o w ą z d zielenia przez liczby pierw sze, sta n o w i rzeczy w istą w arto ść losow ą.
P ro g ra m w P a sc a lu m ożna p rze k szta łc ić n a p ro g ra m w Adzie, zm ien iają c je d y n ie sk ła d n ię jego te k s tu . J e d n a k że je s t oczyw iste, że n ależy zm odyfikow ać użycie zm ien
nych globaln y ch ix, iy i iz w celu u n ik n ię cia m ożliw ości ich niew łaściw ego .użycia. M ożna to ła tw o osiągnąć w A dzie, um ieszczając zm ienne w pakiecie, ta k że będą one u ży te ty lk o w części im p le m e n ta c y jn e j p a k ie tu , a n ie w jego specy fik acji. W k o n se k w e n cji n ależy zapew nić spo
sób odczytyw ania i u sta w ia n ia w arto śc i tych zm iennych, ab y um ożliw ić p o w tarzaln o ść ciągów, je śli zajdzie p o trze
ba. P rz y u w zg lęd n ien iu ty c h zm ian, sp e cy fik ac ja p a k ie tu w A dzie m a n a s tę p u ją c ą postać:
p ackage R andom —N um bers is fu n ctio n R an d o m r e tu r n F lo a t;
u d o stę p n ia w a rto ść losow ą z z a k re su 0.0 .. 1.0 p ro cc d u re S eed s_ A re (X, Y, Z : o u t In teg er);
—— u d o stę p n ia w arto ść posiew u p ro cc d u re R e s ta rt (X, Y, Z : in In teg er);
w znow ienie od określo n y ch w arto śc i posiew u z z a k resu 1 .. 30 000
cn d R a n d o m -N u m b e rs;
S p ecy fik a cja z a w ie ra p ro sty i eleg a n ck i opis p ak ietu , w o l
n y od szczegółów im p lem e n ta cy jn y c h . P o ż ą d a n e je s t także u w zględnienie specyfiki sem an ty k i, lecz żad en z om awia-, n ych języków n ie m a m echanizm ów służących te m u celowi.
P ro p o n u je się rozszerzenie A dy przez k o m en tarze, um ożli
w iając e uw zględnienie ta k ie j in fo rm ac ji se m an ty czn ej, np.
[3]. W rzeczyw istości m ożna o k reślić je d n ą w łaściw ość rozw ażanego p a k ie tu , m ianow icie — o g ran iczen ie za k resu w arto śc i fu n k c ji R an d o m do p rze d zia łu (0.0 ..1.0).
package body Fandoo_Huub«ra i*
IX, IY, IZ : I n te g e r ;
fu n c tio n Randoa r e t u r n F lo a t l a W : F l o a t;
b eg in
IX :« 171 • (IX mod 177) - 2 • (IX /1 7 7 );
IY :« 172 • (IY nod 176) - 35 • (IY /1 7 6 );
IZ :« 170 • (IZ nod 178) - 63 • (1 2 /1 7 8 );
I f IX < 0 th en IX :* IX ♦ 30269;
end I f ; i f IY < 0 th en
IY :* IY ♦ 30307;
end i f ; i f IZ < 0 th an
IZ s * I Z :♦ 30323; • end i f ;
W F l o a t ( IX )/30269-0 ♦ F lo a t(IY )/3 0 3 0 7 .0 ♦ F lo a t( IZ )/3 0 3 2 3 .0 ; r e t u r n W - F lo a t ( I n t e g e r (W - 0 . 5 ) ) ;
end Randoa;
p ro ce d u re Seeds J l r e (X, Y, Z : o u t I n te g e r ) I s b e g in
X : • IX;
Y :* IY;
Z :» IZ ;
p ro ce d u re R e s t a r t (X, Y, Z : in I n te g e r ) 1»
b eg in
IX :* ( X - 1 ) mod 30269 ♦ 1;
IY :* ( Y - 1 ) nod 30307 ♦ 1;
IZ : . ( Z - 1 ) mod 30323*♦ 1;
end R e s t a r t ; b eg in
IX M
IY :■ 10001;
IZ :« *987;
end fcandomJNumbers;
W y d r u k 2. c i a ł o p a k i e t u p o k o n w e r s j i w J ę z y k u A d a
Ciało p a k ie tu po k o n w e rsji n a języ k A da przed staw io n o n a w y d ru k u 2. J e d y n a różnica w p o ró w n a n iu z, w e rsją n a p isa n ą w P a sc a lu polega n a za in ic jo w an iu zm iennycn posiew u IX , IY i IZ. D zięki um ieszczeniu odpow iednich in s tru k c ji w ciele p a k ie tu , zm ien n e są in ic jo w an e a u to m a tyczn ie bez żadnego u d ziału użytk o w n ik a. N ależy z a u w a
żyć, że w sk u te k u k ry c ia im ie n n y c h IX, IY i IZ m ożna u prościć ciało fu n k c ji R andom , gdyż n ie m a ju ż koniecz
ności um ieszczania ścisłych ogran iczeń n a za k resy ■wszyst
kich w artości; N ow a p ro c e d u ra R e s ta rt m ogłaby pow odo
w ać p o w sta n ie w y ją tk u sygnalizującego, że o k reślo n e licz
by w ychodzą poza dopuszczalny zak res. Z am iast tego je d n a k są one p rze k szta łc an e n a w arto śc i w e w n ą trz zak resu . U W ZG LĘDN IENIE PR ZEN O ŚN O ŚC I
W o ry g in a ln e j w e rsji - alg o ry tm u z a p ro g ra m o w an ej w F o rtra n ie , uw zględniono d w a ró żn e w a ria n ty . J e d e n z nich je s t przeznaczony do a ry tm e ty k i 24-bitow ej, a d ru g i — do 16-bitow ej, choć ze w n ętrzn ie oba są identyczne. W F o r t
r a n ie lu b P asc alu d o starcza się obu w a ria n tó w pozosta
w ia ją c użytk o w n ik o w i w y b ó r odpow iedniejszego d la jego k o m p u te ra . O publikow ana w e rsja fo rtra n o w sk a m a jed en z w a ria n tó w w b u d o w an y jako k o m e n ta rz (w y d ru k 3).
FUNCTION RANDOM (1.) C
C ALCORITHM AS 183 APPL. STATIST. (1982) VOL.31, 110,2 C
C RETURNS A PSEUDO-RANDOM NUMBER RECTANGULARLY DISTRIBUTED
C BETWEEN 0 AND 1.
C
C IX, IY AND IZ SHOULD BE SET TO INTECER VALUES BETWEEN
C 1 AND 30000 BEFORE FIRST ENTRY
C
C INTECER ARITHMETIC UP TO 30323 IS REQUIRED /
C
C0MM0N/RAND/IX, IY, IZ •
IX = 171 • M0DUX, 177) - 2 » (IX /1 7 7 ) IY * 172 « M0D(IY, 176) - 35 • (IY /1 7 6 ) IZ * 170 • M0D(IZ, 178) - 63 • (IZ /1 7 8 ) C ,
IF (IX .LT. 0 ) IX = IX f 30269
IF (IY .LT. 0 ) IY = IY + 30307
IF (IZ .LT. 0 ) IZ = IZ ♦ 30323
c • •
C IF INTEGER ARITHMETIC UP TO 5212632 IS AVAILABLE, C - THE PRECEDING 6 STATEMENTS MAY BE REPLACED BY C
C IX a H0DO71 • IX , 30269) C IY ■ M0D(172 ■ IY, 30307) C IZ * H0D(170 • IZ , 30323) C
C OH SOME MACHINES, THIS MAY SLIGHTLY INCREASE C THE SPEED. THE RESULTS WILL BE IDENTICAL.
C
RANDOM a AMOD(FLOAT(IX)/30269.0 ♦
$ FL0A T(IY )/30307.0 ♦ FL0A T(IZ)/30323.0, 1 .0 )
RETURN END
W y d r u k 3. O p u b l i k o w a n a w e r s j a p r o c e d u r y w F o r t r a n i e
W A dzie dąży się do osiągnięcia bardzo dużej p rzen o ś
ności z a k ła d ają c, że k o m p ila to ry ję zy k a m uszą być id e n tyczne. D latego m ożna o p raco w ać p ro g ra m w w ielu w a r ia n ta c h n ie w y m ag a ją cy zm ian w te k ście źródłow ym . W ro zw aż an y m p rz y p a d k u A da za p ew n ia śro d k i do o k re ś
la n ia długości re p re z e n ta c ji liczb. R ozm iar re p re z e n ta c ji liczb całk o w ity ch w b ita ch je st o k reślo n y przez s ta łą In - teg er'S ize. Z tego w zględu w ybór alg o ry tm u m oże być d o k onany au to m aty czn ie. W p ew nych okolicznościach je d n a k w y b ó r alg o ry tm u m oże się n ie udać. J e s t to w y k ry w an e przez sp raw d ze n ie w arto śc i In te g e r'L a st, ta k że m o
że być zgłoszone p o w sta n iem w y ją tk u C o n stra in t—E rro r.
Ciało p a k ie tu uw zględniającego tę sy tu a c ję przed staw io n o n a w y d ru k u 4. Z n aczenie k o m e n ta rz y w języ k u an g iel
skim om ów iono w podpisie do w y d ru k u .
Is to tn e w ty m p akiecie je st użycie o p e ra to ra w a ru n k o w ego „an d th e n ”. W artość w y ra że n ia logicznego (In te g e r'L a st < 5212632) oblicza się ty lk o w ted y , gd y s ta ła S im - ple_C ase m a w arto ść TRUE. W ówczas obliczenie m a sens, lecz w p rze ciw n y m p rz y p a d k u p ró b a k o n w e rsji liczby 5212632 n a ty p In te g e r spow odow ałaby zgłoszenie w y ją tk u C o n s tra in t-E rro r.
DOBÓR STYLU
Choć p ro ces k o n w e rsji m ożna uznać za zakończony, gdyż uw zględniono w n im oba w a ria n ty fo rtra n o w sk ie , d o k ła d n y p rzeg ląd w y k a z u je b ra k i w sty lu p ro g ra m o w an ia . A b
stra k c y jn ie , g e n e ra to r liczb losow ych m a p ojedynczy po siew o k re śla ją c y k o lejn e liczby. W zaim p lem en to w an y m alg o ry tm ie posiew tw o rzą tr z y w arto śc i całkow ite. W Adzie jednolitość posiew u m ożna u ją ć ja k o ty p d an y ch , co m a n a s tę p u ją c e odbicie w sp e cy fik ac ji (odpow iednie zm iany w ciele p a k ie tu nie w y m ag a ją dodatkow ych w yjaśnień):
package R a n d o m -N u m b e rs is fu n ctio n R a n d o m r e tu r n F lo at;
u d o stę p n ia w arto ść losow ą z z a k resu 0.0.. 1.0 ty p e Seed is
rec o rd
X , Y, Z : In te g e r;
2
en d record;
fu n ctio n C u rre n t_ S e e d r e tu r n Seed;
u d o stę p n ia w arto ść posiew u
p ro ce d u re R e s ta rt (R estart_ S ee d : in Seed);
w znow ienie od o kreślohych w arto ści posiew u z za k resu 1.. 30—000.
end R andom N um bers;
package body Random_N umbers i s
IX, IY, IZ : I n te g e r ; . — The t h r e e s e e d s .
S ln p le _ C a se : c o n s ta n t Boolean := In te g e r'S if c e >= 2*4;
— S im p le jC ase d e te rm in e s which a lg o rith m w i l l be u s e d ,
— i t sh o u ld be e v a lu a te d by th e c o m p ile r and in consequence
— no a d d i t i o n a l ov erh ead w i l l be p la c e d on th e ru n n in g program . f u n c tio n Random r e t u r n F lo a t i s
W : F l o a t;
beg in
i f Sim ple Case th en IX :* 0 7 1 • IX) mod 30269;
IY :* (172 • IY) mod 30307;
IZ := (170 • IZ ) mod 30323;
e ls e
IX :s 171 • (IX mod 177) - 2 • (IX /1 7 7 );
IY 172 • (IY mod 176) - 35 • (IY /1 7 6 );
IZ : s 170 ■ (IZ mod 178) - 63 • ( I Z / 178);
i f IX < 0 th en IX := IX ♦ ‘30269;
end i f ; i f IY < 0 then
IY : s IY ♦ 30307;
end i f ; i f IZ < 0 th en
IZ : a IZ ♦ 30323;
end i f ; e n d ir ;
W :* F lo a t( IX )/3 0 ? 6 9 .0 ♦ F lo a t( lY )/3 0 3 0 7 .0 ♦ F lo a t( IZ )/3 0 3 2 3 .0 ; r e t u r n W - F lo a t ( I n t e g e r (W - 0 . 5 ) ) ;
end Random;
p ro ce d u re Seeds_Are (X, Y, Z : o u t I n te g e r ) i s b eg in
X :« IX;
Y : a IY;
Z := IZ ; end Seeds_Are;
p ro ce d u re R e s t a r t (X, Y, Z : in I n te g e r ) i s beg in
IX : s ( X - 1 ) mod 30269 + 1;
IY :« ( Y - 1 ) mod 30307 ♦ 1;
IZ :* ( Z - 1 ) nod 30323 + 1;
end R e s t a r t ; begin
— Check t h a t I n te g e r has s u f f i c i e n t range - - f o r th e g e n e ra to r to work a t a l l . i f I n te g e r 'L a s t < 30323 th en
r a i s e C o n s tra in t_ E rr o r ; end i f ;
— Check t h a t S io p le _ C a se g iv e s c o r r e c t s e l e c t i o n . R aise
— C O n s tr a ln t_ E r ro r in u n lik e ly c a se t h a t Sim ple_Case dooo - - n o t g iv e c o r r e c t d i s t i n c t i o n .
i f S io p le _ C a se and th en ( I n t e g e r 'L a s t < 5212632) th en r a i s e Ć o n s t r a i n t j E r r o r ; — u n lik e ly
end i f ; IX :* 1;
• IY : s 10001;
IZ ;a H987;
v
end Random_Numbers;
W y d r u k 1. C ia ło p a k i e t u u w z g l ę d n i a j ą c e g o s y t u a c j e w y j ą t k o w e . S t a l ą S l m p l c _ C a s e o b l i c z a n a w c z a s ie k o m p i l a c j i o k r e ś l a , k t ó r y a l g o r y t m b ę d z i e u ż y t y . I n s t r u k c j e i i w a k t y w n e j c z ę ś c i p a k i e t u z a p e w n i a j ą p o p r a w n e d z i a ł a n i e g e n e r a t o r a n i e z a l e ż n i e o d d ł u g o ś c i s ło w a k o m p u t e r a
DOMYŚLNE IN IC JO W A N IE PO SIEW U
W o ry g in aln y m alg o ry tm ie inicjow ano posiew przez zw ykłe p rzy p isa n ie sta ły c h trz e m zm ien n y m całkow itym . T ak a m etoda w y sta rc za do o trzy m an ia p o w tarz aln y c h cią
gów losow ych. W p ra k ty c e , ciągi losow e zaczy n ające się od te j sam ej w arto śc i, n ie są typow e. J e d e n ze sposobów p ozw alających n a u n ik n ię cie p o w tarzaln o ści polega n a in i
cjow aniu d an y c h w arto śc iam i uzy sk an y m i z w ew nętrznego zegara k o m p u te ra. W A dzie um ożliw ia to zdefiniow any p ierw o tn ie p a k ie t C a le n d ar. O dpow iednie zm iany, nie w p ły w ają ce n a sp e cy fik ac ję p a k ie tu , lecz ty lk o n a jego ciało, przed staw io n o n a w y d ru k u 5.
Trzy zm ienne całk o w ite tw o rzące posiew są in icjow ane w artościam i, k tó ry m odpow iada ró żn a częstotliw ość zm ian czasu. T rzecia sk ła d o w a je s t — n a p rz y k ła d — zw iększana co m ilisekundę. W n o rm ie A dy o k reślono rozdzielczość ty pu D u ra tio n co n a jm n ie j n a 20 m s, n ie podano w n ie j
w ith C a le n d a r;
package body Randoe_Nuobers i s
Simple_Ca3c : c o n s ta n t Boolean : s I n t r g e r ’S i r e >* 2$;
S : Seed;
f u n c tio n Random r e t u r n F lo a t i s W : F l o a t;
b eg in
i f Sim ple C ase then
S :» <Tl71 • 3.X J eod 30269, (172 • S.X) mod 30307, (170 * S .Z ) nod 30323);
e ls e
— n o t Simple_Case
S :« (171 • (S.X mod 177) - 2 • (S.X / 177), 172 • (S.Y mod 176) - 35 • ( S .I / 1 7 6) , 170 • (S.Z mod 178) - 63 • (S.Z / 1 7 8) ) : I f S.X < 0 thou
S.X S.X . 30269;
end i f ; i f S.Y < 0 th en
S.Y S.Y ♦ 30307;
end i f ; i f S.Z < 0 th en
S .Z := S.Z ♦ 30323;
end i f ;
end i f ; Of.'
W •:= F lo a t(S .X )/3 0 2 6 9 .0 ♦ F lo a t(S .Y )/3 0 3 0 7 .0 «■
F lo a t( S .Z )/3 0 3 2 3 .0 ;
r e t u r n W - F lo a t ( I n t e g e r (W - 0 . 5 ) ) ; end Random;
f u n c tio n C u rren tJS e e d r e t u r n Seed i s b eg in
r e t u r n S;
end C u rre n t Seed;
p ro ce d u re R e s t a r t . ( R e start_ S e ed : i n Seed) i s b eg in
Seed :* ( ( R e s ta rtjS e e d .X - 1 ) mod 30269 ♦ 1, ( R e s t a r t j S e e d .r - 1 ) mod 30307 ♦ 1, ( R e s ta r tjS e e d .Z - 1 ) mod 30323 ♦ 1 ) ; end R e s t a r t ;
b eg in
i f I n t e g e r 'L a s t < 30323 th e n r a i s e C o n s tra in t_ E rr o r;
end i f ;
i f Slmple_Case and th en ( I n t e g e r 'L a s t < 5212632) th en r a i s e C o n s tra ln t_ E rr o r;
end i f ;
— I n i t i a l i z e th e se ed , d e c la r e
u se C a le n d ar;
T : Time :* C lock;
Count: I n te g e r := In te g e r( S e c o n d s (T )/3 );
— in range 1 . . 2 8 8 0 1, in c r e a s e s e v e ry" 3 s e e s . begin
3 :* (H onth(T), Day(T) ♦ Count,
In teg er(10 0 0 » S eco n d s(T ) - 3000 » D u ratio n (C o u n t)) ) ; end;
end Randos__Muabers;
W y d r u k 5. P a k i e t u w z g l ę d n i a j ą c y a u t o m a t y c z n e i n i c j o w a n i e p o s i e w u
je d n a k w y m ag a n ej rozdzielczości fu n k c ji Clock, W rzeczy
w istości, w je d n e j z u żytych w e rsji zatw ierdzonego k o m p i
la to ra firm y ROLM stw ierdzono rozdzielczość sekundow ą.
W celu o trzy m an ia p o w tarz aln y c h ciągów m ożna n ad al używ ać p ro c e d u ry R e sta rt, np.:
R e s ta rt ( (1,10001,4987) );
ROZNORODNOSC CIĄ G ÓW I W IELOZADANIOW OŚC Choć p rze d staw io n a w e rsja g e n e ra to ra n a d a je się do w ielu celów, m a d w a p ow ażne b ra k i. O m ów im y je ro z
w a ż a ją c użycie p a k ie tu w p ro g ra m ie sy m u lac ji złożonego p ro b lem u ze zd arzen iam i przy p ad k o w y m i.
K ażdem u zdarzen iu p rzy p a d k o w e m u m oże odpow iadać in n y ciąg losow y. Ich ro zk ła d y m ogą być ró żn e od ró w n om iernego w przed ziale [0,1J, zapew nionego przez o p rac o w an y p ak iet. Co w ięcej, w czasie te sto w a n ia zazw yczaj zachodzi p o trze b a zm iany p a ra m e tró w określonego ciągu, p rzy u sta le n iu p a ra m e tró w pozostałych ciągów. N ie p o zw ala n a to pojedynczy ciąg z je d n y m posiew em . J e d y n y m ro zw iązan iem je st pozw olenie u ży tk o w n ik o w i n a u - tw o rzen ie now ego ciągu z w łasn y m posiew em .
M ożna przypuszczać, że n a jła tw ie jsz e byłoby p rze k a z y w an ie posiew u ja k o p a ra m e tru fu n k c ji R andom . N iestety, n ie je s t to dopuszczalne w Adzie, p oniew aż p a ra m e tr fu n k c ji m u siałb y być w try b ie in o u t. W celu p o konania te j tru d n o śc i n ależało b y p rze k szta łc ić fu n k c ję R a n d o m n a pro ced u rę. Choć ta k ie rozw iązanie m ogłoby o d p o w iad ać p u ry sto m , w te j p ra c y uzn an o je za n ie a tra k c y jn e i od rzucono. '
3
Złożony p ro b lem sy m u lac ji m ożna za p ro g ram o w ać w A - dzie b ardzo elegancko, tw o rzą c zad an ia o d p o w iad a ją ce po
szczególnym sy m u lo w an y m procesom . S tan o w iły b y one b a rd z ie j re a ln y m odel procesów . Je d n a k ż e z a d an ia w A dzie n ie p ow inny dzielić w spólnych zm iennych. T ak ie w spół
d zielenie zachodzi w ted y , gdy dw a z a d an ia u ży w a ją tego sam ego g e n e ra to ra liczb losow ycłi (w spółdzieloną zm ien n ą je s t w spólny posiew). T en zakaz w spółd zielen ia je s t b a r
dzo isto tn y , poniew aż w p rzeciw nym p rz y p a d k u g e n e ra to r d o sta rc za łb y w yników nieok reślo n y ch (a nie p rzy p a d k o wych). W te j sy tu a c ji n ależy pozw olić użytkowniko%vi na u tw o rze n ie now ego g e n e ra to ra w k aż d y m zad an iu , ta k aby nie zachodziła p o trze b a w spółdzielenia posiew u.
W A dzie m ożna utw o rzy ć w iele k o n k re tó w (egzem plarzy) p ak ietu , jeżeli p a k ie t je st rodzajow y (ang. generic). K o
nieczność istn ie n ia ta k ie j k o n stru k c ji p o d k re śla n o w ielo k ro tn ie [2], S p ecy fik a cja p a k ie tu rodzajow ego je st n a s tę p u ją ca :
generic
p ack ag e R a n d o m _ N u m b e rs is treść ta k a ja k poprzednio cn d R and o m _ N u m b ers;
n a to m ia st jego ciało pozostaje bez zm ian w sto su n k u do p a k ie tu zw ykłego. Je d n a k ż e p a k ie t ro d za jo w y n ie może być użyty bezpośrednio, lecz m usi być p o ddany k o n k re ty zacji:
p ack ag e M y -R a n d o m is new R andom —N um bers;
Ciągi losow e o trz y m u je się przez w ielo k ro tn e w y w o łan ia fu n k c ji M y_R andom .R andom .
Isto tn y m pro b lem em w sto so w an iu ro d zajo w ej w ersji p a k ie tu je st konieczność jego k o n k rety z ac ji. D la u żytkow n ik ó w n ie w y m ag ający ch w ielo k ro tn y ch ciągów a n i w ielo- zadaniow ości, czyli w n ajp ro stszy c h p rzy p a d k ach , je st to b ardzo niew ygodne. R ozw iązanie tego problem u, p rz y ję te w edług zaleceń sfo rm u ło w an y ch dla o p ro g ra m o w an ia m a
tem atycznego [7], polega n a u tw o rze n iu dw óch p ak ietó w
— p a k ie tu rodzajow ego o n azw ie G en_ R an d o m _ N u m b ers i jego stan d ard o w eg o k o n k re tu (w y d ru k 6).
g e n e rio
package Gen_Randon_Nuaber3 i a f u n c t i o n Random r e t u r n P l o a t;
— R e tu rn s a random v a lu e i n th e ran g e 0 .0 . . 1 ,0 , ty p e Seed i s /
re c o rd
X, Y, Z : I n te g e r ; end r e c o r d ;
f u n c tio n C u rren t_ S eed r e t u r n Seed;
— G iv e s th e v a lu e o f th e s e e d . p ro c e d u re R e s t a r t ( R e s ta rt^ S e e d : i n Seed ) ;
— To r e s t a r t from p a r t i c u l a r s e e d s o r
— from any v a lu e s In th e ra n g e 1 . . 30_0 0 0. end Gen_Randon_Nuabers;
W y d r u k 6 a . S p e c y f i k a c j a p a k i e t u r o d z a j o w o g o
N ow y p a k ie t rod zajo w y m a n a s tę p u ją c ą sp ecy fik ację generic
p ack ag e G en _ R an d o m _ N u m b ers is tre ść ta k a ja k poprzednio en d G en_R an d o m _ N u m b ers;
a jego ciało n ie ró żn i się od poprzedniego. N ierodzajow ą w e rsję p a k ie tu tw o rzy się przez k o n k rety z ac ję:
p ac k ag e R andom —N um bers is n ew G en_R an d o m _ N u m b ers;
D zięki za p ew n ien iu te j sam ej sp e cy fik ac ji w y siłe k zw iąza
n y z p rz e k szta łc en ie m p ro g ra m u o pojed n y czy m ciągu lo
sow ym n a p ro g ra m z w ielo elem en to w y m zbiorem g e n e ra to ró w je st zm inim alizow any.
A lte rn a ty w n y m ro zw iązan iem zag ad n ien ia w ielozadanio- w ości je st um ieszczenie g e n e ra to ra w e w n ą trz z a d an ia w A -
u i t h C a le n d ar;
package body Gen_F.andora_Nunbers i s -
Sitnple_Caae : c o n s ta n t Boolean I n t e g e r 'S i z e >= 2*1;
— Sim p le Case d e te rm in e s vhicK a lg o rith m w i l l be u se d ,
— i t sh o u ld be e v a lu a te d by th e corapll<y and in consequence
— no a d d i t i o n a l overhead « i l l be p la c e d on th e ru n n in g program . S : Seed;
fu n c tio n Random r e t u r n F l o a t i s W : F l o a t;
b eg in
i f Sim ple_Case th en
S := ((171 • S.X) mod 30269, (172 • S . Y) mod 30307, (170 • S .Z ) mod 30323);
e ls e
S :» (171 * (S.X nod 177) - 2 • (S,X / 177),
• 172 • (S.Y mod 176) - 35 « (S.Y / 176), 170 • (S.Z nod 178) - 63 • (S .Z / 178) i r S.X < 0 th en
S.X : c S.X ♦ 30269;
end i f ; i r S.Y < 0 th en
S.Y :* S.Y ♦ 30307;
end i f ; i f S.Z < 0 then
S.Z :* S.Z + 30323;
end i f ; end i f ;
V 1« F lo a t(S .X )/3 0 2 6 9 .0 ♦ F lo a t(S .Y )/3 0 3 0 7 .0 ♦ F lo a t( S .Z )/3 0 3 2 3 .0 ;
r e t u r n W - F lo a t ( I n t e g e r (W - 0 . 5 ) ) ; and Random;
fu n c tio n Current_j3eod r e t u r n Seed i s beg in
r e t u r n S;
end C urren t^S eed ;
p ro ce d u re R e a ta rt (Reatart__3eed : in Seed) i3 beg in
Seed :s ( ( R e start_ 5 ee d .X - 1 ) mod 30269 * 1, ( R e start_ S e ed .Y - 1 ) mod 30307 ♦ 1, ( R e start_ S e ed .Z - 1 ) mod 30323 + 1 ) ; end R e s ta r t;
beg in
— Check t h a t I n te g e r h a s s u f f i c i e n t ran g e - - f o r th e g e n e r a to r to work a t a i l . i f I n t e g e r 'L a s t < 30323 th e n ' r a i s e C o n s tr a in t_ E r r o r ;
end i f ; •
— Check t h a t S im plejC aae g iv e a c o r r e c t « e le c t io n . R aise
— C o n a tra in t_ E rr o r in u n l ik e l y c a se t h a t Siop le_ C aae doe*
— n o t g iv e o o r r e c t d i s t i n c t i o n .
i f Sim plojC ase and th en ( I n t e g e r ’ L a s t < 5212632) then r a i s e C o n s tra in t_ E rr o r;
end i f ;
— I n i t i a l i z e th e s e e d , d e c la r e
u se C a le n d ar;
.* T : Time : * C lo ck ;
Count: I n te g e r : s I n te g e r( 3 e c o n d s (T ) /3 );
— in ra n g e 1 . . 28801, i n c r e a s e s e v a ry 3 s e o a , b e g in
S := (M onth(T), Day(T) + C ount,
In te g e r( 1 0 0 0 # (Seconds(T) - 3 * D u ra tio n (C o u n t)) ) + 2000 ) ; end;
end Gen_RandofflJiu«ibera;
W y d r u k 6 b . O s t a t e c z n a p o s t a i p r o g r a m u p o d d a n c g o k o n w e r s j l w J ^ z y k u A d a — c i a l o p a k i e t u
dzie. W tedy posiew sta je się zm ien n ą ch ro n io n ą w z a d a n iu . T a m eto d a m a je d n a k dw ie w ady. Po pierw sze, w y w o łan ie g e n e ra to ra (tj. w ejścia w zadanie) byłoby w yw o
ła n ie m p ro ce d u ry , a n ie fu n k c ji, a po d ru g ie — e fe k ty w ność g e n e ra to ra b y ła b y znacznie gorsza w sk u te k n a rz u tu zw iązanego z szeregow aniem . P o dejście p o leg ające n a u - życiu z a d a ń je s t bardzo n a tu ra ln e dla ję z y k a Occam , z a pro jek to w a n eg o dla m ik ro p ro ce so ra o n az w ie T ra n sp u te r, firm y Inm os [4], K ażd e za d an ie byłoby w y k o n y w an e przez in n y p rocesor (tra n sp u te r), a łącznie tw o rzy ły b y one jed en p ro g ra m w języku Occam.
POD SUM OW A NIE
J a k w y n ik a z pow yższych rozw ażań, istn ie je zasadnicza różnica m iędzy p ro sty m p rze k szta łc en ie m p o d p ro g ra m u a u tw o rze n iem idealnego p a k ie tu w Adzie. T a różnica w y n ik a z dużych m ożliw ości Ady, pozw alający ch n a za p ew n ie n ie w iększej fu n k cjo n aln o ści. W p rze d staw io n y m p rz y kładzie, zw iększenie fu n k cjo n aln o ści, n ieo siąg aln e przy p ro g ra m o w an iu w F o rtra n ie , polega n a m ożliw ości:
• autom atycznego w y b o ru jednego z dw óch w a ria n tó w zgodnie z w łaściw ościam i użytego k o m p u te ra,
4
• polepszenia ochrony posiew u przed n iew łaściw y m do
stępem ,
• autom atycznego, dom yślnego in ic jo w an ia posiew u dzięki użyciu ze g ara w ew n ętrzn eg o (w sposób niezależny od k o m p utera),
• tw o rzen ia ciągów w ielo k ro tn y ch p rzy za p ew n ien iu b ez
pieczeństw a w środow isku w ielozadaniow ym .
N ależy sądzić, że k o n w e rsja innych p ro g ra m ó w u ja w n i dodatkow e m ożliw ości tego ro d zaju . Je d n o je s t pew ne, że p rzy n a jm n ie j w k o n w e rsji n a języ k A da nie n ależy ocze
kiw ać u zy sk an ia d o k ład n ie ta k ie j sam ej fu nkcjonalności.
A u t o r z y w y r a ż a j ą p o d z i ę k o w a n i e z a s z c z e g ó ł o w e k o m e n t a r z e d o ty c z ą c e p i e r w s z e j w e r s j i te g o a r t y k u ł u , k t ó r e p r z y g o t o w a ł L . D . H ill, D . A . W a t t , K . S . S c o w c n i D a v id M a y p r z e d s t a w i l i u w a g i, k t ó r e r ó w n i e ż p r z y c z y n i ł y s i ę d o u l e p s z e n i a t e k s t u . D r L . D . R . C h a n d e s r l s w y k a z a ł , i e b ł ą d w i n i c j o w a n i u p o s i e w u m o ż e p o w o d o w a ć p o w s t a n i e n a d m i a r u , c o z o s t a ł o p o p r a w i o n e w o b e c n e j w e r s j i .
T ł u m a c z y ł i o p r a c o w a ł :
JA N U S Z ZA LEW SK I
L I T E K A T U R A
[1] B r i t i s h S t a n d a r d s I n s t i t u t i o n : T h e P a s c a l C o m p i l e r V a l i d a t i o n S u i t e . V e r s i o n 4.0, O c t o b e r 1983
[2] C u r r i e I . P ., P e e l i n g N . E .: M o d u l a r C o m p i l a t i o n S y s t e m s l o r H i g h L e v e l P r o g r a m m i n g L a n g u a g e s . A lg o l B u l l e t i n , N o . 48, A u g u s t 1982
[3] H ill A .: T o w a r d s a n A d a - b a s e d s p e c i f i c a t i o n a n d d e s i g n l a n g u a g e . A d a U K N e w s , V o l. 4, N o . 4, O c t o b e r 1983
[4] IN M O S L t d : O c c a m . F r e n l i c e - H a l l , E n g l e w o o d C l l f i (N J ) , 1984 [5] K n u t h D . E . : S e m i n u r a e r l c a l A l g o r i t h m s . A d d l s o n - W e s l e y , L o n d o n , 1969
[6J N u m e r i c a l A l g o r i t h m s G r o u p L t d : N A G F o r t r a n l i b r a r y . 258 B a n b u r y R o a d , O x f o r d , W ie lk a B r y t a n l a
[7] S y m m G . T „ W i c h m a n n B . A ., K o k J . , W i n t e r D . T .: G u i d e l i n e s f o r t h e d e s i g n o f l a r g e m o d u l a r s c i e n t i f i c l i b r a r i e s i n A d a . R e p o r t D IT C 28/83, N a t i o n a l P h y s i c a l L a b o r a t o r y , J u l y 1983 [8] W i c h m a n n B . A ., H i l l I . D .: A l g o r i t h m A S 183 — A n e f f i c i e n t a n d p o r t a b l e p s e u d o - r a n r l o m g e n e r a t o r . A p p l i e d S t a t i s t i c s , V o l.
31, N o . 2, 1982
[9] W i c h m a n n B . A ., H i l l I . D .: A P s e u d o - R a n d o m N u m b e r G e n e r a t o r . R e p o r t D IT C 6/82, N a t i o n a l P h y s i c a l L a b o r a t o r y , T e d d i n g - t o n , J u n e 1982.
ROMAN FABER
MICHAŁ OSTROWSKI
Instytut Informacji Naukowej, Technicznej i Ekonomicznej Warszawa
UPT — uniwersalny procesor
do redagowania tekstów dla M ERY 400
W uczelniach, in s ty tu ta c h nauk o w y ch , ja k rów nież w b iu rac h i u rzę d ach w y stę p u je p o trze b a przyg o to w y w a
nia k ró tk ic h opraco w ań tekstow ych, k tó re często m a ją złożoną budow ę w e w n ę trz n ą 1 bo g atą szatę graficzn ą. M o
gą to być ra p o rty , spraw o zd an ia, a rty k u ły , pism a, ogłosze
nia itp. Jeszcze siln iejsze potrzeb y tego ro d z a ju w y stę p u ją w śród p rac o w n ik ó w służb in fo rm ac ji n au k o w e j, gdzie n ie m al codziennym pro b lem em je s t o p racow yw anie różnego rodzaju w y d aw n ic tw in fo rm ac y jn y ch .
P rzygotow yw anie ta k ic h o p rac o w a ń tra d y c y jn y m i, m eto dam i je s t n ad zw y czaj uciążliw e. W zględy te przesądziły o podjęciu p ra c n a d o p ro g ram o w an iem a u to m aty zu ją cy m procesy technicznego red a g o w a n ia te k stu . W ich w y n ik u pow stał p a k ie t p ro g ra m ó w o n azw ie U P T (U niw ersalny
D r in ż . R O M A N F A B E R w 1972 r . u k o ń c z y ł W y d z i a ł E l e k t r o n i k i P o l i t e c h n i k i W a r s z a w s k i e j . P r a c u j e w I n s t y t u c i e I n f o r m a c j i N a u k o w e j , T e c h n i c z n e j i E k o n o m i c z n e j , g d z ie z a j m u j e s i ę p r o j e k t o w a n i e m o r a z t w o r z e n i e m m i n i k o m p u t e r o w y c h 1 m i k r o k o m p u t e r o w y c h s y s t e m ó w I n - f o r m a c y j n o - w y s z u k i w a w c z y c h .
P ro c eso r T ekstow y), przeznaczony do k sz ta łto w a n ia ty p o graficznego dow olnych tekstów , za re je stro w a n y c h n a noś
n ik u m agn ety czn y m w postaci rek o rd ó w znakow ych tw o rzących p lik i sek w en cy jn e. P a k ie t U P T u m ożliw ia o k re ś
la n ie fizycznych rozm iaró w stro n y , rozm iaró w szp alty , sp o sobu re d a g o w a n ia w iersza, podział te k stu n a rozdziały, sp o rząd zan ie spisu treśc i oraz skorow idza.
P a k ie t U P T je st e k sp lo ato w a n y n a sta n d a rd o w y m z e sta
w ie m in ik o m p u te ra MERA-400 z je d n o stk ą pam ięci d ys
kow ej.
Do p rz e d sta w ia n ia w yników p rz e tw a rz a n ia m oże być u - żyw any m o n ito r ek ran o w y , je d n a k zasadniczym u rzą d ze
n ie m w yjściow ym , służącym do ty c h celów, je st d ru k a rk a m ozaikow a. N ośnik m agnetyczny, n a k tó ry m z a re je s tro w a ne są p rz e tw a rz a n e pliki, sta n o w ią k a s e ty p am ięci dy sk o -
M g r In ż . M IC H A Ł O S T R O W S K I w 1972 r . u k o ń c z y ł W y d z i a ł E l e k t r o n i k i P o l i t e c h n i k i W a r s z a w s k i e j o s p e c j a l n o ś c i m a s z y n y m a t e m a t y c z n e . P r a c o w a ł w O ś r o d k u I n f o r m a t y k i T e c h n i c z n e j i P r z e t w a r z a n i a D a n y c h w O L P iT . Z a j m o w a ł s i ę p r o b l e m a t y k ą z w i ą z a n ą z o r g a n i z a c j ą b a z d a n y c h 1 a u t o m a t y z a c j ą p r o c e s ó w e d y c y j n y c h w z a s t o s o w a n i a c h d o a u t o m a t y z a c j i p r a c y s ł u ż b i n f o r m a c y j n y c h r e s o r t u ł ą c z n o ś c i i a u t o m a t y c z n e j e d y c j i s p i s ó w t e l e f o n i c z n y c h . O d 1984 r . p r a c u j e w I n s t y t u c i e I n f o r m a c j i N a u k o w e j , T e c h n i c z n e j l E k o n o m i c z n e j . Z a j m u j e s i ę z a s t o s o w a n i a m i m i k r o k o m p u t e r ó w d o c e l ó w i n f o r m a c y j n y c h .
5
w ej. P lik b ędący p rze d m io te m p rz e tw a rz a n ia o k reśla n y je st m ia n em p lik u źródłow ego, zaś p lik za w ie ra ją c y te k s t zred ag o w an y — naz w ą p lik u w ynikow ego. P odczas p rz e tw a rz a n ia k o rzy sta się z sy stem u operacy jn eg o S O M 3 oraz e d y to ra tekstow ego UPD.
P a k ie t został zrealizow any \y języ k u F O R TR A N IV, co pow inno um ożliw ić ła tw e przenoszenie p a k ie tu n a inne k o m p u te ry w yposażone w tra n s la to r tego języka.
Istn ie je m ożliw ość d ru k o w a n ia znaków a lfa b e tu p o lsk ie
go w plik u w ynikow ym . Z n a k i te n ależy w p lik u źródło
w y m zakodow ać w p o staci o kreślonych ciągów d w u zn a k o w ych, złożonych z lite ry i cyfry. O dpow iedni znak zostaje u tw o rzo n y przez w y d ru k o w a n ie w p ierw szej kolejności zn a k u a lfa b e tu łacińskiego, a n a s tę p n ie n a d ru k o w a n ie od
pow iedniego elem e n tu u zu p ełn iająceg o (takiego ja k : p rz e cinek, k re sk a ukośna i apostrof).
DYREKTYW Y
P ro ces red a g o w a n ia te k stu za pom ocą p a k ie tu U P T je st opisyw any d y rek ty w a m i. S łu żą one do p rze k aza n ia w a r tości nu m ery czn y ch p a ra m e tró w o k reśla ją cy c h sposób r e d ag o w a n ia te k stu , napisów , ja k rów nież do u sta le n ia tr y bów red ag o w an ia.
D y re k ty w y m a ją n a s tę p u ją c ą budow ę:
: <nazwa> ( p a r a m e tr ,) ... ( p a r a m c tr n)
D y re k ty w a rozpoczyna się z n a k ie m d o su n ię ty m do le w ego m arg in esu . N azw a (w języ k u angielskim ) służy do zid en ty fik o w an ia d y re k ty w y p rzez procesor. D opuszcza się sk ra c a n ie n az w d y rek ty w . Po n azw ie n a s tę p u je g ru p a p a ra m e tró w oddzielonych od siebie spacjam i. N iek tó re z p a ra m e tró w m a ją być- p om inięte. Z o sta n ą w ted y uży te w a r tości dom yślne ty c h p a ra m e tró w . D y re k ty w y d efin io w a n ia try b ó w re d a g o w a n ia n ie z a w ie ra ją p ara m e tró w .
F U N K C JE P A K IE TU
R edagow anie ro zm iaró w stro n y polega n a zdefin io w an iu fo rm a tu stro n y . M ożliwe je s t o k reśle n ie długości stro n y w y ra żo n e j liczbą w ierszy o ra z szerokości stro n y — ja k o liczby znaków w w ierszu. M a k sy m aln a długość stro n y n ie je st ograniczona, zaś m a k sy m a ln a szerokość w ynosi 170 znaków (stan d ard o w o : 66 w ierszy i 85 znaków ). W ram a ch stro n y m ożna d efiniow ać ro zm iary sz p alty poprzez d efin i
cję w ielkości m arginesów . M arginesy górny i d olny są o k re śla n e jako liczba p u sty c h w ierszy (stan d a rd o w a w a r
tość m a rg in esu górnego w ynosi 7 w ierszy , zaś m a rg in esu dolnego — 5 w ierszy). M arginesy lew y i p ra w y n ie są rozróżnione, a w ięc n a d a je się im tę sam ą w arto ść , o k re ś
lo n ą liczbą sp acji (stan d a rd o w a w arto ść dla ty c h m a rg in e sów w ynosi 7 spacji). S zp a lta te k s tu m oże być podzielona n a d w ie k o lum ny. O dstęp pom iędzy n im i je st rów nież tra k to w a n y ja k o m argines, k tó reg o w ielkość może być d efin io w a n a (stan d a rd o w a w arto ść tego m a rg in esu w ynosi 5 spacji). M arginesy boczne m ogą być tym czasow o p rz e su w an e zarów no w lewo, ja k i w p raw o . U m ożliw ia to tw o rzen ie w cięć w tekście, bąd ź lo k a ln e w y su w an ie te k s tu poza m argines.
M arginesy górny oraz dolny m ogą być za o p atrz o n e w jednow ierszow e n ap isy um ieszczone p o środku odp o w ied n ie
go m arg in esu . W p rz y p a d k u m a rg in esu górnego n ap is te n nosi naz w ę nag łó w k a, zaś w -wypadku m a rg in e su dolnego
— no tk i. Z arów no nagłów ek, ja k i n o tk a m ogą być po
dzielone n a trz y n ap isy . P ierw szy z nich zostanie w ówczas d o su n ię ty do lewego m arg in esu , d ru g i n a p is zo stan ie u m ie
szczony pośro d k u w iersza, zaś trz e c i — zo stan ie d osunięty do m a rg in e su p raw ego. N a żądanie, n ag łó w ek b ąd ź n o t
k a m ogą być au to m aty cz n ie zao p atrzo n e w n u m e ry stron.
R edagow anie w iersza polega n a o k re śle n iu sposobu p rz e sy ła n ia słów w ierszy p lik u źródłow ego do w ierszy p lik u w ynikow ego. U żyw ane do tego d y re k ty w y są podp o rząd k o w an e d y re k ty w o m re d a g o w a n ia stro n y w ty m sensie, że fo rm a t stro n y n ie m oże być zm ieniony za pom ocą d y re k ty w red a g o w a n ia w iersza. W yróżnia się dw ie g ru p y om a
w ian y c h d y re k ty w : d y re k ty w y g e n e ra ln e i d y re k ty w y lo k aln e.
W ykaz d y re k ty w p a k ie tu U P T
A D JU S T — try b p rze sy łan ia słów BM A R G IN [n] — dolny m arg in es
B R EAK — p rz e rw a n ie w y p e łn ia n ia w iersza CM ARGIN [m] — o d stę p m iędzy k o lu m n a m i COLUMNS [i] — liczba kolu m n
D EFIN E ( n a z w a ) ( te k s t ) — zdefin io w an ie sym bolu DDOWN [tekst] — u tw o rze n ie n ag łó w k a p u n k tu D D SU PPR ESS [tekst] — u tw o rze n ie n ag łó w k a D IN D EN T L m l m2 — w cięcie poziom u L DLEVEL [I] — o k reśle n ie poziom u nag łó w k a D L IM IT 1 — ogran iczen ie n ag łó w k ó w w indeksie D N EX T [tekst] — k o le jn y nag łó w ek p u n k tu D N SU PPR ESS [tekst] — k o le jn y nagłów ek D RESET [n] [m] — początkow y n u m e r p u n k tu D S K IP L n l n2 — odstępy n ag łó w k a poziom u L D U P [k] — zm niejszenie n u m e ru poziom u nag łó w k a EFO O TER /te k s tl/te k s t2 /tc k s t3 / — n o tk a stro n y p a
rzy ste j
EH EA D ER /te k stl/te k s t2 /te k st3 / — n ag łó w e k stro n y p arz y stej
E JE C T — now a stro n a
F IL L — try b p rze sy łan ia słów F O O TER /te k s tl/te k s t2 /te k s t3 / — n o tk a H EAD ER /te k s tl/te k s t2 /te k s t3 / — n ag łó w e k IN D EN T [m] — w cięcie te k s tu
IN D EX ( n a p is ) — te rm in do skorow idza LEN G TH [n] — długość stro n y
NEED n — b lo k n ag łó w k a N F IL L — try b p rze sy łan ia słów
O FO O TER /te k s tl/te k s t2 /te k s t3 / — n o tk a stro n y n ie p arz y ste j
O IIEADER /te k s tl/te k s t2 /tc k s l3 / — nag łó w ek stro n y n ie p a rz y ste j
P A R A G R A P H [m] [n] _ a k a p it Q U IT — p rze rw a n ie red a g o w a n ia R IN D EN T [m] — w cięcie z p ra w e j stro n y
RU Ń D ENT [m] — zm niejszenie p raw ego m arginesu S K IP [n] — p u ste w iersze
S M AR G IN [m] — m a rg in esy boczne SPA C E [u] — in te rlin ia
TA B ( z n a k ) 1, 12 ... Ij — t a b u l a c j a
T M A R G IN [n] — m arg in es górny T O FC — ż ą d an ie spisu t r e ś c i
U N DENT [m] — zm n iejszen ie lew ego m a rg in esu W ID TH [m] — szerokość stro n y
) ( te k s t ) — c e n t r o w a n i e te k stu + ( te k s t ) — p rze słan ie V e r b a t i m
♦ ( te k s t) — k o m e n ta rz
/tc k s tl/tc k s t2 /te k s l3 / — ro zrzu cen ie te k s tu w w ierszu
# — n u m e ro w a n ie stro n
D y re k ty w y g en e ra ln e o k re śla ją zasady red a g o w a n ia w ie r
sza od m o m en tu użycia d y re k ty w y do je j odw o łan ia. P rz e sy ła n ie słów z p lik u źródłow ego do w ierszy p lik u w y n ik o w ego rea lizo w a n e je st sta n d ard o w o w te n sposób, że do każdego w iersza p lik u w ynikow ego p rz e sy ła n a je s t n a j
w iększa (m ieszcząca się) liczba słów. P om iędzy w y razam i um ieszczana je st je d n a sp acja, zaś po kropce, śred n ik u , w y k rz y k n ik u , zn a k u za p y ta n ia i p rze cin k u — dw ie spacje.
J e ś li o sta tn ie słowo danego w iersz a nie je st d o su n ię te do p raw ego m arg in esu , w w iersz u um ieszcza się d odatkow e spacje, k tó re zw ie lo k ro tn ia ją ju ż istn iejące sp a cje . W te n sposób osiąga się d o su w an ie te k stu do praw ego m arg in esu .
K o lejn y try b p rze sy łan ia słów ró żn i się od opisanego tym , że czynności w y p e łn ia n ia w iersz a p lik u w ynikow ego kończone są z chw ilą um ieszczenia w n im n ajw ięk sz ej (m ieszczącej się) liczby słów. N ie w y k o n u je się w ty m w y p a d k u d o su w an ia do praw ego m arg in esu .
O sta tn i ze zdefiniow anych sposobów p rze sy łan ia słów polega n a ty m , że w iersze p lik u źródłow ego są p rz e sy ła n e do p lik u w ynikow ego z zach o w an iem sw ej postaci. R eali
zow ana je st n a to m ia st ta b u la c ja , co je st szczególnie d o godne p rz y b u d o w a n iu ta b e l w tekście.