%      Production system KORE/IE (version 12.48)
%
%          (C)1992 Institute for New Generation Computer Technology
%                          (Read COPYRIGHT for detailed information)
%
%      1992.7 Check and refine every programs 
%                             for IFS (ICOT Free Software) release.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% SAVE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/*
	In This File, Save function is defined.
	When you load saved files, use prolog
	consult or reconsult command.
*/

%%%%% SAVE_DATA
save_data(File) :-
	name(File,FN),
	append(FN,".data",FNL),
	name(FILE,FNL),
	tell(FILE),
	structure(_,FN,_,A,_,_),
	functor(Call,FN,A),
	Call =.. [FN,Time_Tag,IN,on|WM],
	Call,
	write(Call),
	write('.'),
	nl,
	fail.
save_data(_) :-
	told,
	!.	

%%%%% SAVE_RB
save_rb(RB,File) :-
	name(File,FN),
	append(FN,".rb",FNL),
	name(FILE,FNL),
	rule_base_name(RB),
	tell(FILE),
	write(rule_base_name(RB)),
	write('.'),
	nl,
	write(cs(RB,[])),
	write('.'),nl,
	write(strategy_rec(RB,lex,lex)),write('.'),nl,
	write(watch_mode(RB,1)),write('.'),nl,
	(structure(_,_,FNM,A,_,_),
	 functor(WM,FNM,A),
	 WM   =.. [FNM|WML],
	 Call =.. [FNM,F,MR,RN,RB,VL,TT,NUS|WML],
	 clause(Call,Body),
	 saving_lhs(Body,Call),
	 fail;
	 saving_rhs(RB)),
	(structure(F,FNN,FNM,Arity,ANL,ATL),
	 saving_structure(F,FNN,FNM,Arity,ANL,ATL),
	 fail;
	 told),
	!.

%%%%% saving_lhs
saving_lhs(true,Call) :-
	writeq(Call),
	write('.'),
	nl,
	!.
saving_lhs(Body,Call) :-
	writeq(Call),
	write(' :- '),
	nl,
	write('       '),
	writeq(Body),
	write('.'),
	nl,
	!.

%%%%% saving_rhs
saving_rhs(RB) :-
	clause(rhs(RN,RB,VL,DV,VM,EM,Inst),BODY),
	writeq(rhs(RN,RB,VL,DV,VM,EM,Inst)),
	write(' :- '),
	nl,
	write('        '),
	writeq(BODY),
	write('.'),
	nl,
	fail.
saving_rhs(_) :-
	!.

%%%%% saving_structure
saving_structure(F,FN,FNM,A,ANL,ATL) :-
	writeq(structure(F,FN,FNM,A,ANL,ATL)),
	write('.'),
	nl,
	(position(F,AN,T,D,P),
	 writeq(position(F,AN,T,D,P)),
	 write('.'),
	 nl,
	 fail;
	 true),
	!.
