=={{header|REXX}}==
<lang rexx>
<lang rexx>/*REXX program sorts an array using the insertion-sort method. */
call gen@ /*generate array elements. */
call show@ 'before sort' /*show before array elements*/
call insertionSort highItem /*invoke the insertion sort.*/
call show@ ' after sort' /*show after array elements*/
exit
/*─────────────────────────────────────INSERTIONSORT subroutine────*/
insertionSort: procedure expose @.; parse arg highItem
do i=2 to highItem
value=@.i
do j=i-1 by -1 while j\==0 & @.j>value
jp1=j+1
@.jp1=@.j
end
jp1=j+1
@.jp1=value
end
return
/*─────────────────────────────────────GEN@ subroutine─────────────*/
gen@: @.='' /*assign default value. */
@.1="---Monday's Child Is Fair of Face (by Mother Goose)---"
@.2="Monday's child is fair of face;"
@.3="Tuesday's child is full of grace;"
@.4="Wednesday's child is full of woe;"
@.5="Thursday's child has far to go;"
@.6="Friday's child is loving and giving;"
@.7="Saturday's child works hard for a living;"
@.8="But the child that is born on the Sabbath day"
@.9="Is blithe and bonny, good and gay."
do highItem=1 while @.highItem\=='' /*find how many entries. */
end
highItem=highItem-1 /*adjust highItem slightly. */
return
/*─────────────────────────────────────SHOW@ subroutine────────────*/
show@: widthH=length(highItem) /*maximum width of any line.*/
do j=1 for highItem
say 'element' right(j,widthH) arg(1)':' @.j
end
say copies('─',80) /*show a seperator line. */
return</lang>
|