1program errs(input,output,junk,locked); 2 3label 99; 4 5type 6etype = (ECHR, EHALT, ENILPTR, ECASE, EOUTOFMEM, ECTSNG, 7ESTLIM, EARGV, EPACK, EUNPACK, EASRT, ELLIMIT, ETRASHHEAP, EPASTEOF, 8EREFINAF, ENOFILE, ENAMESIZE, EBADINUM, EBADFNUM, ENUMNTFD, ENAMRNG, 9EFMTSIZE, ESEEK, ECREATE, EREMOVE, EOPEN, EREADIT, EWRITEIT, ESQRT, 10ELN, ERANGE, ESUBSC, EGOTO, ECLOSE, EWRITE, ECTLWR, ECTUPR, xxx); 11biggie = array[1..15000] of integer; 12 13var 14ch :char; 15chs :alfa; 16ch1 :array[1..10] of char; 17ptr, ptr1 :^char; 18ptr2 :^biggie; 19junk, locked, other :file of char; 20variant :record 21 case boolean of 22 true:(val :1..100); 23 false:(name :etype) 24 end; 25s :set of 1..4; 26i :integer; 27r :real; 28err :etype; 29 30begin 31writeln('Want a list of error names?'); 32readln(ch); 33if ch = 'y' then begin 34 for err:=ECHR to pred(xxx) do begin 35 write(err:15); 36 if ord(err) mod 5 = 4 then 37 writeln; 38 end; 39 writeln; 40 end; 41writeln('enter an error name'); 42readln(err); 43if err in [ESEEK, EGOTO, ECLOSE, EWRITE] then begin 44 writeln(err, ': error cannot be simulated'); 45 goto 99; 46 end; 47case err of 48ECHR: ch:=chr(128); 49EHALT: halt; 50ENILPTR: ch:=ptr^; 51ECASE: case 4 of 1:; end; 52EOUTOFMEM: while true do begin 53 new(ptr2); 54 writeln('alloc successful'); 55 end; 56ECTLWR: begin 57 i:=0; 58 s:=[i..2]; 59 end; 60ECTUPR: begin 61 i:=5; 62 s:=[1..i]; 63 end; 64ECTSNG: begin 65 i:=0; 66 s:=[i]; 67 end; 68ESTLIM: stlimit(0); 69EARGV: argv(100,chs); 70EPACK: pack(ch1,2,chs); 71EUNPACK: unpack(chs,ch1,2); 72EASRT: assert(false); 73ELLIMIT: begin 74 linelimit(output,1); 75 writeln('This only should print'); 76 writeln; 77 writeln('ERROR'); 78 end; 79ETRASHHEAP: begin 80 new(ptr); 81 ptr1:=ptr; 82 dispose(ptr1); 83 dispose(ptr); 84 end; 85EPASTEOF: begin 86 rewrite(junk); 87 reset(junk); 88 get(junk); 89 get(junk); 90 write(junk^); 91 end; 92EREFINAF: ch:=junk^; 93ENOFILE: ch:=other^; 94ENAMESIZE: rewrite(junk, 95'thisisaverylongandconvolutedfilenamewhichexceedsalllimitsofreasonablenessandgoodtaste'); 96EBADINUM: begin 97 writeln('Enter a letter'); 98 read(i); 99 end; 100EBADFNUM: begin 101 writeln('Enter a letter'); 102 read(r); 103 end; 104ENUMNTFD: begin 105 writeln('Enter your name'); 106 read(err); 107 end; 108ENAMRNG: begin 109 variant.val:=100; 110 writeln(variant.name); 111 end; 112EFMTSIZE: begin 113 i:=-1; 114 writeln(1.0:i); 115 end; 116ECREATE: rewrite(locked); 117EREMOVE: remove('none'); 118EOPEN: reset(locked); 119EREADIT: read(output,ch); 120EWRITEIT: write(input,ch); 121ESQRT: r:=sqrt(-1.0); 122ELN: r:=ln(0); 123ERANGE: ch:=succ(chr(127)); 124ESUBSC: ch:=ch1[127 + 1]; 125end; 126writeln('*** ERROR NOT DETECTED ***'); 12799:end. 128