home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / lang / modula2 / 1596 < prev    next >
Encoding:
Internet Message Format  |  1992-12-21  |  2.2 KB

  1. Path: sparky!uunet!psgrain!puddle!p25.f2000.n106.z1.fidonet.org!Jon.Guthrie
  2. From: Jon.Guthrie@p25.f2000.n106.z1.fidonet.org (Jon Guthrie)
  3. Sender: ufgate@puddle.fidonet.org (newsout1.26)
  4. Newsgroups: comp.lang.modula2
  5. Subject: Re: DOS compilers
  6. Message-ID: <31498.2B33FD36@puddle.fidonet.org>
  7. Date: Wed, 16 Dec 92 18:29:00 PDT
  8. Organization: FidoNet node 1:106/2000.25 - COMM Port One, Sugar Land TX
  9. Lines: 58
  10.  
  11. Andries Dippenaar (1:105/42) writes to All:
  12.  
  13. : >>>I need a DOS Modula-2 compiler that will pack subranges, for 
  14. : >>>example, [0..255] would be stored in 1 BYTE.  The compiler 
  15. : >>>that I ues store it as an INTEGER.
  16.  
  17.  >Most DOS compilers should -- for one I know that the TopSpeed
  18.  >compilers pack all data types into the smallest possible memory.  
  19.  >You may select to override it here and there if you wish.  I 
  20.  >haven't got any experience with the Stony Brook compiler, but 
  21.  >would expect nothing less of it. 
  22.  
  23. As it happens, I left my the relevant Stony Brook manual at work.  However, thanks to the wonders of OS/2, I can whip up a sample program right away.  
  24.  
  25. This program:
  26.  
  27.  
  28. MODULE PackTest;
  29.  
  30. FROM InOut      IMPORT WriteCard, WriteString, WriteLn;
  31. FROM SYSTEM     IMPORT BYTE;
  32.  
  33. TYPE
  34.     SubRange                = [0..255];
  35.     SubRangeArray           = ARRAY SubRange OF SubRange;
  36.  
  37. VAR
  38.     Size                                : CARDINAL;
  39.  
  40. BEGIN
  41.     Size := SIZE(SubRange);
  42.     WriteString('The Size of the subrange [0..255] is ');
  43.     WriteCard(Size, 2);
  44.     WriteLn;
  45.  
  46.     Size := SIZE(SubRangeArray);
  47.     WriteString('The size of an array [0..255] of that subrange is ');
  48.     WriteCard(Size, 2);
  49.     WriteLn;
  50.  
  51.     Size := SIZE(BYTE);
  52.     WriteString('The Size of a byte is ');
  53.     WriteCard(Size, 2);
  54.     WriteLn
  55. END PackTest.
  56.  
  57. When Compiled to an executable by SBM2 for OS/2 produces this output:
  58.  
  59. The Size of the subrange [0..255] is  2
  60. The size of an array [0..255] of that subrange is 512
  61. The Size of a byte is  1
  62.  
  63. I believe that I have selected all of the options properly.  So, it appears that SBM2 does NOT pack small subranges into bytes even if there are arrays of those subrange values.
  64.  
  65.  
  66. --  
  67. uucp: uunet!m2xenix!puddle!106!2000.25!Jon.Guthrie
  68. Internet: Jon.Guthrie@p25.f2000.n106.z1.fidonet.org
  69.