Stocks close up on economic data; Wal-Mart falters