#include <S.h>
void
makeseq(in, nin_p, out_p, nout_p)
long *in, *nin_p ;
long **out_p, *nout_p ;
{
    long nin = *nin_p ;
    long *out, nout = 0 ;
    long i ;
    if (nin == 0) {
        *nout_p = 0 ;
        *out_p = (long *)NULL ;
        PROBLEM "No input data" WARNING(NULL_ENTRY) ;
        return ;
    }
    /* compute maximum of in's */
    nout = *in ;
    for (i=1 ; i<nin ; i++)
        if (nout < in[i])
            nout = in[i] ;
    *nout_p = nout ;
    if (nout < 0) {
        PROBLEM
            "All input data is negative (max is %ld)", nout
        RECOVER(NULL_ENTRY) ;
    } else if (nout == 0) {
        *out_p = (long *)NULL ;
        return ;
    }
    /* allocate space for out vector and return pointer to it */
    *out_p = out = (long *)S_alloc(nout, sizeof(long)) ;
    for (i=0 ; i<nout ; i++)
        out[i] = i + 1 ;
}

