#!/bin/sh  
# \
exec oagtclsh "$0" "$@"
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
set args $argv
set input ""
set output ""
APSStrictParseArguments {input output}
if {([llength $input] != 1) || ([llength $output] != 1)} {
    puts "Usage: abci2sdds -input <filename> -output <filename>"
    exit
}


set fid [open $input r]
set data [read $fid]
close $fid

set lines [split $data \n]
set mode 0
set index 1
foreach line $lines {
    if {$mode == 0} {
	set title [lrange [string trim $line] 1 end]
	incr mode
    } elseif {$mode == 1} {
	set sigz [lindex [split [lindex [split $line \;] 1] =] 1]
	set ubt [lindex [split [lindex [split $line \;] 2] =] 1]
	incr mode
    } elseif {$mode == 2} {
	incr mode
    } elseif {$mode == 3} {
	set MROT [lindex $line end-1]
	set rows [lindex $line end]
	incr mode
    } elseif {$mode == 4} {
	set line1 [split $line ()]
        set column1 "x"
        set column2 "y"
        set column1symbol [join [string trim [lindex $line1 0]] ""]
        set column1units [string trim [lindex $line1 1]]
	if {[string trim $line] == "Freq. F (GHz) k(F) (V/pC)"} {
            set column2symbol "k"
	    set column2units "V/pC"
	} else {
	    set column2symbol [join [string trim [lindex $line1 2]] ""]
	    set column2units [string trim [lindex $line1 3]]
	}
	set column1data ""
	set column2data ""
	incr mode
    } elseif {$mode == 5} {
	if {[llength $line] != 2} {
	    set sddsdata(ParameterNames) "Title sigz ubt MROT"
	    set sddsdata(ParameterInfo.Title) "type SDDS_STRING"
	    set sddsdata(ParameterInfo.sigz) "type SDDS_STRING"
	    set sddsdata(ParameterInfo.ubt) "type SDDS_STRING"
	    set sddsdata(ParameterInfo.MROT) "type SDDS_SHORT"
	    set sddsdata(Parameter.Title) [list "$title"]
	    set sddsdata(Parameter.sigz) [list "$sigz"]
	    set sddsdata(Parameter.ubt) [list "$ubt"]
	    set sddsdata(Parameter.MROT) [list "$MROT"]
	    set sddsdata(ColumnNames) "$column1 $column2"
	    set sddsdata(ColumnInfo.$column1) "type SDDS_DOUBLE units $column1units symbol $column1symbol"
	    set sddsdata(ColumnInfo.$column2) "type SDDS_DOUBLE units $column2units symbol $column2symbol"
	    set sddsdata(Column.$column1) [list "$column1data"]
	    set sddsdata(Column.$column2) [list "$column2data"]
	    sdds save $output.$index sddsdata
	    incr index
	    set mode 0
	} else {
	    lappend column1data [lindex $line 0]
	    lappend column2data [lindex $line 1]
	}
    }
}

