138d)e)f)g)h)i)J)k)1)m)n)van Wijngaarden, et al.op ~ plusab, + : = ~ = (ref L int a, L int b) ref L int : a : = a + b ;op ~ plusab, +: = ~ = (ref L real a, L real b) ref L real : a : = a + b ;op ~ plusab, +: = ~ = (ref L compl a, L compl b) ref L compl : a := a + b ;op ~ timesab, x:=, ,: = ~ = (ref L int a, L int b) ref L int : a : = a x b ;op ~ timesab, x: =, ,: = ~ = (ref L real a, L real b) ref L real : a : = a x b ;op ~ timesab, x: =, ,: = ~ = (ref L compl a, JL compl b) ref L compl :a:=axb;op ~overab, ÷:=, %: =~ = (ref L int a, L int b) ref L int : a : = a ÷ b ;op ~modab, +x: =, ÷,: =, %x: =, %,: = ~ =(ref L int a, L int b) ref L int : a : = a +x b ;op ~ divab, /: = ~ = (ref L real a, L real b) ref L real : a : = a / b ;op ~ divab, /: = ~ = (ref L compl a, L compl b) ref L compl : a : = a / b ;op Q = (ref L real a, L int b) ref L real : a Q L real (b) ;ALGOL <strong>68</strong> Revised Report 139h) proc L arcsin = (L real x) L real: c if abs x
140 van Wijngaarden, et al.e)op up = (sama edsger) void :pr s tart of incompatible part prif ref int dijkstra = F of edsger; (dijkstra +: = 1) _> Ithencall processes are resumed {2.1.4.3.g} which are haltedbecause the integer referred to by the name yielded by'dijkstra' was smaller than one cflpr finish of incompatible part pr ;{For the use of down and up, see E.W. Dijkstra, Cooperating SequentialProcesses, contained in Programming Languages, Genuys, F. (ed.),London etc., Academic Press, 19<strong>68</strong>: see also 11.12.}10.3. Transput declarations{"So it does!" said Pooh. "It goes in!""So it does!" said Piglet. "And it comes out!""Doesn't it?" said Eeyore. "It goes in and out likeanything."Winnie-the-Pooh,A.A. Milne.}{Three ways of "transput" (i.e., input and output) are provided by thestandard-prelude, viz., formatless transput {10.3.3), formatted transput(10.3.5} and binary transput (10.3.6).}10.3.1. Books, channels and files{"Books", "channels" and "files" model the transput devices of thephysical machine used in the implementation.}10.3.1.1. Books and backfiles{aa) All information within the system is to be found in a number of"books". A book (a) is a structured value including a field text of the modespecified by flextext (b) which refers to information in the form ofcharacters. The text has a variable number of pages, each of which mayhave a variable number of lines, each of which may have a variablenumber of characters. Positions within the text are indicated by a pagenumber, a line number and a character number. The book includes a fieldlpos which indicates the "logical end" of the book, i.e., the position up towhich it has been filled with information, a string idf, which identifies thebook and which may possibly include other information, e.g., ownership,and fields putting and users which permit the book to be opened(10.3.1.4.d) on more than one file simultaneously only if putting is notpossible on any of them.ALGOL <strong>68</strong> Revised Report 141bb) The books in the system are accessed via a chain of backfiles.The chain of books available for opening (10.3.1.4.dd) is referenced bychainbfile. A given book may be referenced by more than one backfile onthis chain, thus allowing simultaneous access to a single book by morethan one process {10.2.4}. However such access can only be for reading abook, since only one process may access a book such that it may be "written to (aa). The chain of books which have been locked {10.3.1.4.o) isreferenced by lockedbfile.cc) Simultaneous access by more than one process to the chain ofbackfiles is prevented by use of the semaphore bfileprotect, which providesmutual exclusion between such processes.dd) Books may be created (e.g., by input) or destroyed (e.g., afteroutput) by tasks (e.g., the operating system) in the system-task.list(10.4.2), such books being then added to or removed from the chain ofbackfiles.}a) mode .~ book =struct (flextext text,pos lpos ¢ logical end of book ¢,string idf ¢ identification ¢,boolputting ¢ true if the book may be written to ¢,int users ¢ the number of times the book is opened ¢) ;b) mode .~ text = ref[ ] [ ] [ ]char,mode .~ ffaxtext = ref flex [ ] flex [ ] flex [ ] char;c) mode .~ pos = struct (int p, l, c) ;d} prio .~ beyond = 5,op beyond = (pos a, b) bool :if p of a < p of b then falseelif p of a > p of b then trueelif l of a < / of b then falseelif l of a > l of b then trueelse c of a > c of bfl;e)f)g)h)mode .~ bflle = struct (ref book book, ref bflle next) ;ref bflle .~ chainbfile := nil;ref bflle .~ lockedbfile := nil;sema .~ bfileprotect = (sema s; F of s := PRIM10.3.1.2. Channelsint : = 1; s);{aa) A "channel" corresponds to one or more physical devices {e.g., acard reader, a card punch or a line printer, or even to a set up in nuclear
- Page 2 and 3:
van Wijngaarden, et al.1.1.4.2. Par
- Page 4:
Acknowledgements{Habent sua fata li
- Page 8 and 9:
14 van Wijngaarden, et al.0.3.4. Mo
- Page 10 and 11:
. . . . . . . 4 " ' 0 . . . . . . .
- Page 12 and 13:
22 van Wijngaarden, et al.• let P
- Page 14 and 15:
26 van Wijngaarden, et al.{Since so
- Page 16 and 17:
30 van Wijngaarden, et aLloperandfo
- Page 18 and 19:
34 van Wijngaarden, et al.j) WHETHE
- Page 20 and 21: 38 van Wijngaarden, et al.A protono
- Page 22 and 23: 42 van Wijngaarden, et al.d) If N i
- Page 24 and 25: 46 van Wijngaarden, et al.c) {There
- Page 26 and 27: 50 van Wijngaarden, et al.c) The ph
- Page 28 and 29: 54 van Wijngaarden, et al.3.1.1. Sy
- Page 30 and 31: 58 van Wijngaarden, et al.where (RO
- Page 32 and 33: 62 van Wijngaarden, et al.1) SOlD N
- Page 34 and 35: 66 van Wijngaarden, et al.ALGOL 68
- Page 36 and 37: 70 van Wijngaarden, et el.For each
- Page 38 and 39: 74 van Wijngaarden, et al.If 'MODE"
- Page 40 and 41: 78 J van Wijngaarden, et al.C) SECO
- Page 42 and 43: 82 van Wijngaarden, et al.ALGOL 68
- Page 44 and 45: 86 van Wijngaarden. et al.ALGOL 68
- Page 46 and 47: 90 van Wijngaarden, et al.5.4.4.1.
- Page 48 and 49: 94van Wijngaarden, et al.ALGOL 68 R
- Page 50 and 51: 98 van Wijngaarden, et al.Assignati
- Page 52 and 53: 102 van Wijngaarden, et at.{A nest,
- Page 54 and 55: 106 van Wijngaarden, et al.'HEAD's
- Page 56 and 57: 110 van Wijngaarden, et al.ALGOL 68
- Page 58 and 59: 114van Wijngaarden, et al.ALGOL 68
- Page 60 and 61: 118 van Wijngaarden, et al.ALGOL 68
- Page 62 and 63: 122 van Wijngaarden, et al.style ii
- Page 64 and 65: 126 van Wijngaarden, et al.b) The c
- Page 66 and 67: 130van Wijngaarden, et al.ALGOL 68
- Page 68 and 69: 134van Wijngaarden, et al.ALGOL 68
- Page 72 and 73: 142 van Wijngaarden, et al.physics
- Page 74 and 75: 146 van Wijngaarden, et al.gg) On s
- Page 76 and 77: 150van Wijngaarden, et al.ALGOL 68
- Page 78 and 79: 154/van Wijngaarden, et al.ALGOL 68
- Page 80 and 81: 158 van Wijngaarden, et el.fi;ref p
- Page 82 and 83: 162van Wijngaarden, et al.ALGOL 68
- Page 84 and 85: 166van Wijngaarden, et al.ALGOL 68
- Page 86 and 87: 170/van Wijngaarden, etal.ALGOL 68
- Page 88 and 89: 174J)K)L)M)N)O)P)a)b)c)d)e)van Wijn
- Page 90 and 91: 178/van Wijngaarden, et al.ALGOL 68
- Page 92 and 93: 182 van Wijngaarden, et al.• let
- Page 94 and 95: 186van Wijngaarden, et al./ALGOL 68
- Page 96 and 97: 190 van Wijngaarden, etal.composed
- Page 98 and 99: 194h)i)J)van Wijngaa(rden, et al.pr
- Page 100 and 101: 198 van Wijngaarden, et al.¢ strin
- Page 102 and 103: 202tvan Wijngaarden, et al.ALGOL 68
- Page 104 and 105: 206 van Wijngaa~den. et al.10.3.6.1
- Page 106 and 107: 210 van Wijngaarden, et al.!ALGOL 6
- Page 108 and 109: 214 van Wijngaarden, et al.inoperat
- Page 110 and 111: 218fvan Wijngaarden, et al.¢ move
- Page 112 and 113: 222 van Wijngaarden, etaL{overflow}
- Page 114 and 115: 226 van Wijngaarden, et al.ALGOL 68
- Page 116 and 117: 230max int 10.2.1.cmax real 10.2.l.
- Page 118 and 119: 234 van Wijngaarden, et al.ALGOL 68