open-insight/LSL2/STPROC/RDS_RPT3.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

179 lines
5.3 KiB
Plaintext

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<mcol$> = -2
MsgInfo<mrow$> = -2
MsgInfo<mtext$> = 'Unable to open SYSLISTS...'
Void = msg( '', MsgInfo )
return 0
end
ListsId = 'RDS_RPT3*':@station
write '' on SysListsTable, ListsId else
MsgInfo = ''
MsgInfo<mcol$> = -2
MsgInfo<mrow$> = -2
MsgInfo<mtext$> = '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<mcol$> = -2
MsgInfo<mrow$> = -2
MsgInfo<mtext$> = 'Unable to open DICT.RDS'
Void = msg( '', MsgInfo )
return 0
end
open 'RDS' to RDSTable else
MsgInfo = ''
MsgInfo<mcol$> = -2
MsgInfo<mrow$> = -2
MsgInfo<mtext$> = '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<mcol$> = -2
MsgInfo<mrow$> = -2
MsgInfo<mtext$> = 'Unable to read record id ':@id:' from RDS'
Void = msg( '', MsgInfo )
return 0
end
if Offsets then
ValToUse = {ALL_OFFSETS}
end else
ValToUse = @record<rds_injectors$>
if ValToUse = '' then
ValToUse = 'N/A'
end
end
CustId = @record<rds_cust_no$>
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<CPos> using @vm setting VPos then
CntArray<CPos,VPos> = CntArray<CPos,VPos> + 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<i>, '[XLATE_CONV,COMPANY*CO_NAME]' )
TheseVals = ValArray<i>
TheseCnts = CntArray<i>
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<mcol$> = -2
MsgInfo<mrow$> = -2
MsgInfo<mtext$> = 'NO Records meeting your date criteria!!'
MsgInfo<micon$> = '!'
Void = msg( '', MsgInfo )
end
write '' on SysListsTable, ListsId else
MsgInfo = ''
MsgInfo<mcol$> = -2
MsgInfo<mrow$> = -2
MsgInfo<mtext$> = '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
*============================================================================*