While Do Loops Problems

So i'm coding this loop for a class I have. I think it goes without saying that I don't have much experience with this. This loops is supposed to check the input entered by the user. If it's entered in the command line then it checks the validity of the data entered, if it's not entered on the cmd line, the use is prompted to enter it. I need this loop to check the validity of the data - if it doesn't meet requirements, tell them the error, get them to re enter the data (their data of birth) then re-check the information they've entered. It's supposed to stay in the loop until the data they've entered meets requirements. If you guys could help me it would be GREATLY appreciated.

This is what I have so far... PLEASE NOTE : The error checking logic works fine, I just need help with the loop.

#!/bin/bash

#####
## VARIABLES
#####
status=0
iyear=${birthday:0:4}
imonth=${birthday:4:2}
iday=${birthday:6:2}
curdate=$(date +"%Y%m%d")
cal $imonth $iyear 2> /dev/null | grep $iday > /dev/null && daterr=0 || daterr=1

while [ $status -eq 0 ] 
do

[ $# = 0 ] && read -p "Please enter your birthday in the format YYYYMMDD : " birthday || birthday=$1
#####
## DATE VERIFICATION
#####

# DATE MUST BE 8 CHARACTERS
if [ ${#birthday} -ne 8 ]
then
	echo "You entered ${#birthday} characters, please enter your birthdate in the form YYYYMMDD" 
	ErrMsg="You entered ${#birthday} characters, please enter your birthdate in the form YYYYMMDD"
	status=0
	continue

# DATE CANNOT CONTAIN LETTERS
elif echo "$birthday" | grep "[^0-9]" > /dev/null
then
	echo "Your entry contains non numeric characters, please enter your birthdate in the form YYYYMMDD : "
	status=0
	continue

# DATE MUST ACTUALLY EXIST
elif [ $dateerr -eq  1 ]
then
	echo "You entered $birthday which is an invalid date, please enter your birthday in the form YYYYMMDD : "
	status=0
	continue

# DATE MUST NOT BE IN THE FUTURE
elif [ $iyear$imonth$iday -gt $curdate 2> /dev/null ]
then
	echo "You entered $birthday, which is a future date, please enter your birthday in the form YYYYMMDD : "
	status=0
	continue
else
	status=1
	break
fi
done

Thread closed. Violation of the "No Homework" Rule.