head     56.3;
access   paws bayes jws quist brad dew jwh;
symbols  ;
locks    ; strict;
comment  @# @;


56.3
date     93.01.27.13.34.06;  author jwh;  state Exp;
branches ;
next     56.2;

56.2
date     93.01.27.12.10.29;  author jwh;  state Exp;
branches ;
next     56.1;

56.1
date     91.11.05.09.32.06;  author jwh;  state Exp;
branches ;
next     55.1;

55.1
date     91.08.25.10.10.11;  author jwh;  state Exp;
branches ;
next     54.1;

54.1
date     91.03.18.15.17.39;  author jwh;  state Exp;
branches ;
next     53.1;

53.1
date     91.03.11.19.18.11;  author jwh;  state Exp;
branches ;
next     52.1;

52.1
date     91.02.19.09.03.22;  author jwh;  state Exp;
branches ;
next     51.1;

51.1
date     91.01.30.16.02.33;  author jwh;  state Exp;
branches ;
next     50.1;

50.1
date     90.10.29.16.16.06;  author jwh;  state Exp;
branches ;
next     49.1;

49.1
date     90.08.14.14.04.27;  author jwh;  state Exp;
branches ;
next     48.1;

48.1
date     90.07.26.11.10.11;  author jwh;  state Exp;
branches ;
next     47.1;

47.1
date     90.05.14.10.48.23;  author dew;  state Exp;
branches ;
next     46.1;

46.1
date     90.05.07.08.36.14;  author jwh;  state Exp;
branches ;
next     45.1;

45.1
date     90.04.19.15.43.09;  author jwh;  state Exp;
branches ;
next     44.1;

44.1
date     90.04.01.22.01.07;  author jwh;  state Exp;
branches ;
next     43.1;

43.1
date     90.03.20.13.51.00;  author jwh;  state Exp;
branches ;
next     42.1;

42.1
date     90.01.23.17.36.30;  author jwh;  state Exp;
branches ;
next     41.1;

41.1
date     89.12.22.11.18.45;  author jwh;  state Exp;
branches ;
next     40.1;

40.1
date     89.09.29.11.41.32;  author jwh;  state Exp;
branches ;
next     39.1;

39.1
date     89.09.26.16.27.03;  author dew;  state Exp;
branches ;
next     38.1;

38.1
date     89.08.29.11.17.30;  author jwh;  state Exp;
branches ;
next     37.1;

37.1
date     89.05.12.11.30.58;  author dew;  state Exp;
branches ;
next     36.1;

36.1
date     89.02.06.10.09.55;  author dew;  state Exp;
branches ;
next     35.1;

35.1
date     89.02.02.13.21.32;  author dew;  state Exp;
branches ;
next     34.1;

34.1
date     89.01.23.15.56.49;  author jwh;  state Exp;
branches ;
next     33.1;

33.1
date     89.01.16.11.31.52;  author dew;  state Exp;
branches ;
next     32.1;

32.1
date     89.01.10.11.38.05;  author bayes;  state Exp;
branches ;
next     31.1;

31.1
date     88.12.14.17.59.01;  author bayes;  state Exp;
branches ;
next     30.1;

30.1
date     88.12.09.13.37.17;  author dew;  state Exp;
branches ;
next     29.1;

29.1
date     88.10.31.15.21.18;  author bayes;  state Exp;
branches ;
next     28.1;

28.1
date     88.10.06.10.50.37;  author dew;  state Exp;
branches ;
next     27.1;

27.1
date     88.09.29.11.16.45;  author bayes;  state Exp;
branches ;
next     26.1;

26.1
date     88.09.28.12.34.56;  author bayes;  state Exp;
branches ;
next     25.1;

25.1
date     88.03.02.09.11.26;  author bayes;  state Exp;
branches ;
next     24.1;

24.1
date     87.08.31.09.23.15;  author jws;  state Exp;
branches ;
next     23.1;

23.1
date     87.08.26.09.59.23;  author bayes;  state Exp;
branches ;
next     22.1;

22.1
date     87.08.17.10.40.34;  author bayes;  state Exp;
branches ;
next     21.1;

21.1
date     87.08.12.13.27.43;  author bayes;  state Exp;
branches ;
next     20.1;

20.1
date     87.07.30.10.38.18;  author bayes;  state Exp;
branches ;
next     19.1;

19.1
date     87.06.01.07.56.29;  author jws;  state Exp;
branches ;
next     18.1;

18.1
date     87.05.20.14.51.24;  author bayes;  state Exp;
branches ;
next     17.1;

17.1
date     87.04.30.10.08.31;  author jws;  state Exp;
branches ;
next     16.1;

16.1
date     87.04.26.15.22.43;  author jws;  state Exp;
branches ;
next     15.1;

15.1
date     87.04.13.08.49.41;  author jws;  state Exp;
branches ;
next     14.1;

14.1
date     87.04.01.14.47.45;  author jws;  state Exp;
branches ;
next     13.1;

13.1
date     87.02.28.18.10.36;  author jws;  state Exp;
branches ;
next     12.1;

12.1
date     87.02.02.12.58.12;  author jws;  state Exp;
branches ;
next     11.1;

11.1
date     87.01.19.09.24.07;  author jws;  state Exp;
branches ;
next     10.1;

10.1
date     86.12.24.10.30.34;  author jws;  state Exp;
branches ;
next     9.1;

9.1
date     86.12.12.13.54.30;  author bayes;  state Exp;
branches ;
next     8.1;

8.1
date     86.11.27.11.27.59;  author jws;  state Exp;
branches ;
next     7.1;

7.1
date     86.11.20.13.15.23;  author hal;  state Exp;
branches ;
next     6.1;

6.1
date     86.11.04.17.17.00;  author paws;  state Exp;
branches ;
next     5.1;

5.1
date     86.10.28.16.05.06;  author hal;  state Exp;
branches ;
next     4.1;

4.1
date     86.09.30.19.20.27;  author hal;  state Exp;
branches ;
next     3.1;

3.1
date     86.09.01.11.29.27;  author hal;  state Exp;
branches ;
next     2.1;

2.1
date     86.07.30.14.21.13;  author hal;  state Exp;
branches ;
next     1.1;

1.1
date     86.06.30.13.53.20;  author danm;  state tmp;
branches ;
next     ;


desc
@Base file for PWS 3.2 release.

@


56.3
log
@
pws2rcs automatic delta on Wed Jan 27 13:14:25 MST 1993
@
text
@			{file SYMTABLE}
implement

function treesearch(p: ctp; var q: ctp; s: alpha): integer;
  external;


PROCEDURE SEARCHSECTION (*FCP: CTP; VAR FCP1: CTP*);
  BEGIN
    IF FCP <> NIL THEN
      IF TREESEARCH(FCP,FCP1,ID) = 0 THEN  {found}
      ELSE FCP1 := NIL
    ELSE FCP1 := NIL
  END (*SEARCHSECTION*) ;

function searchschema (fstate: modstateptr; var fcp: ctp;
		       var fid: alpha) : boolean;
  {Search all defined IDs in module list for fid}
  {If found, return TRUE with gstate & fcp set}
  label 1;
  begin
  searchschema := true;
  while fstate <> nil do                {scan list}
    with fstate^ do
      begin
      if defineids <> nil then          {search defined IDs}
	if treesearch(defineids,fcp,fid) = 0 then
	  begin gstate := fstate; goto 1 end;
      fstate := nextmodule;             {not here, try next module}
      end;
  searchschema := false;                {report failure}
1:end; {searchschema}

function searchmodule (fstate: modstateptr; var fcp: ctp;
		       var fid: alpha) : boolean;
  {Search defined & imported names in specified module for fid}
  {If found, return TRUE with gstate & fcp set}
  label 1;
  begin
  searchmodule := true;
  if fstate <> nil then                 {First try items in inforec}
    with fstate^.modinfo^ do
      begin
      if useids <> nil then             {try USEd IDs}
	if treesearch(useids,fcp,fid) = 0 then
	  begin gstate := fstate; goto 1 end;
      if usemodule <> nil then          {try USEd modules}
	if searchschema(usemodule,fcp,fid) then goto 1;
      if impmodule <> nil then
	if searchschema(impmodule,fcp,fid) then goto 1;
      end;
  while fstate <> nil do                {scan instance chain for defined ID}
    with fstate^ do
      begin
      if defineids <> nil then          {try my defined IDs}
	if treesearch(defineids,fcp,fid) = 0 then
	  begin gstate := fstate; goto 1 end;
      fstate := contmodule;             {not here, try previous instance}
      end;
  searchmodule := false;                {report failure}
1:end; {searchmodule}

PROCEDURE SEARCHID (FIDCLS: SETOFIDS; VAR FCP: CTP);
  {Look up 'ID' in symbol table}
  LABEL 1; VAR LCP: CTP;
  BEGIN
  disx := top; gstate := nil;
  while disx >= 0 do
    begin
    with display[disx] do
      if occur <> RECORDscope then     {Never search a REC being constructed}
	begin
	if fname <> nil then            {Try primary symbol tree}
	  if treesearch(fname,lcp,id) = 0 then goto 1;
	if occur = BLOCKscope then      {Try subsidiary trees}
	  begin                         {Block: try defined IDs of modules}
	  if fmodule <> nil then
	    if searchschema(fmodule,lcp,id) then goto 1;
	  end
	else if occur = MODULEscope then
	  begin                         {Module: try defined & imported IDs}
	  if searchmodule(fmodule,lcp,id) then
	    goto 1;
	  disx := 1;                    {Else must be a predefined ID}
	  end
	end;
    disx := disx - 1;                   {Try next name scope}
    end;
  LCP := NIL;                           {ID not found anywhere}
  IF PRTERR THEN ERROR(104);

1:if lcp <> nil then                    {Check ID is of appropriate class}
    if not (lcp^.klass in fidcls) then
      begin lcp := nil; if prterr then error(103) end;

  IF PRTERR and (lcp = nil) THEN        {Substitute an 'undefined' ID node}
    BEGIN disx := 0; gstate := nil;
      IF VARS IN FIDCLS THEN LCP := UVARPTR
      ELSE IF TYPES IN FIDCLS THEN LCP := UTYPPTR
      ELSE IF KONST IN FIDCLS THEN LCP := UCSTPTR
      ELSE IF FIELD IN FIDCLS THEN LCP := UFLDPTR
      ELSE IF prox IN FIDCLS THEN LCP := UPRCPTR
      else lcp := ufctptr;
    END;

  FCP := LCP;
  if lcp <> NIL then
    if nonstandard in lcp^.info then
      if sysprogreq in lcp^.info then
	begin
	if not sysprog and not modcal then
	  if not (ucsdreq in lcp^.info) then
	    error(612)
	  else if not ucsd then error(612);
	end
      else if modcalreq in lcp^.info then
	begin
	if not modcal then
	  if not (ucsdreq in lcp^.info) then
	    error(612)
	  else if not ucsd then error(612);;
	end
      else if ucsdreq in lcp^.info then
	begin
	if not ucsd then error(607)
	end
      else if stdpasc then error(606);
  END (*SEARCHID*) ;

PROCEDURE ENTERID (FCP: CTP);
  {Enter a new node in the symbol table}
  label 1;
  VAR LCP,LCP1: CTP; I: INTEGER; quit: boolean;

  procedure entererror;
    begin
    errorwithinfo(101,fcp^.namep^ +
	   ' already defined in ' +
	   gstate^.modinfo^.modinitbody^.namep^)
    end;

  BEGIN
  if fcp^.namep^ = 'NIL' then
    if not beforefirsttoken then error(108);
  with display[top] do
    begin
    {First test for duplicate name in subsidiary trees}
    if occur = BLOCKscope then
      begin
      if fmodule <> nil then
	if searchschema(fmodule,lcp,fcp^.namep^) then
	  begin
	  entererror;
	  goto 1;
	  end;
      end
    else if occur = MODULEscope then
      if searchmodule(fmodule,lcp,fcp^.namep^) then
	begin
	entererror;
	goto 1;
	end;
    LCP := FNAME;
    IF LCP = NIL THEN FNAME := FCP
    ELSE
      BEGIN
      I := TREESEARCH(LCP,LCP1,FCP^.NAMEP^);
      if I = 0 then
	errorwithinfo(101,fcp^.namep^ + ' already defined')
      ELSE IF I = 1 THEN LCP1^.RLINK := FCP
      ELSE LCP1^.LLINK := FCP
      END;
    FCP^.LLINK := NIL; FCP^.RLINK := NIL
    end; {with}
1:  END (*ENTERID*) ;

procedure searchavailablemodules(var fcp: ctp);
  label 1;
  var
    lstate1,lstate2: modstateptr;

  function foundmodule: boolean;
    begin
    foundmodule := true;
    if fcp <> gstate^.modinfo^.modinitbody then
      if (fcp^.klass = prox) and
	 (fcp^.ismodulebody) then
	foundmodule := false;
    end;

  begin {searchavailablemodules}
  disx := top;
  gstate := nil;
  while disx >= 0 do
    begin
    with display[disx] do
      if (occur = BLOCKscope) then
	begin
	if searchschema(available_module,fcp,id) then
	  if foundmodule then goto 1;
	lstate2 := fmodule;
	while lstate2 <> nil do
	  begin
	  lstate1 := lstate2;
	  with lstate1^ do
	    begin
	    if searchschema(defmodule,fcp,id) then
	      if foundmodule then goto 1;
	    lstate1 := contmodule;
	    end;
	  lstate2 := lstate2^.nextmodule;
	  end;
	end
      else if (occur = MODULEscope) then
	begin
	if searchschema(available_module,fcp,id) then
	  if foundmodule then goto 1;
	lstate1 := fmodule;
	while lstate1 <> nil do
	  with lstate1^ do
	    begin
	    if searchschema(defmodule,fcp,id) then
	      if foundmodule then goto 1;
	    lstate1 := contmodule;
	    end;
	lstate1 := fmodule^.modinfo^.usemodule;
	while lstate1 <> nil do
	  begin
	  lstate2 := lstate1;
	  while lstate2 <> nil do
	    with lstate2^ do
	      begin
	      if searchschema(defmodule,fcp,id) then
		if foundmodule then goto 1;
	      lstate2 := contmodule;
	      end;
	  lstate1 := lstate1^.nextmodule;
	  end;
	lstate1 := fmodule^.modinfo^.impmodule;
	while lstate1 <> nil do
	  begin
	  lstate2 := lstate1;
	  while lstate2 <> nil do
	    with lstate2^ do
	      begin
	      if searchschema(defmodule,fcp,id) then
		if foundmodule then goto 1;
	      lstate2 := contmodule;
	      end;
	  lstate1 := lstate1^.nextmodule;
	  end;
	end;
    disx := disx - 1;
    end;
  fcp := nil;
1:end; { searchavailablemodules }

function checkdefineconflicts(fcp: ctp): boolean;
  var
    i: integer;
    errors: boolean;
    lcp,lcp1: ctp;

  procedure enterror;
    begin
    errorwithinfo(101,fcp^.namep^ +
	   ' already defined in ' +
	   gstate^.modinfo^.modinitbody^.namep^)
    end;

  begin { checkdefineconflicts }
  errors := false;
  if fcp <> nil then
    begin
    errors := checkdefineconflicts(fcp^.llink);
    if (fcp^.klass <> prox) or
       not fcp^.ismodulebody then
      with display[top] do
	begin
	case occur of
	  BLOCKscope:
	    if searchschema(fmodule,lcp,fcp^.namep^) then
	      begin
	      enterror;
	      errors := true;
	      end;
	  MODULEscope:
	    if searchmodule(fmodule,lcp,fcp^.namep^) then
	      begin
	      enterror;
	      errors := true;
	      end;
	end; { case }
	lcp := fname;
	if lcp <> nil then
	  begin
	  i := treesearch(lcp,lcp1,fcp^.namep^);
	  if (i = 0) then
	    begin
	    errorwithinfo(101,fcp^.namep^ + ' already defined');
	    errors := true;
	    end;
	  end;
	end;
    errors := errors or checkdefineconflicts(fcp^.rlink);
    end;
  checkdefineconflicts := errors;
  end; {checkdefineconflicts }



@


56.2
log
@
pws2rcs automatic delta on Wed Jan 27 11:57:27 MST 1993
@
text
@d1 311
@


56.1
log
@Automatic bump of revision number for PWS version 3.25
@
text
@a0 311
			{file SYMTABLE}
implement

function treesearch(p: ctp; var q: ctp; s: alpha): integer;
  external;


PROCEDURE SEARCHSECTION (*FCP: CTP; VAR FCP1: CTP*);
  BEGIN
    IF FCP <> NIL THEN
      IF TREESEARCH(FCP,FCP1,ID) = 0 THEN  {found}
      ELSE FCP1 := NIL
    ELSE FCP1 := NIL
  END (*SEARCHSECTION*) ;

function searchschema (fstate: modstateptr; var fcp: ctp;
		       var fid: alpha) : boolean;
  {Search all defined IDs in module list for fid}
  {If found, return TRUE with gstate & fcp set}
  label 1;
  begin
  searchschema := true;
  while fstate <> nil do                {scan list}
    with fstate^ do
      begin
      if defineids <> nil then          {search defined IDs}
	if treesearch(defineids,fcp,fid) = 0 then
	  begin gstate := fstate; goto 1 end;
      fstate := nextmodule;             {not here, try next module}
      end;
  searchschema := false;                {report failure}
1:end; {searchschema}

function searchmodule (fstate: modstateptr; var fcp: ctp;
		       var fid: alpha) : boolean;
  {Search defined & imported names in specified module for fid}
  {If found, return TRUE with gstate & fcp set}
  label 1;
  begin
  searchmodule := true;
  if fstate <> nil then                 {First try items in inforec}
    with fstate^.modinfo^ do
      begin
      if useids <> nil then             {try USEd IDs}
	if treesearch(useids,fcp,fid) = 0 then
	  begin gstate := fstate; goto 1 end;
      if usemodule <> nil then          {try USEd modules}
	if searchschema(usemodule,fcp,fid) then goto 1;
      if impmodule <> nil then
	if searchschema(impmodule,fcp,fid) then goto 1;
      end;
  while fstate <> nil do                {scan instance chain for defined ID}
    with fstate^ do
      begin
      if defineids <> nil then          {try my defined IDs}
	if treesearch(defineids,fcp,fid) = 0 then
	  begin gstate := fstate; goto 1 end;
      fstate := contmodule;             {not here, try previous instance}
      end;
  searchmodule := false;                {report failure}
1:end; {searchmodule}

PROCEDURE SEARCHID (FIDCLS: SETOFIDS; VAR FCP: CTP);
  {Look up 'ID' in symbol table}
  LABEL 1; VAR LCP: CTP;
  BEGIN
  disx := top; gstate := nil;
  while disx >= 0 do
    begin
    with display[disx] do
      if occur <> RECORDscope then     {Never search a REC being constructed}
	begin
	if fname <> nil then            {Try primary symbol tree}
	  if treesearch(fname,lcp,id) = 0 then goto 1;
	if occur = BLOCKscope then      {Try subsidiary trees}
	  begin                         {Block: try defined IDs of modules}
	  if fmodule <> nil then
	    if searchschema(fmodule,lcp,id) then goto 1;
	  end
	else if occur = MODULEscope then
	  begin                         {Module: try defined & imported IDs}
	  if searchmodule(fmodule,lcp,id) then
	    goto 1;
	  disx := 1;                    {Else must be a predefined ID}
	  end
	end;
    disx := disx - 1;                   {Try next name scope}
    end;
  LCP := NIL;                           {ID not found anywhere}
  IF PRTERR THEN ERROR(104);

1:if lcp <> nil then                    {Check ID is of appropriate class}
    if not (lcp^.klass in fidcls) then
      begin lcp := nil; if prterr then error(103) end;

  IF PRTERR and (lcp = nil) THEN        {Substitute an 'undefined' ID node}
    BEGIN disx := 0; gstate := nil;
      IF VARS IN FIDCLS THEN LCP := UVARPTR
      ELSE IF TYPES IN FIDCLS THEN LCP := UTYPPTR
      ELSE IF KONST IN FIDCLS THEN LCP := UCSTPTR
      ELSE IF FIELD IN FIDCLS THEN LCP := UFLDPTR
      ELSE IF prox IN FIDCLS THEN LCP := UPRCPTR
      else lcp := ufctptr;
    END;

  FCP := LCP;
  if lcp <> NIL then
    if nonstandard in lcp^.info then
      if sysprogreq in lcp^.info then
	begin
	if not sysprog and not modcal then
	  if not (ucsdreq in lcp^.info) then
	    error(612)
	  else if not ucsd then error(612);
	end
      else if modcalreq in lcp^.info then
	begin
	if not modcal then
	  if not (ucsdreq in lcp^.info) then
	    error(612)
	  else if not ucsd then error(612);;
	end
      else if ucsdreq in lcp^.info then
	begin
	if not ucsd then error(607)
	end
      else if stdpasc then error(606);
  END (*SEARCHID*) ;

PROCEDURE ENTERID (FCP: CTP);
  {Enter a new node in the symbol table}
  label 1;
  VAR LCP,LCP1: CTP; I: INTEGER; quit: boolean;

  procedure entererror;
    begin
    errorwithinfo(101,fcp^.namep^ +
	   ' already defined in ' +
	   gstate^.modinfo^.modinitbody^.namep^)
    end;

  BEGIN
  if fcp^.namep^ = 'NIL' then
    if not beforefirsttoken then error(108);
  with display[top] do
    begin
    {First test for duplicate name in subsidiary trees}
    if occur = BLOCKscope then
      begin
      if fmodule <> nil then
	if searchschema(fmodule,lcp,fcp^.namep^) then
	  begin
	  entererror;
	  goto 1;
	  end;
      end
    else if occur = MODULEscope then
      if searchmodule(fmodule,lcp,fcp^.namep^) then
	begin
	entererror;
	goto 1;
	end;
    LCP := FNAME;
    IF LCP = NIL THEN FNAME := FCP
    ELSE
      BEGIN
      I := TREESEARCH(LCP,LCP1,FCP^.NAMEP^);
      if I = 0 then
	errorwithinfo(101,fcp^.namep^ + ' already defined')
      ELSE IF I = 1 THEN LCP1^.RLINK := FCP
      ELSE LCP1^.LLINK := FCP
      END;
    FCP^.LLINK := NIL; FCP^.RLINK := NIL
    end; {with}
1:  END (*ENTERID*) ;

procedure searchavailablemodules(var fcp: ctp);
  label 1;
  var
    lstate1,lstate2: modstateptr;

  function foundmodule: boolean;
    begin
    foundmodule := true;
    if fcp <> gstate^.modinfo^.modinitbody then
      if (fcp^.klass = prox) and
	 (fcp^.ismodulebody) then
	foundmodule := false;
    end;

  begin {searchavailablemodules}
  disx := top;
  gstate := nil;
  while disx >= 0 do
    begin
    with display[disx] do
      if (occur = BLOCKscope) then
	begin
	if searchschema(available_module,fcp,id) then
	  if foundmodule then goto 1;
	lstate2 := fmodule;
	while lstate2 <> nil do
	  begin
	  lstate1 := lstate2;
	  with lstate1^ do
	    begin
	    if searchschema(defmodule,fcp,id) then
	      if foundmodule then goto 1;
	    lstate1 := contmodule;
	    end;
	  lstate2 := lstate2^.nextmodule;
	  end;
	end
      else if (occur = MODULEscope) then
	begin
	if searchschema(available_module,fcp,id) then
	  if foundmodule then goto 1;
	lstate1 := fmodule;
	while lstate1 <> nil do
	  with lstate1^ do
	    begin
	    if searchschema(defmodule,fcp,id) then
	      if foundmodule then goto 1;
	    lstate1 := contmodule;
	    end;
	lstate1 := fmodule^.modinfo^.usemodule;
	while lstate1 <> nil do
	  begin
	  lstate2 := lstate1;
	  while lstate2 <> nil do
	    with lstate2^ do
	      begin
	      if searchschema(defmodule,fcp,id) then
		if foundmodule then goto 1;
	      lstate2 := contmodule;
	      end;
	  lstate1 := lstate1^.nextmodule;
	  end;
	lstate1 := fmodule^.modinfo^.impmodule;
	while lstate1 <> nil do
	  begin
	  lstate2 := lstate1;
	  while lstate2 <> nil do
	    with lstate2^ do
	      begin
	      if searchschema(defmodule,fcp,id) then
		if foundmodule then goto 1;
	      lstate2 := contmodule;
	      end;
	  lstate1 := lstate1^.nextmodule;
	  end;
	end;
    disx := disx - 1;
    end;
  fcp := nil;
1:end; { searchavailablemodules }

function checkdefineconflicts(fcp: ctp): boolean;
  var
    i: integer;
    errors: boolean;
    lcp,lcp1: ctp;

  procedure enterror;
    begin
    errorwithinfo(101,fcp^.namep^ +
	   ' already defined in ' +
	   gstate^.modinfo^.modinitbody^.namep^)
    end;

  begin { checkdefineconflicts }
  errors := false;
  if fcp <> nil then
    begin
    errors := checkdefineconflicts(fcp^.llink);
    if (fcp^.klass <> prox) or
       not fcp^.ismodulebody then
      with display[top] do
	begin
	case occur of
	  BLOCKscope:
	    if searchschema(fmodule,lcp,fcp^.namep^) then
	      begin
	      enterror;
	      errors := true;
	      end;
	  MODULEscope:
	    if searchmodule(fmodule,lcp,fcp^.namep^) then
	      begin
	      enterror;
	      errors := true;
	      end;
	end; { case }
	lcp := fname;
	if lcp <> nil then
	  begin
	  i := treesearch(lcp,lcp1,fcp^.namep^);
	  if (i = 0) then
	    begin
	    errorwithinfo(101,fcp^.namep^ + ' already defined');
	    errors := true;
	    end;
	  end;
	end;
    errors := errors or checkdefineconflicts(fcp^.rlink);
    end;
  checkdefineconflicts := errors;
  end; {checkdefineconflicts }



@


55.1
log
@Automatic bump of revision number for PWS version 3.25A
@
text
@@


54.1
log
@Automatic bump of revision number for PWS version 3.24
@
text
@@


53.1
log
@Automatic bump of revision number for PWS version 3.24B
@
text
@@


52.1
log
@Automatic bump of revision number for PWS version 3.24A
@
text
@@


51.1
log
@Automatic bump of revision number for PWS version 3.24d
@
text
@@


50.1
log
@Automatic bump of revision number for PWS version 3.23c
@
text
@@


49.1
log
@Automatic bump of revision number for PWS version 3.24b
@
text
@@


48.1
log
@Automatic bump of revision number for PWS version 3.24a
@
text
@@


47.1
log
@Automatic bump of revision number for PWS version 3.23
@
text
@@


46.1
log
@Automatic bump of revision number for PWS version 3.23
@
text
@@


45.1
log
@Automatic bump of revision number for PWS version 3.23C
@
text
@@


44.1
log
@Automatic bump of revision number for PWS version 3.23B
@
text
@@


43.1
log
@Automatic bump of revision number for PWS version 3.23aA
@
text
@@


42.1
log
@Automatic bump of revision number for PWS version 3.23e
@
text
@@


41.1
log
@Automatic bump of revision number for PWS version 3.23d
@
text
@@


40.1
log
@Automatic bump of revision number for PWS version 3.23c
@
text
@@


39.1
log
@Automatic bump of revision number for PWS version 3.23b
@
text
@@


38.1
log
@Automatic bump of revision number for PWS version 3.23a
@
text
@@


37.1
log
@Automatic bump of revision number for PWS version 3.3a
@
text
@@


36.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@@


35.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@@


34.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@@


33.1
log
@Automatic bump of revision number for PWS version 3.22D
@
text
@@


32.1
log
@Automatic bump of revision number for PWS version 3.22C
@
text
@@


31.1
log
@Automatic bump of revision number for PWS version 3.22B
@
text
@@


30.1
log
@Automatic bump of revision number for PWS version 3.22A
@
text
@@


29.1
log
@Automatic bump of revision number for PWS version 3.22b
@
text
@@


28.1
log
@Automatic bump of revision number for PWS version 3.3b
@
text
@@


27.1
log
@Automatic bump of revision number for PWS version 3.3a
@
text
@@


26.1
log
@Automatic bump of revision number for PWS version 3.3 Synch
@
text
@@


25.1
log
@Automatic bump of revision number for PWS version 3.2Y
@
text
@@


24.1
log
@Automatic bump of revision number for PWS version 3.2
@
text
@@


23.1
log
@Automatic bump of revision number for PWS version 3.2P
@
text
@@


22.1
log
@Automatic bump of revision number for PWS version 3.2N
@
text
@@


21.1
log
@Automatic bump of revision number for PWS version 3.2M
@
text
@@


20.1
log
@Automatic bump of revision number for PWS version 3.2L
@
text
@@


19.1
log
@Automatic bump of revision number for PWS version 3.2K
@
text
@@


18.1
log
@Automatic bump of revision number for PWS version 3.2J
@
text
@@


17.1
log
@Automatic bump of revision number for PWS version 3.2I+
@
text
@@


16.1
log
@Automatic bump of revision number for PWS version 3.2I
@
text
@@


15.1
log
@Automatic bump of revision number for PWS version 3.2H
@
text
@@


14.1
log
@Automatic bump of revision number for PWS version 3.2G
@
text
@@


13.1
log
@Automatic bump of revision number for PWS version 3.2F
@
text
@@


12.1
log
@Automatic bump of revision number for PWS version 3.2E
@
text
@@


11.1
log
@Automatic bump of revision number for PWS version 3.2D
@
text
@@


10.1
log
@Automatic bump of revision number for PWS version 3.2C
@
text
@@


9.1
log
@Automatic bump of revision number for PWS version 3.2B
@
text
@@


8.1
log
@Automatic bump of revision number for PWS version 3.2A
@
text
@@


7.1
log
@Automatic bump of revision number for PWS version 3.2l
@
text
@@


6.1
log
@Automatic bump of revision number for PWS version 3.2k
@
text
@@


5.1
log
@Automatic bump of revision number for PWS version 3.2j
@
text
@@


4.1
log
@Automatic bump of revision number for PWS version 3.2i
@
text
@@


3.1
log
@Automatic bump of revision number for PWS version 3.2h
@
text
@@


2.1
log
@Auto bump rev number to 2.1 for sys 3.2e.
@
text
@@


1.1
log
@Initial revision
@
text
@@
