| 2288 | // |
| 2289 | |
| 2290 | static void gen_for( const act* action, int column) |
| 2291 | { |
| 2292 | gen_s_start(action, column); |
| 2293 | const gpre_req* request = action->act_request; |
| 2294 | |
| 2295 | if (action->act_error || (action->act_flags & ACT_sql)) |
| 2296 | success(column, true, global_status_name, " {"); |
| 2297 | |
| 2298 | printa(column, "while (1)"); |
| 2299 | column += INDENT; |
| 2300 | begin(column); |
| 2301 | gen_receive(action, column, request->req_primary); |
| 2302 | |
| 2303 | TEXT s[MAX_REF_SIZE]; |
| 2304 | if (action->act_error || (action->act_flags & ACT_sql)) |
| 2305 | printa(column, "if (!%s || (%s->getState() & Firebird::IStatus::STATE_ERRORS)) break;", |
| 2306 | gen_name(s, request->req_eof, true), global_status_name); |
| 2307 | else |
| 2308 | printa(column, "if (!%s) break;", gen_name(s, request->req_eof, true)); |
| 2309 | |
| 2310 | const gpre_port* port = action->act_request->req_primary; |
| 2311 | if (port) |
| 2312 | for (const ref* reference = port->por_references; reference; reference = reference->ref_next) |
| 2313 | { |
| 2314 | if (reference->ref_field->fld_array_info) |
| 2315 | gen_get_or_put_slice(action, reference, true, column); |
| 2316 | } |
| 2317 | |
| 2318 | } |
| 2319 | |
| 2320 | |
| 2321 | //____________________________________________________________ |
no test coverage detected