int QSget_rows_list (QSprob p, int num, int *rowlist, int **rowcnt,
    int **rowbeg, int **rowind, double **rowval, double **rhs,
    char **sense, char ***names)
/* p is an initialized QSprob, a handle to an existing LP problem  */
/* Obtain the row information for row 0 and row 2.                 */

double *rowval = NULL, *rhs = NULL;
int *rowcnt = NULL, *rowbeg = NULL, *rowind = NULL;
char *sense = NULL, **names = NULL;
int rowlist[2] = { 0, 2 };
int i, j, rval;

rval = QSget_rows_list (p,
                        2, rowlist, &rowcnt, &rowbeg, &rowind, &rowval,
                        &rhs, &sense, &names);
if (rval) {
    fprintf (stderr, "could not obtain rows, error code %d\n", rval);
} else {
    for (i = 0; i < 2; i++) {
        printf ("%s RHS = %f, SENSE = %c\n", 
                names[i], rhs[i], sense[i]);
        printf ("   Coefficients: ");
        for (j = rowbeg[i]; j < rowbeg[i] + rowcnt[i]; j++) {
            printf ("(%d, %f) ", rowind[j], rowval[j]);
        }
        printf ("\n");
    }
}

QSfree (rowcnt); 
QSfree (rowbeg); 
QSfree (rowind);
QSfree (rowval);
QSfree (rhs); 
QSfree (sense);
if (names) {
    for (i = 0; i < 2; i++) {
        QSfree (names[i]);
    }
    QSfree (names);
}