194h)i)J)van Wijngaa(rden, et al.proc .~ get insertion = (ref file f, [ ] sinsert si) void :begin set read mood (f);for k to upb sidocase sa of si [k] in(char a): alignment (f, rep of si [k], a, true),(string s):(char c;to rep of si [k]dofor i to upb sdo check pos (f); get char (f, c);(c~s[i]I (" (char error mended off)(f, c:= s [i])l undefined);set read mood (f))odotVodend;esacproc .~ alignment = (ref file f, int r, char a, bool read) void :if a = "x" then to r do space (f) odelif a = "y" then to r do backspace (f) odelif a = "l" then to r do newline (f) odelif a = "p" then to r do newpage (f) odcilia = "k" then set char number (f, r)elif a = "q"then to rdoif readthen char c; check pos (f); get char (f, c);(c ~ blankI (" (char error mended off) (f, c : = blank)I undefined); set read mood (f))else check pos (f); put char (f, blank)fiodfl;proc .~ do fpattern = (rat file f, fpattern fpattern, bool read) void :begin format pf;[1 : upb (i of fpattern) ] sinserl si;(staticize insertion (i of fpattern, si),pf : = pf of fpattern);(read l get insertion (f, si) I put insertion (f, si));k)ALGOL <strong>68</strong> Revised Report 195ref int forp = forp of f;ref flex [ ] piece aleph = F of format off;int m = upb aleph, n = upb (F of pf);[1 : m + n ] plece c; c[1: m] :=aleph;c[m+ l : m+n] :=Fofpf;aleph := c; bp of aleph [m + 1 ] := forp;forp : = m + l ; cp of aleph [forp ] :=0;count of aleph [forp ] := 1;for i from m + l to m + ndofor j to upb c of aleph [i]docase (c of aleph [ i ]) [j ] in(collitem cl):(c of aleph [ i]) [j] :=collitom (il of cl, rep of cl, p of cl + m, i2 of cl)esacododend;proc .~ associate format = (rat file f, formal format) void :beginformat off :=c a newly created name which is made to refer to the yieldof an actual-format-declarer and whose scope is equal tothe scope of the value yielded by 'format' c:= format;forp off := heap int : = 1;cpof(Fofformatoff) [1] := 1;count of (F of format of f) [ 1 ] : = 1;bpof (F of format off) [1 ] := 0end;10.3.5.1. Formatted outputa) proc putt = (rot file f, [ ] union (outtype, format) x) void :if opened off thenfor k to upb xdo case set write mood (f); set char mood (f); x [k] in(format format): associate format (f, format),(ou,ype at):begin intj : = O;plcture picture, [ ] simplout y = straightout at;while (j +: = I)
196 van Wijngaarden, et al.set write mood (f);[1 : upb (i of picture) ] sinsert sinsert;case p of picture in(pattern pattern):begin int rep, sfp : = 1;[1 : upb (frames of pattern)] shame sframes;(staticize frames (frames of pattern, s frames),staticize insertion (i of picture, sinsert));string s;op ? = (string s) bool :¢ true if the next marker is one of the elements of's' and false otherwise ¢if sfp > upb sframesthen falseelse shame sf = sframes [ sfp ];rep : = rep of sf;if char in string (marker of sf, Ioc int, s)then sfp +: = 1; trueelse falseflfl;op ? = (char c) bool : ? string (c);proc int pattern = (ref bool sign mould) int :tint I : = O;while ? "zuv" do (rep >_ 01 l +: = rep) od;sign mould := ? "+-";while ? "zd" do (rep >_0] l +:= rep) od; l);~ proc edit Lint = (LInt i) void :(bool sign mould; lnt l:= int pattern (sign mould);string t = subwhole (abs i, l);if char in string (errorchar, Ioc int, t) v l = 0v . sign mould ^ i < L 0then incomp : = trueelse t plusto s;(l - upb t) x "O" plusto s;(sign mould I (i < i, p I ..... I "+") plusto s)n)#;Tproc edit L real = (L real r) void :(intb := O, a := O, e := O, exp := O, Lrealy := abs r,bool sign1, string point : = "";b : = intpattern (sign1);(.9 "."1 a : = int pattern (Ioc bool); point : = ".'9;if .9 "e"then L standardize (y, b, a, exp);fl;ALGOL <strong>68</strong> Revised Reportedit int (exp);"10' plusto sstring t = sub fixed (y, b + a + (a ~ 01 1 10), a); Iif char in string (errorchar, Ioc int, t) v a + b = 0v . signl ^ r < L O .then incomp : = trueelse t [ : b ] + point + t [ b + 2: ] plusto s;(b + a + (a ~ 0 ] 11 0 ) - upb t) x "0" plusto s;(sign11 (r < L 01 ..... 1% ") plusto s)fl)~;proc edit L compl = (L compl z) void"(while - ? "i" do sfp +: = 1 od; edit L real (ira z);".L " plusto s; sfp := 1; edit L real (ra z))~;~proc edit L bits = (L bits lb, int radix) void"(Lint n : = abs lb; ? "r"; int I : = int pattern (Ioc bool);while dig char (S (n rood K radix)) plusto s;n +: = Kradix; n ~ L 0dO skip od;If upb s
- 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 70 and 71: 138d)e)f)g)h)i)J)k)1)m)n)van Wijnga
- 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 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