xref: /original-bsd/usr.bin/pascal/pdx/test/pcerror.p (revision c3e32dec)
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