{-------------------------------------------------------------}
{	 routines operating on independent strings	      }
{ Pascal/Z string type was avoided to maximize portability.   }
{-------------------------------------------------------------}

function upcase(c:nchar) : nchar;
   { force character to uppercase }
   begin
       if (c>=ord('a')) and (c<=ord('z')) then
	   upcase := c-32
       else
	   upcase := c
   end;

procedure stucase(var a,b:str);
   { duplicate a string, forcing uppercase }
   var j : strlength;
       c : nchar;
   begin
       j := 0;
       repeat
	   j := j+1;
	   c := a.val[j];
	   b.val[j] := upcase(c);
       until c=nullch;
       b.len := j-1
   end;
  repeat
	   j := j+1;
	   c := a.val[j];
	