------------------------------------------------------------------------------ ------------------------------------------------------------------------------ NNNNNNNNNNNN NNNNNNNNNNNN NNNNNNN NNNNNN NNNNNNN NNNNNN NNNNNNNNNNNNNN NNNNNNNNNNNNNN NNNNNNNN NNNNNN NNNNNNNN NNNNNN NNNNNN NNNNN NNNNNNNNNN NNNNNNNNN NNNNNN NNNNNNNNN NNNNNN NNNNNN NNNNN NNNNNNNN NNNNNNNNNN NNNNNN NNNNNNNNNN NNNNNN NNNNNNNNNNNN NNNNNN NNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNN NNNNNN MNNNNN NNNNNNN NNNNNN NNNNNNNNNN NNNNNN NNNNNNNNNN NNNNNN MNNNNN NNNNNNNN NNNNNN NNNNNNNN NNNNNN NNNNNNNN NNNNNNNNNNNNNN NNNNNNNNNNNNN NNNNNN NNNNNNN NNNNNN NNNNNNN NNNNNNNNNNNNN NNNNNNNNNNN NNNNNN NNNNNN NNNNNN NNNNNN ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ Boston Computer News Network January, 1994 A Service of the Boston Computer Society, USA Vol.2 No.11 Sponsored by the Xbase Language Group Clipper Version ------------------------------------------------------------------------------ 0. Meeting Announcement: The Connecticut Clipper Users Group **Sample** ----------------------------------------------------------------------- ReplyTo: George L. Smith [71155,2543], (203) 645-8962 Date: January 17, 1994, 6:30 p.m. Location: Quality Inn, Vernon CT Directions: I84 east to exit 63. Left off exit. 1/2 mile on left. Successware's own Jeff Jochum will be paying us a visit to talk about RDD's. Jeff is a very well known speaker on Clipper subjects. He is the chief architect behind the SixDriver which was partially purchased by CA to include as the CDX RDD for Clipper 5.2. Jeff also authored the Paradox RDD for Clipper 5.2. Those of you interested in the nature of RDDs should definately not miss this one. Also a member of our group, Arthur Alexander will be talking to us about transaction processing in the Clipper environment. Non-members are asked to pay $5 which can be used toward membership within 30 days. Membership is $35/year. Editor's Note. Would you like to see YOUR User Group's notice as the first paragraph each month? This service is free to all user groups, any city in the world. Ask your User Group Director. 1. User Group Meeting: Windows in 60 Minutes ----------------------------------------------------------------------- ReplyTo: Les Squires, Program Chair CIS:73020,3435 or >INTERNET:LSquires@world.std.com Meeting: January 18, 1994, 6:30 p.m. Place: 128 Entrepreneurs Center, 200 Fifth Avenue, Waltham, MA USA. At the January meeting we will pass out a 1,000-1,500 record DBF. All developers who want to participate are invited to MAKE SOMETHING WINDOWS. Any software (dbFAST, Microsoft Access, Paradox, Fox, Gupta SQL Windows, Visual Basic, even Visual Objects for Clipper). Go to a corner of the room. Pick a table. Put up your 17" monitor. Report back in 60 minutes. Other attendees will mill around the room to get a flavor for the various approaches. After 60 minutes we will reconvene, hook up 4 or 5 notebooks to the overhead display, and see what each person has done with the DBF. Yes, John Skelton [100112,3102], you are allowed to use any/all code you have now. There are no other rules. This isn't even a competition, so you can make up your own rules. Ok, Yair Alan Griver [71541,3150], we'll send you a copy of the DBF. We'll let you know, Jeff Winchell [76066,533], how it goes. Yes, Ken Blackstein [76576,1667], you can throw your whole 100,000 line Clipper/ProVision/Class(y) arsenal at the task. You'll get a copy, too, Richard L Spence [70471,2725]. Copies of the DBF will be sent via CompuServe around the 13th. Take one hour. Send back your application. Include a readme. Recruit a local person to walk us through it, if you'd like. We'll look at what you send and credit you in the BCNN report. 2. February 94 User Group Meeting: Clipper Tool Exploration ----------------------------------------------------------------------- ReplyTo: Darren J Forcier >INTERNET:djf@world.std.com Meeting: February 15, 1994 Place: 128 Entrepreneurs Center, 200 Fifth Avenue, Waltham, MA USA. While we all wait for VO, there are definitely many programming solutions available to us as Clipper developers. In February, Darren Forcier assists us in exploring the various Windows programming options we have available. The goal here is not to select the "best" product, but rather to survey the tools available and determine which ones can help you learn Windows programming _NOW_: 1) Clip4Win 1.2 - Skelton Software/Grumpfish's Clipper->Windows library, 2) Dolce Vita (With Craig Yellick's La Strada programming guide), and 3) >From DOS - A cool library for integrating Windows services into DOS apps. Darren will compare and contrast these tools on the following: o The Windows Learning Curve o The Windows API, and how it is accessed via each tool o Product Architecture and features o Porting existing Clipper code concerns and issues o Event Driven Programming under Windows o Portability to VO issues o External Tools needed (linkers, resource editors, debuggers) Sample programs will be provided to give everyone an idea of what they are getting into with each product. Time permitting, Darren will also discuss some of the other tools available from CA such as CA-DBFAST 2.0 and CA-REALIZER 2.0, which are also some viable Windows programming options. This meeting should be fun and extremely informative. Now is the time to embrace Windows, as Windows will definitely play a major role in all of our future programming. Bring an open mind and lots of questions! Email your questions by February 13th to bcnn@world.std.com. 3. Step Into The Future of Desktop Development With OS2 (Part I) ----------------------------------------------------------------------- ReplyTo: Richard Simon [71141,2515] Imagine having 4 virtual PCs on your screen, each in its own window working on four tasks at the same time. Your are using Microsoft Word to write a proposal; while Exospace linking an application; while OSCIS is uploading a ZIP file to CIS; and you are processing some data in a Clipper App. Sound unreal? You can do it today with one machine! About two months ago I started researching the two major alternatives: OS2 and NT. I chose OS2 2.1 after talking to many developers at Technicon 93 from around the world who praised OS2 as a stable product that is here today and works. I will continue to look at NT as it becomes more mature. I ended up purchasing OS2 2.1 for Windows. This OS2 version simplifies the setup of Windows under OS2 and used my exisitng version of Windows. For $49 it was a steal! Requirements. IBM recommends a minimum system: 386SX, 6MB memory, and 20-40 MB disk free space. I installed on a Gateway 4DX2 66 Eisa with SCSI hard disk, 16 MB memory, and 100MB free space. I think that raw processing power and memory are essential to good OS2 performance. SVGA is also a must with a minimum 15 monitor. SVGA enables you to see more detail with several virtual machines in windows on the screen at the same time. Installation. Installing OS2, however, is not a task for the faint of heart! Reading the installation guide is enough to scare a professional. However, IBM has an excellent 800 number technical support group and you can actually get through with them paying the dime. IBM's commitment to OS2 is clearly evident in the quality of this support. Don't hesitate to pick up the phone when in doubt. Also there is an excellent support forum on CIS: GO OS2SUPPORT. Bootable Drive/ROM Version. The installation media must match the PC's bootable diskette. I bought the 3.5 version, so I had to reconfigure my PC so the 3.5 diskette was the bootable drive. Second, I considered all the warnings about the PC's ROM version, and decided to go ahead with fingers crossed! Dual Boot or Boot Manager. This decision affects they way you system starts up and how many operating systems you can choose from. With the Boot Manager you can choose among several operating systems (DOS5, DOS6, OS2, AIX, etc.). Also, you must create a separarte 1MB partition used by the Boot Manager. The Dual Boot option does not require a special partition, but you can only choose among OS2 and DOS at system startup time. Since I was only interested in OS2 and one version of DOS, I chose Dual Boot. FAT or HPFS? OS2 supports a more sophisticated file system than DOS- FAT, called High Performance File System (HPFS). HPFS minimizes file fragmentation and allows file names up to 254 charactes. HPFS requires that OS2 is installed in a separate disk partition, and consumes 1/2 MB of memory. Since, I installed OS2 in my single C drive partition, I chose to continue to use the standard DOS FAT. Maybe on my next machine! Joys of MultiTasking. With OS2 up and running, I was ready to experience true multitasking on my comptuer. Next month I'll describe this experience, particularly what it means to the Clipper developer. 4. Mini-Devcon: Every TBROWSE Knows How to Export Itself to Windows. ----------------------------------------------------------------------- ReplyTo: Les Squires, Program Chair CIS:73020,3435 or >INTERNET:LSquires@world.std.com Priority: 500 Participants Required. It's clear when you start talking about Windows that many Clipper DOS applications are not about to be dismantled anytime soon. Companies have tremendous investments in DOS development. Hardware is often inadequate for Windows applications. Need for an Intermediate Strategy. I recently faced a situation in which a client with a very large Clipper application required easy access to the Clipper data through Microsoft Word, Excel, and Access. It was simply out of the question to toss DOS-Clipper and rewrite everything. It was also out of the question to 'attach' the large DBFs. But it was feasible to give users the full range of Microsoft functionality if Word, Excel and Access had ready access to the data. The application is constructed around TBROWSE. Users freqently focus on as few as 10-15 records scoped and sorted from 750,000 record files. Believing that no report writer on the market could extract those 10-15 records as quickly as TBROWSE can make an export, I designed a CNTRL-P hot key in TBROWSE that tosses its current relational dataset to the users Windows software of choice. Most importantly, the TBROWSE export is a flat ASCII file--saving naive users from wading through relational keys. The Windows ALT-TAB exchanges Clipper for the Microsoft software concurrently in use. From there users are only a few mouse clicks away from a brief list, or a set of mailing labels, or printing a fax thousands of miles away. I learned something from this experience: let Clipper be Clipper and let Windows be Windows. Having to decide to scrap DOS Clipper applications just to embrace Windows can be wasteful and silly. They CAN co-exist--and very well in some circumstances. Are you interested in hearing more? I'm willing to write write up the technique and distribute it via Email if you are interested. I'll provide source code, including the data-driven techniques for normalizing the underlying relation, and give plenty of time for questions and answers -- just like a Devcon/Technicon! Via email. Here's the deal. I want your input. Tell me in a paragraph or two why this approach would be of interest to you, how you might use it, and how it might contribute your DOS-Windows debates. Be sure not to email proprietary material. I'd like to quote freely. The report will be made available to those who write. 5. GUI Front End for Internet and CompuServe ----------------------------------------------------------------------- ReplyTo: Les Squires Internet: BCNN@world.std.com CIS:73020,3435 or >INTERNET:LSquires@world.std.com ReplyTo: David A. Yon, Author, RFDMAIL@World.Std.Com Performance Designs Concord, Massachusetts USA Download: CompuServe in the IBMCOM, WINSHARE, and WUGNET forums. GEnie in the WINDOWS and INTERNET roundtables. FTP: world.std.com in /src/pc/email/rfdmail.zip FTP: garbo.uwasa.fi in /windows/comm/rfdml112.zip CurrVer: 1.12 Every once in a while a new product comes along which you should RUN, not walk, to get your copy. Imagine a Windows front-end that works with CompuServe, Internet, MCI Mail, GEnie, and with any other BBS for which you write script files. The obligatory functionality is there: graphical editing and browsing of letters, file folders, address book, carbon copies, automatic polling, individual and batch out box, backup and restore of folders, COMM throughput up to 115KB, etc. Obvious places for improvement: sending of binary files, forum access, attachments, and terminal mode. The software as slick as any Information Manager on the market. It's shareware. Around $29.00. Usable for one month as an evaluation. You can even pay the registration electronically via CompuServe. Check the readmes and WRI files for details. 6. Detached Locals. ----------------------------------------------------------------------- ReplyTo: Philip K Scott <75460.2010@CompuServe.COM> Senior Software Engineer Fidelity National Title Ins. Co. Mission Viejo, CA Jack, one of my office cohorts, tipped me off on a method for creating code blocks at run time without macro compiling. It only works if you know the contents of the code block, but the contents of some of the variables or array elements are what is needed at run time. Its application may be rare, but it's elegant. FUNCTION Func1 LOCAL aNames := {"BOB","MARY","JOHN","ELLEN"} LOCAL aBlocks := {} AEVAL( aNames, {|x| AADD(aBlocks, Func2(x)) } ) RETURN aBlocks FUNCTION Func2( cName ) RETURN {|| QOUT("HELLO" + cName + "!") } The memory location for "BOB" is different from the memory location for cName in Func2, because "BOB" is passed BY VALUE (a copy of "BOB" is made in a new locally scoped variable called cName). When Func2 returns, cName is supposed to be released from memory. But CLIPPER is smart enough to figure out that before releasing cName, aBlocks in Func1 will now be referencing that memory location, and so, it can't be released until aBlocks[n] is released. This makes aBlocks[n] the owner of a DETACHED LOCAL. I use this in a data driven dialog/screen engine that loops through an array of screen field definitions, creating GET OBJECTS. Some of those get objects were for custom readers which required complex code blocks for the reader block. In the past I generated a string and then macro compiled as a code block and stored it into the get object for the reader block. But now, my DETACHED LOCAL GENERATOR FUNCTION returns a code block that is actually compiled at compile time (not run-time!). It shaved 25% off of the time spent creating get objects in my application. 7. College of Informatics of Novosibirsk State University ----------------------------------------------------------------------- ReplyTo: Kathy Kelly BCNN@world.std.com (for contributions) ReplyTo: sychov@vki.nsk.su (Sychov N.A.) Dr. Mishenko A.M. Summer School Head Last Chance! Contributions to the computer program at Novosibirsk State University in Russia are being closed February 15th. We're going to forward a check soon after that. Mail your check made out to 'BCS Xbase Group' to Kathleen Kelly, Novosibirsk Scholarship, P. O. Box 126, Center Harbor, New Hampshire 03226-0126 USA. 8. Any Hints for '1 Computer Many Users' Problem? --------------------------------------------------------- ReplyTo: John F. Shattuck [76116,3325] I am helping to automate Federal law enforcement agency at the bottom and top. The problem: in any given site, as many as 1,600 agents may use one computer or may use up to 200 computers. No agent uses the same computer over and over. We must have a DOS/WINDOWS/NOVELL/3270 desktop that floats from computer to computer. Furthermore, it means that every product we install must not be C: drive based (temps files exception). Most CIS forums discuss the "Fortune 500" solution where everyone "owns" their own desktop. We are on the planet XENON and the forums are on planet EARTH. Any hints on where these discussions are taking place that address these "1 computer many users" problems? 9. Reflections on Windows Experiences ---------------------------------------------------------*---------------------------------------------------------------------- ----- ReplyTo: Bruce Dunlop <100033.2154@CompuServe.COM> I have been learning Access and Visual Basic. The hype about being able to put applications together in Access with no coding is untrue for anything intended for the real world. I am comming to the conclusion that for a Novell Lan environment Gupta's SQL Windows front end and NLM database engine would be best for development (it has true back end processing and an impressive front end development product). MS Access is a good product for end users but it is messy for development. Access would be good for allowing users to to do their ad hock analysis of information on the NLM database. I understand Gupta's NLM database will support ODBC some time in early 1994. 10. Call for Papers Conference to the MAX'94 ----------------------------------------------------------------------- Send Proposal To: Ernst P. Tomminga 100042,1760 Clipper Developers Group Netherlands Attn. Joop Pecht P.O.Box 506 7100 AM Winterswijk The Netherlands Tel. +31-5430-18058, Fax. +31-5430-15399 CIS 100114,2535 or 100042,1760 The Clipper Developers Group Netherlands (CDGN) will organize their third annual a Clipper Developers Conference called Conference to the MAX'94 (CttM'94), in late April 1994 in the Netherlands. CttM'94 is oriented towards the professional Xbase (Clipper) developer. We invite people who are interested the give one or more presentations to send us a proposal. Conference fee will be waved for speakers. Some travel grants are available. Due to the limited number of time slots available, not all proposals can be honoured. Proposals must include name, telephone, company address, job function, relevant presentation experiences, session title, target audience, level audience, and an abstract. Clipper Developers Group Netherlands is a non-profit, professionally organized Clipper user group with about 650 members, representing about 1000 professional Clipper developers. CDGN publishes a bi-monthly magazine Conference, organizes bi-monthly meetings in a informal (Conference LIVE) and formal setting (Conference to the POINT). Last CttM was attended by more than 250 people, not including about 25 speakers from all over the world. 11. Must-Have Book on Legal Issues for Developers ----------------------------------------------------------------------- ReplyTo: David J. Byer [76304,206] Ipswich River Computer Studio, Ipswich, Massachusetts USA Internet: dbyer@ircs.com Title: The Software Developer's and Marketer's Legal Companion Author: Gene K. Landy, Attorney at Law Publisher: Addison-Wesley, 1993, $34.95, ISBN 0-201-62276-9 I heard Gene Landy, an attorney at Shapiro, Israel & Weiner, P.C. in Boston, speak at a Boston Computer Society Consultants and Entrepreneurs User Group meeting and was so impressed that I went out and purchased his book. I recommend this book to all developers as a volume they must have on their bookcases. It is 500-plus pages packed with information that we all need; a diskette of contract forms; and fold-out United States Copyright Office forms. It contains general information about issues like when you need an attorney for a particular job, what "trade secrets" are, and negotiating tactics. It contains practical information about issues like establishing price terms, shrink-wrap licenses, and registering your software copyright. It also contains the information you need if you are a contractor or if you are hiring contractors, if you are a beta tester or are soliciting beta testers, if you are a one-person company, a large organization, or are thinking about entering the world of software development. 12. My heart sticks with clipper. . . and DBFAST. ----------------------------------------------------------------------- ReplyTo: Frank Heinevetter <100023.1506@CompuServe.COM> Please kick me off the distribution list of Microsoft ACCESS. I feel ACCESS is a great product, but my heart sticks with clipper. Incidentally, I haven't read anything on dBFast 2.0 on your letters. I think it is worth taking a look at that product. It is VERY easy to create Windows-like applications in a snap. Of course you have to get used to all the new features, but I, as a non-Windows programmer, was able to put my first Windows application to work just 4 hours after installing dBFAST 2.0 on my computer. 13. Japanese Language Applications in Clipper 5.0 ----------------------------------------------------------------------- ReplyTo: Michael Hancock <71651.333@CompuServe.COM> We've found that with DOS/V's kanji support we can help foreign companies with local applications. The choices before DOS/V were pretty proprietary. For example, the largest selling PC in Japan is the NEC 9800 which is not compatible with what we are accustomed to using. Its also a nightmare to port applications to. We can write DOS/V applications using Clipper by using the PCBIOS screen drivers and adding a few kanji handling functions to our library. Its also very easy to modify the GETSYS to handle kanji a little better. To clarify, you should modify the GETSYS to skip 2 bytes when a cursoring on a kanji character. Kanji takes up 2 bytes so you need to handle backspacing, deleting, and cursoring a little differently, but its not as hard as you would think. Windows applications can be much easier to write for or port depending on how you write your applications. If you program in C you should put your all your strings in a resource file. Then a lot of your work simplifies to a translation job. A lot of the kanji handling is built into Japanese Windows 3.1J. Can you imagine TrueType kanji fonts? Windows 3.1J has them. I'm sure there are other developers out there with experience in developing double byte applications. Umm... I wonder how many? 14. RDD Performance Tests ----------------------------------------------------------------------- ReplyTo: Ron Dace, Manager, Information Systems [76256,2415] Tim Payne, Programmer/Analyst Illinois Commerce Commission 527 E. Capitol Springfield, IL 62794 The Illinois Commerce Commission conducted a test of various RDD's to determine relative performance and the rate of performance degradation under load. The intent was to simulate standard application behaviors (scatter/gather, cascade updates, parent/child relationships etc.) on a live network rather than conduct optimized benchmark testing. Environment: The ICC has multiple servers running Novell 3.11 connected to a TCNS fiber backbone. Various workstation configurations (286, 386 and 486) are connected to 16 bit TC ArcNet using enhanced drivers. The test involved using the same set of workstations connected to three different servers accessing data and executables on a single server under normal network activity from other users. Workstations were connected to 486/33 servers, the data and executables resided on a 386/33 server. Data: Three dbfs with a parent-to-2-children relationship on a single unique key were used. A separate subdirectory was maintained for each type of RDD tested (i.e. NTX, CDX, NSX, MDX ). Statistics were maintained in two dbfs and test configuration information in another. Process: A separate executable was created for each driver using the recomended link script. A baseline was established for each driver using the same workstation. Statistics were compiled for 1, 6, 12 and 18 workstations running the same test. The tests were as follows: Scroll: Beginning at a random location in the parent file, a fixed number of records were skipped one at a time. Random: A fixed number of random explicit seeks to were performed. Change Key: The key field linking the parent and the child dbfs was changed and each file updated for a fixed number of records per cycle. Append: A new record was appended to the parent and each child and new data replaced in the records. Each test displayed information on the screen from the parent and both children for each record. The time to complete the cycle and the number of records skipped were written to a statistics file and the performance measured in records/second/workstation. The length of time in each test varied, but was of sufficient duration for variations in performance to stabalize. DBFNTX Database Driver (Records/Second/Workstation) # Wkstns Scroll Random Change Key Update Append 1 22.04 21.21 4.46 8.51 4.89 6 12.32 5.68 0.87 1.62 2.22 12 5.81 2.14 0.35 0.68 0.99 18 3.59 1.19 0.24 0.46 0.62 Advantage XBase Server (NTX) # Wkstns Scroll Random Change Key Update Append 1 34.39 25.01 6.11 10.93 9.45 6 17.91 9.90 2.17 5.98 4.87 12 11.06 5.46 1.14 3.48 3.23 18 8.99 3.88 0.77 2.31 3.41 SIXCDX Database Driver # Wrkstns Scroll Random Change Key Update Append 1 13.13 11.21 3.37 6.58 2.56 6 6.80 4.60 0.98 4.09 1.33 12 4.17 2.13 0.45 2.45 0.83 18 1.87 1.23 0.29 1.60 0.53 Advantage XBase Server (CDX) # Wrkstns Scroll Random Change Key Update Append 1 32.13 23.87 6.05 9.76 6.31 6 15.50 9.61 1.87 4.72 2.33 12 10.48 5.96 1.08 2.84 1.34 18 8.40 5.02 0.73 2.02 1.04 Performance Degradation of Scroll Test by RDD (Records as a percent of Baseline) # Sta DBFNTX % of 1 AXSNTX % of 1 SIXCDX % of 1 AXSCDX % of 1 1 22.04 100.00 34.39 100.00 13.13 100.00 32.13 100.00 6 12.32 55.90 17.91 52.08 6.80 51.79 15.50 48.24 12 5.81 26.36 11.06 32.16 4.17 31.76 10.48 32.62 18 3.59 16.29 8.99 26.14 1.87 14.24 8.40 26.14 Total Records Processed per Second for Scroll Test by RDD # Sta DBFNTX Total AXSNTX Total SIXCDX Total AXSCDX Total 1 22.04 22.04 34.39 34.39 13.13 13.13 32.13 32.13 6 12.32 73.92 17.91 107.46 6.80 40.80 15.50 93.00 12 5.81 69.72 11.06 132.72 4.17 50.04 10.48 125.76 18 3.59 64.62 8.99 161.82 1.87 33.66 8.40 151.20 Comments: There are still a few observable phenomena that we haven't identified the cause. 1) The records/second rate on a scroll starts high, decreases for a while and then starts to increase again. 2) there is a visible pause periodically throughout the test (could be VM swapping, garbage collection). Server utilization on the 386/33 hit 99% with the AXS NLM loaded and 18 workstations running the test. Observation: The Advantage XBase Server (AXS) yielded higher performance and a lower degradation rate than the other RDDs in our test environment. The total records processed for all workstations per second continued to increase for the AXS RDD but reached a maximum and began to decline for other RDDs. 15. *New Service* BCNN Back issues FTP Downloads via SAMBDA. ----------------------------------------------------------------------- ReplyTo: David J. Byer dbyer@ircs.com Grant McHerron, Cezar Cichoki and I have successfully created a directory for Internet users to retrieve files distributed by BCNN. Back issues of BCNN are available. CEZAR@PSYCH2.PSYCH.UW.EDU.PL resides on a Warsaw University computer in Poland. The network address is samba.iss.uw.edu.pl. It also carries many of the updates and patch files as well as demos, samples of OOP within Clipper, etc. which have been uploaded by various Clipperheads on the net. Use FTP or NCFTP to access SAMBA. Read Grant's article in BCNN 10/93 for full details on how to use FTP. Here are some FTP essentials: ftp samba.iss.uw.edu.pl //-Enter full login name as password. ftp> cd pub/clipper/bcnn //-Change directory to BCNN. ftp> dir //-Look at available files. ftp> get bcnn0893.txt //-Retrieve contents. ftp> quit //-Terminate FTP session. Editor's Note. Back issues of the BCNN Jan-September, 1993 are available on CIS->CLIPPER LIB 1. Subsequent issues have been moved to LIB 17. 16. Hiding DBF's from dBase. ----------------------------------------------------------------------- ReplyTo: Adam T Winter <71022.703@CompuServe.COM> I needed to hide our DBF's from eager users who wished to use the DBF's for systems not approved by us, but didn't really like the idea of encryption because we do at times need to look at the data remotely. I was not too concerned with them unraveling what we do, because foul play stops the system, but on the other hand I didn't like the idea that anyone with dbase or R&R could access the .DBF's. Changing the first byte of the DBF could create confusion since the system can be multi-user (and I didn't feel like creating the logic to deal with who had to close everything up - and what if the last person rebooted). The code to fake encryption is found below. It changes the 16th byte. Now dbase and R&R report "database encrypted," but Clipper ignores that byte. So far our application is running fine. PARAMETER cdbf lockdbf(cdbf) RETURN proc lockdbf (cdbf) LOCAL Handle, buffer := " " IF ((Handle := FOPEN (cdbf, 2)) > -1 ) FREAD (Handle, @Buffer,1) FSEEK (Handle, 15, 0) FWRITE (Handle, CHR(12)) FCLOSE (handle) ? "Database " + cdbf + " locked" ELSE ? "Did not work" ENDIF RETURN 17. FUNCTION AddMonth ----------------------------------------------------------------------- ReplyTo: Mike Meinz <76047.46@CompuServe.COM> The ADDMONTH function found in CLIPPER5\SOURCE\SAMPLE\DATE.PRG doesn't work correctly for some dates. Here is my correction. FUNCTION AddMonth ================= Purpose: Calculate a new date by adding a number of months to a date. Input: Date Number of Months to Add Output: New Date Warning: nIncrement must be >= Zero FUNCTION AddMonth(dDate,nIncrement) LOCAL nMonth LOCAL nLimit := 12-(nMonth:=MONTH(dDate))+1 LOCAL nYearAdd := MAX(0,INT((nIncrement+11)/12)-1) LOCAL nMonthAdd := ((nIncrement-1)%12)+1 RETURN CTOD( ; STR((((nMonth+nMonthAdd-1)%12)+1),2)+ ; "/"+ ; STR(DAY(dDate),2)+ ; "/"+ ; STR((YEAR(dDate)+nYearAdd+ ; IIF(nMonthAdd>=nLimit,1,0)),4)) 18. BCNN Statement of Ownership, Copyright, and Responsibility. ---------------------------------------------------------------------- The BCNN Newsletter is sponsored by the xBASE User Group of the Boston Computer Society. BCNN is dedicated to keeping professional database developers (both consultants and corporate employees) informed about educational events, meetings, job openings, world events, notable articles, technical tips, new and 'must have' products, etc. As an electronic network BCNN is also a hub where developers can address world class issues to fellow developers around the world. Recipients agree to respond via Email to periodic polls of their directions, opinions, and needs. For those who do not have User Groups in their areas, BCNN is a vehicle where individuals can volunteer and contribute to something larger than themselves. Over 5,400 persons world-wide participate with CA-Clipper and Microsoft Access. The newsletter is distributed monthly by electronic mail via CompuServe, Internet, FidoNet, and other electronic gateways. It is free of charge to individual developers. Modest fees are charged to corporations for job placement and third-party announcements. Opinions expressed are solely expressed by the Xbase Language Group of the Boston Computer Society, even in cases where 'Xbase Language Group' is abbreviated to 'BCS'. All materials are copyrighted by the BCS, unless otherwise indicated, and free for any user group to redistribute on their own BBS on the condition that a by-line referencing the BCS is included. Les Squires, Director Xbase User Group c/o Word Jenny, Incorporated P. O. Box 126 29 Brick Kiln Road, Kilnwood Center Harbor, New Hampshire 03226-0126 USA 603-253-6109 Primary Phone & Messages 24 hours a day 603-253-7214 Messages Only 24 hours a day 603-253-9864 Fax 24 hours a day INTERENT:bcnn@World.Std.Com //-First choice for Email. CIS:73020,3435 //-Second choice for Email. Boston Computer Society, Inc. One Kendall Square Cambridge, Massachusetts 02139 USA 617-252-0600 General Number 617-621-0881 Ext. 432 for up-to-date meeting information. Add Subscribers: @BCNN@ClipperYes to bcnn@World.Std.Com. Delete Subscribers: @BCNN@ClipperNo to bcnn@World.Std.Com. Back Issues: LIB 1 on CIS->CLIPPER Forum FTP samba.iss.uw.edu.pl (CD pub/clipper/bcnn) (c) 1994 Boston Computer Society, Inc.