		(*****************)
		(**  moslog	**)
		(**  inirais	**)
		(*****************)
	(* programme d'initialisation et de demarrage *)

procedure calhsh(mot:tstring;var x:integer);
begin		(* calcul du hschcod x du mot mot *)
x := ord(mot[1])-ord('a')+1;
iF (x < 1) or (x > 30)	then	x := 30;
end;

procedure nouveau;
var	x,y:integer;
begin		(* entree d'un nouveau mot dans le dico
		***************************************)
if nb_mot >= max_mot
then	writeln(output,'il y a trop de mots')
else	begin
	nb_mot := nb_mot+1;
	mot_[nb_mot] := mot;
	iF mot = 'est'	then	etre := nb_mot;
	tipe[nb_mot] := chr(c);
	code[nb_mot] := chr(nc);
	vam[nb_mot] := vax+1;
	rel[nb_mot] := 0;
	pas[nb_mot] := 0;
	chai[nb_mot] := 0;
	calhsh(mot,x);
	iF hsh[x] = 0	(* chainage avec ceux de meme hschcod *)
	then	begin
		hsh[x] := nb_mot;
		las[x] := nb_mot;
		end
	else	begin
		y := las[x];
		chai[y] := nb_mot;
		las[x] := nb_mot;
		end;
	end;
end;

procedure inirais;
var	p,q,i:integer;
	phrase:tstring;
	flig:boolean;
	f1:text;
begin		(*	lecture du dictionnaire de base
	   	***************************************	*)

write(output,'Voulez vous des informations ? ');
read(input,phrase);	readln(input);
if phrase = 'oui'	then	help('moslog.hlp','');

fich := false;
nb_mot := 0;
nb_aff := 0;
for i := 1 to 30 do
	begin
	las[i] := 0;
	hsh[i] := 0;
	end;
assign(f1,'moslog.txt');
reset(f1);
read(f1,phrase);

while phrase <> '' do
	begin		(* definition d'un nouveau type de mots *)
	vax := nb_mot;
	c := ord(phrase[2]);
	nc := ord(phrase[4]);
	p := 6;
	flig := false;
	while not flig do
		begin		(* on prend tous les mots *)
		mot := ',';	(* s‚par‚s par une virgule *)
		Q := instr(p,phrase,mot);
		if q=0
		then	begin
			mot:=' ';
			Q := instr(p,phrase,mot);
			if q<>0 then vax:=nb_mot;
			end;
		iF Q = 0	then	Q := len(phrase)+1;
		mot := mid_(phrase,p,Q-p);
		p := Q+1;
		nouveau;	(* ajoute le mot au dico *)
		iF p >= len(phrase)	then	flig := true;
		end;
	readln(f1);
	if eof(f1)
	then	phrase:=''
	else	read(f1,phrase);
	end;
close(f1);
last_pred := nb_mot+1;
vam[0] := 0;
code[0] := ' ';
tipe[0] := ' ';
test := 0;
end;
