ipxrtf (Sat Oct 25 2014 01:31:01)

ipxrtf

Takes RTF files and strips all markup etc except styles.

It can be run as a spooler against a queue where the input files are deleted
after use or moved to a done queue. Or it can be run once against a single file
which is NOT deleted or moved for where operation in a script is required.

A parameter file is used to determine where the files should be sent and other
parameters. This file is in tables/setup and default to XRTF.

Keywords for XRTF parameter file are :
	; comment line
	dest:	One or more FIP destinations as per the USERS file
			The default is 'xrtf'
	script:	Script to run on the new file before sending to the output q
		The first parameter will be the outputfile containing the
		correct data using a TMP filename. The second is the name
		requested.					default: none
	chrset:	Name of the Source Character Set.		default: ascii
	source: Name of the Source of this data			default: XRTF
	noarchive: Do NOT archive the data in IPWHEEL		default: do
	filename: FipSeq for a replacement filename for the output file
								default: as input
	nohdr:	Flag for no Fip Header on the output file.	default: allow hdr
	extra:	Extra Fip Header information to be added	default: none
	preserve-fiphdr: Keep any FipHdr from the raw file - if there is any. default:
strip it
	nodata:	Flag to ask for NO output file at all		default: allow data
		If a script is flagged, a file is created for the script
		and is then zapped.
	before:	String of FipSeq to stuff at start of the file.	default: none
	after:	String of FipSeq to stuff at end of the file.	default: none
	noblanklines:	Strip all extra blank lines.		default: leave in
	noleadspaces:	Strip all leading spaces on lines.	default: leave in
	strip-top-spaces: Strip all spaces - Tabs, Newlines	default: leave
		etc from the top of the data
	fontbefore: String Before a font change			default: fonts ignored
	fontafter:  String After  a font change			default: fonts ignored
	par:	String to replace the RTF par			default: new line
	eol:	CR or NL for carriage return or New Line	default: new line
	hardreturn: yes/no Should a (eol) be a SPC or EoLinei?	default: space
	supercede: For single files, supercede any existing output file. def:preserve
	multiple-file-marker: or
	interfile: Separator for between files 			default: n(next file)n
		This string is used to split multiple {rtf1 .. } { rtf1 ..} files.
	alldata: Normally ONLY data within the {rtf1.. is included.	def: no
		Use this flag to state that any preceeding or trailing
		data is to be kept.
	escape-hex: y/n	escape and RTF hex chr with a ''	default: no
		CHANGE - pre ver 05k this was default: yes.
	chr:(chr in FipSeq):(FipSeq string)
		Replace this character with the string
		This can be a printable chr or an escaped number. The number is
		octal/dec/hex depending on the preceding 'number' keyword (if any).
		eg	chr:313:&pound;	chr:<:&lt;
			Note that the ';' is part of the string and NOT a comment as it does NOT
start the line.
	style: All extra text before and/or after a new RTF styletyp.
		There are no defaults at all for styletyp.
		Syntax	style:(StyleNumber)	(Text to output)
		Sub keywords are
			before
			after
			para	replacement for a par inside this style
		Eg:	style:10040	before:[HH]n	after:ZZ
			style:10039	before:[TT]n
			style:10099	before:"abc def ghi"
	or, using the same syntax, you can use the names of styles - note the double
quotes as we are
		embedding spaces.
			stylename:"Heading 1"	before:<hl4>	after:</hl4>

	tag:(name)	add data before or strip any data associated with this tag
			tag:fonttbl	zap:
			tag:colormap	zap:
			tag:stylesheet	zap:
			tag:rdquote	before:'	zap:
			tag:endnote	before:<EndNote>
			Sub keywords are
				zap:		strip any data and do the same for following tags
						on this level
				zap-this:	strip any data for this tag ONLY,
						revert to prevous setting for following tags
				allow:		pass data and do so for any following tags on this level
				allow-this:	pass this data but
						revert to prevous setting for following tags
				before:(FipSeq)	add this data where the tag was
				after:(FipSeq)	add this data at the end of the level of this tag
				toggle:		see below

			The default is 'allow' for all tags not otherwise

			Certain tags (or in RTF parlance, control words) are 'toggles' and
			can have an 'after:' keyword too. The RTF spec on the Microsoft web site
			(try msdn.microsoft.com and search for RTF)

			; bold on= b, off= b0
			tag:b	before:<b>	after:</b>	toggle:
			tag:i	before:<i>	after:</i>	toggle:
			These are mainly font toggles and are automatically reset on a plain tag
			unless the 'no-toggle-reset-on-plain:' parameter is present

	no-toggle-reset-on-plain:
		DO NOT reset all the toggles on a plain tag

	bbc-header-file: file name of a parameter file describing a
		BBC-M Companion file. This file has the syntax of
			; comment
			fiphdr:A3	size:55	type:a,n,b
		The fields are consequetive so any gaps (or unwanted
		fields should be flagged as a FipHdr field of '$$'
			fiphdr:$$	size:3
		Fields which repeat are labelled :
			fiphdr:TT	size:3	repeat:
		The filename and other NUL terminated variable
			length fields are labelled:
			fiphdr:FF	size:0	variable:

		Standing files :
			For fiphdrs, syntax is 1st is the lookup, 2nd is new
			country-fiphdr:JC	LC
			service-fiphdr:JZ	LZ
			language-fiphdr:JL	LL
			country-codes:/fip/tables/setup/country.txt
			service-codes:/fip/tables/setup/services.txt
			language-codes:/fip/tables/setup/language.txt
		companion-file-queue: queue name for the companion file
			default is the same as the input file.

	bbc-kill-file: File whose contents (in FipSeq) will replace
			the data part of the incoming file	default: none
	bbc-kill-style: Kill style number.
		All text in styles LESS than this style is stripped
		from a XKILLed file. Once triggered, all subsequent text
		is passed.					default: 25

	error-dest: Destination to send files in error to.
		default is 'xrtferror'
	allow-text-files:
		Normally only RTF files are processed and any non-rtf
		files have their data stripped - zero length data files
		are created.
		This allows the data from non-rtf files to be processed too,
		BUT only if there are NO "{rtf" start tags.
	balance-store: Name of the balance group for sending the input file
		to remote systems. If BBCM flag is on, the companion
		file is also copied. This uses the done queue - so files
		are balanced ONLY if a done queue has been specified.
	log-line: Line of FipSeq to replace normal logging
			default is log-line:SN DU
	primary-host:	Primary host for this service
		The default host is the one we are running on. Use this to
		force redun_balance files to be output on a different one.
		(NOT WINNT)
	timing-stats: yes/no
		Turn on timing statistics		default: no

Where sections of FipHdr fields are required or changes to the output style,
use keywords : fixed, partial, combie, optional, repeat and/or style. (see The
SysAdmin manual for more information).

	They are normally specified :
		fixed:QZ	1234543
		partial:QT	ST,3,2,U,<,>
		combie:QY	ep|na,(0000000)a
		option:QE	ep,11,7,s
		repeat:QK	XK,-,3
	or	repeat:QP	PK,,4,#X
		fipseq-style:QS	XN,%.03d
		repeat:QL	XL	"99"="abc" "101"="def

Note the fipseq style has been renamed to 'fipseq-style' for this program only.

Pls never allow any of your scripts to loop as ipxrtf waits for completion
before continung !

Input Parameters are (all optional) :
Either	-1 : name of a single file		default: spooler
Or	-i : input queue			default: spool/xrtf
		If this does NOT start with a '/', it is assumed under spool.

	-o : output queue			default: spool/2go
		If this does NOT start with a '/', it is assumed under spool.
	-d : done queue for input file		default: file is deleted
		If this does NOT start with a '/', it is assumed under spool.
	-2 : Second copy done for input file		default: file is deleted
		If this does NOT start with a '/', it is assumed under spool.
	-z : parameter file in tables/setup	default: tables/setup/XRTF
	-w : file wait for files arriving across a network.	def: 0 secs
	-u : owner if not that of the logon	default: logon at start
	-X : do NOT keep the incoming DU,	default: incoming DU
		use the "dest" parameter.
	-l : do NOT log files in		default: log
	-S : Run thru the input file and	default: dont
		display	all tags, level and data as it is being processed.
		Use this (with the -1 switch) to debug troublesome files.
	-h : extra FipHdr information to add	default: none
	-k : Filename mask. Send only files containing this string.
					default: send all files
	-K : Filename unmask. Do NOT Send files containing this string.
					default: send all files
	-D : do not delete the data or the BBC companion file if there is one.
	-v : print version number and exit

testing Example
./ipxrtf -1 /fip/spool/test/sud3696.rtf -D -S -o xo -z TEST | tee RTF.TEST

Version Control
;005p3	29jan02 added NON-rtf files for BBCm
	;a/b 19mar02 cleanups
	;c 25aug02 tracking levels for font/toggles
	;d 09jun03 added stylesheet names
	;e 23apr05 strip leading Spaces/CR/NL from stylenames
	;f-j 10aug06 added timing-stats and added -h (;h bugette in stylesheet)
	;k 18nov06 added escape-hex: for 'xx notation RTF hex chrs=CHANGE to DEFAULT
	;l-m 20nov06 added chr:
	;n-o 24may07 added -2 for 2nd don que
	;p3 13dec07 made dest FipSeq ;2 added preserve-fiphdr ;p3 is (nl) is
hardreturn ?

(copyright) 2014 and previous years FingerPost Ltd.