Tamar already mentioned that such Reordering is often creating problems downstream.
As you already seem to enter a rising sequence, would it not be better to replace all sno with recno()?
It will give you non-duplicate numbers totally/contiously rising with the order data was entered (as you already have 2 breaks in your SNO...),
as long as there are no deleted data in your table and set deleted = ON
As it is unclear from your junk example if the real data is a cursor or (packable??) table and if deleted records could exist,
for the few quick scenarios I thought through the following should work
select * from junk into cursor T_Ord where deleted()=.f.
select T_Ord
replace all sno with Recno()
>
>CREATE CURSOR junk (sno n(3),amount n(6))
>INSERT INTO junk VALUES (1,500)
>INSERT INTO junk VALUES (2,600)
>INSERT INTO junk VALUES (3,700)
>INSERT INTO junk VALUES (5,800)
>INSERT INTO junk VALUES (6,900)
>INSERT INTO junk VALUES (7,1000)
>INSERT INTO junk VALUES (8,1100)
>INSERT INTO junk VALUES (10,1200)
>INSERT INTO junk VALUES (11,1300)
>
>
>
>
>
>
>
>
>In sequence, if found any missing sno then replace the maximum number of sno with missing sno.
>
>In the above example sno=4 is missing and maximum sno is 11
>so sno 11 is being replaced with sno 4 and so on.
>
>
>Please help