|
I used your code to show a quick(not pretty) example of how I sometimes
write my mainline routine for my report programs. Maybe it might help.
'**************************************************************************
'* MAINLINE
'**************************************************************************
'* READ THE FIRST RECORD IN THE FILE AND WRITE DATA TO VARIABLES
'**************************************************************************
*
* set record counter
C EVAL COUNTER = *ZEROS
C *START SETLL BRANCH
C DOU %EOF(BRANCH)
C READ BRANCH
C IF %EOF(BRANCH)
C LEAVE
C ENDIF
*
* increment record counter
C EVAL COUNTER = COUNTER + 1
*
* pRINT HEADER FOR 1ST RECORD
C IF COUNTER = 1
* COPY DATA TO HOLDING AREA
C EVAL DBRANCHID = ILNINV#A
C EVAL DCUSTNO = ILNSOLDTO
C EVAL DSTOCKNO = ILNSTK
C EXSR PRTHEADER
C ENDIF
*
* IF CRITERIA MET, INCREMENT TOTALS
C IF ILNINV#A = DBRANCHID AND
C ILNSOLDTO = DCUSTNO AND
C ILNSTK = DSTOCKNO
C EVAL DTSALES = DTSALES + ILNEPRICE
C EVAL DTCOST = DTCOST + ILNEUAVCST
*
* IF CRITERIA NOT MET, print detail
C ELSE
C EXSR PRTDETAIL
c CLEAR PRINTER_DETAIL_LINE
* copy new data to holding area
C EVAL DBRANCHID = ILNINV#A
C EVAL DCUSTNO = ILNSOLDTO
C EVAL DSTOCKNO = ILNSTK
*
C ENDIF
C ENDDO
* DOU %EOF(BRANCH)
*
C EVAL *INLR = *ON
C RETURN
"Douglas W. Palme" <dpalme@xxxxxxxxxxx>@midrange.com on 05/12/2005 05:30:55
PM
Please respond to RPG programming on the AS400 / iSeries
<rpg400-l@xxxxxxxxxxxx>
Sent by: rpg400-l-bounces@xxxxxxxxxxxx
To: RPG programming on the AS400/iSeries <rpg400-l@xxxxxxxxxxxx>
cc:
Subject: Re: Need some help with a report
Yes it didn't make any change except that it created one very long report.
I am going to go back and review it line by line....even debug seemed to
work fine but the output was junk.
On Thu, 12 May 2005 16:18:23 -0500, fkany wrote
> Have you tried removing the line where you're setting *in99 to *on?
>
> "Douglas W. Palme" <dpalme@xxxxxxxxxxx>@midrange.com on 05/12/2005
04:55:33
> PM
>
> Please respond to RPG programming on the AS400 / iSeries
> <rpg400-l@xxxxxxxxxxxx>
>
> Sent by: rpg400-l-bounces@xxxxxxxxxxxx
>
> To: rpg400-l@xxxxxxxxxxxx
> cc:
>
> Subject: Need some help with a report
>
> I have been moving along in my feeble attempt to gain as much rpg
knowledge
> as I can get, however I have a report that I need to produce that
> has been giving me fits for four days and if anyone can provide any
> assistance I would appreciate it.
>
> I will post the source below. I have a logical file which contains
branch
> (location) id, customer number, stock numbers, and each record is
> equivalent
> to one line item from our sales. It is keyed by ilninv#a (location
> id), ilnsoldto (customer number) and ilnstk (stock number), it also
> has a range restriction on it for line items related to this fiscal
> year. I am attempting to print out one detail line with the sum of
> sales and costs for each stock number and customer number, with a
> page break when the location id changes.
>
> So far, every time I run the report it spits out over a 1,000 pages
> and has produced as many as 89,000 pages....it appears to keep
> printing the same header file over and over again.....
>
> Any help, pointers or suggestions would be appreciated.
>
> Douglas
>
>
'*********************************************************************
**
>
> ***
> '* ORIGINAL DATE: 05/11/2005
> '* APPLICATION NAME: BRANCH MARGIN REPORT
> '* PROGRAM NAME: BRCHMARRPT
> '* DESCRIPTION: 1. READ FIRST REC 2. CREATE
> HEADING
> '* 3. READ RECORDS INTO TOTALS
> '* 4. BREAK ON STK NO, CUST NO
> AND THE '* BRANCH LOCATION
> '***********************************************************************
> ***
> '* LOG OF MODIFICATIONS
> '* >
'*--------------------------------------------------------------
> --------
> ---
> '* / /
>
'*********************************************************************
**
> ***
> '* FUNCTION OF INDICATORS
> '* >
'*--------------------------------------------------------------
> --------
> ---
> '* 99 OFLIND INDICATOR
> '* INLR LAST RECORD INDICATOR
>
'*********************************************************************
**
> ***
> '* SUBROUTINE INDEX
>
'*********************************************************************
**
> ***
> '* PRTHEADING - PRINT HEADING SUB ROUTINE
> '* BRCHLOOKUP - BRANCH LOOKUP SUB ROUTINE
>
'*********************************************************************
**
> ***
> '* FILES
>
'*********************************************************************
**
> ***
> FCUSTMLF IF E K DISK
> FBRCHMARGINIF E K DISK
> FBRCHMARLSTO E PRINTER OFLIND(*IN99)
>
'*********************************************************************
**
> ***
> '* STANDALONE VARIABLES
>
'*********************************************************************
**
> ***
> DDBRANCH S 20A
> DDBRANCHID S 2A
> DDSTOCKNO S 20A
> DDDESC S 24A
> DDCUSTNO S 9S 0
> DDTSALES S 12S 2
> DDTCOST S 12S 2
> DDMARGIN S 12S 2
> DDPCT S 4S 3
>
'*********************************************************************
**
> ***
> '* MAINLINE
>
'*********************************************************************
**
> ***
> '* READ THE FIRST RECORD IN THE FILE AND WRITE DATA TO
VARIABLES
>
'*********************************************************************
**
> ***
> C READ BRANCH
> * COPY DATA TO HOLDING AREA
> C EVAL DBRANCHID = ILNINV#A
> C EVAL DCUSTNO = ILNSOLDTO
> C EVAL DSTOCKNO = ILNSTK
> C DOW NOT %EOF(BRCHMARGIN)
> C IF ILNINV#A = DBRANCHID
> C IF ILNSOLDTO = DCUSTNO
> C IF ILNSTK = DSTOCKNO
> C EVAL DTSALES = DTSALES + ILNEPRICE
> C EVAL DTCOST = DTCOST + ILNEUAVCST
> C ELSE
> C EXSR PRTDETAIL
> C ENDIF
> C ELSE
> C EXSR PRTDETAIL
> C ENDIF
> C ELSE
> C EXSR PRTDETAIL
> C EVAL *IN99 = *ON
> C ENDIF
> C READ BRANCH
> C ENDDO
> C EVAL *INLR = *ON
> C RETURN
>
>
**************************************************************************
> '* PRINT HEADINGS SUB-ROUTINE
>
'*********************************************************************
**
> ***
> C PRTHEADING BEGSR
> C EXSR BRCHLOOKUP
> C EVAL PRTBRANCH = DBRANCH
> C WRITE HEADINGS
> C EVAL *IN99 = *OFF
> C ENDSR
>
'*********************************************************************
**
> ***
> '* BRANCH LOOKUP SUB-ROUTINE
>
'*********************************************************************
**
> ***
> C BRCHLOOKUP BEGSR
> C SELECT
> C WHEN DBRANCHID = 'D '
> C EVAL DBRANCH = 'DECATUR'
> C WHEN DBRANCHID = 'A '
> C EVAL DBRANCH = 'ALL COMPANY'
> C WHEN DBRANCHID = 'J '
> C EVAL DBRANCH = 'JACKSONVILLE'
> C WHEN DBRANCHID = 'Q '
> C EVAL DBRANCH = 'QUINCY'
> C WHEN DBRANCHID = 'B '
> C EVAL DBRANCH = 'RIVER BEND'
> C WHEN DBRANCHID = 'S '
> C EVAL DBRANCH = 'SPRINGFIELD'
> C WHEN DBRANCHID = 'M '
> C EVAL DBRANCH = 'MATTOON'
> C WHEN DBRANCHID = 'V '
> C EVAL DBRANCH = 'MOUNT VERNON'
> C WHEN DBRANCHID = 'N '
> C EVAL DBRANCH = 'PONTIAC'
> C WHEN DBRANCHID = 'L '
> C EVAL DBRANCH = 'LITCHFIELD'
> C ENDSL
> C ENDSR
>
'*********************************************************************
**
> ***
> '* PRINT DETAIL SUB-ROUTINE
>
'*********************************************************************
**
> ***
> C PRTDETAIL BEGSR
>
> '* WRITE DATA TO VARIABLES AND MAKE NECESSARY CALCULATIONS
>
> C IF DTSALES = 0
> C ELSE
> C EVAL DMARGIN = DTSALES - DTCOST
> C EVAL DPCT = DMARGIN / DTSALES
> C EVAL PRTCUSTNO = DCUSTNO
> C EVAL PRTBRANCH = DBRANCH
> C EVAL PRTSTKNO = DSTOCKNO
> C EVAL PRTDESC = DDESC
> C EVAL PRTSALES = DTSALES
> C EVAL PRTCOST = DTCOST
> C EVAL PRTMARGIN = DMARGIN
> C EVAL PRTPCT = DPCT
> C WRITE DETAIL
> C EVAL DTSALES = ILNEPRICE
> C EVAL DTCOST = ILNEUAVCST
> C EVAL DBRANCHID = ILNINV#A
> C EVAL DCUSTNO = ILNSOLDTO
> C EVAL DSTOCKNO = ILNSTK
> C EVAL DMARGIN = 0
> C EVAL DPCT = 0
> C ENDIF
> C IF *IN99 = *ON
> C EXSR PRTHEADING
> C EVAL *IN99 = *OFF
> C ENDIF
> C ENDSR
>
'*********************************************************************
**
> ***
>
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 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.