× 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.



I'm currently developing an RPGIV report program that uses an "old school"
 work file
method to process a file with millions of records and it's very slow.  If I
 choose
to process 30 days of information, it takes an hour to spit out a report.

Rob Berendt provided the example below.  I believe it shows how to process
 a large
number of records using SQL.  Please correct me if that's not how it was
 meant to
be used.

If anyone can help explain the SQL code below, I'd appreciate it.  I've
 posted
questions before each line that I have questions about.  Please use any
references to RPGIV if you think it might help me understand.  My questions
 are
numbered as (1),(2),(3) etc...

Thanks,

Frank

---------------------------------------------------------------
SLSPSN - Sales person file
 SLSMGR    SLSPSN
 100       100
 100       110
 100       120
 100       200
 100       300
 700       700

CUSTMAST
CUSTNO    SLSPSN     YTDHG
12345     100     10000.95
12346     110       575.23
12347     700       999.47

LINEITEM
CUSTNO    ORDERNO   LINE#  CYLRNT
12345           1       1    1.95
12345           1       2    4.25
---------------------------------------------------------------

(1) What does this SQL section do? Does it create a PF named DOUGGIE in
 library ROB?  Does it already have
to exist?  When the program ends does it automatically get deleted when the
 job ends?  Is the view only accessible to
the current job?
CREATE VIEW ROB/DOUGGIE
 (SLSMGR, SLSPSN, CUSTNO, YTDHG, ORDERNO, LINE#, CYLRNT)

(2) What is this section doing?
AS SELECT
 SLSPSNF.SLSMGR, SLSPSNF.SLSPSN,
 CUSTMAST.CUSTNO, CUSTMAST.YTDHG,
 LINEITEM.ORDERNO, LINEITEM.LINE#, LINEITEM.CYLRNT

(3) What is "LEFT OUTER JOIN" doing?
FROM
 (SLSPSNF
  LEFT OUTER JOIN CUSTMAST USING (SLSPSN))
  LEFT OUTER JOIN LINEITEM USING (CUSTNO)

(4) Please explain this section.
SELECT SLSMGR, SLSPSN, MAX(CUSTNO), YTDHG, SUM(CYLRNT)
FROM ROB/DOUGGIE

(5) It's probably very obvious, but can someone explain in
more detail the functions of GROUP and ORDER?
GROUP BY SLSMGR, SLSPSN, YTDHG
ORDER BY SLSMGR, SLSPSN, YTDHG DESC

SLSMGR          SLSPSN   MAX ( CUSTNO )       YTDHG   SUM ( CYLRNT )
   100             100           12,345   10,000.95             6.20
   100             110           12,346      575.23                 -
   100             120                 -           -                -
   100             200                 -           -                -
   100             300                 -           -                -
   700             700           12,347      999.47                 -

(6) What's the difference between a TABLE and a VIEW?
What's "INT NOT NULL"?  Why is it in parentheses?  What's the "CONTSTRAINT"
section of the code doing?

CREATE TABLE ROB/SLSPSNF (SLSMGR INT NOT NULL, SLSPSN INT NOT NULL,
CONSTRAINT SLSATH_SLSPSN PRIMARY KEY (SLSPSN))

(7) What's the "REFERENCES" section of the code doing?  Is YTDHG being
redefined as 7,2?

CREATE TABLE ROB/CUSTMAST (CUSTNO INT NOT NULL, SLSPSN INT NOT
NULL, YTDHG DEC ( 7, 2), CONSTRAINT CUSTMAST_CUSTNO PRIMARY KEY
(CUSTNO), CONSTRAINT CUSTMAST_SLSPSN FOREIGN KEY (SLSPSN)
REFERENCES ROB/SLSPSNF (SLSPSN) ON DELETE NO ACTION ON UPDATE NO
ACTION)

CREATE TABLE ROB/LINEITEM (CUSTNO INT NOT NULL, ORDERNO INT NOT
NULL, LINE# INT NOT NULL, CYLRNT DEC (7 , 2), CONSTRAINT
LINEITEM_PRIKEY PRIMARY KEY (ORDERNO, LINE#), CONSTRAINT
LINEITEM_CUSTNO FOREIGN KEY (CUSTNO) REFERENCES ROB/CUSTMAST
(CUSTNO) ON DELETE NO ACTION ON UPDATE NO ACTION)




As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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.