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

# $Log: not supported by cvs2svn $
# Revision 1.6  2005/03/30 15:19:02  soliday
# Changed sorting method.
#
# Revision 1.5  2002/10/02 19:05:42  shang
# replaced burtrb by obtaining pvs from iocRecName.sdds
#
# Revision 1.4  2001/06/27 21:39:47  emery
# Add a cd statement to force going to the correct working directory.
#
# Revision 1.3  2001/05/07 18:34:40  emery
# Removed the cerenkov detectors for S36a S36b.
#
# Revision 1.2  2001/01/11 14:49:00  emery
# Added sector labels for scraper. Changed template name.
#
# Revision 1.1  2001/01/11 00:24:48  emery
# First installation.
#
# Revision 1.1  2000/10/31 00:25:00  emery
# First installation.
#

set auto_path [linsert $auto_path 0  /usr/local/oag/apps/lib/$env(HOST_ARCH)]
set auto_path [linsert $auto_path 0 /usr/local/oag/lib_patch/$env(HOST_ARCH)]
APSStandardSetup

cd /home/helios/oagData/monitoring/SRInjection

set root SRInjection
set recordFile /home/helios/oagData/pvdata/iocRecNamesOAG.sdds
for {set sector 0} {$sector<41} {incr sector} {
    # sectoru is the unformatted sector value.
    exec sddsprocess ${root}.sector.template ${root}.sector.$sector \
      -reedit=column,ControlName,%/<sector>/[format %02ld $sector]/%/<sectoru>/$sector/ \
      -reedit=column,ReadbackName,%/<sector>/[format %02ld $sector]/%/<sectoru>/$sector/
    lappend fileList ${root}.sector.$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 $fileList SRInjection.set1.mon \
             SRInjection.set2.mon  -merge -pipe=out  \
             | sddsprocess -pipe -print=col,ControlType,pv \
             -edit=col,rec_name,ControlName,S?/./D | \
             sddssort -column=rec_name -pipe | \
             sddsxref -pipe $recordFile -match=rec_name -nowarning -reuse | \
             sddsconvert -pipe -delete=col,rec_name | \
             sddssort -pipe -column=ControlName -numeric -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 1
}

eval file delete $fileList

puts stderr "New  file: [exec sdds2stream -rows $newFile]"

if [string length $lastFile] {
    exec sddsselect $newFile $lastFile PVsAdded -match=ControlName -invert
    exec sddsselect $lastFile $newFile PVsRemoved -match=ControlName -invert
    puts stderr "Last file: [exec sdds2stream -rows $lastFile]"
    puts stderr "PVs added: [exec sdds2stream -rows PVsAdded]"
    puts stderr "PVs removed: [exec sdds2stream -rows PVsRemoved]"
}

if [file exists ${root}.mon] {
     file delete ${root}.mon
}
exec ln -s $newFile ${root}.mon
exit
