Article 7468 of comp.lang.perl:
Xref: feenix.metronet.com gnu.misc.discuss:4427 comp.lang.perl:7468
Newsgroups: gnu.misc.discuss,comp.lang.perl
From: timbo@ig.co.uk (Tim Bunce)
Path: feenix.metronet.com!news.ecn.bgu.edu!usenet.ins.cwru.edu!howland.reston.ans.net!pipex!demon!ig.co.uk!timbo
Subject: Re: Using templates for invoicing, purhcase orders, balance sheets, 
         etc.
Summary: Perl report writer embedded into FrameMaker
References: <stevedavCFo0t5.D1o@netcom.com>
Organisation: Paul Ingram Group, Software Systems, +44 483 424424
Date: Mon, 1 Nov 1993 11:18:52 +0000
Message-ID: <CFt8pB.K4E@ig.co.uk>
Sender: usenet@demon.co.uk
Lines: 90

In article <stevedavCFo0t5.D1o@netcom.com> stevedav@netcom.com (Steve Davidson) writes:
>I'm looking for a report generaion software similar to mailing list
>software but enhanced for many common reporting functions.
>
>The basic design is a report template that substitutes data at
>appropriate points (like a mailing list).
>
>=+=+=+=+=+=+=+=+ The data might look like: =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
>
>Client: XYZ Corp
>Address: 123 Main Street
>Activity:          Hours:        <--- Labels
>Programmed this	   2.0            /
>Programmed that	   4.1           <--- Table or list of data
>debugging, etc.	   12.2           \
>
>=+=+=+=+=+=+=+=+ The Report template: ==+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
>
>Client: <Client>              Date: <!date>
>Address: <Address>
>Table of Billable items:
><Activity>        <Hours>        <sub=<Hours>*50>    <total+=<sub>>
>
>============================================================
>
>Notice the table data and the in-line computations.
>
>Uncommon features needed are: in-line command execution (such as
><!date>) table handling (for a series of repeated data like <activity>
>and <hours>), and computations (such as <sub=<Hours>*50>)
>
>Does anyone know of software that does this?
>
We do... but it's commercial.

>              --------======= * =======--------
>                       Steven Davidson
>                       steved@cfcl.com

Are you a FrameMaker user? (Just in case you don;t know, FrameMaker is
one of the leading technical publishing systems.)

We have a product that enables you to embed perl code into FrameMaker
documents! It can build FrameMaker tables and even create 3D colour
business graphs and charts. We can also supply database interfaces
so that your FrameMaker documents can make dynamic SQL database queries
whilst they are being built.

Because it's based on FrameMaker you get ALL FrameMakers abilities
(including very good table handling) and beautiful output documents.

We developed the system for a major corporation in the UK and they are
using it to produce very complex (50+ page) management reports including
many tables and charts from data stored in an oracle database.

Some examples:

Perl code can be embedded into FrameMaker markers, the marker inserts
into the document the value of the last expression evaluated:

    `date`

    $sub = $hours * 50; $total += $sub; $sub


Perl code embedded into FrameMaker text flows:

	*ary = &ArrayCreate("Sales Data",   # title of array
						"year, sales",  # field names
						"1");           # which fields are the keys

    $csr = &DbOpen($db, "select year, sum(sales) from sales
                         where year between :1 and :2 group by year");
    &DbBind($csr, $start_year, end_year); # bind values to sql

    &ArrayLoad(*ary, 'DbFetch', $csr);  # suck all data into array

    # embedded into a template table header:
    &TableBuild(*ary);   # build table rows from array data

    # embedded into an anchored frame (very basic example):
    &Graph(Data, *ary);  # draw graph into this frame

The functions above are library functions that we supply but the
language is pure perl.

I hope that's of interest.

Regards,
Tim Bunce.