"syntax error at line 21 :'done' unexpected." error message"

I am trying to run the script bellow but its given me "syntax error at line 20 :'done' unexpected." error message"
can someone check to see if the script is ok? and correct me pls.
Today is my first day with scripting.
Gurus should pls help out

#!/bin/ksh
# Purpose: Check to see if file systems are filling up
# Usage: Execute from crontab
# Dependencies: mon_fs.dat
#*****************************************************
# The directory this script resides in ADMINDIR=/opt/admin/scripts
# The next variable can be set for multiple addresses
# (i.e.ibroxy71@sunguru.com)
MAILADD= ops-Unix@alibaba.com
# Define the hostname of the server SRVNM=`uname -n` while read -r FS MAXCAP do
CAPACITY=`df -k $FS | grep -v avail | awk {'print $5'} | awk -F% {'print $1'}`
if test $CAPACITY -gt $MAXCAP; then
mail $MAILADD <<EOF
From: $0 To: $MAILADD
Subject: File System on $SRVNM
$FS is at $CAPACITY% capacity on $SRVNM (Threshold is $MAXCAP%).
`date`
EOF
fi
done < $ADMINDIR/mon_fs.dat
exit 0

The 'done' must have a 'do' prior to it.

You have the line with the 'do' commented out:

# Define the hostname of the server SRVNM=`uname -n` while read -r FS MAXCAP do 

thanks for the input . but after editing the script and runing . it gave another error "./mon_fs.sh[26]: /mon_fs.dat: cannot open"
I don't know what could be the problem as i set the permission for this file (mon_fs.dat to 600).

The error says that file "/mon_fs.dat" doesn't exist. Notice, the path of the file being searched is "/" because you didn't set a value for the variable $ADMINDIR (is commented out). You must add this line in order for the script to work:

ADMINDIR=/opt/admin/scripts

Hope this helps.