#!/usr/bin/perl -w
# dbl2dabc V0.1
# convert ioc variable list to dabc config file
# v0.1: 7-Dec-2011 Joern Adamczewski-Musch, gsi
#
# to produce input lists, invoke following commands in ioc console:
# dbl ai > ${TOP}/iocBoot/${IOC}/cbm_ai.dbl
# dbl longin > ${TOP}/iocBoot/${IOC}/cbm_longin.dbl
# these files will appear in same directory as st.cmd for ioc
use English;
use strict;
use Getopt::Long;
use FileHandle;
use File::Path;
use File::Basename;
my $dbl_double_file = "./cbm_ai.dbl";
my $dbl_longin_file = "./cbm_longin.dbl";
my $dabc_config_file = "./EpicsRead.xml";
open( OUTFILE, '>', $dabc_config_file ) or die "Could not open $dabc_config_file: $! \n";
print "Generating dabc config file $dabc_config_file ...\n";
# first provide output file with standard header:
print OUTFILE "\n";
print OUTFILE "\n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
#evaluate long records if existing
my $rev=open( IFILE, '<', $dbl_longin_file );
if(!$rev)
{
# we do not have file, just set empty number with template:
print "Could not open $dbl_longin_file\n";
print OUTFILE " \n";
}
else
{
my @longints= ;
my $numlongs = $#longints + 1;
print "Using $numlongs longint records from file $dbl_longin_file\n";
print OUTFILE " \n";
foreach my $varint (@longints) {
chomp($varint);
my $outdata = sprintf(" - ",$varint);
print OUTFILE "$outdata\n";
}
print OUTFILE "
\n";
}
#evaluate double records if existing
$rev=open( DFILE, '<', $dbl_double_file );
if(!$rev)
{
# we do not have file, just set empty number with template:
print "Could not open $dbl_double_file\n";
print OUTFILE " \n";
}
else
{
my @longdubs= ;
my $numdoubles = $#longdubs + 1;
print "Using $numdoubles ai records from file $dbl_double_file\n";
print OUTFILE " \n";
foreach my $vardub (@longdubs) {
chomp($vardub);
my $outdata = sprintf(" - ",$vardub);
print OUTFILE "$outdata\n";
}
print OUTFILE "
\n";
}
#provide footer
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE " \n";
print OUTFILE "\n";
print "\tdone.\n";
print "! Do not forget to adjust and Run setup! \n";