------------------------------------------------------------------------------ ------------------------------------------------------------------------------ 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 April, 1994 A Service of the Boston Computer Society, USA Vol.3 No.4 Sponsored by the Xbase Language Group Clipper Version ------------------------------------------------------------------------------ 1. ** New Newsletter ** SUITEWARE for Clipperheads. ----------------------------------------------------------------------- ReplyTo: Les Squires bcnn@world.std.com [73020,3435] ReplySubj: SUITE-YES Separate BCNN sign-up is *required* to enroll for this newsletter. It's time to take a hard look at the new level of abstraction called the 'office suite'. This is no warmed over Symphony or Framework from ten years ago. 'Thinking suite' is a whole new concept, particularly when you realize that to be successful Object Linking and Embedding (OLE) will have to work ACROSS vendors, and not simply with products produced by a single vendor. Such conceptual changes will radically change our professions. We're not just doing databases anymore, we're having to deal with the WHOLE workflow, with functionality we didn't invent. Some simple examples. Microsoft Word gets its Mailmerge data from SQL Server databases. Access uses word for its 'memo-edit' or for typesetting reports. Ranges of Excel cells are stored with all their functionality in a field in a database; when recalculation is required, it's done in Excel. Email of film clips on trout fishing are sent via Internet. Computer Associates's office suite is named Simply Business. Microsoft named it's suite Microsoft Office. Lotus and Borland have suites. Novell's purchase of WordPerfect is proof positive how important this concept is. Over the next year or so, you will be dismissed as naive if you say 'I develop in Clipper...or Powerbuilder...or Fox.' The day you hear the retort 'No, no, no, I meant what SUITE do you use for development?' you'll know that you've been left behind. Somebody else will be eating your lunch, re-possessing your car, and stealing your spouse. BCNN is starting a new newsletter. It is for Clipperheads or other Xbase types who want to improve their Windows skills using the Word- Excel-Access paradigm (the only viable suite that I've seen for developers, and soon to become, in my opinion, the defacto standard). The moderated discussion will start with Access 2.0 and will move to OLE 2.0 and SQLServer over the next 6-8 months. Forget all the negative criticism you ever heard about Access 1.1. Access 2.0 is solid. It's good. And it's going to play a very serious part in your career as a developer, no matter what vendor's tools you choose ultimately to deliver your applications (Access, or Visual Objects, or Visual Basic, or Powerbuilder, or SQLWindows, Paradox, or even dBASE for Windows). BCNN/Suite Version will come to you as BCNN/Clipper does. Depending on your level of interest, the letter may actually be issued more frequently than once a month. In addition, I'm willing to negotiate special deals on behalf of the group. Best of all, we'll learn together. Email me with the Subject SUITE-YES. In addition (but this is not required to join the group), I'd like to ask you to send a paragraph or two letting me know what you think about this idea, particularly of your expectations for such a group. Include a brief description of what you might already have done. 2. Waiting for VO: Learn OOPs Concepts (April Meeting) ----------------------------------------------------------------------- ReplyTo: Chris Pels [73777,3562], 401-885-2815 ReplyTo: Ed Tiley, Access Advisor, Contributing Editor [72007,3455] Meeting: April 19, 1994, 6:30 p.m. Place: 101 First Avenue, Suite 2, Waltham, MA 02154 CISPaper: Available on GO CLIPPER, Lib 17, 2 weeks after meeting. INTPaper: FTP samba.iss.uw.edu.pl (CD pub/clipper/bcnn). Ed Tiley said it best: "Visual Objects promises to be the object- oriented Clipper that programmers have been waiting and clamoring for the last couple of years. Users of OOPs extensions to Clipper like SuperClass and Class(y) will find the transition easier. Get hold of one of these products and begin designing objects now." (Clipper Advisor, March/April 1994, p.48). Chris Pels will show us OOPS at our April meeting, a practical, example based introduction to doing OOP with Clipper 5.2c and Class(y) 2.0d. The session will be highly interactive, oriented towards both new and experienced object oriented programmers. Two weeks after the meeting a full write-up of the meeting will appear on CompuServe and FTP samba.iss.uw.edu.pl (CD pub/clipper/bcnn). Note. Special Deal on Class(Y)! See last month's newsletter for full details as to how to order through Chris Pels [73777,3562] 3. Multi-Location vs. Multi-User Databases (June Meeting) ----------------------------------------------------------------------- ReplyTo: Christopher Greene 70304,1472 <70304.1472@CompuServe.COM> Meeting: June 21, 1994, 6:30 p.m. Subject: Lotus Notes & VB In June, Chris Greene will lead a discussion on Lotus Notes. More important than a particular vendor's product, Notes represents one of the most commercially available implementations of distributed databases. And if you have done any reading in Tom Peter's new book, LIBERATION MANAGEMENT (Start with Chapter 8), you'll quickly and profitably fuse his concept of adhocracy with that of replicated databases. As Chris recently wrote, 'What is Lotus Notes? How can developers tap into the world of Lotus Notes without paying the high initial cost of entry? How can developers expand their business using Visual Basic as the price of entry?' 'Lotus Notes API programmers are earning $1500 per DAY! Notes is booming. Large and small companies are using Notes as the true client/server environment. Huge amounts of data need to me moved into Notes. Applications need to be written to overcome the limitations of Notes (and there are a few).' 'I will demonstrate Notes, discuss with you the glue that ties a distributed environment into a singular data repository, REPLICATION. I will demonstrate a Visual Basic control that opens the world of Notes to you. Finally, I will discuss with you the areas of opportunity for you as a developer or as an IS employee in the Notes world.' 4. A Better PadSpec() ----------------------------------------------------------------------- ReplyTo: Tom E. Leylan //-Replacement for PadSpec() by Popp which doesn't require //-Funcky II and provides user-defineable "middle" characters //-while significantly reducing string processing //-I don't RTRIM the incoming string as did Popp however so if //-the user doesn't want trailing blanks to be significant the //-user should remove them before calling PadSpec() //-Tom Leylan - tleylan@shell.portal.com QOUT( PadSpec( "this is a test of the routine", 20, "..." )) FUNCTION PadSpec( cStr, nMax, cMid ) LOCAL nLen := LEN( cStr ) LOCAL nAmt := ( nLen - nMax ) + LEN( cMid ) LOCAL nAt := ROUND( ( ( nLen / 2 ) - ( nAmt / 2 ) ) + .5, 0 ) RETURN IF( nLen > nMax,; STUFF( cStr, nAt, nAmt, cMid ), LEFT( cStr + SPACE( nMax ), nMax ) 5. Technicon'93 Notes: Session 1006 - Consulting Insider by John Hawkins. ----------------------------------------------------------------------- ReplyTo: Jay Forrest <73707.2010@CompuServe.COM> o Deal with the decision makers. When you deal with someone assigned to solve the problem, he will represent you and he can't do that as well as you. o You are a businessman and own a business. Deal with the client as a peer. Don't let him treat you as a laborer. o Value your time and make sure they do too. When you get calls for help, send them an invoice at your full rate for your minimum time (or whatever they consume) EVEN IF YOU WRITE "COMPLIMENTARY" on the bill. It establishes your rate and philosophy and they can hardly complain when next time you don't write complimentary on the invoice. o Screen potential clients (just like they "screen" you) and don't take them on if they don't fit the profile you want. o Never use a resume. It is too much like applying for a job. You are a professional. Did you ask your lawyer, CPA, or doctor for a resume? Paraphrasing - Think Professional, Be Professional. If you don't respect yourself, how can you expect the client to. 6. Technicon'93 Notes: Notes from Phil Schwartz. ----------------------------------------------------------------------- ReplyTo: Walt Sydoriak <76320.62@CompuServe.COM> Advanced Gets. It's a lot easier than I thought to modify the get system in order to get field messages, a working clock, and screen time-outs. The key lies in adding or changing a line or two to a copy of the GetReader function ( near or in the GetApplyKey function). By providing your own inkey() function, it is fairly simple to add a clock to the screen, or time out after so many seconds. Understanding the CA-Clipper 5.2 ERRORSYS(). Phil asked us all to "Practice Safe Programming" by keeping the program running if at all possible and if not possible to make the correct choices in the final moments before your program comes to a grinding halt. It is possible to provide a more graceful exit by modifying the Clipper 5.x error object. For starters, create a error log file to save all relevant information during an error. It is also possible to create one which will format a diskette during a file copy. It is important to be prepared to handle errors which may occur in the middle of processing such as paper running out or a drive door being opened during a copy. The key to handling these errors is to correctly interpret the osCode and genCode instance variables from the error object. 7. CISNav: The New Windows Navigator for Compuserve. ----------------------------------------------------------------------- ReplyTo: Reg Moseley <72301.1121@CompuServe.COM> InfiniTREND Consulting Designed to work along side WinCIM, CompuServe's Windows-based navigator, CISNav is touted as a Windows batch processor for CIS. It does not require WinCIM, but if you already have WinCIM, CISNav will install in a subdirectory under the \CSERVE directory created by WinCIM and share its other subdirectories (e.g. SCRIPTS, GIFS and DOWNLOAD). CISNav shares WinCIM's modem settings, userid information, and address book, therefore eliminating double entry. Like WinCIM, CISNav is a Windows program, and one of the few communications programs I've seen to take full advantage of the graphical capabilities of Windows. The program uses graphical scripts, that contain your instructions on what tasks to complete as it navigates CompuServe. You build this script (off-line, of course) by dragging and dropping forum and/or services from a services window into an empty script window. Each forum entry becomes a structure can then be expanded and collapsed by double clicking, and looks and works very much like the directory tree structure in the Windows File Manager. The forum structure contains folders for every relevant CompuServe task, including message retrieval, library commands, and options for notices. Clicking the folders either expands the branch to reveal more tasks, or opens a dialog box. The dialogs allow a surprising amount of customization to the script actions. CISNav has dialogs for everything, from ad hoc text searches of selected sections, to composition screens for messages and EMail. This is monumentally easier to do than it is to describe. CISNav starts you with a script that is already set up to retrieve your CIS Mail. You can add forums to this script and configure them, or start a new script and have CISNav automatically open it in a window on startup. Although it is somewhat hidden, CISNav has a option to create multiple 'passes' for any script, which are different configurations of the same script. A drop down list on the CISNav toolbar is used to select which pass to run. For example, I have all my scripts setup for the first pass to retrieve my mail, message summaries, new file descriptions since my last visit, and forum notices. After reviewing this information off- line, the second pass uploads any mail and message replies and contributed files, and downloads files and message threads I've selected. As it runs your script, CISNav records its progress in a graphical session window, so you can watch the tasks being completed and visually debug your scripts while they are running. After the script concludes its run, the retrieved items can be reviewed by double clicking on their graphical descriptions. Sessions can be saved just like scripts, and CISNav will give them the same file name with different extensions so you can find them easily. Received mail is archived to an In Basket, while Email and message replies and upload/download requests are stored in the Out Basket. Baskets are fully editable and offer in maintenance options on their toolbars. Forum messages and threads are filed in a cabinet containing drawers for each forum, making for a handy and well organized information management system. The message threads are maintained in a expandable/collapsible structure that makes traversing a thread as easy as navigating your directory tree in File Manager. CISNav even ships with a utility that allows automated date-and-time stamped launches of your scripts from your Windows startup group. CISNav has become my every day CIS navigator; I have deleted OzCIS and TAPCIS from my hard disk and recycled their install floppies! The Windows interface, drag and drop configuration, extensive options, and auto launch capability eclipses any of its DOS or Windows predecessors. If you need a second opinion, you can read an industry review in the April 1994 issue of Windows Magazine, page 126. CISNav is available directly from CompuServe on-line, just type GO CISSOFT. You'll be billed $30 to your CIS account and given $10 usage credit, and the download time for the software is free. Fear not, CISNav pays for itself in the first month if you're a frequent user. I highly recommend it! 8. Position Available: Senior Programmer ----------------------------------------------------------------------- ReplyTo: Kim Anan Scudder, P. O. Box 957, Salem, New Hampshire 03079-0957. Fax: 603-890-4153 Location: Salem NH Office This position is primarily responsible for providing advanced programming support for the PC Support Group and reports to the Supervisor of the PC Support Group. This person should have at least five (5) years of programming, program design and computer/network hardware experience. This person should have proven proficiency in DOS, DOS command batch files, FoxPro, Clipper (or similar database language), Pascal, Windows 3.1, Novell 3.11 and communications software. Familiarity with COBOL is a plus. The ideal candidate is detail-oriented, comfortable with learning new techniques and programs, comfortable with providing hardware support, has good people skills, learns quickly, is project oriented, meets deadlines and works well in a team environment. Overtime should be expected if necessary to meet deadlines. Principal Duties: o Program various sophisticated data-base related projects. o Act as a project leader for various programming projects. o Provide client support. o Train members of PC Support Staff on various aspects of networking, remote access, programming, hardware and program design. o Keep up with those new technologies which will assist the department in improving services. o Program and maintain an in-house, integrated GIC accounting package. o Identify improvements to existing programs and/or procedures. o Perform other related duties as assigned. 9. Position Available: Programmer ----------------------------------------------------------------------- ReplyTo: Kim Anan Scudder, P. O. Box 957, Salem, New Hampshire 03079-0957. Fax: 603-890-4153 Location: Boston, MA Office This position is primarily responsible for providing programming and technical support to the Collective Investment Team. This person should have three (3) years programming experience and a very good working knowledge of FoxPro (or similar PC database package) and DOS. This knowledge should include the ability to carry out a variety of programming tasks, including the design and implementation of custom screens and reports. The successful candidate should be familiar with structured programming concepts and have the ability to provide thorough testing of database applications. In addition, this person should have a working knowledge of Novell Netware, PC hardware, text editors, Word and/or WordPerfect and Windows. A degree in Computer Science or Information Systems would be a plus. The ideal candidate is detail-oriented, comfortable with learning new techniques and programs, learns quickly, is project oriented, meets deadlines and works well in a team environment. Overtime should be expected if necessary to meet deadlines. Principal Duties o Program various database-related tasks. o Perform software testing. o Produce user and technical documentation. o Troubleshoot program related problems. o Work with program users to identify and implement program enhancements. o Perform other related duties as assigned. 10. Position Available: Programmer ----------------------------------------------------------------------- ReplyTo: Kim Anan Scudder, P. O. Box 957, Salem, New Hampshire 03079-0957. Fax: 603-890-4153 Location: Salem NH Office This position is primarily responsible for providing programming and technical support to the Collective Investment Team. This person should have three (3) years programming experience and a very good working knowledge of FoxPro (or similar PC database package) and DOS. This knowledge should include the ability to carry out a variety of programming tasks, including the design and implementation of custom screens and reports. The successful candidate should be familiar with structured programming concepts and have the ability to provide thorough testing of database applications. In addition, this person should have a working knowledge of Novell Netware, PC hardware, text editors, Word and/or WordPerfect and Windows. A degree in Computer Science or Information Systems would be a plus. The ideal candidate is detail-oriented, comfortable with learning new techniques and programs, learns quickly, is project oriented, meets deadlines and works well in a team environment. Overtime should be expected if necessary to meet deadlines. Principal Duties o Program various database-related tasks. o Perform software testing. o Produce user and technical documentation. o Troubleshoot program related problems. o Work with program users to identify and implement program enhancements. o Perform other related duties as assigned. 11. Position Available: The Vision Financial Corporation. ----------------------------------------------------------------------- ReplyTo: Bonnie, Becklo, Human Resource Administrator 55 West Street, P. O. Box 506 Keene, NH 03431-0506 Phone: (603) 357-1450 Fax: (603) 357-0250 The Vision Financial Corporation, a dynamic growth-oriented organization, is seeking to fill a position in our Management Information Department. Qualified applicants would have experience in application development on the personal computing platform, ideally with Clipper. Experience working in a LAN environment is a plus. The idea candidate will possess the following: o Proven analytical skills. o Ability to perform on an individual and team basis. o Life Insurance background. Only individuals with the desire to excel in a professional environment need apply. Submit your resume to the attention of the Human Resource Administrator. Vision Financial Corporation is a Third Party Administrator of individual life insurance, specializing in the payroll deduction market. 12. Thanks from Russia for Fundraising. ---------------------------------------------------------------------- ReplyTo: Nickolay A. Sychov >INTERNET:sychov@vki.nsk.su President of College of Informatics of Novosibirsk State University. We are very pleased to inform you that the money you have sent from Utah ($675) has arrived at "Sibacadembank". Thank you very much! This sum will be used for the training of several gifted students in the program "Young Computer Specialists of Siberia". This program is quite expensive, and your contribution is considered to be a very valuable contribution. You organized and completed a wonderful action. We greatly value our contacts with you and the understanding and support which we have found in you. 13. The Design of Everyday Things: Book Review. ----------------------------------------------------------------------- ReplyTo: Richard Sidney of Natick, MA 01760 USA [76436,1740] Book: The Design of Everyday Things Author: Donald A Norman Publisher Doubleday 0-385-29774-6 Originally: The Psychology of Everyday Things This book is a must read for anyone designing user interfaces, whether for computers or anything else. The author discusses designs that work in the everyday world. An eye-opener. It won't tell you how to design your system, but it helps you think about how people use things, and you gain insight into the problems you may encounter while designing. The author explains the point of the book best in the preface: "This book is intended to make you aware of the problems of designers interested in improving things." In another place, "In this book I urge designers to think about people, to take their needs and interests into account. I also examine failures of design and show why even the best-trained and best-motivated designers can go wrong...". Norman goes on to explain why the change in the title is a case in point of design problems. Some of the discussions in book that are particularly interesting revolve around the concept of "Human Error", "Designing for Errors" and the concepts of "Knowledge in the Workplace" "Knowledge in the Head". All in all, a very important book for anybody designing things to be used in the everyday. 14. Technicon'93 Notes ----------------------------------------------------------------------- ReplyTo: Don Eaton [70253,2632] 'The CA-Clipper Extend System' by Dave Reynolds. C Extend System functions can tell whether a parameter is passed by value or by reference by using the following expression: parinfo(n) & MPTR // Where n = # of parameter This expression will be true if parameter was passed by reference or false if passed by value. Don Caton on 'CA-Clipper API' o As a rule of thumb for allocating space for data using the API's: If data is 256 bytes or less, use the Fixed Memory API functions, else if data is over 256 bytes use the Virtual Memory API functions. o Objects can't officially be received as parameters in C. Actually they can but this is undocumented and they will appear as arrays. o Any Item API functions which return an Item object do an implicit malloc() so itemRelease() must be called to release the Item's memory. Since Items are stored in DGROUP this is especially important. o Clipper arrays referenced in C through Item functions still start with 1 as the first element, not 0 as in standard C arrays. o EvalLaunch() provides an official way for codeblocks (and hence functions) to be run from C functions. Steve Straley from 'Advanced Arrays' o Arrays CAN be passed by value, not just by reference. Arrays passed by value can have their element values reassigned or elements can be added or deleted, but you cannot change the overall array's structure or change the base array's address. Array elements can only be passed by value but there is no real reason that compiler couldn't be changed to allow them also to be passed by reference. o For Init and Exit functions, if you have several of each, the order that the functions will be called is the order in which they were linked. o By placing a call to a PRG's static function in a codeblock and then passing it out of the PRG, that function can be called from outside the defining PRG. o Since Clipper objects are internally arrays, you can aadd() to them. This could be the basis for a form of inheritance. However since it is undocumented, this is of course not recommended. 15. Specification for Converting Xbase to C++ ----------------------------------------------------------------------- ReplyTo: Benjamin Har benjamin@solomon.technet.edu 57 Nim Road, Nim Park, Singapore 2880 Telephone: (65)-541-7849 Fax: (65)-481-2201 This RFC proposes a standard for converting Xbase languages to a common C++ form. The aim is to provide a specification: to port Xbase applications and programs across hardware platforms, operating systems and machine characteristics. It is hope that this specification will enhance compatibility between the different Xbase products available. We are considering such things as a Client-Server model for xbase, SQL support, GUI type libraries and so on. If things work out, I think this could be just the thing to get the Xbase users out of their current predicaments. If there is continued interest in what we are doing, I will be glad to publish our xbase C++ specifications for further comment and use by Internet members. I've also read that there is some standards committee work going looking at the Xbase Language. Perhaps they might be interested in what we have attempted to do. We would be happy to help and support the future of Xbase users as much as possible. 16. 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 7,500 persons world-wide participate with CA-Clipper, Microsoft Access and FoxPro. 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 authors or 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 BCNN and the individual author are 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 603-253-7214 //-Messages Only 24 hours 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. 101 First Avenue, Suite 2 Waltham, MA 02154 617-290-5700 General Number 617-290-5700 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. Address Change: Email using OLD Address. Indicate New Address. Back Issues: CompuServe CLIPPER Forum, LIBS 1 and 17. FTP samba.iss.uw.edu.pl (CD pub/clipper/bcnn) BCNN Email Services donated by Word Jenny, Inc. LSquires@World.Std.Com (c) 1994 Boston Computer Society, Inc.