| 
 Remarks  | 
 GLOBALMEM allocates a block of global system memory 
 of the requested size.  This 
 is always allocated as "moveable" memory, so it can be used 
 with any facilities of Windows.  It 
 is the programmer's responsibility  to 
 release the allocated memory block when it's no longer needed. 
There are five general forms of the GLOBALMEM statement: 
| 
 GLOBALMEM ALLOC  | 
 A moveable memory block 
 of the size specified by count is allocated.  A 
 unique handle is assigned to this memory object (for later identification). 
 This handle is assigned to the LONG 
 or DWORD variable specified by vHndl.  If 
 the requested allocation fails for any reason, the value zero (0) is assigned 
 to vHndl instead.  |  
| 
 GLOBALMEM FREE  | 
 A memory block is de-allocated 
 and released for re-use.  The 
 mHndl parameter is a variable 
 or expression which evaluates to the handle returned by GLOBALMEM ALLOC 
 when the memory block was created.  If 
 the de-allocation operation was successful, the result variable vHndl is set to zero (0) to indicate 
 that the original handle is no longer valid.  If 
 the operation fails for any reason, the value of the mHndl 
 parameter is assigned to vHndl. 
  It may 
 be convenient to use the same variable for both the parameter and the 
 result, as it will then be automatically cleared to zero when the memory 
 block is released.  |  
| 
 GLOBALMEM LOCK  | 
 The moveable memory block 
 referenced by mHndl is locked 
 at a specific memory location.  A 
 pointer to this location is assigned 
 to the variable specified by vPtr. 
  You may 
 only read or write the memory block while it is locked, and you use the 
 current pointer to its location.  |  
| 
 GLOBALMEM SIZE  | 
 The size of the memory 
 block referenced by mHndl is 
 retrieved and assigned to the LONG or DWORD variable specified by vSize.  The 
 mHndl parameter is the handle 
 originally returned by GLOBALMEM ALLOC.  |  
| 
 GLOBALMEM UNLOCK   | 
 The moveable memory block 
 referenced by mHndl is unlocked, 
 and the previous memory pointer is invalidated.  If 
 the memory block remains locked (perhaps because it had been locked more 
 than once), the value TRUE 
 (non-zero) is assigned to the result variable vLocked. 
  If the 
 memory block is now unlocked, or the parameter mHndl 
 was invalid, the value FALSE 
 (0) is assigned to vLocked instead.  |  
  |