You are on page 1of 25

JOURNAL FOR PEOPLE INTERESTED IN CLIENT/SERVER AND INTERNET

APPLICATION DEVELOPMENT WITH THE SYBASE TOOLSET


MARCH/APRIL 2000

PRICE: US$ 7.50

Contents

VOL. 7 / ISSUE 2

SYBASE TECHWAVE 2000


by Rolf Andr Klaedtke

Editorial: Sybase TechWave 2000


by Rolf Andr Klaedtke

Impressum
on Page 2

The Vision:
Whats in Store from Sybase in 2000 ?
by Scott McReynolds on Page 3

Internet Aware: Internet-Aware PowerBuilder


Applications, Part III
by Roy Kiesler on Page 7

COM Knowledge: COM+ Security


by Alan J. Walsh on Page 10

New Technology:
Introducing Python
by Rolf Andr Klaedtke and Bruce Eckel on Page 14

PowerSurvey Results
by Mark Lansing on Page 16

PowerTip:
Non-Visual Object Instances in PB 7
by Werner Warger on Page 17

Little Helpers:
Table Dancer 1.12 from Helmar G. Dahmer
reviewed by Arthur Hefti on Page 20

User Group Section


on Page 21

About 3 weeks ago, I finally reserved my flight to Orlando


for this years Sybase TechWave 2000 conference. This
will be my 6th year at the conference. The first one that I
attended was the one in 1995, also in Orlando. At the same
time, it was my first trip to the USA. After the conference
we went on a one-month trip through the USA: starting in
Orlando, followed by New Orleans, an impressive trip
through some National Parks in the SouthWest, and then
we arrived in San Francisco, from where we went on a
short trip through Northern California. The only bad decision in that year was to go on a trip AFTER attending the
conference, because I learnt so much that I wanted to apply immediately... waiting a month travelling around was
sometimes hard. But the trip was worth everything, it will
be etched into my memory forever. Pictures of this and
later trips will soon be up at my website at http://
www.raksoft.ch, if youre interested.
After the 2nd year in Orlando I was looking forward to the
first conference out of Florida, to discover other places.
Nashville in 1997 was impressive because of the incredible place were it was held, the conference in Los Angeles
in 1998 was the worst of all attended and I first thought
about not coming back. But then, I didnt want to leave on
a bad impression and decided to go back again in 1999.
This was fortunate, Ill admit, because last year was great.
Orlando was still worth the trip, the ambiance was noticeably better, Sybase seemed to be back on track. And in the
past years I have made so many good friends that it was
like a family get together, there was not a single annoying
minute!
This year I was convinced I would not attend for several
reasons, but finally I was able to decide for the GO and
Continued on page 2
Page 1

Im now looking forward to another exciting week in


Orlando. After initially looking at the agenda I was disappointed that I would not be there, since there were more
than just a few sessions that I would have liked to attend.
But Im glad Ill be there... what about you ? Have you
signed up ? The first deadline for the discounted registration fee has passed, but its still cheaper to sign up now
than a week before the begin of the event.

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:

Is there a future for PowerTimes ?


By the time TechWave 2000 starts, we should also be able
to give you some news about the future of PowerTimes. It
is a fact that PowerTimes has been growing in popularity
and even though we have not been able to offer credit
card payment for subscriptions through our website from
the end of last year, there are still people contacting us for
subscriptions.
The bad news for us is that some of our writers said that
they needed a break, and it has become harder and harder
to find people willing to write for PowerTimes. Unfortunately there were some who have promised to write for us,
but never did... same problem with those who subscribed
to PowerTimes but never paid their invoice. Of course,
they dont receive PowerTimes, but all this combined is a
lot of work and stress for us, who still do this in our spare
time.
Its a while ago now, since we really reached the point
where we had to decide whether to stop publishing
PowerTimes or to grow it into a real business, with people who take care of getting advertisements and subscriptions on a professional level to finance the whole adventure, administer the subscription base, the accounting and
helping in the production cycle and all the other tasks.
Finally, some time ago and to our big surprise, we received
an e-mail from a company who was interested in taking
over PowerTimes, at the condition that both Mark Lansing
and myself would stay on board. Due to the reasons explained earlier, we took up the discussion and hopefully
by the time of the conference we can tell you more about
it. Anything is possible at this point...
This is the reason why we have taken away the possibility
to subscribe to PowerTimes past issue 7/3. At this point
we dont know who will own PowerTimes or whether it
will exist at all. So, if you always wanted to write an article for publication in PowerTimes, now its definitely the
right time!
Nevertheless, we would like to thank all our readers, authors and advertisers for their support and hope you will
enjoy reading this issue. Thanks to those of you who send
us your feedback, there have been some very nice messages.

Editor:

Rolf Andr Klaedtke


Bchlistrasse 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

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

COM Knowledge

Alan Walsh
alwalsh@indiana.edu

EASy Does IT

William B. Heys
Bill.Heys@whittman-hart.com

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.

Rolf Andr Klaedtke


Mark Lansing
Editors
Page 2

WHATS IN STORE FROM SYBASE IN 2000?


by Scott McReynolds, Sybase

Introduction
The Internet Application Division at Sybase has a very
broad vision for the year 2000. This year we will be adding a number of great new features to our products to improve the developers environment and productivity. We
will be issuing new releases of the majority of our products this year, and in this article I would like to introduce
you to the new features in order of delivery.

EAServer 3.6
The first product that will be released in 2000 will be version 3.6 of EAServer. This version is targeted for our Java
Developers. It will provide all of the major functionality
for J2EE. The functionality that will be included in this
release is:

Support for Enterprise Java Beans (EJB) at the 1.1


specification level. EAServer 3.5 began EAServers
support of EJBs. This release will include the support
of Container Managed Persistence (CMP) as well as
the XML deployment descriptors.
JavaMail functionality will also be added to the server.
The intent of JavaMail is for a platform and protocol
independent framework to build Java-based mail and
messaging applications. The release that is included
in EAServer will allow users to send mail as well as
use the XML Deployment.
Servlet support at the 2.2 specification level. Servlet
2.2 adds the support for the packaging and deployment of web applications, either standalone or as part
of a J2EE application. Servlet 2.2 also addresses security, both standalone and within the J2EE platform,
and it provides support for the notion of a Web Application.
Java Server Pages (JSP) allows for creation of web
pages with Dynamic content. They have HTML-like
tags for the inclusion of scriptlets. These scriptlets,
written in Java, encapsulate logic that generates either page content or the data on the page. Developers
can use standard HTML for formatting and page design. As pages are called they are compiled and become servlets that run inside of the server container.
JSPs can be used to generate HTML pages or XML
documents. JSPs will be supported at the 1.1 specification level.
The addition of a Message Service. The message service provides queues for message consumers, and allows message producers to send messages to speci-

fied queues (point-to-point messaging), or to publish


messages with specified topics that may be of interest
to registered consumers (publish/subscribe
messaging). Messages that are sent or published can
be stored in memory or in a database until they can be
delivered. The message service provides a pull-style
mechanism for client notification and a push-style
mechanism for component notification.
Some additional security features will be added as
well. These features include additional basic authentication. Basic authentication is the same as http
username and password authentication. In this case,
the browser can pop up a dialog asking for the
username and password. Form authentication will also
be added. Form authentication is when a web application can set-up a customized form for authentication purposes. The last security enhancement planned
for this release is SSL certification authentication. This
requires the user to use a SSL session and a client
certificate.
The addition of support for Enterprise Archive (EAR)
and Web Archive (WAR) deployment will be added
to the server.

As a liscensee of J2EE, Sybase is very excited to have all


of the functionality in the 3.6 release.
Future releases of EAServer will add business-to-business
features, an emphasis on high availability, persistence and
caching. Specific features that will be included in the release to support these objectives include JDMK, Jini, full
JMS implementation, Hotspot and MessageBroker integration.

PowerJ 3.6
Features for PowerJ will follow a number of those of
EAServer. For PowerJ 3.6 they will include:
Target migration of EJB 1.0 objects to the EJB 1.1
specification. This will automatically update the deployment descriptors as well as create a new target
based on the original. This migration will save the
original target in case it is currently being used in production.
A number of EJB 1.1 class and helper class changes
will also be incorporated. These include such things
as changing of Exception and Finder types to support
the 1.1 specification.

Page 3

Developers will be able to debug servlets just like


EJBs can be debugged today. This will improve developer productivity and decrease the development
time required for servlets.
For JSPs, PowerJ will allow HTML and JSP Editing.
The PowerJ editor will highlight HTML and be JSPaware to improve developer productivity. One of the
most difficult things to deal with when developing
JSPs is finding syntax errors quickly and easily.
PowerJ will allow developers to do design time syntax checking of their JSP objects. At build time the
compiler will compile the JSP and verify it, notifying
the developer of any errors the compiler finds. Developers will also be able to do Server-Side Debugging of the JSP objects. In order improve the speed of
the JSPs execution, at deployment time the JSP will
be implemented as a servlet thus eliminating the need
to compile the JSP the first time it is called.. PowerJ
will also create the WAR file entries as needed to support the JSP.

Future releases of PowerJ will provide an improved MDI


development environment. This is to address developers
requests to minimize the number of windows open when
working within PowerJ. We will also be adding PowerSite
integration within PowerJ. This will provide PowerJ with
the ability to create web pages and development and deployment from within the PowerJ environment.

PowerBuilder
PowerBuilder continues to stay current with new application development technologies for the purpose of allowing developers to leverage their PowerBuilder skills for
distributed and web applications. Just as PowerBuilder
offers a 4GL approach to traditional Windows application
development, the next release will offer a 4GL-like experience for web development. To address the web requirements for todays applications, PowerBuilder has directly
incorporated web technology from PowerSite.
To effectively use features from PowerSite within
PowerBuilder, it is important that PowerBuilder be able
to work with more than one target application at a time.
Two new concepts are introduced into the PowerBuilder
development environment - workspaces and targets. The
workspace is responsible for holding all of the applications and components that are going to be used for development. Targets are used to represent those applications
and components. By introducing a new web target concept, PowerBuilder will be able to build, manage, and deploy HTML files, images, and other assets that comprise a
web site.

Integration with Enterprise Application Server (EAServer)


was greatly enhanced with the release of PowerBuilder
7.0. The next major release of PowerBuilder will continue
this trend and offer a very compelling and productive platform for the development and deployment of distributed
and web applications.
Internationalization is now built into the core of
PowerBuilder by featuring full Double Byte Character Set
support for environments that may have DBCS support as
a requirement.
Additional database support is typical of a new
PowerBuilder release, and the next release is no exception. Sybase Adaptive Server Enterprise 12, Oracle 8i and
JDBC 2.0 are all supported.
No version of PowerBuilder would be complete without
incorporating the enhancement feedback and new feature
requests from the PowerBuilder community. With the assistance of the International Sybase User Group, new feature enhancements were selected and incorporated into
what may prove one of the most exciting releases the
PowerBuilder community has yet to experience.

PowerDesigner
For PowerDesigner, Sybase is trying to provide Synergy
with other IAD products. They include plans for application development integration. The main focus if this integration is on EAServer for the purpose of developing new
Web applications. The overall product goal is to simplify
object-oriented, component-based, multi-tier web application development and deployment through analysis and
design. To meet these goals Sybase has planned a number
of enhancements. These enhancements include:

In addition, a new server-side object model for building


web applications will provide the infrastructure to allow
page development with PowerBuilder to be based on an
event driven architecture, which is much more productive
than traditional procedural web development. Server-side
event scripts will be available and can be coded just like
client side event scripts.
Page 4

The auto-generation of test data into a designed database. This is to reduce the development time be providing data which can be easily placed into a newly
developed datamodel.
A mechanism to help database administrators compute their designed database size.
The generation of XML files from a class diagram.
This generation includes both the generation of XML
Schema as well as XML Data. It should be noted that
with XML file recovery, an XML document can be
imported into a class diagram.
A number of Repository changes. These include using the same architecture as MetaWorks uses for storing the repository. This will provide one integrated
repository for all of the PowerDesigner products. We
will also be adding support of ASA and other ODBCcompatible RDBMS for the repositorys persistence
database. Sybase will also be adding repository environment administration and management (access
rights, etc.) to the modeling environment. This will
provide a much more secure modeling environment.
Modelers will also be able to consolidation into the
repositorys database as well as extract from this same
environment. They will also be able to version their

models so they can rollback to pervious versions if


needed. Along with this versioning they will be able
to compare model versions to find what had changed
between them.
Design and implementation of server-side logic. This
logic can be then output in an EJB format as either
bean or container managed persistence. To help support this, PowerDesigner will be integrated with
PowerJ to allow the designer and developer to work
seamlessly together.

?
Scott McReynolds has worked in the data processing industry for over 15 years. He has been with Sybase for 4
1/2 years where he is Senior Product Line Specialist.
You may contact him at Scott.McReynolds@sybase.com.

As you can see from the new features, Sybase has a number
of very exciting plans for its development community!
Watch this space!

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 wont regret it.

Page 5

Page 6

INTERNET-AWARE POWERBUILDER APPLICATIONS: PART III


by Roy Kiesler

Introduction
At the end of my previous article, we left John, a senior
PowerBuilder developer with VaporWare Inc. (previously
ACME Network Products Corporation,) sitting comfortably in his office chair with his feet up on his desk. The
function that John has written to convert the contents of a
datastore to XML was working as designed; sales reports
were converted to XML file and uploaded to VaporWares
FTP site. Life was good

ls_xml += <row>~r~n
// Column entities
FOR k = 1 TO ll_cols
ls_xml += ( < + &
lds_xml.Describe( # + &
String( k ) + .Name ) + &
> + String( &
lds_data.object.data[j,k] ) +
</ + lds_xml.Describe( &
# + String( k ) + .Name )
+ > + >~r~n )
NEXT

One day, Johns new development manager presented him


with a new requirement; all of ITOS reports needed to be
exportable into XML format. A quick inventory of the reports table made it clear to John that coding some 300
XML conversion functions would take too long. It was
evident that a new, more generic solution is required.
After an extensive analysis and re-design session (read 5
minutes), John decided to modify his report file function
once again. This time, the name of the DataWindow object to use for retrieval is passed as a function argument.
The new version of the function looked like the following:
//
//
//
//
//

Function of_CreateFile( long emp_id )

Note: error handling code trimmed for


purpose of this article

Datastore
Long
String
Integer

lds_xml
ll_rows, ll_cols, j, k
ls_filename, ls_path, ls_xml
li_rc

lds_xml = CREATE Datastore


lds_xml.dataobject = as_dataobject

lds_xml.SetTransObject( SQLCA )
ll_rows = lds_xml.Retrieve()
ll_cols = lds_xml.Datawindow.Column.Count
IF ll_rows > 0 THEN
li_rc = GetFileSaveName( &
Select File, ls_path, &
ls_filename, TXT, &
Text Files (*.TXT), *.TXT )
IF li_rc = 1 THEN
// XML header line
ls_xml = <?xml version=1.0'?>
// Outer entity - data
ls_xml += <data>

// Close row entity


ls_xml += </row>~r~n
NEXT
END IF
// File creation and writing code was
// trimmed for purpose of this article
END IF

Welcome to Hack City


After a few rounds of user testing, John quickly realized
that his initial solution was not quite as generic as he had
envisioned it. For one, he did not take retrieval arguments
into account; the ITOS reports had anywhere between zero
(0) and fifteen (15) retrieval arguments.
After a few futile attempts at exporting DataWindows and
parsing their syntax to extract the retrieval arguments, John
decided to go back to the drawing board (yes, I know
the PFC Report Service uses this method, but this is a crude
and not-so-slick method.)
Rather than implementing a client-side solution, John decided to delegate the XML generation task to a server process, which would offer faster processing and utilize less
resources.

PowerDynamo to the Rescue


PowerDynamo is Sybases best-kept secret. At its simplest
form, PowerDynamo is a dynamic Web page server, but in
fact, Dynamo is much more than that. Unfortunately, in
order to limit the scope of this article, I will only focus on
one of Dynamos slew of features XML support.
PowerDynamo provides several tools for working with
XML:

// Row entities
FOR j = 1 TO ll_rows

Page 7

Functions and tags that let you create database queries and provide their output to a Web browser in XML
form
Functions to parse XML documents and access individual pieces of a parsed document
A set of objects to create and modify XML documents

A simple Dynamo XML template looks like the following:


<?xml version=1.0"?>
<!SQL
SELECT product.prod_id, product.prod_num,
product.name, os.name, product.price
FROM DBA.product product, DBA.os os
WHERE product.os_id = os.os_id
ORDER BY product.prod_id

<price>249.00</price>
</row>
</data>

XML and DynaScript


Johns final solution was to construct a Dynamo template
that executes a SQL statement (passed as a URL page parameter) and returns the result set in XML form. The template source code is shown below:
<?xml version=1.0"?>
<data>
<!SCRIPT

>

var
var

sqlString = document.value.sql;
rs = connection.CreateQuery(
sqlString );

<data>
<!formatting>
<row>
<id><!data></id>
<num><!data></num>
<name><!data></name>
<os><!data></os>
<price><!data></price>
</row>
<!/formatting>
</data>

if ( rs.GetErrorCode() == 0 )
{
var nRows= rs.GetRowCount();
var nCols= rs.GetColumnCount();
if ( nRows > 0 )
{
// start top level element
document.writeln( <data> );

To invoke this XML query, we type the following URL


into our browsers address field:

// for each row ...


for ( j = 1; j <= nRows; j++ )
{
if ( rs.MoveNext() )
{
document.writeln(
<row> );
// ...write each columns
//
name and value
for ( k = 1;
k <= nCols; k++ )
{
colName =
rs.GetColumnLabel(k);
document.writeln( < +
colName + > +
rs.GetValue(k) + </ +
colName + > );
}

http://servername/products.stm

The results of this query will be displayed in the browser


as follows:
<?xml version=1.0" ?>
<data>
<row>
<id>120</id>
<num>P60542</num>
<name>EAStudio 3.5</name>
<os>Windows NT</os>
<price>3445.00</price>
</row>

document.writeln(
</row>\n );

<row>

}
}

<id>121</id>
<num>P60543</num>
<name>EAStudio 3.5</name>
<os>Solaris</os>
<price>3445.00</price>
</row>
<row>
<id>122</id>
<num>P60546</num>
<name>EAStudio 3.5 Doc. Set/name>
<os>Windows NT</os>

}
}
else
document.writeln(
<error></error> );
>
</data>

To invoke this XML template, we simply type the following URL into our browsers address field:
http://servername/sql2xml.stm?sql=select * from
sales_order_items order by id, line_id

Page 8

The results of this query will be displayed in the browser


as follows:

ls_url = http://localhost/xml/
ls_url += sql2xml.stm?
lblb_args = Blob( sql= + sqlsyntax )
ll_length = Len( lblb_args )
ls_headers = Content-Length: + &
String( ll_length ) + ~n~n

<?xml version=1.0" ?>


<data>
<row>

iinet_xml.PostURL( ls_url, lblb_args, &


ls_headers, iir_xml )

<id>2001</id>
<line_id>1</line_id>
<prod_id>300</prod_id>
<quantity>12</quantity>
<ship_date>1996-09-15</ship_date>

The ir_xml object, which inherits from the InternetResult


standard class, implements a single function called
InternetData, whose argument is a blob containing the
returned HTML from the Web server. For the purpose of
this article, this function has only two lines:

</row>
<row>

MessageBox( XML Output, String(data) )


<id>2001</id>
<line_id>2</line_id>
<prod_id>301</prod_id>
<quantity>12</quantity>
<ship_date>1996-09-14</ship_date>

RETURN 1

In a production environment, this function would most


likely write the XML to a file.

</row>

Conclusion

<row>

XML is quickly becoming the de-facto standard of Internet


data communications, not only between Web browsers and
servers, but also between any two computers or applications.

<id>2001</id>
<line_id>3</line_id>
<prod_id>302</prod_id>
<quantity>12</quantity>
<ship_date>1996-09-14</ship_date>
</row>
</data>

Utopia? Not
Wake up! ITOS is not one of those snazzy Web applications it is an ageing, Client/Server, PowerBuilder 6.5
application, remember? How, then, can a PowerBuilder
application harness the power of a dynamic web page
server?
The answer lies in yet another hidden PowerScript gem
the PostURL PowerScript function. This function performs
an HTTP Post, allowing a PowerBuilder application to
send a page request to a web server.

At this point in time, it is still unclear if, when and in what


ways PowerBuilder will support XML. Personally, I think
that the nature of the DataWindow perfectly lends itself to
XML implementation just look at a DataWindow export
file; it is nothing but an ordered collection of attributes
and values. Imagine how easy it would be to obtain a
DataWindows retrieval argument if all you had to do is
traverse a tree (XML DOM)
Sybase has made a commitment to the XML standard. The
XML features in PowerDynamo are rich and flexible, and
as the standard further matures, Im confident it will find
its way into PowerBuilder.

The following code uses the SQLPreview DataWindow


event to capture the SQL statement of the report, but instead of retrieving it, it sends it as a parameter to an HTTP
request, where it will be picked up by the sql2xml.stm
PowerDynamo template:
Blob
String
Long

lblb_args
ls_headers, ls_url
ll_length

// ir_xml is a standard class inherited


// from InternetResult
ir_xml
iir_xml
// inet_xml is a standard class inherited
// from Inet
inet_xml
iinet_base
iinet_xml = CREATE inet_xml
iir_xml
= CREATE ir_xml

Page 9

?
Roy Kiesler is a Senior Lead Consultant at Noblestar Systems in
Cambridge, MA, an e-business
solutions company embracing
measurable results. Roy has been
working with PowerBuilder since
version 4.0, developing client/
server, distributed and Web applications for the Pharmaceutical,
Financial Services and Tele-communications 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.

COM+ SECURITY
by Alan J. Walsh

Introduction
Now that Windows 2000 is finally here I thought it might
be useful for me to devote some time to discussing the
new features of COM+ in detail. Some of you will recall
that I gave a preview of these features in an article last
year, but that was based on a release candidate and some
things have changed since then. For one thing not all of
those features made it into the final release of Windows
2000! But most did, and I think it would be interesting to
do some in depth analysis of those features now. Ill start
things off with this article and a subject that many developers dread but nevertheless must face sooner or later
security.

The Problem of Security

Figure 1, DCOMCNFG

If you are like me then security is not a topic that really


excites you. Developers work very hard to develop creative systems, and often times security gets in the way of
that. Either you have to work too hard during the development process to incorporate the requisite level of security
in your system, or worse yet you ignore security until the
last possible minute and then scramble to find a way to
glue it on to your project. Id rather be thinking about ways
to solve business problems and let someone else write all
that nasty security code.
Fortunately, this is exactly what COM+ tries to do. COM+,
and indeed the entire Windows platform, is all about empowering developers with an environment that provides
the maximum amount of functionality with the least amount
of unnecessary work. Windows provides a vast quantity of
services to developers and increasingly those services are
available without having to write very much code at all.
COM+ security is one such service.

COM Security
Lets start by reviewing what we already know about security in COM. In classic COM, there are four fundamental security settings: authentication, impersonation, access
permissions, and launch permissions. These settings can
be applied on a machine-wide basis, and those settings
become the defaults for all components. You can also
configure COM applications with their own settings. In
either case you use a utility called DCOMCNFG. This utility
still exists in Windows 2000 to provide this functionality
to COM applications.

Launch permissions specify who is allowed to start components running on this particular machine. You simply
add Windows accounts or groups to this list and specify
allow or deny for launch permissions.
Access permissions determine who is allowed to use a particular component. As with launch permissions, this is simply a list of Windows security principals with an allow or
deny flag. Be sure to include the SYSTEM account in the
list of allowed accounts.
Authentication level allows you to set a desired level of
encryption and authentication between the client and your
application. Table 1 lists the possible levels from least secure to most secure.
Be careful when tampering with authentication levels. COM
negotiates a level based upon the settings of the client and
the component. If they do not match an error will result.
For example, your client can programmatically specify a
level that is lower than that of the component, and the calls
will fail.
Impersonation allows you to control the degree to which
the component can know the clients identity, and what
they can do with that knowledge. Again from least to greatest, in table 2 there are the possible impersonation levels.
As with authentication, clients can programmatically set
their impersonation level. If clients do not specify an impersonation level, the machine-wide setting will be used
by the component.

Page 10

Table 1, COM authentication levels

Table 2, Impersonation levels

One final COM security setting that has a large impact on


how your component will operate is identity. This determines the security credentials under which your component will run. Figure 2 shows the available options.

Setting identity to the interactive user instructs COM to


launch the component with the security credentials of whoever happens to be logged in interactively. This has some
obvious problems and is really only useful during debugging or an application that specifically needs to interact
with a logged on user. Selecting launching user causes the
component to be created with the callers identity. You
can also choose to have the component launched under a
specific user account. The System option is for components that run as services.
By tweaking these settings in DCOMCNFG a developer
or administrator can control who can access components
and what kind of permissions those components will have.
You can set specific values for each component or simply
choose to inherit the machine-wide settings. This is fine
for our legacy COM components, but what about our
new COM+ code?

Component Services

Figure 2, Identity

Everything we have talked about so far still exists in Windows 2000 to support COM applications, but there is additional functionality to enhance security for COM+ components. To begin with, we have a much more powerful
tool for configuring security and other COM+ properties.
As you can see in figure 3, the new Component Services
Page 11

console provides developers and administrators with a familiar interface for managing COM+.

Figure 3, Component Services console


Figure 4, Application Settings
If you are not yet acquainted with MMC consoles you
should be. MMC 1.2 is built right into Windows 2000,
and youll find a console to manage every aspect of your
system. The major event in COM+ is the merger between
COM and Microsoft Transaction Server (MTS), and security is a big part of this. The Component Services console should look very familiar to users of the MTS Explorer under Windows NT. Using the explorer style interface you can drill down to manage multiple computers.
Right-click on the Computers folder to add additional
machines to your list. By right-clicking on a computer you
can bring up the default machine-wide settings for that
machine. These settings are a mixture of the COM security settings that you would otherwise configure using
DCOMCNFG as well as some non-security related COM+
settings, such as those for the Distributed Transaction
Coordinator (DTC). Thats right, with MTS now folded
into COM+, the DTC is part of the mix when configuring
your COM+ applications. Note that by right-clicking on a
computer you can also start and stop the DTC a handy
feature when you are debugging.

Application Security
As you continue to drill down in the CS console, youll
see icons for each of your COM+ applications. Even if
you do not have any applications of your own you will
inherit some default system applications from Windows.
If you look in figure 3 youll see that I have applications
related to IIS 5.0, which I happen to have installed on this
machine. If you click on the COM+ Applications folder
you will see icons for each of your applications in the right
pane of your console. As was the case in the MTS Explorer, any active applications will be indicated by a revolving icon. Note that the active X of MTS has been
replaced by a + for COM+.
To access the security settings for an application, simply
right-click on that app and select properties. Youll get a
screen like this one:

We are most interested in the Security, Identity, and Activation tabs. Activation is the best place to start because it
determines a lot of our other choices. As was the case in
MTS, you can choose to run your application either as a
Library application or a Server application. Library apps
are created in the callers process. Server apps are created
in a dedicated server process. If you look back at figure 3
again you can see that I have applications for both in-process and out-of-process IIS applications.
The identity tab allows you to choose the identity of your
component in much the same way we used to do under
COM with DCOMCNFG. The only choices here are Interactive user or a specific user that you must choose. For
Library applications, the identity tab will be greyed out
library applications always run under the clients identity.
The security tab that you see in figure 4 shows you the
possible security settings for a server application. You begin
by choosing whether or not to enforce access checking.
After that you can select between two security levels. In
the first level access checks are only made at the process
level. Note that this setting should be avoided for library
applications. The second security level allows you to turn
on access checking at the component, interface, and method
level. Remember that at this point we are still just
configuring the security for our application. The application in turn will contain one or more components, which
we will discuss later.
In the bottom of the security tab for the application is a
drop-down that allows you to select an authentication level.
The choices here are the same as for COM applications.
Finally you can select an impersonation level. The impersonation level specifies what the application wants to allow when it is a client calling other applications. If you
look at a library application you will notice that the authentication and impersonation drop-downs are replaced
with a single check box that turns on or off authentication

Page 12

for the librarys host process. Now that you have configured
the security settings for your application you can move on
to more specific settings for the components that comprise
the application. But before we do that, we need to explore
another key concept in COM+.

Whats My Role?
Roles were introduced in MTS to allow developers and
administrators an easier way to configure security for components. Roles are categories of users that the developer
defines within the application for specific access levels.
The developer creates roles and assigns those roles different access levels for applications, components, etc. The
administrators job is to later fill in those roles or categories with real user accounts. The beauty of this division of
labour is that the developer can configure security without
having to be aware of the actual users who will eventually
be granted access through roles. You might for example
create a commercial application with roles like Manager
and Clerk. You could then deliver that application to
your customers with a complete security configuration
without having to know who will actually occupy those
roles. All COM+ security is based on roles, so it is important to understand this concept as you develop your application. You need to consider which roles your application
will have and what objects each role will have access to. It
will have a direct impact on everything right down to the
methods that you choose to create.
Getting back to our Component Services console, we can
see how this role-based security works. As you drill down
below the application level you will see two folders: one
for the components that make up your application and another for the roles. You can create new roles by right-clicking on the Roles folder and selecting New. Administrators
can then use this interface to assign users to the role. Rightclicking on a component and selecting Properties brings
up the dialog in Figure 5.

You can enable or disable access checking at this level


and below by checking the authorization checkbox. This
allows you to enable access checking for components at
the application level and then to selectively enable access
checking for each individual component. The bottom part
of this dialog allows you to specify which roles will have
access to this component.
As you continue to drill down to the interface and even the
method level you will see that they each have a security
tab on their property dialogs that also allows you to assign
access permissions to your applications roles. Roles that
you assign at higher levels are inherited by objects below
them.

Scripting and Programming


With all these possibilities you might start to get anxious
when you think about configuring security for a complicated application with many components and methods.
Fortunately, everything that you can do in the CS console
can also be scripted. The Windows Script Host is built
into Windows 2000, so both developers and administrators can write scripts to manage complex applications and
large numbers of servers.
Another very important point is that all of the features of
COM+ security are available to both clients and servers in
application code. Everything from authentication to roles
can be accessed through the COM+ API. A complete discussion of this API is beyond the scope of this article, but
you can find complete documentation in the Platform SDK.
Of course choosing to implement security in code defeats
our goal of simplifying the security process. Before you
start writing a lot of security code by hand, ask yourself
this question: does COM+ already do this for me?

Conclusion
The new Component Services console and the incorporation of MTS features like roles really simplifies the life of
both COM+ developers and administrators. The goal of
COM+ is to provide a system in which developers can
focus on writing business logic, and then choose to incorporate services like security or transactions later when they
configure their components. Security will always be a part
of the development process, but COM+ shows that it
doesnt always have to be the worst part.

?
Alan Walsh works for Indiana University.
He can be reached at
alwalsh@indiana.edu.
This is Alan after his presentation on COM at the
Swiss PB User Group
Meeting in Zurich, Nov. 98.

Figure 5, Component security settings


Page 13

INTRODUCING PYTHON
by Rolf Andr Klaedtke, based on material from Bruce Eckel

Introduction

Why Python?

And now for something completely different...

According to Bruce, Python allows for a huge increase in


productivity. It is a good companion to C++ and especially
to Java, and is completely free: that really means no royalties, no license agreement, but you can include it in a forprofit product or use it in your company without approval
from purchasing.

Back in April of this year, I organized a Hands-on Java


Seminar with the well-known author of the book Thinking in Java, Bruce Eckel. The week was very interesting,
not only because of the seminar itself, but also because we
had a small and interesting group. During the seminar,
Bruce kept mentioning a language called Python, which
we had never heard of. Eventualy we pressured him to
tell us more about it.
This article is based on Bruce Eckels slides and extracts
from two Python books that I have purchased since then.
Yes, we were positively impressed, thats why I thought
Ill introduce Python to those of you who dont know it
yet.

What is Python ?
Python is an object-oriented language for writing
standalone programs, scripts and prototypes of complex
applications. One of the nice things about Python is that it
is free: if you havent heard about it, than its probably
because its open source and theres no big marketing
machine (or a single company with a big marketing budget)
pushing it. Its a a grass-roots movement, as Bruce liked
to call it.
Python scripts are portable across many platforms, including all major Unix systems, Linux, Windows 95/98/NT
and MacOS.
Apparently Python is widely used in the Unix and Linux
communities, but it has a clean interface to Windows too.
For those interested in using Python under Windows, the
book Python Programming on Win32 (ISBN 1-56592621-8, OReilly) is a recommendable resource. On the back
cover of this book, one can read the following: Python is
growing in popularity; based on download statistics, there
are now more than 400000 people using Python and more
than 150000 using Python on Windows. Use of the language has been growing at about 40% per year since 1995,
and there is every reason to believe that growth will continue.
Of course, you may argue that much can be written on
paper and the publisher probably has a good reason to write
positive things about the language. Well, dont take the
publishers word maybe I should throw in some statements taken off Bruce Eckels presentation given to us
during the Java Seminar.

The book Python Programming on


Win32 provides some explanation as
to where Python fits in the development
picture. The authors particularly recommend Python as:

A macro language
A rapid prototyping tool for object models and algorithms
A testing tool
Data cleaning and transformation
Python as glue: this probably needs some explanation: Python works well with files, network protocols,
DLLs, and COM objects and it offers extensive libraries to help accessing almost any kind of data. Its
well suited to controlling other packages, for systemadministration tasks, and controlling the flow of data
between systems

The Basics
Python, like Java, is a compiled interpreted language.
It is weakly typed and you get templates without templates. It is like Smalltalk, but with a much more C/C++/
Java-like syntax, real OOP from the ground up. Functions
have regular argument lists and theres no special $ etc.
in front of identifiers, so one doesnt have to manage the
argument passing. There are several quoting mechanisms
and its easy to handle embedded sequences.
However, one of the biggest adjustments is the fact that
Python uses indenting for scope: this is shocking at first,
but then, according to Bruce , its One of the greatest
things you never have to parse braces and everybodys
code looks the same

Comparing the Language


On one of the slides, Bruce states that the previously mentioned increase of productivity reaches the factor 10. Bruce
says that this corresponds to his own experience and to
what he heard from others. In fact, he states that he would
tackle problems that I wouldnt even consider in C++

Page 14

or Java. I know it would take many hours or even days


with those languages. Everything I do can now be amplified with programming, instead of a few select tasks. Its
the real promise of computing finally realized.

Of course, these samples are too small to really judge the


language and its possibilities. Therefore Id recommend
that you download Python and have a look at it for yourself.

To underline the above, he provides the following language


comparison:

Resources

In C++, I have to debug like mad


In Java, I have to type like mad

But not as much debugging because of garbage collection, enforced exceptions, stronger type checking.

Python is so expressive that I can write 1/10th the


code or even less than I have to in Java

Python provides Javas checking benefits (possibly not


so early in the development cycle, but at least things
cant slip completely through the cracks like in C++)
and C++ templates for free, without having to learn the
difficult syntax and semantics.
Python manipulates symbols, so one gets the pre-processor but with the complete power of Python. It also has
default arguments, named argument calls, and operator
overloading
I never have to think about whether to make an argument
virtual, or whether to do something different to a class
because it might be multiply-inherited.
Pangloss as a Python programmer: The best of all possible worlds.
So far Bruce Eckels words. But lets look at some sample
code to give you a better idea. Sure enough, before writing this article, I spent some time on the web to find more
material on Python. Imagine my surprise when I found a
sample of how to use Python with PowerBuilder 5.0 !

Code samples
The following code sends a mail message. There is a free
mailing list manager available written in Python.

First of all you can go to the Python website at http://


www.python.org and download it. There youll also find
libraries, documentation and a lot of information.
If you havent heard of Python so far, you may be surprised by the number of books already available on the
market:

Learning Python, by Lutz & Ascher, OReilly 1999


The Quick Python Book, by Harms & McDonald,
Manning 1999
Python Essential Reference, by Beazley, New Riders
1999
Python Programming on Win32, OReilly, 2000

These are just a few of them. I bought the first and the last
one on the list and can recommend both of them. Id like
to add that among other material, the last one on the list
provides interesting introductions to COM/DCOM, NT
services and a lot more which already makes it worth buying. Samples include how to integrate Python with Excel
or how to work with E-mail, including a sample of how to
send a message with Exchange/Outlook.
Theres also a Python conference, for details see
www.Python.org (Lifes better without braces).

?
Rolf Andr Klaedtke is an independant consultant and
software developer with over 15 years experience in
the IT industry, mainly working on the AS/400. He is
the publisher of PowerTimes and president of the
Sybase and PowerBuilder User Group Switzerland. In
1996 and 1997 he has been the main organizer of the
Swiss PB Conference. You can reach him at
rak@powertimes.com.

import smtplib, sys, rfc822


server= smtplib.SMTP(smtp.mail.com)
msg = Subject: foo\nThis is a test
server.sendmail(name@mail.com, &
name@mail.com, msg)
server.quit()

The following code sample opens Word and prints the sentence Python was here in a new document:
from win32com.client.dynamic import Dispatch
Word = Dispatch(Word.Application)
Word.Visible = 1
WordDoc = Word.Documents.Add()
WordRange = WordDoc.Range()
WordRange.InsertAfter(Python was here)

Bruce Eckel is the author of


Thinking in Java, Thinking in
C++, and C++ Inside & Out.
He has given hundreds of presentations throughout the world, published over 150 articles in numerous magazines, was a founding
member of the ANSI/ISO C++
committee, speaks regularly at
conferences and is the C++ & Java track chair for the
Software Development conference. He provides public and private seminars & design consulting in C++
and Java. Check out his website at http://
www.mindview.com for more information.

Page 15

OUR SURVEY SAYS


Introduction
In the first quarter of this year we ran a survey asking for
your feedback on what you liked or disliked about
PowerTimes, what we should concentrate on, what article
subjects you were looking for, etc.
Although the response was not overwhelming, there was
some very useful information provided, and we appreciate that very much. This article will summarize the responses to many of the questions we asked.
But firstwe announced that there would be two lucky
winners from the survey participants who would be receiving special Swiss gifts. We are pleased to announce
that Bob Carlton from the U.S.A. and Kaoru Kishimoto
from Brazil were drawn from the hat. Well done guys,
and thanks for your input!

The Results
One of the key points we wanted to know was whether or
not we should continue focussing only on the Sybase
toolset. A whopping 78% said yes, so that was clear. We
also wanted to know whether or not the quality of
PowerTimes, including the articles, met your expectations.
An amazing 98% thought that it did. This made us feel
really good - all the late nights have seemingly been worth
it! Many people also commented on the excellent quality
of articles. As the editors, we can only take our hats off to
the authors in PowerTimes - they are really the people who
have made PowerTimes what it is, and we really couldnt
put PowerTimes together without them. The positive results are a reflection of their hard work.

What You Liked Most


We also wanted to know what you liked most about
PowerTimes, so we could continue to get it right. As already mentioned, article quality was in fact the number
one item given here. The was followed by publishing in an
electronic format and that PowerTimes was rich in facts.
There were a couple of other items which people mentioned which we just have to pass on: one person mentioned the best thing about PowerTimes was the Editors
(blush, blush). However, another thought the photos of
Boris Gasin were the best thing. No names will be mentioned, but were sure many of you can guess who this
was! And just so we can satisfy this person, and any others, again, here is Boris:

Boris Gasin - well liked

What You Liked Least


So much for the good things. What dont you like? Well,
there was a tie for first place. Many said that they dont
like the electronic format and the same number wanted to
see PowerTimes out more frequently.
Regarding the format issue, of those who expressed an
opinion, there were actually a greater number who didnt
like the electronic format than those who did. Unfortunately majority does not rule, and we are not about to
change. Sorry! As for frequency, if we could get enough
high quality articles we would certainly consider publishing more frequently, but over the years that has not been
the case.
Some people thought there were not enough quick-toread articles, others thought there was too much advertising (if only!) and others didnt like the password protection.

Articles, Articles, Articles


With articles being the most important feature of
PowerTimes, we asked what you wanted to read about. At
the top of the list with 91% of respondants was
PowerBuilder.

Page 16

The top ten are:


PowerBuilder
New Technologies
PFC
Distributed PB
PowerJ
COM
Product reviews
PowerDesigner
EAServer
ASA

You also noted that a discussion of techniques for developing distributed applications would be handy, as well as
information on thin-client development.

91%
73%
60%
53%
53%
51%
40%
38%
22%
4%

A few people mentioned that a column on new and emerging technolgies would be useful, to keep readers up-todate on what is happening.

In Conclusion
You certainly gave us some important feedback, but as
every technical publication, we need people to write about
the topics. Since there are not that many willing, times
have become more difficult for us with every issue.

Other Technologies
We also wanted to know about the technologies you wanted
to read about. You told us that XML, CORBA and EJB
were the most interesting, followed closely by the web.
There were not too many specifics about the latter one, so
we guess just about anything related to the topic would be
interesting.

As mentioned in the editorial, we are currently in discussion with a company who would like to take over
PowerTimes and increase its distribution as well as ensure
some regular article input. Even though there are a lot of
things you want to read about, we will have to leave the
survey results for now. We will hopefully soon be able to
inform you about the future of PowerTimes.

NON-VISUAL OBJECT INSTANCES IN PB 7


by Werner Wager

Introduction

The PB 7 Way

This tip deals with non-visual objects that are declared as


an instance variable in another object, and how this can
be done in PB 7.

In Powerbuilder 7 we are able to insert a non-visual object


into another object in nearly the same way as we place a
visual object on a window.

As an example we will use a datastore to retrieve order


data. To make it simpler the datawindow object has no
retrieval arguments. We place that code in a window, but
more likely it would be in another non-visual object.

If you open the Insert menu item in the window painter


you have two options at the top: control and object.
Inserting a control is just placing a control on the surface
of window. Inserting an object is similar, but you dont see
it on the window (of course, it is non-visual).

The PB 6 Way
How can we accomplish this in PB 6? The first thing is to
define an instance variable of type datastore:
Datastore ids_orders

After that we have do some coding to fill the datastore.


Lets say we do that coding in the open event of the window:
ids_orders = Create datastore
ids_orders.Dataobject = d_orders
ids_orders.SetTransObject (SQLCA)
ids_orders.Retrieve ()

The cascading menu shows you all of the standard class


objects including userobject. What we do now to accomplish our task is to select datastore from the menu.
In the standard view the non-visual object list is displayed as a tabpage in the right-hand lower pane. See figure 1 below.
If you have a look at the pane above, the one that usually
shows the properties of the window or controls, you see
that it shows the properties of the datastore. In figure 1,
we have changed the default name, added the data object
and coded the data retrieval.

Page 17

Figure 1, DataStore properties in PB 7

I like this approach very much. Finally you can see your
non-visual objects. But there is more to it...

And My Favorite Thing...


Did you ever have the need to use a datastore and code
something in an event of the datastore? Well Ive had that
need many times. Up to PB 6 you had to define a userobject
inherited from datastore, place the appropriate code in the
userobject and use that userobject instead of datastore.
After a while you ended up with lots of specialised
datastore objects that you could use only in one place.
With PB 7 this is history. Just doubleclick the object in
the Non-Visual Object List and have a look at the script
pane. All the pre-defined events of the datastore are there,
ready to be coded by you. Simply put your code there and
you are done!

Werner Warger is an IT consultant in Austria. He and


his company PowerSolutions have been concentrating on Powerbuilder since PB3. You can reach Werner
at wwarger@warger.vol.at

Page 18

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

TABLEDANCER 1.12
from Helmar Gordon Dahmer
reviewed by Arthur Hefti

Introduction
TableDancer is a command line utility that creates HTML
documentation from a SQL Anywhere or Adaptive Server
Anywhere database.

records, if its replicated, remarks and an overview of columns, keys, indexes, trigger information and eventually a
performance hint.

Description

Each of these overview links opens a new page showing


its details. As an example you can see here the performance hint for this table.

TableDancer comes with an easy-to-use installation that


places all the needed files in a single directory (preferably
on a server that can be accessed from different
workstations).
After the installation you have to define the database entries to work with in the TableDancer INI file. After doing
this all is set for using the tool.
Since TableDancer is a command line utility, it does not
have a GUI. If you are using the visible database engine
you can see how the database gets started and runs for a
couple of seconds (it took about 20 seconds for 100 tables
on a PIII/500).

Generated HTML
During the run the tool creates a lot of HTML files describing your database. The documentation includes information about Tables, Views, Procedures, Columns and
their details, Primary and Foreign Keys, Indexes and even
the number of rows in the table.

TableDancer is primarily written for developers and DB


administrators that are used to working with ISQL, stored
procedures or embedded SQL.

In My Opinion
TableDancer is an easy to use and quick way to have the
latest information about your data model right at your finger tips. TableDancer can be run after some changes are
done to the database or could be included in the Windows
Scheduler to update the information every hour or every
day.

Pricing, Availability and Versions


The current version of TableDancer is Version 1 Release
12. It is available for free from the following location:
http://www.softship.de/tabledancer.html
The author of TableDancer is Helmar Gordon Dahmer and
he can be contacted via email at: dahmer@softship.de
You can start browsing the database with an overview of
the tables and views. By following the link on the table
name you get a table overview showing the number of
Page 20

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.

PowerBuilder User Group Denmark

The members of the PowerBuilder User Group Denmark receive PowerTimes thanks to a generous sponsorship from Sybase Denmark.
Please contact Sybase Denmark, if you want to know
more about the PB User Group Denmark:
Sybase Danmark A/S
Lyngbyvej 20
2100 Kobenhavn
http://www.sybase.dk

ChicagoLand Sybase Tools User Group


The officers of the CPBUG are:
President
Vice-President
Secretary
Treasurer

Michael Baraz
Peter Vassilatos
Jeff Barnes
Catherine Chang

(630) 235-4529
(312) 856-6720
(847) 549-7765
(630) 350-6048

The User Group meets the first Tuesday of each month


(unless otherwise noted). Please check the website
which can be found at:

http://www.cpbug.org
The Secretary of the ChicagoLand PowerBuilder User
Group, Jeff Barnes, can be reached at the following email address: jcbarnes@ibm.net.
Page 21

Central Ohio PowerBuilder User Group


Internet:

The Central Ohio PowerBuilder Users Group meets


bi-monthly on even numbered months. Meetings usually consist of a guest speaker, member demos, or
product presentation and a discussion period.
Location:

http://www.cmhpbug.com

Officers:
President:

Bank One Offices


1111 Schrock Road, Columbus, OH

Refreshments: 6:00 - 6:15pm, Presentation: 6:15


Our mailing address is:
Central Ohio PowerBuilder User Group
P.O. Box 363
Worthington, OH 43085-0363

Barry McDonald
mcdonald@nmedia.com

Vice President:

Todd Dake
todd@airnet.com

Secretary:

Earl Kincaid
copbugsec@aol.com

Treasurer:

Sudhir Gadepalli
gadepalli@nmedia.com

Club Fibonacci - Club des Utilisateurs Sybase France


Le club francais des utilisateurs PowerBuilder nexiste
plus en France. Il a t remplac par le Club Fibonacci:
le club des utilisateurs Sybase, qui est gr directement
par Sybase France.
Les membres du Club Fibonacci reoivent PowerTimes
grace au sponsoring gnreux de la socit NOVALYS.
(The PowerBuilder User Group France doesnt 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,


mthodes
et
normes
de
dveloppement pour la russite de
vos applications. Les consultants de
Novalys accompagnent et certifient
vos projets pour garantir leur russite 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 Gallini
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
liscrizione
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.

Page 22

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

Ottawa PowerBuilder User Group


The Ottawa PowerBuilder Users 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.
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.

President:

Carole Hargrave
chargrav@magi.com

VP Public Relations: Ron Guilbault


Rong@pentelar.com
VP Administration: Bill Stevens
bills@pentelar.com
Treasurer:

Wade Kornik
kornikw@home.ca

Secretary:

Paul Grawal

The Ottawa PowerBuilder User Group website can be


found at http://www.opbug.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.

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.

PBUG Council:
Chairman:

Warren Clayburn
wclayburn@omegaprime.co.uk

Treasurer:

Ian Soden
Isoden@linkhand.com

Secretary:

David Speight
dspeight01@aol.com

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 23

PowerBuilder User Group Norway


Formlet med vr brukerforening er todelt:
1) Den skal vre et kompetanseskapende forum
for
brukere
av
Powersoft-produktene
2) Den skal vre et kontaktpunkt mellom brukere
og Sybase Norge AS nr 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 lsninger,

Thomas Revetal
Stig Melling
Rune Nerhagen
Wenche Fronth
ystein Rolfsen
Leif Aksel Grthe

tredjepartsleverandrer 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.

Zema AS
Sybase
WM-Data
Hrens Forsynings Kommando
De Norske Bokklubbene
Online Consulting Partner AS

Tlf. 90 56 45 68
Tlf. 22 57 70 00
Tlf. 23 09 63 86
Tlf. 22 02 20 00
Tlf. 90 52 74 94

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

Page 24

(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.

Sybase and PowerBuilder User Group Switzerland

CATsoft
President:

Rolf Andr Klaedtke


rak@raksoft.ch

Vice President:

Andreas Theis
andreas.theis@national.ch

Treasurer:

Martin Rothenberger
martin@catsoft.ch

Secretary:

vacant

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), Powersofts 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 25

+41-55-616 51 11
+41-55-616 51 14
www.catsoft.ch

You might also like