SETFILLMASK Graphics Routine and Integer Range Error F2367

Last reviewed: July 6, 1995
Article ID: Q62476
The information in this article applies to:
  • Microsoft FORTRAN for MS-DOS and OS/2 versions 4.1, 5.0, and 5.1
  • Microsoft FORTRAN PowerStation versions 1.0 and 1.0a
  • Microsoft FORTRAN PowerStation 32 version 1.0

SUMMARY

If you use the SETFILLMASK graphics routine in Microsoft FORTRAN, you shouldn't use the $DEBUG metacommand in the source code or compile using the /4Yb compiler switch. The array used by the routine is declared as INTEGER*1 and if you have any values greater than 127 in the array, it produces an "F2367 Integer range error" at compile time.

The SINE.FOR and FILL.FOR sample programs which are included on the Source Code Disk in the Samples subdirectory will produce the above error when either /4Yb or $DEBUG are used.

MORE INFORMATION

SETFILLMASK uses an 8 x 8 bit array for the fill-mask design. The array must be initialized as INTEGER*1, which has a range of -128 to 127. The values of the bit array must be able to range from 0 to 255 in decimal and 00000000 to 11111111 in binary to get every combination of fill patterns. This, however, can exceed the range of the INTEGER*1 array.

Without using the debug options, the program compiles and works correctly, but if you add one of the above debug options and have a value in the mask array that is larger that 127, you receive the following compiler error:

   name.for(23) : error F2367: value 129 : INTEGER : range error

The debug option performs range checking of variables. For example, if an INTEGER*1 variable exceeds 127 the compiler produces an error.

If you compile the following example with the /4Yb compiler switch, the following errors are produced:

   fill.for
   fill.for(23) : error F2367: value 129 : INTEGER : range error
   fill.for(23) : error F2367: value 145 : INTEGER : range error

The following is an example using the SETFILLMASK graphics routine:

C Won't compile with $DEBUG metacommand or with the /4Yb C compiler switch because of the two elements in the array C mask that are larger than 127.

      INCLUDE 'FGRAPH.FI'
      INCLUDE 'FGRAPH.FD'

      INTEGER*2 dummy_2    ! Variables for Function Return
      INTEGER*4 dummy_4    !    Values

      INTEGER*1 mask(8)    ! Integer*1 has range of -128 to 127
                           !    Largest mask value can be
                           !    11111111b or 255d

C               Binary      Decimal
C              --------     -------
      DATA mask / 2# 00000000 ,   !  0d
     +            2# 00111100 ,   !  60d
     +            2# 01000010 ,   !  66d
     +            2# 10000001 ,   !  129d ! Error with /4Yb
     +            2# 10010001 ,   !  145d ! Error with /$Yb
     +            2# 01001010 ,   !  74d
     +            2# 00111100 ,   !  60d
     +            2# 00000011  /  !  3d


      dummy_2 = setvideomode( $VRES16COLOR )  ! Set 16 Color VGA Mode
      dummy_4 = setbkcolor( $BLUE )     !BLUE ! Set Background Color

      CALL clearscreen( $GCLEARSCREEN )

      dummy_2 = setcolor( 15 )          !WHITE

      CALL setfillmask(mask)

      dummy_s = rectangle( $GBORDER, 100,100,500,300 ) ! Border

      dummy_2 = rectangle( $GFILLINTERIOR, 100,100,500,300 ) ! Fill
                                                             ! with
      PAUSE                                                  ! Mask

      dummy_2 = setvideomode( $DEFAULTMODE )  ! Reset Video Mode

      END


Additional reference words: 1.00 5.00 5.10 sine fill kbinf
KBCategory: kbprg kberrmsg
KBSubcategory: FORTLngIss


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: July 6, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.