| 3271 | // |
| 3272 | |
| 3273 | static void make_port( const gpre_port* port, int column) |
| 3274 | { |
| 3275 | bool flag = false; |
| 3276 | |
| 3277 | printa(column, "gds__%dt = record", port->por_ident); |
| 3278 | |
| 3279 | for (const ref* reference = port->por_references; reference; reference = reference->ref_next) |
| 3280 | { |
| 3281 | if (flag) |
| 3282 | fprintf(gpreGlob.out_file, ";"); |
| 3283 | flag = true; |
| 3284 | align(column + INDENT); |
| 3285 | const gpre_fld* field = reference->ref_field; |
| 3286 | const TEXT* name; |
| 3287 | const gpre_sym* symbol = field->fld_symbol; |
| 3288 | if (symbol) |
| 3289 | name = symbol->sym_string; |
| 3290 | else |
| 3291 | name = "<expression>"; |
| 3292 | if (reference->ref_value && (reference->ref_flags & REF_array_elem)) |
| 3293 | field = field->fld_array; |
| 3294 | |
| 3295 | switch (field->fld_dtype) |
| 3296 | { |
| 3297 | case dtype_real: |
| 3298 | fprintf(gpreGlob.out_file, "gds__%d\t: real\t(* %s *)", reference->ref_ident, name); |
| 3299 | break; |
| 3300 | |
| 3301 | case dtype_double: |
| 3302 | fprintf(gpreGlob.out_file, "gds__%d\t: double\t(* %s *)", reference->ref_ident, name); |
| 3303 | break; |
| 3304 | |
| 3305 | case dtype_short: |
| 3306 | fprintf(gpreGlob.out_file, "gds__%d\t: %s\t(* %s *)", reference->ref_ident, SHORT_DCL, name); |
| 3307 | break; |
| 3308 | |
| 3309 | case dtype_long: |
| 3310 | fprintf(gpreGlob.out_file, "gds__%d\t: %s\t(* %s *)", reference->ref_ident, LONG_DCL, name); |
| 3311 | break; |
| 3312 | |
| 3313 | case dtype_date: |
| 3314 | case dtype_quad: |
| 3315 | case dtype_blob: |
| 3316 | fprintf(gpreGlob.out_file, "gds__%d\t: gds__quad\t(* %s *)", reference->ref_ident, name); |
| 3317 | break; |
| 3318 | |
| 3319 | case dtype_text: |
| 3320 | fprintf(gpreGlob.out_file, "gds__%d\t: %s [1..%d] of char\t(* %s *)", |
| 3321 | reference->ref_ident, PACKED_ARRAY, field->fld_length, name); |
| 3322 | break; |
| 3323 | |
| 3324 | default: |
| 3325 | { |
| 3326 | TEXT s[ERROR_LENGTH]; |
| 3327 | fb_utils::snprintf(s, sizeof(s), "datatype %d unknown for field %s, msg %d", |
| 3328 | field->fld_dtype, name, port->por_msg_number); |
| 3329 | CPR_error(s); |
| 3330 | return; |
no test coverage detected