× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Buck,
Thanks for the trip down memory lane. :)

Jeff Young
Sr. Programmer Analyst

On Mon, May 1, 2017 at 1:30 PM, Buck Calabro <kc2hiz@xxxxxxxxx> wrote:

On 4/30/2017 10:17 PM, Mark S Waterbury wrote:
So, if someone really wanted to use Auto-Report with ILE RPG IV, you
could run this command, specify the name of the source file, lbirary
and member name for the output, then use that as input to CVTRPGSRC,
and "Voila!" -- you have an ILE Auto-Report program.

Here, for the truly bored among us, is a brand new, written from scratch
(and memory - oh look, a zeugma!) Auto Report program. I can't believe
I just wrote those words.

First, let's create a table. I could have used DDS, and then written a
program to populate some sample data, but this seemed easier for readers
to reproduce.

create table buck.autorep (
county char(20),
city char(20),
sales numeric(7, 2)
);

insert into buck.autorep
values
('Albany', 'Albany', 100.00),
('Albany', 'Albany', 20.00),
('Albany', 'Rennselaerville', 10.00),
('Schenectady', 'Schenectady', 15.00),
('Schenectady', 'Schenectady', 17.00),
('Schenectady', 'Schenectady', 105.00),
('Schenectady', 'Niskayuna', 22.50),
('Schenectady', 'Niskayuna', 12.95),
('Schenectady', 'Niskayuna', 107.42),
('Schenectady', 'Rotterdam', 10.50),
('Schenectady', 'Rotterdam', 17.50)
;

-- RPG will want an index
create index buck.autorepl
on buck.autorep
(county, city);

Here's what Auto Report will do for me, using SQL:

select county, city, sum(sales)
from buck.autorep
group by county, city with rollup
order by county, city;

Albany Albany 120.00
Albany Rennselaerville 10.00
Albany - 130.00
Schenectady Niskayuna 142.87
Schenectady Rotterdam 28.00
Schenectady Schenectady 137.00
Schenectady - 307.87
- - 437.87

Here it is, in gleaming new Auto Report:
QRPGSRC, member AUTOREPORT, SRCTYPE(RPT:

U
H 1
FAUTOREPLIPE F 47 40AI 1 DISK
FQSYSPRT O F 132 OF LPRINTER
LQSYSPRT 066FL060OL
IAUTOREPLAA 01
I 1 20 COUNTYL2
I 21 40 CITY L1
I 41 472SALES
OQSYSPRT H *AUTO
O 'MARMOTA MUSA INT''L'
OQSYSPRT D *AUTO
O L2COUNTY 'COUNTY'
O L1CITY 'CITY'
O SALES JA 'SALES'

That 'U' in column 6 isn't anomalous. You forgot about the Auto Report
Spec, didn't you? :-) Should I tell you which columns mean what?

PDM option 14 with RPTOPT(*SRC) creates this:

H 1
FAUTOREPLIPE F 47 40AI 1 DISK
FQSYSPRT O F 132 OF LPRINTER
LQSYSPRT 066FL060OL
IAUTOREPLAA 01
I 1 20 COUNTYL2
I 21 40 CITY L1
I 41 472SALES
C EXSR A$$SUM
CL1 SALES2 ADD SALES1 SALES2 92
CL2 SALESR ADD SALES2 SALESR 92
CSR A$$SUM BEGSR
CSR SALES1 ADD SALES SALES1 92
CSR ENDSR
OQSYSPRT H 206 1P
O OR OF
O UDATE Y 8
O 38 'MARMOTA MUSA INT''L'
O 56 'PAGE '
O PAGE Z 60
OQSYSPRT H 2 1P
O OR OF
O 6 'COUNTY'
O 26 'CITY'
O 57 'SALES'
OQSYSPRT T 11 L1
O COUNTY 20
O CITY 42
O SALES1JB 57
OQSYSPRT T 12 L2
O SALES2JB 57
O 59 '**'
OQSYSPRT T 12 LR
O SALESRJB 57
O 60 '***'

The results look like this:
5/01/17 MARMOTA MUSA INT'L PAGE 1
COUNTY CITY SALES
Albany Albany 120.00 *
Albany Rennselaerville 10.00 *
130.00 **
Schenectady Niskayuna 142.87 *
Schenectady Rotterdam 28.00 *
Schenectady Schenectady 137.00 *
307.87 **
437.87 ***

I'm not going to go into the detail of how this works because frankly I
think its time has passed. If you want to play, here are some things
for you to try now that you have some source:
1) Group indicate the county name so it doesn't repeat
2) Show the detail
3) Add your own C-specs to generate a separate printed line for the two
cases where the county name is the same as the city name
4) Eliminate the asterisks on the total lines

This is how I would have done this sort of query-ish report on System/3,
although for maximum utility I would not have used an indexed file, I
would have used an ADDROUT sort. That's an extra F-spec and an E-spec,
plus a FMTDTA and usually all wrapped up in a CLP. If someone wants to
see /that/ let me know and I'll extend the thread one more round. For
now, the System/3 heritage is easy to see in the primary F-spec: It's
program described. What happens if I change it to externally described?
CRTRPTPGM generates this diagnostic pass:

0001 FAUTOREPLIPE E K DISK
0002 F AUTOREP KRENAMERAUTO
0003 FQSYSPRT O F 132 OF LPRINTER
0004 LQSYSPRT 066FL060OL
0005 IRAUTO 01
0006 I COUNTYL2
0007 I CITY L1
0008 OQSYSPRT H *AUTO
0009 O 'MARMOTA MUSA INT''L'
0010 OQSYSPRT D *AUTO
0011 O L2COUNTY 'COUNTY'
0012 O L1CITY 'CITY'
0013 O SALES JA 'SALES'
* * * * * E N D O F S O U R C E * * * * *

F i n a l S u m m a r y
* RPT0034 Severity: 10 Statement: 0006
Message . . . . : The Definition of field is invalid.
Definition ignored.
* RPT0034 Severity: 10 Statement: 0007
Message . . . . : The Definition of field is invalid.
Definition ignored.
* RPT0016 Severity: 10 Statement: 0011
Message . . . . : The field-name entry is not valid.
Specification line ignored.
* RPT0016 Severity: 10 Statement: 0012
Message . . . . : The field-name entry is not valid.
Specification line ignored.
* RPT0016 Severity: 10 Statement: 0013
Message . . . . : The field-name entry is not valid.
Specification line ignored.

Yeah, the preprocessor doesn't handle externally described files.
Nor will it handle sub-procedures,
Or **free,
Or extended Factor 2,
Or anything newer than what, System/36 RPG?

I myself don't have a use for this in 2017, but if all you have is S36EE
and program described files...

--
--buck

Try wiki.midrange.com!

--
This is the RPG programming on the IBM i (AS/400 and iSeries) (RPG400-L)
mailing list
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.

Please contact support@xxxxxxxxxxxx for any subscription related
questions.

Help support midrange.com by shopping at amazon.com with our affiliate
link: http://amzn.to/2dEadiD


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.