                                              
                           
               
         
                   
                 
          
             
            
              
                                            
               
                           
                                              
 
   Volume 1, Number 8                                    15 Octomber 1991
 
                  (c) Daniel Doekal, All Rights Reserved
   
      The BBS Clipper magazine, published PERIODICALLY, later WEEKLY......
   
      Some of the material used comes from scanning CLIPPER echoes
      which are carried in various BBS throughout the World.
      These Echoes are very often the source of the most often asked
      Questions and Answers about Clipper.
     
      Other material, which is fully signed or abbreviated is the
      copyright of the appropriate persons.
   
      The publisher is not responsible for other authors submissions....
      Published material is not necessarily the opinion of the publisher.
 
      Redaction:
         Publisher...................................Daniel Docekal
         Chief editor ...............................Daniel Docekal
         Language editor .................................Dave Wall
 


                               Table of Contents

 1. ARTICLES  .............................................................  1
    DOSRCS - Revision Control System - part (6)  ..........................  1
    The Programmer's Guide to CLIPPER Linkers - part (5)  .................  9
 2. ANOMALIES  ............................................................ 14
    ANOMALIES reports and commets  ........................................ 14
    Memory(n) function  ................................................... 14
    MENU functions incompatibility  ....................................... 14
    RTLINK is not possible to stop  ....................................... 15
 3. CLIPPER NET  .......................................................... 16
    Index of described files in Clipper BBS Magazine  ..................... 16
    ClipperNet - CALC14.ARJ  .............................................. 16
    ClipperNet - DOC111.ARJ  .............................................. 17
    ClipperNet - JG2.ARJ  ................................................. 18
    ClipperNet - LUTLIB.ARJ  .............................................. 18
 4. CLIPBBS  .............................................................. 20
    CLIPBBS distribution  ................................................. 20
    CLIPBBS, how to write an article!!!  .................................. 21

                                   - - - - -
 CLIPBBS 1-08                   Page 1                   15 Oct 1991


 =============================================================================
                                   ARTICLES
 =============================================================================


             DOSRCS - Revision Control System - part (6)
 
 
                     __________________________
                     Identify files - IDENT.EXE
                     
 
 IDENT.EXE is small one purpose utility for DOSRCS system. It's
 searching named files for all occurrences of the pattern
 
         $keyword: .... $
 
 where keyword is one from keywords defined in article about CO
 (Check Out). This command has only one option "-q" which is
 suppressing warning given if there are no pattern in a file.
 
 IDENT works on text files as well as object files, therefore can be
 used for identifying if files are made with support of RCS or not.
 Just use this like this:
 
         IDENT -q *.PRG      or    IDENT -q *.OBJ
 
                      ________________________
                      RCSDIFF - DIFF interface
                      
 
 RCSDIFF.EXE is used for comparing RCS revision. Normally it's used
 INTERNALLY in CheckIn (CI) program and user cannot see this using.
 But sometime can be good to know how to use this utility. But one
 must be warned before. RCSDIFF needs for work file DIFF.EXE which
 is also coming with DOSRCS package.
 
 ______
 SYNTAX
 
     RCSDIFF [ -biwt ] [ -cefhn ] [ -q ] [ -rrev1 ] [ -rrev2 ] file ...
 
 
 Options -b, -i, -w, -t, -c, -e, -f and -h are the same as options
 described in documentation about DIFF.EXE and i will try to explain
 them there if i will find docs about DIFF.EXE because they are not
 part of DOSRCS.
 
         -n
 
         RCSDIFF generates edit script of the format used by RCS
         systems.
 
         -q
 
         Supresses diagnostic output.
 CLIPBBS 1-08                   Page 2                   15 Oct 1991


         -rrev1 and -rrev2
 
         If both rev1 and rev2 are omitted, rcsdiff compares latest
         revision on the default branch (normally highest branch on
         the trunk) with te contents of the corresponding working
         file. This is useful for determining what you changes since
         the last CheckIn.
 
         If rev1 is given, rev2 is omitted, RCSDIFF compares
         revision rev1 of the RCS file with the contents of the
         corresponding working file.
 
         If both rev1 and rev2 are given, RCSDIFF compares revisions
         rev1 and rev2 of the RCS file.
 
                   _______________________________
                   RLOG.EXE - Log messages utility
                   
 
 RLOG.EXE is another utility used for getting direct informations
 from RCS files.
 
 ______
 SYNTAX
 
           RLOG [ options ] file ...
 
 Rlog prints the following information for each RCS file: RCS file
 name, working file name, head (i.e., the number of the latest
 revision on the trunk), default branch, access list, locks,
 symbolic names, suffix, total number of revisions, number of
 revisions selected for printing, and descriptive text. This is
 followed by entries for the selected revisions in reverse
 chronological order for each branch. For each revision, rlog prints
 revision number, author, date/time, state, number of lines
 added/deleted (with respect to the previous revision), locker of
 the revision (if any), and log message.  Without options, rlog
 prints complete information.  The options below restrict this
 output.
 
 _______
 OPTIONS
 
         -L
 
         ignores RCS files that have no locks set; convenient in
         combination with -R, -h, or -l.
 
         -R
 
         only prints the name of the RCS file; convenient for
         translating a working file name into an RCS file name.
 
         -h
 
         prints only RCS file name, working file name, head, default
 CLIPBBS 1-08                   Page 3                   15 Oct 1991


         branch, access list, locks, symbolic names, and suffix.
 
         -t
 
         prints the same as -h, plus the descriptive text.
 
         -b
 
         prints information about the revisions on the default
         branch (normally the highest branch on the trunk).
 
         -ddates
 
         prints information about revisions with a checkin date/time
         in the ranges given by the semicolon- separated list of
         dates.  A range of the form d1<d2 or d2>d1 selects the
         revisions that were deposited between d1 and d2,
         (inclusive).  A range of the form <d or d> selects all
         revisions dated d or earlier.  A range of the form d< or >d
         selects all revisions dated d or later.  A range of the
         form d selects the single, latest revision dated d or
         earlier.  The date/time strings d, d1, and d2 are in the
         free format explained in co(1L).  Quoting is normally
         necessary, especially for < and >.  Note that the separator
         is a semicolon.
 
         -l[lockers]
 
         prints information about locked revisions.  If the
         comma-separated list lockers of login names is given, only
         the revisions locked by the given login names are printed.
         If the list is omitted, all locked revisions are printed.
 
         -rrevisions
 
         prints information about revisions given in the
         comma-separated list revisions of revisions and ranges. A
         range rev1-rev2 means revisions rev1 to rev2 on the same
         branch, -rev means revisions from the beginning of the
         branch up to and including rev, and rev- means revisions
         starting with rev to the end of the branch containing rev.
         An argument that is a branch means all revisions on that
         branch. A range of branches means all revisions on the
         branches in that range.
 
         -sstates
 
         prints information about revisions whose state attributes
         match one of the states given in the comma-separated list
         states.
 
         -w[logins]
 
         prints information about revisions checked in by users with
         login names appearing in the comma- separated list logins.
         If logins is omitted, the user's login is assumed.
 CLIPBBS 1-08                   Page 4                   15 Oct 1991


 Rlog prints the intersection of the revisions selected with the
 options -d, -l, -s, -w, intersected with the union of the revisions
 selected by -b and -r.
 
                  _________________________________
                  DIFF.EXE - difference GNU utility
                  
 
 Unfortunately, DIFF.EXE documentation was not a part of DOSRCS
 package, therefore i will try to describe a bit this utility from
 my own discovering. If i will later find correct documentation from
 GNU, i will write new article only about DIFF.EXE
 
 Syntax
 
         DIFF [-options] file1 file2
 
 DIFF is comparing TWO files named <file1> and <file2> and
 generatinf several kind of outputs about differences between this
 two files. Originally, DIFF belongs to UNIX and therefore outputs
 are fitting for some other utilities from UNIX.
 
 Best will be, try to explain work of DIFF on example file(s):
 
 FILE1
      Ŀ
        This is example text file called FILE1       
        It will be used for DIFF.EXE checking        
                                                     
        Line3 was empty, Line4 is here               
      
 
 FILE2
      Ŀ
        This is example text file called FILE2       
        It will be used for DIFF.EXE   checking      
        Line3 is here,but Line4 is empty             
                                                     
      
 
 WITHOUT any options is result of comparation like this:
       Ŀ
        1,2c1,3                                             
        <         This is example text file called FILE1    
        <         It will be used for DIFF.EXE checking     
        ---                                                 
        >         This is example text file called FILE2    
        >         It will be used for DIFF.EXE   checking   
        >         Line3 is here,but Line4 is empty          
        4d4                                                 
        <         Line3 was empty, Line4 is here            
       
 
 It's special format telling about changes between file1 -> file2.
 Notation like "4d4" or "1,2c1,3" are telling about copying,
 changing or deleting lines between files.
 CLIPBBS 1-08                   Page 5                   15 Oct 1991


 OPTIONS
 
         -a
 
         All compared files are TEXT files, never trying to get them
         as BINARY files. DIFF.EXE is able of course to compare also
         binaries.
 
         -q
 
         All compared files are BINARY files. It's opposite switch
         from "-a" switch.
 
         -b
 
         Ignore changes in amount of whitespace. In our two examples
         if FILE2 different in two more more spaces on SECOND line.
         When used "-b" switch , result is:
               Ŀ
                1c1                                              
                <         This is example text file called FILE1 
                ---                                              
                >         This is example text file called FILE2 
                2a3                                              
                >         Line3 is here,but Line4 is empty       
                4d4                                              
                <         Line3 was empty, Line4 is here         
               
         Really is here a difference, that SECOND line is not
         treated as change, because it has only change in spaces.
 
         -B
 
         Ignore changes affecting only blank lines. It means, every
         changes with adding or deleting BLANK lines are ignored, it
         will work of course only for TEXT files.
 
         -c
 
         Make context-style output. Example is:
               Ŀ
                *** file1       Sun Sep 15 12:42:14 1991           
                --- file2       Sun Sep 15 16:21:24 1991           
                ***************                                    
                *** 1,4 ****                                       
                !         This is example text file called FILE1   
                !         It will be used for DIFF.EXE checking    
                                                                   
                -         Line3 was empty, Line4 is here           
                --- 1,4 ----                                       
                !         This is example text file called FILE2   
                !         It will be used for DIFF.EXE   checking  
                !         Line3 is here,but Line4 is empty         
               
         Just another kind of output from DIFF program. Is giving
         information which is probably better for print human
 CLIPBBS 1-08                   Page 6                   15 Oct 1991


         readable output.
 
         -C n
 
         Make context-style output and show name of last C function.
         Define context size to be n lines.
 
         -d
 
         Don't discard lines. This can be used for MINIMAL set of
         changes, it's of course much slower than normal way, but
         can give more accurate result.
 
         -D
 
         Make merged #ifdef output. Without complete documentation,
         i was not able to make this working at all. Therefore, i
         will search around for complete documentation.
 
         -e
 
         Make output that is a valid "ed" script. Example:
               Ŀ
                4d                                               
                1,2c                                             
                        This is example text file called FILE2   
                        It will be used for DIFF.EXE   checking  
                        Line3 is here,but Line4 is empty         
                .                                                
               
         Above script is useful for running "ed" (unix editor) on
         FILE1 and it will make from FILE1 new FILE2.
 
         -f
 
         Make output that look like "ed" script but changes are in
         order of appereance in the file.
               Ŀ
                c1 2                                            
                        This is example text file called FILE2  
                        It will be used for DIFF.EXE checking   
                        Line3 is here,but Line4 is empty        
                .                                               
                d4                                              
               
         Compare it with above generated script and one can see
         difference which is really in order of commands.
 
         -F regular_expression
 
         Show, for each set of changes, the previsou line that
         matches then specified regexp. Currectly affects only
         context-style output.
 
         -h
 
 CLIPBBS 1-08                   Page 7                   15 Oct 1991


         Splits the files into chunks of around 1500 lines for faster
         processing. It's not changing result mostly, but it's
         faster.
 
         -H
 
         Use heuristic. Who now what is this doing...
 
         -i
 
         Ignore changes in case. With this switch, never mind if
         there were changes in upper or lower form of text. It's
         still the same.
 
         -I reg_expression
 
         Ignore changes affecting only lines that match the
         specified regular expression.  Because of not having
         original documentation, really cannot make explanation what
         regular expression is.
 
         -l
 
         Pass the output through "PR" to paginate it. In UNIX
         environment it has probably effect, because PR is utility
         for formating text, but in DOS it's doing nothing.
 
         -n
 
         Output is in RCS-style diffs. Example:
               Ŀ
                d1 2                                             
                a2 3                                             
                        This is example text file called FILE2   
                        It will be used for DIFF.EXE   checking  
                        Line3 is here,but Line4 is empty         
                d4 1                                             
               
         DOSRCS is then using this 'script' for recoring informations
         about all changes made between versions.
 
         -N
 
         When comparing directories, if a file appears only in one
         directory, treat is as present but empty in the other.
 
         DIFF is also able to compare directories if they have the
         same contents and also ALL files within directories if they
         have the same name. For comparing and generating diff
         script of files in directories is usual to guess, that
         files which aren't exist are as empty files.
 
         For comparing directory is needed to use
                         DIFF dirname dirname
 
         -p
 CLIPBBS 1-08                   Page 8                   15 Oct 1991


         Make context-style output and show name of last C funtion.'
 
         -r
 
         When comparing directories, recursively compare subdir's
         found.
 
         -s
 
         Print a message if the files are the same.
 
         -S filename
 
         When comparing directories, start with the specified file
         name. This is used for resuming an aborted comparison.
 
         -t
 
         Expand tabs to spaces in the output so tat it preserves the
         alignment of the input files.
 
         -T
 
         Use a tab in the output rather than a space, before the
         text of an input line, so as to keep the proper alignment
         in the input line without changing the characters in it.
 
         -v
 
         Print version number
 
         -w
 
         Ignore horizontal whitespace when comparing lines.
 
 
 See you later...
 .DD.

 -----------------------------------------------------------------------------
 CLIPBBS 1-08                   Page 9                   15 Oct 1991


        The Programmer's Guide to CLIPPER Linkers - part (5)
 
 
         = MEMORY-PACKING =
 
         BLINKER, WARPLINK and dCLIP provide an "automatically-called"
         and "user-callable" function which helps to prevent the common
         memory fragmentation caused by Clipper applications.  Some of
         the fragmentation is actually caused by the linkers themselves
         because "dynamic-linking" creates unresolved symbols at runtime.
         These symbols are placed in the Clipper free-pool or "heap" at
         the most prudent location determined by the Clipper memory
         management system.  Once a symbol has been created, it will
         occupy the same memory space forever, therefore it is desirable
         that the symbols all be placed in adjacent memory locations
         rather than "fragmenting" the free pool.
 
         "Memory packing" is a technique developed by Steve Steiner and
         was introduced in his product SMARTMEM.  This is a very simple
         process in which unneccesary memory control boundaries are removed
         thereby giving the Clipper application a large contiguous block
         of memory to work with rather many small blocks placed end to end.
         BLINKER calls its memory pack routine at user-definable intervals
         each time an overlay is loaded.  For example, the command BLINKER
         MEMORY PACK 10 will insure that memory is packed every tenth
         time an overlay is loaded.  BLINKER's overlay pool may also be
         "flushed" by calling a function before packing memory to insure
         that fragmented code segments are also removed thereby providing
         the best possible de-fragmentation.  dCLIP calls its memory-pack
         function "every" time a module is loaded into memory, whereas
         WARPLINK uses a similar technique as BLINKER.  dCLIP and WARPLINK
         do not need to "flush" their overlay pools to prevent main heap
         fragmentation because they allocate a separate memory area and
         will only "flush" their overlay pools when they cannot find
         sufficient space to load a new module.
 
         Clipper-5.0 does not need third-party memory-packing routines
         because a new "garbage-collection" system has been implemented
         in their new Virtual Memory Manager (VMM) system to correct
         memory fragmentation.
 
 
         = MEMORY ALLOCATION =
 
         Some linkers provide for complete control of memory allocation
         to help the programmer manage the runtime environment of the
         application.
 
         PLINK86, RTLINK and BLINKER support a STACK command for
         allocating the amount of memory reserved as the call stack.  This
         is necessary in sophisticated applications which use windowing
         schemes and nest calls many levels deep.  These linkers also
         support a MEMORY command which will define the heap memory to
         allocate to the application in addition to the .EXE load module.
         If this command is not used, then Clipper grabs all the free
         dos memory.  This command is useful to insure that Clipper uses
 CLIPBBS 1-08                   Page 10                  15 Oct 1991


         only the memory you want it to use.  This memory control can
         also be accomplished with the SET CLIPPER=<memory parameters>
         in your dos environment, but burning it into the .EXE can some-
         times be more useful.
 
         BLINKER provides a very useful feature for burning the SET
         CLIPPER environment into the .EXEcutable program including the
         files parameter.  For example, the command -
         BLINKER EXECUTABLE CLIPPER V10;R32;F39 will eliminate the
         need to use this command in your AUTOEXEC.BAT file.  BLINKER,
         dCLIP and WARPLINK also provide control of the overlay pool size
         to optimize the object memory allocation.
 
         dCLIP follows the same guidelines as any Clipper application
         and allocates memory from the SET CLIPPER environment variable.
         dCLIP also incorporates a "virtual-memory" technique to allow
         calls to other .EXEcutable programs which are larger than the
         available memory.  This "virtual-memory" is any disk device,
         expanded memory, or a network server.  Memory is released from
         the application and saved as a temporary file, then reallocated
         to dos as new free memory for calling the other program.  After
         returning from the called program, the original memory condition
         is restored from the temporary file.
 
         Clipper-5.0 uses a virtual-memory (VMM) system for allocating
         memory space outside the main DOS memory for memory that is
         needed by the application.  This should not be confused with
         "virtual-overlaying" because the Clipper-5.0 virtual memory
         manager DOES NOT handle executable code segments.  Executable
         code is managed through the caching system provided by the
         RTLINK overlay manager, while Clipper memvars, arrays, and
         database buffers can use up to 64MB of disk space or 8MB of
         LIM 3.2 expanded memory as "virtual memory" in the event that the
         Clipper application requires more memory than DOS can provide.
         The great advantage of this system is that you will never run out
         of memory, however there is a performance trade off while the
         virtual memory system swaps to and from disk.
 
         
 
                          Linking Tips for Productivity
 
         
 
         When using a compiler language such as Clipper, there is no way
         to eliminate the EDIT-COMPILE-LINK cycle.  This is a necessary
         to produce machine-readable code.   There are a variety of new
         linking techniques, however, which reduce this cumbersome task
         to an acceptable, manageable process.
 
         In order to understand how to choose a linker for productivity
         and project management, we must first examine the methods in which
         linkers accomplish this task.  They are as follows:
 
         1. Pre-linked Libraries
         2. Dynamic Linking
 CLIPBBS 1-08                   Page 11                  15 Oct 1991


         3. Incremental Linking
         4. Speed-Linking
         5. Library-Module Linking
         6. Debugging
 
 
         PRE-LINKED LIBRARIES
 
         NOLINK introduced the concept of pre-linked libraries to the
         Clipper community about 3 years ago.  Shortly after that,
         RTLINK introduced their .PLL (prelink-library) system for all
         languages.
 
         Pre-linked libraries are files which are built from object
         and libraries into and .EXEcutable format.   The only step
         remaining is the "fixing-up" of any references made by the code
         in the pre-linked library to those in the rest of the application.
         Unlike an .EXEcutable program, a pre-linked library cannot be
         run from dos, but instead is used in conjunction with another
         .EXEcutable program.
 
         RTLINK developed their .PLL (prelinked-library) system with the
         intent of saving disk-space for applications which use common
         routines.  For example, every Summer 87 Clipper application links
         in about 150k of code from the CLIPPER.LIB library into the .EXE
         program.  If you have 10 Clipper .EXE programs, then this code
         redundancy will use up 1.5megs of disk space.  RTLINK allows you
         to build a .PLL file which pre-links this "common" code.  The .PLL
         file is then referenced when you create the .EXE program with all
         the "unique" code.  When you run your .EXE program the pre-linked
         .PLL file will be "fixed-up" to the rest of your application code
         each time you startup your program.
 
         Clipper-5.0 includes a BASE50.LNK file to create a BASE50.PLL
         file which contains about 277k of code from the Clipper libraries
         which is common to most Clipper applications.  When creating
         applications with RTLINK/CLIPPER-5.0 the command /PLL:BASE50 can
         be inserted into your .LNK response file, thereby telling RTLINK
         to use the BASE50.PLL file with with .EXE file containing the
         custom application code.   You must be sure to distribute the
         BASE50.PLL file with your application.  The disadvantage to .PLL
         files, however, is that they cannot contain overlays, so this
         technique will not allow the overlaying of the Clipper library
         modules as demonstrated in the "RELOADABLE OVERLAYS" section of
         this document.
 
         NOLINK, dCLIP, and dCLIPRUN use pre-link libraries for a dual
         purpose - disk management and memory management.  These linkers
         provide linking from .DLB files (dynamic-libraries) at "runtime"
         whereas RTLINK's .PLL system is simply a "load-time" linker.
         Linkers which use "true-dynamic" pre-link libraries will only
         link code into memory if it is called by the application that is
         running.  These systems will also "manage" the object pool to use
         a small amount of memory space for large applications.
 
 
 CLIPBBS 1-08                   Page 12                  15 Oct 1991


         DYNAMIC-LINKING
 
         Dynamic-linking is also covered under the "Memory Management"
         section because of its inherent memory-management capabilities.
         Dynamic-linking is probably more useful however in its ability
         to provide a "turbo-style" development system.  All other linkers
         require that you QUIT the program being executed to make changes
         to ANY part of the code.  Even the smallest change, such as
         adding a "CLEAR" to clear the screen will require that you
         (1) Quit to dos, (2) Edit your code, (3) Compile the code,
         (4) Link the code and (5) Restart the application.
 
         The NOLINK dynamic-linker eliminates step (4), the Link cycle,
         because it links code into memory from your .OBJect files.  For
         most Clipper developers, just saving the Link step will double
         the programmer's productivity if he/she is using a slow linker
         like ALINK, PLINK86 or RTLINK.
 
         The dCLIP development platform takes the "dynamic-link"
         concept two steps further and also eliminates step (1) and step
         (5) of the EDIT-COMPILE-LINK cycle.  For many applications this
         is also a great time savings because sometimes it takes a lot of
         time to "restart" an application and get back into the desired
         sub-menu to test the changes.  Some sophisticated application
         development tools such as ARTFUL.LIB must open as many as 25
         files, build arrays, set relations, etc. before you can even
         get into the desired menu.  dCLIP helps during development of
         these larger application systems by allowing the programmer to
         (1) suspend execution of the program, (2) Call his/her editor,
         (3) recompiles the changes, (4) automatically de-links the old
         code and re-links the new codes into memory, (5) return to
         the program.  This process does not in any way change the
         program "environment", only the executable portion of the code,
         thereby saving even more time in getting back to the desired
         menu to test the changes.
 
         dCLIP does have a limitation when being used in this manner.
         Let's say that procedure A calls procedure B.  The programmer
         hits the ALT-D hotkey while running procedure B to get to the
         interactive dot prompt, then calls his editor and changes
         something in procedure B.  dCLIP will allow the editing and
         recompiling of the changes, however the procedure B code cannot
         be replaced in memory until the application returns back to
         procedure A and then comes back into B.  It is suggested that
         if a change needs to be made to a procedure on the fly like
         this, that the programmer go back one menu in the program
         before hitting the ALT-D hot key.
 
 
 
         INCREMENTAL-LINKING
 
         Incremental Linking is a process in which only the code which
         is changed is linked into the new .EXEcutable program.  RTLINK,
         NOLINK, dCLIP and dCLIPRUN all support incremental linking
         however, each uses a different concept.
 CLIPBBS 1-08                   Page 13                  15 Oct 1991


         RTLINK's and BLINKER's concept of incremental linking is to
         create an information file which is generated containing a list
         of each module in the program along with a checksum and time
         stamp.  It is with the use of this file that the linker is able
         to tell what has changed in the program.  This technique has the
         disadvantage of causing the .EXEcutable program to grow larger
         than usual because of wasted space in the output file which is
         needed to allow for the growth of modules.  A certain amount of
         extra space (25% is the default) is needed.  This is not really a
         problem because incremental linking is usually done during the
         development cycle.  The final product can be linked with
         NOINCREMENTAL to disable the feature and bring the .EXE back down
         to normal size.   I tried using this RTLINK feature in several of
         my applications, but noticed no appreciable time-saving due to the
         disk overhead involved in comparing linked objects to the data in
         the information file.  Maybe on smaller applications this is more
         effective.  BLINKER introduced this feature in version 1.3 and is
         a much more effective method of incremental linking than either
         RTLINK's or WARPLINK's incremental linking.
 
         NOLINK's incremental linking system must work differently since
         linking is normally done "on the fly" and is always activated.
         When running an application under NOLINK and using dynamic-
         libraries, each time a module is called and needs to be linked
         into memory, the date and time of the module in the dynamic
         library is checked against the date and time of the .OBJ file on
         the disk.  If there is NO .OBJ file, then the module from the
         library is linked, if there is an .OBJ file with a later date
         and time then it is linked instead of the module in the library.
 
         dCLIP's incremental linking system uses essentially the same
         technique as NOLINK, except the DCLIP.SYS file allows the
         programmer to define the location of the .OBJect files so they
         may exist on another drive in another directory or on the
         network server.  This makes project management simpler.  dCLIP
         also allows the programmer to put a memory variable in the start
         of his/her program to disable the incremental link system,
         eliminating the constant disk access and date/time comparisions
         and link only from the libraries thereby improving the speed of
         operation.  This feature is usually implemented when using
         dCLIPRUN rather than dCLIP.

 -----------------------------------------------------------------------------
 CLIPBBS 1-08                   Page 14                  15 Oct 1991


 =============================================================================
                                   ANOMALIES
 =============================================================================


                      ANOMALIES and their comments
 
 This part of Clipper BBS Magazine is dedicated to all discovered 
 anomalies and comments about them in Clipper products. Because 
 Nantucket is still unable to give own bug and anomalies reports (as 
 actually did in past with Summer 87 version) is very handy to have 
 results of many investigations done on many user places. I'm also
 doing my own investigatings, because i'm always very good when someting 
 has hidden problems. Everything what i buy will first show all problems 
 and then all normal things. This amazing part of my live is sometime 
 making me crazy, but for testing of programs it's great <grin>.
 
 Daniel
 
 

 -----------------------------------------------------------------------------


                           Memory(n) function
 
 
 Never take a care of value returned by Memory() function. When there is
 30KB reported by Memory(1), then Memory(3) (run space) can report this
 number:
 
           -1   (probably -1 as result of calculating)
           768  just perfect, i have 640KB of memory in computer
                and RUN space is 768KB free
 
 .DD.

 -----------------------------------------------------------------------------


                     MENU functions incompatibility
 
 One nice surprise i had after running our applications. I made a own
 menuying system which was using FACT that cursor is staying just
 immediately AFTER selected menu line. This one WAS true in Clipper 5.0
 and this one IS NOT true in 5.01 I don't understand why 5.01 is putting
 cursor on place of SET MESSAGE (never mind if there is MESSAGE or not)
 and not logically to place after selected menu line.
 
 Then if your menu system is acting strange and you are getting sure
 that MENU TO is still working the same, change your mind - it's
 different.
 
 .DD.

 -----------------------------------------------------------------------------
 CLIPBBS 1-08                   Page 15                  15 Oct 1991


                   RTLINK is not possible to stop....
 
 Another stupidity of RTLINK which is making me really angry is fact,
 that one still cannot press Ctrl Break for stop linking somewhere in
 middle of linking. One MUST wait till RTLINK will display something to
 screen (and this can be after 10 or 15 minutes from moment when one
 pressed Ctrl Break). Only at moment of displaying will DOS see your
 Ctrl Break. RTLINK will NEVER look for this key. Solving of this stupid
 fact is only one. Use /VERBOSE:2 switch for your Rtlink and then there
 will be continuous flow of text on screen and RTLINK will stop when you
 will need it.
 
 Another suggested solution coming from Nantucket (use BREAK ON in your
 CONFIG.SYS) is not working with many versions of DOS, therefore we can
 forget about this.
 
 .DD.

 -----------------------------------------------------------------------------
 CLIPBBS 1-08                   Page 16                  15 Oct 1991


 =============================================================================
                                  CLIPPER NET
 =============================================================================


 
 Following is COMPLETE list of all published file descriptions in Clipper
 BBS magazine in previous numbers. Purpose of this index list is to allow
 anybody find needed file descriptions in growing number of described files.
 Short description after name will give first possible close image about
 file. Number enclosed in "[]" will mean number of Clipper BBS magazine.
 
 Ŀ
 FileName     Src Description                                     Where 
 Ĵ
 ACCESS.ARJ   Cln Source of speed testing program                 [1-06]
 ACH2TB.ARJ   Cln Convert ACHOICE to TBROWSE                      [1-05]
 ACHOO2.ARJ   Cln Replacement of ACHOICE with GET possibilites    [1-06]
 ADHOC302.ARJ Cln Summer 87 inteligent report program             [1-04]
 CL5103.ARJ   Cln Report of 5.01 anomaly number 3                 [1-04]
 CL5REP6.ARJ  Cln 5.01 replacement of REPORT command              [1-04]
 CLIP110.ARJ  Cln Clipper Documentor program                      [1-05]
 CLIPLINK.ARJ Cbs Complete text of R.Donnay about linkers         [1-04]
 CLIPSQL.ARJ  Cln Demo of complete SQL library for CLipper        [1-05]
 CLPFON.ARJ   Cln Set of fonts for EXPAND.LIB from author         [1-03]
 COND.ARJ     Cln Builder of conditional indexes like SUBNTX      [1-03]
 DBSCN2.ARJ   Cln Screen designer generator                       [1-05]
 HGLASS.ZIP   Cln Hour glass for indication of index progression  [1-04]
 INDXSL.ARJ   Cln User Fields selection builder for index generate[1-03]
 IOBASYS9.ARJ Cln Demo of S87 library and calling Clipper from C  [1-03]
 MK30.ARJ     Cln Mouse library demo version                      [1-03]
 MOVEGETS.ARJ Cln GETSYS change for moving between gets via VALID [1-03]
 NFDESC2.ARJ  Cln NanForum library description list               [1-06]
 NFLIB2.ARJ   Cln NanForum library main file                      [1-06]
 NFSRC2.ARJ   Cln NanForum library Source files                   [1-06]
 NOTATION.ARJ Cln Complete text of article about hungarian notat. [1-04]
 PACKUP.ARJ   Cln ASM source of PACK/UNPACK replacement SCRSAVE.. [1-04]
 POPUPCAL.ARJ Cln Popup calender                                  [1-05]
 READPW.ARJ   Cln GETSYS change for password invisible reader     [1-03]
 SCRSAVE.ARJ  Cln Screen AntiBurning utility (inactivity snake)   [1-05]
 SOUND.ARJ    Cln Multiple TONE() used as one SOUND function      [1-06]
 SYMBOL.ARJ   Cln Dumper of symbol tables of Summer87 .EXE        [1-03]
 TBWHL4.ARJ   Cln WHILE browsing using TBROWSE, well commented    [1-06]
 VSIX711.ARJ  Cln Vernon Six Clipper utilities and library        [1-05]
 
 
 Src can be:
     Cln     File is accesible on ClipperNet
     Cbs     File is accesible in HQ BBS of CLipper BBS Magazine
 

 -----------------------------------------------------------------------------


                            ClipperNet - CALC14.ARJ
 
 CLIPBBS 1-08                   Page 17                  15 Oct 1991


 File Name:      CALC14.ARJ
 Other Names:
 
 File Size:      23,106 bytes
 File Contents:
                 CALC.TXT          20491
                 CALC.OBJ          11831
                 CALCEASY.PRG        346
                 CALCHARD.PRG       3058
                 REGISTER.DOC       2020
                 CALCEASY.RMK        240
                 CALCHARD.RMK        240
                 READ.ME            2583
                 CALC.NG           16966
 
 "PopUp" calculator in .OBJ form with good facilities of classical pop-up
 calculators, including tape, nesting of expressions and pasting value back
 to edited GET. Good examples also included.
 
 It's a DEMO version with (c) screen. Working version without (c) screen
 available only after paying. In time of existency NANFOR.LIB it seems like
 anachronism to ask for single function registration....
 
 .DD.

 -----------------------------------------------------------------------------


                            ClipperNet - DOC111.ARJ
 
 File Name:      DOC111.ARJ
 Other Names:
 
 File Size:      57,121 bytes
 File Contents:
                 DOC.EXE          111616
                 DOCUMENT.DOC      28519
                 CLIPPER5.KEY       1639
                 READ.ME             771
 
 Newer version of Clipper documentor program. DOC110 was described early
 before as far as i can remember.
 
 Sorry for delay :-) <grin> i was trying it to run now on 1500 lines of
 code. It was 11 minutes of painfull waiting...
 
 Some comments:
 
     1)   it's very, very slow... (AT286 only)
     2)   making of tree diagrams failing of course on #ifdef like this:
         #ifdef TYPE1
             if nValue<1
         #endif
         #ifdef TYPE2
             if cValue<"a"
         #endif
 CLIPBBS 1-08                   Page 18                  15 Oct 1991


                 ,,,,action,,,,
             endif
     3)   trying to become intelligent in case of passing parameters and
          returning values is resulting in some strange commenting comments
          in program....
     4)   lengths of inputs for names and paths are TOO short for reality
          and too long for displaying in program itself...
 
 
 Finally. It has lot of things to do to become small equivalent of SNAP or
 FOXDOC...
 
 .DD.

 -----------------------------------------------------------------------------


                            ClipperNet - JG2.ARJ
 
 File Name:      JG2.ARJ
 Other Names:
 
 File Size:      4,550 bytes
 File Contents:
                 JG2.PRG            9242
                 JUMP2GET.CH        2545
 
 Demonstration of capabilities of GET system:
 
     o  Enter a READ at *ANY* GET in the 'getlist';
     o  Jump to any other GET in the getlist from a GET's postblock;
     o  Jump to any other GET based on user input of either the ordinal
        position of the GET in the getlist, or, the GET's name.
 
 This one is not requiring ANY changes of GET system in Clipper!

 -----------------------------------------------------------------------------


                            ClipperNet - LUTLIB.ARJ
 
 File Name:      LUTLIB.ARJ
 Other Names:
 
 File Size:      10,598 bytes
 File Contents:
                 LUTLIB.LIB        19003
                 LUTLIB.DOC         9984
 
 Yet Another Clipper Library (YACL) with Shareware idea of distributing.
 Functions for:
 
     Menuing
     Conversion number to string of words
     Global string replace
     Selection menu
 CLIPBBS 1-08                   Page 19                  15 Oct 1991


     Appends from open working area
 
 .DD>

 -----------------------------------------------------------------------------
 CLIPBBS 1-08                   Page 20                  15 Oct 1991


 =============================================================================
                                    CLIPBBS
 =============================================================================


                              CLIPBBS Distribution
   
   CLIPBBS is special magazine about CLIPPER and CLIPPERing (or about 
   another related problems and xBASE languages). This magazine is for
   free and articles aren't honored. Nobody can make a profit from the
   distribution of this magazine.
   
   CLIPBBS can be freely downloaded and uploaded to any BBS or any other
   public system without changes of original contents or number of files
   in original archive (kind of archive can be changed, but we are sup-
   porting ARJ archive because is best and smallest).
   If you are interested in CLIPBBS and would like to become a DISTRIBUTION
   site, contact publisher on 2:285/608@fidonet or 27:1331/4412@signet
   or just call to 31-10-4157141 (BBS, working 18:00->08:00, 2400bps) or
   voice to 31-10-4843870 in both cases asking for DANIEL (Docekal).
   
   Distribution sites:
   
   United Kingdom
       Welsh Wizard, SYSOP Dave Wall, phone 44-656-79477
   
   United States of America
       The Southern Clipper, SYSOP Jerry Pults, phone 1-405-789-2078

 -----------------------------------------------------------------------------
 CLIPBBS 1-08                   Page 21                  15 Oct 1991


                      How to write articles in CLIPBBS?
   
   
   Submission of articles to CLIPBBS is really easy:
     Maximum of 78 characters per line, as long or as short as you like
     ASCII text.
     Choose from the list of extension which most describes your text, or
     just name it .ART as ARTicle and send it to publisher or to any
     distribution site via modem to BBS or with mailer as file attach.
     Article will come automatically appear in the next free issue.
   
   Extensions are:
   
           Articles (anything)             .ART
           Software                        .SOF
           News                            .NEW
           Question and Answers            .Q&A
           ANOMALIES and their comments    .ANO
           Letters to editors              .LET
           Advertisement                   .ADV
           Wanted                          .WAN
           Comments                        .CMS
           DUMP from conferences           .DMP
           Clipper Net                     .CLN
           
   That's all at the moment, there will probably be changes later, as the
   magazine evolves. If you have any ideas for a new section of CLIPBBS,
   please tell us, or just write an article about it.
   
   Daniel, publisher

 -----------------------------------------------------------------------------
