TCL/Expect project questions

I am rewriting the first big script project I ever coded to clean up some issues, mainly my really clumsy bash code, and to migrate to TCL/Expect. I have a couple of questions that I could use some help with.

1.) The script needs to know where it is located. I realize that I could use "find / -name program_name" to set a variable but I would sure like something quicker and cleaner. Is there a command that I can run from the script that reveals its location in the tree? I know it would be better to put the script in the same location on all installations but this is not possible.

2.) The program (on the client end) creates a tar of selected directories, sub-directories or specific files, creates a checksum and scp's the tar files and the checksum amount to a remote server. On the remote server the files are checked to make sure they arrived undamaged then a flag is set on the client end to delete the tar files after n days. Since scp/ssh cannot be done by root I will need to su to a user id set up for this task. Are there any issues that I might run into running Expect as su that anyone might identify before I get hip deep into this?

Most of the time this will be run as a cron job on the client end but I wont always have access to the client machine to monitor its progress.

#!/bin/ksh

thisFILE="$(whence ${0})"
thisDIR="$(dirname ${thisFILE})"