 |
Classics Forum
RE: save aggregate as variable in report
Posted By: Date:
I agree with Jonathan here in that if it is a MAJOR complexity, you may want to consider 4gl. Since I can't do 4gl that much in our production environment, what I do is create Stored Procedure Language (SPL) routines with very narrow focuses and load them temporarily for use by SQL or ACE. Beware that you will only hold a nominal number of SPLs in buffer (50ish, according to Ron Flannery in his INFORMIX Handbook). This isn't ideal either, but it beats writing 4gl in a database that already utilizes about 250KLOC of code in three or four languages... C++, UNIX, 4GL, etc...
Rob Konikoff Eagle Group-2CMMC Ft Bragg COMM:910-396-1686/1096/6105/4883 DSN:236-XXXX Have you tried FINLOG today? http://www.finlogonline.com
-----Original Message----- From: Jonathan Le.... [mailto:jleffler@us.ibm.com] Sent: Thursday, February 27, 2003 1:05 PM To: classics@iiug.org Subject: Re: save aggregate as variable in report [94]
There are times when it is necessary to maintain your own aggregates, but most often you don't need to.
As several people pointed out, you can do a lot with multiple GROUP COUNT etc statements in different A.G.O blocks.
There are also limitations on what you can do, though. In the (rather substantial) report below, it is very hard to get all the statistics I really want. In particular, I'd like to count the number of distinct groups at the fr_grp level, but there isn't a simple way to do that. Also note the way that I have to list all the alternative options at the theme_name level. I've converted this to I4GL and most of these issues are a whole lot easier all of a sudden.
-- Jonathan Leffler (jleffler@us.ibm.com) STSM, Informix Database Engineering, IBM Data Management Solutions 4100 Bohannon Drive, Menlo Park, CA 94025 Tel: +1 650-926-6921 Tie-Line: 630-6921 "I don't suffer from insanity; I enjoy every minute of it!"
|---------+----------------------------> | | "JAY ZWAGERMAN" | | | <jay2@iafalls.com| | | > | | | Sent by: | | | forum.subscriber@| | | iiug.org | | | | | | | | | 02/27/2003 06:27 | | | AM | | | | |---------+----------------------------> >--------------------------------------------------------------------------- ------------------------------------------------------------------| | | | To: classics@iiug.org | | cc: | | Subject: save aggregate as variable in report [86] | | | | | >--------------------------------------------------------------------------- ------------------------------------------------------------------|
Hello
I have created an ace report which calculates totals in a AFTER GROUP OF sections. I want to then create a total of those totals, but I don't know how to do it. I think that I have to save the aggregate value from one group of rows in a variable in order to use it to compute an aggregate over a subsequent group. Am I correct here? Does anyone know how?
Any help is appreciated
-- @(#)$Id: frdbhtml95.ace,v 4.14 2003/02/12 19:55:00 jleffler Exp $ -- @(#)Project: Servers 9.Next Feature Prioritization -- @(#)Feature Prioritization Report - HTML Output -- @(#)Author: JL
DATABASE frdb@smartpts END
DEFINE PARAM[1] list_num INTEGER VARIABLE asd_url CHAR(70) VARIABLE pts_url CHAR(70) VARIABLE version CHAR(45) VARIABLE c CHAR(1) -- HTML metacharacter mapping VARIABLE i INTEGER -- HTML metacharacter mapping VARIABLE j INTEGER -- HTML metacharacter mapping VARIABLE map VARCHAR(5) -- HTML metacharacter mapping VARIABLE pad INTEGER -- HTML metacharacter mapping VARIABLE sd CHAR(350) -- Copy of short description VARIABLE theme_count INTEGER VARIABLE disp_count INTEGER VARIABLE gr_disp_count INTEGER -- Count of groups of dispositions VARIABLE gr_fgrp_count INTEGER -- Count of feature groups within theme VARIABLE ov_fgrp_count INTEGER -- Count of feature groups overall VARIABLE ov_fnum_count INTEGER -- Count of feature numbers overall END
OUTPUT PAGE LENGTH 90 TOP MARGIN 0 BOTTOM MARGIN 0 LEFT MARGIN 0 RIGHT MARGIN 80 END
-- Create temp table x8 with fr_grp numbers, and fr_num as members of group. -- Group leaders are tagged 'A'; group members are tagged 'B'. SELECT f9.fr_num as fr_grp, f9.fr_num as fr_num, 'A' AS fr_type FROM fr_list_items f9 WHERE f9.fr_num NOT IN (SELECT member FROM fr_bug_group WHERE fr_list_num = $list_num) AND f9.abc_category != 'X' AND f9.fr_status != 'D' AND f9.fr_list_num = $list_num UNION SELECT f9.fr_num as fr_grp, grp.member as fr_num, 'B' AS fr_type FROM fr_list_items f9, fr_bug_group grp WHERE f9.fr_num = grp.master AND f9.abc_category != 'X' AND f9.fr_list_num = $list_num AND grp.fr_list_num = $list_num INTO TEMP x8;
-- Create temp table with fr_grp number and number of rows in the group. SELECT fr_grp, COUNT(*) AS grp_size FROM x8 GROUP BY fr_grp INTO TEMP x9;
SELECT f8.theme AS theme, -- defined by group master f8.disposition AS disposition, -- defined by group master f8.abc_category AS category, -- defined by group master f8.priority AS fe_priority, -- defined by group master x8.fr_grp, -- sequencing x8.fr_type, -- sequencing x8.fr_num, -- PTS FR number th.priority AS th_priority, -- sequencing bug.short_description, -- FR Description th.description AS theme_name, -- sequencing di.description AS disp_name, -- sequencing di.priority AS di_priority, -- sequencing l.title, -- list title o.owner_name AS owner, -- list owner l.updated, -- last time list modified p.project_id, -- project number p.codename, -- project code name p.description, -- project description p.projname, -- project name f8.risk, -- defined by group master f8.effort, -- defined by group master f8.benefit, -- defined by group master f8.impacts_csdk, -- defined by group master f8.req_user AS req_who, -- who it was requested by f8.req_why, -- why it was requested x9.grp_size -- for ROWSPAN information. FROM x8, x9, fr_list_items f8, themes th, dispositions di, pts_bug bug, fr_lists l, projects p, owners o WHERE f8.theme = th.theme AND f8.disposition = di.code AND x8.fr_grp = f8.fr_num AND x8.fr_grp = x9.fr_grp AND x8.fr_num = bug.bug_num AND f8.fr_list_num = $list_num AND f8.fr_list_num = l.fr_list_num AND l.owner_id = o.owner_id AND l.project_id = p.project_id AND th.project_id = p.project_id AND di.project_id = p.project_id ORDER BY th_priority DESC, theme_name, di_priority DESC, disposition, category, fe_priority DESC, fr_grp, fr_type, fr_num
END
FORMAT
FIRST PAGE HEADER LET pts_url = "http://lxptsws1.lenexa.ibm.com/Reporter/buginfo.cgi?bug=" LET asd_url = "http://rose.oak.informix.com/projects/falcon/FalconDocs3.html" PRINT "<HTML>" PRINT "<HEAD>" PRINT "<TITLE> Feature List: Themes and Prioritization </TITLE>" PRINT "</HEAD>" PRINT "<BODY BGCOLOR=WHITE>" PRINT "<A NAME='top'> </A>" PRINT "<H1 ALIGN=CENTER> Feature List: Themes and Prioritization </H1>" PRINT "<CENTER><B> <!--REPORT-DATE--> ", CURRENT YEAR TO SECOND, " </B></CENTER>" PRINT "<BR>"
PRINT "<TABLE ALIGN=CENTER WIDTH=95% BORDER=2 BGCOLOR='#CCCCFF'>" PRINT "<TR><TD COLSPAN=2 ALIGN=CENTER>", " Project Number ", project_id, "</TD></TR>" PRINT "<TR><TH WIDTH=50%> ", codename CLIPPED, " </TH><TH WIDTH=50%> ", projname CLIPPED, "</TH></TR>" PRINT "<TR><TD COLSPAN=2 ALIGN=CENTER>", description, "</TD></TR>" PRINT "</TABLE>" PRINT "<BR>"
PRINT "<TABLE ALIGN=CENTER WIDTH=95% BORDER=2 BGCOLOR='#CCCCFF'>" PRINT "<TR><TD COLSPAN=2 ALIGN=CENTER>", " Feature List Number ", list_num, "</TD></TR>" PRINT "<TR><TH COLSPAN=2 ALIGN=CENTER>", title, "</TH></TR>" PRINT "<TR><TD WIDTH=50%>", " Owner ", owner, "</TD><TD WIDTH=50%>", " Last Modified ", updated, "</TD></TR>" PRINT "</TABLE>" PRINT "<BR>"
PRINT "<P><TABLE ALIGN=CENTER WIDTH=95% BORDER=2>" PRINT "<TR><TD> Categories: A (must fix), B (might fix), C (won't fix) </TD></TR>" PRINT "<TR><TD> Priorities: -1 unassigned, 0 (won't happen) to 9 (very important)" PRINT "</TD></TR>" PRINT "<TR><TD> Risk: H(igh), M(edium), L(ow) </TD></TR>" PRINT "<TR><TD> Cost: H(igh), M(edium), L(ow) </TD></TR>" PRINT "<TR><TD> Benefit: H(igh), M(edium), L(ow) </TD></TR>" PRINT "<TR BGCOLOR='#CCFFCC'><TD>"; PRINT "[CSDK] Items tagged with [CSDK] on a green background impact CSDK."; PRINT "</TD></TR>" PRINT "<TR><TD>"; PRINT "Items with a white background should not impact CSDK." PRINT "</TD></TR>" PRINT "</TABLE>"
PRINT "<P>"
PRINT "Themes:"
-- FOREACH SELECT theme, description, priority, COUNT(*) -- INTO x_theme, x_desc, x_priority -- FROM themes -- GROUP BY theme, description, priority -- HAVING COUNT(*) > 0 -- ORDER BY priority DESC, description -- PRINT "[<A HREF=#", x_theme CLIPPED, "> ", x_desc CLIPPED, " </A>]" -- END FOREACH
LET theme_count = COUNT WHERE theme = "*no theme*" IF theme_count > 0 THEN PRINT "[<A HREF=#*no theme*> No specific theme designated </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "api" IF theme_count > 0 THEN PRINT "[<A HREF=#api> Application Development & Standards Compliance </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "bug" IF theme_count > 0 THEN PRINT "[<A HREF=#bug> Defect Reduction </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "cms" IF theme_count > 0 THEN PRINT "[<A HREF=#cms> Content Management Support </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "harp" IF theme_count > 0 THEN PRINT "[<A HREF=#harp> High Availability, Replication, Performance </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "hk" IF theme_count > 0 THEN PRINT "[<A HREF=#hk> Housekeeping </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "istar" IF theme_count > 0 THEN PRINT "[<A HREF=#istar> Distributed Database </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "isv" IF theme_count > 0 THEN PRINT "[<A HREF=#isv> Partner Interoperability/Compatibility </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "os" IF theme_count > 0 THEN PRINT "[<A HREF=#os> Platforms and Operating Systems </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "ras" IF theme_count > 0 THEN PRINT "[<A HREF=#ras> RAS Improvements </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "security" IF theme_count > 0 THEN PRINT "[<A HREF=#security> Security, Authentication, Encryption </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "smart" IF theme_count > 0 THEN PRINT "[<A HREF=#smart> SMART Initiative / Ease of Use </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "smv" IF theme_count > 0 THEN PRINT "[<A HREF=#smv> Storage Management Vendors </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "swg" IF theme_count > 0 THEN PRINT "[<A HREF=#swg> SWG Initiatives </A>]" ELSE PRINT "" LET theme_count = COUNT WHERE theme = "xb" IF theme_count > 0 THEN PRINT "[<A HREF=#xb> IBM Cross-Brand Integration/Interoperability </A>]" ELSE PRINT ""
LET ov_fgrp_count = 0 LET ov_fnum_count = 0
BEFORE GROUP OF theme_name PRINT "<HR>" PRINT "<A NAME=", theme CLIPPED, "> </A>" PRINT "<TABLE WIDTH=95% ALIGN=CENTER BORDER=2>" PRINT "<TR><TH COLSPAN=7> <BIG><BIG><B>Theme: ", "<A HREF='Themes-9.50/frdb-", theme CLIPPED, ".html'>", theme_name CLIPPED, "</A>", "</B></BIG></BIG></TH></TR>" PRINT "<TR>", "<TH WIDTH=5%>", "PTS No", "</TH>", "<TH COLSPAN=5 WIDTH=15%>", "Category, Priority,<BR>", "Risk, Cost, Benefit", "</TH>", "<TH WIDTH=80%>", "Description", "</TH>", "</TR>" LET gr_disp_count = 0 LET gr_fgrp_count = 0
BEFORE GROUP OF disposition SKIP 1 LINE PRINT "<TR><TH COLSPAN=7 BGCOLOR='#FFFFCC'>", disp_name, "</TH>" PRINT "</TR>" LET gr_disp_count = gr_disp_count + 1
BEFORE GROUP OF fr_grp LET gr_fgrp_count = gr_fgrp_count + 1 LET ov_fgrp_count = ov_fgrp_count + 1 IF impacts_csdk = 'Y' THEN PRINT " <TR BGCOLOR='#CCFFCC'>" ELSE PRINT " <TR>" PRINT " <TD WIDTH=5%>"; PRINT "<A HREF='", pts_url CLIPPED, fr_grp USING "<<<<<<", "'> ", fr_grp USING "&&&&&&", " </A>", "</TD>" IF (disposition = 'pre-fixed' OR disposition = 'rejected' OR disposition = 'nfp' OR disposition = 'sep') THEN PRINT " <TD COLSPAN=5> </TD>" ELSE BEGIN PRINT " <TD WIDTH=3%>", category, "</TD>" PRINT " <TD WIDTH=3%>", fe_priority USING "-&", "</TD>" PRINT " <TD WIDTH=3%>", risk, "</TD>" PRINT " <TD WIDTH=3%>", effort, "</TD>" PRINT " <TD WIDTH=3%>", benefit, "</TD>" END PRINT " <TD WIDTH=80%><SMALL>" IF impacts_csdk = 'Y' THEN PRINT "[CSDK] ";
# Map HTML characters out of the way LET i = 150 # length(short_description) - except that isn't in ACE! LET sd = "" LET pad = 0 FOR j = 1 TO i DO BEGIN LET c = short_description[j] IF c = "<" THEN LET map = "<" ELSE IF c = ">" THEN LET map = ">" ELSE IF c = "&" THEN LET map = "&" ELSE LET map = c IF pad != 0 THEN LET sd = sd CLIPPED, " ", map ELSE LET sd = sd CLIPPED, map IF c = " " OR c IS NULL THEN LET pad = 1 ELSE LET pad = 0 END PRINT sd CLIPPED WORDWRAP PRINT "</SMALL>" IF req_who != "no-one" OR req_why != "no reason" THEN BEGIN PRINT "<BR><SMALL><FONT COLOR=BLUE>", "Requested by ", req_who, " because: " PRINT req_why CLIPPED WORDWRAP PRINT " </FONT></SMALL>" END
IF grp_size > 1 THEN BEGIN PRINT "<BR>" PRINT "Related feature requests include: " END
ON EVERY ROW IF fr_type = 'B' THEN PRINT " <A HREF='", pts_url CLIPPED, fr_num USING "<<<<<<", "'> ", fr_num USING "&&&&&&", " </A>"
AFTER GROUP OF fr_grp PRINT "</TD></TR>" SKIP 1 LINE
AFTER GROUP OF disposition SKIP 1 LINE
AFTER GROUP OF theme_name PRINT "</TABLE>" PRINT "<BR>" PRINT "<A HREF='#top'> Top </A>" PRINT GROUP COUNT USING "<<<<", " Feature Requests listed in ", gr_fgrp_count USING "<<<<", " Feature Groups ", gr_disp_count USING " with <<<< dispositions", " within theme <B>", theme_name CLIPPED, "</B>" PRINT "<BR>"
ON LAST ROW PRINT "<HR>" PRINT "<BR>" PRINT COUNT USING "<<<<<", " Total Feature Requests listed in ", ov_fgrp_count USING "<<<<<", " Feature Groups"
PRINT "<P>" PRINT "<TABLE WIDTH=60% ALIGN=CENTER><TR><TD>" PRINT "<SM><I>" PRINT "NB: These statistics are not guaranteed accurate." PRINT "But they are much more reliable than those in previous" PRINT "versions of this report." PRINT "</I></SM>" PRINT "</TD></TR></TABLE>"
PRINT "<P>" PRINT "<TABLE WIDTH=60% ALIGN=CENTER BORDER=2>" PRINT "<TR><TH COLSPAN = 2> Summary by Categories </TH></TR>" PRINT "<TR><TD WIDTH=80%> Category A (must fix) </TD><TD>", (COUNT WHERE category = 'A') USING "###&", "</TD></TR>" PRINT "<TR><TD> Category B (may fix) </TD><TD>", (COUNT WHERE category = 'B') USING "###&", "</TD></TR>" PRINT "<TR><TD> Category C (won't fix) </TD><TD>", (COUNT WHERE category = 'C') USING "###&", "</TD></TR>" PRINT "</TABLE>" SKIP 1 LINE
PRINT "<P>" PRINT "<TABLE WIDTH=60% ALIGN=CENTER BORDER=2>" PRINT "<TR><TH COLSPAN = 2> Summary by Priorities </TH></TR>" PRINT "<TR><TD WIDTH=80%>Priority -1 (no decision) </TD><TD>", (COUNT WHERE fe_priority = -1) USING "###&", "</TD></TR>" PRINT "<TR><TD> Priority 0 (rejected) </TD><TD>", (COUNT WHERE fe_priority = 0) USING "###&", "</TD></TR>" PRINT "<TR><TD> Priority 1 (low) </TD><TD>", (COUNT WHERE fe_priority = 1) USING "###&", "</TD></TR>" PRINT "<TR><TD> Priority 2 </TD><TD>", (COUNT WHERE fe_priority = 2) USING "###&", "</TD></TR>" PRINT "<TR><TD> Priority 3 </TD><TD>", (COUNT WHERE fe_priority = 3) USING "###&", "</TD></TR>" PRINT "<TR><TD> Priority 4 </TD><TD>", (COUNT WHERE fe_priority = 4) USING "###&", "</TD></TR>" PRINT "<TR><TD> Priority 5 (medium) </TD><TD>", (COUNT WHERE fe_priority = 5) USING "###&", "</TD></TR>" PRINT "<TR><TD> Priority 6 </TD><TD>", (COUNT WHERE fe_priority = 6) USING "###&", "</TD></TR>" PRINT "<TR><TD> Priority 7 </TD><TD>", (COUNT WHERE fe_priority = 7) USING "###&", "</TD></TR>" PRINT "<TR><TD> Priority 8 </TD><TD>", (COUNT WHERE fe_priority = 8) USING "###&", "</TD></TR>" PRINT "<TR><TD> Priority 9 (high) </TD><TD>", (COUNT WHERE fe_priority = 9) USING "###&" PRINT "</TABLE>"
PRINT "<P>" PRINT "<TABLE WIDTH=60% ALIGN=CENTER BORDER=2>" PRINT "<TR><TH COLSPAN = 2> Summary by Dispositions </TH></TR>"
LET disp_count = (COUNT WHERE disposition = "8.33") IF disp_count > 0 THEN PRINT "<TR><TD> Scheduled for XPS 8.33 release </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "8.40") IF disp_count > 0 THEN PRINT "<TR><TD> Scheduled for XPS 8.40 Release </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "8.40-fp") IF disp_count > 0 THEN PRINT "<TR><TD> Scheduled for XPS 8.40 Fix Pack </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "8.50") IF disp_count > 0 THEN PRINT "<TR><TD> Scheduled for XPS 8.50 Release </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "9.30-fp") IF disp_count > 0 THEN PRINT "<TR><TD> Scheduled for IDS 9.30 Fix Pack </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "9.31") IF disp_count > 0 THEN PRINT "<TR><TD> Scheduled for IDS 9.31 release </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "9.40") IF disp_count > 0 THEN PRINT "<TR><TD> Scheduled for IDS 9.40 release </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "9.40-fp") IF disp_count > 0 THEN PRINT "<TR><TD> Scheduled for IDS 9.40 Fix Pack </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "9.50") IF disp_count > 0 THEN PRINT "<TR><TD> Scheduled for IDS 9.50 release </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "9.50-fp") IF disp_count > 0 THEN PRINT "<TR><TD> Scheduled for IDS 9.50 Fix Pack </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "9.60") IF disp_count > 0 THEN PRINT "<TR><TD> Possibility for IDS 9.60 Release </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "9.70") IF disp_count > 0 THEN PRINT "<TR><TD> Possibility for IDS 9.70 Release </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "deferred") IF disp_count > 0 THEN PRINT "<TR><TD> Deferred until after 9.60 </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "dup") IF disp_count > 0 THEN PRINT "<TR><TD> Duplicate of another feature request </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "nfi") IF disp_count > 0 THEN PRINT "<TR><TD> No fix planned in the foreseeable future </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "nfp") IF disp_count > 0 THEN PRINT "<TR><TD> No fix possible - not enough information </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "pre-fixed") IF disp_count > 0 THEN PRINT "<TR><TD> Fixed in a previous release </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "rejected") IF disp_count > 0 THEN PRINT "<TR><TD> Feature request is rejected completely </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "sep") IF disp_count > 0 THEN PRINT "<TR><TD> Someone else's problem (not IDS 9.x R&D) </TD><TD>", disp_count USING "###&", "</TD></TR>" LET disp_count = (COUNT WHERE disposition = "techsupp") IF disp_count > 0 THEN PRINT "<TR><TD> Tool to be provided by Technical Support </TD><TD>", disp_count USING "###&", "</TD></TR>"
PRINT "</TABLE>"
PRINT "<HR>"
LET version = "$Id: frdbhtml95.ace,v 4.14 2003/02/12 19:55:00 jleffler Exp $" LET version = version[6,45] PRINT "<CENTER><SMALL><I>Report produced by ISQL ACE and ", version CLIPPED, "</I></SMALL></CENTER>"
PRINT "<H3 ALIGN=CENTER> End of Report </H3>" PRINT "</BODY>" PRINT "</HTML>"
END
Messages In This Thread
- save aggregate as variable in report
JAY ZWAGERMAN -- Tuesday, 15 April 2003, at 3:55 p.m.
- RE: save aggregate as variable in report
Simmons, Keith -- Tuesday, 15 April 2003, at 3:55 p.m.
- RE: save aggregate as variable in report
Jim Noble -- Tuesday, 15 April 2003, at 3:55 p.m.
- RE: save aggregate as variable in report
Jim Noble -- Tuesday, 15 April 2003, at 3:55 p.m.
- RE: save aggregate as variable in report
Konikoff, Rob (Contractor) -- Tuesday, 15 April 2003, at 3:55 p.m.
- Re: save aggregate as variable in report
Jonathan Leffler -- Tuesday, 15 April 2003, at 3:55 p.m.
- RE: save aggregate as variable in report
Konikoff, Rob (Contractor) -- Tuesday, 15 April 2003, at 3:55 p.m.
Classics Forum is maintained by Administrator with WebBBS 5.12.
|
 |