Tra
scambio=.FALSE.
e
IF(.NOT.scambio) EXIT
c'è un intero ciclo DO..ENDDO
Se durante quel ciclo avviene uno scambio, allora avrai scambio=.TRUE., altrimenti vuol dire che il vettore è ordinato e non c'è più bisogno di continuare l'esecuzione del programma.