Microsoft KB Archive/34813

= &quot;Type Not Defined&quot; after Saving Program in QB.EXE; Use AS ANY =

Article ID: 34813

Article Last Modified on 11/21/2006

-

APPLIES TO


 * Microsoft QuickBasic 4.0
 * Microsoft QuickBASIC 4.0b
 * Microsoft QuickBasic 4.5 for MS-DOS
 * Microsoft BASIC Compiler 6.0
 * Microsoft BASIC Compiler 6.0b
 * Microsoft BASIC Professional Development System 7.0

-



This article was previously published under Q34813



SUMMARY
A user-defined variable type is defined with a TYPE...END TYPE statement. You must place a TYPE...END TYPE statement at the top of each separate module that uses that type.

Note that a &quot;Type Not Defined&quot; error occurs if a DECLARE statement mentions a user-defined type (y AS usertype) above the TYPE...END TYPE definition. This condition can occur after a Save in QB.EXE automatically adds a DECLARE statement (for a separately-loaded module) at the top of the main module.

To eliminate the &quot;Type Not Defined&quot; error, move the DECLARE statement below the TYPE...END TYPE statement, or change the type in the DECLARE statement to &quot;ANY&quot;, as follows: DECLARE SUB temp (y AS ANY) This information applies to QuickBasic Versions 4.00 4.00b and 4.50, to Microsoft Basic Compiler Versions 6.00 and 6.00b for MS-DOS and MS OS/2, and to Microsoft Basic PDS Version 7.00 for MS-DOS and MS OS/2.



MORE INFORMATION
Note that if the SUBprogram is in the same module as the main program, AS ANY is automatically added in the DECLARE statement during a Save in QB.EXE, and the &quot;Type not defined&quot; error does not occur.

If the SUBprogram is in a different module (i.e., a separate source file) than the main program, a Save or Save All automatically adds a DECLARE statement in the main program, which can cause a &quot;Type not defined&quot; error, as shown in the following steps:   Run QB.EXE, enter the following program, and save it as TEST.BAS: ' This is the main module. TYPE config TROW AS INTEGER END TYPE DIM x AS config CALL temp(x)   Choose the Create File command from the File menu, enter the module name TEMP.BAS, and enter the following program: ' This is TEMP.BAS, a subprogram module in a separate disk file. TYPE config TROW AS INTEGER END TYPE SUB temp (y AS config) STATIC PRINT &quot;test&quot; END SUB  Choose Start from the Run menu to show that the program runs correctly.  Choose Save All from the File menu. During the Save, QB.EXE automatically adds a DECLARE statement in TEST.BAS as follows: DECLARE SUB temp (y AS config) ' This is the main module. TYPE config TROW    AS INTEGER END TYPE DIM x AS config CALL temp(x)  Now, when you choose Start from the Run menu, the above DECLARE statement will give a &quot;Type not defined&quot; error. The error occurs because the DECLARE statement uses the &quot;config&quot; type before it has been defined (immediately below). (The compiler passes just once from top to bottom through the source to define variables.)  To eliminate the &quot;Type not defined&quot; error, move the DECLARE statement below the TYPE...END TYPE statement, or change &quot;config&quot; in the DECLARE statement to &quot;ANY&quot;, as follows: DECLARE SUB temp (y AS ANY) </ol>

Additional query words: QuickBas BasicCom

Keywords: KB34813

-

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

© Microsoft Corporation. All rights reserved.