ipxrns

ipxrns - new version

IPXRNS is to handle the new RNS (Sequence 5plus) service. It sits waiting for
incoming data, parses it, reformats it and sends it on.

eg  ipxrns -s(stratus) -p(theirPort) -n RNS.SEP95
or  ipxrns -s(stratus) -p(theirPort) -n RNS.SEP95 -M
        pram file rns.sep95 is in tables/setup
        all files go to wfs5 spool/newrns (destination newrns)
        -M for this one does the manual resends
or  ipxrns  -P(localPort) -n (param file)
or  ipxrns  -P(localPort) -n (param file) -I    for interactive from iprnsd

Record types and associated formatting and destinations are held in the
parameter file in tables/setup. This is normally the ServiceName (-n input
switch) in UpperCase but can be overridden by the '-z' flag.

One and Only one IPXRNS should have the -M for 'look for Manual resends' flag.
These use files in fix to track what has been asked for.

For Manual resends, use iprnsr to send. This leaves a note ipxrns which scans
the file when the second (third, etc) time check/idle poll arrives with no
intervening traffic. This is to make sure the line is quiet before asking for
repeats.

Crontab every NIGHT should erase all files starting '/fip/fix/rns*' but in any
case the program should zap the 'rns' files at midnight.

Auto resends MAY not come clean if there is heavy traffic as there MAY be 2 or
more files interleaved.

The Syntax of the parameter file is :
    ; comment
    msgtyp:(Type) version:(Version) process:(Process) usekey:(Key)
    where   msgtyp  is the LMIL Message Type as in Ref SEQ504
            such as '5NC' for RNS News Control
            Case is ignored.
        version is Message Version Identifier in SEQ504
            normally this will be 'AA'
            (006t may also be 'AB')
            Case is ignored.
        process is the internal IPXR process and can be :
            Case is ignored.
            rnsC    for RNS news control, version aa
            rnsT    for RNS news text, version aa and ab
            rnsF    for RNS news flash, version aa
            rnsH    for RNS header or trailer, ver aa
            rnsX    for RNS missing data, version aa
            rnsR    for RNS resend, first block, version aa
            idle    for Idle Polls
            yuk for Disaster Recovery
            If no process is specified the 'msgtyp'
            is ignored.
        usekey  is the Key for routing using 'key' below
            Case is ignored.

    key:(Key)  dest:(Valid destinations)
or  key:(Key)  group:(Group)    dest:(Valid destinations)
    where   key is a key described above. Note that the
            key for RNS news Control is ignored as the
            News Text is used.
        dest    is one or more valid destinations that
            must be in the tables/sys/USERS file.
            Two or more are separated by '+' NOT spcs
        group   is the (Optional) Announcement Group Code
    before:     Fixed text to add at the start of any Rns file
    after:      Fixed text to add at the end of any Rns file
    fixhdr:     additional Fip Hdr info you may want to add
    chrset:     defaults to 'ascii' - FipHdr field SC
    defdest:    defaults to 'rns'  FipHdr field DU
    idlemsg:    message otput if an Idle Poll is found
            default is "Time Check"
    stripeol:   Strip multiple End of lines
            default - dont
    dest-Amarker: (Valid destinations)
            This sends a quick FipHdr-only file of an incoming
            RNS story made from the news control information.
            The FipHdr field specified is used to flag it is
            one of these rushes. The whole text file is sent
            only when all the data is available.
            default: do not send.
    amarker-folder: (Folder for Amarkers)
            default is the main output folder
    dest-abstract (Valid destinations)
            This sends a quick FipHdr and first chunk of an
            incoming RNS story made from the news control
            information and first bit of data.
            The FipHdr field specified is used to flag it is
            one of these rushes. The whole text file is sent
            only when all the data is available.
            default: do not send.
    abstract-size: (size in bytes)  default: 10000 bytes
    abstract-small-files:yes/no
            default: no
    dest-chunk (Valid destinations)
            This sends a new file containing the FipHdr and data
            in chunks up to factors of 'chunk-size'.
            ie the incoming RNS story made from the news control
            information and first bit of data.
            The FipHdr field specified is used to flag it is
            one of these rushes. The whole text file is sent
            only when all the data is available.
            default: do not send.
    chunk-size: (size in bytes) default: 10000 bytes
    max-chunk-size: (size in bytes)
            Do NOT chunk after this filesize; put all the remaining data into a single,
last chunk
            default: no limit
    chunk-break-table: (yes/no)
            Do/Do NOT break chunks inside an HTML table default: no
    chunk-folder: (Folder for Chunks)
            default is the main output folder
    add-uid: Add the ID in the HR FipHdr field
    duplicate-folder: (Folder for a duplicate of the file)
            Only complete files are duplicated, not chunks, Amarkers or Abstracts
            default: no duplicates
    duplicate-fiphdr: (extra FipHdr for a duplicate file)
            default: no duplicates

The program will send to the destination that first matches the key. So if
there are several 'if' lines, the first one is used. So any 'if/group' lines,
must be ABOVE the 'if' line for that key with NO 'group' keyword.

ONLY those 'msgtyp's that need to be processed need to be specified in the
parameter file. All others are stripped.

RNS file have a Fip Header of :
        SN - announcement number (with preceeding 'rns')
        SQ - msgseqno of this Control record.
        RA - ann Date and time
        RB - ann Date and time - in original format
        RC - 3 chrs : Y/Z (resend), Correction, Standby
        RY - Y/Z resend flag only or dot
        RR - previous Announcement Number
        RH - Headline
        RD - Company Description
        RI - ISIN : Tradable Instrument Code
        RJ - ISIN : Country Code
        RP - EPIC or Tradable Instrument Display Mnemonic
        RG - Announcement Group Code
        RT - Category - Security Classification (alpha, beta etc)
        RW - For Service Messages/Disaster Recovery/Time Checks - the actual one line
message
        RZ - For Service Messages/Disaster Recovery/Time Checks - the actual record
type
        SI - Seaq Intl indicator
        EA,EF,EK,EP Related Headline    1-4
        EB,EG,EL,EQ Related Company Desc 1-4
        EC,EH,EM,ER Related ISIN Code   1-4
        ED,EI,EN,ES Related ISIN Country 1-4
        EE,EJ,EO,ET Related EPIC     1-4

plus    RU - Service :AMR, Abtract or blank (for main files)
        RF - type of file   S-startheadline, H-chunk, R-replace all

Input Parameters :
    Mandatory :
    -n : name of this service           default: RNS
either  -s : Spider name or TTY device name     default: none
    -p : Spider port number          default: none
or  -P : Port on UnixBox to use for outbound    default: none
        This is only used where Terminal Servers can
        NOT run reverse telnet correctly and need to set a Permanent
        Virtual Connection across the ethernet to a fixed port number
        on the UnixBox
    Optional :
    -I : use this for the receive from interactive  default: broadcast
        (ths switch is capital eye for 'i' not el for 'l')
    -M : This copy is used for any manual resends   default: no
    -a : Allow automatic resends            default: not allowed
    -A : Do NOT Allow automatic resends     default: not allowed
    -L : also display all incoming traffic.     default: no
    -o : output queue               default: 2go
    -d : dump the RAW feed into file in dump/SU default: no
    -z : name of parameter file if not the ServiceName  def: no
    -X : incoming records are NOT prefixed with an STX  def: yestheyare
    -m : Using Multicast                default: no
    -v : Print the version number and exit

Version Control
;006y14 05jul99 added rnsR and rnsS
    ;a 27jul99 woops bugettre - no seqno for resends SQ:1-3
    ;b 26aug99 woops - put err msgs back in for -P
    ;c 17aug01 LINUX version
    ;d 26nov01 RNS Phase3 mods ...
    ;e 19jan02 added Service messages in an RW FipHdr field
    ;f-i 5jun02 WINNT
    ;j 08jul02 added send-Amarker:
    ;k-m 25jul02 added mbone -m
    ;n-o 27nov03 added Abstract
    ;p-q 04aug04 allow -s host for -P
    ;r-s 16aug04 added abstract-small-files:yes/no
    ;t 26sep05 added 5NC version AB
        msgtyp:5nc  version:ab  process:rnsC    usekey:rnscopy
    ;u 02jun06 added speedy and -9
    ;v-x 15feb07 added chunking (again)
    ;y14 17sep07 added duplicates, chunk limit and break-tables
        and chunk folder and amarker-folder and abstract-folder
        (11 and 12a - better error handling for duff input data and bug in abstract)
        (14 mods to mcast lib - no xrns)

(copyright) 2017 and previous years FingerPost Ltd.