xref: /original-bsd/old/dbx/tests/pc/pcerror.p (revision cf2124ff)
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