| 503 | // |
| 504 | |
| 505 | static void asgn_from( const act* action, ref* reference, int column) |
| 506 | { |
| 507 | TEXT name[MAX_REF_SIZE], variable[MAX_REF_SIZE], temp[MAX_REF_SIZE]; |
| 508 | |
| 509 | for (; reference; reference = reference->ref_next) |
| 510 | { |
| 511 | const gpre_fld* field = reference->ref_field; |
| 512 | if (field->fld_array_info) |
| 513 | if (!(reference->ref_flags & REF_array_elem)) |
| 514 | { |
| 515 | printa(column, "%s := firebird.null_blob;", gen_name(name, reference, true)); |
| 516 | gen_get_or_put_slice(action, reference, false, column); |
| 517 | continue; |
| 518 | } |
| 519 | |
| 520 | if (!reference->ref_source && !reference->ref_value) |
| 521 | continue; |
| 522 | gen_name(variable, reference, true); |
| 523 | const TEXT* value; |
| 524 | if (reference->ref_source) |
| 525 | value = gen_name(temp, reference->ref_source, true); |
| 526 | else |
| 527 | value = reference->ref_value; |
| 528 | |
| 529 | if (!reference->ref_master) |
| 530 | printa(column, "%s := %s;", variable, value); |
| 531 | else |
| 532 | { |
| 533 | printa(column, "if %s < 0 then", value); |
| 534 | printa(column + INDENT, "%s := -1;", variable); |
| 535 | printa(column, "else"); |
| 536 | printa(column + INDENT, "%s := 0;", variable); |
| 537 | endif(column); |
| 538 | } |
| 539 | } |
| 540 | } |
| 541 | |
| 542 | //____________________________________________________________ |
| 543 | // |
no test coverage detected