id_spreadsheet = par_id;
user_id = cnx->id_user;

__SQL_GET_INTEGER(num_row,
"SELECT row_number FROM co_sys_spreadsheet_row WHERE id=%d",
id_row )
__ASSERT( (num_row>0) , "column with id=%d not found", id_row)
__SQL_GET_INTEGER(num_column,
"SELECT column_number FROM co_sys_spreadsheet_column WHERE id=%d",
id_column )
__ASSERT( (num_column>0) , "column with id=%d not found", id_column)

@co_call('"sys"','"clipboard"',"retrieveClipboardObject", par_area=>'"sys"', par_class=>'"clipboard"', par_id=>user_id, owner_area=>'"sys"', owner_class=>'"expression"' );



serialization = (const char *) cou_getReturnValue(cnx, CO_STRING, &err);

/* parsing */
while ((*serialization) && (*serialization++ != '@')); /* skip original cell position */
{
char *s_ptr = ap_pstrdup(p, serialization);
char *s_ptr2;
char *s_cell_ref, *s_range_ref, *expression_parsed;

s_cell_ref = s_ptr;
/* go to range refs and add cell refs */
while (*s_ptr) {
if (*s_ptr=='#') {
*s_ptr='\0';
if (*s_cell_ref) loc_setParsedReference(cnx,
id_spreadsheet, id_column, id_row,
num_column, num_row, s_cell_ref);
s_ptr++;
break;
}
else
if (*s_ptr=='|') {
*s_ptr='\0';
s_ptr++;
if (*s_cell_ref) loc_setParsedReference(cnx,
id_spreadsheet, id_column, id_row,
num_column, num_row, s_cell_ref);
s_cell_ref = s_ptr;
}
else s_ptr++;
};
s_range_ref = s_ptr;

/* go to expression text and add range refs */
while (*s_ptr) {
if (*s_ptr=='$') {
*s_ptr='\0';
if (*s_range_ref) loc_setParsedRange(cnx,
id_spreadsheet, id_column, id_row,
num_column, num_row, s_range_ref);
s_ptr++;
break;
}
else
if (*s_ptr=='|') {
*s_ptr='\0';
s_ptr++;
if (*s_range_ref) loc_setParsedRange(cnx,
id_spreadsheet, id_column, id_row,
num_column, num_row, s_range_ref);
s_range_ref = s_ptr;
}
else s_ptr++;
};
expression_parsed = s_ptr;

@co_call('"sys"','"expression"',"setParsed", par_id=>id_spreadsheet, id_row=>id_row, id_column=>id_column, expression_parsed=>expression_parsed );




@co_call('"sys"','"expression"',"evalRectangle", par_id=>id_spreadsheet, id_column=>id_column,id_row=>id_row, id_last_column=>id_column,id_last_row=>id_row);




}