if(B[K].(RDOB().Date)==1 && B[K].... ==3 && B3 && B[K].(RDOB().Year)==1990)
Sorry to be blunt but What The F^&K is that about? I'm not surprised you have a problem.
Try breaking your conditions down into more manageable code.
I'm not sure what some of those parenthesis are about, I think you are trying to do something like:
That "if" statement on line 75 is pretty hard to parse with the human eye, but I don't think I can see a missing parenthesis.
It would be much easier to parse - and debug - that line if you organised it a bit more sensibly. For a start, why pass the entire array into the function along with an index? Why not just pass in a single STUDENT object?
then the whole thing becomes much more easy to look at and debug.
For starters, now that I've abstracted away a whole load of [] and (), I can see that the logic of the condition is very muddled. It looks as though you're checking whether the DOB is one of 01/01/1990, 02/02/1990 or 03/03/1990. If that's the case, you want some extra parentheses in there to ensure the expressions are evaluated in the correct order: