csh思い出せないのでサンプルはbashで書きます。すいません。
入力をsedで日付風文字列に変換し、dateコマンドが解釈できるかどうかで判断してみてはいかがでしょうか。
bash
1$ cat hoge.sh
2#/bin/bash
3for text in $(
4cat <<EOD
520300405060708
620309405060708
720300495060708
820300405960708
920300405069708
1020300405060798
1120300101000000
1220301231235959
1320200229235959
1420210229235959
15EOD
16)
17do
18 datestring=$(echo $text | sed -e 's/(....)(..)(..)(..)(..)(...*)/\1-\2-\3 \4:\5:\6/')
19 date --date="$datestring" >/dev/null 2>&1 ; rc=$?
20 echo $text : rc = $rc
21done
うるう年判定もちゃんとやってくれます。dateコマンドはうるう秒(60秒)も扱えるようですが、解析までちゃんとできるかどうかは未確認です。
$ sh hoge.sh
20300405060708 : rc = 0
20309405060708 : rc = 1
20300495060708 : rc = 1
20300405960708 : rc = 1
20300405069708 : rc = 1
20300405060798 : rc = 1
20300101000000 : rc = 0
20301231235959 : rc = 0
20200229235959 : rc = 0
20210229235959 : rc = 1