IPLIB reads a library file in the FIP Library format.

It then converts the header fields to that of any one of several public
databases including :
    Mead Data Central/NEXIS
    Lockheed Dialog
    FT-Profile - two versions
    QL systems
    RNIB format
    a pc diskette format
    BASIS - two versions
    Generic SGML format
    Generic HTML format
    or, for the cases where the data is correct, no change

Files coming into the input queue have a client/group code in a Fip Hdr field -
normally DA. This is checked against the tables/sys/GROUPS file. Only client
types LIB and SYN are actually handled here and MAIL, UNIXMAIL etc are sent as
individual files to the postman, IPPOST.

If the client is NOT in the GROUPS file, it may be handled here using the
parameter file 'libclient:' parameter.

IPLIB uses a parameter file, normally tables/setup/LIBRARY, which allows :

    ; comment lines start with a semi-colon
    newDA:  Fip Hdr field containing the client or group code)
            default is the DA field.
            eg  newDA:FP
    map:     Map the begining of a filename for a particular client key
        (see also as a subkeyword in 'libclient')
    libclient: (client name)    options.
        Prescribe the processing option for that particular client.
        All options must be on one and only one line.
        format: (type)      processing type for this client
            valid formats are :
                fds ReuterFile-FDS
                k-dkt   PC format
                profile FT-Profile
                xprofile FT-Profile - no stars at end format
                mead    mead or Nexis
                ql  QL systems
                lockheed Lockheed Dialog
                datatimes DataTimes
                rnib    RNIB format
                sgml    SGML format
                html    HTML format
                basis   BASIS format
                v2basis 2nd BASIS format
                curly   DT format
                nochange No Change - data is already correct
        syntrigger:     start the transmission via IPSYN
        xchg: (xchg name)   name of an Xchg in tables/xchg which
                    will be run on the output file.
        script: (script name)   name of a script/program to be run
                    against the output file (after xchg if there)
        dest: (new destination) Valid destination for the output file
        queue: (queuename)  subqueue for the output file.
                    This is under the output queue, spool/syn,
                    or its replacement with the '-o' input switch.
                    (either dest or queue should be specified)
        pcname:         Make the filename a PC style (8 dot 3)
        inc-seqno:      For Fds format, add a unique number to [FF]
        end-of-para:        End of Paragraph string in FipSeq if not the original
                    eg end-of-para:\s>\b\s\s\s
        map:    (filename)=(client key) [ opt , (nextname)=(next key) ... ]
            Map the begining of a filename for a particular client key
            This is used for ReuterLine nad Profile as a Publication code ([SO])
                eg:  map:dm=DMR,ind=IND,ios=INS,pp=PP,sl=SL,sm=SM
            Up to 500 maps can be specified. (version 05c was 300)
            Keys can be put in double quotes if spaces or punctuation is required.
                eg:     map:dm="The Mirror",sm="Sunday Mirror"
        line-length: no of chrs on a line.
            default is normally 0 or 75 for BASIS

There must be a 'libclient' line for each LIB and SYN client specified in the
DA field. The defaults are :
    format: pc format
    no syntrigger
    no xchg
    no script
    queue will be the name of the client (lowercase) in spool/syn on this system
    no mapping so for profile and FDS, the Publication code is the client name

Input switches are : all optional :
    -i : queue to scan          default: spool/2lib
    -o : output queue           default: spool/syn
    -d : done queue for raw input       default: input files are zapped
    -t : scan time of directory     default: 5 secs
    -l : log each msg in            default: do NOT log
    -z : parameter file         default: tables/setup/LIBRARY
    -v : display version number and exit.

Example :
;   LIBRARY setup file for iplib
map:daily   PUB
libclient:nexis     type:mead   xchg:LIBNEXIS   queue:nexis
libclient:radiosuisse   type:pc     queue:radio

Version Control
;005e   28may99 added basis1, basis2 and curly/dt formats
    ;a 15sep99 SEPTEMBER spelt wrongly
    ;b  4jan00 y2k bug with year
    ;c 26apr00 bug - duff data caused a header field > 1000 chrs
    ;d 01sep05 upped maps to 500
    ;e 07feb09 added -d done-que

(copyright) 2017 and previous years FingerPost Ltd.