compile function RDS_RPT3() begin condition pre: post: end condition declare function msg, set_property, send_event, dialog_box, utility, get_property declare function set_printer, fieldcount, Printer_Select declare subroutine rlist, or_view, activate_save_select, yield, array_sort $insert logical $insert rlist_equates $insert msg_equates $insert rds_equ Params = dialog_box( 'RDS_RPT3', @window, '*CENTER' ) if Params = 'CANCEL' or Params = '' then return 0 end open 'SYSLISTS' to SysListsTable else MsgInfo = '' MsgInfo = -2 MsgInfo = -2 MsgInfo = 'Unable to open SYSLISTS...' Void = msg( '', MsgInfo ) return 0 end ListsId = 'RDS_RPT3*':@station write '' on SysListsTable, ListsId else MsgInfo = '' MsgInfo = -2 MsgInfo = -2 MsgInfo = 'Unable to clear SYSLISTS ':ListsId:'...' Void = msg( '', MsgInfo ) return 0 end convert '*' to @fm in Params Recipe = Params<1> Reactor = Params<2> Offsets = Params<3> Injectors = Params<4> DateInFrom = Params<5> DateInThru = Params<6> DirToPrinter = Params<7> open 'DICT.RDS' to @dict else MsgInfo = '' MsgInfo = -2 MsgInfo = -2 MsgInfo = 'Unable to open DICT.RDS' Void = msg( '', MsgInfo ) return 0 end open 'RDS' to RDSTable else MsgInfo = '' MsgInfo = -2 MsgInfo = -2 MsgInfo = 'Unable to open RDS' Void = msg( '', MsgInfo ) return 0 end Stat = utility( 'CURSOR', 'H' ) Stmt = 'SELECT RDS' * all params are required Stmt:= ' WITH DATE_IN FROM ':quote(DateInFrom):' TO ':quote(DateInThru) Stmt:= ' AND WITH REACTOR = ':Reactor if Recipe <> '' then Stmt:= ' AND WITH RECIPE_NO = ':Recipe end rlist( Stmt, target_savelist$, ListsId, '', '' ) activate_save_select( ListsId ) if Offsets then HeadStart = 'Offset ' ColStart = 'Offsets..........' end else HeadStart = 'Injector ' ColStart = 'Injectors........' end CustArray = '' ValArray = '' CntArray = '' if @reccount then gosub SetUpPrinter Eof = false$ loop readnext @id else Eof = true$ until Eof read @record from RDSTable, @id else MsgInfo = '' MsgInfo = -2 MsgInfo = -2 MsgInfo = 'Unable to read record id ':@id:' from RDS' Void = msg( '', MsgInfo ) return 0 end if Offsets then ValToUse = {ALL_OFFSETS} end else ValToUse = @record if ValToUse = '' then ValToUse = 'N/A' end end CustId = @record locate CustId in CustArray using @fm setting CPos then * do nothing this customer found end else CustArray = insert( CustArray, -1, 0, 0, CustId ) end locate ValToUse in ValArray using @vm setting VPos then CntArray = CntArray + 1 end else ValArray = insert( ValArray, CPos, -1, 0, ValToUse ) CntArray = insert( CntArray, CPos, -1, 0, 1 ) end repeat * now loop through the custarray CustCnt = fieldcount( CustArray, @fm ) for i = 1 to CustCnt ThisCust = oconv( CustArray, '[XLATE_CONV,COMPANY*CO_NAME]' ) TheseVals = ValArray TheseCnts = CntArray ArraysToPass = TheseCnts:@fm:TheseVals array_sort( ArraysToPass, 'D', 'R' ) Vcnt = fieldcount( TheseVals, @vm ) for j = 1 to Vcnt PrintLine = '' PrintLine:= ThisCust:@vm PrintLine:= fmt( ArraysToPass<2,j>, 'R#17' ):@vm ;* these are the vals PrintLine:= fmt( ArraysToPass<1,j>, 'R#8' ) ;* these are the cnts Statx = set_printer( 'TEXTCOL', PrintLine ) next j next i Stat = utility( 'CURSOR', 'A' ) Void = set_printer( 'TERM', 1 ) end else MsgInfo = '' MsgInfo = -2 MsgInfo = -2 MsgInfo = 'NO Records meeting your date criteria!!' MsgInfo = '!' Void = msg( '', MsgInfo ) end write '' on SysListsTable, ListsId else MsgInfo = '' MsgInfo = -2 MsgInfo = -2 MsgInfo = 'Unable to clear SYSLISTS ':ListsId:'...' Void = msg( '', MsgInfo ) return 0 end return 0 *============================================================================* SetUpPrinter: if DirToPrinter = 'Yes' then OutputParam = 0 end else OutputParam = 3 ;* maximized print preview end PrintPath = Printer_Select('',1) ;* Get default printer path Void = set_printer( 'INIT', '', '', .31:@fm:.75:@fm:.25:@fm:.5, 0, OutputParam,PrintPath ) TheHeader = HeadStart:' report for reactor# ':Reactor:' ' if Recipe <> '' then TheHeader:= 'Recipe#':Recipe:' ' end TheHeader:= "from ":DateInFrom:' - ':DateInThru:" Page # 'P'" HeadPos = '3,2,1' convert ',' to @fm in HeadPos ColHeader = "Customer.........................":@vm:ColStart:@vm:"Total..." Void = set_printer( 'FONTHEADFOOT' ) Void = set_printer( 'HEADER', TheHeader, HeadPos, ColHeader ) return *============================================================================*