| 810 | // |
| 811 | |
| 812 | static 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 | // |
no test coverage detected