Definition: We call a set recursive if its characteristic function is recursive.
Claim: If the set $A\subset\mathbb N$ is recursive then $A=Range(f)$ for some recursive and increasing function.
Proof: If $A$ is infinite define $h$ by
$$h(0)=\mu z[\chi_A(z)=1]$$ $$h(x+1)=\mu z[\chi_A(z)=1\land z>h(x)]$$
Here $\mu,\chi_A$ are the minimization operator and $A$'s characteristic function respectively.
If $A$ is finite then $A=\{a_1,\dots a_n\}$ with $a_1<a_2\dots<a_n$. Now define $h$ by
$h(i)=\begin{cases} a_i & i<n \\ a_n & i\geq n\\ \end{cases}$
Clearly in each case the function $h$ satisfies the conditions of the theorem.
Questions:
1) Unless we can effectively decide on the ordinality of sets, the above procedure is ineffective. What is an effective procedure for enumerating recursive sets in increasing order?
2) If the set $A$ is infinite can we choose a strictly monotone enumeration function that is primitive recursive?
For (2), obviously not -- given an infinite decidable subset of $\mathbb N$, there is exactly one strictly monotone function that enumerates it, and that function does not have to be primitive recursive, as for example with $$ \{n\mid \exists k<n: n=\mathsf A(k,k)\} $$ where $\mathsf A$ is Ackermann's function, which by construction is not primitive recursive.
For (1), it sounds like you want a procedure that takes an (always halting) program and a produces different program that enumerates its accept set in non-decreasing order. Once you accept repetitions (which is necessary to deal with finite sets), this should be as easy as creating a program that computes
$$ f(n) = \max\bigl( (A \cap \{ 0,1,\ldots,n \})\cup\{\min A\} \bigr)$$
... as long as $A$ is not empty, of course.