Hi tansel and welcome,
Suggest you get rid of your shiftOut() function and replace it with the standard Arduino shiftOut() function.
Next, looking at this part:
for(int j=0;j<12;j=j+3)
{
Tlc.clear();
Tlc.set(j, 4095);
Tlc.update();
}
Should the Tlc.clear() and Tlc.update() really be inside the loop?
Lastly, when does your sketch ever use dataArray[1] to dataArray[4] ? Are they not supposed to be part of the multiplexing sequence? I think you have a little more code to write!
Paul