SYSTEM REQUIREMENTS o Clipper Summer '87, 5.01, or 5.2. o MS-DOS 3.1. o Any MS-DOS network. o NetLib and NOVLIB are optional, but synergistic. o dANALYST Gold is optional but recommended. CONTROL MEMVARS (NOTE: In the dMILL All-Networks Productivity Library for Clipper 5.01, these memvars are controlled by DmSet(), an analog of Clipper's SET() function.) 1. DmBell_L. True to sound bell with resource contention, else false. 2. DmBell_N. Number of bell characters to sound if DmBell_L is true. 3. DmColorL. True if user has color monitor, else false. 4. DmContrl1L. Trace control: show all resource requests. 5. DmContrl2L. Trace control: display resource request until keystroke or timeout after DmContrl2N seconds. 6. DmContrl2N. Trace control: amount of time resource requests are shown. 7. DmContrl3L. Trace control: show how USE command was parsed into components. 8. DmHandCode. Control custom (.T.) or default (.F.) handling of timeouts. 9. DmMesDirC. WARNING message screens are stored in &DmMesDirC.WarnMes.MEM and FATAL ERROR message screens are stored in &DmMesDirC.FatalMes.MEM. 10. DmNetDelay. Number of seconds to wait between requests for an unavailable resource. 11. DmNetNameL. If true, get node identification with NetName(), else GETE("NetName"). 12. DmSmBat_L. Batch semaphore commands? 13. DmSmError1. Integer error code for routine DmSmGetV. Initialized to -9999. 14. DmSmHist_L. Control historical recording of semaphore activity. 15. DmSmOn_L. Check semaphore database at initialization. 16. DmSmTable. Semaphore table is .DBF file &DmSmTable. 17. DmSmTimout. Default amount of time to wait for access to semaphore table. 18. DmSmTrackL. Control semaphore tracking of databases opened. 19. DmSuccessL. True if resource request successful, else false. 20. DmTimeOutN. Number of seconds to continue requesting an unavailable resource. 21. Dm_MargL_N. Left margin for box text (number of blank columns between left box border and text). 22. Dm_MargR_N. Right margin for box text (number of blank columns between right box border and text). 23. Dm_BoxErrL. After return from a window services routine, is true or false as an error was or was not detected. 24. Dm_ColorBd. This is the color specification for box borders and border text. 25. Dm_ColorDf. This is the color specification to set on exit from a windowed message service routine. 26. Dm_ColorIn. This is the color specification for box interiors. 27. Dm_ScnCols. Number of screen columns minus 1. 28. Dm_ScnRows. Number of screen rows minus 1. RESOURCE CONTENTION HANDLING ROUTINES (Note: The behavior of these routines is controlled by memvars DmBell_L, DmBell_N, DmContrl1L, DmContrl2L, DmContrl2N, DmContrl3L, DmHandCode, DmMesDirC, DmNetDelay, Dm_MargL_N, Dm_MargR_N, Dm_ColorBd, Dm_ColorDf, and Dm_ColorIn. Resource tracing is controlled by the memvars DmContrl*, notification of resource contention is given in windows controlled by the memvars Dm_*, and error handling is controlled by DmColorL and DmMesDirC.) 1. Procedure DA_ADD. Append a record to a shared or exclusive file. 2. Procedure DA_Flock. Request a lock on a shared or exclusive file. 3. Procedure DA_Rlock. Request a record lock on a shared or exclusive file. 4. Procedure DA_USE. Request the opening of a shared or exclusive file. 5. Procedure DmPack_DB. Pack a shared or exclusive file. 6. Procedure DmReindex. Reindex a shared or exclusive file. 7. Procedure DmZAP_DB. Zap a shared or exclusive file. SEMAPHORE SERVICE ROUTINES 1. Basic locking functions to create and initialize semaphores (enter into semaphore table). a. Function DmSmLock. Try to create semaphore until success or timeout occurs. b. Function DmSmLoc1. Make one attempt to create semaphore. 2. Basic unlocking functions to destroy semaphores (remove from semaphore table). a. Function DmSmUnlk. Destroy semaphore. b. Procedure DmSmUse. Close the database and semaphore associated with the current work area; substitute for the USE command when a semaphore is locked for the duration of each database USE (PUBLIC DmSmTrackL is .T.). c. Procedure DmSmClsD. Close all databases and associated semaphores in all work areas; substitute for the CLOSE DATABASES command when a semaphore is locked for the duration of each database USE. d. Procedure DmSmClsS. Close all semaphores owned by the caller. e. Procedure DmSmClsA. Close all files, databases, and semaphores owned by the caller; substitute for the CLOSE ALL command when a semaphore is locked for the duration of each database USE. 3. Functions to change semaphore values. a. Function DmSmSetV. Set semaphore value. b. Function DmSmTeS1. Try once to test and set semaphore value. c. Function DmSmTeSt. Try to test and set semaphore value until success or timeout occurs. d. Function DmSmIncr. Increment semaphore value. e. Function DmSmDecr. Decrement semaphore value. 4. Functions and procedures to retrieve semaphore information. a. Function DmSmExis. Semaphore exists? b. Function DmSmGetV. Get semaphore value. c. Procedure DmSmOwn. Owner of a semaphore. d. Procedure DmSmGetF. Test for semaphore in table and get semaphore value and owner. 5. Modes of operation for semaphore service routines. a. Procedure DmSmBat. Batch groups of semaphore operations. b. Procedure DmSmHist. Enable or disable collection of historical information. c. Procedure DmSmTrac. Enable or disable semaphore tracking. 6. Debugging aids. a. Procedure DmSmList. List semaphores to file, screen, or printer. b. Procedure DmSmHist. Enable or disable collection of historical information. c. Procedure DmSmTrac. Enable or disable semaphore tracking. WINDOW SERVICE ROUTINES 1. Procedure DmWrdWrp. (A) Calculate the last row on which the message would appear or (B) display word-wrapped text in a rectangle. 2. Procedure DmBxMes. Display word-wrapped text in a titled, double-ruled window. 3. Procedure DmBxMesC. Service of DmBxMes plus a prompt to continue on bottom border. 4. Procedure DmBxMesW. Service of DmBxMes plus the prompt to continue in bottom partition. 5. Procedure DmBxMesH. Service of DmBxMes plus ergonomics: hide window with "H" or move it with the arrow keys. 6. Procedure DmResMes. Service of DmBxMesH plus a countdown which is computed and displayed on the bottom border; used by the resource- contention-handling routines.