there are many ways to do what you want, but I would use a while or repeat loop instead of a for loop. (Maybe it's just me, but I've always assumed that in a for statement the order can be whatever AIMMS wants.)
If you want a set with the elements reversed, just create a subset and use -Ord(index) in the order by attribute. See Ref manual for more information.
Here are examples of the above
MySet := data { Q , Y, A , Z , F } ;
pCard := Card(MySet) ;
!----------------------------------
! Addressing elements in reverse order
!----------------------------------
s := "";
while (LoopCount <= pCard) do
eMySet := Element(MySet , pCard - Loopcount + 1 ) ; !gets elements in reverse order
! do whaterver you want using eMySet
s += FormatString("%e,", eMySet);
endwhile;
DialogMessage(s);
!----------------------------------
! or using a (reverse) sorted set
!----------------------------------
s := "";
MySortedSet := sort(iMySet, -ord(iMyset) );
while (LoopCount <= pCard) do
eMySet := Element(MySortedSet , Loopcount ) ; !gets elements in reverse order
! do whaterver you want using eMySet
s += FormatString("%e,", eMySet);
endwhile;
DialogMessage(s);