                                                            
                              
                         
                           
                             
                               
                                
                    
                            
                                                            
  Volume 1, Number 1                                4 February 1991
                 (c) Daniel Doekal, All Rights Reserved
  
     BBS Clipper magazine, published RANDOMLY, later WEEKLY......
  
     Some from materials are coming from scanning CLIPPER echo
     which is carying FidoNet. Mostly this echo is and will be
     source of often asked Question and Answers because can be
     very helpfull in this small moment.
    
     Other materials, which are fully signed or abbreviated are
     copyrighted material of appropriate persons.
  
     Publisher is not responsible for other authors....
     Published materials don't have to be opinion of publisher..
  


                               Table of Contents

  1. EDITORIAL  ..........................................................  1
     First letter from editor&publisher  .................................  1
  2. ARTICLES  ...........................................................  3
     .PPO? OOPs, CLIPPER 5.0 has a preprocessor!  ........................  3
     To be aware in 5.01?  ...............................................  5
  3. QUESTIONS AND ANSWERS  .............................................. 13
     4DOS and CLIPPER  ................................................... 13
     Clipper books and magazines  ........................................ 13
     Needed fix of BNU for hanging in 5.01?  ............................. 16
     Discovering GHOST empty records  .................................... 16
     Turbo C++ and Clipper  .............................................. 16
  4. COMMENTS  ........................................................... 19
     Distribution sites and how to get CLIPBBS  .......................... 19
     How to send an article to CLIPBBS  .................................. 20

                                   - - - - -
  CLIPBBS 1-01                   Page 1                    4 Feb 1991


  ===========================================================================
                                   EDITORIAL
  ===========================================================================


  Welcome into CLIPBBS magazine,
  
  yes, just another Clipper magazine from set of New Clipper magazines
  apperaring slowly in many countries. But, this one is little bit
  different, it's used especially in BBS (Bulletin Board System)
  environment and is distributed ONLY electronicaly. Yes, i know, here is
  already Nantucket News or Reference for CLipper or how this two are
  called and they are also available in electronic form, but i don't have
  a good feeling from them because of lack of interest in pure problems
  of new Clipper freaks and lack of reactions to some common problems.
  
  Few weeks ago i decided to make a new Clipper magazine. REally don't
  know at this moment if it's good idead or how long will be alive,
  because it's magazine of all us who are Clipper programmers or users or
  just fans and all articles here aren't honored and must be written by
  somebody from us.
  
  I really don't know at this moment how this magazine will go to you,
  reader, but hope that i will find more people which will do uploads to
  several bulletin boards, or distribute this magazine to any other
  countries. Here is NOT limitation about distribiution, then feel free
  and put this magazine whenewer do you want, only keep original files in
  archive of any type without changing them.
  
  For all of you who are able to write something to this magazine, please
  do this and don't be afraid about your bad english (mine is also not
  quite perfect, but i'm czechoslovakian and not englishman) or other
  things. Just send me this article, it will goes here if only little
  readable.
  
  I believe this can be nice magazine with lot of reactions from side of
  readers. I'm also keeping eye on CLIPPER echo in FidoNet, Clipper ECHO
  in GT environment, Nantucket Bulleting Board called Clipper World, i'm
  also a member of ClipNet, so called clipper distribution network and i
  hope i some next month i will become as member of Compuserve also.
  Therefore i have a quite lot of sources of information, but i don't
  want to write all articles alone. Please do also some nice for all
  other Clipper programmers and nice and interesting facts put here.
  
  Ending idea is, that this magazine will come out WEEKLY. At this
  beginning really don't know how often will come out, but i'm thinking
  about 14days interval between numbers, but all this depends from
  articles coming or from time which i will have to write new ones.
  
  Purpose of this magazine is to inform all Clipper programmers about
  CLipper itself. Question and Answer part of this magazine will continue
  with putting answers for often needed question and often problems with
  sometime getting old of them again in live because of passing out old
  numbers. Anyway, all number and also single articles will be available
  on my BBS or mailer for download or for request. And if anyone will
  ask in CLIPPER echo, i will repost all this informations for everybody
  CLIPBBS 1-01                   Page 2                    4 Feb 1991


  using. All coming information from Nantucket (if they will) i will also
  put here and so on. Sometime maybe also information about other xBase
  languages, but only when it has something to do with Clipper.
  Advertisements are welcome (commercial also!) but they MUST give
  something nice to Clipper programmers and so on.
  
  I'm planning also nice serie of articles about files in ClipNet and
  other CLipper files available in many BBS with some short or long
  descriptions about those files, therefore everybody can collect
  complete descriptions about available files for downloads from some
  BBS. If anyone want to do this about own BBS, will be welcome. World is
  open to discuss everything via modems, then why not.
  
  Information about commercial products will be here also, because i'm
  missing them in Clipper echos around (they are prohibited, but i think
  we all need them and first we need informations about them). Everyone
  will can then compare some products and take decisions about their
  using and buying.
  
  Information about how to give articles to this magazine is possible to
  see in end of magazine.
  
  Have a nice reading (HANR) and see you soon.....
  (.DD.)

  ---------------------------------------------------------------------------
  CLIPBBS 1-01                   Page 3                    4 Feb 1991


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


                .PPO? OOPs, CLIPPER 5.0 has a preprocessor!
  
  
  A few weeks ago i got a file called CL5IEO.ZIP inside of which was one
  .NG and one .TXT file. Inside of those files was something for what lot
  of us, CLIPPER 5.0 programmers, is looking a long and long time. List
  of internal errors reported by CLIPPER 5.0. Gotcha, not developed by
  NANTUCKET, it is assembled from COMPUSERVE comments by Terry McConnell
  - thank to this man.
  
  But and But. Not every inside of this is true. One really GOLD example
  which i'm explaining there is discovering another MAGIC function of
  CLIPPER 5.0.
  
  A preprocessor. Dear reader, when you are compiling program, are you
  thinking about preprocessor? Not? Really not? That's a biggest mistake
  which you can make, because Nantucket prepared for you nicest game on
  the world. Try to get your program and try to use CLIPPER /P for see
  how funny result you can get.
  
  Back to point. CL5IEO.TXT is describing Internal Error #666 on
  SetColor(). Nice example there is producing really this error on EVERY
  run (not like as other Internal Error, sometime).
  
  Example:
  
  line := 0
  set color to ("$$$$$$$$$$$") ; ? ++line //1
  x := setcolor()              ; ? ++line //2
  ? "Setcolor return ", x      ; ? ++line //3
  set color to &x              ; ? ++line //4
  z := "@@@@@@@@@@@@"          ; ? ++line //5
  set color to &Z              ; ? ++line //6
  set color to "z+/z/t/m/q"    ; ? ++line //7
  ? setcolor()                 ; ? ++line //8
  m = "z+/z/t+/m/q"            ; ? ++line //9
  setcolor(m)                  ; ? ++line //10
  set color to &m              ; ? ++line //11
  ? setcolor()                 ; ? ++line //12
  set color to "w/n,w/n,w/n,w/n,w/n,w/n"
  setcolor("W/n,w/n,w/n,w/n,w/n,w/n,w/n")
  
  
  Additional comments in original text is:
  
          Last executed line is 8, and SetColor(0) error is on line 9.
  
  Absolutely wrong, author of this example is not counting with magic
  which will make preprocessor! Of course, every normal people will
  expect translation to preprocessed source really as you can see program
  example above. Reality is different:
  CLIPBBS 1-01                   Page 4                    4 Feb 1991


  line := 0
  SetColor( "$$$$$$$$$$$" )                       ; QOut( ++line )
  x := setcolor()                                 ; QOut( ++line )
  QOut( "Setcolor return ", x )                   ; QOut( ++line )
  SetColor( "&x              <end of line> ? ++line" )
  z := "@@@@@@@@@@@@"                             ; QOut( ++line )
  SetColor( "&Z              <end of line> ? ++line" )
  SetColor( '"z+/z/t/m/q"    <end of line> ? ++line' )
  QOut( setcolor() )                              ; QOut( ++line )
  m = "z+/z/t+/m/q"                               ; QOut( ++line )
  setcolor(m)                                     ; QOut( ++line )
  SetColor( "&m              <end of line> ? ++line" )
  QOut( setcolor() )                              ; QOut( ++line )
  SetColor( '"w/n,w/n,w/n,w/n,w/n,w/n"' )         //*//
  setcolor("W/n,w/n,w/n,w/n,w/n,w/n,w/n")
  
  As everybody now can see, all SET COLOR TO commands with "&" operator
  or with direct string ("...") parameter are eating complete end of
  line! It means, all ? ++line commands are eaten and unhappy program is
  counting ONLY to 8 and not to 12 as author expected!
  
  It finally means - error is on line marked with //*// in .PPO list and
  not in line signed with //9 in original program. Internal Error in this
  case is on right place, because of totally crazy color string specifying
  six color codes!
  
  Another question at this moment is - how Nantucket can produce
  Preprocessor which is eating remain of line when is used operator for
  multiple commands on line together with macro operator.
  
                               GOLD RULE IS
  Never trust to your program, because is preprocessed by Cliper
  preprocessor.
  (.DD.)

  ---------------------------------------------------------------------------
  CLIPBBS 1-01                   Page 5                    4 Feb 1991


                           To be aware in 5.01?
             Some comments about 5.01 problems and advantages
              (very old article coming after release of 5.01)
  
  It's now a few weeks ago, i got long time waiting 5.01 upgrade of
  Clipper 5.0. Thanks god, this 'upgrade' is solving most important
  problems which had a reason for stop producing our programs in Clipper
  5.0.
  
  The new release of Clipper 5.01 is not ONLY upgrade or 'bug' (anomaly)
  fix, but it's mostly another version of Clipper and i think, numbering
  it like 5.01 isn't really giving imagine about number of changes
  inside.
  
  This article is describing few things which Clipper programmer have to
  be aware in Clipper 5.01. First i must say, I BELIEVE in Clipper 5.01
  like in normal and valid programming device of programmer. This same i
  couldn't say about 5.0, because in final stage of using this i missed
  all trust to this version. Then, don't be aware that your 5.01 will not
  do what you need, it will do, but still is better to know where is a
  problem hidden.
  
  Some from comments which i will have to Clipper 5.01 are mostly
  'cosmetic' changes and somebody will have fun after reading them, but
  i'm every time very critic to programs which i'm using.  Therefore i
  will include some small things on the same way as things bigger. Some
  comments are only WARNING not to be mistaken from your side when using
  something and maybe can save you some time of discovering that you did
  some kind of mistake.
  
                              Keyboard codes
  
  When received 5.01 my expectation was, that INKEY.CH was expanded to
  some missing keyboard codes. Not only codes from extended keyboard
  (because they are discutable), but also codes for normal keyboard
  which weren't in 5.0 INKEY.CH.
  
  Truth is different, INKEY.CH is still missing extended codes and from
  basic codes, K_SPACE ,just easy code is NOT included in INKEY.CH
  
       Solving:
            update your INKEY.CH with (example):
                 #define   K_SPACE        20
                 #define   K_CTRL_UP      397
                 #define   K_CTRL_DOWN    401 ....
  
  Another problem which somebody could expect that have to be solved is
  fact, that all SETKEY sets aren't working when one is using INKEY()
  function. Because INKEY() is just ONLY reading keyboard. In all other
  places where keyboard is read are all SETKEY sets executed correctly.
  But, when programmer will start to use INKEY() in more places, then
  will have problem, all SETKEY sets aren't valid and programmer MUST
  take care of them by special routines or DO CASE checks. My expectation
  that this nonlogical fact will be corrected is wrong. INKEY() is still
  don't recognizing SETKEY sets.
  
  CLIPBBS 1-01                   Page 6                    4 Feb 1991


       Solving:
            don't use INKEY(), you easy can all INKEY() callings
            replace with call to new function:
  
            Function MyInkey(nnn)
            local     value   := 0 , cBlock
            while .t.
            if valtype(nnn)!="N"
                 value:=inkey()      // inkey WITHOUT parameter
            else
                 value:=inkey(nnn)   // inkey WITH parameter
            endif
            if (cBlock:=setkey(value))!=NIL
                 Eval(cBlock)        // test if valid SETKEY
                 loop                // and then continue
            endif
            return (value)
  
       This possible (and easy) solving has this advantages:
       -    fully compatible with INKEY() function in parameter passing
            and value returning
       -    taking care of your SETKEY sets and executing (better
            evaluating) them without special testings or actions
       -    all LASTKEY() stuff is still the same because of original
            INKEY() using
  
                            New RTLINK version
                            INCREMENTAL LINKING
  
  Another expectation which i had - incremental linking in new version of
  Clipper will work. Truth is again different. DO NOT use incremental
  linking. It's working successfully only for few first links and then
  programmer will receive nice set of error from program. Probably will
  then start looking to errors in own program, but reality is -
  incremental linking is NOT working.
  
  First, second and sometime third link is WITHOUT problems, but after
  this you can receive errors of this kind:
  
       Syntax error: +
            Be sure, that on your program line where report is reported
            doesn't exist a "+" operation
       Syntax error
            Just funniest error, because it's SYNTAX error on compiled
            and linked code. Maybe there is processor of your PC
            reporting non existed function....
       Cannot create overlay file: !^%#@(*
            Really, i cannot reproduce file name reported by overlay
            manager, because this magazine will not probably have all
            control and graphical symbols which one can get in IBM PC
            environment.
  
  All this errors you will get in part of code which was a subject of
  changes, everything other (not changed) is still working pretty
  perfect.
  
  CLIPBBS 1-01                   Page 7                    4 Feb 1991


  FAX which i then sent to Nantucket, together with uploads of these
  error reports to Nantucket special message area on CLIPPER WORLD BBS
  are WITHOUT answers.
  
  FAX to Pocket Soft Inc., authors of RTLINK, is with answer:
      RTLINK version shipped with Clipper 5.01 is working with
      INCREMENTAL linking without problems. It passed our and Nantucket
      test suites. If you have some problems, please contact
      Nantucket.....
  
  Still there is one positive thing which stopped make me angry to fact
  that Incremental isn't working. Prelinked Libraries stuff is working
  ABSOLUTELY perfect (not in 5.0 there wasn't possible to use it) and
  therefore my link time is just few second only for my OBJ files and all
  other 350KB of Clipper runtime is permanently sitting on my disc.
  Another advantage of this is of course fact, that some from small
  utilities for my program can be long about 10 or 20 kilobytes of .EXE
  file and that is really very nice (before between 200 and 400
  kilobytes).
  
  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.
  
                              Sample program
  
  Hope you can remember that there are some sample program (directory
  CLIPPER5\SOURCE\SAMPLES in standard installation).  Unfortunately
  somebody can use some from them inside of programs together with own
  code. Especially nice is sample allowing to have browsing and selecting
  facility for files on your disc - FILEMAN.
  
  But be aware when you are using this program. You MUST update to new
  version or change some lines in your old one, because this old one will
  NOT work with new CLIPPER 5.01. Why?
  
  Because of change in SELECT command is no longer possible to have
  command like this:  Select  arrray[ subscript ]
  
  In 5.0 this one was without problems working, in 5.01 this one is
  giving error - ALIAS array NOT EXIST. Yes, of course, it's absolutely
  logical, because there MUST be:
  
            Select (array[ subscript ])
  
  SELECT command syntax is:
            SELECT area name
            SELECT area number
  
  Then of course SELECT is right when is interpreting 'array' like area
  CLIPBBS 1-01                   Page 8                    4 Feb 1991


  name. But and but, old select did this fact different. Then be aware of
  your select commands in your sources.
  
  For them which are using TBROWSE objects on basis from samples coming
  with CLIPPER 5.0 (TBDEMO..) is there another recommendation. Take a
  closer look to new TBDEMO, because there are few things solved more
  better than in previous version.
  
  Be very carefully when using DBU supplied with Clipper 5.01. This
  program is coming in some cases to never ending cycle of WHILE command.
  Exactly:
  
       Open EMPTY database
       Go to do BROWSE of this database
       Start typing new values for record
            And then wait forever.
  
       Point is, that you MUST first press INS key for insert NEW record.
       But when one will forget did this?
  
                             CLIPPER DEBUGGER
  
  CLD is now great program and i'm really using it every day.  Previous
  CLD was unusable because of memory problems of CLIPPER (no one my
  application was able to fit in memory together with CLD.EXE nor
  CLD.LIB). There is lot of improvements in this new debugger, but of
  course there are same nonlogical and non working things:
  
       Totally new HELP system for CLD is enough descriptive, but not
       CONTENTS SENSITIVE. When one will press F1 (Help key), then will
       get first page of help and MUST scan through all of them to page
       which need. In case of small memory left is this process VERY slow
       (because of lot of disc swaps).
  
       Don't try to use HELP system when you are editing (for example)
       colour codes or path string for your source files.  If one will
       press F1 at this moment,then will get some graphics codes which
       are equal to code of F1, but will not get help. Somebody who made
       it forget that F1 is help and not a valid key for editing
       characters...
  
       One must still be carefully when specifying command line options
       for SPLIT and EGA/VGA screen.  CLD /S/50 and CLD /50/S is really
       not the same for CLD..  Just use spaces between them and then it's
       working well (CLD /S /50 is the same as CLD /50 /S)
  
       Be aware of using ? row() or ? col(). Both of them will return not
       value from YOUR program, but value from inside of Debugger.
       Debugging a program and needs to know values of cursor position is
       at this moment totally impossible.
  
       Some from people using CLD will report - When i pressed F8, then
       CLD didn't make steps through my procedure, he just did action for
       F10 (execute procedure). Be aware at this moment if your .OBJ
       files ALL had specified /B switch for CLIPPER command line. If
       not, then CLD will not warning you of course, will just step
  CLIPBBS 1-01                   Page 9                    4 Feb 1991


       through. You can then be surprised and thinking what is wrong!
  
       There is IMPOSSIBILITY to debugging a code which is using #include
       statements for include PART of CODE (not only #define and other
       definitions). Because Clipper is allowing you to use #include for
       normal part of program (with all commands...), then i'm expecting
       that will be able to correct do debugging of this includes.
       ABSOLUTELY not, when one will do this, will have a debugger step
       cursor somewhere in .PRG file, but on wrong place of course,
       because of mixup of line numbers. Small example of this:
  
       Program.prg
       1    function Main()
       2         #include "small.inc"
       3         ? 'Hello this is NOT a first line of program'
       4         ? 'and there will be a RETURN coming'
       5    RETURN NIL
  
       File  SMALL.INC
       1         ? 'This is a first line of program of course'
       2         ? '-----------------------------------------'
  
       Of course, after compiling there is another program:
       1    function Main()
       2         ? 'THis is a first line of program of course'
       3         ? '-----------------------------------------'
       4         ? 'Hello this is NOT a first line of program'
       5         ? 'and there will be a RETURN coming'
       6    RETURN NIL
  
       CLD will start a debugging and display PROGRAM.PRG file on screen
       with debugging step cursor on line "2" of PROGRAM.PRG file.
       Executed instruction but will be a instruction from line "1" of
       SMALL.INC. I'm so sure, that this stupid acting is possible to
       eliminate just by better recognizing of includes and modifying
       screen display routines of source code.
  
       There is of course EASY solving for this - NEVER use #include for
       part of your code. All your code you can easy put to separate .OBJ
       files and call them like function.  Then will CLD working GREAT.
  
       Possibility to use Alt-D function for stop program in working is
       limited. If there will be for example:
  
            WHILE rlock()
            ENDDO          (of course, this is a mistake. But i
                           made it few time, just forgotten "!"
                           negation)
  
       Then one will NOT be able to stop program and see what is working.
       When i had this problem i did lot of looking what is wrong and
       after LONG period i found that there is missing one negation for
       condition.
  
  
                             STATIC OVERLAYING
  CLIPBBS 1-01                   Page 10                   4 Feb 1991


  Lot from us were using static overlaying of CLIPPER 5.0 libraries to
  solve memory problems. Roger Donnay supplied MEM50.LNK script for
  including most bigger part of Clipper runtime to static overlays had
  few problems (hanging because of RTLINK problems to handle memory), but
  was working very nice.
  
  New CLIPPER 5.01 version of Clipper has totally changed all names of
  function (really ALL and FULLY). The old MEM50.LNK then not working
  because is fixed to old names. Maybe Donnay will come with new version
  of this, but - there is NOT reason to use static overlays because
  dynamic overlaying and memory management of RTLINK is now working and
  your application will work probably better without static overlaying.
  
  Still, when somebody will try to adapt old MEM50.LNK to new names, then
  will encounter one problem. Not problem to found new names (they are
  easily detectable), but will receive "INTERNAL ERROR 999" which will
  not be able to found in documentation (like all internal errors). Then
  don't spend a time for static overlaying, there is no effect for this.
  
                            Memoedit() function
  
  A more comments i will give to MEMOEDIT() function.
  
  First problem which i had with Memoedit() in  Clipper 5.0 was a problem
  that there IS NOT a way to access edited string from INSIDE of
  Memoedit(). One can access ONLY original string, but edited (and
  continuously changed) string is hidden somewhere in Clipper memory. I
  reported this problem already to Nantucket a LONG time ago, the told
  "will be solved in new version", but true is again different. And i'm
  so sure, that this isn't so problem.
  
  In Clipper 5.0 there was a BIG problem with MemoEdit() function when
  there was a very small free memory for your program (about 30KB after
  loading program in memory). Then Memoedit in some cases did HANG of
  whole system. Probably it had something to do with RTLINK inability to
  handle proper overlaying when there was a small memory. This problem is
  PARTIALLY out. One need more smaller memory to hang system with
  Memoedit (10KB to 20KB). Hope, somebody will take care of this, because
  to have hanging editor (yes, PE.EXE distributed with CLIPPER will hang
  too) inside of application running just close to free memory is pity.
  
                            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
  
                              MENU functions
  
  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
  CLIPBBS 1-01                   Page 11                   4 Feb 1991


  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.
  
                             STATIC functions
  
  Be very carefully when using STATIC functions. I had a static functions
  used a parameter for ACHOICE() function for my own keyboard actions in
  this MENU ACHOICE() choosing. ACHOICE is just NOT executing this
  function when is STATIC. Unbelievable is, that there IS NOT error
  message (not found function or ...), there is just NOT EXECUTING.
  
                               INCONSISTENCY
  
  One funny inconsistency of program language is in new Clipper 5.01
  version. I found it when i was thinking:
  
       OK, there are  @ SAY .. COLOUR,  @ .. TO .. COLOUR command
       (something new in 5.01, extension of @ command). Then there
       OF COURSE is @ .. CLEAR .. COLOUR.
       GOTCHA, there is NOT @CLEAR with COLOUR parameter. Maybe
       somebody is thinking that CLEAR is without colour, but then
       is wrong.
  
  
                               COPY FILE TO
  
  Nice surprise of COPY FILE command is this case:
  
       there is a file:
                 some text
                 another texts
                 lot of text
                 <eof>
  
                 It means, file is ended with EOF character as is
                 standard is DOS.
  
       Then is there command:
                 COPY FILE <file> TO LPT1
  
       And result is:
            Unrecoverable error: write error....
  
       Just, COPY FILE TO printer will NOT handle files which are
       containing EOF character. Why? Because when COPY command is
       writing something to printer port, then is doing this in block and
       then is checking if returned number of really processed characters
       is the same as return of passed character. DOS will of course NOT
       COUNT _EOF_ character between processed characters and giving back
       different number. And then will your program immediately fail with
       "unrecoverable" error and return to DOS. I found this very
  CLIPBBS 1-01                   Page 12                   4 Feb 1991


       annoying. And from this moment i have to use RUN("copy ...")
       command instead of normal and logical COPY FILE.
  
  
  
  (somewhere later, i want to continue with some comments about
   compuserve list of anomalies in Clipper and some other discovered
   problems which aren't in CIX list)
  
                                                                  .DD.

  ---------------------------------------------------------------------------
  CLIPBBS 1-01                   Page 13                   4 Feb 1991


  ===========================================================================
                             QUESTIONS AND ANSWERS
  ===========================================================================


  Question:
  
          I'm using 4DOS with Clipper 5.01 and having problems with
          using RUN (!) command from CLIPPER. What i have to do for
          correct using of 4DOS?
  
  Answer:
  
          1)      take a sure, that CONFIG.SYS contains correct specs:
  
                  shell=c:\4dos.com /e:512 /s:d /p
  
                  This one is telling to boot that has to take 4DOS.COM
                  instead of COMMAND.COM with 512 bytes for environment
                  and swapping to disk (replace with /s:e for EMM swap)
                  /P is telling to run AUTOEXEC.BAT for start of system.
  
          2)      AUTOEXEC.BAT has also to set several things:
  
                  path c:\;c:\4dos
  
                  Be sure that PATH is telling where to found all other
                  files from 4DOS!
  
                  set COMSPEC=c:\4dos.COM
                  set 4DSHELL=/S:D
  
                  First one is giving correct COMSPEC for all invocation
                  of COMMAND.COM like later and other is telling again
                  about swapping for all other copies of 4DOS.COM later.
  
          This two things are needed for DOS to get correctly working,
          for CLIPPER here is needed something totally different. Clipper
          is taking COMSPEC DOS variable to run 'command.com', then will
          RUN without problems any internal or external DOS commands or
          another programs. If one wants to run another session of
          4DOS.COM, then for compatibility is best to use
          RUN("%COMSPEC%") which is without problems.
  
          And last comment - ONE MUST HAVE ENOUGH MEMORY TO RUN _TWO_
          coppies of 4DOS.COM in case of running another 4DOS.COM or
          copy of 4DOS.COM + runned program.

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


  QUESTION:
  
      I'm looking for good books about Clipper 5.0x and also looking
      for some newspapers about it, where i can found some from them?
  
  CLIPBBS 1-01                   Page 14                   4 Feb 1991


  ANSWER:
  
               AVAILABLE CLIPPER BOOKS AND PERIODICALS
  
      BOOKS
  
      Clipper 5:  A Developer's Guide
      Author:         Joseph D. Booth, Greg Lief and Craig Yellick
      Publisher:      M&T Books
                      501 Galveston Drive
                      Redwood City, CA 94063-4728
  
      To Order:       1-800-533-4372
                      1-800-356-2002 (in CA)
  
  
      Clipper Developer's Library
      Author:         James Occhiogrosso
      Publisher:      Microtrend Books
                              Slawson Communications, Inc.
                      165 Vallecitos de Oro
                      San Marcos, CA 92069
  
      To Order:       1-800-SLAWSON
  
  
      Clipper Programming Guide, 2nd Edition Version 5
      Author: Rick Spence
      Publisher:      Microtrend Books
                      Slawson Communications, Inc.
                      165 Vallecitos de Oro
                      San Marcos, CA 92069
  
      To Order:       1-800-SLAWSON
  
  
      Illustrated Clipper 5.0, 2nd Edition
      Author:  John Meuller
      Publisher:      Wordware Publishing, Inc.
                      1506 Capital Avenue
                      Plano, TX 75074
  
      To Order:       1-800-229-4949
  
  
      Straley's Programming with Clipper 5.0
      Author: Stephen J. Straley
      Publisher:      Bantam Books
                      666 5th Avenue
                      24th Floor
                      New York, NY 10103
  
      To Order:       1-800-223-6834 ext. 9479
                      212-492-9479
  
  
  CLIPBBS 1-01                   Page 15                   4 Feb 1991


      Using Clipper, 2nd edition
      Author: Ed Tiley
      Pubisher:       Que Corporation
                      11711 North College Avenue
                      Suite 140
                      Carmel, IN 46032
  
      To Order:       1-800-428-5331
  
  
      PERIODICALS
  
      The Aquarium
      Publisher:      Grumpfish, Inc.
                      PO Box 17761
                      Salem, OR 97305
  
      To Order:       503-588-1815
  
  
      Compass for Clipper
      Publisher:      Island Publishing
                      1424 Sherman Avenue
                      Suite 300
                      PO Box 2347
                      Coeur d'Alene, ID 83814
  
      To Order:       208-667-3727
  
  
      Nantucket News: The Technical Journal of Nantucket Corporation
      Publisher:      Nantucket Corporation
                      12555 W. Jefferson Boulevard
                      Los Angeles, CA 90066
  
      To Order:       213-390-7923
  
  
      Reference(Clipper): The Independent Guide to Clipper Expertise
      Publisher:      Pinnacle Publishing
                      28621 Pacific Highway South
                      PO Box 8099
                      Federal Way, WA 98003-009
  
      To Order:       1-800-231-1293
                      206-941-2300
  
      European Nantucket Users Club Magazine - Clip a Time
      Publisher:      The Europen Nantucket Users Club
                      33 Nobel Square
                      Basildon
                      Essex SS13 1LT
                      England
  
      To Order:       44-268-590955
                      44-268-590905 (FAX)

  ---------------------------------------------------------------------------
  CLIPBBS 1-01                   Page 16                   4 Feb 1991


  Q&A
  
  Question:
  
    I have a problem with the DBU in Clipper 5.01. I can create a
    dbase, but when I go to enter data, DBU hangs. No response from
    keyboard... nothing! Running an AT (286) 10hz V/c drive VGA.
    (Can't see any probs there) Is there a fix I should know about?
  
  Answer:
  
    You are completely right. Nantucket produced changed DBU but this
    change is putting in DBU new error which wasn't in previous version.
    Here is a fix (one from many):
  
    at line 281, change DBUEDIT.PRG to say:
  
          /* Edit the current field */
            IF bof() .and. eof() .and. !lAppend
                 keyboard chr(K_DOWN) + chr(nextkey())
                 loop
            ENDIF

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


  QUESTION:
  
      I encounter very often a very annoying problem which i refer to as
      "ghost records". With no apparent regularity i find in my .dbf files,
      usually but not always at the end, one or more records whose fielsd are
      filled with right arrows (chr(26)'s). For sure this problem is a very
      well known one; Can someone tell me the origin of these records and how
      to avoid them ?  (I use clipper 87 and am starting with clipper 5.1.
      The ghost records are visible also with dbxl interpreter and enter in
      the total number of records of the fields).
  
  ANSWER:
  
      Sounds like a dBase III pack of a clipper .dbf file.  Or header
      corruption where there is one more record in the filesize than the
      header says.  Clipper reads the real filesize and gets the last record
      which is full of end-of-file markers (^Z or ASCII 26).
  
      Solution : don't access the files from dBase or DBXL.  (I do it often
      though and only stop doing it when problems arise - which has not
      happened for a year or so now).

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


  QUESTION:
  
          I'm using for my programs combination of Turbo C++ and Clipper
          sources and i want:
  
  CLIPBBS 1-01                   Page 17                   4 Feb 1991


          1) to be able to use command line compiling of C modules
          2) create from my objects complete library
          3) do both first totally automatically
  
  ANSWER:
  
          Following is a example of .RMK link script file for use as
          RMAKE #name.rmk to complete manage you created library
  
          Comments are added as usuall in .RMK files, therefore just
          cut this part out, define own files and start using:
  
  // Example RMAKE file for combination of TCC sources and CLIPPER
  // sources, result is going to library
  
  makepath[.OBJ]  := "\SOURCE\DANIEL\OBJ"
  makepath[.PRG]  := "\SOURCE\DANIEL"
  makepath[.C]    := "\SOURCE\DANIEL"
  makepath[.CH]   := "\SOURCE\DANIEL"
  makepath[.LIB]  := "\LIB"
  //      makepath is used for telling RMAKE where to get and put
  //      some used files
  //      .OBJ files are ALLWAYS stored in subdirectory OBJ of main
  //              program directory
  //      .PRG files, .C and .CH files are in main source program
  //              directory
  //      .LIB files are in common lib directory, not in CL5\LIB
  
  #ifdef DEBUG
  .prg.obj:
      clipper $< /w/n/m/b /o$@
      lib \lib\daniel -+$@;
  #else
  .prg.obj:
      clipper $< /w/n/m/l /o$@
      lib \lib\daniel -+$@;
  #endif
  
  //      Above is defined how will be managed CLIPPER sources from
  //      .PRG to .OBJ state with possibility to define /DDEBUG on
  //      command line calling RMAKE @name.rmk /DDEBUG for include
  //      debugger by simply one switch
  //      LIB.EXE is coming from standard MICROSOFT C or from any other
  //      source which is giving this program. Anyway TLIB can be also
  //      used of course. LIB will be called for REMOVING old .OBJ from
  //      and putting NEW inside ( -+ on beginning of name). Library
  //      name is called DANIEL (it's my private library).
  
  .c.obj:
      TCC -I\TC\INCLUDE -L\TC\LIB -C -d -ml -wmlt -K -G -O -Z -k- -c -o$@  $<
      LIB \LIB\DANIEL.LIB -+$@;
  
  //      This is definition how to make .OBJ from .C sources and put
  //      them again into library. Bunch of switches IS CASE sensitive
  //      then please careful with using them!
  //      And of course, later don't forget to link your CL.LIB with
  CLIPBBS 1-01                   Page 18                   4 Feb 1991


  //      your program, otherwise it will NEVER work......
  
  dd_lib1.obj:        dd_lib1.prg  dprinter.ch daniel.ch
  dd_lib2.obj:        dd_lib2.prg  dprinter.ch daniel.ch
  dd_lib3.obj:        dd_lib3.prg  dprinter.ch daniel.ch
  dd_lib4.obj:        dd_lib4.prg  dprinter.ch daniel.ch
  dd_lib5.obj:        dd_lib5.prg  dprinter.ch daniel.ch
  dd_netw.obj:        dd_netw.prg  dprinter.ch daniel.ch
  configer.obj:       configer.prg dprinter.ch daniel.ch
  
  //      This is simple, all this are CLIPPER modules with some include
  //      .CH files which are of course also checked for changes
  
  cleanup.obj:        cleanup.c
  faxlog.obj:         faxlog.c
  isprinte.obj:       isprinte.c
  screen.obj:         screen.c
  wptext.obj:         wptext.c
  wputil.obj:         wputil.c
  
  //      And this is definition of .C modules, they aren't checked
  //      for includes, because includes in C are quite stabil

  ---------------------------------------------------------------------------
  CLIPBBS 1-01                   Page 19                   4 Feb 1991


  ===========================================================================
                                   COMMENTS
  ===========================================================================


                             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 take profit from dis-
  tributing 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). Please, in case of
  your interest in CLIPBBS and possibility to became 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).
  
  At this moment (22/08/1991) here aren't distribution sites because is
  coming first trial number.

  ---------------------------------------------------------------------------
  CLIPBBS 1-01                   Page 20                   4 Feb 1991


                     How to write articles in CLIPBBS?
  
  
  Writing of articles to CLIPBBS is really easy. Write articles, max 78 
  characters per line, long as you wish, pure ASCII text. Choose from 
  list of extension which is describing your text, or just name it .ART 
  as ARTicle and send it to publisher or to any distributes site (if 
  exist already) via modem to BBS or with mailer as file attach. Article 
  will come automatically in nearest free issue.
  
  Extensions are:
  
          Articles (anything)             .ART
          Software                        .SOF
          News                            .NEW
          Question and Answers            .Q&A
          Letters to editors              .LET
          Advertisement                   .ADV
          Wanted                          .WAN
          Comments                        .CMS
          
  That's all at this moment, probly later we will be changing this. If 
  you have any tip about subparts of CLIPBBS, please tell us, or just 
  write article about this.
  
  Daniel, publisher
                                  
  

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