<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
I'm working on this..<br>Attached is what I have so far.<br>Posix needs work.<br>Most code continues to not work for files >4GB on 32bit, but it is a start.<br>It seems to me I shouldn't have o use VAL(i, LONGINT) to convert an INTEGER to a LONGINT, as all INTEGER values fit.<br>Similarly I should be able to compare a LONGINT to 0 directly, instead of 0L.<br>I'm not sure if the ToProc/FromProc stuff should use INTEGER/CARDINAL or LONGINT.<br><br>This gets as far as:<br><br>== package C:\dev2\cm3.2\m3-obliq\obliqrt ==<br><br> +++ C:\cm3\bin\cm3.exe  -build -DROOT=C:/dev2/cm3.2 -DCM3_VERSION_TEXT=d5.8.2 -<br>DCM3_VERSION_NUMBER=050802 -DCM3_LAST_CHANGED=2009-07-15 +++<br>--- building in NT386 ---<br><br>ignoring ..\src\m3overrides<br><br>\cm3\bin\stubgen -v1 -sno ObValue.RemVar   -T.M3IMPTAB<br>m3cfe: (Error) failed to find source or AST for interface 'WordRep'<br>"\cm3\pkg\m3core\src/word\GenWord.ig[\cm3\pkg\m3core\src/word\Word.i3]": semanti<br>c analysis suppressed due to import errors<br>"\cm3\pkg\m3core\src/text\Text.i3", line 16,0: semantic analysis suppressed due<br>to import errors<br>m3cfe: (Error) failed to find source or AST for interface 'LongRep'<br>"\cm3\pkg\m3core\src/word\GenWord.ig[\cm3\pkg\m3core\src/word\Long.i3]": semanti<br>c analysis suppressed due to import errors<br>"\cm3\pkg\m3core\src/float/IEEE\Real.i3", line 11,0: semantic analysis suppresse<br>d due to import errors<br>"\cm3\pkg\m3core\src/float/IEEE\LongReal.i3", line 10,0: semantic analysis suppr<br><br><br>Which is probably some other problem?<br><br><br> - Jay<br><br><br><hr id="stopSpelling">From: jay.krell@cornell.edu<br>To: m3devel@elegosoft.com<br>Date: Thu, 7 Jan 2010 09:47:07 +0000<br>Subject: Re: [M3devel] what to do about file sizes being 32bits?<br><br>



<style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Verdana;}
</style>


I think I can fix everything in the cm3 tree if size is changed to LONGINT.<br>Including Index(), Length(), Seek().<br>It involves *many* uses of VAL and ORD, and indeed, it would help if:<br><br><br>INC(longint, integer) was legal, which seems perfectly ok.<br>longint := integer ditto<br><br><br>Most of the toplevel users will end up throwing in ORD, as they<br>require files to fit in memory/addressspace.<br><br><br>There is still the matter of this will break too much code out there.<br><br><br> - Jay<br><br><hr id="ecxstopSpelling">From: jay.krell@cornell.edu<br>To: m3devel@elegosoft.com<br>Date: Thu, 7 Jan 2010 06:59:31 +0000<br>Subject: [M3devel] what to do about file sizes being 32bits?<br><br>



<style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Verdana;}
</style>


File.i3:<br><br><br>  Status = RECORD<br>    type: Type;<br>    modificationTime: Time.T;<br>    size: CARDINAL (* oops... *)<br>  END;<br><br><br>What to do?<br>[0.. higher than 7FFFFFFF] doesn't "just work".<br>   higher than 7FFFFFFFF is not legal on 32bit, unless you put "L" on the end,<br>   which presumably has some relationship to turning it into a LONGINT, which<br>   causes users to fail to compile<br><br><br>LONGINT doesn't "just work"<br>   causes users to fail to compile<br>
<br><br>stale imports -> compiling ProcessPosixCommon.i3<br>stale imports -> compiling ProcessPosixCommon.m3<br>stale imports -> compiling ProcessPosix.m3<br>stale imports -> compiling FileRd.i3<br>missing version stamps -> compiling FileRd.m3<br>"../src/rw/FileRd.m3", line 73: incompatible argument types: MIN<br>"../src/rw/FileRd.m3", line 140: types are not assignable<br>2 errors encountered<br>stale imports -> compiling FileWr.i3<br>missing version stamps -> compiling FileWr.m3<br>"../src/rw/FileWr.m3", line 92: incompatible argument types: MIN<br>"../src/rw/FileWr.m3", line 108: incompatible argument types: MAX<br>2 errors encountered<br>st<br><br><br>Change it to LONGINT, fix all the callers, and hope the damage isn't too great outside the cm3 tree?<br><br><br>Change it to LONGINT only for 32bit platforms, somehow author the cm3 tree to work either way,<br>hope the damage isn't too great outside the cm3 tree?<br><br><br>Change it to LONGREAL so that it works immediately on NT386.<br>  Same issues as above, breaks existing users.<br><br><br>Maybe relax the language some, so that e.g.<br>a:INTEGER;<br>b:LONGINT;<br><br>b := a;<br><br>just works, see if it helps make more code compile with the change?<br><br>a := b is problematic of course, but what is wrong with b := a?<br><br> - Jay<br><br>                                          </body>
</html>