| 3706 | // |
| 3707 | |
| 3708 | static void make_port( const gpre_port* port) |
| 3709 | { |
| 3710 | const USHORT length = (port->por_length + 3) & ~3; |
| 3711 | printa(COLUMN, "CHARACTER isc_%d(%d)", port->por_ident, length); |
| 3712 | |
| 3713 | const ref* reference; |
| 3714 | for (reference = port->por_references; reference; reference = reference->ref_next) |
| 3715 | { |
| 3716 | const gpre_fld* field = reference->ref_field; |
| 3717 | const gpre_sym* symbol = field->fld_symbol; |
| 3718 | const SCHAR* name; |
| 3719 | if (symbol) |
| 3720 | name = symbol->sym_string; |
| 3721 | else |
| 3722 | name = "<expression>"; |
| 3723 | if (reference->ref_value && (reference->ref_flags & REF_array_elem)) |
| 3724 | field = field->fld_array; |
| 3725 | |
| 3726 | switch (field->fld_dtype) |
| 3727 | { |
| 3728 | case dtype_short: |
| 3729 | fprintf(gpreGlob.out_file, "%sINTEGER*2 isc_%d %s{ %s }\n", |
| 3730 | COLUMN, reference->ref_ident, INLINE_COMMENT, name); |
| 3731 | break; |
| 3732 | |
| 3733 | case dtype_long: |
| 3734 | fprintf(gpreGlob.out_file, "%sINTEGER*4 isc_%d %s{ %s }\n", |
| 3735 | COLUMN, reference->ref_ident, INLINE_COMMENT, name); |
| 3736 | break; |
| 3737 | |
| 3738 | case dtype_cstring: |
| 3739 | case dtype_text: |
| 3740 | fprintf(gpreGlob.out_file, "%sCHARACTER*%d isc_%d %s{ %s }\n", |
| 3741 | COLUMN, field->fld_length, reference->ref_ident, INLINE_COMMENT, name); |
| 3742 | break; |
| 3743 | |
| 3744 | case dtype_date: |
| 3745 | case dtype_quad: |
| 3746 | case dtype_blob: |
| 3747 | fprintf(gpreGlob.out_file, "%sINTEGER*4 isc_%d(2) %s{ %s }\n", |
| 3748 | COLUMN, reference->ref_ident, INLINE_COMMENT, name); |
| 3749 | break; |
| 3750 | |
| 3751 | case dtype_real: |
| 3752 | fprintf(gpreGlob.out_file, "%sREAL isc_%d %s{ %s }\n", |
| 3753 | COLUMN, reference->ref_ident, INLINE_COMMENT, name); |
| 3754 | break; |
| 3755 | |
| 3756 | case dtype_double: |
| 3757 | fprintf(gpreGlob.out_file, "%s%s isc_%d %s{ %s }\n", |
| 3758 | COLUMN, DOUBLE_DCL, reference->ref_ident, INLINE_COMMENT, name); |
| 3759 | break; |
| 3760 | |
| 3761 | default: |
| 3762 | { |
| 3763 | SCHAR s[ERROR_LENGTH]; |
| 3764 | fb_utils::snprintf(s, sizeof(s), "datatype %d unknown for field %s, msg %d", |
| 3765 | field->fld_dtype, name, port->por_msg_number); |
no test coverage detected