array and arrayfield macro