home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-03-04 | 86.2 KB | 1,983 lines |
- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
- ░░░░░░░▓▓▓▓░░▓▓▓▓░░░░░▓▓▓▓░░░▓▓▓▓▓▓░░▓▓▓▓▓▓░░▓▓▓▓▓▓░░░▓▓▓▓░░░░░░░░░░░
- ░░░░░░░░▓▓ ▓▓░░▓▓ ░░░░░▓▓ ░░░▓▓ ▓▓░░▓▓ ▓▓░░▓▓ ▓▓░▓▓ ▓▓░░░░░░░░░░░░
- ░░░░░░░░▓▓ ░░ ░▓▓ ░░░░░░▓▓ ░░░░▓▓ ░▓▓ ░▓▓ ░▓▓ ░▓▓ ░▓▓ ▓▓▓░░ ░░░░░░░░░░░░
- ░░░░░░░░░▓▓ ░░░░░░▓▓ ░░░░░░▓▓ ░░░░▓▓▓▓▓ ░▓▓▓▓▓ ░▓▓▓▓▓ ░▓▓▓░░░░░░░░░░░░░░░░
- ░░░░░░░░░▓▓ ░░░░░░▓▓ ░░▓░░░▓▓ ░░░░▓▓ ░░▓▓ ▓▓░░▓▓ ▓▓░░░ ▓▓▓░░░░░░░░░░░░░░
- ░░░░░░░░░▓▓░░▓▓░░▓▓ ░▓▓ ░░▓▓ ░░░░▓▓ ░░░░░▓▓ ░▓▓ ░▓▓ ░▓▓ ▓▓░░▓▓ ░░░░░░░░░░░░
- ░░░░░░░░░▓▓▓▓ ▓▓▓▓▓▓▓ ░▓▓▓▓░░░▓▓▓▓░░░░▓▓▓▓▓▓ ▓▓▓▓▓▓ ░▓▓▓▓ ░░░░░░░░░░░
- ░░░░░░░░ ░░ ░░ ░░░ ░░░░ ░░ ░░░ ░░░░░░░░░░
- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
- ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
-
- Volume 1, Number 6 4 March 1991
-
- (c) Daniel Doçekal, 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 (4) .......................... 1
- The Programmer's Guide to CLIPPER Linkers - part (3) ................. 5
- Best way of making FOR cyclus, and what about WHILE cyclus ........... 10
- WHICH packing/unpacking program to choose??????? ..................... 13
- Will Clipper expand to graphics environment? ......................... 16
- 2. SOFTWARE ............................................................. 18
- TIPS&TRICKS - how to found largest string in array ................... 18
- DANIEL.LIB - NEW version of DANIEL.RMK ............................... 18
- 3. ANOMALIES ............................................................ 22
- ANOMALIES reports and commets ........................................ 22
- Clipper Debugger anomalies ........................................... 22
- INCONSISTENCY ........................................................ 24
- New RTLINK version, INCREMENTAL LINKING .............................. 24
- 4. ECHODUMP ............................................................. 26
- CONFERENCE DUMP part (5) ............................................. 26
- 5. CLIPPER NET .......................................................... 28
- Index of described files in Clipper BBS Magazine ..................... 28
- CLIPBBS 1-06 Table of Contents (...) 4 Mar 1991
-
-
- Routing-Plan for ClipperNet .......................................... 28
- CLN - SOUND.ARJ ...................................................... 30
- CLN - TBWHL4.ARJ ..................................................... 31
- ClipNet - NFDESC2.ARJ ................................................ 31
- ClipNet - NFLIB2.ARJ ................................................. 32
- ClipNet - NFSRC2.ARJ ................................................. 32
- ClipperNet - ACCESS.ARJ .............................................. 34
- ClipperNet - ACHOO2.ARJ .............................................. 34
- 6. CLIPBBS .............................................................. 36
- CLIPBBS distribution ................................................. 36
- CLIPBBS, how to write an article!!! .................................. 37
-
- - - - - -
- CLIPBBS 1-06 Page 1 4 Mar 1991
-
-
- =============================================================================
- ARTICLES
- =============================================================================
-
-
- DOSRCS - Revision Control System - part (4)
-
- _________________
- Check In - CI.EXE
- ═════════════════
-
- CI.EXE is second most often used program from DOSRCS set of
- programs. It's used in simply form in our RCSPUT.BAT:
-
- │ @echo off
- │ echo Processing [%1]
- │ CI -q %1
-
- One switch used in this case, -q, is used only for supressing some
- messages and questions given by CI.EXE.
-
- Complete syntax is:
-
- CI [options] file ...
-
- One important warning:
-
- Every RCS used and stored file is using user names for
- specifying who is able to access file and not. Originally
- every file is getting name of user who was storing first
- this file and this user has right to use this file. Other
- users not, until they are written inside of file as other
- possible users. It's done by RCS program, or by making
- access list empty. Superuser can of course access all files
- without limitation.
- ________
- BRANCHES
-
- Branches are created automatically in most cases. Typicall
- example is this:
-
- TEST.PRG has initial revison 1.1 and next revisions
- 1.2 and 1.3
-
- Owner of file will retrieve 1.1 from RCS and
- start changing (1.1 is locked!). After this will
- use CheckIn without specifying new number of
- revision. CheckIn will see that 1.1 is locked and
- therefore will assume that new revision number MUST
- be 1.1.1.1 (added 1.1 after 1.1) and will store it
- with this number. User then can continue in
- BRANCHING with number 1.1.1.2, 1.1.1.3...
-
- ________________________
- UNLOCKING of LOCKED FILE
-
- CLIPBBS 1-06 Page 2 4 Mar 1991
-
-
- Sometime is needed to unlock locked revision (user can for
- example delete .PRG file and forget to use PUT for storing
- it back!). When this will happend, nobody is able to get
- revision for locking again and must be used RCS.EXE for
- unlocking. See some next continuing about RCS.EXE
-
- _____________________________________
- CHECKING of differences and -Q switch
-
- Normally, CI checks whether the revision to be deposited is
- different from the preceding one. If it is not different,
- CI either aboirts the deposit (if -Q is given) or asks
- whether to abort (if -Q is omitted). Deposit can be forced
- with -F option.
-
- ____________
- LOG MESSAGES
-
- Log message is used for every deposited revision. CI is
- asking for LOG message every time when new revision (or
- forced revision) is coming. User/programmer can use as many
- lines wants and end them with "." or Ctrl Z. All lines are
- then part of $Log$ keyword. If CI is used for more files in
- one (CI *.PRG for example), is possible use the same
- message for all this files - CI is asking for reuse old
- message, but it's not working in case how i'm using CI,
- because PUT is calling RCSPUT with only one file at one
- time. But mostly changes in sources are different for
- everyone different.
-
- ___________________
- INCLUDING NEW FILES
-
- New files of RCS are created when RCS file of give
- source/text is not exist. RCS is then creating new RCS file
- with initial revision (1.1 by default), access list is
- initialized to empty and CI is asking for DESCRIPTIVE TEXT
- instead of LOG message. This text is description of purpose
- of file and is NOT part of $Log$ definition.
-
- __________
- CI options
-
-
- -r[<rev>]
-
- assigns revision number <rev> to checked in revision,
- releases corresponding lock and deletes working file. This
- -r option is automatically given if not specified. Non
- specified <rev> is request for automatic counting of new
- revision number. <rev> if specified must be higher than the
- latest one on the branch to which rev belongs, or must
- start a new branch.
-
-
- -f[<rev>]
- CLIPBBS 1-06 Page 3 4 Mar 1991
-
-
- Forces a deposit. New revision is deposited even it is not
- different from preceding one.
-
- -k[<rev>]
-
- Searches working file for keyword values to determine its
- revision number, creating date, state and author (see
- article about KEYWORDS) and assigns these values to
- deposited revision rather than computing them.
-
- ║ This is quite nice switch with main interest in sending a
- ║ complete latest revision to another place (developers,
- ║ check out sites, beta test sites). Then receiver will use
- ║ CI -k *.* on all files and if correct keywords are written
- ║ in EVERY file (no problem when used one kind of header), CI
- ║ will take all correct number from files and will create
- ║ correct stored new revision in another set of RCS files on
- ║ another place!
-
- -l[<rev>]
-
- Works like -r, only it perform addition CO -L for just
- deposited revision. Therefore, deposited revision is
- immediately checked out again and locked.
-
- ║ This one is usefull in case that one wants to save
- ║ revision, but continue in workign and editing.
-
-
- -u[<rev>]
-
- Works like -l, except that deposited revision is NOT
- locked.
-
- ║ This one is useful in case that one wants to (for example)
- ║ copile revision immediately after checking, but is not
- ║ planning another editing.
-
-
- -q[<rev>]
-
- Diagnostics output is not printed, revision which is not
- different from preceding one is NOT deposited, unless -f is
- given.
-
-
- -d<date>
-
- Uses <date> for the checkin date and time. Date may be
- specified in free format as was explained in article about
- CO.EXE program.
-
- ║ Useful in case of need to say different date of creating
- ║ revision than reality, or for "-k" option where date is not
- ║ available.
-
- CLIPBBS 1-06 Page 4 4 Mar 1991
-
-
- -m<msg>
-
- Uses <msg> as LOG message for ALL revisions checked in. If
- this switch is not used, CI will ask for filling in all LOG
- messages.
-
- -n<name>
-
- Assigns the symbolic name <name> to the number of the
- checked-in revision. CI printer an error if name is already
- assigned to another number. Later is possible to use this
- symbolic name instead of revision number in CO command.
-
- This is giving nice possibility to NAMED some from
- revisions which have key value.
-
- -N<name>
-
- Same as -n, but it's overriding previsou assignment of
- name. RCS is of course still keeping number style of
- revisions, only assigns additional name, therefore name can
- be reasigned to another revision. Please NOTE THAT this is
- "-N" and previous one was "-n".
-
- -s<state>
-
- Sets the state of the checked-in revision to the identifier
- <state>. Default is <Exp>. Can be used for division of
- revisions or writing down some special flags or comments.
-
- -t[<txtfile>]
-
- Writes DESCRIPTIVE text into the RCS file (deleted the
- existing text of course). If <txtfile> is omitted, CI
- prompts the user for text, otherwise descriptive text is
- copied from file <txtfile>.
-
- -w<login>
-
- Uses <login> for Author field of deposited revision. Can be
- used for change of author or for set author for "-k"
- option
-
-
- All flags are described, interesting are marked with double line,
- together with tip of use.
-
- See you later...
- .DD.
-
- -----------------------------------------------------------------------------
- CLIPBBS 1-06 Page 5 4 Mar 1991
-
-
- The Programmer's Guide to CLIPPER Linkers - part (3)
-
-
- - OVERLAY RELOADING WITH RTLINK/CLIPPER-5.0 -
-
- This is a very important "undocumented" feature of the RTLINK
- linker supplied with Clipper-5.0. I have been RELOADING
- objects from the Summer 87 Clipper libraries for years, so when
- I received my copy of Clipper-5.0, the first thing I attempted
- to do was to overlay some of the larger modules in the
- Clipper libraries using the RELOAD command in my linker
- script file. The Nantucket development team had the foresight
- to insure that their C and ASM compiler assigned a UNIQUE name
- to each Clipper C/ASM object in the Clipper libraries, thus
- allowing, you, the Clipper programmer to use both the
- "undocumented" RELOAD command and MODULE command in your .LNK
- script files.
-
- Refer to the script file on the next page for an example of how
- to use these features to reduce memory usage in your Clipper-5.0
- applications. This link file creates an overlay area for
- overlaying the larger modules in the Clipper libraries which
- are not likely to call each other recursively, therefore you
- will probably notice very difference in speed performance yet
- you will get up to 40K more memory overhead depending on how
- much of the Clipper libraries your application uses.
-
- You may get a "warning" message during link time if your
- application does not call one of the modules referenced in an
- overlay area. In the event this happens, simply remove that
- module from the link file. For example, if you are not using
- any TBROWSE objects, remove the following line:
-
- SECTION MODULE D:\S89\EDIT\TBROWSE.C
-
- # Example of using RELOADABLE overlays with the
- # Clipper-5.0 version of RTLINK
-
- FI <my files>
- LIB <my libs>
- LIB \CLIPPER5\LIB\extend
- LIB \CLIPPER5\LIB\clipper
- LIB \CLIPPER5\LIB\terminal
- LIB \CLIPPER5\LIB\dbfntx
- OUTPUT <my .EXE>
- VERBOSE
- RELOAD FAR 200
- BEGINAREA
- SECTION MODULE D:\S89\EDIT\MEMOEDIT.C
- MODULE D:\S89\MEMO\MEMOTRAN.C
- SECTION MODULE D:\S89\MEMO\MEMOREAD.C
- MODULE D:\S89\MEMO\MEMOWRIT.C
- MODULE D:\S89\MEMO\MEMOLINE.C
- MODULE D:\S89\MEMO\MLCOUNT.C
- MODULE D:\S89\MEMO\MLPOS.C
- SECTION MODULE D:\S89\EDIT\TBROWSE.C
- CLIPBBS 1-06 Page 6 4 Mar 1991
-
-
- SECTION MODULE D:\S89\EDIT\ACHOICE.C
- MODULE D:\S89\ARRAY\ASCAN.C
- MODULE D:\S89\ARRAY\ASORT.C
- MODULE D:\S89\ARRAY\ARRAY.C
- MODULE D:\S89\ARRAY\DIRECTRY.C
- SECTION MODULE D:\S89\DBCMD\DBSTRUCT.C
- MODULE D:\S89\DBCMD\DBCREATE.C
- MODULE D:\S89\DBCMD\JOINLIST.C
- MODULE D:\S89\DBF\SORTOF.C
- SECTION MODULE D:\S89\TERM\GETHELP.C
- ENDAREA
-
-
-
-
- = DYNAMIC OVERLAYS =
-
- "Dynamic Overlays" are segments of code which are loaded into a
- "memory pool" at runtime. Dynamic overlay segments usually
- look like this in your link file:
-
- # only 1 area needed
- BEGINAREA
- SECTION FILE A
- SECTION FILE B
- SECTION FILE C
- SECTION FILE D
- SECTION FILE E
- SECTION FILE F
- ENDAREA
-
- In the above example, if a function in FILE A calls a function
- in FILE B, then FILE B is loaded into the memory pool along with
- FILE A and the memory pool is "dynamically" managed to insure
- that modules which call each other repetitively will remain in
- memory to improve speed performance. Some dynamic overlay
- linkers also provide automatic "reloading" to insure that the
- application will always have sufficient memory in the pool.
- Modules which don't need to be in the memory pool will be
- removed to allow room for others at runtime.
-
- Dynamic overlay linkers (ALINK, BLINKER, WARPLINK, RTLINK-
- CLIPPER 5.0) offer the advantage of simpler overlay design and
- usually better memory management. Some also have a tendency to
- "fragment" the Clipper free memory pool because they share the
- heap with the Clipper application rather than allocating a
- separate dos memory area. This can cause applications to run out
- of memory after prolonged running of the application if there is
- not sufficient memory overhead at the start of the application.
- Some dynamic overlay linkers also support overlay management by
- "frequency of usage". If a module is called often during the
- running of an application, it will remain in the overlay pool
- rather than being "swapped out" to load other overlays. This
- insures optimum runtime performance.
-
- Dynamic-overlay linkers such as WARPLINK and BLINKER both
- CLIPBBS 1-06 Page 7 4 Mar 1991
-
-
- make a disclaimer in their documentation requiring that the
- objects being overlayed are "well-behaved". After much
- experimentation with our own libraries and many third-
- party libraries, it is now more clear what constitutes
- well-behaved modules:
-
- a. Well-behaved code uses the Clipper EXTEND interface,
- registers or the stack for parameter passing and does
- not use undocumented features of Clipper.
-
- b. All Clipper-compiled .OBJects are dynamically-
- overlayable.
-
- Modules which CANNOT be dynamically-overlaid are:
-
- a. Routines which handle interrupts.
-
- b. Modules in which the DATA area is changed during
- runtime rather than allocating memory in the root area.
-
- Dynamic overlaying of third-party libraries can be an
- aggravating learning experience if you don't get support from
- the third party vendor in trying to accomplish this task.
- From my experience, the entire concept of dynamic-overlaying
- of C/ASM code is not very well-defined. BLINKER and WARPLINK
- have chosen to accept this challenge while the more conservative
- RTLINK has chosen instead to dynamic-overlay Clipper-compiled
- objects only and handle all the C/ASM code using static or
- reloable overlays - which, in my opinion, is a much more reliable
- concept.
-
- In the long run, I believe that dynamic-overlay linkers will
- survive only if they work flawlessly with all third-party
- libraries or very clearly define the rules for compatability with
- each third-party product and develop a following of add-on
- support.
-
-
- - PROCEDURE-LEVEL OVERLAY LOADING -
-
- For a dynamic-overlay manager to work effectively, it is
- important that it load overlays at the smallest possible code-
- segment level, i.e., the procedure/function rather than the
- entire object. This requires managing the symbol table
- seperately from the code and data, therefore, these linkers
- place the symbol table into the root memory area and each
- function into a separate overlay segment. To keep the root
- memory symbol table as small as possible it is recommended that
- you compile your application into a few large objects rather
- than many small objects when using dynamic-overlay linkers.
-
- I am not exactly sure at this time how RTLINK/CLIPPER-5.0
- accomplishes the symbol management, but compiling into large
- objects does not appear to be necessary with Clipper-5.0 to
- reduce the executable memory model. RTLINK/CLIPPER-5.0 does
- not appear to be dependent on the method that your source code
- CLIPBBS 1-06 Page 8 4 Mar 1991
-
-
- is compiled with the exception of line numbers, which WILL
- increase your memory usage.
-
-
-
- = DYNAMIC LINKING =
-
- True "Dynamic linkers" should not be confused with "Dynamic
- Overlay" linkers. Dynamic overlay linkers perform all the
- linking and fix-ups for the entire application at one time
- and then produce an .EXEcutable program. True "dynamic linkers"
- perform all the linking and fix-ups at "runtime" by linking
- from your .OBJ files or "dynamic-libraries" during the
- running of the application.
-
- Dynamic linkers (dCLIP, dCLIPRUN, NOLINK) provide the best
- memory-management for very large applications. All other forms
- of linkers still require that each symbol reference in the
- application be resolved at link time and assigned an address in
- the "root" memory area. Even the most sophisticated of overlay
- management schemes cannot eliminate the need to create this
- "symbol table", therefore the memory usage of a program will
- always increase proportionally with the number of symbols in the
- .OBJects regardless of the overlay technique.
-
- Dynamic linkers solve this problem by adding to the "root-
- memory" symbol table only if a function or procedure is called
- at runtime. Dynamic linkers will load the executable portion of
- the code into an "object pool" and perform the symbol fixups in
- the main heap area. Once a symbol has been added to the heap,
- it will stay in memory even after returning from the called
- function, however the executable code may be removed from the
- object pool to make space for new objects which may be called
- by the application.
-
- Dynamic linkers also allow linking from sets of dynamic
- libraries during the running of an application therefore large
- applications such as accounting systems can be distributed
- with one .EXE (the "dynamic-link engine") and multiple "dynamic-
- libraries".
-
- There are at least two (2) pre-requisites for a language to
- be able to support true dynamic linking:
-
- 1. The compiled code must be fully relocatable and not contain
- any code or data which must remain at a fixed memory
- location.
-
- 2. The error-handling system must allow for reconciling
- "missing externals" at runtime.
-
- Clipper SUMMER-87 and 5.0 compile code into P-code (or Pseudo-
- code) objects rather than native code. This code is "interpreted"
- rather than "executed" at runtime, therefore it is fully
- relocatable. In addition, any called function or procedure which
- is not in memory or in an overlay will cause a runtime error
- CLIPBBS 1-06 Page 9 4 Mar 1991
-
-
- which is passed through the UNDEF_ERROR() function (Summer 87) or
- the ErrorSys() code block (Clipper-5.0). dCLIP and NOLINK
- take advantage of this feature of Clipper by "dynamically-linking"
- the missing code from .OBJect files on the disk or from dynamic
- libraries to resolve the "missing external" error then returning
- a .TRUE. value from the error handler to continue program
- execution. The error is completely transparent to the operator
- because it is resolved by the dynamic-link system as follows:
-
- * Clipper's ERRORSYS.PRG module
- FUNCTION undef_error
- PARAM _proc,_line,_info
- IF SUBSTR(_info,1,16)="missing EXTERNAL"
- * get name of .OBJect from .MAP file or .DLB dynamic lib.
- _obj=DC_OBJFIND(_proc)
- * link object into memory and verify proc is loaded
- IF DC_OBJLOAD(_obj) .AND. TYPE(_proc+'()')='UI'
- RETURN .t.
- ENDIF
- ENDIF
- DO _disperror WITH _proc,_line,_info
- BREAK
-
- Some Dynamic-Linkers also provide a "dynamic-link library", so
- you can actually link a "linker" into your application, thereby
- taking advantage of multiple link technologies in one
- application. dCLIP.EXE is an example of an Clipper application
- which uses three (3) overlaying techniques all at the same
- time. DCLIP.EXE is built using the dCLIP "dynamic-link" library,
- the Clipper Libraries, some Clipper-compile objects and RTLINK.
- Much of the C/ASM code in the Clipper libraries and the
- DCLIPNL.LIB "dynamic-link" library are overlayed using the
- "RELOADABLE" overlay capability of RTLINK. The Clipper-compiled
- part of dCLIP is "DYNAMICALLY" overlayed with the RTLINK dynamic
- overlay manager, and the user "application" code is "DYNAMICALLY-
- LINKED" at runtime by the dCLIP dynamic link functions. This
- dynamic-link technology is easily included in any Clipper
- application by simply defining the DCLIPNL.LIB ahead of
- CLIPPER.LIB in your application link statement, then using
- a function call in your application to reference the object
- maps or dynamic libraries to use during program execution.
-
- -----------------------------------------------------------------------------
- CLIPBBS 1-06 Page 10 4 Mar 1991
-
-
- Best way of making FOR cyclus, and what about WHILE cyclus
-
- Next from serie of speed tests of CLipper is here. At this time we
- will be looking how is working FOR command and if is not better to
- make replacement with WHILE.
-
- TEST programs used for this purpose are simple:
-
- TEST1 pure FOR loop with 10000 of iterations
- │ local start := 0 ,; ─┐
- │ n,n1 ├─the same for ALL
- │ ─┘ tests
- │ ? "test no 1, FOR 0->9999"
- │ start = seconds()
- │ for n:=0 to 9999
- │ ?? n,chr(13)
- │ next
- │ ?
- │ ? " elapsed ",seconds()-start
-
- TEST2 pure FOR loop with 100,000 of iterations
- │ ? "test no 2, FOR 0->99999"
- │ start = seconds()
- │ for n:=0 to 99999
- │ ?? n,chr(13)
- │ next
- │ ?
- │ ? " elapsed ",seconds()-start
-
- TEST3 combined two FOR loops with 100,000 of iterations
- │ ? "test no 3, FOR 0->9 ( FOR 0->9999 )"
- │ start = seconds()
- │ for n1=0 to 9
- │ for n=0 to 9999
- │ ?? n,chr(13)
- │ next
- │ next
- │ ?
- │ ? " elapsed ",seconds()-start
-
- TEST4 combined two FOR loops with 100,000 of iterations
- │ ? "test no 4, FOR 0->9999 (FOR 0->9)"
- │ start = seconds()
- │ for n1=0 to 9999
- │ for n=0 to 9
- │ ?? n,chr(13)
- │ next
- │ next
- │ ?
- │ ? " elapsed ",seconds()-start
-
- Comments: difference of T3 and T4 is only in way of nesting
- FOR loops. It was just for fun with possible
- different results.
-
- Functionally T2, T3 and T4 are doing EXACTLY the
- CLIPBBS 1-06 Page 11 4 Mar 1991
-
-
- same job, only with different way. T1 is for
- counting theoreticall time for T2,T3 and T4
-
- │ T1 │ T2 │ T3 │ T4
- ────────┼───────────────┼───────────────┼───────────────┼──────────
- result│ 19.93 │ 213.55 │ 199.82 │ 200.31
- theory│ │ 199.93 │ 199.93 │ 199.93
- ────────┼───────────────┼───────────────┼───────────────┼──────────
- diff │ │ 13.62 │- 0.11 │ 0.38
-
- Lets take a look to results.
-
- - First look is telling, that T3 is FASTEST from all other
- test with 100,000 of iterations. Real FOR with only one
- FOR command is much slower than TWO NESTED FOR LOOPS.
-
- Why is this? It's very simple and it can be seen on screen
- when tests are running. At moment when T2 is running over
- iteration with number 65535 is coming SLOWNESS of
- displaying with comparation to previous speed. Why is this
- happening is again very simple and it's NOT any "bug" or
- "gotcha" of Nantucket.
- Registers of your mikroprocessor in your PC are 16bits, it
- means they are able to keep value 0-65535. Nantucket seems
- made good work, because is OPTIMIZING small loops into ONLY
- one 16bit register and only when needed is taking another
- 16bit register. Then it's probably working with 32bits for
- FOR command and is of course slower (must operate with two
- instead of one register).
-
- - Above mentioned register explanations is also explaining
- why T3 and T4 are faster than T2. They are using TWO times
- only 16bit registers and therefore must be faster because
- of saved time. Time used for switching between two FORs
- is very small.
-
- - Still seems better to make 0->9 (0->9999) than T4, because
- it went (only little) bit faster.
-
-
-
- For lot of fan, i did another two tests with WHILE. Both are
- simulating T1 and T2.
-
- TEST11 WHILE loop for 10,000 iteration
- │ local start := 0 ,;
- │ n
- │
- │ ? "test1, WHILE 0->9999"
- │ n = 0
- │ start = seconds()
- │ while n++<10000
- │ ?? n,chr(13)
- │ end
- │ ?
- │ ? " elapsed ",seconds()-start
- CLIPBBS 1-06 Page 12 4 Mar 1991
-
-
- TEST12 WHILE loop for 100,000 iterations
- │ ?
- │ ? "test2, WHILE 0->99999"
- │ n = 0
- │ start = seconds()
- │ while n++<100000
- │ ?? n,chr(13)
- │ end
- │ ?
- │ ? " elapsed ",seconds()-start
-
-
- And now we can give FINAL table connected with previous one.
-
- │ T1 │ T2 │ T3 │ T4
- ────────┼───────────────┼───────────────┼───────────────┼──────────
- result│ 19.93 │ 213.55 │ 199.82 │ 200.31
- theory│ │ 199.93 │ 199.93 │ 199.93
- ────────┼───────────────┼───────────────┼───────────────┼──────────
- diff │ │ 13.62 │- 0.11 │ 0.38
- ────────┴───────────────┴───────────────┴───────────────┴──────────
- │ T11 │ T12
- ────────┼───────────────┼────────────────
- result│ 19.94 │ 213.33
- ────────┴───────────────┴────────────────
-
- In long run (T12) seems WHILE loop a bit faster. Interesting again.
- In normal run (with 16bit counting) it's bit slower, or the same
- speed as FOR loop.
-
- .DD.
-
- -----------------------------------------------------------------------------
- CLIPBBS 1-06 Page 13 4 Mar 1991
-
-
- WHICH packing/unpacking program to choose???????
-
-
- Maybe you know, there exists war called Archivers War. Everyone is
- trying to explain why one archiver is better than other. My small
- addition to this "WAR" is only pure view to times and sizes created
- with using of several kind of archive programs.
-
- First, i took a database of size about 1MB because it can be very
- interesting for us, Clipper programmers.
-
- Files ORDER.DBF size 1121395 bytes
-
- ┌──────────┬────────┬───────┬────────────┬────────┬────────────────┐
- │Archivers │ Make │Restore│ Final Size │ Percent│ Comment │
- │ │ time │ time │ │ │ │
- ├──────────┼────────┼───────┼────────────┼────────┼────────────────┤
- │ZIP1.10 │ 4.78 │ 0.13 │ 119,038 │ 10.61 │ │
- │ARJ2.20 │ 1.08 │ 0.27 │ 106,473 │ 9.49 │ (no options) │
- │ARJ2.20 │ 1.01 │ │ 106,730 │ 9.51 │ -m1 │
- │ARJ2.20 │ 0.88 │ │ 110,324 │ 9.83 │ -m2 │
- │ARJ2.20 │ 0.62 │ │ 114,288 │ 10.19 │ -m3 │
- │ARJ2.20 │ 0.48 │ 0.30 │ 142,626 │ 12.71 │ -m4 │
- │ARJ2.20 │ 4.35 │ 0.23 │ 101,028 │ 9.00 │ -jm │
- │ARJ2.20 │ 1.08 │ │ 106,202 │ 9.47 │ -jh65500 │
- │PAK2.51 │ 0.90 │ 0.30 │ 134,845 │ 12.02 │ │
- │PKPAK3.61 │ 0.22 │ 0.20 │ 123,691 │ 11.03 │ │
- │LHA2.12 │ 1.56 │ 0.22 │ 108,286 │ 9.65 │ │
- └──────────┴────────┴───────┴────────────┴────────┴────────────────┘
-
-
- And then, i took RTLINK.EXE (everybody has this 300KBs big monster)
- and runned again the same compressions.
-
- Files RTLINK.EXE size 354701 bytes
-
- ┌──────────┬────────┬───────┬────────────┬────────┬────────────────┐
- │Archivers │ Make │Restore│ Final Size │ Percent│ Comment │
- │ │ time │ time │ │ │ │
- ├──────────┼────────┼───────┼────────────┼────────┼────────────────┤
- │ZIP1.10 │ 0.47 │ 0.08 │ 179,045 │ 50.47 │ │
- │ARJ2.20 │ 0.63 │ 0.18 │ 166,526 │ 46.94 │ -m1 and no opt.│
- │ARJ2.20 │ 0.48 │ │ 169,080 │ 47.66 │ -m2 │
- │ARJ2.20 │ 0.40 │ │ 171,559 │ 48.37 │ -m3 │
- │ARJ2.20 │ 0.28 │ │ 187,824 │ 59.95 │ -m4 │
- │ARJ2.20 │ 0.67 │ │ 163,283 │ 46.03 │ -jm │
- │ARJ2.20 │ 0.63 │ │ 166,509 │ 46.94 │ -jh65500 │
- │PAK2.51 │ 0.50 │ 0.17 │ 176,890 │ 49.87 │ │
- │PKPAK3.61 │ 0.17 │ 0.12 │ 241,809 │ 68.17 │ │
- │LHA2.12 │ 0.60 │ 0.18 │ 170,431 │ 48.05 │ │
- └──────────┴────────┴───────┴────────────┴────────┴────────────────┘
-
-
- And now, we can do some sorts - editor will do this.
-
- Fastest on .DBF T1 points
- CLIPBBS 1-06 Page 14 4 Mar 1991
-
-
- PKPAK3.61 │ 0.22 11
- ARJ2.20 │ 0.48 -m4 10
- ARJ2.20 │ 0.62 -m3 9
- ARJ2.20 │ 0.88 -m2 8
- PAK2.51 │ 0.90 7
- ARJ2.20 │ 1.01 -m1 6
- ARJ2.20 │ 1.08 (no options) 5
- ARJ2.20 │ 1.08 -jh65500 4
- LHA2.12 │ 1.56 3
- ARJ2.20 │ 4.35 -jm 2
- ZIP1.10 │ 4.78 1
-
- Fastest on .EXE T2 points
- PKPAK3.61 │ 0.17 10
- ARJ2.20 │ 0.28 -m4 9
- ARJ2.20 │ 0.40 -m3 8
- ZIP1.10 │ 0.47 7
- ARJ2.20 │ 0.48 -m2 6
- PAK2.51 │ 0.50 5
- LHA2.12 │ 0.60 4
- ARJ2.20 │ 0.63 (no options) 3
- ARJ2.20 │ 0.63 -jh65500 2
- ARJ2.20 │ 0.67 -jm 1
-
- Creating smallest result on .DBF T3 points
- ARJ2.20 │ 101,028 -jm 11
- ARJ2.20 │ 106,202 -jh65500 10
- ARJ2.20 │ 106,473 (no options) 9
- ARJ2.20 │ 106,730 -m1 8
- LHA2.12 │ 108,286 7
- ARJ2.20 │ 110,324 -m2 6
- ARJ2.20 │ 114,288 -m3 5
- ZIP1.10 │ 119,038 4
- PKPAK3.61 │ 123,691 3
- PAK2.51 │ 134,845 2
- ARJ2.20 │ 142,626 -m4 1
-
- Creating smallest result on .EXE T4 points
- ARJ2.20 │ 163,283 -jm 10
- ARJ2.20 │ 166,509 -jh65500 9
- ARJ2.20 │ 166,526 -m1 and no opt. 8
- ARJ2.20 │ 169,080 -m2 7
- LHA2.12 │ 170,431 6
- ARJ2.20 │ 171,559 -m3 5
- PAK2.51 │ 176,890 4
- ZIP1.10 │ 179,045 3
- ARJ2.20 │ 187,824 -m4 2
- PKPAK3.61 │ 241,809 1
-
- POINT scales (first way of view results):
-
- Archiver │ switches │ T1 T2 T3 T4 ║ SUM
- ──────────┼────────────────┼────────────────╫───────
- ARJ2.20 │ -m3 │ 9 8 5 5 ║ 27
- ARJ2.20 │ -m2 │ 8 6 6 7 ║ 27
- PKPAK3.61 │ │ 11 10 3 1 ║ 25
- CLIPBBS 1-06 Page 15 4 Mar 1991
-
-
- ARJ2.20 │ -m1 │ 6 3 8 8 ║ 25
- ARJ2.20 │ (no options)│ 5 3 9 8 ║ 25
- ARJ2.20 │ -jh65500 │ 4 2 10 9 ║ 25
- ARJ2.20 │ -jm │ 2 1 11 10 ║ 24
- ARJ2.20 │ -m4 │ 10 9 1 2 ║ 22
- LHA2.12 │ │ 3 4 7 6 ║ 20
- PAK2.51 │ │ 7 5 2 4 ║ 18
- ZIP1.10 │ │ 1 7 4 3 ║ 15
-
- This first way of viewing result is giving very funny result,
- it's moving PKZIP at LATEST place because of BIG slownes on
- .DBF files and still worse results of compression than most
- from ARJ methods. Shocking is place of PKPAK3.161 on third
- place because if you will look back, then it's giving most
- worse result of size of result archives, but it's fastest from
- all arhives tested (in MAKING because extracting is not so much
- interesting in this competition).
-
- LOGICAL SCALES (second way of viewing results)
-
- Logical way of looking to results is very simple. PKPAK is not
- good for use because it's producing worse results of
- compressing. Logically i will then want forget about nice times
- of packing (actually, they aren't so much different, because
- machine used for testing was only 286/16Mhz LAPTOP).
-
- Then personal/logical scale is:
-
- ARJ (dependent from switches)
- LHA
- ZIP
- all others ready for drop out
-
- .DD.
-
- -----------------------------------------------------------------------------
- CLIPBBS 1-06 Page 16 4 Mar 1991
-
-
- Will Clipper expand to graphics environment?
- alias
- Theoretical article
- about
- FUTURE OF CLIPPER and NANTUCKET :-)
-
-
-
- What's a Clipper at this moment? I'm sure about one thing, at this
- moment it's character based compiler with many difficulities of
- implementing it inside of graphics based environment. With this is
- connected also question when we will see a Clipper for Window....
-
- Clipper needs great change to be able fulfill all needs for
- graphically oriented application of this time. Windows and any
- graphics based environment is fixed to fact, that application or
- compiler used for creating or programs are enough fast in moment of
- displaying. If not, user is getting complete nice system with not
- nice background of slow speed.
-
- Way of clippering at this moment is single process task. Windows is
- event driven system with many facilities of multitasking system,
- including DDE (dynamic data exchange) system.
-
- Nantucket then has two ways to choose:
-
- - slowly adapt Clipper to new environment with producting
- several changed versions until it will fit into needs of
- Windows programming
-
- - drastically change Clipper to something different and
- incompatible in many cases with original xBASE language ideas.
-
- Problem of second alternative is, that it will leave many programmers
- in "old" fashioned Clipper which can come into dead end. Will not be
- changed and upgraded because will be here new "windows Clipper" with
- main interest of Nantucket (passing perfect inside of WINDOWS hysteria
- coming into world). In this drasctic case will come something like is
- coming in case of S87 -> 5.0x jump. Many old programmers have problems
- to recognize significant changes and additions of new Clipper and are
- not able to use it in all directions. But it's still very small and non
- problematic at all. What can come in case of Windows Clipper will be
- creating of new compiler. In case of Nantucket which seems to jumping
- from left to right with difficulties to maintain correctly and enough
- fast world market it can mean only one. If step to create Windows
- Clipper will come into reality, Nantucket will have to drop idea of
- Clipper in old fashion and create new language, or replace completely
- philosophy of market.
-
- Of course is here possibility to follow first slow way, which can be
- more easy for Nantucket, but it can only mean loosing of Windows market
- whcih is coming to be bigger and bigger and probably loose head with
- competition with Borland (which had always better market politic than
- Nantucket, at least in other continents than America.)
-
- From windows Clipper and windows market let make step out to take a
- CLIPBBS 1-06 Page 17 4 Mar 1991
-
-
- look to actual state of Clipper.
-
- First, i have to say, that it's mine personal view and i'm living in
- EUROPE and not in U.S. where will probably everything looks different
- and probably much better.
-
- Nantucket, producing one from most complex xBASE compatible programming
- systems Clipper made a big step with not enough saved back. Clipper 5.0
- was a crash of many possible customers and dealers because was
- unbelievable buggy. Game with dates of releasing 5.01 (which actually
- should be 5.1 because it's not only bugfix) and final decision NEVER
- telling any date, NEVER telling any bug reports means lost of trust
- from many sides. Lost of money in case of firms were trusting in 5.0
- version can be sometime very big number.
-
- Promises of informing registered users about "something" from acting in
- Nantucket are also left. Only one what i got as registered user was
- Clipper 5.01, but not ANY informations. It's matter of local supporters
- and dealers of course, but then it's also in hands of Nantucket itself.
-
- Is possible also say, that Clipper itself is fulfilled with not filled
- promises. From biggest ones is easy to point out:
- NEVER distributed dBASE index drivers
- NEVER working incremental linking of RTLINK
- NEVER published Clipper Programmers Interface
- NEVER published Replaceable Database Drivers information,
- nor any existing drivers
- STILL problematic use of Clipper programs in small
- memory of PCs
-
- Still repeating stories with bugs (so called ANOMALIES by Nantucket)
- which are invented by many parties, but for sure not Nantucket is also
- not giving good image to Clipper. Especially if some problems are
- staying permanently from version to version which should be a bugfix.
-
- For European users is GOOD technical support of Nantucket something as
- midnight dream. FAXES or telephones to Nantucket offices are mostly
- unaswered or without ANY professional answer when they are little bit
- difficulty than reading of standard manuals. Possibility to go to
- COMPUSERVE is in Europe very hard and when, then is very expensive.
- Therefore putting attention into Compuserve from side of Nantucket is
- maybe good for U.S., but not for any other parts of world. Very good
- idea of setting up Nantucket Bulletin Board in England is slowly going
- to nowhere because staff of Nantucket is not able to decide WHO and HOW
- OFTEN has to work on this Bulletin Board and Clipper World (that's name
- of this BBS) is dying and staying on dead point.
-
- With all this oscillating background will be very difficult to come
- into professional WINDOWS market. Especially because will be needed
- probably to get second, drastic way.
-
- .DD.
-
- -----------------------------------------------------------------------------
- CLIPBBS 1-06 Page 18 4 Mar 1991
-
-
- =============================================================================
- SOFTWARE
- =============================================================================
-
-
- TIPS&TRICKS - how to found largest string in array
-
- In some of mine function for displaying MENU on screen (generic function)
- was coming a need to count SIZE of window for MENU, because text of every
- field can come in different length.
-
- For this sample, we have to say:
-
- INPU is aMenu - array of texts for MENU function. Something like:
-
- aMenu := {"First","Second","Third","Latest one"}
-
- And then, it's simple to use aeval() function for get what we need.
-
- local nMaxLen := 0
- aeval(aMenu, {|n| nMaxLen:=max(len(xx),nMaxLen)} )
-
- And that's all. Some explanations:
-
- aeval(aMenu, {|n| nMaxLen:=max(len(n) ,nMaxLen)} )
- │ │ └──────┬───────┘
- │ │ └── getting maximal from
- │ │ two values and assigning
- │ │ it as new maximal length
- │ └──────── It's needed for aeval() function, every
- │ time it's getting value of one portion of
- │ array
- └────── aeval() function is scanning WHOLE array, field
- by field and is using codeblock defined as second
- parameter
-
- -----------------------------------------------------------------------------
-
-
- DANIEL.LIB - NEW version of DANIEL.RMK
-
- After getting NANFOR.LIB got inspired with their .RMK file and made totally
- new one for DANIEL.LIB. Old one is of course working still, but this one is
- far better. Feel free to get it as inspiration also, because it's nice
- piece of easy to change .RMK file.
-
- I'm absolutely sure, that using of RMAKE is someting that is staying at
- lowest level of interest to upgrade in knowledges and in praxis in most of
- programmers minds. Mine opinion is different and sometime i'm getting mad
- to make some upgrades of my using of .RMK files. This is one from them.
-
- <----------------------------------FILE BEGINS HERE------------------------>
-
- /***************************************************************************
- * $Author$
- * $Date$
- CLIPBBS 1-06 Page 19 4 Mar 1991
-
-
- * $Revision$
- * $RCSfile$
- * $Source$
- * $State$
- * $Locker$
- *
- * $Log$
- *
- ***************************************************************************/
-
-
- // ------------------------------------------------------------------------
- // PATH macros for compiling and/or linking. They MUST be set correctly
- // ------------------------------------------------------------------------
-
- l = \LIB
- o = \SOURCE\DANIEL\OBJ
- s = \SOURCE\DANIEL
- c5 = C:\CL5\BIN
- tc = C:\TC\BIN
- mc = C:\MSC\BIN
- ma = C:\MASM
- ta = C:\TASM
- ex = \SOURCE\DANIEL
-
-
- // ------------------------------------------------------------------------
- // Killing working giles used for manipulation or checkings
- // ------------------------------------------------------------------------
-
- wrk = DANIEL.RSP
-
- !iffile $(s)\$(wrk)
- #! del $(s)\$(wrk)
- !endif
-
- // ------------------------------------------------------------------------
- // Now some internal definition dependent from DEFs from outside
- // ------------------------------------------------------------------------
-
- // DEBUG is defined in case of request for DEBUGGING capable version
- !ifdef DEBUG
- SW = /W/N/M/B
- SW1 = /DDEBUG
- !stdout "DANIEL.RMK - DEBUGGER version generated"
- !else
- SW = /W/N/M/L
- !stdout "DANIEL.RMK - NOTDEBUG version generated"
- !endif
-
- // ------------------------------------------------------------------------
- // And some defintions which are changing internal parameters
- // ------------------------------------------------------------------------
-
- PLL = /PLL:FULLBASE
-
- CLIPBBS 1-06 Page 20 4 Mar 1991
-
-
- // ------------------------------------------------------------------------
- // apply above defined paths into internal RMAKE defintions for DEFAULTS
- // default will be used when will not be specified directly. Can save some
- // time and work with filling all informations
- // ------------------------------------------------------------------------
-
- makepath[.OBJ] := $(o)
- makepath[.PRG] := $(s)
- makepath[.EXE] := $(ex)
- makepath[.LIB] := $(l)
- makepath[.CH] := $(s)
- makepath[.INC] := $(s)
- makepath[.C] := $(s)
-
-
- // ------------------------------------------------------------------------
- // inference rules for TC files
- // WARNING $(tc)... TWO lines are actually ONE line. For space in magazine
- // was divided in two. BEFORE USING PUT BACK!!!!!!
- // ------------------------------------------------------------------------
- .c.obj:
- $(tc)\TCC -I\TC\INCLUDE -L\TC\LIB -C -d -ml -wmlt -K -G -O
- -Z -k- -c -o$(o)\$* $(s)\$*.C
- echo -+$(o)\$* & >> $(s)\$(wrk)
-
- // ------------------------------------------------------------------------
- // inference rules for .PRG files
- // ------------------------------------------------------------------------
- .prg.obj:
- $(c5)\clipper.exe $(s)\$* $(sw) $(sw1) /o$(o)\$*
- echo -+$(o)\$* & >> $(s)\$(wrk)
-
-
- // ------------------------------------------------------------------------
- // inference rules for library from RSP
- // ------------------------------------------------------------------------
- .RSP.LIB:
- echo ,$(l)\DANIEL.LST; >> $(s)\$(wrk)
- if not exist $(l)\DANIEL.LIB LIB $(l)\DANIEL.LIB
- LIB.EXE $(l)\DANIEL.LIB @$(s)\$(wrk)
- DEL $(l)\DANIEL.BAK
-
- // ------------------------------------------------------------------------
- // check existency of CLIPPER.EXE and then dependece of CLIPPER files
- // ------------------------------------------------------------------------
-
- !iffile $(c5)\CLIPPER.EXE
-
- 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
-
- CLIPBBS 1-06 Page 21 4 Mar 1991
-
-
- !else
- // clipper.exe doesn't exit
- !stderr "DANIEL.RMK error: CLIPPER.EXE file not found...."
- !endif
-
- // ------------------------------------------------------------------------
- // check existency of TCC.EXE and then dependece of C files
- // ------------------------------------------------------------------------
-
- !iffile $(tc)\TCC.EXE
-
- cleanup.obj : cleanup.c
- faxlog.obj : faxlog.c
- isprinte.obj: isprinte.c
- screen.obj : screen.c
- wptext.obj : wptext.c
- wputil.obj : wputil.c
-
- !else
- // TCC.EXE doesn't exist
- !stderr "DANIEL.RMK error: TCC.EXE file not found....."
- !endif
-
- // ------------------------------------------------------------------------
- // final dependence of library
- // ------------------------------------------------------------------------
-
- DANIEL.LIB : $(wrk)
-
-
- <------------------------------END OF FILE-------------------------------->
-
- .DD.
-
- -----------------------------------------------------------------------------
- CLIPBBS 1-06 Page 22 4 Mar 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
-
-
-
- -----------------------------------------------------------------------------
-
-
- Clipper Debugger anomalies
-
- 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
- CLIPBBS 1-06 Page 23 4 Mar 1991
-
-
- 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
- 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 here 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
- CLIPBBS 1-06 Page 24 4 Mar 1991
-
-
- condition.
-
- .DD.
-
- -----------------------------------------------------------------------------
-
-
- 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.
-
- .DD.
-
- -----------------------------------------------------------------------------
-
-
- New RTLINK version, INCREMENTAL LINKING
-
- Another expectation which i had when new Clipper 5.01 was coming -
- 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.
-
- 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.
-
- CLIPBBS 1-06 Page 25 4 Mar 1991
-
-
- 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.....
-
- .DD.
-
- -----------------------------------------------------------------------------
- CLIPBBS 1-06 Page 26 4 Mar 1991
-
-
- =============================================================================
- ECHODUMP
- =============================================================================
-
-
- CONFERENCE DUMP part (5)
-
- Subj: NTX Structure Prvt: N Read: N
-
- I think Rick Spence's book on Clipper 5.0 has description of
- NTX file structure and others used in the Clipper environment.
-
- Subj: OBJECT VISION Prvt: N Read: N
-
- Borland has released a new toy called "Object Vision".
- Has anyone out there used this product?
- Looks real interesting in the advertisements.
-
- Subj: PKLITE/Blinker? Prvt: N Read: N
-
- very interesting. Had assumed Lite e.a. would not work with overlayed
- programs at all. Do you have any experience using it with Blinker?
-
- Subj: PKLITE/BLINKER? Prvt: N Read: N
-
- I could be wrong, but strictly speaking from my shareware copy of
- the PKLITE program, it advises not to compress overlayed .EXE-s ...
- Having used it on programs not utilizing overlays say about 320K, I
- have reduced sizes down to say about 125-130K ... It's neat . One
- thing one must remember is that there is no reduction in memory used
- size form the original program . Say if it was 450K before, it will
- still be 450K even though it has been compressed. However, I can't state
- what the commercial version is capable of < least not yet > ...
-
- Subj: PKLITE/Blinker? Prvt: N Read: N
-
- I principally use Warplink, with Tlink for short things and
- in development cycles, though Warplink seems to be taking over that as
- well. I have played with Blinker, but I prefer the MSLink-style of
- linker invocation; hence Warplink. I can't say whether Pklite will
- work or not with Blinker, but I heard it will. Apparently, the issue
- has to do with external vs. internal overlays. I believe I saw a
- message thread to that effect either on this Clipper net or one of
- the others. BTW, note that the issue of linker speed is irrelevant
- when using incremental linking. When relinking incrementally the
- link time is one second or so. In a large program with complex
- overlaying done internally Pklite is the longest part of cycle, so
- save it for release versions.
-
- Subj: Randomness Prvt: N Read: N
-
- Is it my imagination or does Clipper not have a random number function?
-
- All I could find in the manual is a program to maipulate the time
- function to simulate a random number generator. If Load-us and the
- ("Out to")-C programs can do it, why can't dBase or Clipper without
- CLIPBBS 1-06 Page 27 4 Mar 1991
-
-
- all the contortionism?
-
- Subj: Randomness Prvt: N Read: N
-
- Standard Clipper just don't have a Random() function. Some add-on libs
- does thou, eg. FUNCky.
-
- -----------------------------------------------------------------------------
- CLIPBBS 1-06 Page 28 4 Mar 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 │
- ├─────────────┼────┼────────────────────────────────────────────────┼──────┤
- │ACH2TB.ARJ │Cln │Convert ACHOICE to TBROWSE │[1-05]│
- │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 │<sorry, forget, will add in next number, hope> │[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]│
- │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]│
- │SYMBOL.ARJ │Cln │Dumper of symbol tables of Summer87 .EXE │[1-03]│
- │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
-
-
- -----------------------------------------------------------------------------
-
-
- Routing-Plan for ClipperNet
-
- Followin text is routing schema of ClipperNet from last friday. Someone
- interested in connecting to ClipperNet, find your nearest RC or NC node
- and ask for information. Someone for downloading files from ClipperNet
- advertised here, find closest BBS, take a look into FIDONET NODELIST
- (all number are FIDONET NODENUMBERS..
-
-
- CLIPBBS 1-06 Page 29 4 Mar 1991
-
-
- CLN-HQ 2:240/100 Clipper WorkShop BBS (Hamburg - FRG)
- RC 24 |
- |
- RC 23 |234/64 TugBoat BBS (Glumsoe - DK)
- | |
- | |231/62 TBSM's Opus (Kolding - DK)
- |
- |240/1 Ramos II (Hannover - FRG)
- NC 240 |240/102 MuM BBS (Hamburg - FRG)
- |240/600 IGEPOS Mailbox System (Lage - FRG)
- |241/2004 NordSee BBS (Leer - FRG)
- | |
- | |241/5302 Terrania City (Bonn - FRG)
- |
- |241/2103 H.C.C. (Hamburg - FRG)
- |
- |241/5609 BLM (Wermelskirchen - FRG)
- | |
- | |241/4008 Stone's Box (Haan - FRG)
- | | |
- | | |241/5603 Funboard (Velbert - FRG)
- | | |
- | | |241/4512 BS-1 (Bad Salzuflen - FRG)
- | | |
- | | |241/4511 MICOS BS (Bad Salzuflen-FRG)
- | | |
- | | |241/4501 Life-Box(Osnabrueck-FRG)
- | |
- | |241/5303 NEPTUN Box (Bonn - FRG)
- | | |
- | | |243/93 Piano-Bar (Urbar - FRG)
- | |
- | |241/5608 Pit's BBS (Wermelskirchen - FRG)
- |
- NC 241 |241/7605 Baden Area (Offenburg - FRG)
- | |
- | |241/7000 Popey-Box (Donaueschingen - FRG)
- |
- |242/47 Dungeon of Despair (Aachen - FRG)
- |
- NC 243 |243/29 Clipper Ship (Nieder Olm - FRG)
- | |
- | |247/31 Tritech BBS (Seelzen - FRG)
- | | |
- | | |247/9 Wildbox (Heidelberg - FRG)
- | | |
- | | |247/1 Schawott-Host (Brensbach - FRG)
- | |
- | |249/29 Guenter's Mailbox (Mainz - FRG)
- |
- NC 245 |245/60 Bonny's (Dortmund - FRG)
- | |
- | |241/4152 Quick!-Box (Meerbusch - FRG)
- | | |
- | | |242/92 Skyhigh Mailsystem (Krefeld - FRG)
- | |
- CLIPBBS 1-06 Page 30 4 Mar 1991
-
-
- | |245/9 MANNY'S BBS (Essen - FRG)
- | | |
- | | |245/102 WiInf_BBS (Essen - FRG)
- | |
- | |245/36 SoftStream (Dortmund - FRG)
- |
- NC 246 |246/15 MagicBox Munich (Muenchen - FRG)
- | |
- | |241/8007 Merlin BBS (Nuernberg - FRG)
- | |246/5 PERI-BBS (Kassel - FRG)
- | |246/10 Beta-System (Muenchen - FRG)
- | |246/26 AGS-Box (Leutkirch - FRG)
- | |246/32 Aischgrund Mailboxsystem (Gerhardshofen-FRG)
- | |
- | |246/12 AlphaSoft Network (Fuerth/Stadeln - FRG)
- |
- RC 28 |285/610 Lobster BBS (Schiedam - NL)
- | |
- | |285/402 AllTime Board (Koudekerke - NL)
- | |285/608 NETCONSULT BBS (Rotterdam - NL)
- | |500/223 HEKOM BBS (Harmelen - NL)
- | | |
- | | |283/314 KISS Software Support (Almelo - NL)
- | |
- | |500/236 Touch-One (Den Haag - NL)
- | |512/43 Flash BBS (Utrecht - NL)
- |
- RC 29 |296/10 BBS D.C.V.V. (Maaseik - B)
- | |
- RC 20 | |201/254 Clipper(Sweden) BBS (Vallingby - S)
- | | |
- | | |200/306 Lanthandelen (Kalmar - S)
- | |
- | |294/5 CIS BBS (Antwerpen - B)
- |
- RC 30 |302/801 Gepard's Oracle (Zuerich - CH)
- | |
- | |302/807 SENECA (Zuerich - CH)
- | | |
- | | |302/804 Triton (Zuerich - CH)
- | |
- RC 32 | |321/100 Cyrielle (Montargis - F)
- | |
- RC 33 | |331/110 DB-Line (Biandronno - I)
- |
- RC 31 |313/9 EuroSoft Net 2 (Wien - A)
- |
- RC 34 |341/25 Clipper U.C.P. (Majadahonda - E)
- |
- |341/8 AlpaSoft (Madrid - E)
- |341/14 Rafa_STD-1 (Madrid - E)
-
- -----------------------------------------------------------------------------
-
-
- CLN - SOUND.ARJ
- CLIPBBS 1-06 Page 31 4 Mar 1991
-
-
- File Name: SOUND.ARJ
- Other Names:
-
- File Size: 2,336 bytes
- File Contents:
- SOUND.CH 1447
- SOUND.TXT 1762
- SOUND.PRG 411
-
- Sound function using TONE() function for playing a melody. Point of this
- function is, that it's getting parameter as array of arrays contains in
- every field tone and length of piece of melody.
-
- In SOUND.CH file are defined some particular notes and two sample sounds
- for your programs. It's also nice way how to implement note names in
- clipper programs anyway.
-
- .DD.
-
- -----------------------------------------------------------------------------
-
-
- CLN - TBWHL4.ARJ
-
- File Name: TBWHL4.ARJ
- Other Names:
-
- File Size: 5,164 bytes
- File Contents:
- NAMES.DBF 1458
- READ.ME 1317
- NAMES.NTX 2048
- TBWHILE.PRG 7041
- MAKEIT.BAT 49
-
- COMPUSERVER coming well commented function for WHILE browsing a database
- with Tbrowse objects. It's good as example how to handle own cases, because
- it contains complete sample with included database (.DBF).
-
- .DD.
-
- -----------------------------------------------------------------------------
-
-
- ClipNet - NFDESC2.ARJ
-
- File Name: NFDESC2.ARJ
- Other Names:
-
- File Size: 5,129 bytes
- File Contents:
- NFDESC.TXT 12451
-
- NANFORUM library is one from greatest Clipper projects which i ever seen.
- It's great idea of sharing user supplied, test and used sources into one
- big library. It's managed by some CompuServe users to final state of
- CLIPBBS 1-06 Page 32 4 Mar 1991
-
-
- complete library with .NG documentation.
-
- First day when i looked into NANFORUM library i decided immediately take it
- inside of mine used libraries set. I can only reccomend to do this for you
- also. If want to take a look to list of functions in this library before
- taking over of complete needed library files, get this file, because .TXT
- inside is complete list of functions with descriptions.
-
- See also articles about NANFORUM in "SOFTWARE" section of magazine.
-
- .DD.
-
- -----------------------------------------------------------------------------
-
-
- ClipNet - NFLIB2.ARJ
-
- File Name: NFLIB2.ARJ
- Other Names:
-
- File Size: 167,730 bytes
- File Contents:
- NANFOR.LIB 197161
- FTINT86.CH 1250
- FTMENUTO.CH 2329
- FT_ACH2T.CH 4572
- NANFOR.NG 333548
-
- THIS IS MAIN FILE NEEDED for NanForum library. Complete documenation (.NG
- file) and complete 5.01 library (NANFOR.LIB) with needed definition files
- (.CH files) are included. Don't worry about size, it's great and needed for
- everybody to save LOT of programming.
-
- See articles about NANFOR.LIB in this magazine!
-
- .DD.
-
- -----------------------------------------------------------------------------
-
-
- ClipNet - NFSRC2.ARJ
-
- File Name: NFSRC2.ARJ
- Other Names:
-
- File Size: 308,973
- File Contents:
- ADAPTER.ASM 3428 BYTENOT.PRG 2531
- AINT86.ASM 4453 BYTEOR.PRG 2659
- CHDIR.ASM 2021 BYTEXOR.PRG 2788
- DEFAULT.ASM 4535 CALENDAR.PRG 7395
- DIRFUNC.ASM 2971 CLRSEL.PRG 24956
- DISPA.ASM 4524 CNTRYSET.PRG 2403
- ENDCAP.ASM 6266 COM34.PRG 2687
- FLOPTST.ASM 9955 D2E.PRG 2453
- FLUSHCAP.ASM 4195 DATECNFG.PRG 11619
- CLIPBBS 1-06 Page 33 4 Mar 1991
-
-
- HANDCNT.ASM 6372 DAYOFYR.PRG 3939
- INP.ASM 3427 DAYTOBOW.PRG 2403
- ISPRINT.ASM 8548 DECTOBIN.PRG 1763
- KSPEED.ASM 6627 DFILE.PRG 6574
- LOGOUT.ASM 2719 DIR2DBF.PRG 4195
- MKDIR.ASM 2149 DISKFUNC.PRG 3349
- NOVDMP2.ASM 2844 DISPMSG.PRG 8113
- NOVPURGE.ASM 2219 DOSVER.PRG 2275
- NWTTS1.ASM 3555 E2D.PRG 1749
- NWTTS2.ASM 2788 EASTER.PRG 3683
- NWTTS3.ASM 3044 ELAPMIL.PRG 1635
- NWTTS4.ASM 2660 ELAPSED.PRG 4579
- NWTTS5.ASM 2532 ELTIME.PRG 2275
- ORIGIN.ASM 3299 EXIST.PRG 1837
- OUTP.ASM 4196 FIELD.PRG 11491
- PUTKEY.ASM 10595 FINDITH.PRG 3427
- REBOOT.ASM 2660 FIRSTDAY.PRG 1763
- RESTATT.ASM 6600 GCD.PRG 3043
- RMDIR.ASM 2149 HEX2DEC.PRG 1772
- SAVEATT.ASM 7908 INVCLR.PRG 2543
- SHADOW.ASM 9060 ISBIT.PRG 2787
- TMENU.ASM 38602 ISBITON.PRG 2019
- _WHEREIS.ASM 23526 ISSHARE.PRG 2403
- ALT.C 1507 LASTDAY.PRG 1891
- CAPLOCK.C 2019 LINKED.PRG 4963
- CINT86.C 8552 MADD.PRG 4451
- CTRL.C 1507 MENU1.PRG 20198
- DISPC.C 27601 MENUTO.PRG 12522
- FTTEXT.C 16982 METAPH.PRG 14691
- GETENVRN.C 5219 MILTIME.PRG 7523
- NUMLOCK.C 2275 MIN2DHM.PRG 1636
- PEEK.C 2147 MONTH.PRG 4195
- POKE.C 2275 MOUSE1.PRG 23032
- PROPER.C 3299 NETPV.PRG 3043
- PRTSCR.C 2019 NOOCCUR.PRG 2531
- SHIFT.C 1507 NTOW.PRG 4164
- STOD.C 1507 NWLSTAT.PRG 2219
- VIDEO1.C 11049 NWSEM.PRG 16077
- FTINT86.CH 1250 NWUID.PRG 3811
- FTMENUTO.CH 2329 PAGE.PRG 2531
- FT_ACH2T.CH 4572 PCHR.PRG 8435
- CINT86.H 1174 PEGS.PRG 8675
- DFKEY.H 5117 PENDING.PRG 4835
- FTTEXT.H 1410 PICKDAY.PRG 1763
- TMENU.INC 3746 POPADDER.PRG 45352
- MINTER.MAC 9931 PRTESC.PRG 2915
- AADING.PRG 4772 QTR.PRG 3939
- AAVG.PRG 2510 RAND1.PRG 2275
- ACCTADJ.PRG 3427 RESTSETS.PRG 1891
- ACCTMNTH.PRG 4579 ROUND.PRG 7267
- ACCTQTR.PRG 4579 SAVEARR.PRG 6774
- ACCTWEEK.PRG 3811 SAVESETS.PRG 2275
- ACCTYEAR.PRG 3299 SCANCODE.PRG 3171
- ACH2TB.PRG 27161 SCREGION.PRG 8705
- ADESSORT.PRG 2636 SETDATE.PRG 2787
- AEMAXLEN.PRG 3811 SETTIME.PRG 2915
- CLIPBBS 1-06 Page 34 4 Mar 1991
-
-
- AEMINLEN.PRG 3683 SINKEY.PRG 2787
- AMEDIAN.PRG 3913 SQZN.PRG 4030
- ANOMATCH.PRG 3127 SYSMEM.PRG 1930
- ANY2ANY.PRG 6698 TBWHILE.PRG 14947
- AREDIT.PRG 10932 TEMPFILE.PRG 3427
- ASUM.PRG 2769 VERTMENU.PRG 6207
- AT2.PRG 3555 VIDCUR.PRG 3965
- ATPROMPT.PRG 17385 VIDMODE.PRG 3043
- BITCLR.PRG 2915 WDA.PRG 2659
- BITSET.PRG 2787 WEEK.PRG 3939
- BITTEST.PRG 7779 WHEREIS.PRG 3939
- BLINK.PRG 2403 WORKDAYS.PRG 2787
- BYT2BIT.PRG 2609 WOY.PRG 5987
- BYT2HEX.PRG 2459 XBOX.PRG 8599
- BYTEAND.PRG 2787 YEAR.PRG 3171
- BYTENEG.PRG 2147 NANFOR.RMK 18351
-
- COMPLETE (real) complete sources of NANFORUM library available for everyone
- who wants to make ANY changes in sources. They are really free for sources.
-
- This files is absolutely no needed for to have NANFORUM library working
- (you need only file with .LIB !!), therefore take it only when you need it,
- or just want it.
-
- Finaly i was wondering if include complete list of files inside archive,
- but i found it useful for some cases.
-
- .DD.
-
- -----------------------------------------------------------------------------
-
-
- ClipperNet - ACCESS.ARJ
-
- File Name: ACCESS.ARJ
- Other Names:
-
- File Size: 411
- File Contents:
- ACCESS.PRG 1198
-
-
- Source of TEST program for speed of Clipper. Very easy and showing only
- time needed for accessing variables in FOR cycles.
-
- .DD.
-
- -----------------------------------------------------------------------------
-
-
- ClipperNet - ACHOO2.ARJ
-
- File Name: ACHOO2.ARJ
- Other Names:
-
- File Size: 6,851 bytes
- CLIPBBS 1-06 Page 35 4 Mar 1991
-
-
- File Contents:
- ACHOOS.PRG 21976
-
- ACHOICE "replacement" allowing combine achoice() features with direct GET,
- searching for whole menu line (not only one letter)...
-
- .DD.
-
- -----------------------------------------------------------------------------
- CLIPBBS 1-06 Page 36 4 Mar 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-06 Page 37 4 Mar 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
-
- -----------------------------------------------------------------------------
-