<html>
<head>
<style>
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
FONT-SIZE: 10pt;
FONT-FAMILY:Tahoma
}
</style>
</head>
<body class='hmmessage'>Is it possible to have this pattern in Modula-3:<BR>
 <BR>
PROCEDURE Parse (nm: TEXT;  host: BOOLEAN): T =<BR>  VAR len := Text.Length (nm);   buf: ARRAY [0..255] OF CHAR;<BR>  BEGIN<BR>    IF (len <= NUMBER (buf))<BR>      THEN RETURN DoParse (nm, SUBARRAY (buf, 0, len), host);<BR>      ELSE RETURN DoParse (nm, NEW (REF ARRAY OF CHAR, len)^, host);<BR>    END;<BR>  END Parse;<BR>
 <BR>
PROCEDURE DoParse (nm_txt: TEXT;  VAR nm: ARRAY OF CHAR;  host: BOOLEAN): T =<BR>
 <BR>
without the extra function?<BR>
 <BR>
There are places in M3Path.m3 that duplicate code otherwise, one branch acting on a local stack allocated array, the other acting on a heap allocated array when the stack array is too small, but otherwise identical code.<BR>
 <BR>
So far I have not figured out how. Local variables cannot be open array. SUBARRAY returns an ARRAY and not a REF ARRAY... It seems that parameters can be open arrays but local variables cannot, and that seems wrong.. parameters and locals so often share characteristics...<BR>
 <BR>
 - Jay<BR><BR><BR><BR><br /><hr />Need to know the score, the latest news, or you need your HotmailŪ-get your "fix". <a href='http://www.msnmobilefix.com/Default.aspx' target='_new'>Check it out.</a></body>
</html>