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

ipxadora

This program takes output files from MediaSystems Adora system and builds a
queue structure containing all the files suitable for a pulse database to
gather.

In order to process the file correctly, there is a ROUTING code either in the
FipHdr OR as a Tag in the data PLUS an (optional) FORMAT code for the name of a
parameter file to use.
	For ROUTING	FipHdr QR or Tag <ROUTING> in the <START> section
	For FORMAT	FipHdr QF or Tag <FORMAT> in the <START> section

Valid ROUTINGs are
	CLASSLINKER	- create a PCS ClassLinker structure
	PULSE		- create individual Pulse files and send to spool/2ftp
				with FipHdr
	SINGLE		- create single file per ad and add FipHdr
				plus DU:(fip-dest) and send to spool/2go
	ALL		- create one file for all ads and add FipHdr
				plus DU:(fip-dest) and send to spool/2go

The FORMAT code is use as the name of the parameter file in tables/setup and,
if not there, defaults to the ROUTING code.

The program first goes and gets its parameter file :
	tables/setup/XADORA.(Format Code)
	eg tables/setup/XADORA.PULSE for Pulse files.

The format of this file is :
	; comment line
	toptag: XML tag which is the wrapper around a single ad
		Do not specify the '<>/' chrs.
		default: FIP-ADORA-DATA


	datatag: Tag signifying that Screen data follows
		Do not specify the '<>/' chrs.
		default: DATA

	convert-adtype:
	convert-style:  AdTypes/Styles which need to be converted.
		(these two are exactly the same thing)
		There are normally several adtypes each specified on its own line
		convert-style:"Complete Text T"	break:<$f"HelveticaNeue-Condensed">
		Sub parameters are ( all optional):
			start:	(Markup to insert at the top of the data)
			end:	(Markup to insert after the data)
			break:	(Markup to insert when a BREAK code is found)
			pub:	(Pub code)
		The 'pub:(pub code)' is used to specify the markup for a
		particular publication code. Where there are multiple lines
		for the same Style, always specify the 'pub' lines
		before the default. Pub code refers to the <PUBCODE> tag.
	ignore-adtype: Adtype/Style to ignore for this Route.
	ignore-style:  Adtype/Style to ignore for this Route.

	xml-format: XML character format/style/name to be converted.
	justif-format: Format name to be converted.
		Sub parameters are the same a 'convert-style'
		Any formats NOT specified are just ignored.

	xml-font-change: XML font change from default for style
		default: change is ignored
		xml-font-change:"Euro Sans"	"<$f42Euro Sans 3342>"

	xml-leading-change:(FipSeq) Quark and other page makeup can change leading
using in-line markup
		Use this for mapping changes - the new value is in FipHdr field E0
		xml-leading-change:<*p(0,0,0,E0,0,0,g,"International English")>

	extra-fiphdr: Extra FipHdr information for output files
		Used only for Types - PULSE and FIP
		default: none

	pulse-epsf-fiphdr:	FipHdr fields for pulse epsf and text
	pulse-text-fiphdr:
		These default to the adding a 'DF' FipHDr field which
		is used to select the FTP parameter file for that type.
		defaults are	pulse-epsf-fiphdr:#DF:PULSE.EPSF
				pulse-text-fiphdr:#DF:PULSE.TEXT

	use-old-urn: If there is an Old URN, use that rather than the current.

	fiphdr-routing-field: FipHdr field containing the routing code if not QR
		eg fiphdr-routing-field:DU

	classlinker-ignore-subclass: Ignore the Subclass for ClassLinker

	pulse-path:
	cl-path:
	cl-ftp-path:
	fip-output-path:
	hires-path: Main data path for the High Resolution data files
		default is /home/ds/lithos/highres

	map-drive: Map a PC drive letter to a Unix Path
		default for all is the 'data-path'
		syntax - map-drive:(drive letter) (spaces/tab) (UnixPath)
		eg	map-drive:K /home/ds/bigdisk/low-availability

	force-case:nochg/upper/lower
		Force the case of all Header fields - URN, PUB etc.
		default is no-change.

	image:(name)	magic:(magic)	script:(script)
		Define an external script to be used for converting non-epsf
		hires files. See example below for the two types of TIFF.

	allow-top-spaces: Normally for all preceding spaces and blank lines
		are stripped from the top of the converted file.
		This preserves spaces etc.

	justif-file-before: Markup and other data to insert BEFORE any data
			in the output file.
	justif-before:	Markup and other data to insert BEFORE any data
			in the output file.
	justif-after:	Markup and other data to insert AFTER any data
			in the output file.
	justif-file-after: Markup and other data to insert AFTER any data
			in the output file.

	justif-format-start:
	justif-format-end:
		The 2 chrs which start and stop a format
		default is	justif-format-start:xD1
				justif-format-end:xD2
	justif-meta:	Meta chr for formats chr	default:{
	justif-break:	Break Code chr		default:320 (hex D0)
	justif-comment-start:
	justif-comment-end:
	justif-comment-end2:
		The 2 chrs which start and stop a comment
		default is	justif-comment-start:xEE
				justif-comment-end:xEF
				justif-comment-end2:xED
	justif-hide-start:
	justif-hide-end:
		The 2 chrs which start and stop hidden text
		default is	justif-hide-start:xFD
				justif-hide-end:xFE
	xml-chr:
	justif-chr: Replacement chr or string for a specific chr in the data.
		You will need to check 'Justif Manager' for the codes
		used on your system.
		This is used only for special chrs. Functions are covered
		by the other parameters. Generally only accented chrs and
		Pi's will need to be mapped.
		Both chr and string are in FipSeq and will be parsed.
		eg	justif-chr:xDB <$f$BI>
			justif-chr:xE0 r
			justif-chr:@	<\@>
		For xml entities, use e9999 or uAAAA to specify big numbers
			e is a 4 digit DECIMAL number
			u is a 4 digit HEX number
		These two give exactly the same result :
			xml-chr:e8364	(EURO)
			xml-chr:u20ac	(EURO)
		Remeber that both these take 4 digit numbers - so zero pad pls.
			xml-chr:e0732	^
	default-xml-chr:s
		If a high end (ie not latin1 and > decimal 255) entity is not specified in
the 'xml-chr' parameters, use this to force the chr to a single default chr.
		default is '?'

	justif-end-of-line: Used to replace the CR in the data. default is <\n>
		An optional 'pub:' parameter may be added for those Pubs which
		need a different eoln. These should be specified BEFORE the
		default/catch-all-the-others.
		eg
			; End of line - for Adsmart we just want the Space
			justif-end-of-line:s   pub:AD
			justif-end-of-line:<\n>

	want-quark-quads:no/yes/left/right/centre/justified
		use the <*J> etc commands at the beginning of the line (ie not at the end
where Justif has them)
		no	- do NOT output the command at start of each line (default)
		yes	- do and start with setting as quad Left
		left	- do and start with setting as quad Left
		right	- do and start with setting as quad Right
		center	- do and start with setting as quad Centre
		justified - do and start with setting as quad Justified
		force - do and start with setting as quad ForceJustified
		(only the first letter is crucial)
	justif-qc:C	Quark code for a justif Quad Centre - xE0
	justif-qr:R	Quark code for a justif Quad Right - xE1
	justif-ql:L	Quark code for a justif Quad Left - xE2
	justif-qj:J	Quark code for a justif Quad Justif/Middle  - xE4
		Single Justif chrs for Quark Quads,
		These are flagged if want-quark-quads:yes
		To make the Justif QL be a Quark *J,
			justif-QL:J

	res-fork-software:	EtherShare, Ushare, None
		default is ethershare
	res-fork-path:		Offset to the resource fork
		default is /.rsrc
	res-fork-type-epsf:	4 letter code for the EPSF type
		default: 'EPSF'
	res-fork-type-text:	4 letter code for the TEXT type
		default: 'TEXT'
	res-fork-creator:	4 letter code for the creator
		default: 'FIPO'

	ignore-first-eoln: (pub)	Make the first end of line a space
		for this pub..
	strip-multiple-spaces:	Used to do just that !
	ftp-classlinker:
		Send all ClassLinker files to spool/2ftp and do NOT build a
		normal Classlinker file structure
		default is NO
	send-classlinker-log:yes/no
		if FTPing Classlinker files, use this to NOT bother with the log
		default is YES if 'ftp-classlinker' has been set.

	cl-urn-size:
	pulse-urn-size:
	fip-urn-size:
		Change the size of the URN - defaults to 6
	new-urn:	FipSeq to alter the URN
		eg to add a leading zero
		new-urn:0QX

	xml-hyphen: (FipSeq)
		Replacement text for a hyphen for the XML feed (ie NOT Justif)
			default is '-'
		For quark, pls remember to double any backies :	xml-hyphen:<\->

	xml-bold
	xml-end-bold
	xml-underline
	xml-end-underline
	xml-italic
	xml-end-italic

	xml-default-leading:8 for 8pts

ClassLinker normally writes it data files to a structure on its local drive. If
this happens to be on another system - NFS drives for example - it is a good
idea to check that drive is actually mounted beforehand.

A parameter file keyword, 'chkexists' can be used to check whether a specified
file or queue exists before the input queue is scavenged (or output written).
As filenames starting with a dot are ignored, one way to implement this is to
touch a file in this input queue. eg :
	cd /mountedOnRemote/spool/input
	touch .DontZapMePls
While in the parameter file we could have something like :
	chkexists:/mountedOnRemote/spool/input/.DontZapMePls
Or if the classlinker-path is /tweedle/dum
	chkexists:Tester
will look for a file or folder called '/tweedle/dum/Tester'

Input parameters are (all optional) :
	-1 : (path/filename) run this single file and stop	default: spooled
	-C : do NOT check EPSFs for embedded low res	default: do
	-d : done queue for incoming		default: none
	-e : extra suffix for Parameter files	default: none
		ie -e DTI and the ROUTING is FREEAD
		uses XADORA.FREEAD.DTI not XADORA.FREEAD
		do not specify the '.'
		This suffix is also added to any DF: for ftp files.
	-i : input queue to scan		default: spool/xadora
	-l : do NOT log incoming files		default: log files
	-L : log ALL incidents plus files	default: log files
	-O : Check File/Queue name for output		default: none
		see above
		If the path starts with a '/', it is considered a hard path
		otherwise it is considered relative to the output queue.
	-w : file wait interval			default: 5 secs
	-x : debugging - show XML tags 		default: no
		use only with the -1 single file option
	-X : debugging - show XML tags and stop.default: no
		use only with the -1 single file option
	-z : name of parameter file		default: XADORA
		in tables/setup if not default
	-v : print version no and exit

-------------------------------
XML version
-----------

xml.a - formats/styles

Note that the CHARACTER styles/formats are decoded using 'xml-format'

So if the

; CharacterFormats
xml-format:"Ad Text"	start:"<$f42Helvetica 45 Light42>"
xml-format:"Ad Bold"	start:"<$f42Helvetica 55 Roman42>"
; Fractions are shrunk!
xml-format:"Fraction"   start:"<$f42Helvetica Fraction42h90"
xml-format:"Ad Reference Number" start:"<$f42Helvetica 45 Light42>"
xml-format:"Euro Symbol"	start:<$f42Euro Sans42>"

xml.b fonts - changing within a style

use xml-font-change where the charstyle stays the same but the font changes
xml-font-change:"Euro Sans"	start:<$f42Euro Sans42>"
on changing back, the full format is used as in 'xml-format'


xml.c - Watch out for high number entities/chrs

; <!ENTITY ensp	" "> <!-- en space, U+2002 ISOpub -->
; <!ENTITY emsp	" "> <!-- em space, U+2003 ISOpub -->
; <!ENTITY thinsp  " "> <!-- thin space, U+2009 ISOpub -->
; <!ENTITY ndash   "–"> <!-- en dash, U+2013 ISOpub -->
; <!ENTITY mdash   "—"> <!-- em dash, U+2014 ISOpub -->
; <!ENTITY euro   "€"> <!--  euro sign, U+20AC NEW -->

xml-chr:e8194  <\s>
xml-chr:e8195  <\s><\s>
xml-chr:e8201  <\p>
xml-chr:e8211  -
xml-chr:e8212  <\m>
;;xml-chr:u20ac	EURO

xml.d mapping bold, italic, underline and hyphens

xml-hyphen:<\->
	default is '-'
xml-bold:
	default is '<b>'
xml-underline:
	default is '<u>'
xml-italic:
	default is '<i>'
xml-end-bold:
xml-end-underline:
xml-end-italic:
	all these default to '<$>'

-------------------------------
-- Example of converting TIFFs to EPSF using image alchemy
; What convertions do we want to do (double quotes to keep the spaces)
image:tiffII	magic:"II*00" script:"/usr/forum/bin/alchemy QN QN.eps -Q -o
-e --."
image:tiffMM	magic:"MM00*" script:"/usr/forum/bin/alchemy QN QN.eps -Q -o
-e --."

The script MUST generate a file in spool/epsf with the same filename as the
input with an Extra extension of '.eps'.

Note that FipHdr fields available for 'image':
	QF - (optional) input parameter giving Format file - WEB for XADORA.WEB
	QR - (optional) input parameter giving Routing - PULSE, CLASSLINKER, etc
	QN - Full Path and Filename of the input file to be converted
	SN - name of the input file to the this program


-------------------------------
Example of input Data.
The Stored procedure produces an XML feed with three types of main tags
	START		- giving the parameters chosen.
	FIP-ADORA-DATA	- structure for each Ad
	EXIT		- stating number of ads processed and exit code.

<?xml version="1.0" standalone="yes" ?>
<START>
<FORMAT>TEST
<ROUTING>PULSE
<START-PUBDATE>11-may-1999
<START-PUB>du
</START>
<FIP-ADORA-DATA>
<FIP-NO/>1
<PUBDATE/>18-May-1999
<PUB/>Canterbury Extra
<SECTION/>BMD
<CLASS/>90
<CLASSKEY/>90
<SUBCLASS/>9004
<URN/>0007HU0001
<ADTYPE/>Space Booking P
<OLDURN/>
<PUBCODE/>du
<MATERIAL/>9944
<MATVER/>0
<DATA>
}QzRb
Qse0,30m bd,%0RQse9,1RQu45Rp~nADTo jumble sale at the old school house in
Folkes
nADTo}yQse9,0RQif %s ne 0Rb ohich; is great value, hon>
QfiRQbfR~</FIP-ADORA-DATA>|
.... etc etc
<EXIT>
<NO-OF-ADS>98
<EXIT-STATUS>NormalEnd.Sqlstatus=2
</EXIT>

-------------------------------
FipHdr fields for PULSE and FIP/SINGLE

The following FipHdr fields are added to each indvidual Ad file created for
both Pulse and/or Fip routings :
	QT	AdType
	QP	PubCode
	QD	InsertDate
	QE	InsertDate as CCYYMMDD
	QC	Class
	QK	ClassKey
	QS	SubClass
	QO	oldURN
	QN	URN
	QH	Hires
	QX	full adinsert URN with insertion sequence no
	QM	Material
	QV	Matver
	QB	1000000 - Material number
	QY	1000000 - Matver number
	QW	OutputType - TEXT or EPSF
			any ad which has a ad-type or style specified in by 'convert-adtype:' or
'convert-style:' is TEXT; all others are EPSF

	(QL is used for FTPing the ClassLinker Log)
	(QF is used for FTPing the ClassLinker data resource fork folder name)
	(QZ is used for FTPing the ClassLinker data type folder name
		EpsfFiles or QuarkText)

Also remember QF and QR are FORMAT and ROUTING

-- For the XML variant,
	QJ is used as the Vertical in points when floating the ad vertically (only for
the top and tail)
		(if Centred - QJ is half the difference)
	Q1 is the total depth (<Height100mm> in points)
	Q2 is the total width (<Width100mm> in points)
	Q3 is same as QJ BUT is NOT present/blank if < 2pts (2pts is the min ptsize in
quark6.5)
	Q4 is same as QJ BUT is minimum 3pts
	QL is used as the Horizontal in points when floating the ad vertically (only
for the top and tail)
		(if Centred - QL is half the difference)

	; Q0 is an option on Q3 which is ONLY there if > 2pts
	option:Q0	Q3


Version Control
;003r4	31mar06 Adora XML version ;a-h XML
	;i 20sep06 bugette trailing spaces removed in xml-chr too early
	;j-l 21sep06 new XMLinternals (;l for bugette in justif-chr/xml-chr)
	;m 22nov06 bug in XML where style has no font and bugette2 for xml-chr
	;n-p1 31may07 added VertAlignment and conv-adtype ... end: (;3p1 TagAtt)
	;p2 25jun08 add fiphdr for all EPSadd fiphdr for all EPSF
	;q 31apr09 new, flexi tags...
	;r1 18sep09 STYLE/STYLES are the same now ;2 20may10 slash in OldUrn ;3 5apr12
bugette
		;4 18dec13 interpret leading-style
;002n	08sep00 'chkexits/wait' for NFS
	and started outputData and ftp for CLASSLINKER
	;a-b 28feb01 cleanup plus ignore-adtype
	;c-d added new-urn and allowed CR
	;e 18aug03 added QM/QV
	;f-h 05sep03 added quark justif <*C>R/L/J etc
	;i 08nov03 added xED support for Justif warings (in Green)
	;j-n 18aug04 added QB and QY for million - material/matver
		plus -e for extra Parameter name
		plus justif-file-before/after
;001a	29jul99 added FIP-SINGLE and QF/<FORMAT>
	;a 28sep99 save Pub PP, PubDate PD, Section PS - better ALLname

(copyright) 2014 and previous years FingerPost Ltd.