Algunas veces es necesario trabajar con arrays ordenados de mayor a menor o viceversa. Esto se suele hacer usando locate para controlar la entrada de los datos en el array de forma ordenada; pero se pude dar el caso de que hagamos una carga secuencial y luego queramos que todo se ordene. Aquí es donde opera la magia.
En el caso de hacerlo con locate podremos usar este código entendiendo que la variable namesite no se repite y es por donde queremos ordenar
locate(namesite,myarray,1;index1;’AL’) then
* existe namesite, y podemos actualizar o sumar o lo que sea en otros atributos como por ejemplo
myarray<2,index1>+=ocupag
end else
* no existe namesite y tenemos la posicion, insertamos
myarray=insert(myarray,1,index1;namesite)
myarray=insert(myarray,2,index1;ocupag)
end
La alternativa es que hayamos cargado todo en secuencial y al final optamos por colocarlo usando la función u1072.
Para ello vamos cargan nuestro array de forma secuencial con un simple myarray<-1>=’valor’ o valores y al terminar procesamos la función :
myarray=oconv(myarray,’u1072′);* Orden Ascendente
Y el contenido de myarray estará colocado en orden ascendente. No es posible a la inversa pero siempre se puede recorrer el array de atras adelante para obtener ese efecto.