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

Function asgn_from

src/gpre/languages/cob.cpp:812–852  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

810//
811
812static void asgn_from( const act* action, const ref* reference)
813{
814 TEXT name[MAX_REF_SIZE], variable[MAX_REF_SIZE], temp[MAX_REF_SIZE];
815
816 for (; reference; reference = reference->ref_next)
817 {
818 const gpre_fld* field = reference->ref_field;
819 if (field->fld_array_info)
820 if (!(reference->ref_flags & REF_array_elem))
821 {
822 printa(names[COLUMN], true, "CALL \"isc_qtoq\" USING %s, %s",
823 names[isc_blob_null_pos], gen_name(name, reference, true));
824 gen_get_or_put_slice(action, reference, false);
825 continue;
826 }
827
828 if (!reference->ref_source && !reference->ref_value)
829 continue;
830 gen_name(variable, reference, true);
831 const char* value;
832 if (reference->ref_source)
833 value = gen_name(temp, reference->ref_source, true);
834 else
835 value = reference->ref_value;
836 if (!reference->ref_master || (reference->ref_flags & REF_literal))
837 sprintf(output_buffer, "%sMOVE %s TO %s\n", names[COLUMN], value, variable);
838 else
839 {
840 sprintf(output_buffer, "%sIF %s < 0 THEN\n", names[COLUMN], value);
841 COB_print_buffer(output_buffer, false);
842 sprintf(output_buffer, "%sMOVE -1 TO %s\n", names[COLUMN_INDENT], variable);
843 COB_print_buffer(output_buffer, false);
844 sprintf(output_buffer, "%sELSE\n", names[COLUMN]);
845 COB_print_buffer(output_buffer, false);
846 sprintf(output_buffer, "%sMOVE 0 TO %s\n", names[COLUMN_INDENT], variable);
847 COB_print_buffer(output_buffer, false);
848 sprintf(output_buffer, "%sEND-IF\n", names[COLUMN]);
849 }
850 COB_print_buffer(output_buffer, false);
851 }
852}
853
854//____________________________________________________________
855//

Callers 3

gen_procedureFunction · 0.70
gen_s_startFunction · 0.70
gen_updateFunction · 0.70

Calls 4

COB_print_bufferFunction · 0.85
printaFunction · 0.70
gen_nameFunction · 0.70
gen_get_or_put_sliceFunction · 0.70

Tested by

no test coverage detected