|
"John C. Bradley" wrote: > I thought I saw an article late in 1998 or the first month of 1999 about a > general purpose RPG approach to "level break" programming. This did NOT > mean using the RPG cycle and "L" indicators as I recall, but was more about > how to use a structured approach to subtotaling. It looked like it would be > pretty handy "boiler plate" to avoid always reinventing the wheel. > > Does anyone recall where the article appeared? > > Here is a simple level break routine that has served me well. RPG II is history folks...get with the program already. :-) Ok Ok Ok...whatever you prefer... Yes I still use program described print specs. What do you think ? I'm going to use RLU ? Bwhaahahahaa F* Program : IN1026 F* Written : 12/15/98 F* Author : Jim Welsh F* Text : Product Production by Workcenter Report F********************************************************************** F* Work Center Labor Transactions FSFLTP100 IF E Disk F* F* Report File FRMSPRT01 O F 132 Printer Oflind(*InOf) D* D* Work Fields D @cmpno S 15 5 D @loiso S d datfmt(*iso) D @hiiso S d datfmt(*iso) D lodate S d datfmt(*usa) D hidate S d datfmt(*usa) D* D QtyGood1 S 11 0 D QtyGood2 S like(QtyGood1) D QtyGood3 S like(QtyGood1) D QtyGood4 S like(QtyGood1) D QtyGood5 S like(QtyGood1) D* D ActHrs1 S 10 3 D ActHrs2 S like(ActHrs1) D ActHrs3 S like(ActHrs1) D ActHrs4 S like(ActHrs1) D ActHrs5 S like(ActHrs1) D* D ErnHrs1 S 10 5 D ErnHrs2 S like(ErnHrs1) D ErnHrs3 S like(ErnHrs1) D ErnHrs4 S like(ErnHrs1) D ErnHrs5 S like(ErnHrs1) D* D EffWork S 7 5 D EffPct1 S 7 3 D EffPct2 S like(EffPct1) D EffPct3 S like(Effpct1) D EffPct4 S like(EffPct1) D EffPct5 S like(EffPct1) D* D* Input Key Data Structure D InKey DS D wcnt1 D wcnt2 D trprd D trseq D* D* Saved Key Data Structure D SvKey DS D svwcnt1 like(wcnt1) D svwcnt2 like(wcnt2) D svtrprd like(trprd) D svtrseq like(trseq) C* C/Title - Initialization C*--------------------------------------------------------------------- C *Entry Plist C Parm @cmpno C Parm @loiso C Parm @hiiso C* C Move @loiso lodate C Move @hiiso hidate C* C Eval *InOf = *On C* C/Title - Mainline C*--------------------------------------------------------------------- C Read VLT100 90 C Eval SvKey = InKey C *IN90 DowEq *Off C* C InKey IfNe SvKey C ExSr Break C Eval SvKey = InKey C EndIf C* C ExSr Detail C* C Read VLT100 90 C EndDo C* C ExSr prtgrand C C Eval *InLr = *On C* C/Title - Subroutines C*--------------------------------------------------------------------- C* Detail Subroutine C*--------------------------------------------------------------------- C Detail Begsr C Add lelp1 ActHrs1 C Add bearn ErnHrs1 C Add lqygd QtyGood1 C EndSr C* C/Eject C*--------------------------------------------------------------------- C* Break Subroutine C*--------------------------------------------------------------------- C Break Begsr C wcnt1 IfNe svwcnt1 C Exsr wcnt1brk C Else C wcnt2 IfNe svwcnt2 C Exsr wcnt2brk C Else C trprd IfNe svtrprd C Exsr trprdbrk C Else C Exsr trseqbrk C Endif C Endif C Endif C EndSr C* C/Eject C*--------------------------------------------------------------------- C* Work Center ( Department ) Break C*--------------------------------------------------------------------- C wcnt1brk BegSr C* C ExSr wcnt2brk C* C* Calc... C ActHrs4 IfNe 0 C ErnHrs4 Div(h) ActHrs4 EffWork 7 5 C EffWork Mult(h) 100 EffPct4 7 3 C Else C Eval EffPct4 = *Zeros C EndIf C* Print... C Exsr Headings C Except Total4 C* C* Accum... C Add QtyGood4 QtyGood5 C Add ActHrs4 ActHrs5 C Add ErnHrs4 ErnHrs5 C* Clear.. C Clear QtyGood4 C Clear ActHrs4 C Clear ErnHrs4 C* C EndSr C* C/Eject C*--------------------------------------------------------------------- C* Work Center ( Sub-Department ) Break C*--------------------------------------------------------------------- C wcnt2brk BegSr C* C ExSr trprdbrk C* C* Calc... C ActHrs3 IfNe 0 C ErnHrs3 Div(h) ActHrs3 EffWork 7 5 C EffWork Mult(h) 100 EffPct3 7 3 C Else C Eval EffPct3 = *Zeros C EndIf C* Print... C Exsr Headings C Except Total3 C* C* Accum... C Add QtyGood3 QtyGood4 C Add ActHrs3 ActHrs4 C Add ErnHrs3 ErnHrs4 C* Clear.. C Clear QtyGood3 C Clear ActHrs3 C Clear ErnHrs3 C* C EndSr C* C/Eject C*--------------------------------------------------------------------- C* Product Break C*--------------------------------------------------------------------- C trprdbrk BegSr C* C ExSr trseqbrk C* C* Calc... C ActHrs2 IfNe 0 C ErnHrs2 Div(h) ActHrs2 EffWork 7 5 C EffWork Mult(h) 100 EffPct2 7 3 C Else C Eval EffPct2 = *Zeros C EndIf C* Print... C Exsr Headings C Except Total2 C* C* Accum... C Add QtyGood2 QtyGood3 C Add ActHrs2 ActHrs3 C Add ErnHrs2 ErnHrs3 C* C* Clear.. C Clear QtyGood2 C Clear ActHrs2 C Clear ErnHrs2 C* C EndSr C* C/Eject C*--------------------------------------------------------------------- C* Operation Sequence Break C*--------------------------------------------------------------------- C trseqbrk BegSr C* C* Calc... C ActHrs1 IfNe 0 C ErnHrs1 Div(h) ActHrs1 EffWork 7 5 C EffWork Mult(h) 100 EffPct1 7 3 C Else C Eval EffPct1 = *Zeros C EndIf C* C* Print... C Exsr Headings C Except Total1 C* C* Accum... C Add QtyGood1 QtyGood2 C Add ActHrs1 ActHrs2 C Add ErnHrs1 ErnHrs2 C* Clear... C Clear QtyGood1 C Clear ActHrs1 C Clear ErnHrs1 C* C EndSr C* C/Eject C*--------------------------------------------------------------------- C* Print Grand Totals C*--------------------------------------------------------------------- C prtgrand BegSr C* C Exsr wcnt1brk C* C ActHrs5 IfNe 0 C ErnHrs5 Div(h) ActHrs5 EffWork 7 5 C EffWork Mult(h) 100 EffPct5 7 3 C Else C Eval EffPct5 = *Zeros C EndIf C* C Exsr Headings C Except Total5 C* C EndSr C/Eject C*--------------------------------------------------------------------- C* Headings C*--------------------------------------------------------------------- C Headings BegSr C *InOf IfEq *On C Except Heading1 C Eval *INOF = *Off C EndIf C EndSr C* O/EJECT O*--------------------------------------------------------------------- O* Report Specs O*--------------------------------------------------------------------- ORMSPRT01 E Heading1 1 3 O 10 'IN1026 ' O *Date Y + 5 O 85 'XYZ COMPANY' O 127 'Page' O Page Z 132 O* O E Heading1 1 O 88 'Product Production by Work- O center' O E Heading1 1 O 9 'From Date' O lodate + 1 O + 1 'To Date' O hidate + 1 O* O E Heading1 2 O 4 ' ' O + 1 ' ' O + 2 ' ' O + 2 ' Op.' O + 2 ' Quantity' O + 2 ' Actual' O + 2 ' Earned' O + 2 ' ' O* O E Heading1 1 O 4 ' ' O + 1 'Work Center' O + 2 'Product ' O + 2 ' Seq' O + 2 ' Good ' O + 2 ' Hours' O + 2 ' Hours' O + 2 ' Eff %' O* O E Total1 1 O 4 ' ' O svwcnt1 Z + 1 O svwcnt2 Z + 1 O wcnt3 Z + 1 O svtrprd + 2 O svtrseq Z + 2 O QtyGood1 L + 2 O ActHrs1 L + 2 O ErnHrs1 L + 2 O EffPct1 L + 2 O* O* svtrprd totals O E Total2 1 1 O 4 ' *' O svwcnt1 Z + 1 O svwcnt2 Z + 1 O wcnt3 Z + 1 O svtrprd + 2 O + 2 ' ' O QtyGood2 L + 2 O ActHrs2 L + 2 O ErnHrs2 L + 2 O EffPct2 L + 2 O + 1 '* ' O* O* wcnt2 totals O E Total3 1 1 O 4 ' **' O svwcnt1 Z + 1 O svwcnt2 Z + 1 O + 1 ' ' O + 2 ' ' O + 2 ' ' O QtyGood3 L + 2 O ActHrs3 L + 2 O ErnHrs3 L + 2 O EffPct3 L + 2 O + 1 '** ' O* wcnt1 totals O E Total4 1 2 O 4 ' ***' O svwcnt1 Z + 1 O + 1 ' ' O + 1 ' ' O + 2 ' ' O + 2 ' ' O QtyGood4 L + 2 O ActHrs4 L + 2 O ErnHrs4 L + 2 O EffPct4 L + 2 O + 1 '*** ' O* O* Grand Totals O E Total5 2 O 4 '****' O + 1 ' ' O + 1 ' ' O + 1 ' ' O + 2 ' ' O + 2 ' ' O QtyGood5 L + 2 O ActHrs5 L + 2 O ErnHrs5 L + 2 O EffPct5 L + 2 O + 1 '****' -- Jim Welsh Programmer/Analyst Halkey-Roberts Corporation - St. Pete FL 727-577-1300 x279 http://www.netcom.com/~jimwelsh/welcome/welcome.html mailto:jimwelsh@ix.netcom.com +--- | This is the Midrange System Mailing List! | To submit a new message, send your mail to MIDRANGE-L@midrange.com. | To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com. | To unsubscribe from this list send email to MIDRANGE-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
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.