| 2169 | // |
| 2170 | |
| 2171 | static void gen_emodify( const act* action) |
| 2172 | { |
| 2173 | TEXT s1[MAX_REF_SIZE], s2[MAX_REF_SIZE]; |
| 2174 | |
| 2175 | const upd* modify = (upd*) action->act_object; |
| 2176 | |
| 2177 | for (const ref* reference = modify->upd_port->por_references; reference; |
| 2178 | reference = reference->ref_next) |
| 2179 | { |
| 2180 | const ref* source = reference->ref_source; |
| 2181 | if (!source) |
| 2182 | continue; |
| 2183 | const gpre_fld* field = reference->ref_field; |
| 2184 | gen_name(s1, source, true); |
| 2185 | gen_name(s2, reference, true); |
| 2186 | switch (field->fld_dtype) |
| 2187 | { |
| 2188 | case dtype_blob: |
| 2189 | case dtype_quad: |
| 2190 | case dtype_date: |
| 2191 | sprintf(output_buffer, "%sCALL \"isc_qtoq\" USING %s, %s\n", names[COLUMN], s1, s2); |
| 2192 | break; |
| 2193 | default: |
| 2194 | sprintf(output_buffer, "%sMOVE %s TO %s\n", names[COLUMN], s1, s2); |
| 2195 | } |
| 2196 | COB_print_buffer(output_buffer, true); |
| 2197 | if (field->fld_array_info) |
| 2198 | gen_get_or_put_slice(action, reference, false); |
| 2199 | } |
| 2200 | |
| 2201 | gen_send(action, modify->upd_port); |
| 2202 | } |
| 2203 | |
| 2204 | |
| 2205 | //____________________________________________________________ |
no test coverage detected