Setting variables in a function

I'm not quite sure what I'm doing wrong here.

I've go several jobs which print reports. Occassionally a printer will break down and reports need to be move to another printer. Rather than hard code the printer names in our scripts I'm trying to set these programatically
using our function library (Solaris, Sybase) as follows:

Sample job script

#!/bin/ksh
#filename=test-funct.cmd

run_parameters()
{
PASSWORD=`cat $CIRC_PWF`
DSS_DSQUERY=CIRC125_WS
}
# MAIN
run_parameters

# Run our function
new_define_printers

# Let's check that some are set

echo "AREA24_PNTR=$AREA24_PNTR"
echo "AREA25_OFF_PNTR=$AREA25_OFF_PNTR"
echo "AREA44_OFF_PNTR=$AREA44_OFF_PNTR"
echo "AREA44_DC_PNTR=$AREA44_DC_PNTR"
echo "CUST_REL_NORTH_PNTR=$CUST_REL_NORTH_PNTR"

exit 0

My function

#!/bin/ksh
function new_define_printers
{
#First get our datecl
datectl=`date +%Y%m%d`

# Then query the database
isql -U$CIRC_LOGIN -S$DSQUERY << !end > /tmp/status$$
$PASSWORD
use $CIRC_DB
go
select ltrim(rtrim(printer_name)) + '=' + ltrim(rtrim(unix_name))
from printer_lst
where eff_dt <= getdate()
and (exp_dt is null or exp_dt >= getdate())
go
!end

# Check if the database was available
grep -i 'rows affected' /tmp/status$$ > /dev/null
stat=$?
if [[ $stat = 0 ]] then # The database was available
# Then clean up the list --- Note: the vi commands must be in line one
vi - /tmp/status$$ <<EOF > /tmp/vi$$
:1
:d3
:blush:
dd
dd
:1,.s/^ //
:w! /tmp/result$$
:q
EOF
# If we don't have a file today we need to save it
if [[ ! -e $CIRC_OUT/printer_lst_ctl$datectl ]] then
cp /tmp/result$$ $CIRC_OUT/printer_lst_ctl$datectl
fi
else
# The database is not available. Get the lastest file
lastest=`ls $CIRC_OUT/printer_lst_ctl.* | sort | tail -1`
# Put it into /tmp/result$$
cp $latest /tmp/result$$
fi

# Then get the latest file and run our commands to set the list
for i in `cat /tmp/result$$`
do
cmd=$i
$cmd
done

# Last, do a bit of cleanup and we're done
# First, let's find the oldest file (we want to keep at least three)
cntfile=`ls $CIRC_OUT/printer_lst_ctl.* | sort | wc -l | sed -e 's/ //g'`
delfile=`ls $CIRC_OUT/printer_lst_ctl.* | sort | head -1`
if [[ $cnt -gt 3 ]] then
rm -f $delfile
fi
rm -f /tmp/status$$
rm -f /tmp/vi$$
} # end define_printers

============================

I've got everything working except my variable aren't getting set. Here's a sample of what the /tmp/result$$ file looks like:

AREA41_DC_PNTR=area41_hs1
AREA41_OFF_PNTR=area41_hs2
AREA41_PNTR=area41_hs2
AREA42_DC_PNTR=area42_hs2
AREA42_OFF_PNTR=area42_hs2
AREA42_PNTR=area42_hs2
AREA44_DC_PNTR=area44_hs2
AREA44_OFF_PNTR=area44_hs2
AREA44_PNTR=area44_hs2
AREA45_DC_PNTR=area45_hs1
AREA45_OFF_PNTR=area45_hs2
AREA45_PNTR=area45_hs2
AREA46_DC_PNTR=area46_hs1
AREA46_OFF_PNTR=area46_hs2
AREA46_PNTR=area46_hs1
AREA49_DC_PNTR=area49_hs1
AREA49_OFF_PNTR=area49_hs2
AREA49_PNTR=area49_hs2

And here's the error I'm getting when I run this:

/apps/usr/circ/bin/test-funct.cmd[50]: AREA41_PNTR=area41_hs2: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA42_DC_PNTR=area42_hs2: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA42_OFF_PNTR=area42_hs2: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA42_PNTR=area42_hs2: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA44_DC_PNTR=area44_hs2: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA44_OFF_PNTR=area44_hs2: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA44_PNTR=area44_hs2: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA45_DC_PNTR=area45_hs1: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA45_OFF_PNTR=area45_hs2: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA45_PNTR=area45_hs2: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA46_DC_PNTR=area46_hs1: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA46_OFF_PNTR=area46_hs2: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA46_PNTR=area46_hs1: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA49_DC_PNTR=area49_hs1: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA49_OFF_PNTR=area49_hs2: not found
/apps/usr/circ/bin/test-funct.cmd[50]: AREA49_PNTR=area49_hs2: not found

============================

Where's my flaw? :confused:

All I needed to do what change this:

for i in `cat /tmp/result$$`
do
cmd=$i
$cmd
done

To this:

for i in `cat /tmp/result$$`
do
cmd=$i
export $cmd
done