'*****************************************************************************

'Copyright (c) 1987 Marcel Madonna

'TYPER.BAS is an example of redirection.  To compile it, at the DOS prompt
'       type:

'               qb typer /l qbdos.exe;
'               link typer;
'               del typer.obj

'To execute TYPER just type "TYPER" at the DOS prompt and you will be prompted
'for a file name to type on the monitor.  This is a pretty simple program so
'
'               USE A REAL FILE NAME OR ELSE THIS PROGRAM WILL ABORT
'               USE AN ASCII FILE (LICENSE.DOC ON THE DISTRIBUTION DISKETTE
'                       WILL WORK JUST FINE)

'To route the output to a printer instead of the monitor, type:

'       TYPER /LPT1

'To route output to a file, type:

'       TYPER /TEXTFILE.DAT

'*****************************************************************************

';Usage - Call Dosred(Device%, FileSpec$, Rc%)
';       Device% 0 - Stdin
';               1 - Stdout
';               2 - Stderr (not redirectable)
';               3 - AUX (standard auuxilliary device)
';               4 - PRN (standard list device)
';       FileSpec$ - name of file or device
';               null - reset handle
';               chr$(255) - close handle and exit
';       Rc%     0 - good return
';               6 - handle already closed
';               255 - error
'*****************************************************************************

	Dim In.Array$(2000)

	If Len(Command$) = 0 then
		Red% = 0
	Else
		Red% = -1
		Pipe.Char$ = Left$(Command$,1)
		Red.File$ = Right$(Command$,Len(Command$)-1)
		While Left$(Red.File$,1) = Space$(1)   'Remove leading blanks
			Red.File$ = Right$(Red.File$,Len(Red.File$)-1)
		Wend
		While Right$(Red.File$,1) = Space$(1)   'Remove trailing blanks
			Red.File$ = Left$(Red.File$,Len(Red.File$)-1)
		Wend
	End if
	Print Red.file$
	Locate 1,1
	Print "You are being prompted for a file name."
	Print "Because this is a sample program only, I need"
	Print "a real file name or else this program will "
	Print "ABORT.  LICENSE.TXT on the distribution diskette"
	Print "will work just fine."
	Print

	Line Input "Give me a file name please: ", File.Nam$
	Cls

	Open File.Nam$ For Input As #1 'Open and read the entire file
	While Not Eof(1)
		If x% >= Ubound(In.Array$) then
			Line Input #1, In.Array$(Ubound(In.Array$))
		Else
			x% = x% + 1
			Line Input #1, In.Array$(x%)
		End if
	Wend
	Close #1

	Stdin%   = 0
	Stdout%  = 1
	Stdaux%  = 3
	Stdlist% = 4

' Redirect device here

	If Red% then
		Call DosRed(Stdout%, Red.File$ + chr$(0), Rc%)
		If Rc% <> 0 then
			Print "Error", Rc%
			System
		End if
	End if

' Print file here
'   Use 'print' statements to print to both CON and Red.File$
'   Use DosChout to print to only Red.File$

	For y% = 1 to x%
		Call Doschout(In.Array$(y%)+chr$(10)+chr$(13))
'                Print In.Array$(y%)
	next

' Reset device to original

	If Red% then Call Dosred(Stdout%,"",Rc%)     'Reset device

