int user_generate_column(void *user, int generate_what, int cutnum, cut_data **cuts, int prevind, int nextind, int *real_nextind, double *colval, int *colind, int *collen, double *obj, double *lb, double *ub)

**Description:**-
This function is called when pricing out the columns that are not already fixed and are not explicitly represented in the matrix. Only the user knows the explicit description of these columns. When a missing variable need to be priced, the user is asked to provide the corresponding column. SYMPHONY scans through the known variables in the order of their user indices. After testing a variable in the matrix (

`prevind`), SYMPHONY asks the user if there are any missing variables to be priced before the next variable in the matrix (`nextind`). If there are missing variables before`nextind`, the user has to supply the user index of the real next variable (`real_nextind`) along with the corresponding column. Occasionally SYMPHONY asks the user to simply supply the column corresponding to`nextind`. The`generate_what`flag is used for making a distinction between the two cases: in the former case it is set to`GENERATE_REAL_NEXTIND`and in the latter it is set to`GENERATE_NEXTIND`. **Arguments:**-
`void *user`IN Pointer to the user-defined LP data structure. `int generate_what`IN `GENERATE_NEXTIND`or`GENERATE_REAL_NEXTIND`(see description above).`int cutnum`IN The number of added rows in the LP formulation (i.e., the total number of rows less the number of base constraints). This is the length of the `**cuts`array.`cut_data **cuts`IN Description of the cuts corresponding to the added rows of the current LP formulation. The user is supposed to know about the cuts corresponding to the base constraints. `int prevind`IN The last variable processed ( if there was none) by SYMPHONY. `int nextind`IN The next variable ( if there are none) known to SYMPHONY. `int *real_nextind`OUT Pointer to the user index of the next variable ( if there is none). `double *colval`OUT Values of the nonzero entries in the column of the next variable. (Sufficient space is already allocated for this array.) `int *colind`OUT Row indices of the nonzero entries in the column. (Sufficient space is already allocated for this array.) `int *collen`OUT The length of the `colval`and`colind`arrays.`double *obj`OUT Objective coefficient corresponding to the next variable. `double *lb`OUT Lower bound of the next variable. `double *ub`OUT Upper bound of the next variable. **Return values:**-
`USER_ERROR`Error. The LP process is aborted. `USER_SUCCESS`User filled out `*real_nextind`and generated its column if needed.`USER_DEFAULT`No column generation is done. **Wrapper invoked from:**`price_all_vars()`and`restore_lp_feasibility()`.**Note:**-
`colval`,`colind`,`collen`and`obj`do not need to be filled out if`real_nextind`is the same as`nextind`and`generate_what`is`GENERATE_REAL_NEXTIND`.

2007-06-12