We all been in this position. There you are working on that great bit of SQL, you made a few changes, commented bits out added a few things and all of a sudden you get this...
---------+---------+---------+---------+---------+---------+---------+---------+
DSNT408I SQLCODE = -104, ERROR: ILLEGAL SYMBOL ".". SOME SYMBOLS THAT MIGHT BE
LEGAL ARE: <IDENTIFIER>
DSNT418I SQLSTATE = 42601 SQLSTATE RETURN CODE
DSNT415I SQLERRP = DSNHPARS SQL PROCEDURE DETECTING ERROR
DSNT416I SQLERRD = 0 0 0 -1 3548 0 SQL DIAGNOSTIC INFORMATION
DSNT416I SQLERRD = X'00000000' X'00000000' X'00000000' X'FFFFFFFF'
X'00000DDC' X'00000000' SQL DIAGNOSTIC INFORMATION
---------+---------+---------+---------+---------+---------+---------+---------+
Great, so you got a dot in the wrong place, but WHICH ONE!!!!!!! Well. actually SPUFI is telling you, but you need to know how to look at the message. Look at the line prefixed by DSNT416I. The fifth number after the equals is 3548. "So?" I hear you ask. Well that is where the character is that DB2 has a problem with.
Of course it isn't quite that simple. Firstly SPUFI only recognises 72 charactes per line and lines which are entirely comments are also ignored. So what we need to do is divide this number by 72 and add 1 to get the line we are on (remembering to ignore commented lines) and use the remainder as a poistion on that line.
So now we get (3548/72) which is 49 remainder 20. Add one to the line and we get line 50 position 20. If you look at the SQL again now and go to the fiftyeth non-commented out line and look at position 20 and you will see an extra dot.
Here endeth the lesson.