What does '$?' mean in a shell script?

Hi,
I came across a shell script that contains a statement like,

export v_list=$( ls -1 ${AB_TEST}/ABC/${V_FILE_NAME}????????.*.dat )

what does ??? mean?

match 3 characters.

V_FILE_NAME is a parameter whose value is "STG" but there are 8 question marks i.e ???????? which is a date in (yyyymmdd)..
but when i run this shell script it is looking for STG????????.dat file but the file doesnot exists with this name because V_FILE_NAME is STG.

export v_list=$( ls -1 ${AB_TEST}/ABC/${V_FILE_NAME}????????*.dat )