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.

<END OF LIST>
