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

Function asgn_from

src/gpre/languages/rmc.cpp:717–819  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

715//
716
717static void asgn_from( const act* action, const ref* reference)
718{
719 TEXT name[MAX_REF_SIZE], variable[MAX_REF_SIZE], temp[MAX_REF_SIZE];
720
721 for (; reference; reference = reference->ref_next)
722 {
723 const gpre_fld* field = reference->ref_field;
724 if (field->fld_array_info)
725 if (!(reference->ref_flags & REF_array_elem))
726 {
727 printa(names[COLUMN], true, "CALL \"isc_qtoq\" USING %s, %s",
728 names[isc_blob_null_pos], gen_name(name, reference, true));
729 gen_get_or_put_slice(action, reference, false);
730 continue;
731 }
732
733 if (!reference->ref_source && !reference->ref_value)
734 continue;
735 gen_name(variable, reference, true);
736 const char* value;
737 if (reference->ref_source)
738 value = gen_name(temp, reference->ref_source, true);
739 else
740 value = reference->ref_value;
741
742 if (!reference->ref_master || (reference->ref_flags & REF_literal))
743 {
744 if (reference->ref_field->fld_dtype == dtype_date &&
745 strlen(gpreGlob.sw_cob_dformat) != 0)
746 {
747 sprintf(output_buffer, "%sCALL \"rmc_dtoc\" USING %s, %s, \"%s\"\n",
748 names[COLUMN], variable, value, gpreGlob.sw_cob_dformat);
749 }
750 else
751 {
752 if (reference->ref_field->fld_dtype == dtype_sql_date &&
753 strlen(gpreGlob.sw_cob_dformat) != 0)
754 {
755 sprintf(output_buffer, "%sCALL \"rmc_dtoc\" USING ISC-TEMP-QUAD, %s, \"%s\"\n",
756 names[COLUMN], value, gpreGlob.sw_cob_dformat);
757 RMC_print_buffer(output_buffer, false);
758 sprintf(output_buffer, "%sMOVE ISC-TEMP-QUAD-HIGH TO %s\n",
759 names[COLUMN], variable);
760 }
761 else
762 {
763 if (reference->ref_field->fld_dtype == dtype_sql_time &&
764 strlen(gpreGlob.sw_cob_dformat) != 0)
765 {
766 sprintf(output_buffer, "%sCALL \"rmc_dtoc\" USING ISC-TEMP-QUAD, %s, \"%s\"\n",
767 names[COLUMN], value, gpreGlob.sw_cob_dformat);
768 RMC_print_buffer(output_buffer, false);
769 sprintf(output_buffer, "%sMOVE ISC-TEMP-QUAD-LOW TO %s\n",
770 names[COLUMN], variable);
771 }
772 else
773 {
774 if (reference->ref_field->fld_dtype == dtype_cstring)

Callers 3

gen_procedureFunction · 0.70
gen_s_startFunction · 0.70
gen_updateFunction · 0.70

Calls 4

RMC_print_bufferFunction · 0.85
printaFunction · 0.70
gen_nameFunction · 0.70
gen_get_or_put_sliceFunction · 0.70

Tested by

no test coverage detected