%   File   : PUTSTR.PL
%   Author : 
%   Updated: 24 February 1984
%   Purpose: Write out a string which may be held in another file.

/*  This file forms part of a package for taking large blocks of
    text (such as help information) out of Prolog programs into
    ordinary text files.  This is the bit that prints a string
    regardless of where it lives.  The other part was going to be
    written in Pascal.  It hasn't been written at all yet.
*/

:- public
	putstr/1.

:- mode
	putstr(+),
	copy_chars(+),
	skip_chars(+).


putstr(s(File,Start,Length)) :-
	seeing(Old),
	see(File),
	skip_chars(Start),
	copy_chars(Length),
	seen,
	see(Old).
putstr(Atom) :-
	atomic(Atom),
	write(Atom).


skip_chars(0) :- !.
skip_chars(N) :-
	get0(_),
	M is N-1,
	skip_chars(M).


copy_chars(0) :- !.
copy_chars(N) :-
	get0(C),
	put(C),
	M is N-1,
	copy_chars(M).