“I believe it is incumbent on the Cloud Service Providers (CSPs) and/or System Integrators (SIs) to understand the regulatory and compliance-related issues that their customers face,” noted Manjula Talreja, VP of Global Cloud Business Development at Cisco, in this exclusive Q&A with Cloud Expo Conference Chair Jeremy Geelan. “Of course these issues are different in each industry and in each country.”
Cloud Computing Journal: The move to cloud isn't about saving money, it is about saving time - ...| By Richard (Rik) Brooks | Article Rating: |
|
| March 6, 2013 02:00 PM EST | Reads: |
9,855 |
Normally I try to write applications on the DataWindow or Appeon but every now and then I get a question that makes me sit back and say, "Huh?"
In this case the question concerns the PostOpen event. I've seen that event named different things: ue_post_open, postOpen, post_open, ue_postOpen, etc. It has, as far as I can see, always had post and open in the name of the event. Further, just about every framework that I've ever seen has had that event in the base window.
The question that I was asked was, "Why is that event there?"
The programmer wanted to know why there was code in the post open and why was it not just put at the end of the open event? At first I was really confused by the question. It was like he was asking me why do we have arrays? I just couldn't imagine not knowing the answer.

Then it occurred to me that I learned the answer to that question from a book that was published almost 20 years ago. As far as I can tell there are no new books on PowerBuilder and there are only two print magazines, this one and the ISUG magazine.
That's it.
Further I came to think of the tremendous responsibility that the few PowerBuilder authors share. New PowerBuilder programmers turn to us for information and there aren't that many of us left writing. So that leaves a whole lot of PowerBuilder programmers who get all their training from reading the code of other programmers.
Often those other programmers were consultants who wrote the code ten years ago and worked for consulting firms that no longer exist.
To make a bad situation worse a lot of times those programmers are brave souls that have been recruited from other disciplines. When the company finds that their last PowerBuilder programmer has just quit because he got a much better offer they turn to their existing programming staff and ask who would like to pick up PowerBuilder. They may point out that there are 6 or 10 or, as in the case for one company for which I recently worked, 26 PowerBuilder programs that are all critical to the company. The PowerBuilder programmer would become indispensable to the company.
So suddenly a brave Visual Basic or Java programmer finds PowerBuilder installed on his machine. His boss pats him on his pointy little head and tells him that Google is his friend.
Where would you turn? If you picked up the mantle and offered to learn a language that you knew nothing about, what would you do? You'd turn to Amazon or Google. If you type "best PowerBuilder books" in Google the first mentioned is my Definitive DataWindow which was published 13 years ago and is embarrassingly out of date...and out of print.
Let's go to Amazon, there you will find the latest PowerBuilder book is for version 9. It was published 10 years ago. Since then... nothing.
Why should I be surprised that things that I find fundamental are entirely unknown by the newest PowerBuilder programmers.
Warning: If you are a seasoned PowerBuilder programmer the rest of this article will bore you silly.
There is an open event in a window. This is the event that happens when the window is "opened." Now the word ‘open' can be deceptive. A lot of people feel that a window is only opened when it is shown on the screen.
That would be wrong.
The open of a window begins when the open command is issued. That is to say, with a line like:
Open(w_client_editor)
The problem, the whole reason that a post open event is required goes all the way back to Microsoft Windows 3.0 Old Windows programmers will remember version 3.0 very well. Version 3.0 was almost the death of Microsoft Windows. It was unbearably slow. I am not exaggerating; it was the slowest version of Windows that was ever released.
It was so slow that Windows users were seriously studying what the impact of changing to another - any other - operating system would be.
This time Microsoft listened... and panicked. They did a study to determine what it is that makes the user perceive speed in an application. What could be changed to cause the user to believe that the application is faster with minimal real change to the operating system? It wasn't that Microsoft didn't want to address their problems with speed, they most certainly did, but addressing those problems would take time that Microsoft just didn't have. Microsoft was about to lose a lot of customers and once lost, it would be hard to get them back.
Microsoft learned that the visual perception strongly influenced the user's perception of speed. They learned that if the window POPPED onto the screen, all at once, even if the data wasn't there yet, then the users perceived speed. What killed the user perception was when they pressed a button and nothing happened for four seconds. The user would often punch that button two or three times. So Microsoft created operating system queues.
The graphics queue happened before the application queue. So graphics could be given a higher priority than the application and windows would paint faster. They released version 3.1 which was mostly just the addition of these queues (along with other changes like a floating point emulator in assembly code).
This was great but it broke the relationship of the open event with the code. This meant that you weren't guaranteed that everything would be created in the window until after the open event finishes.
Consider this code:
W_customer.open() event
Dw_1.setTransObject(sqlca)
Dw_1.retrieve()
This code would often result in a "Null object reference" error because dw_1 had not been created by Microsoft when the code ran.
Imagine how we felt when this happened. There was a null object reference in line 1 of the open event, but, but, but... that's dw_1. There it is, right there on the window! How can it be null? It's not dynamic. You put it there.
Okay, we learned that we should not put anything in the open event that referred to anything on the screen. Most of us learned to just not put anything at all in the open event except one line in the ancestor:
W_root.open() event
post event ue_post_open( )
For reasons already stated I imagine I can't rely on you knowing the difference between post event and trigger event or for that matter between postOpen and post open.
Okay, one at a time. Posting an event means that Microsoft Windows will open this window after the rest of the code in this script is executed. Basically it means, "Do this when you get a chance." So if you add that to the open event of your root window then it will call the ue_post_open event after all of the code in all of the descendants of this window is done.
Keep in mind the order of execution of events. First PowerBuilder goes to the farthest ancestor and then starts executing down the inheritance tree. If you have w_grandpa, and w_pa inherits from that and w_son inherits from that then the code in w_grandpa.open would execute first, then the code in w_pa, finally the code in w_son.
This means that if we put the post event in the open of w_grandpa, then the ue_post_open would happen after the last open event in the descendants. In our example:
W_grandpa.open->w_pa.open->w_son.open-> w_grandpa.ue_post_open-> w_son.ue_post_open->w_son.post_open
All that we have to do is create a ue_post_open event in our root window. We don't have to put anything in it, just create one. Then we post that event from the open event and we have a place now to put all our initialization code and don't have to worry about whether any object exists or not.
More important the screen will quickly draw or paint, giving the user the perception of speed. If you need to retrieve data and know it will take a short time, then you can set the pointer to an hourglass. I guarantee that your user will feel the window is faster.
I mentioned that most of us learned not to put anything in the open event. There is an exception to that rule. When your window is opened with a parameter then you should access the message object as the first line of code in your window.
Let me give you an example. Suppose that you open a window with a customer_id. You are going to use that customer_id as a parameter to the datawindow dw_1. Here is what you would do.
W_calling_window
Long ll_customer_id
Ll_customer_id = dw_detail.getItemNumber(dw_detail.getRow(), "customer_id")
openWithParm(w_customer_detail, ll_customer_id)
Now in the w_customer_detail window you need to set an instance variable. That's because we have just passed a variable to the new window and we are going to get it in the open event but we are going to retrieve the DataWindow in the ue_postOpen event. So let's do this. I will assume that you know how to declare an instance variable. Let's name it il_customer_id. Now let's look at the open event of w_customer_detail.
W_customer_detail.open()
il_customer_detail = message.longParm
Okay, now in the open event of w_customer_detail we have taken the longParm property of the global message object and put it in an instance variable.
Since we have inherited the w_customer_detail from whatever our base window is, the ue_postOpen event will automatically fire. That means that we don't have to fire off the event. Now I just have to put the code that we need in the window.
W_customer_detail.ue_postOpen()
dw_customer_info.setTransObject(sqlca)
dw_customer.retrieve(il_customer_detail)
Let's Do Some Housekeeping
I think that we've pretty well covered the post open event but in the process of doing that I've brought up a couple of other issues that I'd like to cover just to be complete.
First let's talk about post event as opposed to postEvent.
With the post event command you must know the name of the event that you want to post. You can pass the parameters normally. However, just like calling a function, the event has to exist and the parameters must be correct.
On the other hand the postEvent function takes a string as a parameter and that string is the name of the event. This means that you can store the name of the event in a table. In fact the event doesn't even have to exist. If it doesn't then nothing will happen. There will be no error thrown.
This makes the postEvent perfect for security systems where you can post an event based on a security role. Here is some code that might work for you in a menu event.
M_main.m_file.m_save.clicked
Datastore ld_security, ld_events
ld _secutity = create datastore
ld_events = create datastore
ld_events.dataobject = "d_events"
ld_security.dataobject = "d_get_security"
ld_events.setTransObject(sqlca)
ld_security.setTransObject(sqlca)
parentWindow.postEvent(ld_events.retrieve(ld_security.retrieve(gs_user_id)))
Using the postOpen function is very flexible but it is limited in the parameters that can be passed it. If you use the post event command, you can pass any number of parameters that you wish. The caveat is that the event must exist or you will get a compile time error. So the event that you used before for security cannot be done.
All that I just said for the postEvent and post event command applies also to the triggerEvent and trigger event commands.
Finally I'd like to mention the global message object.
This object is global. It can be accessed at any time by any other object. That means that if you access the message object in the postOpen event then another window may have changed your message object properties and this could corrupt what you are expecting.
Don't take this lightly. More than once I've debugged and found this error and believe me it is difficult to find. The problem is that it is not an error with logic or data but a timing error. These can be close to impossible to find.
Please take my word for this, make it a golden rule. If you open a window with a parameter, the first thing you do in the target or opened window is grab that value from the message object and store it.
Also, if you do a closeWithReturn then you need to immediately get the value from the message object.
There you have it. I've covered in some detail some basic information that might not be so easily learned any more.
Published March 6, 2013 Reads 9,855
Copyright © 2013 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Richard (Rik) Brooks
Rik Brooks has been programming in PowerBuilder since the final beta release before version 1. He has authored or co-authored five books on PowerBuilder including “The Definitive DataWindow”. Currently he lives in Mississippi and works in Memphis, Tennessee.
![]() |
ywerde 02/20/13 04:14:00 PM EST | |||
In your introduction you clearly state the problem new PowerBuilder developers face when they find the IDE installed on their machine. You then go on to talk about the lack of current training materials. |
||||
- Cloud People: A Who's Who of Cloud Computing
- New Relic Q1 2013 Blazes Past Growth Targets and Reaches 40,000 Active Customer Accounts
- Five Big Data Features in SQL Server
- Cloud Business Solutions, Social Media, and Platform Systems of Engagement Market Shares, Strategies, and Forecasts, Worldwide, 2013 to 2019
- Cloud Expo NY: Cloud & Location-Aware Big Data Is Changing Our World
- MicroStrategy Announces General Availability of MicroStrategy 9.3.1
- ExtraHop Named a Best of Interop 2013 Finalist for Two Awards: Best Cloud and Virtualization Product and Best Monitoring and Management Product
- GoBank Announces Timing of General Availability and National Distribution Relationships at FinovateSpring
- MicroStrategy Announces General Availability of MicroStrategy 9.3.1
- Riverbed Strengthens Commitment to Federal Market; Achieves Common Criteria Certification for Network Performance Management Solution
- Part 3 | Component Models in Java
- Component Models in Java | Part 2
- Cloud People: A Who's Who of Cloud Computing
- AMD and Adobe Collaborate on Upcoming Version of Adobe Premiere Pro Software to Enable Breakthrough Video Editing Performance Through Open Standards
- New Relic Q1 2013 Blazes Past Growth Targets and Reaches 40,000 Active Customer Accounts
- Predixion Software Announces General Availability of the Latest Version of its Predictive Analytics Platform
- Social Loginwall Failure
- Five Big Data Features in SQL Server
- WordsEye Announces Upcoming Beta of a First-of-Its-Kind Text-to-Scene Application
- Cloud Business Solutions, Social Media, and Platform Systems of Engagement Market Shares, Strategies, and Forecasts, Worldwide, 2013 to 2019
- Cloud Expo NY: Cloud & Location-Aware Big Data Is Changing Our World
- MicroStrategy Announces General Availability of MicroStrategy 9.3.1
- ExtraHop Named a Best of Interop 2013 Finalist for Two Awards: Best Cloud and Virtualization Product and Best Monitoring and Management Product
- GoBank Announces Timing of General Availability and National Distribution Relationships at FinovateSpring
- Building a Drag-and-Drop Shopping Cart with AJAX
- What Is AJAX?
- Google Maps! AJAX-Style Web Development Using ASP.NET
- Flashback to January 2006: Exclusive SYS-CON.TV Interviews on "OpenAjax Alliance" Announcement
- Where Are RIA Technologies Headed in 2008?
- How and Why AJAX, Not Java, Became the Favored Technology for Rich Internet Applications
- AJAXWorld Conference & Expo to Take Place October 2-4, 2006, at the Santa Clara Convention Center, California
- "Real-World AJAX" One-Day Seminar Arrives in Silicon Valley
- AJAX Sponsor Webcasts Are Now Available at AJAXWorld Website
- AJAXWorld University Announces AJAX Developer Bootcamp
- AJAX Support In JadeLiquid WebRenderer v3.1
- Struts Validations Framework Using AJAX
“I believe it is incumbent on the Cloud Service Providers (CSPs) and/or System Integrators (SIs) to understand the regulatory and compliance-related issues that their customers face,” noted Manjula Talreja, VP of Global Cloud Business Development at Cisco, in this exclusive Q&A with Cloud Expo Conference Chair Jeremy Geelan. “Of course these issues are different in each industry and in each country.”
Cloud Computing Journal: The move to cloud isn't about saving money, it is about saving time - ...Jun. 17, 2013 07:00 AM EDT Reads: 3,935 |
By Jeremy Geelan “Regulations and compliance are key trust topics with regards to cloud solutions and technology,” noted Sven Denecken, Vice President, Strategy and Co-Innovation Cloud Solutions, SAP AG, in this exclusive Q&A with Cloud Expo Conference Chair Jeremy Geelan. “But it is also more than security of access – it is portability of data and a clear definition of where the data resides.”
Cloud Computing Journal: The move to cloud isn't about saving money, it is about saving time – agree or disagree?
Sve...Jun. 17, 2013 06:30 AM EDT Reads: 1,685 |
By Jeremy Geelan Many organizations want to expand upon the IaaS foundation to deliver cloud services in all forms – software, mobility, infrastructure and IT. Understanding the strategy, planning process and tools for this transformation will help catalyze changes in the way the business operates and deliver real value. Jun. 13, 2013 09:00 AM EDT Reads: 3,117 |
By Elizabeth White Jun. 13, 2013 07:00 AM EDT Reads: 2,277 |
By Jeremy Geelan IT has more opportunities than ever before with the growth in users, devices, data and secure cloud services. This creates not only a more enriching experience for users, but more opportunities for businesses. The key to capitalizing on these opportunities is to have the right tools in place to help scale operations. In his Day 3 Keynote at 12th Cloud Expo | Cloud Expo New York [June 10-13, 2013], Intel's Rob Crooke will describe the range of products that Intel provides to support different usa...Jun. 12, 2013 08:30 AM EDT Reads: 3,091 |
By Elizabeth White Jun. 11, 2013 12:00 PM EDT Reads: 1,977 |
By Elizabeth White One of the cloud’s biggest draws is the capability to virtualize computing resources, allowing it to be consumed with the click of a mouse. But behind that simple click is an enormous infrastructure challenge that has recently been cited as a major cause for slower enterprise adoption. Enterprises can better prepare for this shift and take full advantage of future computing benefits. Between architecture design and migration planning, the road can be long, so what do you do with your talent?
I...Jun. 11, 2013 09:00 AM EDT Reads: 4,178 |
By Pat Romanski In the old world of IT, if you didn't have hardware capacity or the budget to buy more, your project was dead in the water. Budget constraints can leave some of the best, most creative and most ingenious innovations on the cutting room floor. It’s a true dilemma for developers and innovators – why spend the time creating, when a project could be abandoned in a blink? That was the old world. In the new world of IT, developers rule. They have access to resources they can spin up instantly.
A hyb...Jun. 11, 2013 08:00 AM EDT Reads: 4,266 |
By Pat Romanski INetU, the industry's experts in complex hosting and a global provider of business-centric managed cloud and application hosting, has announced that Cloud Architect Rich Hand will be presenting "Private Cloud, Public Cloud - Is There a Third Option?" at the 12th International Cloud Expo taking place June 10-13, 2013 in New York City.
As more enterprise IT departments move into the cloud, many executives are evaluating whether to adopt a Public or Private cloud. The cost benefits of the Public ...Jun. 11, 2013 07:00 AM EDT Reads: 1,875 |
By Liz McMillan “I’m careful when using terms like Big Data, because it can mean so many things to different people,” explained Eric Hanselman, Chief Analyst at 451 Research, in this exclusive Q&A with Cloud Expo Conference Chair Jeremy Geelan. “There is huge value in analytics that companies can use to pull intelligence from a collection of data sources that are available in their businesses. The inexpensive storage that cloud services can offer make a great environment to pull together siloed data.”
Cloud Co...Jun. 10, 2013 01:00 PM EDT Reads: 2,139 |









“Regulations and compliance are key trust topics with regards to cloud solutions and technology,” noted Sven Denecken, Vice President, Strategy and Co-Innovation Cloud Solutions, SAP AG, in this exclusive Q&A with Cloud Expo Conference Chair Jeremy Geelan. “But it is also more than security of access – it is portability of data and a clear definition of where the data resides.”
Cloud Computing Journal: The move to cloud isn't about saving money, it is about saving time – agree or disagree?
Sve...
Many organizations want to expand upon the IaaS foundation to deliver cloud services in all forms – software, mobility, infrastructure and IT. Understanding the strategy, planning process and tools for this transformation will help catalyze changes in the way the business operates and deliver real value.
IT has more opportunities than ever before with the growth in users, devices, data and secure cloud services. This creates not only a more enriching experience for users, but more opportunities for businesses. The key to capitalizing on these opportunities is to have the right tools in place to help scale operations. In his Day 3 Keynote at 12th Cloud Expo | Cloud Expo New York [June 10-13, 2013], Intel's Rob Crooke will describe the range of products that Intel provides to support different usa...
One of the cloud’s biggest draws is the capability to virtualize computing resources, allowing it to be consumed with the click of a mouse. But behind that simple click is an enormous infrastructure challenge that has recently been cited as a major cause for slower enterprise adoption. Enterprises can better prepare for this shift and take full advantage of future computing benefits. Between architecture design and migration planning, the road can be long, so what do you do with your talent?
I...
In the old world of IT, if you didn't have hardware capacity or the budget to buy more, your project was dead in the water. Budget constraints can leave some of the best, most creative and most ingenious innovations on the cutting room floor. It’s a true dilemma for developers and innovators – why spend the time creating, when a project could be abandoned in a blink? That was the old world. In the new world of IT, developers rule. They have access to resources they can spin up instantly.
A hyb...
INetU, the industry's experts in complex hosting and a global provider of business-centric managed cloud and application hosting, has announced that Cloud Architect Rich Hand will be presenting "Private Cloud, Public Cloud - Is There a Third Option?" at the 12th International Cloud Expo taking place June 10-13, 2013 in New York City.
As more enterprise IT departments move into the cloud, many executives are evaluating whether to adopt a Public or Private cloud. The cost benefits of the Public ...
“I’m careful when using terms like Big Data, because it can mean so many things to different people,” explained Eric Hanselman, Chief Analyst at 451 Research, in this exclusive Q&A with Cloud Expo Conference Chair Jeremy Geelan. “There is huge value in analytics that companies can use to pull intelligence from a collection of data sources that are available in their businesses. The inexpensive storage that cloud services can offer make a great environment to pull together siloed data.”
Cloud Co...
Interview with CEO Brad Bostic - hc1.com is committed to improving the quality of healthcare while reducing costs. We believe a critical ingredient to averting the current healthcare crisis faced by the US can only occur by improving the way healthcare professionals across the continuum of care man...
n the cloud doesn't matter whether you are running on an Open Source platform or not - it is NOT free because you pay for the service. And for long Open Source project have been funded through the services premiums that you pay. I would argue that Open Source vendors have mastered the way they can t...
Virtual Desktop Infrastructure (VDI) solutions allow IT organizations to deploy and manage virtual user desktops in the data center, eliminating the tedious management of numerous physical desktops. At the same time, virtual desktops allow end users to maintain their own personal desktops with acces...
The notion that PaaS exists solely "in the cloud" as a discrete environment of developer services is hampering the maturation of enterprise PaaS.
The three most common answers to "give me an example of PaaS" are: Force.com, Azure, Google. I didn't even need to do an unscientific Internet survey to ...
In this article, we’ll provide an overview of the Hyper-V enhancements in Windows Server 2012 R2. After you review these new capabilities, I’m sure you’ll see why the R2 release is a MAJOR RELEASE – so MUCH MORE than “just another” Service Pack release!
This month, we’ll be releasing a new article ...
Software defined networking (SDN) has been in the spotlight since its conception in recent years because of the revolutionary potential that this emergent technology has for the future of IT networking. SDN is like a testament to the changing times. It is a confluence of several of the most signific...
For more than half a century, cloud computing has changed names more often than a Hollywood starlet.
Utility computing. Time share. Thin client. SaaS. PaaS. IaaS. While concepts have been added and capabilities grown, cloud computing was no more invented by Amazon or other modern vendors in the las...
As with everything else, the best way to get a view of a new technology area is by asking for independent opinions. The old adage of the 6 blind men and the elephant comes to mind. Coincidentally, there were six "blind men" on the panel, including our very engaging host, Mr. Geelan. And there were v...
Cloud Expo 2013 New York is all about the technlogies that enable cloud computing. The multiple tracks,, boot camp, keynotes and general sessions all focus on how to enable cloud computing through hosting, storage, data, APIs and services and application - grouped under IaaS, PaaS, and SaaS models. ...
Legacy apps are surely the albatross of the modern cloud-enabled IT department – you put them there, and now you have to live with them.
Short of scrapping millions of dollars of worth of investments, something needs to be done with these apps, especially when cloud adoption is altering the effic...












