match string in a file to file in a directory

Hello awk gurus,

I have a text file (st15.txt) containing many station ids.
st15.txt:
033445
234567
012345
222345
.
.
.
And, I want to match each station number to individual files in a directory, and then
I would like to copy that file into a different folder if any station id matches to a file.
For example,
"ls *.DAT" shows all files in the current directory.
Q012345.DAT
Q033445.DAT
Q123456.DAT
Q222345.DAT
X234567.DAT
X345678.DAT
.
.

If you look at "st15.txt", ONLY 4 stations are matching the files in the current directory. Thus,
033445 matches Q033445.DAT
234567 matches X234567.DAT
012345 matches Q012345.DAT
222345 matches Q222345.DAT

So, all these 4 *.DAT files should be copied into a new directory.
I think that awk would be the solution, but I don't know how to attack this problem.
Thanks,

Jae

this is without awk, will not perform well if the st15.txt is having a huge list of Ids. anyway

$ cat st15.txt
033445
234567
012345
222345

$ ls thedir/
Q012345.DAT Q033445.DAT Q123456.DAT Q222345.DAT X234567.DAT X345678.DAT

$ cat st15.txt | while read line; do cp thedir/*$line.DAT newdir/. ; done

$ ls newdir/
Q012345.DAT Q033445.DAT Q222345.DAT X234567.DAT

#!/bin/ksh

while read id
do
  if [ -f ./thedir/Q$id.DAT ]; then
    cp ./thedir/Q$id.DAT /to/new/directory
  fi
done < st15.txt

awk:

ls *.DAT | awk 'BEGIN{
 newdir="/destination"
 while( ( getline line < "file" ) > 0  ) {
   keys[line]=line   
 }
}
{
  if ( substr($0,2,6) in keys ) {
    cmd = "cp \047" $0 "\047 \047" newdir "\047"
    print cmd
    #system(cmd) #uncomment to copy
  } 
}' 

Another one:

(IFS=$'\n';cp $(printf "[QX]%s.DAT\n" $(<st15.txt)) dest)

If your shell doesn't expand $'\n' to a newline, use:

IFS='
'

cat st15.txt|while read line; do cp $(printf "[QX]%s.DAT" $line) ./dest;done

Thanks all!!