| 971 | // |
| 972 | |
| 973 | static void gen_compile( const act* action, int column) |
| 974 | { |
| 975 | const gpre_req* request = action->act_request; |
| 976 | const gpre_dbb* db = request->req_database; |
| 977 | const gpre_sym* symbol = db->dbb_name; |
| 978 | |
| 979 | if (gpreGlob.sw_auto) |
| 980 | { |
| 981 | const TEXT* filename = db->dbb_runtime; |
| 982 | if (filename || !(db->dbb_flags & DBB_sqlca)) |
| 983 | { |
| 984 | printa(column, "if %s = nil then", symbol->sym_string); |
| 985 | make_ready(db, filename, status_vector(action), column + INDENT, 0); |
| 986 | } |
| 987 | if (action->act_error || (action->act_flags & ACT_sql)) |
| 988 | printa(column, "if (%s = nil) and (%s <> nil) then", |
| 989 | request_trans(action, request), symbol->sym_string); |
| 990 | else |
| 991 | printa(column, "if %s = nil then", request_trans(action, request)); |
| 992 | t_start_auto(action, request, status_vector(action), column + INDENT); |
| 993 | } |
| 994 | |
| 995 | if ((action->act_error || (action->act_flags & ACT_sql)) && gpreGlob.sw_auto) |
| 996 | printa(column, "if (%s = nil) and (%s <> nil) then", |
| 997 | request->req_handle, request_trans(action, request)); |
| 998 | else |
| 999 | printa(column, "if %s = nil then", request->req_handle); |
| 1000 | |
| 1001 | column += INDENT; |
| 1002 | begin(column); |
| 1003 | |
| 1004 | align(column); |
| 1005 | fprintf(gpreGlob.out_file, "GDS__COMPILE_REQUEST%s (%s, %s, %s, %d, gds__%d);\n", |
| 1006 | (request->req_flags & REQ_exp_hand) ? "" : "2", |
| 1007 | status_vector(action), symbol->sym_string, request->req_handle, |
| 1008 | request->req_length, request->req_ident); |
| 1009 | |
| 1010 | set_sqlcode(action, column); |
| 1011 | ends(column); |
| 1012 | column -= INDENT; |
| 1013 | |
| 1014 | // If blobs are present, zero out all of the blob handles. After this |
| 1015 | // point, the handles are the user's responsibility |
| 1016 | |
| 1017 | for (const blb* blob = request->req_blobs; blob; blob = blob->blb_next) |
| 1018 | printa(column - INDENT, "gds__%d := nil;", blob->blb_ident); |
| 1019 | } |
| 1020 | |
| 1021 | |
| 1022 | //____________________________________________________________ |
no test coverage detected