diff --git a/gcc/cobol/genapi.cc b/gcc/cobol/genapi.cc index 8e4bc479d624b9f9f19ba1451b27fdb83f3f3858..b372e9c635cd3c37216ada53fcc394814ce0e00d 100644 --- a/gcc/cobol/genapi.cc +++ b/gcc/cobol/genapi.cc @@ -14726,7 +14726,7 @@ psa_new_var_decl(cbl_field_t *new_var, const char *external_record_base) if( new_var->attr & external_e ) { // For external variables, just stick with the original name - strcpy(base_name, new_var->name); + sprintf(base_name, "%s_cblc_field", new_var->name); } else { @@ -15378,7 +15378,11 @@ parser_symbol_add(struct cbl_field_t *new_var ) { // We need a unique name for the allocated data for this COBOL variable: char achDataName[256]; - if( new_var->name[0] == '_' ) + if( new_var->attr & external_e ) + { + sprintf(achDataName, "%s", new_var->name); + } + else if( new_var->name[0] == '_' ) { // Avoid doubling up on leading underscore sprintf(achDataName, @@ -15394,7 +15398,16 @@ parser_symbol_add(struct cbl_field_t *new_var ) sv_data_name_counter++); } - if( new_var->type != FldLiteralA ) + if( new_var->attr & external_e ) + { + tree array_type = build_array_type_nelts(UCHAR, bytes_to_allocate); + new_var->data_decl_node = gg_define_variable( + array_type, + achDataName, + vs_external); + data_area = gg_get_address_of(new_var->data_decl_node); + } + else if( new_var->type != FldLiteralA ) { tree array_type = build_array_type_nelts(UCHAR, bytes_to_allocate); new_var->data_decl_node = gg_define_variable(