CodeView Won't Release Memory if Basic 7.1 ISAM is in Library (83237)



The information in this article applies to:

  • Microsoft Basic Professional Development System for MS-DOS 7.1

This article was previously published under Q83237

SUMMARY

If you use CodeView (CV.EXE) to trace code that uses ISAM and the ISAM buffers are in expanded memory, you may lose the expanded memory allocated for the ISAM buffers if you exit CodeView before the Basic program terminates normally. The only way to retrieve the lost expanded memory is to reboot your machine (or just close the MS-DOS session if you are running under Windows). This problem will not occur if you are using the PROISAM.EXE or PROISAMD.EXE TSR program, because the lost expanded memory will be released when you issue the command to remove the TSR program from memory (for example: PROISAMD /D).

This information applies to Microsoft Basic Professional Development System (PDS) version 7.1 for MS-DOS.

MORE INFORMATION

NOTE: The term "expanded memory" in this article refers to the Lotus-Intel-Microsoft (LIM) version 4.0 Expanded Memory Specification (EMS).

Steps to Reproduce Problem

NOTE: Be sure that you have expanded memory configured to run this test.

  1. Compile the Booklook example (normally in the \BC7\SRC directory) as follows:
          BC /Zi/FS/X/O BOOKLOOK;
          BC /Zi/FS/X/O BOOKMOD1;
          BC /Zi/FS/X/O BOOKMOD2;
          BC /Zi/FS/X/O BOOKMOD3;
  2. When you link the Booklook example, be sure to include PROISAM or PROISAMD in the library form, for example:
       LINK /Co BOOKLOOK BOOKMOD1 BOOKMOD2 BOOKMOD3 PROISAMD.OBJ PROISAMD.LIB;
  3. Type MEM (if you are using MS-DOS 5.0) and determine available expanded memory.
  4. Type CV /e BOOKLOOK and press ENTER.
  5. Press F8 to step through the beginning of the program. (You must execute at least one ISAM OPEN statement for buffers to be allocated). Exit CodeView without letting Booklook complete its execution by typing ALT+F, X.
  6. Issue the MEM command from MS-DOS. You will see that a portion of expanded memory is no longer available to you. The only way to get this memory back is to restart or, if you are running Windows, close the MS-DOS session and start a new MS-DOS session.

Modification Type:MinorLast Reviewed:8/16/2005
Keywords:KB83237 kbAudDeveloper