#!/bin/sh  
# \
exec oagtclsh "$0" "$@"

# $Log: not supported by cvs2svn $
# Revision 1.6  2002/10/04 03:50:28  emery
# Added analysis of PV added and removed.
#
# Revision 1.5  2002/10/02 18:40:26  shang
# replaced burtrb by obtaining PVs from iocRecNames.sdds
#
# Revision 1.4  2001/09/21 03:10:54  emery
# Put file BMs.mon.extra in different list variable to prevent it
# from being deleted at end of script.
#
# Revision 1.3  2001/06/26 17:20:24  borland
# Now uses BMs.mon.extra file if found.
#
# Revision 1.2  2001/05/04 17:59:56  emery
# replaced exec rm commands.
#
# Revision 1.1  2000/10/31 00:30:14  emery
# !first installation.
#

set root BMs
set recordFile /home/helios/oagData/pvdata/iocRecNamesOAG.sdds
if [file exists BMs.mon.extra] {
    set fileListKeep BMs.mon.extra
}

set fileList ""
for {set sector 1} {$sector<41} {incr sector} {
    set sectoru $sector
    set sector [format %02ld $sector]
    if [catch {exec sddsprocess ${root}.mon.template ${root}.mon.$sector\
                 -reedit=column,ControlName,%/<sector>/$sector/%/<sectoru>/$sectoru/ \
                 -reedit=column,ReadbackName,%/<sector>/$sector/%/<sectoru>/$sectoru/ \
                 -reedit=column,Beamline,%/<sector>/S$sector/%/<sectoru>/$sectoru/ } result] {
        puts stderr "Error: $result"
        exit
    }
    lappend fileList ${root}.mon.$sector 
    scan $sector %ld sector
}

set generation 1
set newFile ""
while 1 {
    set lastFile $newFile
    set newFile [format ${root}.mon-%04ld $generation]
    if ![file exists $newFile] {
        break
    }
    incr generation
}

if [catch {eval exec sddscombine $fileListKeep $fileList -pipe=out -merge | \
             sddsprocess -pipe -edit=col,rec_name,ControlName,S?/./D \
             | sddssort -column=rec_name -pipe \
             | sddsxref -reuse -nowarnings -pipe $recordFile -match=rec_name \
             | sddsconvert -pipe -delete=col,rec_name \
             | sddssort -pipe -column=ReadbackName -unique \
             | sddsprocess -pipe=in $newFile -print=column,Provider,ca -print=column,ExpectNumeric,y,type=character -print=column,ExpectFieldType,scalar -define=column,ExpectElements,1,type=long} result] {
        puts stderr "Error: $result"
        exit
}
eval file delete $fileList
puts stderr "New  file: [exec sdds2stream -rows $newFile]"

if [string length $lastFile] {
    exec sddsselect $newFile $lastFile PVsAdded -match=ControlName -invert -nowarnings
    exec sddsselect $lastFile $newFile PVsRemoved -match=ControlName -invert -nowarnings
    puts stderr "Last file: [exec sdds2stream -rows $lastFile]"
    puts stderr "PVs added: [exec sdds2stream -rows PVsAdded]"
    puts stderr "PVs removed: [exec sdds2stream -rows PVsRemoved]"
}
exit
if [file exists ${root}.mon] {
    file delete ${root}.mon
}
exec ln -s $newFile ${root}.mon
exit
