FQSYSPRT O F 132 PRINTER OFLIND(Overflow) F PRTCTL(PrtCtlDS) D InputBuffer DS D Company 1P 0 D Customer 5P 0 D CustomerName 20A D Rep 5P 0 D RepName 18A D CurBalance 9P 2 D PastDue 9P 2 D LastPayDate D D D PrintLine DS 132 D Column01 4 D 1 D Column02 5 D 1 D Column03 20 D 1 D Column04 5 D 1 D Column05 18 D 1 D Column06 12 D 1 D Column07 12 D 1 D Column08 8 D D PrtCtlDS DS 15 D pcSpacing 1 12 D pcSpcBefore 1 3 D pcSpcAfter 4 6 D pcSkpBefore 7 9 D pcSkpAfter 10 12 D pcLineNbr 13 15 D D Overflow S N D SingleSpace C CONST('001') D DoubleSpace C CONST('002') D TopOfForm C CONST('001') D Overprint C CONST('000') D TotCurBalance S LIKE(CurBalance) D TotPastDue S LIKE(PastDue) D PageNbr S 3P 0 C/Exec SQL C+ Declare Input cursor for C+ Select cus.companyno, cus.customerno, C+ trim(cus.fname) || ' ' || C+ cus.midinit || ' ' || C+ trim(cus.lname), C+ cus.repno, rep.repname, C+ cus.balance, cus.pastdue, cus.lastpaydt C+ From customer as cus inner join reps as rep C+ on cus.repno = rep.repno C+ Order by 1,2 C/End-Exec C C EXSR PrintHeaders C/Exec SQL C+ Open Input C/End-Exec C DOW '1' C/Exec SQL C+ Fetch Input into :InputBuffer C/End-Exec C IF SQLStt <> *ZEROS C LEAVE C ENDIF C IF Overflow C EXSR PrintHeaders C ENDIF C EXSR BldDtlLine C EXSR Accumulate C ENDDO C/Exec SQL C+ Close Input C/End-Exec C EXSR PrintTotal C EVAL *INLR = *ON C*********************************************************** C BldDtlLine BEGSR C EVALR Column01 = %CHAR(Company) C EVALR Column02 = %EDITC(Customer:'Z') C EVAL Column03 = CustomerName C EVALR Column04 = %EDITC(Rep:'Z') C EVAL Column05 = RepName C EVALR Column06 = %EDITC(CurBalance:'J') C EVALR Column07 = %EDITC(PastDue:'J') C EVALR Column08 = %CHAR(LastPayDate:*MDY) C EXSR Write C ENDSR C*********************************************************** C PrintHeaders BEGSR C C EVAL PageNbr += 1 C EVAL PrintLine = 'Current Accounts Receivable' C EVAL %SUBST(PrintLine:70) = %EDITC(UDate:'Y') C + ' Page ' + %CHAR(PageNbr) C EVAL pcSkpBefore = TopOfForm C EXSR Write C C EVALR Column01 = 'Comp' C EVALR Column02 = 'Acct' C EVAL Column03 = 'Name' C EVALR Column04 = 'Rep' C EVAL Column05 = 'Name' C EVALR Column06 = 'Balance' C EVALR Column07 = 'Overdue' C EVALR Column08 = 'Last pay' C EVAL pcSpcBefore = DoubleSpace C EXSR Write C C EVALR Column01 = *ALL'-' C EVALR Column02 = *ALL'-' C EVAL Column03 = *ALL'-' C EVALR Column04 = *ALL'-' C EVAL Column05 = *ALL'-' C EVALR Column06 = *ALL'-' C EVALR Column07 = *ALL'-' C EVALR Column08 = *ALL'-' C EVAL pcSpcBefore = SingleSpace C EXSR Write C C EVAL Overflow = *OFF C C ENDSR C*********************************************************** C Accumulate BEGSR C C EVAL TotCurBalance += CurBalance C EVAL TotPastDue += PastDue C C ENDSR C*********************************************************** C PrintTotal BEGSR C C EVAL %SUBST(PrintLine:14) = 'Totals' C EVALR Column06 = %EDITC(TotCurBalance:'J') C EVALR Column07 = %EDITC(TotPastDue:'J') C EVAL pcSpcBefore = DoubleSpace C EXSR Write C C ENDSR C*********************************************************** C Write BEGSR C C IF pcSpacing = *blanks C EVAL pcSpcBefore = SingleSpace C ENDIF C C WRITE QSYSPRT PrintLine C CLEAR PrintLine C C CLEAR pcSpacing C C ENDSR