There is a limit to command line size. gawk has nothing to do with it. Place your input filenames into a file our use ls directly:
Code:
local filelist=`ls fancy*.dat | awk '{
while (++i<=NF) {
split($i,x,"_");
y=(x[2]=="LANG")?4:3;
print x[y],y,$i}
}' | sort -t"-" +1 +2 | awk '{print $3}'`;