| 2281 | // |
| 2282 | |
| 2283 | static void gen_procedure( const act* action, int column) |
| 2284 | { |
| 2285 | gpre_req* request = action->act_request; |
| 2286 | gpre_port* in_port = request->req_vport; |
| 2287 | gpre_port* out_port = request->req_primary; |
| 2288 | |
| 2289 | const gpre_dbb* database = request->req_database; |
| 2290 | PAT args; |
| 2291 | args.pat_database = database; |
| 2292 | args.pat_request = action->act_request; |
| 2293 | args.pat_vector1 = status_vector(action); |
| 2294 | args.pat_string2 = gpreGlob.ada_null_address; |
| 2295 | args.pat_request = request; |
| 2296 | args.pat_port = in_port; |
| 2297 | args.pat_port2 = out_port; |
| 2298 | |
| 2299 | const TEXT* pattern; |
| 2300 | if (in_port && in_port->por_length) |
| 2301 | pattern = |
| 2302 | "firebird.gds_transact_request (%V1 %RF%DH%RE, %RF%RT%RE, %VF%RS%VE, %RF%RI%RE, %VF%PL%VE, %PI'address, %VF%QL%VE, %QI'address);\n"; |
| 2303 | else |
| 2304 | pattern = |
| 2305 | "firebird.gds_transact_request (%V1 %RF%DH%RE, %RF%RT%RE, %VF%RS%VE, %RF%RI%RE, %VF0%VE, %S2, %VF%QL%VE, %QI'address);\n"; |
| 2306 | |
| 2307 | // Get database attach and transaction started |
| 2308 | |
| 2309 | if (gpreGlob.sw_auto) |
| 2310 | t_start_auto(action, 0, status_vector(action), column, true); |
| 2311 | |
| 2312 | // Move in input values |
| 2313 | |
| 2314 | asgn_from(action, request->req_values, column); |
| 2315 | |
| 2316 | // Execute the procedure |
| 2317 | |
| 2318 | PATTERN_expand(column, pattern, &args); |
| 2319 | |
| 2320 | set_sqlcode(action, column); |
| 2321 | |
| 2322 | printa(column, "if SQLCODE = 0 then"); |
| 2323 | |
| 2324 | // Move out output values |
| 2325 | |
| 2326 | asgn_to_proc(request->req_references, column); |
| 2327 | endif(column); |
| 2328 | } |
| 2329 | |
| 2330 | |
| 2331 | //____________________________________________________________ |
no test coverage detected