Microsoft KB Archive/62476

= SETFILLMASK Graphics Routine and Integer Range Error F2367 =

Article ID: 62476

Article Last Modified on 12/1/2003

-

APPLIES TO


 * Microsoft FORTRAN Compiler 4.1
 * Microsoft FORTRAN Compiler 5.0
 * Microsoft FORTRAN Compiler 5.1
 * Microsoft FORTRAN PowerStation 1.0 Standard Edition
 * Microsoft Fortran PowerStation 1.0a for MS-DOS
 * Microsoft FORTRAN PowerStation 32
 * Microsoft FORTRAN Compiler 4.1
 * Microsoft FORTRAN Compiler 5.0
 * Microsoft FORTRAN Compiler 5.1

-



This article was previously published under Q62476



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 &quot;F2367 Integer range error&quot; 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 query words: 1.00 5.00 5.10 sine fill kbinf

Keywords: KB62476

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.