TROUBLESHOOTING This file contains information about troubleshooting programs that incorporate MAXLIB For PB. TROUBLE #1: When you compile your program, PB highlights a line containing a call to a routine in MAXLIB For PB and gives the message: Error 426: Variable expected. TO SOLVE IT: You have probably tried to use an equation in a parameter that was declared AS ANY in the DECLARE statement for the routine. like this: DECLARE SUB PutStX (Handle%, FromStrng AS ANY) . . PutStX Handle%, RTRIM$(Variable$) '<-- illegal parameter RTRIM$(Variable$) is an equation, not a variable. When a parameter is declared AS ANY, it must be a variable. It cannot be an equation (X%+Y%), a constant (%TRUE) or a literal value (2.333!). To avoid an error, simply assign the value of the equation to a variable prior to making the call and then send that variable as the parameter, instead of the equation: Variable$ = RTRIM$(Variable$) PutStX Handle%, Variable$ The same holds true for constants and literal values. You must assign them to a variable and then pass the variable. TROUBLE #2: You have opened a very large number of files and when you try to close a file, you get an error number 4: no more handles available. TO SOLVE IT: It may seem strange at first, but MAXFiles must open a disk file in order to close an EMS file. If there are no unused DOS file handles when you try to close an EMS file (or clip it, or flush it) you will trigger an error. You must always leave at least one file handle unused by your program. There are no exceptions to this rule. TROUBLE #3: You have EMS memory but MAXLIB For PB won't use it. TO SOLVE IT: Make sure you have called InitMAXFiles or InitMAXArray, as needed. Make sure you have used PBINST to change the default EMS usage in PB.EXE to something other than "ALL". Depending on your EMM driver, you may also need to set XMS usage to something other than "ALL". For instance, this is true for EMM386.SYS. If you have been single-stepping through your code to debug it and have been aborting your program before it runs to completion, MAXLIB won't have a chance to automatically deallocate the EMS memory it has allocated. Eventually, you will run out of EMS memory. To regain this memory you must reboot, so that the EMM driver will be reinitialized. If you have an EMM driver numbered prior to version 4.0, MAXFiles won't be able to use your EMS memory. Check your version number. Lastly, if you have tampered with the copyright notice in MAXLIB.PBL or in your program's EXE file, MAXLIB will fail to recognize any EMS resources on your computer.