home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Best of the Best
/
_.img
/
02018
/
st17.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1987-08-08
|
57KB
|
1,512 lines
program Statistik;
Type astring = string[80];
Eingabeart=(Urli,Haeufigk2);
sort_liste = array[1..300] of real;
Satz1=Record
Mnam:String[9];
Udat:array[1..300] of real;
anz_zeile:integer;
end;
Satz2=Record
g:char;
Hnam:array[1..2] of String[9];
Hdat:array[1..2,1..23] of real;
ahi:array[1..23,1..23] of real;
anz_sp,anz_ze:integer;
end; {von Satz2}
label beg1;
var nr1,nr2,et,OK,row,col,anz,e1,j,k,p,wnr,ior,ende,a_sp,drive:integer;
Eart:Eingabeart;
s1:array[1..15] of Satz1;
s2:Satz2;
dat1:file of Satz1;
dat2:file of Satz2;
rahmen1,rahmen2,rahmen3,rahmen4,wstr,hstr,kommx:astring;
sor1,sor2:sort_liste;
liste,e_a,frg,grup,hfrg:char;
wort1:string[20];
drv,E_Csr:string[11];
titelz:string[50];
DatIO,Drivename:string[40];
erw:string[4];
lr,l_sp,e_sp,l_ze,e_ze,ak_nr,ak_ze,ak_sp,ac:integer; {Variablen für Scrollen}
erfanz,durchlauf,mnr,slaz,laz,l_esp,cur_sp,cur_ze,uab,abnr,maxanz:integer;
Stfehler,umwa,verbess,eingeben:boolean;
nenner,ar,br,sresi,ydsum,xsum,ysum,xsumq,xysum,Ewert,yari,xari,xgeo:real;
xhar,xvari1,xvari2,xstand1,xstand2,yvari1,yvari2,ystand1,ystand2:real;
klw,grw,spw,medi,cova,covxy1,covxy2,rpear,rako,conti,rpar,rbipar,mpar:real;
Matr:array[1..15,1..15] of real;
Mmat:array[1..10,1..20] of real;
pxy,mulma:array[1..10] of real;
nr:array[1..10] of integer;
const t11='╔═════╦';
t12='═══════════╤';
t13='═══════════╗';
t14='║ ║';
t15=' │';
t16=' ║';
t17='╟─────╫';
t18='───────────┼';
t19='───────────╢';
t20='╚═════╩';
t21='═══════════╧';
t22='═══════════╝';
{$I typedef.sys}
{$I graphix.sys}
{$I kernel.sys}
{$I windows.sys}
{$I Twindow.inc}
procedure fdisplay(var s: astring ; var r,c : integer);
begin
INLINE(
$8B/$5E/$04/$8B/$3F/$4F/$8B/$5E/$08/$8B/$07/$48/$8B/$5E/$0C/$32/$ED/$8A/$0F/
$80/$F9/$00/$74/$40/$C4/$76/$0C/$46/$BB/$40/$00/$8E/$C3/$26/$F7/$26/$4A/$00/
$03/$F8/$D1/$E7/$26/$8B/$16/$63/$00/$83/$C2/$06/$B8/$00/$B8/$26/$8B/$1E/$10/
$00/$81/$E3/$30/$00/$83/$FB/$30/$75/$03/$B8/$00/$B0/$8E/$C0/$EC/$A8/$01/$75/
$FB/$FA/$EC/$A8/$01/$74/$FB/$A4/$47/$E2/$F1/$FB)
end;
procedure Farbwahl(v,h: integer);
begin
textcolor(v);textbackground(h);
end;
procedure CRdelay(n: real);
var i:real;
ch:char;
quit:boolean;
begin
i:=0;
ch:=' ';
repeat
i:=i+1;
quit:=false;
if keypressed then
begin
read(kbd,ch);
quit:=(ch=^C);
if (ch=^[) and keypressed then
begin
read(kbd,ch);
quit:=(ch='D');
ch:=' ';
end;
end;
if quit then
begin
leavegraphic;
halt;
end;
until (ch=^M) or (i>=n);
end;
procedure waitreturn(n: real);
begin
write(' Weiter mit <RETURN> = ',#17,#196,#217);
CRdelay(n);
end;
procedure Stern(x,y:integer);
begin
x:=WindowX(x);
y:=WindowY(y);
SetWindowModeOff;
DrawStar(x,y,2);
SetWindowModeOn;
end;
procedure ClearEol(i:integer);
begin
gotoxy(1,i);
write(' ');
end;
procedure DefineWindowIBM(i,X1,Y1,X2,Y2:integer);
begin
DefineWindow(i,Trunc(X1/79*XMaxGlb+0.001),Trunc(Y1/199*YMaxGlb+0.001),
Trunc(X2/79*XMaxGlb+0.5),Trunc(Y2/199*YMaxGlb+0.5));
end;
procedure E_Fehler(ft:astring);
begin
Open_Window(3,10,10,70,14,14,5,' Fehlermeldung ');
gotoxy(3,2);write(#7,ft);
delay(4000);Close_Window(3);Farbwahl(0,7);
end;
procedure Tab_eingeb(hw,x,y:integer);
begin
repeat read(kbd,frg);
if frg in ['-','.','0'..'9',#8] then begin
gotoxy(x+ac,y);
if (ac>0) and (frg=#8) then begin
Farbwahl(7,4);ac:=ac-1;gotoxy(x+ac,y);write(' ');
gotoxy(x+ac,y);Farbwahl(0,7);
delete(wort1,length(wort1),1);
end;
if (frg<>#8) and (ac>=0) then begin
gotoxy(x+ac,y);ac:=ac+1;
if ac>hw then Exit;
write(frg);wort1:=wort1+frg;
end;
end; {of if}
until frg=^M;
end;
procedure Sortier(var liste:sort_liste; a,e:integer);
var v,h:real;
l,r:integer;
begin
l:=a;r:=e;
v:=liste[trunc((a+e)/2)];
repeat
while liste[l] < v do l:=l+1;
while v < liste[r] do r:=r-1;
if l <= r then
begin
h:=liste[l];liste[l]:=liste[r];liste[r]:=h;
l:=l+1;r:=r-1;
end;
until l > r;
if a < r then Sortier(liste,a,r);
if l < e then Sortier(liste,l,e);
end; { von Sortier}
procedure P_korr(mer1,mer2:integer);
var xvari,yvari:real;
i:integer;
begin
Stfehler:=true;
cova:=0;xari:=0;yari:=0;for i:=1 to laz do begin
xari:=xari+s1[mer1].Udat[i];yari:=yari+s1[mer2].Udat[i];
end;
xari:=xari/laz;yari:=yari/laz;
xvari:=0;yvari:=0;for i:=1 to laz do begin
xvari:=xvari+Sqr(s1[mer1].Udat[i]-xari);yvari:=yvari+Sqr(s1[mer2].Udat[i]-yari);
end;
xvari1:=xvari/laz;yvari1:=yvari/laz;
xstand1:=sqrt(xvari1);ystand1:=sqrt(yvari1);
for i:=1 to laz do cova:=cova+(s1[mer1].Udat[i]*s1[mer2].Udat[i]-xari*yari);
cova:=cova/laz;
if (xstand1=0) or (ystand1=0) then Stfehler:=false;
if stfehler then rpear:=cova/(xstand1*ystand1) else rpear:=2;
end;
procedure gaussalg(as,az:integer);
var i,z,hind: integer;
mul,dv,hilf: real;
begin
for p:=1 to as do begin
hind:= p;
while ((abs(Mmat[p,p]) <= 1.0E-12) and (hind < az )) do begin
for k:= 1 to as do begin
hilf:= Mmat[p,k];
Mmat[p,k]:= Mmat[hind+1,k];
Mmat[hind+1,k]:= hilf
end;
hind:= hind + 1
end;
if (abs(Mmat[p,p]) > 1.0E-12) then begin
dv:= Mmat[p,p];
for k:=1 to as do
Mmat[p,k]:= Mmat[p,k] / dv;
for i:=1 to az-1 do
begin
if p+i <= az then z:= p+i
else z:=p+i-az;
mul:= -Mmat[z,p];
for k:=1 to as do
Mmat[z,k]:= Mmat[z,k] + Mmat[p,k] * mul
end
end;
end
end;
Procedure Rangkorr;
var rx,ry:array[1..300] of real;
kx,gx,ky,gy:integer;
rangdiff:real;
begin
for j:=1 to laz do begin
kx:=0;gx:=0;ky:=0;gy:=0;
for k:=1 to laz do begin
if s1[nr1].Udat[k]>s1[nr1].Udat[j] then kx:=kx+1 else
if s1[nr1].Udat[k]=s1[nr1].Udat[j] then gx:=gx+1;
if s1[nr2].Udat[k]>s1[nr2].Udat[j] then ky:=ky+1 else
if s1[nr2].Udat[k]=s1[nr2].Udat[j] then gy:=gy+1;
end;
rx[j]:=kx+(gx+1)/2;
ry[j]:=ky+(gy+1)/2;
end;
rangdiff:=0;for j:=1 to laz do rangdiff:=rangdiff+sqr(rx[j]-ry[j]);
rako:=1-(6*rangdiff/laz/(sqr(laz)-1));
end;
Procedure Regfu;
begin
xsum:=0.0;ysum:=0.0;xsumq:=0.0;xysum:=0.0;
for j:=1 to laz do begin
xsum:=xsum+s1[nr1].Udat[j];
ysum:=ysum+s1[nr2].Udat[j];
xsumq:=xsumq+Sqr(s1[nr1].Udat[j]);
xysum:=xysum+(s1[nr1].Udat[j]*s1[nr2].Udat[j]);
end;
Nenner:=(laz*xsumq)-(Sqr(xsum));
if nenner<>0 then begin
br:=((laz*xysum)-(xsum*ysum))/nenner;
ar:=((ysum*xsumq)-(xsum*xysum))/nenner;
end;
end;
procedure Wind_anz;
var i:integer;
begin
window(1,1,80,25);
Open_Window(2,45,3,75,8+anz,7,4,' Mögliche Merkmale ');
gotoxy(3,1);write('Übersicht aller Merkmale:');
for i:=1 to anz do begin
gotoxy(7,i+2);Farbwahl(0,7);write(i:2,' ');Farbwahl(7,4);write(' ',s1[i].Mnam);
end;
gotoxy(5,4+anz);write('Weiter mit <SPACE> !');
repeat read(kbd,frg) until frg=' ';
Close_Window(2);
end;
{-----------------------------------------------------------------------------}
{$I grafinfo.inc}
{-----------------------------------------------------------------------------}
Overlay Procedure Diskein_aus;
label datanf;
type string80 = string[80]; {filename & Pfad}
procedure dir(filename:string80);
var drive,x :byte; {drive-nr und help byte}
dir_regs :record ax,bx,cx,dx,bp,si,di,ds,es,flags : integer; end;
subdir :string[15];
vol :string[43];
free :real;
lines,nof :integer; {Anzahl der Files}
dta :array[0..42] of char;
procedure process_entry;
var name,date : string[8];
ext : string[3];
time : string[6];
hlps : string[15];
len : real; {File-Länge}
a,b,c :byte;
begin
name:='';a:=0;
repeat
if not(ord(dta[$1e+a]) in [0,ord('.')]) then name:=name+dta[$1e+a];
a:=succ(a);
until (a=8) or (dta[$1e+a] in ['.',#0]);
ext:='';
repeat
if not(ord(dta[$1e+a]) in [0,ord('.')]) then ext:=ext+dta[$1e+a];
a:=succ(a);
until (length(ext)=3) or (dta[$1e+a]=#0);
repeat name:=name+' ';ext:=ext+' '; until length(name)=8;
a:=ord(dta[24]) and $1f;
b:=((ord(dta[25]) shl 8+ord(dta[24])) and $01e0)shr 5;
c:=ord(dta[25])shr 1+80;
str(b,hlps);
if b<10 then hlps:='0'+hlps;
date:=hlps+'.';
str(a,hlps);
if a<10 then hlps:='0'+hlps;
date:=hlps+'.'+date;
str(c,hlps);
date:=date+hlps;
time:='';
a:=ord(dta[23]) shr 3;
b:=((ord(dta[23]) shl 8+ord(dta[22])) and $07ff) shr 5;
str(a,hlps);
if a<10 then hlps:=' '+hlps;
time:=hlps+':';
str(b,hlps);
if b<10 then hlps:='0'+hlps;
time:=time+hlps;
len:=ord(dta[26])+256.0*ord(dta[27])+65536.0*ord(dta[28]);
if ext=copy(erw,2,3) then begin
writeln(' ',name,' ',ext,' ',len:6:0,date:10,' ',time:6);
lines:=lines+1;
end;
fillchar(dta[22],21,0);
end; { of process_entry}
begin { von DIR}
with dir_regs do begin
for x:=1 to length(filename) do filename[x]:=upcase(filename[x]);
if (filename='') or ((length(filename)=2) and (filename[2]=':')) then
filename:=filename+'*.*';
filename:=filename+#0;
if filename[2]=':' then drive:=ord(filename[1])-64 else drive:=0;
getdir(drive,subdir);
drive:=ord(subdir[1])-64;
fillchar(dta,43,0); {clear dta}
ax:=$1a00;
ds:=seg(dta); dx:=ofs(dta);
msdos(dir_regs);
vol:=#255+#0+#0+#0+#0+#0+#8+chr(drive)+'???????????';
ax:=$1100;
ds:=seg(vol); dx:=ofs(vol)+1;
msdos(dir_regs);
vol:=copy(dta,9,11);
Open_Window(2,30,2,78,23,0,7,' Inhaltsverzeichnis von '+subdir);
write(' Kennsatz in Laufwerk ',chr(drive+64));
if lo(ax)=$ff then writeln(' hat keinen Namen') else
writeln(' ist ',vol);
nof:=0;write(' ');Farbwahl(7,0);
writeln(' Name Erweit. Länge Datum Zeit ');Farbwahl(0,7);
Window(33,5,77,22);
ax:=$4e00; ds:=seg(filename); dx:=ofs(filename)+1; cx:=$f7; msdos(dir_regs);
if (flags and 1<>1) then begin {kein Fehler}
process_entry;nof:=1;lines:=1; {erster File}
repeat
ax:=$4f00;ds:=seg(filename); dx:=ofs(filename)+1; msdos(dir_regs);
if flags and 1<>1 then begin
if lines>16 then begin
write(' Weitere Dateien ══> Leertaste drücken ! ');
repeat read(kbd,frg) until frg=' ';
lines:=1;Clrscr;
end;
process_entry; nof:=succ(nof); end;
until (flags and 1=1);
end;
if nof=0 then writeln(' Die Diskette ist leer !') else begin
ax:=$3600;
dx:=drive;
msdos(dir_regs);
free:=1.0*ax*bx*cx;
writeln(nof:9,' Datei(en) ',free:0:0,' bytes frei');
end;
end;
end;
begin { von Overlay Diskein_aus }
Open_Window(1,10,7,70,17,14,1,DatIO);
gotoxy(5,3);write('Bitte geben Sie das Laufwerk an, das Ihre ');
gotoxy(5,4);write('Datendiskette enthält (A - B).');
gotoxy(5,6);write('Laufwerk = ___');
gotoxy(5,7);write('Bei <RETURN> wird das Laufwerk A genommen.');
repeat gotoxy(17,6);read(kbd,frg) until (frg in ['a','b','A','B']) or (frg=chr(13));
if frg in ['A','B'] then frg:=chr(ord(frg)+32);
if frg=chr(13) then frg:='a';
drv:=frg+':';Clrscr;
gotoxy(8,2);write('Bitte geben Sie einen Dateinamen ein !');
gotoxy(8,3);write('(maximal 8 Zeichen, ohne Erweiterung)');
gotoxy(1,4);if e_a='s' then write(' Bitte keine Erweiterungen eingeben !')
else begin
write('Bitte "U" für Urliste, "H" für Häufigkeitstabelle drücken !');
repeat read(kbd,liste) until liste in ['u','U','h','H'];
liste:=Upcase(liste);
if liste='U' then erw:='.URL' else begin
gotoxy(1,4);write('Bitte "1" oder "2" für die Dimension der Tabelle drücken ! ');
repeat read(kbd,liste) until liste in ['1','2'];
if liste='1' then erw:='.HI1' else erw:='.HI2';
end;
end;
gotoxy(8,8);write('Mit => Directoryanzeige ');
gotoxy(12,8);Farbwahl(0,7);write(' F10 ');
Farbwahl(14,1);
datanf:wort1:='';ac:=0;gotoxy(8,6);write('Dateiname = ________ ');gotoxy(20,6);
repeat read(kbd,frg);
if (frg=^[) and keypressed then begin
read(kbd,frg);
if frg='D' then begin
Window(1,1,80,25);
Dir(drv);
gotoxy(4,18);write(' Weiter mit <SPACE> = Leertaste !');
repeat read(kbd,frg) until frg=' ';
Close_Window(2);Window(11,8,69,17);
Farbwahl(14,1);gotoxy(20+ac,6);
end
else goto datanf;
end
else begin
Farbwahl(14,1);
if (ac>0) and (frg=chr(8)) then begin
ac:=ac-1;gotoxy(20+ac,6);write('_');delete(wort1,length(wort1),1);
gotoxy(20+ac,6);
end
else if frg<>chr(13) then if frg<>#8 then begin
gotoxy(20+ac,6);ac:=ac+1;write(frg);wort1:=wort1+frg;
end;
end;
until frg=chr(13);
if ((length(wort1)>9) and (wort1[2]<>':')) or (length(wort1)>11) then goto datanf;
if wort1[2]=':' then wort1:=wort1+erw else wort1:=drv+wort1+erw;
if e_a='s' then
if Eart=Urli then begin
assign(dat1,wort1);
rewrite(dat1);
for j:=1 to a_sp do write(dat1,s1[j]);
close(dat1);
end
else begin
assign(dat2,wort1);
rewrite(dat2);
write(dat2,s2);
close(dat2);
end;
end;
{-----------------------------------------------------------------------------}
{$I anf_dru.inc}
{-----------------------------------------------------------------------------}
{$I Grafik.inc}
{-----------------------------------------------------------------------------}
Overlay Procedure Partkorr;
label neules;
var hilfv:real;
begin
Open_Window(1,6,5,74,20,14,1,' Partielle Korrelation ');cur_ze:=8;
gotoxy(2,2);writeln('Bitte geben Sie zuerst die beiden Merkmale an, zwischen welchen');
writeln(' Sie die Korrelation berechnen möchten und dann das Merkmal, das');
write(' konstant gehalten werden soll !');
gotoxy(5,14);write('Mit Anzeige der möglichen Merkmale.');
gotoxy(9,14);Farbwahl(0,7);write(' F10 ');Farbwahl(14,1);
gotoxy(5,5);write('Bitte geben Sie die Nummer des gewählten Merkmales ein');
gotoxy(5,6);write(' und bestätigen Sie Ihre Auswahl mit <RETURN>');
neules:ac:=1;wort1:='';gotoxy(5,cur_ze);
write('Nummer des Merkmales : __');
gotoxy(16,cur_ze);if cur_ze=8 then write('ersten (X) ') else if cur_ze=9 then
write('zweiten (Y)') else write(' konstanten');
repeat gotoxy(40,cur_ze);read(kbd,frg) until (frg in ['1'..'9']) or (frg=^[);
if (frg=^[) and keypressed then begin
wind_anz;Window(7,6,73,19);Farbwahl(14,1);goto neules;
end;
wort1:=wort1+frg;gotoxy(40,cur_ze);write(wort1);
if a_sp>9 then Tab_eingeb(2,40,cur_ze) else Tab_eingeb(1,40,cur_ze);
if ((a_sp>9) and (ac>2)) or ((a_sp<10) and (ac>1)) then goto neules;
val(wort1,ak_nr,e1);if ak_nr>anz then goto neules;
if cur_ze=8 then begin
nr[1]:=ak_nr;cur_ze:=9;goto neules;
end
else if cur_ze=9 then begin
nr[2]:=ak_nr;if nr[1]<>nr[2] then cur_ze:=11;goto neules;
end
else nr[3]:=ak_nr;
if (nr[1]=nr[3]) or (nr[2]=nr[3]) then goto neules;
pxy[1]:=Matr[nr[1],nr[2]];
pxy[2]:=Matr[nr[1],nr[3]];
pxy[3]:=Matr[nr[2],nr[3]];
for j:=1 to 3 do if pxy[j]=2 then Stfehler:=false;
Clrscr;
if Stfehler=false then begin
gotoxy(3,4);write('Eine der Korrelationskoeffizienten ist nicht berechenbar.');
gotoxy(3,6);write('Bitte verlassen Sie dieses Memue mit <SPACE> und');
gotoxy(3,8);write('waehlen Sie andere Merkmale aus !');
end
else begin
gotoxy(5,3);write('Korrelationskoeffizient r(X,Y) = ',pxy[1]:6:4);
gotoxy(5,4);write('Korrelationskoeffizient r(X,U) = ',pxy[2]:6:4);
gotoxy(5,5);write('Korrelationskoeffizient r(Y,U) = ',pxy[3]:6:4);
hilfv:=0;rpar:=0;rpar:=pxy[1]-(pxy[2]*pxy[3]);
hilfv:=sqrt((1-sqr(pxy[2]))*(1-sqr(pxy[3])));
if hilfv>0 then rpar:=rpar/hilfv;
gotoxy(10,7);write('r(X,Y)/U = ');
if hilfv>0 then write(rpar:6:4) else write('nicht berechenbar, da Nenner = 0');
end;
gotoxy(5,10);write('X = ',s1[nr[1]].Mnam,' Y = ',s1[nr[2]].Mnam,' U = ',s1[nr[3]].Mnam);
gotoxy(5,13);write('Weiter mit <SPACE> = Leertaste !');
repeat read(kbd,frg) until (frg = ' ');
Close_Window(1);
end;
{-----------------------------------------------------------------------------}
Overlay Procedure Biparkorr;
label neules,wiederh;
var hilfv:real;
begin
Open_Window(1,5,4,75,20,14,1,' Bi-partielle Korrelation ');cur_ze:=8;
if anz<4 then begin
gotoxy(4,5);write('Dieser Koeffizient ist nur ab 4 Merkmalen berechenbar.');
gotoxy(5,15);write('Weiter mit <SPACE> = Leertaste !');Farbwahl(0,7);
gotoxy(50,15);write(' F1 ');Farbwahl(14,1);write(' Druck');
goto wiederh;
end;
gotoxy(2,2);writeln('Bitte geben Sie zuerst die beiden Merkmale an, zwischen welchen');
writeln(' Sie die Korrelation berechnen möchten und dann die beiden Merkmale,');
write(' die konstant gehalten werden sollen !');
gotoxy(5,14);write('Mit Anzeige der möglichen Merkmale.');
gotoxy(9,14);Farbwahl(0,7);write(' F10 ');Farbwahl(14,1);
gotoxy(5,5);write('Bitte geben Sie die Nummer des gewählten Merkmales ein');
gotoxy(5,6);write(' und bestätigen Sie Ihre Auswahl mit <RETURN>');
neules:ac:=1;wort1:='';gotoxy(5,cur_ze);
write('Nummer des Merkmales : __');gotoxy(16,cur_ze);
case cur_ze of
8: write(' ersten (X) ');
9: write(' zweiten (Y) ');
11:write('zu X konstanten');
12:write('zu Y konstanten');
end;
repeat gotoxy(44,cur_ze);read(kbd,frg) until (frg in ['1'..'9']) or (frg=^[);
if (frg=^[) and keypressed then begin
wind_anz;Window(6,5,74,19);Farbwahl(14,1);goto neules;
end;
wort1:=wort1+frg;gotoxy(44,cur_ze);write(wort1);
if a_sp>9 then Tab_eingeb(2,44,cur_ze) else Tab_eingeb(1,44,cur_ze);
if ((a_sp>9) and (ac>2)) or ((a_sp<10) and (ac>1)) then goto neules;
val(wort1,ak_nr,e1);if ak_nr>anz then goto neules;
case cur_ze of
8: begin nr[1]:=ak_nr;cur_ze:=9;goto neules; end;
9: begin nr[2]:=ak_nr;if nr[1]<>nr[2] then cur_ze:=11;goto neules; end;
11: begin nr[3]:=ak_nr;
if (nr[3]<>nr[2]) and (nr[3]<>nr[1]) then cur_ze:=12;goto neules;
end;
12: nr[4]:=ak_nr;
end;
if (nr[4]=nr[1]) or (nr[4]=nr[2]) or (nr[4]=nr[3]) then goto neules;
pxy[1]:=Matr[nr[1],nr[2]];
pxy[2]:=Matr[nr[1],nr[3]];
pxy[3]:=Matr[nr[1],nr[4]];
pxy[4]:=Matr[nr[2],nr[3]];
pxy[5]:=Matr[nr[2],nr[4]];
pxy[6]:=Matr[nr[3],nr[4]];
Clrscr;
for j:=1 to 6 do if pxy[j]=2 then Stfehler:=false;
if Stfehler=false then begin
gotoxy(3,4);write('Eine der Korrelationskoeffizienten ist nicht berechenbar.');
gotoxy(3,6);write('Bitte verlassen Sie dieses Memue mit <SPACE> und');
gotoxy(3,8);write('waehlen Sie andere Merkmale aus !');
end
else begin
gotoxy(5,3);write('Korrelationskoeffizient r(X,Y) = ',pxy[1]:6:4);
gotoxy(5,4);write('Korrelationskoeffizient r(X,U) = ',pxy[2]:6:4);
gotoxy(5,5);write('Korrelationskoeffizient r(X,V) = ',pxy[3]:6:4);
gotoxy(5,6);write('Korrelationskoeffizient r(Y,U) = ',pxy[4]:6:4);
gotoxy(5,7);write('Korrelationskoeffizient r(Y,V) = ',pxy[5]:6:4);
gotoxy(5,8);write('Korrelationskoeffizient r(U,V) = ',pxy[6]:6:4);
hilfv:=0;rbipar:=0;
rbipar:=pxy[1]-(pxy[2]*pxy[4])-(pxy[3]*pxy[5])+(pxy[2]*pxy[6]*pxy[5]);
hilfv:=sqrt((1-sqr(pxy[2]))*(1-sqr(pxy[5])));
if hilfv>0 then rbipar:=rbipar/hilfv;
gotoxy(10,10);write('r(X/U,Y/V) = ');
if hilfv>0 then write(rbipar:6:4) else write('nicht berechenbar, da Nenner = 0');
end;
gotoxy(5,12);write('X = ',s1[nr[1]].Mnam,' Y = ',s1[nr[2]].Mnam);
gotoxy(5,13);write('U = ',s1[nr[3]].Mnam,' V = ',s1[nr[4]].Mnam);
wiederh:gotoxy(5,15);write('Weiter mit <SPACE> = Leertaste !');
repeat read(kbd,frg) until (frg = ' ');
Close_Window(1);
end;
{-----------------------------------------------------------------------------}
Overlay Procedure Multikorr_reg;
label wiederh1,neules1,neules2,neufrg;
var hilfv,ym:real;
i,iz,loesz,eind:integer;
Xiar:array[1..15] of real;
begin
Stfehler:=true;
Open_Window(1,2,1,79,25,14,1,' Multiple Korrelation ');
(******* Merkmale eingeben *******)
gotoxy(5,21);write('Mit Anzeige der möglichen Merkmale.');
gotoxy(9,21);Farbwahl(0,7);write(' F10 ');Farbwahl(14,1);
gotoxy(2,2);write('Bitte geben Sie die Nummer des abhängigen Merkmales ein.');
neules1:Farbwahl(14,1);ac:=1;wort1:='';
gotoxy(2,3);write('Nummer von Y = abhängiges Merkmal: __');
repeat gotoxy(38,3);read(kbd,frg) until (frg in ['1'..'9']) or (frg=^[);
if (frg=^[) and keypressed then begin
wind_anz;Window(3,2,78,24);Farbwahl(14,1);goto neules1;
end;
wort1:=wort1+frg;gotoxy(37,3);write(wort1);
if a_sp>9 then Tab_eingeb(2,37,3) else Tab_eingeb(1,37,3);
if ((a_sp>9) and (ac>2)) or ((a_sp<10) and (ac>1)) then goto neules1;
val(wort1,abnr,e1);if abnr>anz then goto neules1;
if anz>10 then maxanz:=10 else maxanz:=anz-1;
neufrg:gotoxy(2,5);
write('Wieviele unabhängige Merkmale möchten Sie auswählen ? (max ',maxanz:2,') ');
gotoxy(66,5);read(uab);if (uab<1) or (uab>maxanz) then goto neufrg;
gotoxy(2,6);write('Möchten Sie bestimmte Merkmale bestimmen (J/N) ? ');
gotoxy(2,7);write('Bei N=Nein werden die ersten ',uab:2,' Merkmale genommen.');
repeat gotoxy(54,6);read(kbd,frg) until frg in ['n','N','j','J'];write(frg);
if (frg='j') or (frg='J') then begin
for j:=1 to uab do begin
neules2:Farbwahl(14,1);ac:=1;wort1:='';
gotoxy(2,8+j);write(j:2,'.Merkmal X',j:1,' = __');
repeat gotoxy(18,8+j);read(kbd,frg) until (frg in ['1'..'9']) or (frg=^[);
if (frg=^[) and keypressed then begin
wind_anz;Window(3,2,78,24);Farbwahl(14,1);goto neules2;
end;
wort1:=wort1+frg;gotoxy(18,8+j);write(wort1);
if a_sp>9 then Tab_eingeb(2,18,8+j) else Tab_eingeb(1,18,8+j);
if ((a_sp>9) and (ac>2)) or ((a_sp<10) and (ac>1)) then goto neules2;
val(wort1,nr[j],e1);if (nr[j]>anz) or (nr[j]=abnr) then goto neules2;
for k:=1 to j-1 do if nr[j]=nr[k] then goto neules2;
end;
end (* von if frg=j *)
else begin
k:=1;
for j:=1 to uab do begin
if j=abnr then k:=k+1;
nr[j]:=k;
k:=k+1;
end;
end;
(******* Multiple Korrelation *******)
for j:=1 to 10 do
for k:=1 to 20 do Mmat[j,k]:=0;
for j:=1 to uab do begin
pxy[j]:=Matr[abnr,nr[j]];Mmat[j,j]:=1.0;if pxy[j]>1 then Stfehler:=false;
for k:=j+1 to uab do begin
Mmat[j,k]:=Matr[nr[j],nr[k]];Mmat[k,j]:=Mmat[j,k];
if Matr[nr[j],nr[k]]>1 then Stfehler:=false;
end;
end;
Clrscr;
if Stfehler=false then begin
gotoxy(5,4);write('Mindestens Einer der Korrelationskoeffizienten ist ');
gotoxy(5,6);write('nicht berechenbar !');
gotoxy(5,9);write('Bitte verlassen Sie dieses Menue mit <SPACE> und');
gotoxy(5,11);write('waehlen Sie andere Merkmale aus !');
goto wiederh1;
end;
gotoxy(2,2);write('Die Matrix der einzelnen Korrelationskoeffizienten:');
gotoxy(trunc(uab/2)*6+3,3);write('R(X):');
gotoxy(67,3);write('r(Y,X(i):');
gotoxy(2,4);write('┌');gotoxy(68,4);write('┌ ┐');
for j:=1 to uab do begin
gotoxy(2,4+j);write('│');
for k:=1 to uab do write(Mmat[j,k]:6:3);
write(' │');cur_sp:=WhereX;cur_ze:=WhereY;
gotoxy(68,4+j);write('│',pxy[j]:6:3,'│');
end;
gotoxy(cur_sp-1,4);write('┐');
gotoxy(2,cur_ze+1);write('└');
gotoxy(cur_sp-1,cur_ze+1);write('┘');gotoxy(68,cur_ze+1);write('└ ┘');
gotoxy(3,16);write('Y = ',s1[abnr].Mnam);
write(' X(',nr[1]:1,')=',s1[nr[1]].Mnam,' X(',nr[2],')=',s1[nr[2]].Mnam);
for j:=3 to uab do begin
if j<7 then gotoxy(16*(j-2)-13,17) else gotoxy(16*(j-6)-13,18);
write('X(',nr[j]:1,')=',s1[nr[j]].Mnam);
end;
for j:=1 to uab do Mmat[j,j+uab]:=1;
gaussalg(uab+uab,uab);
iz:=0;i:=0;
while (i<uab) and (iz=0) do begin
i:=i+1;
if (abs(Mmat[i,i]-1) > 1.0E-12) then begin {Mmat[i,i]<>1}
gotoxy(3,20);write('Die Matrix ist nicht invertierbar');iz:=1;
end;
end;
if iz=0 then begin
for j:=1 to uab do begin
mulma[j]:=0;
for k:=1 to uab do mulma[j]:=mulma[j]+pxy[k]*Mmat[k,j+uab];
end;
hilfv:=0;for j:=1 to uab do hilfv:=hilfv+mulma[j]*pxy[j];
mpar:=sqrt(hilfv);
gotoxy(3,19);write('B[X(',abnr:1,'),[');
for j:=1 to uab-1 do write('X(',nr[j]:1,'),');
write('X(',nr[uab]:1,')]] = ');
gotoxy(9+uab*3,20);write(hilfv:8:6);
gotoxy(uab*3,21);write('r = √B = ',mpar:6:4);
end;
wiederh1:gotoxy(5,23);write('Weiter mit <SPACE> = Leertaste !');
repeat read(kbd,frg) until (frg = ' ');
Close_Window(1);
(******* Multiple Regression *******)
Open_Window(1,3,2,78,24,14,1,' Multiple Regression ');
for j:=1 to anz do begin
Xiar[j]:=0;for k:=1 to laz do Xiar[j]:=Xiar[j]+s1[j].Udat[k];
Xiar[j]:=Xiar[j]/laz;
end;
Clrscr;if uab>4 then begin
gotoxy(5,7);write('Die Parameter der Regressionsgleichung werden berechnet.');
gotoxy(5,9);write('Bitte etwas Geduld !');
end;
yari:=Xiar[abnr];
for j:=1 to 10 do
for k:=1 to 20 do Mmat[j,k]:=0;
for j:=1 to uab do begin
for p:=1 to laz do
Mmat[j,j]:=Mmat[j,j]+Sqr(s1[nr[j]].Udat[p]-Xiar[nr[j]]);
for k:=j+1 to uab do begin
For p:=1 to laz do
Mmat[j,k]:=Mmat[j,k]+(s1[nr[j]].Udat[p]-Xiar[nr[j]])*(s1[nr[k]].Udat[p]-Xiar[nr[k]]);
Mmat[k,j]:=Mmat[j,k];
end;
For p:=1 to laz do
Mmat[j,uab+1]:=Mmat[j,uab+1]+(s1[abnr].Udat[p]-yari)*(s1[nr[j]].Udat[p]-Xiar[nr[j]]);
end; {von j=1 - uab}
Gaussalg(uab+1,uab);
eind:=0;i:=1;
while (abs(Mmat[i,i]-1)<=1.0E-12) and (i<uab+1) do i:=i+1;
if i=uab+1 then eind:=1;
loesz:=1; i:=0;
repeat
i:=i+1;k:=1;
while (abs(Mmat[i,k])<=1.0E-12) and (k<=uab+1) do k:=k+1;
if k=uab+1 then begin
hstr:=' Das Gleichungssystem hat keine Lösung !';
loesz:=0;
end;
if k=uab+2 then loesz:=1;
until ((loesz = 0) or (i=uab));
if (loesz=1) and (eind<>1) then hstr:=' Das Gleichungssystem hat unendlich viele Lösungen ';
if (loesz=1) and (eind=1) then hstr:=' ';
if loesz=0 then begin
gotoxy(3,5);write(hstr); (** keine Lösung **)
end
else begin
for j:=1 to uab do pxy[j]:=Mmat[j,uab+1]; {pxy[j]=b[nr[j]]}
ar:=yari;for j:=1 to uab do ar:=ar-(pxy[j]*Xiar[Nr[j]]);
Clrscr;
gotoxy(10,2);write('Die Regressionsgleichung lautet:');
gotoxy(4,4);write('Y [');
for j:=1 to uab-1 do write('X(',nr[j]:1,'),');
write('X(',nr[uab]:1,')] = ');
gotoxy(14,5);write(ar:10:3,' + ');
for j:=1 to uab do begin
gotoxy(9,5+j);write(pxy[j]:7:3,' * X(',nr[j]:2,') ');
if j<uab then write('+ ');
end;
gotoxy(5,16);write(hstr);
gotoxy(3,17);write('Y = ',s1[abnr].Mnam);
write(' X(',nr[1]:1,')=',s1[nr[1]].Mnam,' X(',nr[2]:1,')=',s1[nr[2]].Mnam);
for j:=3 to uab do begin
if j<7 then gotoxy(16*(j-2)-13,18) else gotoxy(16*(j-6)-13,19);
write('X(',nr[j]:1,')=',s1[nr[j]].Mnam);
end;
end; {of else}
gotoxy(5,21);write('Weiter mit <SPACE> = Leertaste !');
repeat read(kbd,frg) until (frg = ' ');
Close_Window(1);
end;
{-----------------------------------------------------------------------------}
{$I eingabe.inc}
{-----------------------------------------------------------------------------}
Overlay Procedure statauswert;
var vari,m:real;
windtext:string[60];
klassi:array[1..25] of real;
begin
if erw='.HI1' then mnr:=1 else mnr:=ak_nr;
windtext:=' Statistische Kenndaten von Merkmal '+s1[mnr].Mnam;
Open_Window(2,7,5,73,24,14,3,windtext);
if s1[2].anz_zeile=1 then begin
gotoxy(5,1);writeln('Zur Berechnung wurden die Klassenmitten der einzelnen');
write(' Gruppen verwendet !');
end;
if erw='.URL' then klw:=sor1[1] else klw:=s1[1].Udat[1];
gotoxy(10,3);write('Kleinster Wert = ',klw:9:2);
if erw='.URL'then grw:=sor1[slaz] else if s1[2].anz_zeile=1
then grw:=s1[2].Udat[laz] else grw:=s1[1].Udat[laz];
gotoxy(10,4);write('Größter Wert = ',grw:9:2);
spw:=grw-klw;gotoxy(10,5);write('Spannweite = ',spw:9:2);
if erw='.URL' then begin
xari:=0;for j:=1 to laz do xari:=xari+sor1[j];
xari:=xari/laz;gotoxy(10,8);write('Arithmetisches Mittel = ',xari:9:2);
m:=(laz+1)/2; if m=int(m) then medi:=sor1[round(m)]
else medi:=(sor1[round(m+0.5)]+sor1[trunc(m)])/2;
xgeo:=0;for j:=1 to laz do xgeo:=xgeo+ln(sor1[j]);
xgeo:=EXP(xgeo/laz);gotoxy(10,9);write('Geometrisches Mittel = ',xgeo:9:2);
xhar:=0;for j:=1 to laz do xhar:=xhar+(1/sor1[j]);
xhar:=laz/xhar;gotoxy(10,10);write('Harmonisches Mittel = ',xhar:9:2);
vari:=0;for j:=1 to laz do vari:=vari+Sqr(sor1[j]-xari);
xvari1:=vari/laz;
xvari2:=vari/(laz-1);
end; (* Ende von erw=URL*)
if erw='.HI1' then begin
for j:=1 to laz do
if s1[2].anz_zeile=1 then klassi[j]:=(s1[2].Udat[j]+s1[1].Udat[j])/2
else klassi[j]:=s1[1].Udat[j];
if s1[2].anz_zeile=1 then k:=3 else k:=2;
xari:=0;for j:=1 to laz do xari:=xari+(s1[k].Udat[j]*klassi[j]);
xari:=xari/s1[k+1].Udat[laz];
gotoxy(10,8);write('Gewogenes arithmetisches Mittel = ',xari:9:2);
j:=1;while s1[k+3].Udat[j]<50 do j:=j+1;
if s1[2].anz_zeile=1 then begin
if j=1 then medi:=s1[1].Udat[1]+((50/s1[5].Udat[1])*(s1[2].Udat[1]-s1[1].Udat[1]))
else medi:=s1[1].Udat[j]+(((50-s1[6].Udat[j-1])/s1[5].Udat[j])*
(s1[2].Udat[j]-s1[1].Udat[j]));
end
else medi:=s1[1].Udat[j];
xgeo:=1;for j:=1 to laz do xgeo:=xgeo*(EXP(s1[k+2].Udat[j]/100*ln(klassi[j])));
gotoxy(10,9);write('Gewogenes geometrisches Mittel = ',xgeo:9:2);
xhar:=0;for j:=1 to laz do xhar:=xhar+(s1[k+2].Udat[j]/klassi[j]);
xhar:=100/xhar;gotoxy(10,10);write('Gewogenes harmonisches Mittel = ',xhar:9:2);
vari:=0;for j:=1 to laz do vari:=vari+(Sqr(klassi[j]-xari)*s1[k].Udat[j]);
xvari1:=vari/s1[k+1].Udat[laz];
xvari2:=vari/(s1[k+1].Udat[laz]-1);
end;
xstand1:=sqrt(xvari1);
xstand2:=sqrt(xvari2);
gotoxy(10,6);write('Median = ',medi:9:2);
gotoxy(10,11);write('Varianz (n) = ',xvari1:10:2);
gotoxy(10,12);write('Varianz (n-1) = ',xvari2:10:2);
gotoxy(10,13);write('Standardabweichung (n) = ',xstand1:9:3);
gotoxy(10,14);write('Standardabweichung (n-1) = ',xstand2:9:3);
gotoxy(10,15);write('Variationskoeffizient (n) = ',(xstand1/xari):8:3);
gotoxy(10,16);write('Variationskoeffizient (n-1) = ',(xstand2/xari):8:3);
gotoxy(10,18);write('Weiter mit <SPACE> = Leertaste !');
repeat read(kbd,frg) until (frg = ' ');
Close_Window(2);
end;
{-----------------------------------------------------------------------------}
Overlay Procedure Stat2berech;
var fij,chi,xvari,yvari:real;
windtext:string[60];
klassi:array[1..2,1..22] of real;
begin
if erw='.URL' then begin
windtext:=' Statistische Kenndaten von X = '+s1[nr1].Mnam+' und Y = '+s1[nr2].Mnam;
xari:=0;yari:=0;for j:=1 to laz do begin
xari:=xari+sor1[j];yari:=yari+sor2[j];
end;
xari:=xari/laz;yari:=yari/laz;
xvari:=0;yvari:=0;for j:=1 to laz do begin
xvari:=xvari+Sqr(sor1[j]-xari);yvari:=yvari+Sqr(sor2[j]-yari);
end;
xvari1:=xvari/laz;yvari1:=yvari/laz;
xvari2:=xvari/(laz-1);yvari2:=yvari/(laz-1);
end;
if erw='.HI2' then begin
windtext:=' Statistische Kenndaten von X = '+s2.Hnam[1]+' und Y = '+s2.Hnam[2];
for j:=1 to s2.anz_sp do
if s2.g='G' then klassi[1,j]:=(s2.Hdat[1,j+1]+s2.Hdat[1,j])/2
else klassi[1,j]:=s2.Hdat[1,j+1];
for j:=1 to s2.anz_ze do
if s2.g='G' then klassi[2,j]:=(s2.Hdat[2,j+1]+s2.Hdat[2,j])/2
else klassi[2,j]:=s2.Hdat[2,j+1];
xari:=0;for j:=1 to s2.anz_sp do xari:=xari+(s2.ahi[j,23]*klassi[1,j]);
yari:=0;for j:=1 to s2.anz_ze do yari:=yari+(s2.ahi[23,j]*klassi[2,j]);
xari:=xari/s2.ahi[23,23];yari:=yari/s2.ahi[23,23];
xvari:=0;for j:=1 to s2.anz_sp do xvari:=xvari+(Sqr(klassi[1,j]-xari)*s2.ahi[j,23]);
yvari:=0;for j:=1 to s2.anz_ze do yvari:=yvari+(Sqr(klassi[2,j]-yari)*s2.ahi[23,j]);
xvari1:=xvari/s2.ahi[23,23];yvari1:=yvari/s2.ahi[23,23];
xvari2:=xvari/(s2.ahi[23,23]-1);yvari2:=yvari/(s2.ahi[23,23]-1);
end;
Clrscr;Open_Window(2,6,3,73,23,14,3,windtext);gotoxy(38,3);
if (s2.g='G') and (erw='.HI2') then begin
gotoxy(3,1);writeln('Zur Berechnung der nachfolgenden Werte wurden die');
write(' Klassenmitten der einzelnen Gruppen verwendet !');gotoxy(38,4);
end;
xstand1:=sqrt(xvari1);ystand1:=sqrt(yvari1);
xstand2:=sqrt(xvari2);ystand2:=sqrt(yvari2);
write('Werte von X Werte von Y ');
gotoxy(6,5);write('Arithmetisches Mittel:');gotoxy(39,5);write(xari:9:2,' ',yari:9:2);
gotoxy(6,6);write('Varianz (n) :');gotoxy(39,6);write(xvari1:9:2,' ',yvari1:9:2);
gotoxy(6,7);write('Varianz (n-1) :');gotoxy(39,7);write(xvari2:9:2,' ',yvari2:9:2);
gotoxy(6,8);write('Standardabweichung (n) :');
gotoxy(39,8);write(xstand1:9:3,' ',ystand1:9:3);
gotoxy(6,9);write('Standardabweichung (n-1) :');
gotoxy(39,9);write(xstand2:9:3,' ',ystand2:9:3);
gotoxy(6,11);write('Statistische Größen von 2 Merkmalen:');
cova:=0;chi:=0;
if erw='.URL' then begin
for j:=1 to laz do cova:=cova+(s1[nr1].Udat[j]*s1[nr2].Udat[j]-xari*yari);
covxy1:=cova/laz;covxy2:=cova/(laz-1);
end;
if erw='.HI2' then begin
for j:=1 to s2.anz_sp do begin
for k:=1 to s2.anz_ze do begin
cova:=cova+((klassi[1,j]-xari)*(klassi[2,k]-yari)*s2.ahi[j,k]);
fij:=(s2.ahi[j,23]*s2.ahi[23,k])/s2.ahi[23,23];
if fij<>0 then chi:=chi+(sqr(s2.ahi[j,k]-fij)/fij);
end;
end;
covxy1:=cova/s2.ahi[23,23];covxy2:=cova/(s2.ahi[23,23]-1);
conti:=sqrt(chi/(s2.ahi[23,23]+chi));
end;
gotoxy(6,12);write('Die Kovarianz von x und y S(x,y) [bzgl. n] = ',covxy1:9:3);
gotoxy(6,13);write('Die Kovarianz von x und y S(x,y) [bzgl. (n-1)] = ',covxy2:9:3);
gotoxy(6,14);write('Pearsonscher Korrelationskoeffizient r(x,y) = ');
nenner:=(xstand1*ystand1);
if nenner=0 then write('****') else begin
rpear:=covxy1/nenner;write(rpear:6:4);
end;
if erw='.URL' then begin
if laz>1 then begin
rangkorr;
gotoxy(6,15);writeln('Spearmannscher Rangkorrelationskoeffizient rs(x,y) = ',rako:6:4);
end;
regfu;if nenner=0 then write(' Regressionsgleichung nicht berechenbar, da Nenner=0')
else begin
gotoxy(6,16);write('Regressionsgleichung: Y = ',ar:7:2,' + ',br:7:2,' * X');
end;
end
else if erw='.HI2' then begin
gotoxy(6,15);write('Kontigenzkoeffizient = ');
if fij<>0 then write(conti:6:4) else write('****');
end;
gotoxy(2,17);write('**** als Ergebnis bedeutet, daß der Wert nicht berechenbar ist.');
gotoxy(10,19);write('Weiter mit <SPACE> = Leertaste !');
repeat read(kbd,frg) until (frg = ' ');
Close_Window(2);
end;
{-----------------------------------------------------------------------------}
Overlay Procedure Humwandeln;
var zaehler:real;
procedure E_umwandel;
begin
zaehler:=1;
s1[1].Mnam:=s1[ak_nr].Mnam;
k:=1;s1[1].Udat[1]:=sor1[1];
for j:=2 to laz do begin
if sor1[j]>sor1[j-1] then begin
s1[2].Udat[k]:=zaehler;zaehler:=1;
k:=k+1;s1[1].Udat[k]:=sor1[j];
if k>22 then begin
umwfehler;exit;
end;
end
else zaehler:=zaehler+1;
end;{ of for ..}
s1[3].Udat[1]:=s1[2].Udat[1];s1[2].Udat[k]:=zaehler;s1[1].anz_zeile:=k+1;
end;
procedure G_umwandel;
label neuk,umend;
var dw:real;
begin
grup:='G';s2.g:='G';Grupaus;
if frg='2' then begin
et:=1;ok:=1;s2.Hnam[1]:=s1[ak_nr].Mnam;s1[1].Mnam:=s2.Hnam[1];
s2.Hdat[1,1]:=sor1[1];Ma_ein;
for j:=1 to l_sp do begin
s1[1].Udat[j]:=s2.Hdat[1,j];
if j>1 then s1[2].Udat[j-1]:=s1[1].Udat[j];
end;
l_sp:=l_sp-1;
end
else begin
k:=trunc(Sqrt(laz))+1;dw:=trunc(((sor1[laz]-sor1[1])/k*10)+0.999)/10;
s1[1].Udat[1]:=sor1[1];s1[1].Mnam:=s1[ak_nr].Mnam;
for j:=1 to k do begin
s1[2].Udat[j]:=s1[1].Udat[j]+dw;s1[1].Udat[j+1]:=s1[2].Udat[j];
end;
l_sp:=k;
end;
for j:=1 to l_sp do s1[3].Udat[j]:=0;
k:=1;s1[2].Udat[l_sp]:=s1[2].Udat[l_sp]+0.01;
for j:=1 to laz do begin
neuk:if sor1[j]<s1[2].Udat[k] then s1[3].Udat[k]:=s1[3].Udat[k]+1
else begin
k:=k+1;if k>l_sp then begin k:=k-1;goto umend;end else goto neuk;
end;
end; { of for ..}
umend:s1[4].Udat[1]:=s1[3].Udat[1];s1[1].anz_zeile:=k+1;s1[2].Udat[l_sp]:=s1[2].Udat[l_sp]-0.01;
end;
begin
for col:=1 to 6 do begin
for row:=1 to 300 do s1[col].Udat[row]:=1E+7;
end;
umwa:=true;wnr:=3;Farbwahl(0,7);Clrscr;
gotoxy(10,11);write('Möchten Sie ');Farbwahl(7,0);write(' G ');
Farbwahl(0,7);write('ruppierte Daten oder ');Farbwahl(7,0);
gotoxy(22,13);write(' E ');Farbwahl(0,7);write('inzeldaten eingeben ?');
gotoxy(10,15);write('Bitte geben Sie eine der inversen Buchstaben ein !');
repeat read(kbd,grup) until grup in ['g','G','e','E'];ClrScr;
grup:=Upcase(grup);if grup='E' then E_umwandel else G_umwandel;
if umwa=false then G_umwandel;
end;
{-----------------------------------------------------------------------------}
Overlay Procedure Ein_Auswert;
label neules;
begin {of Ein_Auswert}
Open_Window(1,10,8,70,17,14,1,' Merkmal-Abfrage ');
gotoxy(4,1);write('Welches Merkmal möchten Sie auswerten ?');
gotoxy(4,2);write('Bitte geben Sie die Nummer des Merkmales ein !');
gotoxy(4,8);write('Mit Anzeige der möglichen Merkmale.');
gotoxy(8,8);Farbwahl(0,7);write(' F10 ');Farbwahl(14,1);
gotoxy(4,6);write('Bestätigen Sie Ihre Auswahl mit <RETURN> !');
neules:gotoxy(7,4);write('Merkmal-Nr.: __');ac:=1;wort1:='';
repeat gotoxy(20,4);read(kbd,frg) until (frg in ['1'..'9']) or (frg=^[);
if (frg=^[) and keypressed then begin
Wind_anz;Window(11,9,69,16);Farbwahl(14,1);goto neules;
end;
wort1:=wort1+frg;gotoxy(20,4);write(wort1);
if a_sp>9 then Tab_eingeb(2,20,4) else Tab_eingeb(1,20,4);
if ((a_sp>9) and (ac>2)) or ((a_sp<10) and (ac>1)) then goto neules;
val(wort1,ak_nr,e1);if ak_nr>a_sp then goto neules;
if l_ze>160 then begin
Farbwahl(14,1);Clrscr;gotoxy(7,3);
writeln('Die Urliste von ',s1[ak_nr].Mnam,' wird sortiert.');
write(' Bitte kurz warten ! ');
end;
Move(s1[ak_nr].Udat,sor1,SizeOf(s1[ak_nr].Udat));
Sortier(sor1,1,laz);slaz:=laz;
Close_Window(1);Clrscr;
end;
{-----------------------------------------------------------------------------}
Overlay Procedure H2_umw;
label neuk1,neuk2;
var i:integer;
procedure HE_umw;
begin
s2.Hdat[1,1]:=1E+9;s2.Hdat[2,1]:=1E+9;
s2.g:='E';s2.anz_sp:=1;s2.anz_ze:=1;s2.Hdat[1,2]:=sor1[1];s2.Hdat[2,2]:=sor2[1];
for j:=2 to laz do begin
if sor1[j]>sor1[j-1] then begin
s2.anz_sp:=s2.anz_sp+1;
if s2.anz_sp>22 then begin umwfehler;exit; end
else s2.Hdat[1,s2.anz_sp+1]:=sor1[j];
end;
if sor2[j]>sor2[j-1] then begin
s2.anz_ze:=s2.anz_ze+1;
if s2.anz_ze>22 then begin umwfehler;exit; end
else s2.Hdat[2,s2.anz_ze+1]:=sor2[j];
end;
end;{ of for ..}
end;
procedure HG_umw;
var dw1,dw2:real;
begin
grup:='G';s2.g:='G';Grupaus;
s2.Hdat[1,1]:=sor1[1];s2.Hdat[2,1]:=sor2[1];
if frg='2' then begin
et:=1;ok:=1;Ma_ein;
et:=2;Ma_ein;
end
else begin
k:=trunc(Sqrt(laz))+1;dw1:=trunc(((sor1[laz]-sor1[1])/k*10)+0.999)/10;
dw2:=trunc(((sor2[laz]-sor2[1])/k*10)+0.999)/10;
for j:=1 to k do begin
s2.Hdat[1,j+1]:=s2.Hdat[1,j]+dw1;
s2.Hdat[2,j+1]:=s2.Hdat[2,j]+dw2;
end;
if dw1=0 then s2.anz_sp:=1 else s2.anz_sp:=k;
if dw2=0 then s2.anz_ze:=1 else s2.anz_ze:=k;
end;
end;
begin {von H2_umw}
s2.Hnam[1]:=s1[nr1].Mnam;s2.Hnam[2]:=s1[nr2].Mnam;
umwa:=true;wnr:=3;Farbwahl(0,7);Clrscr;
gotoxy(10,11);write('Möchten Sie ');Farbwahl(7,0);write(' G ');
Farbwahl(0,7);write('ruppierte Daten oder ');Farbwahl(7,0);
gotoxy(22,13);write(' E ');Farbwahl(0,7);write('inzeldaten eingeben ?');
gotoxy(10,15);write('Bitte geben Sie einen der beiden Buchstaben ein !');
repeat read(kbd,grup) until grup in ['g','G','e','E'];ClrScr;
grup:=Upcase(grup);if grup='E' then HE_umw else HG_umw;
if umwa=false then HG_umw;
for j:=1 to 23 do begin
for k:=1 to 23 do s2.ahi[j,k]:=0;
end;
if s2.g='G' then begin
s2.Hdat[1,s2.anz_sp+1]:=s2.Hdat[1,s2.anz_sp+1]+0.01;
s2.Hdat[2,s2.anz_ze+1]:=s2.Hdat[2,s2.anz_ze+1]+0.01;
end;
for j:=1 to laz do begin
i:=1;k:=1;
neuk1:if (s1[nr1].Udat[j]>=s2.Hdat[1,k]) and (s1[nr1].Udat[j]<s2.Hdat[1,k+1]) then begin
neuk2:if (s1[nr2].Udat[j]>=s2.Hdat[2,i]) and (s1[nr2].Udat[j]<s2.Hdat[2,i+1])
then begin
if grup='E' then s2.ahi[k-1,i-1]:=s2.ahi[k-1,i-1]+1
else s2.ahi[k,i]:=s2.ahi[k,i]+1;
end
else begin
i:=i+1;if i<23 then goto neuk2;
end;
end
else begin
k:=k+1;if k<23 then goto neuk1;
end;
end; { of for ..}
if s2.g='G' then begin
s2.Hdat[2,s2.anz_ze+1]:=s2.Hdat[2,s2.anz_ze+1]-0.01;
s2.Hdat[1,s2.anz_sp+1]:=s2.Hdat[1,s2.anz_sp+1]-0.01;
end;
end;
{-----------------------------------------------------------------------------}
Overlay Procedure Zwei_Auswert;
label neules;
begin {von Zwei_Auswert}
wort1:='';
Open_Window(1,10,8,70,17,14,1,' Merkmal-Abfrage ');
gotoxy(4,1);write('Welche Merkmale möchten Sie auswerten ?');
gotoxy(4,2);write('Bitte geben Sie die Nummer der beiden Merkmale ein !');
gotoxy(4,8);write('Mit Anzeige der möglichen Merkmale.');
gotoxy(8,8);Farbwahl(0,7);write(' F10 ');Farbwahl(14,1);cur_ze:=4;
gotoxy(4,6);write('Bestätigen Sie Ihre Auswahl mit <RETURN> !');
neules:Farbwahl(14,1);ac:=1;wort1:='';gotoxy(7,cur_ze);
write('Nummer des Merkmales : __');
Farbwahl(9,0);gotoxy(18,cur_ze);if cur_ze=4 then write('ersten (unabhängigen)')
else write('zweiten (abhängigen)');
Farbwahl(14,1);
repeat gotoxy(53,cur_ze);read(kbd,frg) until (frg in ['1'..'9']) or (frg=^[);
if (frg=^[) and keypressed then begin
wind_anz;Window(11,9,69,16);Farbwahl(14,1);goto neules;
end;
wort1:=wort1+frg;gotoxy(53,cur_ze);write(wort1);
if a_sp>9 then Tab_eingeb(2,53,cur_ze) else Tab_eingeb(1,53,cur_ze);
if ((a_sp>9) and (ac>2)) or ((a_sp<10) and (ac>1)) then goto neules;
val(wort1,ak_nr,e1);if ak_nr>anz then goto neules;
if cur_ze=4 then begin
nr1:=ak_nr;cur_ze:=5;goto neules;
end
else nr2:=ak_nr;
if nr1=nr2 then goto neules;
if laz>90 then begin
Farbwahl(14,1);Clrscr;gotoxy(7,3);
writeln('Die beiden Urlisten werden sortiert.');
write(' Bitte kurz warten ! ');
end;
Close_Window(1);
end;
{-----------------------------------------------------------------------------}
procedure Zweidim_Haeuf(n1,n2:integer);
var l2:integer;
begin
E_Csr:=' ';l_esp:=2;
Farbwahl(0,7);Eart:=Haeufigk2;erw:='.HI2';ok:=1;lr:=1;l_sp:=1;
if wnr=1 then begin
s2.hnam[1]:=s1[n1].Mnam;s2.hnam[2]:=s1[n2].Mnam;s2.g:=Upcase(grup);
cur_sp:=20;et:=1;Ma_ein;et:=2;Ma_ein;
end;
rahmen1:='╔════════════════════╦══════════╤══════════╤══════════╤══════════╦═══════════╗';
rahmen2:='║ ║ │ │ │ ║ ║';
rahmen3:='╟────────────────────╫──────────┼──────────┼──────────┼──────────╫───────────╢';
rahmen4:='╚════════════════════╩══════════╧══════════╧══════════╧══════════╩═══════════╝';
if wnr<3 then titelz:=' Eingabe zweidimensionaler Häufigkeiten '
else titelz:='Umwandlung in zweidimensionale Häufigkeitstabelle';
kommx:=' Ausprägungen von '+s2.hnam[1]+' ';
wort1:='A. von '+s2.hnam[2];
Clrscr;Rahmen_erstell;H_Eingabe;
end;
procedure Eindim_Haeuf(un_ze:integer);
begin
Eart:=Urli;E_Csr:=' ';erw:='.HI1';
if grup in ['e','E'] then begin
ende:=4;s1[2].anz_zeile:=0;s1[2].Mnam:=' f(i)';
s1[3].Mnam:=' F(i)';s1[4].Mnam:=' h(i) [%]';s1[5].Mnam:=' H(i) [%]';
a_sp:=5;l_esp:=2;lr:=1;
end
else begin
ende:=5;s1[2].anz_zeile:=1;s1[2].Mnam:='';s1[3].Mnam:=' f(i)';
s1[4].Mnam:=' F(i)';s1[5].Mnam:=' h(i) [%]';s1[6].Mnam:=' H(i) [%]';
a_sp:=6;l_esp:=3;lr:=2;
end;
rahmen_bild;Farbwahl(0,7);Clrscr;
titelz:=' Eingabetabelle eindimensionaler Häufigkeiten ';
kommx:=' Verschiedene Häufigkeiten ';Rahmen_erstell;
Ur_Eingabe(un_ze);
end;
procedure Urliste;
begin
Eart:=Urli;E_Csr:=' ';erw:='.URL';
if anz>6 then ende:=5 else ende:=anz-1;
rahmen_bild;
Farbwahl(0,7);Clrscr;titelz:=' Eingabetabelle der Urliste ';
kommx:=' Merkmale ';Rahmen_erstell;
a_sp:=anz;l_esp:=anz;lr:=1;
Ur_Eingabe(300);
end;
procedure Haeufigkeitstab(dim,n1,n2:integer);
begin
Farbwahl(0,7);Clrscr;
gotoxy(10,11);write('Möchten Sie ');Farbwahl(7,0);write(' G ');
Farbwahl(0,7);write('ruppierte Daten oder ');Farbwahl(7,0);
gotoxy(22,13);write(' E ');Farbwahl(0,7);write('inzeldaten eingeben ?');
gotoxy(10,15);write('Bitte geben Sie eine der inversen Buchstaben ein !');
repeat read(kbd,grup) until grup in ['g','G','e','E'];ClrScr;
if wnr=3 then Exit;
if dim=1 then Eindim_Haeuf(25) else Zweidim_Haeuf(n1,n2);
end;
procedure Ein_Auswahl;
var dim:integer;
begin
if anz>2 then Urliste else begin
if anz=1 then dim:=1 else dim:=2;
gotoxy(20,18);Farbwahl(0,7);write(' 1 ');Farbwahl(7,1);write(' Urliste eingeben ');
gotoxy(20,20);Farbwahl(0,7);write(' 2 ');Farbwahl(7,1);write(' Häufigkeitstabelle eingeben ');
gotoxy(20,22);write('Bitte wählen Sie eine der beiden Möglichkeiten durch ');
gotoxy(20,23);write('Eingabe der vorgestellten Zahl aus !');
repeat
read(kbd,frg) until frg in ['1','2'];
if frg='1' then Urliste else Haeufigkeitstab(dim,1,2);
end;
end;
procedure EA_Fehler;
begin
ClearScreen;
gotoxy(25,12);write(' Falscher Dateiname ');
delay(3500);
end;
procedure Tasteingabe;
begin
Farbwahl(7,1);ClrScr;
gotoxy(20,11);Write('Anzahl der Merkmale ? (max.15): ');
anz:=0;read(anz);if (anz<1) or (anz>15) then begin
write (chr(7));
for j:=1 to 6 do begin
if j in [1,3,5] then Farbwahl(0,7)
else Farbwahl(7,1);
gotoxy(20,13);Write('Bitte mindestens 1 und maximal 15 eingeben !');
delay(1000);
end;
Tasteingabe;
end
else begin
MnamEingabe;
Ein_Auswahl;
end;
end;
procedure Dateieingabe;
begin
DatIO:=' Eingabewerte werden aus Datei gelesen ';
anz:=0;e_a:='l';Diskein_aus;
if (erw='.URL') or (erw='.HI1') then Eart:=Urli else Eart:=Haeufigk2;
if Eart=Urli then assign(dat1,wort1) else assign (dat2,wort1);
{$I-}
if Eart=Urli then reset(dat1) else reset (dat2);
{$I+}
if ioresult>0 then begin
Close_Window(1);
EA_Fehler;
Dateieingabe;
end
else begin
if Eart=Urli then begin
while not eof(dat1) do begin
anz:=anz+1;read(dat1,s1[anz]);
end;
end
else read(dat2,s2);
if Eart=Urli then close(dat1) else close(dat2);
Close_Window(1);
if erw='.URL' then Urliste else if erw='.HI1' then begin
if s1[2].anz_zeile=0 then grup:='E' else grup:='G';
Eindim_Haeuf(25);
end;
if erw='.HI2' then Zweidim_Haeuf(1,2);
end; {of ioresult=0}
end;
{-----------------------------------------------------------------------------}
Overlay procedure Einwaehlen;
var ausw1:integer;
begin
ausw1:=0;frg:='1';while frg<>'0' do begin
Open_Window(1,10,5,70,20,7,0,' Auswertung der Urliste ');
Farbwahl(0,7);gotoxy(5,2);write(' 1 ');gotoxy(5,4);write(' 2 ');
gotoxy(5,6);write(' 0 ');Farbwahl(7,0);
gotoxy(9,2);write('Berechnung statistischer Kenngrößen');
gotoxy(9,4);write('Umwandlung in eine Häufigkeitstabelle');
gotoxy(9,6);write('Weiter im Programm');
gotoxy(5,11);write('Bitte geben Sie eine der obigen Ziffern ein !');
repeat read(kbd,frg) until frg in ['0'..'2'];
Close_Window(1);
if frg='1' then statauswert;
if frg='2' then begin
ausw1:=ausw1+1;
if ausw1>1 then begin
Open_Window(1,15,7,65,12,14,2,' Doppelte Umwandlung ');
gotoxy(2,2);write('Die Urliste ist schon umgewandelt worden .');
gotoxy(2,4);write('Bitte geben Sie eine andere Nummer ein !');
Delay(4500);Close_Window(1);
end
else begin
Humwandeln;
Eindim_Haeuf(s1[1].anz_zeile-1);
Farbwahl(0,7);ClearEol(23);ClearEol(24);
gotoxy(10,23);write('Weiter mit <SPACE> = Leertaste !');
repeat read(kbd,frg) until (frg=' ');
end;
end;
end; { of while ... }
end;
{-----------------------------------------------------------------------------}
Overlay Procedure Zweiwaehlen;
begin
hfrg:='1';while hfrg<>'0' do begin
Open_Window(1,9,5,71,20,7,0,' Auswahl der Verarbeitung ');
if laz>90 then begin
gotoxy(10,4);write('Die beiden Urlisten werden sortiert .');
gotoxy(10,6);write('Bitte einen Moment Geduld !');
end;
Move(s1[nr1].Udat,sor1,SizeOf(s1[nr1].Udat));
Move(s1[nr2].Udat,sor2,SizeOf(s1[nr2].Udat));
Sortier(sor1,1,laz);
Sortier(sor2,1,laz);Clrscr;
Farbwahl(0,7);gotoxy(3,2);write(' 1 ');gotoxy(3,4);write(' 2 ');gotoxy(3,6);write(' 3 ');
gotoxy(3,8);write(' 0 ');Farbwahl(7,0);
gotoxy(7,2);write('Umwandlung in eine zweidimensionale Häufigkeitstabelle');
gotoxy(7,4);write('Streudiagramm');
gotoxy(7,6);write('Statistische Kennzahlen errechnen');
gotoxy(7,8);write('Weiter im Programm');
gotoxy(7,11);write('Bitte geben Sie eine der obigen Ziffern ein !');
repeat read(kbd,hfrg) until hfrg in ['0'..'3'];
Close_Window(1);
if hfrg='1' then begin
H2_umw;Zweidim_Haeuf(nr1,nr2);
Farbwahl(0,7);ClearEol(23);ClearEol(24);
gotoxy(10,23);write('Weiter mit <SPACE> = Leertaste !');
repeat read(kbd,frg) until (frg=' ');
end;
if hfrg='2' then begin
Streudia;
LeaveGraphic;
end;
if hfrg='3' then Stat2berech;
end; { von while hfrg<>'0'}
end;
{-----------------------------------------------------------------------------}
Overlay Procedure Mehrauswahl;
var zl:integer;
begin
if anz>7 then begin
Clrscr;
gotoxy(10,10);write('Die Korrelationskoeffizienten werden errechnet.');
gotoxy(16,11);write('Bitte kurz warten !');
end;
for j:=1 to anz do begin
for k:=j+1 to anz do begin
P_korr(j,k);Matr[j,k]:=rpear;Matr[k,j]:=rpear;
end;
Matr[j,j]:=1.0;
end;
if anz<10 then zl:=6 else zl:=5;
Clrscr;
gotoxy(15,1);Farbwahl(9,0);write(' Korrelationsmatrix aller Merkmale ');
Farbwahl(7,0);gotoxy(5,2);
write('Falls *** in der Matrix vorkommt, so ist dieser Wert nicht berechenbar.');
gotoxy(25,3);writeln('r[X(1),X(2),...X(',anz:1,')] =');
writeln(' ┌');for j:=1 to anz do writeln(' │');writeln(' └');
for j:=1 to anz do begin
gotoxy(3,4+j);
for k:=1 to anz do if Matr[j,k]>1 then write(' ***',' ':zl-4) else write(Matr[j,k]:zl:zl-3);
write(' │');
end;
gotoxy(anz*zl+4,4);write('┐');
gotoxy(anz*zl+4,anz+5);write('┘');
for j:=1 to anz do begin
case j of
1: gotoxy(2,anz+6);
5: gotoxy(2,anz+7);
9: gotoxy(2,anz+8);
13: gotoxy(2,anz+9);
end;
write(' X(',j:1,') = ',s1[j].Mnam);
end;
gotoxy(5,25);write('Weiter mit <SPACE> = Leertaste');
repeat read(kbd,frg) until (frg=' ');
frg:='1';while frg<>'0' do begin
Open_Window(1,11,7,70,20,14,1,' Auswertungsabfrage ');
Farbwahl(0,7);for j:=1 to 3 do begin
gotoxy(5,2*(j+1));write(j:2,' ');
end;
gotoxy(5,10);write(' 0 ');Farbwahl(14,1);
gotoxy(2,1);write('Die nachfolgend aufgeführten Kennzahlen basieren auf dem');
gotoxy(12,2);write('Pearson',#39,'schen Korrelationskoeffizienten.');
gotoxy(9,4);write('Partielle Korrelation');
gotoxy(9,6);write('Bipartielle Korrelation');
gotoxy(9,8);write('Multiple Korrelation / Regression');
gotoxy(9,10);write('Weiter im Programm');
gotoxy(5,12);write('Bitte geben Sie eine der obigen Ziffern ein !');
repeat read (kbd,frg) until frg in ['0'..'4'];
Close_Window(1);Farbwahl(0,7);Clrscr;
case frg of
'1': Partkorr;
'2': Biparkorr;
'3': Multikorr_reg;
end;
end;
end;
{-----------------------------------------------------------------------------}
Overlay Procedure Hauswert2;
begin
frg:='1';while frg<>'0' do begin
Open_Window(1,11,7,69,19,14,1,' Auswertungsabfrage ');
gotoxy(3,2);writeln('Die Auswertungen gelten für 2-dimensionale Merkmale.');
if s2.g='G' then write(' Es wurden die jeweiligen Gruppenmitten verwendet.');
Farbwahl(0,7);gotoxy(3,5);write(' 1 ');gotoxy(3,7);write(' 2 ');gotoxy(3,9);write(' 0 ');
Farbwahl(14,1);gotoxy(7,5);write('Auswertung statistischer Kenndaten');
gotoxy(7,7);write('Streudiagramm');gotoxy(7,9);write('Weiter im Programm');
gotoxy(3,11);write('Bitte geben Sie eine der obigen Ziffern ein !');
repeat read (kbd,frg) until frg in ['0'..'2'];
Close_Window(1);Farbwahl(0,7);Clrscr;
if frg='1' then stat2berech;
if frg='2' then Hstreu;
end;
end;
{-----------------------------------------------------------------------------}
procedure Auswert2;
begin
frg:='1';while frg<>'0' do begin
Open_Window(1,10,5,70,20,7,0,' Graphische Darstellungen ');
Farbwahl(0,7);gotoxy(5,2);write(' 1 ');gotoxy(5,4);write(' 2 ');gotoxy(5,6);write(' 3 ');
gotoxy(5,8);write(' 4 ');gotoxy(5,10);write(' 0 ');
Farbwahl(7,0);gotoxy(9,2);write('Histogramm/Balkendiagramm');
gotoxy(9,4);write('Kreisdiagramm');gotoxy(9,6);write('Summenhäufigkeitskurve');
gotoxy(9,8);write('Statistische Kenndaten');gotoxy(9,10);write('Weiter im Programm');
gotoxy(5,13);write('Bitte geben Sie eine der obigen Ziffern ein !');
repeat read(kbd,frg) until frg in ['0'..'4'];
Close_Window(1);
case frg of
'1':if s1[2].anz_zeile=1 then Histo else Balken;
'2':Kreis;
'3':Summhaeuf;
'4':statauswert;
end;
end;
end;
procedure Menue1;
begin
Open_Window(1,10,6,70,16,7,0,' Auswahl der Auswertungsart ');
gotoxy(5,2);Farbwahl(0,7);write(' 1 ');gotoxy(5,4);write(' 2 ');
Farbwahl(7,0);gotoxy(9,2);write('Auswertung eines Merkmales');
gotoxy(9,4);write('Gleichzeitige Auswertung zweier Merkmale');
if anz>2 then begin
Farbwahl(0,7);gotoxy(5,6);write(' 3 ');
Farbwahl(7,0);write(' Gleichzeitige Auswertung von mehr als 2 Merkmalen');
end;
gotoxy(5,8);write('Bitte geben Sie eine der obigen Ziffern ein !');
if anz >2 then repeat read(kbd,frg) until frg in ['1'..'3']
else repeat read(kbd,frg) until frg in ['1','2'];
Close_Window(1);
if frg='1' then begin
Ein_Auswert;Einwaehlen;
end
else if frg='2' then begin
Zwei_Auswert;Zweiwaehlen;
end
else Mehrauswahl;
end;
begin
durchlauf:=1;
beg1:Anfangsbild_wert;
if wnr=1 then Tasteingabe else Dateieingabe;
Farbwahl(0,7);ClearEol(23);ClearEol(24);
gotoxy(10,23);write('Weiter mit <SPACE> = Leertaste !');
repeat read(kbd,frg) until (frg=' ');
if erw='.URL' then if anz>1 then Menue1 else begin
Ein_Auswert;Einwaehlen;
end;
if erw='.HI1' then Auswert2;
if erw='.HI2' then Hauswert2;
Open_Window(1,10,7,70,18,7,0,'Abfrage auf Ende oder weitere Bearbeitung ');
gotoxy(3,5);write('Möchten Sie weitere Auswertungen durchführen (J/N) ?');
repeat read(kbd,frg) until frg in ['j','J','n','N'];
Close_Window(1);
if (frg='j') or (frg='J') then begin
durchlauf:=durchlauf+1;goto beg1;
end;
end.