97 lines
3.1 KiB
Tcl
97 lines
3.1 KiB
Tcl
#===========================================================================
|
|
# Support routines for scripting NeXus files with nxscript.
|
|
#
|
|
# Mark Koennecke, February 2003
|
|
# Mark Koennecke, January 2004
|
|
#==========================================================================
|
|
proc makeFileName args {
|
|
sicsdatanumber incr
|
|
set num [SplitReply [sicsdatanumber]]
|
|
set p [string trim [SplitReply [sicsdatapath]]]
|
|
set pre [string trim [SplitReply [sicsdataprefix]]]
|
|
set po [string trim [SplitReply [sicsdatapostfix]]]
|
|
return [format "%s%s%5.5d2003%s" $p $pre $num $po]
|
|
}
|
|
#==========================================================================
|
|
# new version, attending to the new 1000 grouping logic
|
|
proc newFileName args {
|
|
set ret [catch {nxscript makefilename} msg]
|
|
if {$ret != 0} {
|
|
clientput "ERROR: Misconfiguration of file writing variables"
|
|
clientput "Defaulting filename to emergency.hdf"
|
|
set fil emergency.hdf
|
|
} else {
|
|
set fil $msg
|
|
}
|
|
return $fil
|
|
}
|
|
#==========================================================================
|
|
proc writeFloatVar {alias var} {
|
|
set ret [catch {set val [SplitReply [$var]]} val]
|
|
if { $ret != 0} {
|
|
clientput [format "ERROR: failed to read %s, %s" $var $val]
|
|
return
|
|
} else {
|
|
set val [string trim $val]
|
|
set ret [catch {expr $val * 1.0} val]
|
|
if { $ret == 0} {
|
|
nxscript putfloat $alias [expr $val * 1.0 ]
|
|
} else {
|
|
clientput "ERROR: bad value $val when reading $var"
|
|
}
|
|
}
|
|
}
|
|
#==========================================================================
|
|
proc writeIntVar {alias var} {
|
|
set ret [catch {set val [SplitReply [$var]]} val]
|
|
if { $ret != 0} {
|
|
clientput [format "ERROR: failed to read %s, %s" $var $val]
|
|
return
|
|
} else {
|
|
set val [string trim $val]
|
|
set ret [catch {expr $val * 1.0} val]
|
|
if { $ret == 0} {
|
|
nxscript putint $alias [expr int($val * 1.0) ]
|
|
} else {
|
|
clientput "ERROR: bad value $val when reading $var"
|
|
}
|
|
}
|
|
}
|
|
#=========================================================================
|
|
proc writeTextVar {alias var} {
|
|
set ret [catch {$var} val]
|
|
if { $ret != 0} {
|
|
clientput [format "ERROR: failed to read %s" $var]
|
|
return
|
|
} else {
|
|
set index [string first = $val]
|
|
if {$index >= 0} {
|
|
set txt [string trim [string range $val [expr $index + 1] end]]
|
|
nxscript puttext $alias $txt
|
|
} else {
|
|
clientput [format "ERROR: failed to read %s" $var]
|
|
}
|
|
}
|
|
}
|
|
#========================================================================
|
|
proc writeTextAttribute {attName var} {
|
|
set ret [catch {set val [SplitReply [$var]]} val]
|
|
if { $ret != 0} {
|
|
clientput [format "ERROR: failed to read %s" $var]
|
|
return
|
|
} else {
|
|
nxscript putglobal $attName [string trim $val]
|
|
}
|
|
}
|
|
#=======================================================================
|
|
proc writeStandardAttributes {fileName} {
|
|
nxscript putglobal file_name $fileName
|
|
nxscript putglobal file_time [sicstime]
|
|
writeTextAttribute instrument instrument
|
|
writeTextAttribute owner user
|
|
writeTextAttribute owner_telephone_number phone
|
|
writeTextAttribute owner_fax_number fax
|
|
writeTextAttribute owner_email email
|
|
writeTextAttribute owner_address adress
|
|
}
|