PowerTimes 6/6 - Nov
Transcription
PowerTimes 6/6 - Nov
JOURNAL FOR PEOPLE INTERESTED IN CLIENT/SERVER AND INTERNET APPLICATION DEVELOPMENT WITH THE SYBASE TOOLSET NOVEMBER /DECEMBER 1999 PRICE: US$ 7.50 VOL. 6 / ISSUE 6 Contents Guest Editorial: DevelopIT by Warren Clayburn, Chairman UK PBUG Impressum on Page 2 Head to Head: PowerDesigner vs. ERwin by Michael Nicewarner on Page 4 PFC Place: Date Standards by Boris Gasin on Page 12 COM Knowledge:Component Futures DEVELOP IT by Alan J. Walsh on Page 17 Guest Editorial by Warren Clayburn Internet Aware: How to make your PB application more powerful If you have not yet heard about DevelopIT, we would like to extend an invitation to you and tell you a little more about the event. by Roy Kiesler and Reed Shilts on Page 21 Useful Tools: Creating ActiveX Components with JazzAge DevelopIT is a European User Conference and Exhibition which will take place on the 20 & 21 March in London. With an agenda put together by the European PBUG’s & SUG’s, DevelopIT will be a learning environment with a multi-tracked agenda, which will provide you with excellent technical presentations from well known independent speakers and Sybase Technical Evangelists. The event is supported by Sybase and will be the only European conference in 2000. by Martin Rothenberger on Page 25 Book Review: Jaguar Development with PowerBuilder from Michael Barlotta reviewed by Boris Gasin on Page 30 Little Helpers of the Year Award 1999 by Arthur Hefti on Page 31 Four of the Open Tool tracks have been devised to give you a full life cycle experience on: • Web development • Client/Server development • Distributed component development • Java development Little Helpers: VersionEdit by E. Crane Computing reviewed by Arthur Hefti on Page 33 User Group Section on Page 35 http://www.powertimes.com The fifth Open Tool track will have an assortment of miscellaneous topics and running alongside will be two DBA tracks and a Mobile Computing track. We hope there will be plenty to offer to anyone who is developing with Sybase technology and a unique opporContinued on page 2 Page 1 tunity for the users from Europe to join together for the first independent user event. Booking information and full programme details will be available on the www.pbug.co.uk Web site later in December. We will be sending letters and mailers to each country President for circulation in early January and the UK members will receive their usual mailings and booking form 8 weeks before the event. We look forward to welcoming you to the UK and meeting you at DevelopIT. Impressum PowerTimes is an international PowerBuilder Journal published 6 times a year mainly destined to PB User Groups worldwide. If your User Group does not subscribe to PowerTimes and you would like to receive it, then you can subscribe to it on an individual basis. Contact addresses: Editor: Rolf André Klaedtke Bächlistrasse 21 CH-8280 Kreuzlingen / Switzerland Fax: ++41 - (0)71 - 670 01 71 e-mail: rak@powertimes.com Co-Editor: Mark A. Lansing Eichmatt 17 CH-6343 Rotkreuz / Switzerland Fax: ++41 - (0)41 - 790 74 79 e-mail: mlansing@powertimes.com Warren Clayburn Chairman UK PBUG On the web: http://www.powertimes.com Column responsibles: Little Helpers: Arthur Hefti arthur@catsoft.ch PFC Place: Boris Gasin bgasin@dynamictechgroup.com Know How: Bernie Metzger bmetzger@kevsys.com As we’re approaching the last day of the year 1999, we would like to thank all our authors who have spent many hours of their time to write for PowerTimes. Our thanks also go to you, the readers, for your interest and support and to our advertisers, who help to make it possible. Distributed Ways: Sean Flynn sflynn@goinfinity.com COM Knowledge Alan Walsh alwalsh@indiana.edu As the founder and publisher of PowerTimes, I would like to especially mention my partner and friend, Mark Lansing and his lovely wife, Evelyn Lansing, and their kids, Ryan and Chiara. Mark dedicates a lot of time to make PowerTimes a real thing. EASy Does IT William B. Heys Bill.Heys@whittman-hart.com Yes, it’s that time of the year again, where Arthur awards the Little Helper of the Year to the best product that he has reviewed during the past months. He also gives an overview and an update of all the products reviewed. Thanks, Mark for your incredible work and friendship and Evelyn for your patience with us two guys ! Rolf André Klaedtke Subscription rates: Individual: User Group: US$ 45 per year US$ 750 per year For user group subscriptions, the group has the right to distribute PowerTimes to their members in an electronic or printed form at no extra charge ! PowerTimes is produced as an electronic document in Adobe Acrobat format. Disclaimer: Articles or opinions published in PowerTimes do not necessarily reflect the opinion of the editorial team. They reflect the opinion of the submitter. We assume that the copyright of all submitted articles is owned by or granted to the submitter. We must decline every responsability regarding technical correctness or truth of submitted articles and opinions. Page 2 We from PowerTimes would like to wish all our authors, readers, and advertisers good health and success for the coming year. Mark Lansing Thank you for your support of and interest in PowerTimes ! Rolf André Klaedtke Page 3 P OWERDESIGNER VS. ERWIN by Michael Nicewarner Introduction The purpose of this article is to compare PowerDesigner against ERwin at a very detailed technical level. This will cover process and data modeling functionality as well as overall tool stability and performance. Philosophy There is a considerable difference in the basic philosophy behind the two tools. PowerDesigner uses a conceptualphysical methodology while ERwin uses logical-physical. Conceptual data models (CDM) are a level of abstraction above logical data models (LDM), and are completely separate from the physical data model (PDM). Entities in a CDM are business “things” that are important enough to describe. The relationships are also at a business level. Attributes describe the entities in business language. All of this is intended to communicate at the business user’s point of view without getting confused with database implementation issues like indexing and foreign keys. The LDM is closer to the database, being considered by most to be a link between CDM and PDM. However, since ERwin doesn’t allow a true CDM, it reduces the usefulness of the tool in communicating with the business user. At the physical level, ERwin makes the modeler choose between a standard PDM and a dimensional data model (DDM), when in fact a DDM should be a completely separate idea. Specifically, a DDM gets its data from a set of source PDMs, and needs to model the data transformations from the PDMs to the DDM. For instance, I could have two PDMs, representing American and Canadian subsidiaries. The structures are unique because of governmental requirements and have all prices in local currency. To consolidate this into a data warehouse DDM, I would need to convert the currencies in at least one of the PDMs into a common currency. This happens with time zones and many other measurements. With PowerDesigner this is a simple structure to model while in ERwin it would be impossible. Figure 1 below shows that the differences are obvious and fundamental. History - PowerDesigner PowerDesigner started life as S-Designor, which was written by Xiao Wang of SDP Technologies, a French company that was started in 1983. Powersoft purchased SDP in 1995 and Sybase purchased Powersoft later that same year. Sybase currently owns all rights to PowerDesigner. The first commercial release of S-Designor (version 2.0) in France was in 1989 and in the US in 1992. ProcessAnalyst was added to the suite in 1996. The first version of PowerDesigner (V6.0) was released in 1997. WarehouseArchitect was added in 1997. The latest version of the PowerDesigner suite (version 6.1.4) was released in May of 1999. History - ERwin ERwin was created by Logic Works, which was founded in 1988 by Professor Ben Cohen. Platinum purchased Logic Works in 1998 and Computer Associates purchased Platinum in ’99. PowerDesigner CDM Loosely connected PDM ERwin Loosely connected DDM PDM LDM Tightly connected Either, but not both DDM Figure 1, Tool Philosophy Page 4 ✂ GET YOUR WEB APPLICATIONS ROLLING, WITHOUT ALL THOSE PESKY IN - BETWEEN STEPS. Introducing PowerBuilder 7.0 and Enterprise Application Server 3.0. Together, they offer the fastest, easiest way to assemble, test, and deploy scalable, thinclient applications for the Web. You not only take advantage of a highly productive development environment that leverages your existing skill sets and technology. You’ll also deploy more scalable, more secure applications, from Web to N-tier architectures. It all adds up to the most powerful way to take your business to the Web. For details on EAServer and PowerBuilder, call 1-800-8-SYBASE, or visit www.sybase.com/sdn. ©1999 Sybase, Inc. All rights reserved. All trademarks are the property of their respective owners. Testing Environment The first commercial version of ERwin was released in 1990. The latest version of ERwin (version 3.5.2) was released in May of 1999. The first version of BPwin was released in 1994 and the current version (2.5) was released in August of 1998. Physical Attributes The test machine is a 400 MHz PII system with 128MB of memory and a 14GB drive. The system was rebooted between tests to verify the time-based results were accurate. TaskInfo 98 was used to get the memory sizing information. Time to Load from DDL Both tools are enterprise-level modeling tools, so most variances in performance and graphics are actually fairly minor. The following sections compare the tools against one another with respect to the physical implementation of their respective model management techniques. Minimum System Requirements OS PowerDesigner ERwin/BPwin Win 3.x 80486 processor 8 MB RAM VGA monitor CD-ROM drive 14MB disk space Does not support 16bit operating systems Win 95, 80486 processor 98, NT 12 MB RAM VGA monitor CD-ROM drive 14MB disk space 80486 processor 16 MB RAM (32 MB RAM recommended) 10MB disk space A script with a specific number of tables was created, then loaded (reverse engineered) into each tool using the default settings and a target DBMS of IBM DB2/MVS 4.0. The results are that ERwin loads larger DDL scripts faster than PowerDesigner. Time to Save File The resulting model from step one was immediately saved as a new file and the elapsed time recorded. The results are that PowerDesigner saves files faster than ERwin. File Size Once the file was saved, the size of the file was recorded. The results were that PowerDesigner has much smaller files than ERwin. Time to Open File After rebooting the machine, the file created in step two was reloaded and the elapsed time recorded. The results were that PowerDesigner loads the files much faster than ERwin. Table 1, Minimum system requirements Raw Performance Memory Footprint In short, both tools use a proprietary file format (PowerDesigner is text-based while ERwin supports both text and binary) and can handle very large models easily. There does seem to be a significant difference in both file size and memory footprint between the tools, with PowerDesigner using space far more efficiently. Base memory for PowerDesigner without any model open was 10,904KB while ERwin was 22,696KB. ERwin’s models were also almost twice the size of PowerDesigner’s models, but this is mainly due to the fact that ERwin stores both the logical and physical information in the single file. Although PowerDesigner was slower to reverse engineer DDL, it was much faster at opening and closing the models. Immediately after the file was loaded, the memory footprint of the data, excluding the code mentioned earlier was recorded. The results were that PowerDesigner requires less memory for the model than ERwin. PowerDesigner ERwin Access method File-based File-based File format Proprietary text file Proprietary text or binary file Max. objects per model 100 million Limited by memory & hard drive space Base memory footprint Code 7.42 MB Data 3.6 MB Code 17.5 MB Data 5.2 MB Stability Within the context of the performance tests, both tools completed all tests with no system errors of any kind. However, it was apparent that ERwin had a tendency to have graphic problems. These were mainly related to line redraws when dialog boxes were opened or the model was moved on-screen. This behavior could be attributed to the hardware configuration, but was tested on 3 different systems with the same results. The graphic problem was very minor and may not even be noticed by most users. When ODBC or other direct links were used to reverse or forward engineer a database, there were typical vulnerabilities to the third party software. However, the Intersolv drivers shipped with PowerDesigner are considered extremely stable and, as in the case of the Oracle database, many vendors recommend using Intersolv drivers rather than their own ODBC drivers. Table 2, Performance data Page 6 Features and Functionality Basic performance is only one indicator in comparing design tools. The features a tool offers can balance many performance problems, although the absence of certain features make even top performance irrelevant, since the desired function is either impossible or extremely difficult to accomplish. Supported Platforms For clarification purposes, “support” means that the tool can both create objects for and reverse engineer objects from the specified database. PowerDesigner supports the most database platforms. However, ERwin does include the ability to directly connect to some databases, notably Sybase’s SQL Server via dblib or ctlib. PowerDesigner ships with a full set of Intersolv ODBC drivers while ERwin users must buy the drivers separately. Also, worth noting is that PowerDesigner uses “definition files” to store most DBMS-specific information, so a user can tailor a definition file for their own database and have that appear on the list of databases automatically. ERwin’s list of databases is coded into the application. Supported Methodologies The tools differ in their implementation of relational theory so it is worthwhile to point out these differences in methodology and notation. ERwin is founded primarily in the Integration Definition for Information Modeling set of standards while PowerDesigner is based on the Information Engineering/Relational concept. Note that BPwin far surpasses ProcessAnalyst in every way, being a fully functional process modeling tool. ProcessAnalyst, on the other hand, is a data flow diagram tool with very limited functionality. PowerDesigner ProcessAnalyst • Object Functional Model Notation (from the Object Modeling Technique) *Note that this is notation only. • Yourdon/DeMarco • Gane & Sarson • Structured Systems Analysis and Design Method (SSADM) • • Information Engineering (IE) DataArchitect Physical • Relational • COnference on DAta SYstems Languages (CODASYL) WarehouseArchitect • Dimensional Modeling Dimensional Modeling ERwin BPwin • • • IDEF0 (Integration DEFinition for Infor-mation Modeling) IDEF3 Gane & Sarson Erwin • IDEF1X • Information Engineering (IE) • Dimensional Modeling User Interface When S-Designor first came on the market it was highly praised for its innovative user interface. PowerDesigner still sports this intuitive design. The graphic design features built into PowerDesigner are comparable to many commercial drawing tools. ERwin has a slightly more cumbersome interface, with some functions in hard-to-find places. There is much less control over graphic objects and fewer notation options available. Ease of Use These features include those that make the tools particularly easy to use. This includes being able to add additional graphic objects to the model to help explain or identify objects. DataArchitect Conceptual Information Engineering (IE) Continued on page 8 Page 7 What PowerDesigner ERwin Object placement High degree of control Basic control but lacking in reference line control Freeform text Yes Yes, but cannot store special characters (tab, etc) in the text Boxes, polygons and lines Yes, can place any graphic with text on the diagram No Symbol, text, and line color and other graphic highlighting Yes Yes Line and symbol outline style Yes Limited since no graphic-only lines Text font, sizing and alignment Yes Yes Auto-layout No, but there are options to evenly distribute the symbols Yes, both as a part of the reverse engineering process and on-demand from a menu Vertical and horizontal alignment Yes, left, center, right and top, middle, bottom No Grid and snap-to-grid No Yes, but the grid is invisible Group and ungroup, arrange, back and front, protect and unprotect Yes, any symbols and/or graphic objects can be grouped, protected, moved behind/before others No, there is no way to group symbols, evenly distribute them, move them behind/before other symbols or protect them from accidental modification Help facility Yes, standard help Yes, advanced on-line tutorial and product walk-through On-line documentation Yes, available for free via the Sybase web site None was found Table 3, Features for ease of use Windows Features These features are specific to the Windows operating systems and the concern is that the tools will interoperate with other Windows applications seamlessly and have a common look-and-feel when compared with other software typically found on user workstations. What PowerDesigner ERwin Object Linking and Embedding (OLE) Yes, both as client and server No Cut, Copy and Paste to/from windows clipboard Yes Yes, also has ERwin-specific clipboard to copy model information between vendor tools Drag and drop No Yes, just with the mouse moves the attribute/column while CTRL-mouse copies the object Toolbars and dialog boxes conform to Windows standards Standard layout, but static. No customized toolbar capabilities. Standard layout, but static. No customized toolbar capabilities Field-level help Yes No Dockable toolbars No No Undo/Redo Yes No Multiple Document Interface (MDI) more than one model open at a time Yes Yes Graphic printing Yes, standard Windows printing capabilities Yes, standard Windows printing capabilities Table 4, Windows features support Page 8 Modeling Features These features are advanced modeling capabilities that make some complex modeling tasks possible and the rest much easier. What PowerDesigner ERwin Menu add-ins No Yes, ERwin has an open API and links with 3rd party vendors to extend Conceptual data items independent of entities Yes, can import lists of data items and work with them independently No, must create attribute/column in context of entity/table Graphic synonyms or duplicates of objects Yes No Compare with database No, although there are way to accomplish the task Yes, full database synchronization capability, bidirectional Model Validation Yes, very powerful model checking facility with controlled automatic updates to the model There are available reports that provide this information, but no single validation function DDL Customization Yes, through definition files have good control over resulting DDL appearance No Volumetrics Yes, basic sizing abilities Yes, complex sizing and future growth estimation Stored Procedures Yes, can create them and make templates for common code blocks Yes, can create them and reverse engineer them Triggers Yes, can create them and make templates for common code blocks Yes, can create them and reverse engineer them Test Data Generation Yes, with good control over datatypes and referential integrity No Table 5, Advanced modeling capabilities Dimensional modeling PowerDesigner PowerDesigner’s WarehouseArchitect is a full-featured dimensional modeling tool tightly integrated with a number of OLAP databases and end-user tools. The list of OLAP tools includes: • Cognos PowerPlay and Impromptu • Arbor Essbase • Microstrategy DSS Agent • Oracle Express Distinct support of some OLAP databases is included to take advantage of each database’s strengths, such as different indexing schemas and partitioning. One of WarehouseArchitect’s strengths is the ability to accurately source a model from various other physical models. In a typical environment, there may be a number of transactional or legacy models that feed into a single warehouse model. The transformations, calculations and summarizations can be accurately modeled in WarehouseArchitect. ERwin ERwin provides the basic functionality to do dimensional modeling, but doesn’t include any of the integration features noted in PowerDesigner. Also, since the modeling technique has a one-to-one relationship between the logical and physical models, it is difficult to accurately model a complex data warehouse derived from multiple source databases. Reporting Both tools have some sort of reporting facility. The basic purpose of this facility is to generate model-level documentation. ERwin seems to lack some of the higher-end documenting capabilities to be expected in an enterpriselevel modeling tool. PowerDesigner PowerDesigner has a report editor where users can modify the layout and contents of a report, then save the report either embedded in the model or separately as a common report shared by many models. PowerDesigner ships with a few common report layouts, simple lists and complete model documentation. The level of control over the reports is very good, allowing simple “list of” reports and exhaustive model documentation. The reports are, by design, limited to a single model per report. The user has control over many report elements, which can be included in a report repeatedly. PowerDesigner has the ability to export the report to HTML or Rich Text (common word processing format). There Page 9 are some limitations, such as sizing submodel graphics to fit on the pages when the submodels have differing page scales. ERwin ERwin also has a report editor that can create fairly simple reports, but it doesn’t have the ability to create a single model-level report with all documentation. All sections have to be generated one by one and then combined. It does have a distinct advantage that it can look at either the ERwin file or the ModelMart repository, including other Platinum tools that share the repository. ERwin does include the ability to report on all of the model objects except for the formatting options (table of contents, titles, etc.) seen in PowerDesigner. Repository Both tools have some form of repository functionality, but implement it in different ways. PowerDesigner uses MetaWorks, a set of relational tables that can be loaded into almost any ODBC-compliant DBMS. ERwin uses ModelMart, a similar set of relational tables that can also be loaded on a database. However, ERwin is limited to Sybase System 10/11, Microsoft SQL Server version 4/6/ 7, Oracle version 7/8 and Informix version 7/9. ModelMart was more difficult to install, having a tighter integration with the target database while MetaWorks was a slow performer because of the ODBC interface. PowerDesigner MetaWorks provides the following functionality: • Browse all models in the database • Merge any portion of any model with any other model • Extract and consolidate models/submodels from/to the database There is no impact analysis or version control function, although the model files themselves can be versioned outside of MetaWorks with any version control product on the market. The MetaWorks tables are accessible via ODBC or any other method available on the target DBMS, and the PowerDesigner suite does include a copy of InfoMaker which can be used to create and maintain reports from MetaWorks. ERwin ModelMart provides the following functionality: • Browse all models in the database • Merge models of various types (BPwin and ERwin) • Check out and check in of models Versions and Pricing PowerDesigner PowerDesigner 6.1.4 DataArchitect ProcessAnalyst WarehouseArchitect Base / Maint. Price $2,495 / $950/yr $1,495 / $570/yr $4,995 / $1900/yr ERwin ERwin 3.5.2 BPwin 2.5 Base / Maint. Price $3,495 / $695/yr $2,495 / $425/yr Conclusion In conclusion, both of these data modeling tools are very popular and provide the user with many useful functions. However, PowerDesigner has a more elegant user interface and functions that are easier to find and use for a novice. With its advanced control over graphics and its stronger reporting facility, PowerDesigner produces better quality documentation than ERwin. ERwin is stronger in the “round trip engineering” area, supporting DBMS synchronization and advanced volumetrics that PowerDesigner lacks. BPwin is a much better tool than ProcessAnalyst at modeling business processes and functions. WarehouseArchitect runs rings around ERwin’s weak dimensional modeling capabilities. On all types of models, PowerDesigner seems to open and save the files faster and use system resources more efficiently. The ModelMart repository is more sophisticated than MetaWorks, but MetaWorks is compatible with a wider range of target DBMSs. The fundamental difference in philosophy concerning conceptual and logical models and the limitations ERwin enforces concerning attributes and data items gives PowerDesigner a significant edge when creating businessoriented models and maintaining multiple physical models from a single conceptual model. ? Michael Nicewarner is a Database Design Manager at IBP, inc. with 12 years of experience in data processing, specializing at times in mainframe development, configuration management and database administration. He is a member of TeamSybase, a group recognized as being experts with Sybase products and commissioned to assist users with technical problems. Before his involvement with Sybase, Mike was a user of S-Designor, ERwin and a host of other modeling tools. This background gives him a unique perspective and a strong voice in the modeling community. Note from the editors: this article appears in PowerTimes, by kind permission of Michael Nicewarner and Sybase, in a condensed version from the original. The original article can be found on the PowerTimes web site (www.powertimes.com) in the download section. Page 10 Page 11 DATE STANDARDS by Boris Gasin Introduction One more month until year 2000! I don’t know about you, but I am glad it’s almost over. No I am not talking about Armageddon, I am talking about the Y2K panic. The monotonous Y2K testing, obscene amounts spent on Y2K initiatives, shrinking IS development budgets, development freeze are just a few things I am not going to miss…But because I am an optimist I have learned that there is always a bright side. We all have become more aware of date related issues. In fact most of the date related issues I found while performing Y2K testing had nothing to do with Y2K bug. A lot of these bugs came from the conversion errors from dates stored in other data types, misunderstood date processing rules, and dissimilar standards. Yes right now we are all singing to a different tune. But the world is shrinking. Within a year most of us will be working on global applications. By necessity we will be forced to comply with international date standards. In this month’s article I will examine the history of date keeping, highlight today’s prominent date standards and how they relate to the PFC’s datetime service. Calendar History Most calendars are based on astronomical events, specifically solar and lunar cycles. The concept of a year is based on the earth’s motion around the sun. The time from one fixed point, such as a solstice or equinox, to the next is called a tropical year. Its length is approximately 365.24219 days. The concept of a month is based on the moon’s motion around the earth. The time from one new moon to the next is called a synodic month, and its length is currently 29.5305889 days. The Christian calendar is based on the motion of the earth around the sun, while the months have no connection with the motion of the moon. The Islamic calendar is based on the motion of the moon, while the year has no connection with the motion of the earth around the sun. Finally, the Hebrew calendar combines both, in that its years are linked to the motion of the earth around the sun, and its months are linked to the motion of the moon. The Julian calendar was the 365-day calendar that Julius Caesar made official in 46 BC. It replaced a calendar based on lunar cycles. The Julian calendar provided for a leap year with an extra day every four years. However the Julian calendar was not perfect. By 1582 AD the Julian calendar had become out of step with the seasonal cycle by 10 days. The Gregorian calendar was introduced in order to reform the method of calculating dates of Easter. Under the Julian calendar, the dating of Easter was based on March 21 as the date of the equinox. By the thirteenth century it was realised that the true equinox had regressed from March 21 to a date earlier in the month. As a result, Easter was drifting away from its springtime position and was losing its relation with the Jewish Passover. Over the next century, the time for celebrating Easter was hotly debated. In October, 1582 Pope Gregory XIII had approved a new calendar named after himself. 10 days were dropped from the calendar. October 4, 1582 was followed by October 15, 1582. The Gregorian calendar provides better accuracy in relation to the tropical year and it is the calendar we use today. It takes approximately 3300 years for the tropical year to shift one day with respect to the Gregorian calendar. The approximation 365 97/400 is achieved by having 97 leap years every 400 years. However, not all the countries had adopted the Gregorian calendar right away. While the transition to Gregorian calendar happened immediately in Catholic countries, Protestant and Orthodox countries were reluctant to change. England has adopted the calendar in 1752 while many Slavic countries and Greece didn’t change until the start of this century. Here are some of the latecomers: Albania: Bulgaria: China: Estonia: Greece: Latvia: Lithuania: Romania: Russia: Turkey: Yugoslavia: 1912 1916 1912 or 1929 1918 1924 1915 to 1918 1915 1919 1918 1927 1919 Because Julian calendar was falling out of synch by one day every 128 years, the countries implementing the change in 1900s had to drop 13 days instead of 10 originally suggested in the 1500s. Also, each country may have selected to drop a different date range. For example in Greece 9 March 1924 was followed by 23 March 1924, while in Russia 31 January 1918 was followed by 14 February 1918. Just imagining the confusion caused by dropping 10 – 13 Page 12 days from the calendar I feel a little better about our problems with Y2K issues. If you think this problem pales in comparison to the millennium bug, tell it to the Russian Rifle Team which showed up 12 days too late for the 1908 Olympics! However, that is history. In most countries the Gregorian calendar has been around for long enough and that “holes” in the dates are probably not an issue. Nevertheless, if you are working on a global application and plan to deploy in one of the countries mentioned above, it helps to be aware that the “holes” in the calendar may have occurred as early as 80 years ago with the exact position varying from one country to the next. The Julian date is probably the least of our worries. Today we are facing many other problems caused by inconsistent date standards. Other Date Standard Variations If you tell your client that the invoice is due to be paid on 01/12/99 what does that mean? As long as you are in the same country you are safe. But if you are in US and your client is in Europe this may mean that you are not going to get paid for a year! Based on a convention, the above date can be interpreted as December 1, 1999 or January 12, 1999. What is the first day of the week? Is it Sunday or Monday? The origin of a 7-day week is not clear. Some base the 7-day week on Genesis. The Bible states that God created the world in six days and rested on the seventh. This seventh day became the Jewish day of rest, the Sabbath or Saturday. Other sources point to Egypt, Babylon, Persia, or Rome as the origin of a 7-day week, places in which Judo-Christian beliefs were not shared. Before I get too deep and offend one or another religion I’ll concede that there are different conventions, with two major ones considering Sunday or Monday as the first day of the week. If you want to calculate the week number for a specific date where do you start? Is the first week the one containing January 1st? Or is it the one with 4 days in the new year? ISO 8601 Standard The ISO 8601 standard specifies date and time notation which helps to eliminate the confusion in international communication. A complete standard may be downloaded from the ISO website at http://www.iso.ch/markete/ 8601.pdf Here are some of the highlights: Date Display The international standard date notation is YYYY-MM-DD For example, January 15 of the year 2000 is written in the standard notation as 2000-01-15 ISO 8601 also specifies a few alternative date formats. The hyphens can be omitted 20000115 A 2-digit year representation is available: 00-01-15 or 000115 It also allows for display of only a month and a year: 2000-01 or 2000 If you find this standard difficult to remember, just keep in mind that the date is displayed from the largest unit to the smallest, left to right. This makes it consistent with the time display, which is more consistent across the continents. Time Display The time is displayed in the hh:mm:ss format. The hours are specified in a 24-hour range. AM or PM suffixes are not allowed. 24:45:53 Time Zones Whenever date or time is displayed across timezones, the time is expressed in Universal Co-ordinated Time or UTC. UTC, formerly known as Greenwich Mean Time, is designated by appending a ‘Z’ suffix. Whenever both date and time are displayed together a letter T precedes the time component. 2000-01-15T24:45:53Z One interesting fact is that ISO 8601 went to great length to specify date format in number of weeks. For example one may specify a date as: 1995-W16-3. The above means the 3rd day of 16th week of year 1995. Which brings us to the week numbers. Week Number Below is the ISO definition of a week and its number: “week, calendar: A seven day period within a calendar year, starting on a Monday and identified by its original number within a year; the first calendar week of the year is the one that includes the first Thursday of that year. In the Gregorian calendar this is equivalent to the week which includes 4 January”. This yields some interesting results. Take a look at the day of the year and the week of the year numbers represented by a table below: where YYYY is the year in the Gregorian calendar, MM is the month of the year between 01 (January) and 12 (December), and DD is the day of the month between 01 and 31. Page 13 1999 1 Mon 340 347 354 361 W49 W50 W51 W52 2 Tue 341 348 355 362 3 Wed 342 349 356 363 4 Thu 343 350 357 364 5 Fri 344 351 358 365 6 Sat 345 352 359 1 //*************************************** // Modifications: // Date Author Comments //——————————————————— // //*************************************** integer li_rc li_rc = DayNumber( ad_date ) 7 Sun 346 353 360 2 Table 1, ISO Representation of the last 4 weeks of 1999 Note that January 1st and 2nd of year 2000 actually are a part of the Week 52 of 1999. So according to ISO the 200001-02 and 1999-W52-7 represent the same date. // Convert to ISO IF of_get_mode() = ISO then // ISO is a constant li_rc — IF li_rc = 0 THEN li_rc = 7 END IF RETURN li_rc PFC DateTime Service Finally… I bet by now you forgot this was a PFC column. Well, to reward those who have made it through the monotony of standards I’ll even throw in some code samples! What if you choose to go with ISO 8601 date standards? How will it affect a PFC application? Is PFC ISO compliant? Unfortunately the answer is no. One of the issues with PFC’s datetime service is that it relies on the US conventions. Let’s examine the datetime service. If you decide to perform calculations according to the ISO 8601 standard some of the functions need to be overridden or overloaded. One of such functions is of_WeekNumber(). As mentioned previously according to ISO 8601 the 1st week of the year is a 1st week which has 4 days in the new year. Also Monday is considered to be the first day of the week. Before calculating the week number I needed to know the day number in the ISO format. I have created the of_daynumber() function which returns a day number based on the current mode. The PFC’s of_dayofweek(), which was marked obsolete in 6.0 may be resurrected and used for the same purpose. //*************************************** // Method: of_daynumber // Author: B. Gasin // Date : 11/10/99 // // Arg : // Return: integer // // Desc : Function returns number of the // day in the week // ISO US // Mon = 1 The algorithm for the week number calculation has proved to be a little tricky. Up to first three days in January may belong to a previous year. Some years may contain 53 weeks while others may have 53. To determine the week number I went with the “Brute Force” approach. First calculating a starting point, a Thursday either preceding or following the date in question. Next I counted the weeks backward until the beginning of the year.. //*************************************** // Method: of_isoweeknumber // Author: B. Gasin // Date : 11/10/99 // // Arg : ad_date // Return: integer // // Desc : Determines the week number of // a date according to ISO // standard. // ISO Rules: // - Monday is a 1st day of the week // - 1st week of the year is considered // to be the first week with 4 days // //*************************************** // Modifications: // Date Author Comments //———————————————————// //*************************************** date ld_date Integer li_year, li_prev_year Integer li_day, li_week ld_date = ad_date li_day = of_DayNumber(ld_date) 2 // Tue = 2 3 // Wed = 3 4 // Thu = 4 5 // Fri = 5 6 // Sat = 6 7 // Sun = 7 1 // DO WHILE li_day <> 4 IF li_day < 4 THEN // Mon - Wed. Go to next Thur. ld_date = RelativeDate(ld_date, 1) ELSE // Thur - Sun. Go to prev Thur. ld_date = RelativeDate(ld_date, -1) END IF li_day = of_DayOfWeek(ld_date) LOOP li_year = Year(ld_date) Page 14 adopted in other national standards: // Count weeks backwards until the // previous year DO li_week++ ld_date = RelativeDate(ld_date, -7) li_prev_year = Year(ld_date) LOOP UNTIL li_year <> li_prev_year European Norm United Kingdom USA Japan Germany EN 28601:1992 BS EN 28601:1992 ANSI X3.30-1985 JIS X 0301-1992 DIN 5008 Return li_week If you are working on a global application it looks like ISO 8601 is your best bet. Conclusion There is a strong movement toward the stardanization of date and time measurement. Hopefully this movement will be greatly accelerated by the Internet and the global nature of future business. Should you drop your current date conventions and go with the ISO 8601 standard? I wouldn’t go that far. In the past this decision was driven by the application users. In many cases they have their own well-defined and unique date standards. The TV broadcasting industry is one example. Perhaps your users have specific rules for payroll driven date standards. In cases such as these you have to wait for your industry to switch to the standard before you do. However, more and more we will be working on applications which do not have a well-defined user base. The web based Enterprise Portal applications reach out to global communities. In this case we have to rely on international standards. The ISO 8601 standard has already been widely ? Boris Gasin is a Chief Technology Officer at Dynamic Technology Group, a New Jersey based consulting company specialising in Internet and Client-Server technologies. Boris is a member of Team Sybase and is a three time winner of the Team MVP award. Boris is a co-author of PowerBuilder Foundation Class Professional Reference published by McGraw-Hill, ISBN # 0-07913267-7 and a contributing author of the PowerBuilder 6.0 Secrets of the Masters by SYSCon Publishing. He can be reached via email at bgasin@dynamictechgroup.com. Page 15 For More Information Fax back this reply, or call our sales team. Phone: 041 760 5071 Fax: 041 760 1707 Name Company Function Department Phone Fax E-Mail SYAP AG, Dorfstrasse 38, Baar CH-6340. Phone: 041 760 5072 Fax: 041 760 1707 Web Site: www.syap.ch COMPONENT F UTURES by Alan J. Walsh The Next Big Thing Don’t you hate those articles that you see all the time in trade magazines that talk about the next big thing? The columnist goes on about something that they think is going to change the way you and I write software. I hate it too. And as I sat down to write this last article of the millennium I had my mind made up on a very straightforward technical article. But there was something gnawing at the back of my mind that forced me to do the unthinkable. Something important was happening in the world of components and I felt I had to report on it. Distribution Problems Years ago when distributed PowerBuilder first came onto the scene, I got very excited and I convinced my colleagues that this was how we should be doing all of our application development. We sat down to write our next application and we began creating all of our middle-tier components. After a while it became apparent that this was a lot easier in theory than it was in practice. We learned the hard way that moving data back and forth between physical or even logical tiers was a real challenge. Because of time constraints we were forced to abandon that approach and return to our more traditional development techniques. I was crushed. Years later after I got heavily involved in the COM world, I faced a different problem. Basic COM is pretty simple to learn and implement. You can get your mind around the concepts and start coding stuff pretty quick. Once again I got excited and started trying to convince everyone in my group that we should standardize on COM. There I was in front of a room full of people talking about binary standards and language independence. It was going great. Then someone asked the inevitable question. What About Cross-Platform? Probably one of the most frequently asked questions about COM is the issue of platforms. Everyone knows that COM is readily available on the Windows platform. But what about other operating systems? I used to give people the standard response to this question, about how COM actually was available on other platforms. Software AG has ported COM to several platforms, including OS/390. Microsoft themselves will sell you COM for Solaris. But I knew in my heart that this was not an answer that satisfied people. They were always a little skeptical. And deep inside of me I was a little skeptical too. Let’s face it: today cross-platform means the Internet, and making COM work on every device on the web is a challenge to say the least. There had to be a better answer. A New Perspective Fast-forward to 1999 and people have started talking about a new way to do cross-platform COM. In fact a whole new way to develop internet-ready applications. What’s the secret? The answer lies in the combination of two Internet standards. The first one is familiar to anyone who has ever used a web browser, and the second one just happens to be the buzzword of the year. HTTP The hyper-text transfer protocol is in many ways the foundation of the web. If the web is an information superhighway, then HTTP is the pavement. What makes HTTP so good and why would we be interested in it for application development? For starters, HTTP is supported by every platform on the web. That solves our platform issue right away. If certain people have their way, pretty soon your toaster will support HTTP. And it’s a W3C standard, so no single vendor controls it. Another great thing about HTTP is that it is usually ignored by firewalls. I know I’m not going to make any friends in the security department happy when I say that, but that’s the way it goes. The point is an application based on HTTP will not encounter any security roadblocks, unlike many other protocols (DCOM). Finally, HTTP scales nicely with simple techniques like IP load balancing. With all that going for it, I think you can see why HTTP makes an attractive transport mechanism for our application data. The next step is to find a format for passing that data. Let’s look at a simple HTTP request: GET /faq.htm HTTP/1.1 Sending this request to the PowerTimes web site will get you the FAQ – a nicely formatted HTML document. Nothing surprising here, HTML is what most web documents are made of and it’s what most web browsers expect to see. But what about our application data? Should we use HTML for that? Let’s look at a snippet of HTML: <strong>New York</strong> Page 17 This is a perfectly valid chunk of HTML that any browser will happily parse. Even a human being can parse it without much effort. But what is it telling us? What are we looking at? New York is a city, but it’s also a county and a state. Which one are we looking at here? The point is we don’t know. While HTML is great for formatting and presenting data, it doesn’t really do anything to tell us anything about that data. If we’re going to be passing data between hosts in a distributed application, we’re going to need a way to pass some descriptive info about that data. In short, we need XML XML XML stands for Extensible Markup Language, and as most of you know, it is one of the hottest topics in IT today. XML is a W3C specification that is based on SGML, or Standard Generalized Markup language. SGML itself is too challenging for most folks, so think of XML as a more user-friendly version. Like SGML, XML is a markup metalanguage – a language for specifying markup languages. This is why XML is extensible, because it allows you to create your own tags. And if you can create your own tags, then you can certainly describe the data in your documents. Let’s look at an XML version of our previous example: the pubs database that comes with SQL Server. So you can see that XML does a nice job of marking up structured data – exactly what we need for a distributed application. And it does it in a nice, somewhat human readable format. Putting It All Together So now that we have the two elements that we need, how do we put it all together in an application? Imagine it like this: our clients send HTTP requests to the server, which processes the request and sends back data in an XML document The client can then parse the document and extract the data in a format that it knows how to use. What does the client look like? Anything that can send and receive HTTP requests. As I stated earlier, this includes just about any device connected to the web. It could be a PowerBuilder application running on Windows 98, or perhaps a PERL script executing on a Linux/Apache web server. And what about the server? Well that’s anything that can process HTTP requests. Your web server should do just fine. Behind the scenes you’ll have a component that retrieves and composes the data. Try using an ASP script or a COM component running on IIS, or perhaps a PowerBuilder component in EA Server. If you are using a Unix/Linux web server try using PERL. <city>New York</city> Making The Call Now we know exactly what we are looking at in this piece of data. Here’s a more complete example of an XML document: There’s no reason that our clients should be limited to simple HTTP requests though. In fact, to make a truly useful application, our clients are going to need to be able to send additional information in their requests. Anyone who has ever built a form on a web page is already familiar with the POST verb in HTTP. Why not utilize this and send XML both ways? So now instead of clients sending simple HTTP GET requests for specific documents, they can send POST requests with XML data that carries with it all of the information that we want to pass in. Let’s look at what a method call might look like in XML: <?xml version=”1.0"?> <Authors> <Author ID=”172-32-1176"> <au_id>172-32-1176</au_id> <au_lname>White</au_lname> <au_fname>Johnson</au_fname> <address>10932 Bigge Rd.</address> <city>Menlo Park</city> <state>CA</state> <zip>94025</zip> <phone>408 496-7223</phone> </Author> <Author ID=”213-46-8915"> <au_id>213-46-8915</au_id> <au_lname>Green</au_lname> <au_fname>Marjorie</au_fname> <address>309 63rd St. #411</address> <city>Oakland</city> <state>CA</state> <zip>94618</zip> <phone>415 986-7020</phone> </Author> <Request> <Object>Authors</Object> <Method>GetAuthors</Method> </Request> </Authors> This is a “well-formed” XML document. It’s well-formed because it follows the basic XML formatting rules, like having start and end tags for each element. You can make a well-formed document “valid” by adding a document type definition (DTD) to it. There isn’t time to go into all the details of XML here, but you can find all you need to know at the W3C web site, which I list at the end of this article. You might recognize the data in this example from Here we are asking for a method called GetAuthors() on an Authors object. On the server side you write the necessary code to parse this and process the request. This exact model is being pushed by a variety of different groups and is rapidly emerging as a new way to build applications on the Internet. It eliminates many of the problems that plague other component and object architectures. This doesn’t model doesn’t replace those technologies; rather it builds on them and extends their reach across the Internet. I’d like to conclude by examining an effort underway to formalize this new development model. SOAP SOAP stands for Simple Object Access Protocol, and it is the result of collaboration between Microsoft and DevelopMentor. Microsoft created COM and DevelopMentor has become perhaps the leading independ- Page 18 ent authority on it, so when it comes to components and application architectures these folks really know their stuff. SOAP uses HTTP for the reasons already stated, and it puts an RPC-like protocol layer on top of that. Of course it uses XML to implement that protocol. Right now Microsoft has only produced the specification for this protocol. DevelopMentor is nearing completion of implementations for Java, COM+, and PERL. Here’s an example of a SOAP request from the specification: POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml-SOAP Content-Length: nnnn MessageType: Call model is that it is entirely based on standards, so anyone can write their own implementation. It seems logical that at some point we will have to come to an agreement on an implementation is we are to reap the maximum benefits. I don’t know if XML over HTTP is the next big thing, but it looks pretty large from where I’m sitting. References W3C (HTTP, XML), http://www.w3c.org SOAP, http://msdn.microsoft.com/xml www.develop.com/soap XMLRPC, http://www.xmlrpc.com http:// ? <GetLastTradePrice> <ticker>DIS</ticker> </GetLastTradePrice> Alan Walsh works for Indiana University. He can be reached at alwalsh@indiana.edu. And the response: HTTP/1.1 200 OK Connection: close Content-Type: text/xml-SOAP Content-Length: nnnn MessageType: CallResponse <GetLastTradePriceResponse> <__return>34.5</__return> </GetLastTradePriceResponse> This is remarkably similar to the simple example that we looked at earlier. The main difference here is the request headers. Notice that they specify a new content type: text/ xml-SOAP. The purpose of these headers is to allow firewall filtering. The SOAP implementations at DevelopMentor also use something called CDL (Component Decryption Language) to provide type information. At this time there is no object activation in SOAP. Components are more or less mapped to URLs, and SOAP passes method calls and parameters. Alan after his presentation on COM at the Swiss PB User Group Meeting in Zurich, November 1998. XMLRPC Another take on this model is found at the XMLRPC site. XMLRPC is kind of like the forerunner to SOAP as most if not all of the folks who are working on the SOAP specification also worked on XMLRPC before that. I encourage you to visit the site, as there are numerous links to interesting implementations. Conclusions I hope this article has spurred some interest in this new model for application development. This movement seems to be gaining critical mass as more and more companies jump on board the XML bandwagon. I leave it up to you to decide whether or not this holds any use for you. For most of us, doing business on the Internet is no longer an option. And on the Internet HTTP rules. XML seems to be headed in that same direction. Whether you choose to build you own solution is also up to you. The beauty of this Page 19 Tool of the month Client-Server Datenbanken Services PowerBuilder 7 The good news is, the skills you’ve already learned will make you successful as you pursue new opportunities on the Internet. PowerBuilder 7.0 is designed to take you to the next phase of your development career, with all the power and capability that has made PowerBuilder the number one choice for serious business application development year after year. The bridge from client/server to Web and distributed applications PowerGen PowerDoc The essential tool for generating PB applications. Get your self some extra sparetime. PowerGen's breakthrough technology gives you unprecedented flexibility and speed when you building PowerBuilder applications. Recreate your libraries (PBLs) from object source. Use PowerGen to produce all your PowerBuilder deliverables in a single step. Am Borsigturm 48 D-13507 Berlin Germany Phone: +49 (0)30 430 323 50 Fax: +49 (0)30 430 323 55 Email: info@powerpeople.de PowerDoc automates the entire process of generating high quality, technical documentation. With simple, easy-to-understand instructions, you select the PowerBuilder application to document, and PowerDoc does the rest, including the preparation of Table of Contents and Index. PB Spy ImagN’ Get an inner sight of what’s going on in your PB 6.5 Application. Show what you’ve got. More than a debugger. The service-based TreeView and ListView controls are now PB Spy objects with Message Pump and other features. Justin-time debugging has been built into the Message Service and the Action Menu so that you can break into the source code. The family of ImagN’ toolkits takes the headache out of integrating graphics images into your Windows applications! Display BMP, PCX, DCX, GIF, JPEG, Progressiv JPEG, PIC, Targa, and TIFF images using ImagN’s powerful 16 & 32-bit engines. Super FAST viewing and print engine available as an ActiveX or DLL/VCL. HOW TO MAKE YOUR PB APPLICATION MORE P OWERFUL by Roy Kiesler and Reed Shilts HTML is Here to Stay Everybody and anybody these days are navigating the vast reaches of the Internet. The half-decade-long browser war, with heavy casualties on both sides, is still ongoing and ultra-thin client applications are popping up everywhere. So what is a rich-client application developer to do? If you have taken a look at some of the latest web-enabled applications like Microsoft Outlook, you will notice that many areas of functionality, previously implemented as dialog boxes, are now implemented as embedded HTML views, as shown in figure 1 below. Microsoft’s next generation operating system, Windows 2000, takes this paradigm further still, by using Dynamic HTML for system functions such as Find Files or Folders control maintains a history list that allows the user to browse forward and backwards through previously browsed sites, folders, and documents. The control directly handles the navigation, hyperlinks, history lists, favorites and security. You can use it to display many other kinds of files besides HTML, including GIF, JPEG, and AVI files. Applications can also use the Web Browser control as an Active document container to host Active Documents such as Microsoft Word documents or Excel spreadsheets, and edit them in-place. Figure 1, Microsoft Outlook’s Embedded HTML View So how do you implement this latest GUI gadget in your PowerBuilder application? By using the Microsoft Web Browser control... Browser in a Box Using the Web Browser Control We begin by creating a standard visual user object, inherited from OLEControl, which hosts the Web Browser control, as shown in figure 2 over the page. We’ll call our object u_wbc. The Microsoft Web Browser control provides the functionality of a Web browser within the context of a Windows application. The Web Browser control is an ActiveX control in which the user can browse the World Wide Web, as well as files and folders in the local and network file systems. The Web Browser control supports hyper-linking and Uniform Resource Locator (URL) navigation. The Page 21 // is resized. this.Object.Width = UnitsToPixels( & newWidth, XUnitsToPixels! ) this.Object.Height = UnitsToPixels( & newHeight, YUnitsToPixels! ) Loading Documents In order to load HTML pages or other types of active documents, you simply call the Navigate method. The URL passed to this method should always be fully qualified. For example: ole_1.Navigate( & “http://localhost/index.htm” ) ole_1.Navigate( & “C:\Roy\Web Browser\word.doc” ) Navigation As shown in the previous section, navigation using the Web Browser control is easy - simply pass a fully qualified URL or file spec to the Navigate method and presto! Figure 2, Selecting the Web Browser Control Next, we code a number of key events, as shown below. The results are shown in Figure 3. // BeforeNavigate2 – setting arg_cancel // to TRUE will cancel the navigation Yield() arg_cancel = FALSE // Error – default handler. Override in // descendants action = ExceptionIgnore! // ExternalException - default handler. // Override in descendants action = ExceptionIgnore! // resize( integer newWidth, // integer newHeight ) // this is a user event which should be // called whenever the control container The Navigate2 method is identical to Navigate, with the exception of the first parameter, a Win32 VARIANT structure, which is represented as an any data type in PowerBuilder. VARIANT structures provide a uniform “safe” mechanism to pass data between automation servers and clients The BeforeNavigate2 event occurs when the Web Browser control is about to navigate to a different URL, giving the container has an opportunity to cancel the pending navigation, by setting the arg_cancel parameter to TRUE. The NavigateComplete2 event occurs after the Web Browser control has successfully navigated to a new location. The requested document might still be downloading (e.g., images in an HTML page may still be Figure 3, Web Browser Control Demo Page 22 CONSTANT CONSTANT CONSTANT CONSTANT CONSTANT int int int int int ID_PRINT = 6 ID_PAGESETUP = 8 EXECOPT_DODEFAULT = 0 EXECOPT_PROMPTUSER = 1 EXECOPT_DONTPROMPTUSER = 2 // Page setup ole_1.object.ExecWB( ID_PAGESETUP, & EXECOPT_DONTPROMPTUSER, AsStatement! ) // Print ole_1.object.ExecWB( ID_PRINT, & EXECOPT_PROMPTUSER, AsStatement! ) GUI Enhancements If you are implementing an interactive web browser interface, you will need an address bar. For that purpose, the Redmondtonians have created a magic function that will turn any old edit control to a eye-catching, fancy address bar. All you have to do is place a single line edit control on your window and add the following code: Table 1, Navigation Methods downloading), but at least part of the document has been received from the server. The DownloadBegin event is fired after the BeforeNavigate2 event. Typically, it is used to implement a busy processing indication (animation, progress bars, etc.) Further information about the progress of a navigation or download operation can be obtained by handling the ProgressChange and StatusTextChange events. // External function declaration // NOTE: requires Internet Explorer 5.0 FUNCTION long SHAutoComplete( & ulong hwndEdit, & ulong dwFlags & ) LIBRARY “shelwapi.dll” // Open event of hosting window SHAutoComplete( Handle( sle_1 ), 0 ) Next, run the application and type http:// in the edit control and observe the magic… More Interesting Things to Try The DownloadComplete event is fired after the NavigateComplete2 event, when a navigation operation finishes, is halted, or fails. The ExecWB function is extremely powerful. Try to use some of the following constants to see which ones can be used in your application: The GoBack and GoForward methods simply iterate through the Web Browser control’s history list. CONSTANT CONSTANT CONSTANT CONSTANT CONSTANT CONSTANT CONSTANT CONSTANT CONSTANT CONSTANT CONSTANT CONSTANT The Refresh method reloads the current page in the Web Browser control. Using the Refresh2 method allows you to control whether the page is loaded from cache or not. Finally, the Stop method cancels any pending navigation or download activity, as well as dynamic page elements such as sound or animation. int ID_SAVEAS = 4, int ID_SAVECOPYAS = 5, int ID_PROPERTIES = 10, int ID_CUT = 11, int ID_COPY = 12, int ID_PASTE = 13, int ID_UNDO = 15, int ID_REDO = 16, int ID_SELECTALL = 17, int ID_CLEARSELECTION = 18, int ID_FIND = 32, int ID_DELETE = 33, The Web Browser control does not have a Print method, however, you can print its contents using two different methods: One of the least documented features of the Microsoft Internet Explorer browser is its support for the Res protocol, which allows for viewing resources in a Win32 executable or dynamic link library. The syntax for using this protocol is as follows: • res://module filename[/res type]/res id Printing Documents • Set focus to the control and send it a CTRL-P key combination. Use the ExecWB method to send an OLE print command to the control. The following code demonstrates printing the contents of the Web Browser control using the second method: Try the following code snippet to display Internet Explorer’s About dialog in your PowerBuilder: browser: ole_1.Object.Navigate( & “Res://shdoclc.dll/about.dlg” ) Page 23 Want to bring up Internet Explorer Favorites dialog? Here’s how: ole_1.Object.Navigate( & “Res://shdoclc.dll/orgfav.dlg” ) Known Issues Because of a bug in PowerBuilder 6.x, some of the Web Browser control’s events, including BeforeNavigate2, NavigateComplete, and DocumentComplete do not fire. This has been corrected in PowerBuilder 7.x. In addition, the Web Browser control implements a collection of property-setting functions, listed intable 2 , which seem to have no visual effect even though the associated properties are being set appropriately. Many high-end applications are already using the Web Browser control, including Sybase’s own PowerSite, Microsoft Outlook and Outlook Express, Microsoft Money, America Online, and CompuServe. Yours could be next in line! References and Downloads • http://msdn.microsoft.com/workshop/c-frame.htm#/ workshop/browser/default.asp http://download.sybase.com/software/tools/pbuilder/ datawind/47945.zip http://www.powertimes.com/resources/wbc70.zip • • ? Reed Shilts is a member of the PowerBuilder/ PowerJ Kernel Group at Sybase Inc. An “Alpha geek” developer, deep within both PowerBuilder and PowerJ, he spends his time between ActiveX components and Enterprise Java Beans (EJBs). Reed is anxiously waiting for the arrival of his first child that he is adopting from China. Table 2, Property-Setting Methods This may be due to a PowerBuilder issue, or perhaps an OLE implementation issue. I was unsuccessful in my research so far to determine the cause. Conclusion Occasionally it is handy for a PowerBuilder application to have a web browser embedded in it. There are many benefits to integrating HTML with standard Win32 GUI, including: • • • Built-in support for hyper linking, rich text display and style sheets, window scrolling, navigation history, etc. Easier localization – the Web Browser control currently supports 25 different languages. Access to the Internet Explorer document object model, which allows for further use of automation and scripting. Roy Kiesler is a Senior Lead Consultant at Noblestar Systems in Cambridge, MA, a leading provider of strategic information technology business solutions. Roy has been working with PowerBuilder since version 4.0, developing client/ server and multi-tiered applications for the Pharmaceutical, Financial Services and Telecommunications industries. He is a member of TeamSybase, a group of highly proficient Sybase/Powersoft product users, who volunteer their time to answer questions in various support forums. Contact Roy via e-mail at rkiesler@noblestar.com. Page 24 CREATING ACTIVE X COMPONENTS WITH JAZZAGE By Martin Rothenberger, CATsoft Development GmbH Introduction Have you ever thought about creating components out of your existing PowerBuilder applications? A really cool search window, that you could use in all your other applications? Or have you tried to access functionality of other PB applications? Sure, you want a multithreaded component, that is just loaded into memoryonce and can be accessed from all your applications. There are several solutions to these questions. You can use OLE Automation, Distributed PowerBuilder or you can rewrite that part of your application in VB and create an ActiveX Control <g>! There may be other solutions out there, but if you use PowerBuilder to build COM components, you will run into the following problems: • A COM component created in PowerBuilder 6.5 (COM Generator) is always running “in-process”, meaning it is a DLL (PBD is also possible) that is loaded in the same process boundary as the client application is running in. This implies restrictions in application techniques when using PowerBuilder. You are not allowed to use global variables and therefore you also can not use the PFC. This is because there is no EXE running and so no application object is created that you can use with your own script. In fact, the PowerBuilder runtime engine is dynamically instantiating a system class application object with default variables (SQLCA, message,...). • Using PowerBuilder you can not create standalone COM components with a visual interface. These components were originally known as OLE controls or OCXs and are now called ActiveX controls. So what can be done? Our Solution A couple of months ago we found a product called “JazzAge ActiveX Factory” from JAZZAge Software SARL that makes it possible to use an existing PowerBuilder application as a standard ActiveX control. The idea behind JazzAge is that you can use your existing, well known development environment to produce components and wrap them into an ActiveX Control with the JazzAge ActiveX Editor. ActiveXs are standard, language independent components based on the component object model technology from Microsoft called COM. Thousands of ActiveXs have already been developed, covering a wide range of functionality. They can be quickly integrated into a growing number of development tools to produce end- user applications. ActiveXs are highly modular and reusable, but also self documented and automatically distributable through the Internet. ActiveX components are easy to use and integrate, but very difficult to build from scratch because of the variety and complexity of services required by the ActiveX specifications. JazzAge ActiveX Factory offers a unique and general way of turning any ActiveX consuming development tool into an ActiveX producer. It makes it possible, and very easy, to revamp your existing forms created with PowerBuilder, Clarion, VB, VisualFoxPro, C++, etc., into ActiveXs, and therefore make them more modular, reusable and distributable. The JazzAge Object Engine handles all the low level, complex and tedious COM jobs and lets you concentrate on the minimum code required to have your forms (dialog boxes) behave as full-featured standard ActiveXs. The Process For the developer, JazzAge is a visual development environment to create ActiveX controls. It is as easy as defining a user object in PowerBuilder. After you have designed all the methods, properties and events, you can compile the project and the JazzAge ActiveX Editor produces all the necessary files. Any existing PowerBuilder Window can be transformed in an ActiveX control without changing its logic. Just drop a special type of ActiveX control, as produced by JazzAge, in it and then assign code to its events. With JazzAge, you produce an ActiveX control the way you are already familiar with! You can do it at any time of your development cycle, with existing forms or new ones. This way you create compressed, standalone and Internet ready components. All the files (code, bitmaps) required by the JazzAge ActiveX controls are compressed and packed into standalone OCX files. The JazzAge ActiveX Factory includes a visual ActiveX Editor to let you interactively design the Properties, Methods and Events you want your forms to expose. Those definitions can be stored into JazzAge project files containing any number of ActiveX descriptions. The ActiveX Editor will also let you document the components you design, assign them toolbar bitmaps and help topics to be retrieved and used later in a standard manner by any ActiveX-aware development tool. ActiveX controls produced with the JazzAge ActiveX Factory support multithreading, signing and licensing. It also Page 25 lets you implement property pages with your development environment. JazzAge ActiveX controls can be implemented and exposed by either DLL (in process) or EXE (out of process) servers. A DLL server offers faster communication between controls and their container, but the ActiveX controls exposed by an EXE server to different clients are managed by the same process. They can therefore be more easily synchronised. A control exposed by an EXE server can be instantiated and manipulated over a network, and therefore can act as a remote automation server also firing events. An EXE server exposing some or all of its forms as ActiveX controls/objects can still be used interactively as a standalone application. The JazzAge created components support DCOM so they can be instantiated and invoked over a network, which also applies to ActiveX Controls! JazzAge offers the unique capability of producing Controls acting over a network. Such Controls act as Remote Automation objects (exposing properties and methods) and are also able to fire events over the network. PowerBuilder Stuff Especially for PowerBuilder, we found some points to look at before you start building your components. PowerBuilder applications can not really be thin components, because each application needs at least the PowerBuilder Virtual Machine “PBVM60.DLL”, and that means 3.3MB. In addition, if you use DataWindows, you need the file “PBDWE60.DLL”, which needs another 1.5MB. So, at runtime, a really small component without DataWindows consumes about 5.0MB. For a more complex window with some dropdown DataWindows cached and a dropdown calendar on it, we end up with a component that needs 12MB of memory during runtime! JazzAge offers the three standard ways of how an ActiveX can act. You choose from “Standard Control”, “Invisible at Runtime” and “Simple Frame”. The difference between the types are in the way they can be used. An Invisible at Runtime control will only be shown in design mode. It will be made invisible at runtime. For example, a timer control firing events at pre-set intervals would be designed as invisible at runtime. It would be visible at design-time (so the developer can edit its properties, or attach code to its events) but not at run time. A Standard Control will appear as an empty rectangle at design time, and be fully activated when switching to run mode. At design time a Simple Frame control will be fully activated as soon as PowerTimes is a leading development journal for Sybase tools. Published in Switzerland, thousands of developers around the world already enjoy this publication. If you want to find out more, or download a free copy, visit our web site - you won’t regret it. Page 26 dropped in a form. It will also be activated at run mode. In design mode a Simple Frame will already be fully running. It could also act as a container for other ActiveX controls. A PowerBuilder MDI application can not be a visual component (standard control or simple frame type) because of the global variable restriction, but you can use it with the Invisible at Runtime type of ActiveX control. You define the interface (properties, methods, events) in the JazzAge ActiveX definition. The client application that uses your ActiveX control is initiating the start-up of your MDI application and is then able to communicate with your application through the interface of your ActiveX control. A PowerBuilder SDI application can act as a visual component to the client application. Both types (Standard Control and Simple Frame) are possible. None of these ways act as a DLL server (in process). The DLL server needs some functions that are defined as exported and I don’t know how to export the function definition of a PowerBuilder DLL. You can use the COM Generator to create such objects. The EXE server has in fact some advantages above the DLL server. It can, for example, serve more than one control with the visual interface at once. This means you can have two (or even more) windows in your PowerBuilder EXE and use them from where you want. The EXE is only instantiated once and opens a window for each request that is displayed inside the client application. not be a native one). • • • Save your project and compile it from the “project>command” tab of the JazzAge Editor. Do not embed the files at this point, because you change your PowerBuilder executable during implementation and do not want to compile/embed it every time you have changed something to test your component. The ActiveX controls that JazzAge has produced during the compile process only points to your PowerBuilder executable at that moment and therefore, as long as the interface does not change, you don’t need to touch the ActiveX controls. • Now you have to implement the functionality of your component. As described, JazzAge produces more then one ActiveX control for each JazzAge ActiveX form. Let’s have a quick look at the architecture of a component created with JazzAge. What JazzAge Produces If you have defined the interfaces of your new component in the JazzAge ActiveX Editor, you can compile your project. JazzAge produces all the necessary files for your new component, like the Type Library, the OCX file and other files. It also registers the content of the OCX file in your PC’s registry. For each ActiveX form you defined in your JazzAge Project you will get an ActiveX control that you can use in any client application that can use ActiveX controls. JazzAge also produces a set of special ActiveX controls which you will have to use to implement your ActiveX forms. There is a project related one, called the Control Factory and one for each ActiveX form in the project, called the Remote Control. But let’s look at an example of how to build a visual component... Step by Step Let us suppose you have to build a new visual component that implements a search window for addresses. You have to use this in every application you build and you don’t want to reimplement it every time. It is also necessary that an application, developed outside your company, can implement the same search window. • Start a new project in the JazzAge ActiveX Editor and give it a name (e.g. “appAddressComponent” ). Then you have to select the executable that implements the form server (your search window) and define the implementation type (EXE32 in our example). You also have to write a short description of your component to the DOC STRING field. Now you can switch to the ActiveX’s tab on the editor and create a new ActiveX form. Define the name and DOC STRING the same way as described in the previous step (e.g. “appAddressSearch” and “Company search form for addresses”). Define all the properties, methods and events needed to access the functionality of your search window. Specify the control type as “Standard” on the ControlInfo tab and key in the height and width of your search window in pixels. If you are in the PowerBuilder’s Window Painter, you can access the position tab of the window property dialog to guess the values (look at the graphical representation of your window and use the doted lines to guess). There is no problem if they are bigger than needed, because the client application defines the size. But it must be big enough to display the search window in it. In Figure 1 you will see a client application that uses the address search component. The ActiveX Form Server is the PowerBuilder application that implements the address search component. On the form server, there must be an additional window called the ActiveX Factory Form ( “jacfwnd” ) with the Control Factory ActiveX control on it. The search window contains the Remote ActiveX control. On the diagram, you will see the process of instantiating a component created with JazzAge: First you create a PowerBuilder application with the search window and compile it to an executable (must Page 27 Figure 1,Instantiating an ActiveX component 1. 2. 3. 4. 5. 6. The client application loads the window with our “Search Window” ActiveX control on it. The local ActiveX control attempts to connect to its Control Factory ActiveX, which launches if necessary the ActiveX Form Server EXE The connected Control Factory ActiveX receives a request from the local ActiveX to create the required form. The form creation request is turned into an event by the Control Factory ActiveX The code linked to the fired event provokes the creation of the ActiveX form (e.g. open the search window), containing the Remote ActiveX corresponding to the “Search Window” ActiveX control on the client application. The new created ActiveX form handle is returned to the local ActiveX. The JazzAge Object Engine automatically inserts the ActiveX form into the local ActiveX. • Now create the Control Factory form window in your PowerBuilder application. It is a window of type “main”, has the visible property set to false and needs to be opened first from the application’s open event. You have to place the correct Control Factory ActiveX control on that window and code two events. • Place the Remote ActiveX control on your search window and code the necessary events. • Create your executable (if possible put all the files into the exe-file). • Now you can switch to the JazzAge ActiveX Editor and embed your executable by adding your files on the “project>embedded files” tab and embed it from the “project->command” tab. The <component>32.OCX file now contains all necessary files and information that you need to deploy your new component (don’t forget the PowerBuilder VM). • You can test the new component by registering the OCX-file and opening the created HTML-file in your WebBrowser. Page 28 Tips and Tricks Conclusion One of the nasty things with ActiveX controls is the fact that if the interface changes they would not be updated. So, every time you have to change something in the ActiveX interface, you have to copy all the code in the control, you have placed on your window to a newly placed ActiveX control onto your window. For me, JazzAge is a very useful tool to build components with and for every development environment that can act as a ActiveX consumer. I’ve built different types of components starting from standalone visuals to invisible ones used to communicate with existing PFC applications. The components are used not only in other PB applications; they are also used in a Smalltalk application. This tool makes it possible to implement “dummy” components with no real implementation behind, to give other developers the ability to start working with the interface of the components before we have finished with the real implementation. To avoid this, I have created an extension layer between the real ActiveX control and the controls on my windows. Just create a new visual custom user object of the OLE control and save it without any changes. Then you use this one to place on your window. Now you can redefine your ActiveX control’s interface, recreate the user object and after a short regeneration of your window, you can see the changes in the ActiveX control’s interface. As described in the article, do not embed your files into the OCX file, as long as you have not finished with the development of your component. If you use the Invisible at Runtime type of control, you can dynamically create it with the function ConnectToNewObject(). This has the advantage that the EXE form server is only loaded if really needed. The disadvantage is that you no longer have the events available on your control, because it is a standard OLE object for PowerBuilder. The product is really worth the price of US$250. Just check out their webpage http://www.jazzagesoft.com to get a demo version of the latest release of “JazzAge ActiveX Factory ‘Forms and Objects Edition’”. ? Martin Rothenberger is working at CATsoft Development GmbH in Zurich. He is a Certified PowerBuilder Professional and Instructor and can be reached by e-mail at martin@catsoft.ch When you define a visual custom user object of that type and open it dynamically during runtime with the function OpenUserObject(), you can use all the events and still load it as needed. Page 29 JAGUAR DEVELOPMENT WITH P OWERB UILDER 7 MICHAEL B ARLOTTA Reviewed by Boris Gasin Since this is the first Jaguar book targeted for a PowerBuilder audience, I was pretty excited when I finally got a copy in my hands. However, I was also a little apprehensive. For the up-todate technical information I rely heavily on the Sybase newsgroups, technical seminars and magazine articles. It takes 6 – 9 months to publish a technical book. So by the time a technical book hits the stands the information it contains is approximately a year old. Given the above, my expectations for the book were not set too high. I expected a lot of unrelated “filler” material and a relatively small section of current information. Boy, was I pleasantly surprised! The book begins with a brief overview of distributed computing and introduces the topics of application partitioning as well as application server specific topics such as load balancing, connection pooling, and scalability. Next chapter provides an application server overview with a solid section on CORBA and Jaguar. What I like about the book is that all the topics are described from ground zero. The author does not assume an in-depth knowledge of any application server related subject matter. The appendix even contains a TCP/IP primer section. The description of Jaguar environment follows the introduction. Basic administration, organisation of packages and components, database connectivity, and connection caches are some of the topics. The real meat is in the PowerBuilder section. The book provides a detailed description on PowerBuilder component design as well as client applications. The tips, notes and warnings are very appropriate and should save valuable hours of development time. Ample time is dedicated to proper design and coding techniques, highlighting some of the nuances specific to Jaguar component based development. What is missing from the book are some of the more advanced EAServer topics, specifically a detail description of the EAServer load balancing and failover configurations. However, the book was never intended to be a complete EAServer reference. Web DataWindow component description is absent, possibly due to the its introduction late in the beta cycle. I would also like to see more coverage on Jaguar interfaces from other tools / applications: page servers, such as ASP or PowerDynamo, Java applets, etc... But I am getting ahead of myself. As the title implies, the book is targeted at PowerBuilder developers looking to gain insight into n-tier application development with Jaguar. In this area the book will meet and exceed anyone’s expectations. Why all this fuss about Jaguar, or application servers in general? According to the Forrester Research business analysts, the U.S. business-to-business e-commerce revenues will grow to $1.3 trillion by 2003. This is why Sybase is talking about Enterprise Portal solutions. If you are a PowerBuilder developer and you want to be a part of the new wave of business application you HAVE to master EAServer! The Jaguar Development with PowerBuilder 7 book by Michael Barlotta provides a solid application server foundation for any PowerBuilder developer. It offers a platform from which anyone can confidently dive into the world of enterprise e-business application development. Jaguar Development with PowerBuilder 7, ISBN # 1884777-86-4 is published by Manning Publishing company. More information is available on their website at http://www.manning.com/barlotta2/ ? Boris Gasin is a Chief Technology Officer at Dynamic Technology Group, a New Jersey based consulting company specialising in Internet and Client-Server technologies. Boris is a member of Team Sybase and is a three time winner of the Team MVP award. Boris is a co-author of PowerBuilder Foundation Class Professional Reference published by McGraw-Hill, ISBN # 0-07-913267-7 and a contributing author of the PowerBuilder 6.0 Secrets of the Masters by SYS-Con Publishing. He can be reached via email at bgasin@dynamictechgroup.com. Page 30 LITTLE HELPER OF THE YEAR AWARD by Arthur Hefti This is the 3rd time that the Little Helper of the year is being awarded. This overview goes through all the Little Helper articles of 1999, gives a short update on any new features and categorizes the Little Helper. I’ll use the same categories as the year before: • • • Programmer Productivity Add On Various Category Progr. Productivity Review/Cur. Version 1.33/1.35 Original Review June 1999 Download www.ozemail.com.au/~butchc/utils/ Short Description DBDelta is a small utility that compares two Sybase SQL Anywhere Databases and generates the needed scripts to sychronize them. New Features Now includes check constraints on tables and Columns EncryptX By InnerDynamic Software Category Review/Cur. Version Original Review Download PowerProbe by DevelopWare Category Review/Cur. Version Original Review Download DBDelta by Charles Butcher Various 2.0 / February 1999 - Short Description PowerProbe is a PowerBuilder documentation tool that generates HTML files and also allows browsing of projects. New Features Not available any more. AddOn 3.1/3.11 August 1999 www.innerdynamics.com Short Description EncryptX is an ActiveX that can encrypt files using Blowfish and compress using C-CADE files and strings. New Features EncryptX Lite, is a blowfish only component without compression. Bubble Help PBLPeeper by Terry Voth Category Review/Cur. Version Original Review Download Progr. Productivity 1.1.0/1.2.02 April 1999 http://www.visual.com/gallery/ TVoth/index.html Short Description PBLPeeper is a tool to view, analyze and compare PowerBuilder objects. New Features Support for PB 7 including new controls, embedded NVOs and the new trace file. Customizable on how much information from the ancestor objects will be included in the object information. A couple of minor enhancements. PBL Peeper is the Little Helper of the year! Category AddOn Review/Cur. Version 1.03/1.03 Original Review October 1999 Download www.lonestar.texas.net/~chakes/bubble.htm Short Description Bubble Help allows you to show a small yellow window with some informational text, known as Bubble Help or Tooltips. New Features None. VersionEdit by E. Crane Computing Category Review/Cur. Version Original Review Download AddOn 1.0/1.0 December 1999 www.ecrane.com Short Description VersionEdit allows you to edit version information resources in any executable, ocx or dll. Page 31 a Client/Server and Internet development and consulting company 7RROV &OLHQW6HUYHU 'HYHORSPHQW - Custom made Software in any Business Area ,QWHUQHW (QWHUSULVH,1HW 'HYHORSPHQW - Custom made Web Sites + Easy to maintain + Fast Development + Public Hosting available 'HYHORSPHQW - Custom made Web Sites for Intranet and Internet usage 7UDLQLQJ - For Sybase AG and 5HVDOH - ColdFusion SQL AG - HomeSite - ScriptBuilder &RQVXOWLQJ - On various PowerBuilder Topics 6\EDVH&$33DUWQHU &ROG)XVLRQ5HVHOOHU 5HVDOH - SilverStream Reseller 6LOYHU6WUHDP9$5 Catsoft Development GmbH, Amdenerstr. 28a, CH-8872 Weesen Tel: ++41 55 616 51 11, Fax ++41 616 51 14 Web: www.catsoft.ch, E-Mail: info@catsoft.ch, Compuserve: CATsoftCH VERSIONEDIT from E. Crane Computing reviewed by Arthur Hefti Introduction When you check the properties of a PowerBuilder Executable in the Explorer you find that there is the same information in the Properties Dialog as in the Properties Dialog of PowerBuilder. This means that the company shown is Sybase and the descriptions and versions mention PowerBuilder. be replaced, is actual or even more recent than the version the user wants to install. VersionEdit also comes with a command line application allowing you to include version settings into a batch job to create your installation files. If you don’t like this and want to provide your company name, file and product versions there’s now an easy way to do it. E. Crane Computing just released VersionEdit to edit version resources in executables and DLLs. Description VersionEdit is a Resource Editor that can change the version resources in any executable or DLL. After opening a PowerBuilder executable the version information is shown on the screen. Conclusion By simply clicking on an entry you can change the fields Value and Label. In addition to changing entries you can also add and delete whole entries. You can even add additional version information entries for different languages or character sets. Usage The advantage of setting the version information of a file is not only showing the name of your company, the product version and some copyright information to a user looking at the properties of the file in the explorer. Even more important is the that a setup application can read the version information and determine if a file has to VersionEdit is a simple but useful tool that allows you to customize the version resource information in any application, DLL or OCX written in any language. VersionEdit comes with a standard setup and contains a complete help file in the new explorer style. Pricing and Availability The price for Version Edit is $75. It can be downloaded from the E. Crane Computing Website at http:// www.ecrane.com E. CRANE COMPUTING 16 Centre Street Concord, New Hampshire 03301, USA Phone: +1 603-226-4041 Fax: +1 603-226-4091 Page 33 Level 5 Software launches Object Browser for PowerBuilder Verteilte Geschäftsabwendungen mit HOW und PowerBuilder entwickeln An easy to use object browser written by PowerBuilder developers for PowerBuilder developers. Rüsselsheim/Dresden, Dezember 1999: Hohe Anforderungen aus einem raschen technologischen Wechsel fordern die Anwendungsentwicklung heute stärker als zuvor. Dabei geht es nicht nur um das Erreichen einer höheren Effizienz bei der Anwendungsentwicklung, der Trend zu unternehmensweit vernetzten Anwendungen und die Bedeutung des Intra-/Internets fordern auch neue Anwendungseigenschaften. Eine führende Lösung für diese Problemstellung ist das Produkt HOW der Riverton Software Corp., das von der Precision Technologies GmbH jetzt in der Version 3.0 angeboten wird. West Hartford, CT , November 22, 1999 – Level 5 Technology’s software division, Level 5 Software, today announced the availability of Object Browser for PowerBuilder. Object Browser for PowerBuilder is an extension to the class browser which is supplied with PowerBuilder. It will help PowerBuilder developers visualize and analyze effective code, accessable functions and events, variables and structures for all PowerBuilder objects. Object Browser for PowerBuilder facilitates searching, scanning, editing and printing of an object’s definition and implementation, as well as its ancestor and nested objects, through a easy-to-learn graphical user interface. This simple to use interface allows the developer to point and click through all of the critical object information without having to open multiple windows. Functions, events, variables and attributes for the opened object, its controls and ancestor objects are all within reach with just a single window. Product Features • • • • • • • • • • • Browse function and event scripts. Browse variables and variable painter scripts. Browse attributes. Browse definition. Browse controls. Browse ancestor objects. Browse ancestor script. Browse object syntax. Edit scripts and syntax and save the changes to a file. Print exceptional looking reports. Create documentation. Finally an easy to use, cost effective browser which will help PowerBuilder developers take their software development to the next level … For more information and free product evaluation software visit Level 5 Software’s website at www.level5technology.com PowerBuilder is one of the leading 4GL application development tools on the market today and a registered trademark of Sybase, Inc. HOW ist eine komponentenbasierte Entwicklungs- und Laufzeitumgebung. Im Produkt sind die klassischen Mittel eines A/D-Tools enthalten. Dabei baut HOW auf der UML auf, bietet jedoch zusätzliche Diagramme, die insbesondere die Entwicklung von komponentenbasierten Geschäftsanwendungen unterstützen. So können in der Anforderungsanalyse Geschäftsregeln definiert werden oder wird beim Design und der Entwicklung auch die relationale Datenbank und die Benutzeroberfläche berücksichtigt. Eine hohe Effizienz wird durch die Möglichkeit der Wiederverwendung von bereits vorhanden Komponenten und die enge Integration mit der jeweiligen Zielumgebung (PowerBuilder, Java, Visual Basic) erreicht. So können ca. 80 % einer typischen Anwendung durch Point-and-Click zusammengebaut werden. Neben diesen Funktionen umfaßt HOW ein OpenFrame genannten Framework, das eine komplette Laufzeitinfrastruktur für verteilte Anwendungen bereitstellt. OpenFrame besitzt eine Drei-SchichtenArchitektur (User-Interface, Business-Logic, Datenhaltungsschicht). Das Framework wird in den Modellierungsund Entwicklungsfunktionen von HOW berücksichtigt und vereinfacht dadurch die Entwicklung verteilter Anwendungen erheblich. Das Framework unterstützt die Nutzung von Sybase EAS oder des Microsoft Transaction Servers. Eine hohe Laufzeiteffizienz wird durch das Arbeiten mit Resultsets und der Anwendung der Late-Instantiation erreicht. Die Einführung einer solchen Entwicklungstechnologie erfordert natürlich nicht nur die Auswahl eines Produkts. HOW wird daher durch das KnowHOW-Konzept ergänzt. Das KnowHOW-Konzept umfaßt neben dem Produkt, den KnowHOW –Prozess, eine Sammlung von Best-Practices für die Entwicklung von Geschäftsanwendungen und ein Servicekonzept des Herstellers und der Partner. Der KnowHOW-Prozess ist kompatibel zum Unified Software Development Process, jedoch ergebnisorientierter auf die Bereitstellung verteilter Geschäftsanwendungen ausgerichtet. HOW liegt in der Version 3.00.10 vor. Die PowerBuilder-Cartridge unterstützt PowerBuilder 6.5 und 7.0. Das Framework unterstützt sowohl Sybase EAS als auch Microsofts MTS. In Deutschland, Österreich und der Schweiz werden die Kunden von Riverton durch die Precision Technologies GmbH, Systemhaus für innovative ITTechnologien, betreut. Precision Technologies bietet dabei insbesondere auch Unterstützung für das KnowHOW-Konzept an, indem es neben dem Trainingsangebot eine Vielzahl von Serviceleistungen anbietet. Weitere Informationen können unter info@ptgermany.de angefordert werden. Page 34 PowerTimes provides this space to the subscribing user groups to publish their news, announcements and other communications to their members. Please send your material to the editor or the co-editor of PowerTimes (addresses under “Impressum”). If your user group doesn’t subscribe to PowerTimes yet, please contact us to get the very reasonable rates or check out our web site at: http://www.powertimes.com Albany New York PowerBuilder User Group President: Greg Fisher gfisher@dttus.com Vice President: Ed Donohue edonohue@dttus.com Treasurer: Danna Goodwin dagoodwin@dttus.com Secretary: Steve Davies stedavies@dttus.com • The members of ANYPBUG are dedicated to the advancement of their skills both professionally and technically. • ANYPBUG is a not-for-profit organization established as a forum to help members realize their goals. • Through regular meetings and events, members learn the latest techniques and trends surrounding the PowerBuilder product. Members also have a chance to view emerging technologies before they become prominent in the work place. • Membership is free! Several forward thinking organizations pay an annual fee to help support the activities of ANYPBUG. Baltimore PowerBuilder User Group The Baltimore Area PowerBuilder Users Group (BAPBUG) meets the first Wednesday of the even numbered months at the Social Security Administration OAG building in Woodlawn, Maryland. http://www.geocities.com/SiliconValley/Bay/8680 President: Vice President: Secretary: Treasurer: Debbie Arczynski softquip@home.com BillBitman bitman@jhuapl.edu Gordon Giffen gordon-g@vips.com Fred Grau fgrau@chesint.net The members of the Baltimore PowerBuilder User Group receive PowerTimes thanks to a generous sponsorship from http://www.ctpartners.com Specializing in the Sybase, SilverStream and Microsoft families of products, Corporate Technology Partners offers a full line of client/server and web application development and training services. Point your browser to http:/ /www.ctpartners.com/asp/tips.asp for frequently updated, cutting edge whitepapers, and a variety of helpful, technical tips from industry pros. Visit today to see how we can help your organization realize the most effective emerging technology solution. Page 35 Greater Boston PowerBuilder User Group The officers of the User Group are: President: Dan Murphy Vice President: Olga I. Demidova olgad@middlecg.com Treasurer: Karen Ness karen_ness@analog.com Secretary: KEVSystems is a PowerSoft Consulting Partner and provides system design and integration assistance for financial, personnel, and medical systems. Susan Thompson idfm@idfm.com The members of the Greater Boston PowerBuilder User Group receive PowerTimes thanks to a generous sponsorship from KEVSystems Inc., located in Newton, MA. Our staff, made up exclusively of Certified PowerBuilder Developers, has over 20 years experience in securities processing systems and database design. We have worked on systems for trust accounting, shop floor management, personnel, and three-tiered integration. KEV Systems, Inc. 65 Stony Brae Rd. Newton, MA. 02161-1728 Phone: Fax: (617) 964 1426 or (800) 376 5755 (617) 527 0090 ChicagoLand PowerBuilder User Group The CPBUG website can be found at: The officers of the CPBUG are: President Michael Baraz Vice-President Peter Vassilatos Secretary Jeff Barnes Treasurer Nicky Petrila (630) (312) (847) (630) http://www.cpbug.org 235-4529 856-6720 549-7765 792-5073 The Secretary of the ChicagoLand PowerBuilder User Group, Jeff Barnes, can be reached at the following email address: jcbarnes@ibm.net. Central Ohio PowerBuilder User Group President: Vince Fabro vfabro@col.nmedia.com 614 - 220 7900 Vice President: Jeff Kusner jkusner@kusner.com 614 - 213 5329 Refreshments: 6:00 - 6:15pm, Presentation: 6:15 Secretary: Our mailing address is: Central Ohio PowerBuilder User Group P.O. Box 363 Worthington, OH 43085-0363 Jim Nelson jlnelson@aep.com 614 - 418 1748 Treasurer: Todd Dake todd@airnet.com 614 - 418 1748 The Central Ohio PowerBuilder Users Group generally meets during the second week of odd numbered months. Meetings alternate between member demos and product presentations. Location: Internet: Bank One Offices 1111 Schrock Road, Columbus, OH http://www.cmhpbug.com Page 36 Club Fibonacci - Club des Utilisateurs Sybase France Le club francais des utilisateurs PowerBuilder n’existe plus en France. Il a été remplacé par le Club Fibonacci: le club des utilisateurs Sybase, qui est géré directement par Sybase France. Les membres du Club Fibonacci reçoivent PowerTimes grace au sponsoring généreux de la société NOVALYS. (The PowerBuilder User Group France doesn’t existe anymore. It has been replaced by the “Club Fibonacci” - the Sybase Users Group in France The members of the Club Fibonacci (France) receive PowerTimes thanks to a generous sponsorship from Novalys.). NOVALYS met en place des outils, méthodes et normes de développement pour la réussite de vos applications. Les consultants de Novalys accompagnent et certifient vos projets pour garantir leur réussite technique. NOVALYS creates, distributes and supports complementary tools for PowerBuilder and is the distributor of HOW from Riverton Software in France. Visit our website at: http://www.novalys.fr. Novalys SA 140 rue Galliéni 92100 Boulogne-Billancourt / France Tel : 01.46.99.66.20 Fax: 01.46.99.08.92 PowerBuilder User Group Italia Vogliamo ricordare a tutti gli utilizzatori di Powerbuilder di lingua italiana che l’iscrizione al Powerbuilder User Group Italia e’ Gratuita, basta solo registrarsi sul nostro web e si ha diritto a partecipare ai forums in italiano dove scambiare idee su Pb con altri utenti. E-mail: pbuginfo@telemacus.it Fax: 0331/700189 Internet: http://www.telemacus.it/pbug/pbug.htm The members of the PowerBuilder User Group Italy receive PowerTimes thanks to a generous sponsorship from Sybase Italia. L’ abbonamento a PowerTimes per gli iscritti del Power Builder User Group Italia e’ stato gentilmente offerto da Sybase Italia. New Jersey PowerBuilder User Group The President of the New Jersey PowerBuilder User Group, Guy Yasika, can be reached at the following email address: guy@kleinmgmt.com Dynamic Technology Group, Inc. 1055 Parsippany Blvd., Suite 501-26 Parsippany, NJ 07054 The NJPBUG website can be found at: http://www.njpbug.org Phone:973.402.5600 Fax: 973.402.5620 The members of the New Jersey PowerBuilder User Group receive PowerTimes thanks to a generous sponsorship from Dynamic Technology Group. http://www.dynamictechgroup.com Page 37 PowerBuilder User Group Norway Formålet med vår brukerforening er todelt: 1) Den skal være et kompetanseskapende forum for brukere av Powersoft-produktene 2) Den skal være et kontaktpunkt mellom brukere og Sybase Norge AS når det gjelder forslag til endringer/forbedringer av produkter og relaterte tjenester. De fleste arrangementer i brukergruppens regi vil foregå på kveldstid. Arrangementene tar sikte på at man skal kunne utveksle erfaringer og kunnskap gjennom at brukere presenterer sine løsninger, tredjepartsleverandører presenterer sine produkter, konsulenter viser prosjekter de har deltatt i etc. Neste års norske brukerkonferanse vil bli arrangert i samarbeid med Sybase Brukergruppe Norge. Brukerforeningen vil også ha noen arrangementer i samarbeid med Sybase Norge AS slik som presentasjoner av nye releaser o.l. Ønsker du mer informasjon om Powersoft Brukerforening Norge, ta kontakt med Thomas Revetal (Zema AS) på tlf. 905 64 568. Thomas Revetal Zema AS Tlf. 90 56 45 68 Stig Melling Rune Nerhagen Wenche Fronth Øystein Rolfsen Leif Aksel Grøthe Avenir ASA WM-Data Hærens Forsynings Kommando De Norske Bokklubbene Online Consulting Partner AS Tlf. Tlf. Tlf. Tlf. Tlf. 23 22 23 22 90 15 57 09 02 52 75 70 63 20 74 00 00 86 00 94 Oregon PowerBuilder User Group The Oregon PBUG meets every other month, usually from 6-8pm on the first Wednesday of odd-numbered months (January, March, May, July, September, and November). We meet in downtown Portland (see web site for map and topic information.) Client Server Group, Inc., is a leading provider of software development and consulting services serving the Pacific Northwest. In addition, CSG is a supplier of industry leading client/server software products, software development tools, and related training. Web site address: Client Server Group, Inc. 5201 SW Westgate Drive Suite 208 Portland, OR 97221 Phone: (503) 292-0859 http://www.csgpro.com http://www.teleport.com/~wagnerc/pbug 1999 Officers: President: Treasurer: Secretary: Brad Ashton bashton@centric-corp.com Frank Calfo fcalfo@psateam.com Julie Beranek jberanek@metacorp.com MetaCorp Strategies International The members of the Oregon PowerBuilder User Group receive PowerTimes thanks to a generous sponsorship from the following two companies: - Client Server Group, Inc. MetaCorp Strategies International Fax: (503) 292-1485 was founded in 1987 and is an information systems consulting firm engaged in all aspects of systems design, development, integration, education, and management. MetaCorp Strategies is headquartered in Westport, Connecticut with sales offices in Wallingford, West Hartford and Westport, Connecticut, Portland, Oregon and Scottsdale, Arizona. MetaCorp Strategies International 10300 SW Greenburg Road Suite 470 Portland, OR 97223 Phone: (503) 452-6333 Fax: (503) 452-6337 http://www.metacorp.com Page 38 Oklahoma PowerBuilder User Group We have regular monthly meeting on the First Wednesday of every month. President: Dianna DeMotto Phone: (405)360-3386 Email: okcpbug@usa.net Vice President: William Walter Secretary: Scott Chaney Rattan Consulting is a Business Consulting company. Information on meetings can be found on our website at: http://www.okcpbug.iwarp.com The members of the Oklahoma PowerBuilder User Group receive PowerTimes thanks to a generous sponsorship from Rattan Consulting from Oklahoma City. We specialize in designing and programming custom window based & internet applications. We have experience with EA Studio, EA Server, Powerbuilder, Visual Basic and C /C++. We also have staff specially trained and experience in Data Warehousing. We are a Sybase Premier Partner and sell Sybase software at discounted rates so call us for all your software needs. Rattan Consulting 4334 NW Expressway Suite 259 Oklahoma City, OK 73116 Phone:(405) 810-8005 Fax: Email: Trattan@swbell.net (405)810-8097 Toronto PowerBuilder User Group President: Paul Bis paulbis@netcom.ca (416) 866-5493 Vice President: Ioana Naum Membership Admin.: SoftApproach Corporation is a software vendor. It offers PB Spy, a debugging tool for PFC-based PowerBuilder applications. It helps you monitor your application process and view your data easily. Plus it can detect memory leaks. If you are interested in using PB Spy to promote your user group activities, please contact: Paul Bis, President of the Toronto PowerBuilder User Group at paulbis@netcom.ca Debbie Brittain Assistant: Haibo Peng haibop@softapproach.com Assistant: Earl Armbrust earl-armbrust@compuserve.com Assitant: Eugene Osadchi virtos@hotmail.com For more information about the product, please check the following website: http://www.softapproach.com The members of the Toronto PowerBuilder User Group receive PowerTimes thanks to a generous sponsorship from SoftApproach Corporation. Page 39 St. Louis PowerBuilder User Group We meet on the 3rd Tuesday of every other month, beginning in January at Monsanto Corporate Headquarters (directions on the web page). The meetings begin at 5:30 pm. Solutech is a company specializing in client/server, web application development, technical training, vendor certified consulting and software solutions. The new website is at http://www.stlpbug.org. President: Jay Hunt djayhunt@illini.net Vice President: Allen Phelps aphelps@anet-stl.com Secretary: Neal Bockwoldt bockwold@primary.net Treasurer: Dave Blankenship daveblankenship@prodigy.net Solutech maintains strategic partnerships with leading software vendors such as Microsoft, Oracle, Rational, Powersoft and Sybase. These partnerships give you a direct link to new product information and on-going technology developments. Solutech is a local extension of our vendors, bringing you peace of mind in a constantly changing environment. The members of the St. Louis PowerBuilder User Group receive PowerTimes thanks to a generous sponsorship from Solutech, Inc. in St. Louis. Solutech has nine offices and training centers. For a complete list of our free seminars and vendor certified training classes; or to view the latest company information on Solutech, our locations, and our services, please visit us on the web at www.solutechinc.com. UK PowerBuilder User Group An independent group formed in 1992, PBUG currently has a membership approaching 150 companies. Events are held three times each year with attendances in the region of 200 at each event. The group is self-funding and receives excellent technical support from Sybase. PBUG Council: Chairman: Warren Clayburn wclayburn@omegaprime.co.uk Treasurer: Ian Soden Isoden@linkhand.com Secretary: David Speight dspeight01@aol.com Member: Brick Du Bourg brickd@ocs-consulting.com The member council runs PBUG, but the day-to-day work is managed by Pb Associates. Anne Bocock is responsible for most aspects of the group including organising the conferences and putting together PBulletin. Judy Barnett handles all accounting matters. You can reach Anne and Judy at the PBUG office. Telephone: Fax: Email: Internet: 0181 421 3533 0181 420 1420 anne@pbug.co.uk http://www.pbug.co.uk Postal address: Suite A8, Kebbell House Carpenders Park Watford, Herts. WD1 5BE Page 40 Ottawa PowerBuilder User Group The Ottawa PowerBuilder User’s Group is composed of Ottawa-area Information Systems professionals who are interested in staying on the leading edge of Power-Builder and client/server development. President: The group meets on the 2nd Wednesday of each month, from September through May. At each meeting, a new and interesting topic is presented and discussion is encouraged. These meetings are a great place to meet fellow users, discuss issues and ideas, and network for future opportunities. VP Administration: Bill Stevens bills@pentelar.com Treasurer: Wade Kornik kornikw@home.ca Secretary: Paul Grawal Carole Hargrave chargrav@magi.com VP Public Relations: Ron Guilbault Rong@pentelar.com The Ottawa PowerBuilder User Group website can be found at http://www.opbug.com PowerBuilder User Group Germany Besuchen Sie die Homepage der PowerBuilder User Group Germany: http://www.pbugg.de PBUGG e.V. c/o Power People Ludwin Feiten Am Borsigturm 48 D-13507 Berlin Tel.: +49 (0)30 4303 2350 Fax: +49 (0)30 4303 2355 Sybase and PowerBuilder User Group Switzerland CATsoft President: Rolf André Klaedtke rak@raksoft.com Vice President: Andreas Theis andreas.theis@national.ch Treasurer: Martin Rothenberger martin@catsoft.ch Secretary: Celia Hegarty ch@sql.ch Member: Werner Warger wwarger@warger.vol.at Internet: http://www.spbug.ch CATsoft Development GmbH is a Swiss Client/Server and Internet/Intranet company specializing on PowerBuilder and JAVA development. We have experience in PowerBuilder on the Internet (Web.PB), Powersoft’s PFC and HOW. We also do Cold Fusion and SilverStream. CATsoft Development GmbH Amdenerstrasse 28a CH-8872 Weesen The members of the Sybase and PowerBuilder User Group Switzerland receive PowerTimes thanks to a generous sponsorship from CATsoft Development GmbH. Phone: Fax: Web: Page 41 +41-55-616 51 11 +41-55-616 51 14 www.catsoft.ch Interested in Java ? Then don’t miss the HANDS-ON JAVA SEMINAR with Bruce Eckel When: April 10 - 14, 2000 Where: Hotel Préalpina Chexbres - Montreux This is an introductory Java seminar. It will be an intense, 5-day Hands-on seminar taught by Bruce Eckel, author of “Thinking in Java” (an extract of this book comes with PowerJ from Sybase) and the best-selling “Thinking in C++”, which won the Software Development Magazine Jolt Award for best book in 1995. Bruce Eckel has years of background teaching seminars and consulting in objectoriented programming. He is dedicated to giving you the best learning experience possible. The Préalpina Hotel offers you a superb setting in its own park with an unimpaired view of the Lake and Alps just minutes from the “Chexbres” motorway exit. For more information see http://www.raksoft.ch RAK Software, Consulting & Publishing Rolf André Klaedtke Bächlistrasse 21 CH-8280 Kreuzlingen Phone: Fax: E-mail: ++41 - 71 - 670 01 60 ++41 - 71 - 670 01 71 rak@raksoft.ch Page 42