氨北北北北北北北北北北北北北北北北北北北北北北北北北北北� 鞍北卑揶揶卑揶揶北北稗揶薇卑揶揶揶卑揶揶揶卑揶揶揶北稗揶薇北 鞍北稗薨稗薇稗薇北北卑揶北北稗薨稗薇稗薨稗薇稗薨稗薨揶鞍揶北 鞍卑揶北鞍北稗薇北北卑揶北北稗薇稗薇稗薇稗薇稗薇稗薨揶薇北北 鞍卑揶北北北稗薇北北卑揶北北稗揶揶北稗揶揶北稗揶揶北稗揶北北 鞍卑揶北北北稗薇卑薇卑揶北北稗薨氨北稗薨稗薇稗薨稗薇北稗揶北 鞍卑稗薇鞭薇稗薇稗薇卑揶北北稗薇北北稗薇稗薇稗薇稗薨揶鞍揶北 鞍北鞍揶揶卑揶揶揶薇稗揶薇卑揶揶北卑揶揶揶卑揶揶揶北稗揶薇北 鞍北卑鞍氨卑鞍鞍鞍北鞍鞍北卑鞍氨北卑鞍鞍氨卑鞍鞍氨北鞍鞍北北 鞍氨北北北北北北北北北北北北北北北北北北北北北北北北北北北� 鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍鞍 Volume 2, Number 7 28 February 1992 (c) Daniel Do噀kal, All Rights Reserved The BBS Clipper magazine, published SEMIWEEKLY, every FRIDAY 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 NELSON MANDELA FREE! Table of Contents 1. ARTICLES .............................................................. 1 Hitch Hikers Guide To The Net ......................................... 1 Starters corner (3) ................................................... 5 Nantucket Code Guidelines ............................................. 10 2. ANOMALIES ............................................................. 13 ANOMALIES reports and commets ......................................... 13 3. CLIPPER NET ........................................................... 14 Index of described files in Clipper BBS Magazine ...................... 14 4. CLIPBBS ............................................................... 16 CLIPBBS distribution .................................................. 16 CLIPBBS, how to write an article!!! ................................... 18 - - - - - CLIPBBS 2-07 Page 1 28 Feb 1992 ============================================================================== ARTICLES ============================================================================== Hitch Hikers Guide To The Net Episode 3 - The Singularans (Arnold Lint and the crew of the Infinity are trying to decide what to do now that they are being faced by the deadly Singularans.) Xaphod: Oh wow, just when we got past the Flamers, we have to run into the 'Singles'. The Illogical drive won't work this time. Rod: No, and neither will evasive actions. They all talk that way| Gillian: What will we do then? Arnold Lint: I'll tell you . . . we're all going to die. Xaphod: Shut your cake-hole| Martin: I tried to tell you this trip would be a real downer, but would you listen? Rod: Quiet| Xaphod: I guess we should see what they want. (Xaphod switches on the two way video telecommunicator and RadaRange. The face of the Singularan captain appears on the screen. He is a normal human wearing a T-shirt which says: "Have you ever really listened to Manilow?" He is also sporting glow in the dark pants and 10 pounds of silver and gold chains around his neck.) Singularan: Hey, like I'm Dirk Thawtphull. We were cruising by and saw your node. Interested in some meaningful relationships, free from the moral depravity that otherwise infects the net. Xaphod: Well, I kind of like depravity. Rod: Yah, me too. Dirk: Wow, you'd love our S & M encounter group then, fershure| Arnold Lint: Your what? Dirk: S & M encounter group. We get together twice a week and exchange recipes and beatings. Arnold Lint: How could a group like that command such a strong node? Xaphod: Well, the sudden popularity of Jogging induced widespread adoption of the principles of Single-ism. The subsequent rise of the sport CLIPBBS 2-07 Page 2 28 Feb 1992 of 'Joggering' reduced the numbers of Singularans to normal size. It appears that they may be making a come back though. [The "Hitch Hikers Guide to the Net" defines 'Joggering' as a sport originated in Australia to combat the sudden drop in productivity caused by having everybody jogging. Australian champion Bruce Karnage describes the sport: "Well, there is a different way of catching both male and female joggers. If it's a male, you flush him out into the open with cigarette smoke, then chase him down in your 4 x 4 Land Rover. When he's tired, bump him with the fender to stun him momentarily. Then get out and with your driver pick him up by all fours and run him head-first into the side of the truck. If it's a female, bait a likely spot with designer jogging wear and then wait for a flock to arrive. When one becomes interested, sneak up behind her, very quietly. Then when you are about two feet away, and you can see the sun dancing on her richly tanned flesh caressing her well toned figure into a visual symphony of delight, split her skull with a handy two-by-four. It's a lovely sport|" The sport later became known as 'Walkmaning'.] Rod: We were on our way to Netrothea to pick up some ... uh ... fuel, yah that's it. Dirk: Well, we've got plenty of fuel, come on over and we'll let you have it. Xaphod: No, it's OK. Dirk: I insist| (The Singularan ship lets out a pink and purple polka-dot ray that engulfs the Infinity. Arnold Lint and company find themselves in a room on the Singularan ship. It is decorated right out off the floor of a K-Mart. K-Tel's "Feelings" album is playing "You light up my existence" in the background, on the ceiling is a gigantic mirror, and in one corner is a gigantic mood-bean-bag chair.) Gillian: How awful| Martin: Actually, I kind of like it, in a depressing sort of way. Rod: Quiet. Arnold Lint: Where are we. Dirk: You're aboard the Singularan vessel "Sincerity". You will remain here until you learn to develop meaningful relationships over the Net. Meaningful relationships based on honesty, truth, and having nothing to do with physical appearance. Relationships which will grow as you and your partner, or partners, share, or don't share, things you have, or don't have, in common. You will learn how to have every other sentence include the words 'special' or 'meaningful relationship'. Xaphod: If he says "meaningful relationship" once more I'll have to pray to the porcelain buddha. CLIPBBS 2-07 Page 3 28 Feb 1992 Rod: Sickening, isn't it. Dirk: Right, enough of this. Wait here and we'll start programming you for meaningful relationships. (Xaphod bends over a nearby table and vomits, the 12" CRT on his shoulder starts scrolling "Uuuggghhh") Gillian: What did you mean about "programming" us? Dirk: We'll have to make you compatible with the environment and take away all your inhibitions when discussing your personal life on the Net. You'll be subjected to countless sessions watching repeats of "The Dating Game", "The Newlywed Game", and "Celebrity Wife Swapping". And that's only Stage 1| [The "Hitch Hikers Guide to the Net" points out that the three old earth TV shows just mentioned were actually the basis for a huge inter-conglomerate stock monopolizing scheme started by The Phone Company. The questions asked on these shows were actually coded messages issued by The Phone Company to the conglomerates it was working with. These messages told the associated conglomerates about which stocks to buy based on information gained by The Phone Company by listening in on the phones of important companies. The client corporations paid The Phone Company 1 million dollars for each such message. The seemingly idiotic contestants were, more often than not, government agents trying to break The Phone Company's code. Chuck Barris, the originator of the shows, was later found to be a financial genius, rivaled only by Howard Hughes.] Rod: We gotta get put of here| Xaphod: Yah. Rod: You know what really gets Singularans put off? Rudeness and crudeness| Arnold Lint: What? Rod: Rudeness, if we act real crude and rude, they'll beg us to leave| Xaphod: Great, let's try it| (Dirk returns with three gorgeous women and one well built female model android.) Rod: (To the first girl) Wow, look at that pair| Xaphod: (To the second girl) That's a lovely grab| Rod: (To the third girl) OK love, drop 'em| Martin: (To the female android) I wave my private parts toward approximate vector coordinates. Gillian: (To Dirk) Say Dirk, if you get some Saran-Wrap and chicken wire, I'll get the honey and the plunger. CLIPBBS 2-07 Page 4 28 Feb 1992 Dirk: Get out of here you disgusting filthly maladjusted perverts| (The three women and one android exit with great haste. The crew of the Infinity is beamed back to their node.) Dirk: Good riddens. Put on the flip side of "Feelings" and pass the cheese dip. It's their loss, for only we know what true meaningful relationships are. Only we know the feeling of wholeness that comes from showing, or not showing, what one feels, or doesn't feel, with someone special we care about. We aren't hung up on physical things, we are spiritualists. At least, that's what we tell everyone else. Xaphod: Right, now on to Netrothea, nothing can stop us now. ******************** End Of Part 3 ******************** Will the crew of the Infinity reach Netrothea, or will Nothing stop them? For the answers to this, and other useless questions . . . Tune in next time . . . same Net-time . . . same Net-channel. ------------------------------------------------------------------------------ CLIPBBS 2-07 Page 5 28 Feb 1992 Starters corner Paul Ket ======== In this episode we are going to have a look into the space saving business. We ended last episode with a way to store the information which took slightly more space than the first try (Firsttry.dbf). Although the second try only takes more space when there are more than 7 ingredients in the recipe, i guess this will often be the case. A great task ahead to re-organise in a way which takes less space. Second problem which will occure in the long run is the time needed for data-entry. In the way we organised the second try, you have to type each ingredient over and over again. For one -more exotic- ingredient that might not be a bore, but for more common one it sure will. So, modern User Interfaces demand menu's for data-input. This will be the two problems we'll discuss this episode. For those who have lost track of previous episodes: the file-structures used earlier are in an addendum. Problem: Space saving ===================== Below you'll find the second method of organising the information we want to store. In INGRDNT.DBF we store the ingredients in a Character field. Name: Ingrdnt.dbf (2) Name: Secondtry.dbf ====================== ===================== NAME TYPE LENGTH NAME TYPE LENGTH 1 Re_num N 4,0 1 Re_num N 4,0 2 Ingri C 40 2 Name C 40 ---------------------- 3 Descri M 10 TOTAL 44 --------------------- TOTAL 81 A typical list of the contents of INGRDNT.DBF in use will look like this (faked data) >-------- faked listing of INGRDNT.DBF -------------------< RECNO() RE_NUM INGRI ------ ---- ----------------------------------------- 1 1 Cheese, 100 gram 2 1 Eggs, 8 3 2 Cheese 50 gram 4 2 Butter, a little 5 3 Butter, 100 gram 6 3 Bacon, 100 gram ------ ---- ----------------------------------------- >-------- End listing of INGRDNT.DBF -------------------< CLIPBBS 2-07 Page 6 28 Feb 1992 Except in the RECNO() colum, the line below the fieldname gives the space which will be occupied by that field. From this listing we can conclude: - that about 50% of the space reserved for the ingredients isn't used at all. We are storing spaces. Wasting expensive diskspace. - that there might be an infinite number of ingredients, but that we only use a litte part of that number. Solution is to make a seperate file in which we store the ingredient- names. Let's call it the LOOKUP-file. Name: Lookup.dbf (3) =========================== NAME TYPE LENGTH 1 Ing_num N 3,0 2 Ing_nam C 30 --------------------------- TOTAL 33 Done that we have to rearrange the ingredients file. We have to make a connection between the ingredients and the LOOKUP.DBF. This is done with the ING_NUM field. Because we only store the name of the ingredient in LOOKUP, we have to create a new field which holds the amount we need. Name: Ingrdnt.dbf (3) ====================== NAME TYPE LENGTH 1 Re_num N 4,0 2 Ing_num N 3,0 3 Amount C 10,0 ---------------------- TOTAL 17 The recipe-file is not changed. For clearity: let's rename it in THIRDTRY. To make the new situation clear let's make a little diagram: 谀哪哪哪哪口哪哪哪哪目谀哪哪哪哪目 � LOOKUP 吵 INGRDNT 吵 THIRDTRY � 滥哪哪哪哪倮哪哪哪哪馁滥哪哪哪哪馁 \ / \ / \ / \ / 谀哪哪哪哪口哪哪哪哪目 � ING_NUM 吵 REC_NUM � 滥哪哪哪哪倮哪哪哪哪馁 It shows that the tree .DBF-files are linked together by common fields. SECONDTRY and INGRDNT have REC_NUM in common, INGRDNT and LOOKUP have ING_NUM in common. CLIPBBS 2-07 Page 7 28 Feb 1992 How will look our recipe in this new way of organising? Again, the lines show the space which the information is allowed to take. >----------------- Third try listing ---------------< NAME: LOOKUP.DBF ================ Recno Ing_num Ing_nam --- ------------------------------ 1 1 Bread 2 2 Eggs 3 3 Mature cheddar 4 4 Butter 5 5 Garlic 6 6 Red pepper 7 7 Pepper --- ------------------------------ NAME: INGRDNT.DBF ================= Recno Re_num Ing_num Amount ---- --- ---------- 1 1 1 3 slices 2 1 2 5 3 1 3 50 gram 4 1 4 Little pc. 5 1 5 Little 6 1 6 1,5 7 1 7 Little ---- --- ---------- Name: THIRDTRY.DBF ===================== Recno Re_num Name Desc ---- ---------------------------------------- ---------- 1 1 Fried eggs Extra ---- ---------------------------------------- ---------- >----------------- END Third try listing ---------------< We started all this trouble because of space-saving. So let's calculate: File No of record Recordlength Total ============================================ LOOKUP.DBF 7 33 231 INGRDNT.DBF 7 17 119 THIRDTRY.DBF 1 54 54 ============================================ TOTAL 404 Last episode SECONDTRY.dbf used up 389 places. So, it doesn't look like an improvement. This will be true when alomost every recipe uses totally new ingredients. But each time you can refer to a record already in LOOKUP.DBF you'll save space. CLIPBBS 2-07 Page 8 28 Feb 1992 In SECONDTRY each ingredient always took 40 places. In THIRTTRY it will take 33 in LOOKUP and 13 in INGRDNT. An new ingredient will take that 46 places. But an alread entered ingredient only will take 13 in INGRDNT and no extra record in LOOKUP. This saves 27 places in comparison to SECONDTRY.DBF for *one* ingredient. Problem: data-entry =================== A you might guess, this way of organising the information also saves time when entering data. Each ingredient is entered just once. Entering new recipes the contents of LOOKUP are presented as a menu to choose from. In the episode where we will discuss designing the user interface we'll come back to this subject. Next ==== Next episode we take a closer look at our files. There is a little to change to avoid some nasty mistakes. And because the Netherlands have won there first gold medal in the Olympic Winter Games (men's skating, 10,000 meters) i'll be happy to finish this episode and to switch on an other CRT! ------------------ article ends here, addendum starts --------- Gebakken eieren Extra. Fried eggs Extra ====================== ====================== 3 sneetjes brood 3 slices bread 5 eieren 5 eggs 50 gram oude kaas 50 grames mature cheddar klontje boter little butter knoflook garlic paprika red pepper peper pepper Breek de eieren in een beslagkom. Roer ze goed door. Doe de boter in de pan, smelt ze. Doe de geroerde eieren in de pan. Zet het vuur zo laag mogelijk. Doe een deksel op de pan! Laat het langzaam sudderen. Na 3 minuten de kaas op het ei doen. Kruiden naar smaak. Deksel weer op de pan doen. Als de kaas grotendeels gesmolten is is het ei goed. Opdienen op de sneetjes brood. *.*.*.**.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.* CLIPBBS 2-07 Page 9 28 Feb 1992 Name: Firsttry.dbf FIELD TYPE LENGTH 1 Name C 40 2 Ingre1 C 20 3 Ingre2 C 20 4 Ingre3 C 20 5 Ingre4 C 20 6 Ingre5 C 20 7 Ingre6 C 20 8 Ingre7 C 20 9 Ingre8 C 20 10 Descri M 10 ------------------ ** total 210 *.*.*.**.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.* Name: Ingrdnt.dbf (2) Name: Secondtry.dbf ====================== ===================== NAME TYPE LENGTH NAME TYPE LENGTH 1 Re_num N 4,0 1 Re_num N 4,0 2 Ingri C 40 2 Name C 40 ---------------------- 3 Descri M 10 TOTAL 44 --------------------- TOTAL 81 ---------------------------- that's all ----------------------------------- ------------------------------------------------------------------------------ CLIPBBS 2-07 Page 10 28 Feb 1992 Nantucket Code Guidelines 4. Fieldnames 4.1 Capitalize the first letter of fieldnames: @ 10,10 SAY Branch COMMENTS: Prefred way on my side is capitalize fieldnames compltely and also ALWAYS prefix them with ALIAS. Otherwise, it's good idea to capitalize first letter and other have lowercase, because it can make difference immediate from memory variables. They have first letter small. 4.2 Do not use leading underscores: these are used for Clipper internal variable and function names. Underscores should not be used anywhere in the fieldname. Use mixedcase for fieldnames consisting of more than one word: ? TotalSum, NumOfLines COMMENTS: There is really good reason to NOT use underscores as FIRST character of function (variable) names. They are used in INTERNAL symbols of Clipper or in other third party libraries. Second case of using underscores (in names for separating parts) is also good to avoid, there is ALWAYS possibility use mixing of upper and lower case parts for better separating of logical parts. 4.3 Always explicitly reference fieldnames, either by using the FIELD declaration or by preceding the fieldname with the file alias: FIELD CustName OR @ 10,10 SAY CustFile->CustName @ 10,10 SAY CustName COMMENTS: This guideline is again little bit not clear. There is no way how to specify FIELD for the same fieldname, but in TWO different databases. Therefore my guideline of this kind is, ALWAYS specify alias before field name. 5. Memory Variables 5.1 Memory variable names consist of a lowercase data type designator (see section 2), followed by a mixedcase description: cString := "Hello world" COMMENTS: This is important guideline. It's first repeating guideline for specifying first letter (letters) of variable name (given by letter explaining contents of variable) and then just addid name of variable after this spec. Why all of this? Simple, did you ever wondering what command: ? MyHelloNumber CLIPBBS 2-07 Page 11 28 Feb 1992 Will print in reality? Number? String? Logical value. Isn't it easier to use: ? cMyHelloNumber 5.2 Underscores should not be used anywhere in a memory variable name. Use mixedcase for names consisting of more than one word: nTotalCost := Invoices->Cost COMMENTS: This is little redundant repeat of guideline 4.2... 5.3 Never give memory variables the same names as database fields. COMMENTS: This is also very good to keep in mind. Mistake like this can end in total mixup of your program data and sometime with very strange overwritings of database files with strange data. Expansion of this guideline is: Memory variables keeping data of database fields are getting name constructed from field name and prefix describing kind of data. It means for example: cADDRNR is connected with ADDRNR field cAddrNr can be also used 6. Functions and Procedures 6.1 Clipper function names are uppercase, followed by parentheses: You can create user-friendly menus with ACHOICE(). COMMENTS: Unfortunately i have exactly different rule for this. All NON user-defined function and procedure (who needs procedure anyway) names are LOWER case complete and only. When taking logically this rule is not good when exist rule of writing keywords and commands in UPPER CASE, then write functions also in UPPER is making program with main names in upper. Result is unreadable program. 6.2 User-defined function and procedure names begin with an uppercase letter, followed by lowercase letters as appropriate: ? Center("Please select a menu option", 80) COMMENTS: 6.1 and 6.2 together are creating one result which is good. Someone reading your program can decide immediate what functions are coming as internals of CLipper and what are coming from own program or third party libraries. 6.3 Do not use leading underscores: these are used for Clipper internal variable and function names. Underscores should not be used anywhere in a function or procedure name. Use mixedcase for names consisting of more than one word: YesOrNo("Do you wish to continue?", 10, 10) CLIPBBS 2-07 Page 12 28 Feb 1992 COMMENTS: It's repeat of already TWO times used rule... 6.4 When parameters are specified as part of a function declaration, a space is placed inside each parenthesis: FUNCTION SayInBox( cMessage, cColor ) COMMENTS: This guideline can help better readibility of program, but can also have unwanted side effect. When function has TOO many parameters, FUNCTION line is coming be TOO long... 6.5 The RETURN statement at the end of a function or procedure is indented 1 tab (see example in section 15). COMMENTS: Exactly OPPOSITE is mine. RETURN statement belonging to any FUNCTION statement is at THE same collumn as connected FUNCTION statement. There is no reason at all to pick one TAB right for RETURN statement. 6.6 If a subroutine does not return a value, it should be declared as a PROCEDURE. A routine that returns a value should be declared as a function. (Note that calls to both functions and procedures can occur in the middle of a line with arguments listed in parentheses.) COMMENTS: I would like to know what is exact difference between FUNCTION and PROCEDURE definition in Clipper. Nantucket as usual forgot to explain this in documentation because docs are decribing those two as equal. When they are really equal, there is no reason to use PROCEDURE, because everything can be FUNCTION (as is it in all of my programs). PROCEDURE word or any equivalent does not exist in "C" languages and nobody is missing it... 6.7 The return value of a function is enclosed in parentheses: RETURN (cRetValue) COMMENTS: Absolutely agree. Either i'm using RETURN (NIL) when function is returning nothing. This way of using RETURN statement can also eliminate some mistakes or misunderstandings of expressions in RETURN statement. 6.8 Wherever possible, variables referenced by a function or procedure should be passed as parameters. COMMENTS: This is absolutely important guideline. I have lot of work with some old programs using PRIVATE variables in many places where function needs some variables available from under_function . Clipper is missing one possibility and it's declaration of function INSIDE of function as it is normal in Pascal. Nantucket is trying to give a help in way of passing ALL variables needed in subfunction directly as parameters. This case is clever for eliminating all PRIVATE stuff, but sometime hard (when function needs about 10 or 15 variables.... Anyway, it's highly recommended. ------------------------------------------------------------------------------ CLIPBBS 2-07 Page 13 28 Feb 1992 ============================================================================== 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 . Daniel ------------------------------------------------------------------------------ CLIPBBS 2-07 Page 14 28 Feb 1992 ============================================================================== 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. 谀哪哪哪哪哪哪履哪穆哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪履哪哪目 矲ileName 砈rc 矰escription 砏here � 媚哪哪哪哪哪哪拍哪呐哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪拍哪哪拇 矨CCESS.ARJ 矯ln 砈ource of speed testing program 砙1-06]� 矨CH2TB.ARJ 矯ln 矯onvert ACHOICE to TBROWSE 砙1-05]� 矨CHOO2.ARJ 矯ln 砇eplacement of ACHOICE with GET possibilites 砙1-06]� 矨DHOC302.ARJ 矯ln 砈ummer 87 inteligent report program 砙1-04]� 矨SCPOS.ARJ 矯ln 硆eplacement of ASC(substr(cString,nPosition,1)) 砙1-11]� 矪ARNTX.ARJ 矯ln 矰isplaying bar indication during indexing 砙1-13]� 矪LOCK.ARJ 矯ln 砊etris game written in Cliper 砙1-19]� 矪UTTON.ARJ 矯ln 矦GET in form of BUTTON 砙1-14]� 矯ALC14.ARJ 矯ln 砅oPup Calculator 砙1-08]� 矯IVMIL.ARJ 矯ln 砋pgrade of Civil->Military time conversion 砙1-19]� 矯L5103.ARJ 矯ln 砇eport of 5.01 anomaly number 3 砙1-04]� 矯L5REP6.ARJ 矯ln �5.01 replacement of REPORT command 砙1-04]� 矯LIP110.ARJ 矯ln 矯lipper Documentor program 砙1-05]� 矯LIPFPCX.ARJ 矯ln 矲ast .PCX displayer for CLipper 砙1-15]� 矯LIPLINK.ARJ 矯bs 矯omplete text of R.Donnay about linkers 砙1-04]� 矯LIPPLUS.ZIP 矯ln 砄bject extension for CLIPPER 5.0 砙1-14]� 矯LIPSQL.ARJ 矯ln 矰emo of complete SQL library for CLipper 砙1-05]� 矯LIPWARN.AJ 矯ln 砈emaphore for convert WARNING: into ERRORLEVEL 砙1-11]� 矯LPFON.ARJ 矯ln 砈et of fonts for EXPAND.LIB from author 砙1-03]� 矯OMET.ARJ 矯ln 矰emo version of communication library 砙1-19]� 矯OND.ARJ 矯ln 矪uilder of conditional indexes like SUBNTX 砙1-03]� 矯WDEMO.ARJ 矯ln 矯lassworks lib written in CLASS(Y) 砙1-13]� 矰BSCN2.ARJ 矯ln 砈creen designer generator 砙1-05]� 矰IAL.CLN 矯ln 矰ialer with using of FOPEN() 砙1-07]� 矰OC111.ARJ 矯ln 矰ocumentor, newer version 砙1-08]� 矰TF102.ARJ 矯ln �.DBT files replacement, fully functional 砙1-14]� 矱NDADD.ARJ 矯ln 硆eplacement of incrementing last char of string 砙1-11]� 矴ETKEY.ARJ 矯ln 矷nput oriented library, wordprocessing 砙1-12]� 矴ETPP.ARJ 矯ln 矼odified GETSYS.PRG well documented 砙1-19]� 矴SR151.ARJ 矯ln 矴lobal Search and replace for programmers 砙1-07]� 矵GLASS.ZIP 矯ln 矵our glass for indication of index progression 砙1-04]� 矵ILITO.ARJ 矯ln 矵ighlighting of keywords on screen 砙1-19]� 矵OTKEY.ARJ 矯ln 矼akin unique hot key letter for every arrat el. 砙1-14]� 矷NDXSL.ARJ 矯ln 砋ser Fields selection builder for index generate砙1-03]� 矷OBASYS9.ARJ 矯ln 矰emo of S87 library and calling Clipper from C 砙1-03]� 矷S.ARJ 矯ln 砈everal c sources of ISxxxx functions 砙1-11]� 矹G2.ARJ 矯ln 矹umping between GET statements in READ 砙1-08]� 矺F_LOKUP.ARJ 矯ln 砈et of program for database relations 砙1-07]� 矻UTLIB.ARJ 矯ln 矨nother Clipper library 砙1-08]� 矼K30.ARJ 矯ln 矼ouse library demo version 砙1-03]� 矼OVEGETS.ARJ 矯ln 矴ETSYS change for moving between gets via VALID 砙1-03]� CLIPBBS 2-07 Page 15 28 Feb 1992 矼SWIN.ARJ 矯ln 矰etection of Windows mode when running Clipper 砙1-14]� 砃FDD library for CLipper 砙1-05]� 矯LIPWARbe TOO long..d like to know what is exact difference between FUN )AeOBA . Thi 砙1 FUNCxample in section 15). COMMENTS: Exactly OP is exac