00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 static char USMID[] = "\n@(#)5.0_pl/sources/nameres.c 5.3 06/01/99 13:21:01\n";
00038
00039 # include "defines.h"
00040
00041 # include "host.m"
00042 # include "host.h"
00043 # include "target.m"
00044 # include "target.h"
00045
00046 # include "globals.m"
00047 # include "tokens.m"
00048 # include "sytb.m"
00049 # include "debug.m"
00050 # include "p_globals.m"
00051
00052 # include "globals.h"
00053 # include "tokens.h"
00054 # include "sytb.h"
00055 # include "nameres.h"
00056 # include "p_globals.h"
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 boolean fnd_semantic_err(obj_type new_obj,
00106 int line,
00107 int column,
00108 int attr_idx,
00109 boolean issue_msg)
00110
00111 {
00112 int array_idx;
00113 long attr_obj_ntry;
00114 long dir_obj_ntry;
00115 int func_idx;
00116 int msg_num = 0;
00117 char *msg_str = NULL;
00118 long name_obj_ntry;
00119 long other_obj_ntry;
00120 int rslt_idx;
00121 boolean set_dcl_err = issue_msg;
00122
00123
00124 TRACE (Func_Entry, "fnd_semantic_err", obj_type_str[new_obj]);
00125
00126 attr_obj_ntry = obj_to_attr[new_obj];
00127 dir_obj_ntry = obj_to_dir[new_obj];
00128 name_obj_ntry = obj_to_name[new_obj];
00129 other_obj_ntry = obj_to_other[new_obj];
00130
00131 if (AT_OBJ_CLASS(attr_idx) == Data_Obj && ATD_SYMBOLIC_CONSTANT(attr_idx)) {
00132
00133 if (other_obj_ntry & (1 << Other_Npes)) {
00134 msg_num = other_msg_num[new_obj][Other_Npes];
00135
00136 if (new_obj == Obj_Use_Init_Expr && issue_msg) {
00137 PRINTMSG(line, 1212, Error, column,
00138 AT_OBJ_NAME_PTR(attr_idx));
00139
00140
00141
00142
00143 issue_msg = FALSE;
00144 goto ISSUE_ERR;
00145 }
00146 goto ISSUE_ERR;
00147 }
00148
00149
00150
00151 }
00152
00153 if (AT_REFERENCED(attr_idx) == Char_Rslt_Bound_Ref) {
00154
00155
00156
00157 if (other_obj_ntry & (1 << Other_Use_Char_Rslt)) {
00158 msg_num = other_msg_num[new_obj][Other_Use_Char_Rslt];
00159 goto ISSUE_ERR;
00160 }
00161 }
00162 else if (AT_ATTR_LINK(attr_idx) != NULL_IDX) {
00163
00164 if ((other_obj_ntry & (1 << Other_Host_Assoc)) &&
00165 !(AT_OBJ_CLASS(AT_ATTR_LINK(attr_idx)) == Pgm_Unit &&
00166 ATP_PROC(AT_ATTR_LINK(attr_idx)) == Intrin_Proc)) {
00167 msg_num = other_msg_num[new_obj][Other_Host_Assoc];
00168 goto ISSUE_ERR;
00169 }
00170 }
00171
00172 if (AT_USE_ASSOCIATED(attr_idx)) {
00173
00174 if (other_obj_ntry & (1 << Other_Use_Assoc)) {
00175
00176 if (AT_OBJ_CLASS(attr_idx) != Pgm_Unit ||
00177 ATP_PGM_UNIT(attr_idx) != Module) {
00178 msg_num = other_msg_num[new_obj][Other_Use_Assoc];
00179 goto ISSUE_ERR;
00180 }
00181 }
00182
00183 if (AT_NOT_VISIBLE(attr_idx)) {
00184 msg_num = 486;
00185
00186 if (issue_msg) {
00187 PRINTMSG(line, 486, Error, column,
00188 AT_OBJ_NAME_PTR(attr_idx),
00189 AT_OBJ_NAME_PTR(AT_MODULE_IDX((attr_idx))));
00190
00191
00192
00193
00194 issue_msg = FALSE;
00195 goto ISSUE_ERR;
00196 }
00197 }
00198 }
00199
00200 switch (AT_OBJ_CLASS(attr_idx)) {
00201 case Data_Obj:
00202
00203 switch (ATD_CLASS(attr_idx)) {
00204 case Atd_Unknown:
00205 if ((AT_REFERENCED(attr_idx) >= Dcl_Bound_Ref ||
00206 AT_DEFINED(attr_idx)) &&
00207 (other_obj_ntry & (1 << Other_Use_Variable))) {
00208 msg_num = other_msg_num[new_obj][Other_Use_Variable];
00209 goto ISSUE_ERR;
00210 }
00211 else if (ATD_AUXILIARY(attr_idx) &&
00212 (dir_obj_ntry & (1 << Dir_Auxiliary))) {
00213 msg_num = dir_msg_num[new_obj][Dir_Auxiliary];
00214 msg_str = dir_str[Dir_Auxiliary];
00215 goto ISSUE_ERR;
00216 }
00217 break;
00218
00219 case Variable:
00220
00221
00222
00223
00224 # if 0
00225
00226 if (name_obj_ntry & (1 << Name_Variable))) {
00227 msg_num = name_msg_num[new_obj][Name_Variable];
00228 msg_str = name_str[Name_Variable];
00229 goto ISSUE_ERR;
00230 }
00231 # endif
00232 if (ATD_DATA_INIT(attr_idx) &&
00233 (attr_obj_ntry & (1 << Attr_Data_Init))) {
00234 msg_num = attr_msg_num[new_obj][Attr_Data_Init];
00235 msg_str = attr_str[Attr_Data_Init];
00236 goto ISSUE_ERR;
00237 }
00238 else if (ATD_EQUIV(attr_idx) &&
00239 (attr_obj_ntry & (1 << Attr_Equivalence))) {
00240 msg_num = attr_msg_num[new_obj][Attr_Equivalence];
00241 msg_str = attr_str[Attr_Equivalence];
00242 goto ISSUE_ERR;
00243 }
00244 else if (ATD_SAVED(attr_idx) &&
00245 (attr_obj_ntry & (1 << Attr_Save))) {
00246 msg_num = attr_msg_num[new_obj][Attr_Save];
00247 msg_str = attr_str[Attr_Save];
00248 goto ISSUE_ERR;
00249 }
00250 else if (ATD_IN_COMMON(attr_idx) &&
00251 (name_obj_ntry & (1 << Name_Common_Obj))) {
00252 msg_num = name_msg_num[new_obj][Name_Common_Obj];
00253 msg_str = name_str[Name_Common_Obj];
00254
00255 if (issue_msg) {
00256
00257 if (new_obj == Obj_Common_Obj) {
00258
00259
00260
00261 PRINTMSG(line, name_msg_num[Obj_Common_Obj][Name_Common_Obj],
00262 Error, column,
00263 AT_OBJ_NAME_PTR(attr_idx),
00264 SB_NAME_PTR(ATD_STOR_BLK_IDX(attr_idx)));
00265
00266
00267
00268
00269 issue_msg = FALSE;
00270 }
00271 }
00272 goto ISSUE_ERR;
00273 }
00274 else if (ATD_AUXILIARY(attr_idx) &&
00275 (dir_obj_ntry & (1 << Dir_Auxiliary))) {
00276 msg_num = dir_msg_num[new_obj][Dir_Auxiliary];
00277 msg_str = dir_str[Dir_Auxiliary];
00278 goto ISSUE_ERR;
00279 }
00280 else if (ATD_SYMMETRIC(attr_idx) &&
00281 (dir_obj_ntry & (1 << Dir_Symmetric))) {
00282 msg_num = dir_msg_num[new_obj][Dir_Symmetric];
00283 msg_str = dir_str[Dir_Symmetric];
00284 goto ISSUE_ERR;
00285 }
00286 else if ((AT_REFERENCED(attr_idx) >= Dcl_Bound_Ref ||
00287 AT_DEFINED(attr_idx)) &&
00288 (other_obj_ntry & (1 << Other_Use_Variable))) {
00289 msg_num = other_msg_num[new_obj][Other_Use_Variable];
00290 goto ISSUE_ERR;
00291 }
00292 break;
00293
00294 case Dummy_Argument:
00295
00296
00297
00298
00299 if (AT_IS_DARG(attr_idx) &&
00300 (name_obj_ntry & (1 << Name_Dummy_Arg))) {
00301 msg_num = name_msg_num[new_obj][Name_Dummy_Arg];
00302 msg_str = name_str[Name_Dummy_Arg];
00303 goto ISSUE_ERR;
00304 }
00305 else if (AT_OPTIONAL(attr_idx) &&
00306 (attr_obj_ntry & (1 << Attr_Optional) ) ) {
00307 msg_num = attr_msg_num[new_obj][Attr_Optional];
00308 msg_str = attr_str[Attr_Optional];
00309 goto ISSUE_ERR;
00310 }
00311 else if (ATD_INTENT(attr_idx) != Intent_Unseen &&
00312 (attr_obj_ntry & (1 << Attr_Intent)) ) {
00313 msg_num = attr_msg_num[new_obj][Attr_Intent];
00314 msg_str = attr_str[Attr_Intent];
00315 goto ISSUE_ERR;
00316 }
00317 else if (ATD_AUXILIARY(attr_idx) &&
00318 (dir_obj_ntry & (1 << Dir_Auxiliary))) {
00319 msg_num = dir_msg_num[new_obj][Dir_Auxiliary];
00320 msg_str = dir_str[Dir_Auxiliary];
00321 goto ISSUE_ERR;
00322 }
00323 else if (ATD_IGNORE_TKR(attr_idx) &&
00324 (dir_obj_ntry & (1 << Dir_Ignore_TKR)) ) {
00325 msg_num = dir_msg_num[new_obj][Dir_Ignore_TKR];
00326 msg_str = dir_str[Dir_Ignore_TKR];
00327 goto ISSUE_ERR;
00328 }
00329 else if ((AT_REFERENCED(attr_idx) >= Dcl_Bound_Ref ||
00330 AT_DEFINED(attr_idx)) &&
00331 (other_obj_ntry & (1 << Other_Use_Dummy_Arg))) {
00332 msg_num = other_msg_num[new_obj][Other_Use_Dummy_Arg];
00333 goto ISSUE_ERR;
00334 }
00335 break;
00336
00337 case Function_Result:
00338
00339 if (name_obj_ntry & (1 << Name_Func_Result)) {
00340 msg_num = name_msg_num[new_obj][Name_Func_Result];
00341 msg_str = name_str[Name_Func_Result];
00342 goto ISSUE_ERR;
00343 }
00344
00345 func_idx = ATD_FUNC_IDX(attr_idx);
00346
00347 if (AT_ATTR_LINK(func_idx) != NULL_IDX) {
00348
00349 if ((other_obj_ntry & (1 << Other_Host_Assoc)) &&
00350 !(AT_OBJ_CLASS(AT_ATTR_LINK(func_idx)) == Pgm_Unit &&
00351 ATP_PROC(AT_ATTR_LINK(func_idx)) == Intrin_Proc)) {
00352 msg_num = other_msg_num[new_obj][Other_Host_Assoc];
00353 goto ISSUE_ERR;
00354 }
00355 }
00356
00357 if (!ATP_EXPL_ITRFC(func_idx)) {
00358
00359 if (ATP_VFUNCTION(func_idx) &&
00360 (dir_obj_ntry & (1<<Dir_Vfunction))) {
00361 msg_num = dir_msg_num[new_obj][Dir_Vfunction];
00362 msg_str = dir_str[Dir_Vfunction];
00363 goto ISSUE_ERR;
00364 }
00365
00366 if (ATP_NOSIDE_EFFECTS(func_idx) &&
00367 (dir_obj_ntry & (1 << Dir_No_Side_Effects)) ) {
00368 msg_num = dir_msg_num[new_obj][Dir_No_Side_Effects];
00369 msg_str = dir_str[Dir_No_Side_Effects];
00370 goto ISSUE_ERR;
00371 }
00372
00373 if (ATP_DCL_EXTERNAL(func_idx) &&
00374 attr_obj_ntry & (1 << Attr_External)) {
00375 msg_num = attr_msg_num[new_obj][Attr_External];
00376 msg_str = attr_str[Attr_External];
00377 goto ISSUE_ERR;
00378 }
00379
00380 if (AT_OPTIONAL(func_idx) && attr_obj_ntry & (1 << Attr_Optional)) {
00381 msg_num = attr_msg_num[new_obj][Attr_Optional];
00382 msg_str = attr_str[Attr_Optional];
00383 goto ISSUE_ERR;
00384 }
00385 }
00386
00387 break;
00388
00389 case CRI__Pointee:
00390
00391 if (TYP_TYPE(ATD_TYPE_IDX(attr_idx)) == Character &&
00392 AT_TYPED(attr_idx) &&
00393 (name_obj_ntry & (1 << Name_Cri_Ch_Pointee))) {
00394 msg_num = name_msg_num[new_obj][Name_Cri_Ch_Pointee];
00395 msg_str = name_str[Name_Cri_Ch_Pointee];
00396 goto ISSUE_ERR;
00397 }
00398 else if (name_obj_ntry & (1 << Name_Cri_Pointee)) {
00399 msg_num = name_msg_num[new_obj][Name_Cri_Pointee];
00400 msg_str = name_str[Name_Cri_Pointee];
00401 goto ISSUE_ERR;
00402 }
00403 break;
00404
00405 case Constant:
00406 if (attr_obj_ntry & (1 << Attr_Parameter)) {
00407 msg_num = attr_msg_num[new_obj][Attr_Parameter];
00408 msg_str = attr_str[Attr_Parameter];
00409 goto ISSUE_ERR;
00410 }
00411 break;
00412
00413 case Compiler_Tmp:
00414 case Struct_Component:
00415 break;
00416
00417 }
00418
00419 if (ATD_VOLATILE(attr_idx) && (attr_obj_ntry & (1 << Attr_Volatile))) {
00420 msg_num = attr_msg_num[new_obj][Attr_Volatile];
00421 msg_str = attr_str[Attr_Volatile];
00422 goto ISSUE_ERR;
00423 }
00424
00425 if ((ATD_COPY_ASSUMED_SHAPE(attr_idx) ||
00426 (SCP_COPY_ASSUMED_SHAPE(curr_scp_idx) &&
00427 ATD_ARRAY_IDX(attr_idx) != NULL_IDX &&
00428 BD_ARRAY_CLASS(ATD_ARRAY_IDX(attr_idx)) == Assumed_Shape)) &&
00429 dir_obj_ntry & (1 << Dir_Copy_Assumed_Shape)) {
00430 msg_num = dir_msg_num[new_obj][Dir_Copy_Assumed_Shape];
00431 msg_str = dir_str[Dir_Copy_Assumed_Shape];
00432 goto ISSUE_ERR;
00433 }
00434
00435 if (ATD_ALLOCATABLE(attr_idx) &&
00436 (attr_obj_ntry & (1 << Attr_Allocatable))) {
00437 msg_num = attr_msg_num[new_obj][Attr_Allocatable];
00438 msg_str = attr_str[Attr_Allocatable];
00439 goto ISSUE_ERR;
00440 }
00441
00442 if (ATD_STACK(attr_idx) &&
00443 (attr_obj_ntry & (1 << Attr_Automatic))) {
00444 msg_num = attr_msg_num[new_obj][Attr_Automatic];
00445 msg_str = attr_str[Attr_Automatic];
00446 goto ISSUE_ERR;
00447 }
00448
00449 if (ATD_FILL_SYMBOL(attr_idx) &&
00450 dir_obj_ntry & (1 << Dir_Fill_Symbol)) {
00451 msg_num = dir_msg_num[new_obj][Dir_Fill_Symbol];
00452 msg_str = dir_str[Dir_Fill_Symbol];
00453 goto ISSUE_ERR;
00454 }
00455
00456 if (ATD_ALIGN_SYMBOL(attr_idx) &&
00457 dir_obj_ntry & (1 << Dir_Align_Symbol)) {
00458 msg_num = dir_msg_num[new_obj][Dir_Align_Symbol];
00459 msg_str = dir_str[Dir_Align_Symbol];
00460 goto ISSUE_ERR;
00461 }
00462
00463 if (ATD_SECTION_GP(attr_idx) &&
00464 dir_obj_ntry & (1 << Dir_Section_Gp)) {
00465 msg_num = dir_msg_num[new_obj][Dir_Section_Gp];
00466 msg_str = dir_str[Dir_Section_Gp];
00467 goto ISSUE_ERR;
00468 }
00469
00470 if (ATD_SECTION_NON_GP(attr_idx) &&
00471 dir_obj_ntry & (1 << Dir_Section_Non_Gp)) {
00472 msg_num = dir_msg_num[new_obj][Dir_Section_Non_Gp];
00473 msg_str = dir_str[Dir_Section_Non_Gp];
00474 goto ISSUE_ERR;
00475 }
00476
00477 array_idx = ATD_ARRAY_IDX(attr_idx);
00478
00479 if (array_idx != NULL_IDX) {
00480
00481 if (attr_obj_ntry & (1 << Attr_Dimension)) {
00482 msg_num = attr_msg_num[new_obj][Attr_Dimension];
00483 msg_str = attr_str[Attr_Dimension];
00484 goto ISSUE_ERR;
00485 }
00486
00487 switch (BD_ARRAY_CLASS(array_idx)) {
00488 case Explicit_Shape:
00489
00490 switch (BD_ARRAY_SIZE(array_idx)) {
00491 case Unknown_Size:
00492 case Constant_Size:
00493 case Symbolic_Constant_Size:
00494
00495 if (attr_obj_ntry & (1 << Attr_Explicit_Shp_Arr)) {
00496 msg_num = attr_msg_num[new_obj][Attr_Explicit_Shp_Arr];
00497 msg_str = attr_str[Attr_Explicit_Shp_Arr];
00498 goto ISSUE_ERR;
00499 }
00500 break;
00501
00502 case Var_Len_Array:
00503
00504 if (other_obj_ntry & (1 << Other_Var_Len_Arr)) {
00505 msg_num = other_msg_num[new_obj][Other_Var_Len_Arr];
00506 goto ISSUE_ERR;
00507 }
00508 break;
00509
00510 }
00511 break;
00512
00513 case Assumed_Size:
00514 if (attr_obj_ntry & (1 << Attr_Assumed_Size_Arr)) {
00515 msg_num = attr_msg_num[new_obj][Attr_Assumed_Size_Arr];
00516 msg_str = attr_str[Attr_Assumed_Size_Arr];
00517 goto ISSUE_ERR;
00518 }
00519 break;
00520
00521 case Deferred_Shape:
00522 if (attr_obj_ntry & (1 << Attr_Deferred_Shp_Arr)) {
00523 msg_num = attr_msg_num[new_obj][Attr_Deferred_Shp_Arr];
00524 msg_str = attr_str[Attr_Deferred_Shp_Arr];
00525 goto ISSUE_ERR;
00526 }
00527 break;
00528
00529 case Assumed_Shape:
00530 if (attr_obj_ntry & (1 << Attr_Assumed_Shp_Arr)) {
00531 msg_num = attr_msg_num[new_obj][Attr_Assumed_Shp_Arr];
00532 msg_str = attr_str[Attr_Assumed_Shp_Arr];
00533 goto ISSUE_ERR;
00534 }
00535 break;
00536
00537 # ifdef _DEBUG
00538 default:
00539 PRINTMSG(AT_DEF_LINE(attr_idx), 179, Internal,
00540 AT_DEF_COLUMN(attr_idx), "fnd_semantic_err");
00541 break;
00542 # endif
00543 }
00544 }
00545
00546 # ifdef COARRAY_FORTRAN
00547 array_idx = ATD_PE_ARRAY_IDX(attr_idx);
00548
00549 if (array_idx != NULL_IDX) {
00550 if (attr_obj_ntry & (1 << Attr_Co_Array)) {
00551 msg_num = attr_msg_num[new_obj][Attr_Co_Array];
00552 msg_str = attr_str[Attr_Co_Array];
00553 goto ISSUE_ERR;
00554 }
00555 }
00556 # endif
00557
00558 if (AT_TYPED(attr_idx)) {
00559
00560 if (ATD_TYPE_IDX(attr_idx) == CRI_Ptr_8 ||
00561 ATD_TYPE_IDX(attr_idx) == CRI_Ch_Ptr_8) {
00562
00563 if (name_obj_ntry & (1 << Name_Cri_Pointer)) {
00564 msg_num = name_msg_num[new_obj][Name_Cri_Pointer];
00565 msg_str = name_str[Name_Cri_Pointer];
00566 goto ISSUE_ERR;
00567 }
00568 }
00569 else if (attr_obj_ntry & (1 << Attr_Type)) {
00570 msg_num = attr_msg_num[new_obj][Attr_Type];
00571 msg_str = get_basic_type_str(ATD_TYPE_IDX(attr_idx));
00572
00573 if (new_obj == Obj_Typed) {
00574
00575
00576
00577
00578
00579 if (strcmp(msg_str, obj_str[new_obj]) == 0) {
00580 msg_num = 554;
00581 }
00582 }
00583
00584 goto ISSUE_ERR;
00585 }
00586 else if (TYP_TYPE(ATD_TYPE_IDX(attr_idx)) == Character) {
00587
00588 if (TYP_CHAR_CLASS(ATD_TYPE_IDX(attr_idx)) == Assumed_Size_Char) {
00589
00590 if (attr_obj_ntry & (1 << Attr_Assumed_Type_Ch)) {
00591 msg_num = attr_msg_num[new_obj][Attr_Assumed_Type_Ch];
00592 msg_str = attr_str[Attr_Assumed_Type_Ch];
00593 goto ISSUE_ERR;
00594 }
00595 }
00596 else if (TYP_CHAR_CLASS(ATD_TYPE_IDX(attr_idx)) == Var_Len_Char) {
00597
00598 if (other_obj_ntry & (1 << Other_Var_Len_Ch)) {
00599 msg_num = other_msg_num[new_obj][Other_Var_Len_Ch];
00600 goto ISSUE_ERR;
00601 }
00602 }
00603 }
00604 }
00605
00606 if (ATD_POINTER(attr_idx) && (attr_obj_ntry & (1 << Attr_Pointer))) {
00607 msg_num = attr_msg_num[new_obj][Attr_Pointer];
00608 msg_str = attr_str[Attr_Pointer];
00609 goto ISSUE_ERR;
00610 }
00611 else if (ATD_TARGET(attr_idx) && (attr_obj_ntry & (1 << Attr_Target))) {
00612 msg_num = attr_msg_num[new_obj][Attr_Target];
00613 msg_str = attr_str[Attr_Target];
00614 goto ISSUE_ERR;
00615 }
00616 else if (AT_NAMELIST_OBJ(attr_idx) &&
00617 (name_obj_ntry & (1 << Name_Namelist_Group_Obj))) {
00618 msg_num = name_msg_num[new_obj][Name_Namelist_Group_Obj];
00619 msg_str = name_str[Name_Namelist_Group_Obj];
00620 goto ISSUE_ERR;
00621 }
00622 break;
00623
00624
00625 case Pgm_Unit:
00626
00627 switch (ATP_PGM_UNIT(attr_idx)) {
00628 case Program:
00629 if (name_obj_ntry & (1 << Name_Program)) {
00630 msg_num = name_msg_num[new_obj][Name_Program];
00631 msg_str = name_str[Name_Program];
00632 goto ISSUE_ERR;
00633 }
00634 break;
00635
00636 case Blockdata:
00637 if (name_obj_ntry & (1 << Name_Blockdata)) {
00638 msg_num = name_msg_num[new_obj][Name_Blockdata];
00639 msg_str = name_str[Name_Blockdata];
00640 goto ISSUE_ERR;
00641 }
00642 break;
00643
00644 case Module:
00645 if (name_obj_ntry & (1 << Name_Module)) {
00646 msg_num = name_msg_num[new_obj][Name_Module];
00647 msg_str = name_str[Name_Module];
00648 goto ISSUE_ERR;
00649 }
00650 break;
00651
00652 case Subroutine:
00653
00654
00655
00656
00657
00658
00659
00660
00661 if (attr_idx == SCP_ATTR_IDX(curr_scp_idx) ||
00662 (ATP_ALT_ENTRY(attr_idx) && ATP_SCP_ALIVE(attr_idx))) {
00663
00664 if (name_obj_ntry & (1 << Name_Curr_Subr)) {
00665 msg_num = name_msg_num[new_obj][Name_Curr_Subr];
00666 msg_str = name_str[Name_Curr_Subr];
00667 goto ISSUE_ERR;
00668 }
00669 }
00670 else {
00671 switch (ATP_PROC(attr_idx)) {
00672 case Dummy_Proc:
00673 if (ATP_EXPL_ITRFC(attr_idx)) {
00674
00675 if (other_obj_ntry & (1 << Other_Expl_Interface)) {
00676 msg_num = other_msg_num[new_obj][Other_Expl_Interface];
00677 goto ISSUE_ERR;
00678 }
00679 }
00680 else if (ATP_DCL_EXTERNAL(attr_idx)) {
00681
00682 if (attr_obj_ntry & (1 << Attr_External)) {
00683 msg_num = attr_msg_num[new_obj][Attr_External];
00684 msg_str = attr_str[Attr_External];
00685 goto ISSUE_ERR;
00686 }
00687 }
00688 else if (AT_OPTIONAL(attr_idx) &&
00689 attr_obj_ntry & (1 << Attr_Optional)) {
00690 msg_num = attr_msg_num[new_obj][Attr_Optional];
00691 msg_str = attr_str[Attr_Optional];
00692 goto ISSUE_ERR;
00693 }
00694 else if (AT_REFERENCED(attr_idx) >= Dcl_Bound_Ref ||
00695 other_obj_ntry & (1 << Other_Use_Subr)) {
00696 msg_num = other_msg_num[new_obj][Other_Use_Subr];
00697 goto ISSUE_ERR;
00698 }
00699 break;
00700
00701 case Extern_Proc:
00702 if (ATP_EXPL_ITRFC(attr_idx)) {
00703
00704 if (other_obj_ntry & (1 << Other_Expl_Interface)) {
00705 msg_num = other_msg_num[new_obj][Other_Expl_Interface];
00706 goto ISSUE_ERR;
00707 }
00708 }
00709 else if (ATP_DCL_EXTERNAL(attr_idx)) {
00710
00711 if (attr_obj_ntry & (1 << Attr_External)) {
00712 msg_num = attr_msg_num[new_obj][Attr_External];
00713 msg_str = attr_str[Attr_External];
00714 goto ISSUE_ERR;
00715 }
00716 }
00717 else if (AT_REFERENCED(attr_idx) >= Dcl_Bound_Ref ||
00718 other_obj_ntry & (1 << Other_Use_Subr)) {
00719 msg_num = other_msg_num[new_obj][Other_Use_Subr];
00720 goto ISSUE_ERR;
00721 }
00722 break;
00723
00724
00725 case Intrin_Proc:
00726
00727 if (name_obj_ntry & (1 << Name_Intrinsic_Subr)) {
00728 msg_num = name_msg_num[new_obj][Name_Intrinsic_Subr];
00729 msg_str = name_str[Name_Intrinsic_Subr];
00730 goto ISSUE_ERR;
00731 }
00732 break;
00733
00734 case Module_Proc:
00735
00736 if (ATP_EXPL_ITRFC(attr_idx)) {
00737
00738 if (other_obj_ntry & (1 << Other_Expl_Interface)) {
00739 msg_num = other_msg_num[new_obj][Other_Expl_Interface];
00740 goto ISSUE_ERR;
00741 }
00742 }
00743 else if (name_obj_ntry & (1 << Name_Module_Proc)) {
00744 msg_num = name_msg_num[new_obj][Name_Module_Proc];
00745 msg_str = name_str[Name_Module_Proc];
00746 goto ISSUE_ERR;
00747 }
00748 break;
00749
00750 case Intern_Proc:
00751 if (name_obj_ntry & (1 << Name_Internal_Subr)) {
00752 msg_num = name_msg_num[new_obj][Name_Internal_Subr];
00753 msg_str = name_str[Name_Internal_Subr];
00754 goto ISSUE_ERR;
00755 }
00756 break;
00757
00758 case Unknown_Proc:
00759 if (other_obj_ntry & (1 << Other_Use_Subr)) {
00760 msg_num = other_msg_num[new_obj][Other_Use_Subr];
00761 goto ISSUE_ERR;
00762 }
00763 break;
00764 }
00765
00766
00767 if (ATP_VFUNCTION(attr_idx) &&
00768 (dir_obj_ntry & (1 << Dir_Vfunction)) ) {
00769 msg_num = dir_msg_num[new_obj][Dir_Vfunction];
00770 msg_str = dir_str[Dir_Vfunction];
00771 goto ISSUE_ERR;
00772 }
00773 else if (ATP_NOSIDE_EFFECTS(attr_idx) &&
00774 (dir_obj_ntry & (1 << Dir_No_Side_Effects)) ) {
00775 msg_num = dir_msg_num[new_obj][Dir_No_Side_Effects];
00776 msg_str = dir_str[Dir_No_Side_Effects];
00777 goto ISSUE_ERR;
00778 }
00779 else if (ATP_NAME_IN_STONE(attr_idx) &&
00780 (dir_obj_ntry & (1 << Dir_Name)) ) {
00781 msg_num = dir_msg_num[new_obj][Dir_Name];
00782 msg_str = dir_str[Dir_Name];
00783 goto ISSUE_ERR;
00784 }
00785 else if ((ATP_INLINE_ALWAYS(attr_idx) ||
00786 ATP_INLINE_NEVER(attr_idx))&&
00787 (dir_obj_ntry & (1 << Dir_Inline)) ) {
00788 msg_num = dir_msg_num[new_obj][Dir_Inline];
00789 msg_str = dir_str[Dir_Inline];
00790 goto ISSUE_ERR;
00791 }
00792 }
00793 break;
00794
00795
00796 case Function:
00797
00798
00799
00800
00801
00802
00803
00804
00805 if (attr_idx == SCP_ATTR_IDX(curr_scp_idx) ||
00806 (ATP_ALT_ENTRY(attr_idx) && ATP_SCP_ALIVE(attr_idx))) {
00807
00808 if (name_obj_ntry & (1 << Name_Curr_Func)) {
00809 msg_num = name_msg_num[new_obj][Name_Curr_Func];
00810 msg_str = name_str[Name_Curr_Func];
00811 goto ISSUE_ERR;
00812 }
00813 }
00814 else {
00815
00816 switch (ATP_PROC(attr_idx)) {
00817 case Dummy_Proc:
00818 if (ATP_EXPL_ITRFC(attr_idx)) {
00819
00820 if (other_obj_ntry & (1 << Other_Expl_Interface)) {
00821 msg_num = other_msg_num[new_obj][Other_Expl_Interface];
00822 goto ISSUE_ERR;
00823 }
00824 }
00825 else if (ATP_DCL_EXTERNAL(attr_idx)) {
00826
00827 if (attr_obj_ntry & (1 << Attr_External)) {
00828 msg_num = attr_msg_num[new_obj][Attr_External];
00829 msg_str = attr_str[Attr_External];
00830 goto ISSUE_ERR;
00831 }
00832 }
00833 else if (AT_OPTIONAL(attr_idx) &&
00834 attr_obj_ntry & (1 << Attr_Optional)) {
00835 msg_num = attr_msg_num[new_obj][Attr_Optional];
00836 msg_str = attr_str[Attr_Optional];
00837 goto ISSUE_ERR;
00838 }
00839 else if ((AT_REFERENCED(attr_idx) >= Dcl_Bound_Ref ||
00840 AT_DEFINED(attr_idx)) &&
00841 (other_obj_ntry & (1 << Other_Use_Func))) {
00842 msg_num = other_msg_num[new_obj][Other_Use_Func];
00843 goto ISSUE_ERR;
00844 }
00845 break;
00846
00847 case Extern_Proc:
00848 if (ATP_EXPL_ITRFC(attr_idx)) {
00849
00850 if (other_obj_ntry & (1 << Other_Expl_Interface)) {
00851 msg_num = other_msg_num[new_obj][Other_Expl_Interface];
00852 goto ISSUE_ERR;
00853 }
00854 }
00855 else if (ATP_DCL_EXTERNAL(attr_idx)) {
00856
00857 if (attr_obj_ntry & (1 << Attr_External)) {
00858 msg_num = attr_msg_num[new_obj][Attr_External];
00859 msg_str = attr_str[Attr_External];
00860 goto ISSUE_ERR;
00861 }
00862 }
00863 else if ((AT_REFERENCED(attr_idx) >= Dcl_Bound_Ref ||
00864 AT_DEFINED(attr_idx)) &&
00865 (other_obj_ntry & (1 << Other_Use_Func))) {
00866 msg_num = other_msg_num[new_obj][Other_Use_Func];
00867 goto ISSUE_ERR;
00868 }
00869 break;
00870
00871 case Intrin_Proc:
00872
00873 if (name_obj_ntry & (1 << Name_Intrinsic_Func)) {
00874 msg_num = name_msg_num[new_obj][Name_Intrinsic_Func];
00875 msg_str = name_str[Name_Intrinsic_Func];
00876 goto ISSUE_ERR;
00877 }
00878 break;
00879
00880 case Module_Proc:
00881
00882 if (ATP_EXPL_ITRFC(attr_idx)) {
00883
00884 if (other_obj_ntry & (1 << Other_Expl_Interface)) {
00885 msg_num = other_msg_num[new_obj][Other_Expl_Interface];
00886 goto ISSUE_ERR;
00887 }
00888 }
00889 else if (name_obj_ntry & (1 << Name_Module_Proc)) {
00890 msg_num = name_msg_num[new_obj][Name_Module_Proc];
00891 msg_str = name_str[Name_Module_Proc];
00892 goto ISSUE_ERR;
00893 }
00894 break;
00895
00896 case Intern_Proc:
00897 if (name_obj_ntry & (1 << Name_Internal_Func)) {
00898 msg_num = name_msg_num[new_obj][Name_Internal_Func];
00899 msg_str = name_str[Name_Internal_Func];
00900 goto ISSUE_ERR;
00901 }
00902 break;
00903
00904 case Unknown_Proc:
00905
00906 if ((AT_REFERENCED(attr_idx) >= Dcl_Bound_Ref ||
00907 AT_DEFINED(attr_idx)) &&
00908 (other_obj_ntry & (1 << Other_Use_Func))) {
00909 msg_num = other_msg_num[new_obj][Other_Use_Func];
00910 goto ISSUE_ERR;
00911 }
00912 break;
00913 }
00914
00915 if (ATP_VFUNCTION(attr_idx) &&
00916 (dir_obj_ntry & (1 << Dir_Vfunction)) ) {
00917 msg_num = dir_msg_num[new_obj][Dir_Vfunction];
00918 msg_str = dir_str[Dir_Vfunction];
00919 goto ISSUE_ERR;
00920 }
00921 else if (ATP_NOSIDE_EFFECTS(attr_idx) &&
00922 (dir_obj_ntry & (1 << Dir_No_Side_Effects)) ) {
00923 msg_num = dir_msg_num[new_obj][Dir_No_Side_Effects];
00924 msg_str = dir_str[Dir_No_Side_Effects];
00925 goto ISSUE_ERR;
00926 }
00927 else if (ATP_NAME_IN_STONE(attr_idx) &&
00928 (dir_obj_ntry & (1 << Dir_Name)) ) {
00929 msg_num = dir_msg_num[new_obj][Dir_Name];
00930 msg_str = dir_str[Dir_Name];
00931 goto ISSUE_ERR;
00932 }
00933 else if (name_obj_ntry & (1 << Name_Function)) {
00934 msg_num = name_msg_num[new_obj][Name_Function];
00935 msg_str = name_str[Name_Function];
00936 goto ISSUE_ERR;
00937 }
00938 }
00939
00940 rslt_idx = ATP_RSLT_IDX(attr_idx);
00941 array_idx = ATD_ARRAY_IDX(rslt_idx);
00942
00943 if (array_idx != NULL_IDX) {
00944
00945 if (attr_obj_ntry & (1 << Attr_Dimension)) {
00946 msg_num = attr_msg_num[new_obj][Attr_Dimension];
00947 msg_str = attr_str[Attr_Dimension];
00948 goto ISSUE_ERR;
00949 }
00950
00951 switch (BD_ARRAY_CLASS(array_idx)) {
00952 case Explicit_Shape:
00953
00954 switch (BD_ARRAY_SIZE(array_idx)) {
00955 case Unknown_Size:
00956 case Constant_Size:
00957 case Symbolic_Constant_Size:
00958 if (attr_obj_ntry & (1 << Attr_Explicit_Shp_Arr)) {
00959 msg_num = attr_msg_num[new_obj][Attr_Explicit_Shp_Arr];
00960 msg_str = attr_str[Attr_Explicit_Shp_Arr];
00961 goto ISSUE_ERR;
00962 }
00963 break;
00964
00965 case Var_Len_Array:
00966 if (other_obj_ntry & (1 << Other_Var_Len_Arr)) {
00967 msg_num = other_msg_num[new_obj][Other_Var_Len_Arr];
00968 goto ISSUE_ERR;
00969 }
00970 break;
00971 }
00972 break;
00973
00974 case Deferred_Shape:
00975 if (attr_obj_ntry & (1 << Attr_Deferred_Shp_Arr)) {
00976 msg_num = attr_msg_num[new_obj][Attr_Deferred_Shp_Arr];
00977 msg_str = attr_str[Attr_Deferred_Shp_Arr];
00978 goto ISSUE_ERR;
00979 }
00980 break;
00981 }
00982 }
00983
00984 if (AT_TYPED(rslt_idx)) {
00985
00986 if (attr_obj_ntry & (1 << Attr_Type)) {
00987 msg_num = attr_msg_num[new_obj][Attr_Type];
00988 msg_str = get_basic_type_str(ATD_TYPE_IDX(rslt_idx));
00989
00990 if (new_obj == Obj_Typed) {
00991
00992
00993
00994
00995
00996 if (strcmp(msg_str, obj_str[new_obj]) == 0) {
00997 msg_num = 554;
00998 }
00999 }
01000 goto ISSUE_ERR;
01001 }
01002 else if (TYP_TYPE(ATD_TYPE_IDX(rslt_idx)) == Character) {
01003
01004 if (TYP_CHAR_CLASS(ATD_TYPE_IDX(rslt_idx)) == Assumed_Size_Char){
01005
01006 if (attr_obj_ntry & (1 << Attr_Assumed_Type_Ch)) {
01007 msg_num = attr_msg_num[new_obj][Attr_Assumed_Type_Ch];
01008 msg_str = attr_str[Attr_Assumed_Type_Ch];
01009 goto ISSUE_ERR;
01010 }
01011 }
01012 else if (TYP_CHAR_CLASS(ATD_TYPE_IDX(rslt_idx)) == Var_Len_Char){
01013
01014 if (other_obj_ntry & (1 << Other_Var_Len_Ch)) {
01015 msg_num = other_msg_num[new_obj][Other_Var_Len_Ch];
01016 goto ISSUE_ERR;
01017 }
01018 }
01019 }
01020 }
01021
01022 if (ATD_POINTER(rslt_idx) && (attr_obj_ntry & (1 << Attr_Pointer))){
01023 msg_num = attr_msg_num[new_obj][Attr_Pointer];
01024 msg_str = attr_str[Attr_Pointer];
01025 goto ISSUE_ERR;
01026 }
01027 else if (ATD_TARGET(rslt_idx) && (attr_obj_ntry & (1 << Attr_Target))){
01028 msg_num = attr_msg_num[new_obj][Attr_Target];
01029 msg_str = attr_str[Attr_Target];
01030 goto ISSUE_ERR;
01031 }
01032 break;
01033
01034
01035 case Pgm_Unknown:
01036
01037 switch (ATP_PROC(attr_idx)) {
01038 case Dummy_Proc:
01039 case Extern_Proc:
01040 if (ATP_DCL_EXTERNAL(attr_idx)) {
01041
01042 if (attr_obj_ntry & (1 << Attr_External)) {
01043 msg_num = attr_msg_num[new_obj][Attr_External];
01044 msg_str = attr_str[Attr_External];
01045 goto ISSUE_ERR;
01046 }
01047 }
01048 else if (AT_OPTIONAL(attr_idx) &&
01049 attr_obj_ntry & (1 << Attr_Optional)) {
01050 msg_num = attr_msg_num[new_obj][Attr_Optional];
01051 msg_str = attr_str[Attr_Optional];
01052 goto ISSUE_ERR;
01053 }
01054 else if (ATP_NAME_IN_STONE(attr_idx) &&
01055 (dir_obj_ntry & (1 << Dir_Name)) ) {
01056 msg_num = dir_msg_num[new_obj][Dir_Name];
01057 msg_str = dir_str[Dir_Name];
01058 goto ISSUE_ERR;
01059 }
01060 else if ((ATP_INLINE_ALWAYS(attr_idx) ||
01061 ATP_INLINE_NEVER(attr_idx))&&
01062 (dir_obj_ntry & (1 << Dir_Inline)) ) {
01063 msg_num = dir_msg_num[new_obj][Dir_Inline];
01064 msg_str = dir_str[Dir_Inline];
01065 goto ISSUE_ERR;
01066 }
01067 break;
01068
01069 case Intrin_Proc:
01070 break;
01071
01072 case Module_Proc:
01073
01074 if (name_obj_ntry & (1 << Name_Module_Proc)) {
01075 msg_num = name_msg_num[new_obj][Name_Module_Proc];
01076 msg_str = name_str[Name_Module_Proc];
01077 goto ISSUE_ERR;
01078 }
01079 break;
01080 # ifdef _DEBUG
01081 default:
01082 # if 0
01083 PRINTMSG(line, 257, Internal, column,
01084 ATP_PROC(attr_idx), "ATP_PROC");
01085 # endif
01086 break;
01087 # endif
01088 }
01089
01090 if (ATP_VFUNCTION(attr_idx) && (dir_obj_ntry & (1 << Dir_Vfunction))) {
01091 msg_num = dir_msg_num[new_obj][Dir_Vfunction];
01092 msg_str = dir_str[Dir_Vfunction];
01093 goto ISSUE_ERR;
01094 }
01095 else if (ATP_NOSIDE_EFFECTS(attr_idx) &&
01096 (dir_obj_ntry & (1 << Dir_No_Side_Effects)) ) {
01097 msg_num = dir_msg_num[new_obj][Dir_No_Side_Effects];
01098 msg_str = dir_str[Dir_No_Side_Effects];
01099 goto ISSUE_ERR;
01100 }
01101 else if ((ATP_INLINE_ALWAYS(attr_idx) ||
01102 ATP_INLINE_NEVER(attr_idx))&&
01103 (dir_obj_ntry & (1 << Dir_Inline)) ) {
01104 msg_num = dir_msg_num[new_obj][Dir_Inline];
01105 msg_str = dir_str[Dir_Inline];
01106 goto ISSUE_ERR;
01107 }
01108 break;
01109
01110 }
01111
01112 if (ATP_OPTIONAL_DIR(attr_idx) && (dir_obj_ntry & (1 << Dir_Optional)) ) {
01113 msg_num = dir_msg_num[new_obj][Dir_Optional];
01114 msg_str = dir_str[Dir_Optional];
01115 goto ISSUE_ERR;
01116 }
01117
01118 break;
01119
01120
01121 case Label:
01122
01123 # ifdef _DEBUG
01124 if (ATL_DEBUG_CLASS(attr_idx) != Ldbg_Construct_Name) {
01125 PRINTMSG(line, 257, Internal, column,
01126 ATL_CLASS(attr_idx), "ATL_CLASS");
01127 }
01128 # endif
01129
01130 if (name_obj_ntry & (1 << Name_Construct)) {
01131 msg_num = name_msg_num[new_obj][Name_Construct];
01132 msg_str = name_str[Name_Construct];
01133 goto ISSUE_ERR;
01134 }
01135 break;
01136
01137 case Derived_Type:
01138
01139 if (name_obj_ntry & (1 << Name_Derived_Type)) {
01140 msg_num = name_msg_num[new_obj][Name_Derived_Type];
01141 msg_str = name_str[Name_Derived_Type];
01142 goto ISSUE_ERR;
01143 }
01144 break;
01145
01146 case Interface:
01147
01148 if (AT_IS_INTRIN(attr_idx) && !ATI_USER_SPECIFIED(attr_idx)) {
01149
01150 if (ATI_DCL_INTRINSIC(attr_idx) &&
01151 (attr_obj_ntry & (1 << Attr_Intrinsic))) {
01152 msg_num = attr_msg_num[new_obj][Attr_Intrinsic];
01153 msg_str = attr_str[Attr_Intrinsic];
01154 goto ISSUE_ERR;
01155 }
01156
01157 if (ATI_INTERFACE_CLASS(attr_idx) == Generic_Subroutine_Interface) {
01158
01159 if (name_obj_ntry & (1 << Name_Intrinsic_Subr)) {
01160 msg_num = name_msg_num[new_obj][Name_Intrinsic_Subr];
01161 msg_str = name_str[Name_Intrinsic_Subr];
01162 goto ISSUE_ERR;
01163 }
01164 }
01165 else if (name_obj_ntry & (1 << Name_Intrinsic_Func)) {
01166 msg_num = name_msg_num[new_obj][Name_Intrinsic_Func];
01167 msg_str = name_str[Name_Intrinsic_Func];
01168 goto ISSUE_ERR;
01169 }
01170 }
01171 else {
01172
01173 if (name_obj_ntry & (1 << Name_Generic_Interface)) {
01174 msg_num = name_msg_num[new_obj][Name_Generic_Interface];
01175 msg_str = name_str[Name_Generic_Interface];
01176 goto ISSUE_ERR;
01177 }
01178 }
01179
01180 if (AT_TYPED(attr_idx) && (attr_obj_ntry & (1 << Attr_Type))) {
01181 msg_num = attr_msg_num[new_obj][Attr_Type];
01182 msg_str = get_basic_type_str(ATD_TYPE_IDX(attr_idx));
01183
01184 if (new_obj == Obj_Typed) {
01185
01186
01187
01188
01189
01190 if (strcmp(msg_str, obj_str[new_obj]) == 0) {
01191 msg_num = 554;
01192 }
01193 }
01194 goto ISSUE_ERR;
01195 }
01196
01197 break;
01198
01199 case Namelist_Grp:
01200
01201 if (name_obj_ntry & (1 << Name_Namelist_Group)) {
01202 msg_num = name_msg_num[new_obj][Name_Namelist_Group];
01203 msg_str = name_str[Name_Namelist_Group];
01204 goto ISSUE_ERR;
01205 }
01206 break;
01207
01208 case Stmt_Func:
01209
01210 if (name_obj_ntry & (1 << Name_Statement_Func)) {
01211 msg_num = name_msg_num[new_obj][Name_Statement_Func];
01212 msg_str = name_str[Name_Statement_Func];
01213 goto ISSUE_ERR;
01214 }
01215
01216 if (AT_TYPED(attr_idx) && (attr_obj_ntry & (1 << Attr_Type))) {
01217 msg_num = attr_msg_num[new_obj][Attr_Type];
01218 msg_str = get_basic_type_str(ATD_TYPE_IDX(attr_idx));
01219
01220 if (new_obj == Obj_Typed) {
01221
01222
01223
01224
01225
01226 if (strcmp(msg_str, obj_str[new_obj]) == 0) {
01227 msg_num = 554;
01228 }
01229 }
01230 goto ISSUE_ERR;
01231 }
01232
01233 break;
01234
01235 }
01236
01237 if ((attr_obj_ntry & (1 << Attr_Public)) ||
01238 (attr_obj_ntry & (1 << Attr_Private))) {
01239
01240 if (ATP_PGM_UNIT(SCP_ATTR_IDX(curr_scp_idx)) == Module &&
01241 AT_ACCESS_SET(attr_idx)) {
01242
01243 if (AT_PRIVATE(attr_idx)) {
01244 msg_num = attr_msg_num[new_obj][Attr_Private];
01245 msg_str = attr_str[Attr_Private];
01246 }
01247 else {
01248 msg_num = attr_msg_num[new_obj][Attr_Public];
01249 msg_str = attr_str[Attr_Public];
01250 }
01251 }
01252 }
01253
01254 ISSUE_ERR:
01255
01256 if (msg_num != 0) {
01257
01258 if (issue_msg) {
01259
01260 if (msg_str == NULL) {
01261 PRINTMSG(line, msg_num, Error, column,
01262 AT_OBJ_NAME_PTR(attr_idx),
01263 obj_str[new_obj]);
01264 }
01265 else if (new_obj > Obj_Name_Done) {
01266 PRINTMSG(line, msg_num, Error, column,
01267 AT_OBJ_NAME_PTR(attr_idx),
01268 msg_str);
01269 }
01270 else {
01271 PRINTMSG(line, msg_num, Error, column,
01272 AT_OBJ_NAME_PTR(attr_idx),
01273 msg_str,
01274 obj_str[new_obj]);
01275 }
01276 }
01277
01278 if (set_dcl_err) {
01279
01280 switch (new_obj) {
01281
01282 case Obj_Use_Extern_Func:
01283 case Obj_Use_Extern_Subr:
01284 case Obj_Use_In_Expr:
01285 case Obj_Use_Spec_Expr:
01286 case Obj_Use_Init_Expr:
01287 break;
01288
01289 default:
01290 AT_DCL_ERR(attr_idx) = TRUE;
01291 break;
01292
01293 }
01294 }
01295 }
01296
01297 TRACE (Func_Exit, "fnd_semantic_err", NULL);
01298
01299 return(msg_num);
01300
01301 }
01302 # ifdef _DEBUG
01303
01304
01305
01306
01307
01308
01309
01310
01311
01312
01313
01314
01315
01316
01317
01318
01319
01320
01321
01322
01323
01324
01325 void verify_semantic_tbls()
01326 {
01327
01328 long attr_entry;
01329 long dir_entry;
01330 boolean found_err = FALSE;
01331 long idx;
01332 long j;
01333 long name_entry;
01334 long other_entry;
01335
01336
01337 TRACE (Func_Entry, "verify_semantic_tbls", NULL);
01338
01339 for (idx = 0; idx < Obj_Done; idx++) {
01340 attr_entry = obj_to_attr[idx];
01341 dir_entry = obj_to_dir[idx];
01342 name_entry = obj_to_name[idx];
01343 other_entry = obj_to_other[idx];
01344
01345 for (j = 0; j < Attr_Done; j++) {
01346
01347 if ((1 & attr_entry) != 0) {
01348
01349 if (attr_msg_num[idx][j] == 0) {
01350 PRINTMSG(1, 225, Error, 0, obj_type_str[idx],
01351 attr_obj_type_str[j], "obj_to_attr");
01352 found_err = TRUE;
01353 }
01354 }
01355 else if (attr_msg_num[idx][j] != 0) {
01356 PRINTMSG(1, 227, Error, 0, obj_type_str[idx],
01357 attr_obj_type_str[j], "attr_msg_num",
01358 attr_msg_num[idx][j]);
01359 found_err = TRUE;
01360 }
01361 attr_entry = attr_entry >> 1;
01362 }
01363
01364 for (j = 0; j < Dir_Done; j++) {
01365
01366 if ((1 & dir_entry) != 0) {
01367
01368 if (dir_msg_num[idx][j] == 0) {
01369 PRINTMSG(1, 225, Error, 0, obj_type_str[idx],
01370 dir_obj_type_str[j], "obj_to_dir");
01371 found_err = TRUE;
01372 }
01373 }
01374 else if (dir_msg_num[idx][j] != 0) {
01375 PRINTMSG(1, 227, Error, 0, obj_type_str[idx],
01376 dir_obj_type_str[j], "dir_msg_num",
01377 dir_msg_num[idx][j]);
01378 found_err = TRUE;
01379 }
01380 dir_entry = dir_entry >> 1;
01381 }
01382
01383 for (j = 0; j < Name_Done; j++) {
01384
01385 if ((1 & name_entry) != 0) {
01386
01387 if (name_msg_num[idx][j] == 0) {
01388 PRINTMSG(1, 225, Error, 0, obj_type_str[idx],
01389 name_obj_type_str[j], "obj_to_name");
01390 found_err = TRUE;
01391 }
01392 }
01393 else if (name_msg_num[idx][j] != 0) {
01394 PRINTMSG(1, 227, Error, 0, obj_type_str[idx],
01395 name_obj_type_str[j], "name_msg_num",
01396 name_msg_num[idx][j]);
01397 found_err = TRUE;
01398 }
01399 name_entry = name_entry >> 1;
01400 }
01401
01402 for (j = 0; j < Other_Done; j++) {
01403
01404 if ((1 & other_entry) != 0) {
01405
01406 if (other_msg_num[idx][j] == 0) {
01407 PRINTMSG(1, 225, Error, 0, obj_type_str[idx],
01408 other_obj_type_str[j], "obj_to_other");
01409 found_err = TRUE;
01410 }
01411 }
01412 else if (other_msg_num[idx][j] != 0) {
01413 PRINTMSG(1, 227, Error, 0, obj_type_str[idx],
01414 other_obj_type_str[j], "other_msg_num",
01415 other_msg_num[idx][j]);
01416 found_err = TRUE;
01417 }
01418 other_entry = other_entry >> 1;
01419 }
01420 }
01421
01422 if (found_err) {
01423 PRINTMSG(1, 226, Internal, 0);
01424 }
01425
01426 TRACE (Func_Exit, "verify_semantic_tbls", NULL);
01427
01428 return;
01429
01430 }
01431 # endif