MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / asgn_from

Function asgn_from

src/gpre/languages/ftn.cpp:665–714  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

663//
664
665static void asgn_from(const act* action, const ref* reference)
666{
667 SCHAR name[MAX_REF_SIZE], variable[MAX_REF_SIZE], temp[MAX_REF_SIZE];
668
669 for (; reference; reference = reference->ref_next)
670 {
671 const gpre_fld* field = reference->ref_field;
672 if (field->fld_array_info)
673 if (!(reference->ref_flags & REF_array_elem))
674 {
675 printa(COLUMN, "CALL isc_qtoq (isc_blob_null, %s)", gen_name(name, reference, true));
676 gen_get_or_put_slice(action, reference, false);
677 continue;
678 }
679
680 if (!reference->ref_source && !reference->ref_value)
681 continue;
682 gen_name(variable, reference, true);
683
684 const TEXT* value;
685 if (reference->ref_source)
686 value = gen_name(temp, reference->ref_source, true);
687 else
688 value = reference->ref_value;
689 if (reference->ref_value && (reference->ref_flags & REF_array_elem))
690 field = field->fld_array;
691 if (field->fld_dtype == dtype_blob || field->fld_dtype == dtype_quad ||
692 field->fld_dtype == dtype_date)
693 {
694 sprintf(output_buffer, "%sCALL isc_qtoq (%s, %s)\n", COLUMN, value, variable);
695 }
696 else if (!reference->ref_master || (reference->ref_flags & REF_literal))
697 {
698 sprintf(output_buffer, "%s%s = %s\n", COLUMN, variable, value);
699 }
700 else
701 {
702 sprintf(output_buffer, "%sIF (%s .LT. 0) THEN\n", COLUMN, value);
703 FTN_print_buffer(output_buffer);
704 sprintf(output_buffer, "%s%s = -1\n", COLUMN_INDENT, variable);
705 FTN_print_buffer(output_buffer);
706 sprintf(output_buffer, "%sELSE\n", COLUMN);
707 FTN_print_buffer(output_buffer);
708 sprintf(output_buffer, "%s%s = 0\n", COLUMN_INDENT, variable);
709 FTN_print_buffer(output_buffer);
710 sprintf(output_buffer, "%sEND IF\n", COLUMN);
711 }
712 FTN_print_buffer(output_buffer);
713 }
714}
715
716
717//____________________________________________________________

Callers 3

gen_procedureFunction · 0.70
gen_s_startFunction · 0.70
gen_updateFunction · 0.70

Calls 4

FTN_print_bufferFunction · 0.85
printaFunction · 0.70
gen_nameFunction · 0.70
gen_get_or_put_sliceFunction · 0.70

Tested by

no test coverage detected