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