Module Ranking (output$, orderlist) { Open output$ for output as #k Gosub getdata Print #k, "Standard ranking:" skip=true rankval=1 oldrank=0 For i=1 to items Read rank, name$ if skip then skip=false else.if oldrank<>rank then rankval=i end if oldrank=rank Print #k, Format$("{0::-5} {2} ({1})", rankval, rank, name$) Next Gosub getdata Print #k, "Modified ranking:" skip=true rankval=Items oldrank=0 ShiftBack 1, -items*2 ' reverse stack items For i=items to 1 Read name$, rank if skip then skip=false else.if oldrank<>rank then rankval=i end if oldrank=rank Data Format$("{0::-5} {2} ({1})", rankval, rank, name$) Next ShiftBack 1, -items ' reverse stack items For i=1 to items Print #k, letter$ Next i Gosub getdata Print #k, "Dense ranking:" skip=true Dense=Stack acc=1 oldrank=0 For i=1 to items Read rank, name$ if skip then skip=false oldrank=rank else.if oldrank<>rank then oldrank=rank Gosub dense acc=i end if Stack Dense {data Format$(" {0} ({1})",name$, rank)} Next Gosub dense Gosub getdata Print #k, "Ordinal ranking:" For i=1 to items Print #k, Format$("{0::-5} {2} ({1})", i, Number, letter$) Next Gosub getdata Print #k, "Fractional ranking:" skip=true Frac=Stack acc=1 oldrank=0 For i=1 to items Read rank, name$ if skip then skip=false oldrank=rank else.if oldrank<>rank then oldrank=rank Gosub Fractional acc=I end if Stack Frac {data Format$(" {0} ({1})",name$, rank)} Next Gosub Fractional Close #k End Fractional: val=((len(Frac)+1)/2+(acc-1)) Stack Frac { while not empty Print #k, format$("{0:1:-5}{1}", val, letter$) end while } Return dense: Stack Dense { while not empty Print #k, format$("{0::-5}{1}", acc, letter$) end while } Return getdata: flush stack stack(orderlist) // place a copy of items to current stack items=stack.size/2 Return } Flush Data 44, "Solomon", 42, "Jason", 42, "Errol" Data 41, "Garry", 41, "Bernard", 41, "Barry" Data 39, "Stephen" // get all items from current stack to a new stack alist=[] // To screen Ranking "", alist // To file Ranking "ranking.txt", alist