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