Powerbuilder Source Code Files

 

I've never used PowerBuilder before, so I'm not sure if I have the source code. I have the installation files (.exe,.dll,.pbd,.pbl). I only realized it was PowerBuilder 7 after opening these files in a text editor and reading some of the text that was readable in these binary files. I've got a PowerBuilder project that I want to inspect but I don't have PowerBuilder installed. I tried PB Peeper but it freezes when I try to browse through pbl files. Does anyone know any sort of software that I can open and see the source Powerscript with? ProDiff is designed to highlight the differences between versions of Application development source code. ProDiff improves on standard diff tools by parsing and pretty printing source code files before comparing the individual sections of the program or source code files.

I posted about Source Code Control in general. Various source code control software exist, named as (VCS) or Source Control Systems (SCS) or even (SCCS). If you noticed, these tools works at the file level – the smallest unit that can be handled in any Operating System. Typically, you open your version control system, check out necessary files, work with them and check back in.PB refers to the SCCS simply as Source Control System (SCS). In this post we will refer to it as SCS or as SCC tool, as it has to implement Microsoft SCC API.

Source Control in an If you are working in an IDE environment, this will pose a problem. You edit, compile and test from within IDE, why would you want to go out to the OS just to work with files from version control system and then come back into IDE to complete the development cycle, and go back out to the OS and the SCC tool again to check back the work. (Trust me, I’ve done this. Typically, you may do this with Java or C/C files, depending on the IDE/editor you use). To alleviate it, the IDE/Editor may provide toolbar buttons to execute OS commands, so you can execute them from within the IDE/Editor.

But, it’s not tightly coupled. Seriously, wouldn’t it be nice to have the SCC integrated into the IDE? But then again, considering how many different SCC tools exist, IDE builder can’t add support for every possible tool in the IDE. This would be easy if there was only one type of SCC interface. Or, if all the tools follow a certain standard!

Actually, several such standards exist; on Windows it’s pretty much based around. By implementing this API as the interface to their own SCS (VCS), vendors can “standardize” their product.

Of course, internally they could do totally different things, but as long as they provide standard set of interface functions, they will all look and work the same to system using them. If IDE tools can build their SCC operations around these API, then they will be able to “talk” to the SCS (or VCS) from various vendors easily. Both Visual Basic and offer such connectivity. This is an older Microsoft Standard.

Powerbuilder Source Code Files

See for more details about newer MS Standards. Since classic PB doesn’t support the newer standards out of the box, we will have to stick with legacy SCC API. PowerBuilder and Source Control But, PB poses a further challenge. Where as, Visual Basic saves it’s objects and programs as files in the Operating System level, PB saves it’s objects and the source code in a library file called PBL (pibble). The smallest unit the OS sees in a PB application is a PBL file and not individual object files. So, we cannot really track the changes in a PB application correctly, if we do check-in/check-out at PBL file level. What we need is a way to track at the individual object level, smallest unit of source code entity in PB.

PB offers a plugin approach for the 3rd party SCC tool to work with it. It also provides a wrapper to the SCC API mentioned above, so the Source Control Systems themselves, don’t need to know about PB objects.

PB will export and import objects to files before passing the control to SCC plugin software. In this post, we will see how PowerBuilder can be setup to work with different SCCS tools. Particularly we will explore PB Native, PVCS and later we will explore how PB can be made to work with SVN. Only SCS (or VCS) that implement Microsoft SCC API will work with PB. Setting up Workspace to use SCC provider (SCS or VCS) First of all, to enable Source Code Control in a PB application, you need to pick your SCC provider. You do this by right clicking on the Project workspace and choosing Source Control System (SCS) tab. Here you enter the user credentials for connecting to the SCC provider.

Once you connected, SCC status for every object will show up as a small icon before the object name in the System Explorer. (A + sign marks a new object not in SCC yet, a small circle refers to those that exist in the repository, a check mark refers to object checked out – either by you or others. Connecting to a SCC Provider at the Workspace level As shown, there is a drop list to choose the SCC provider to use for the current PowerBuilder project. The SCC wrapper inside PB takes care of translating to and from the SCC tool. My friendly fetcher, Registry Scanner, came to the rescue. I searched for “Merant Version Manager” (another incarnation of good old PVCS). I found it – it is stored neatly in the registry.

Where is this information stored? I really wanted to find out where all this information is stored. Workspace file (.PBW) is a logical place to store it. But, it is not stored in this file. The.pbw file seems to be a list of the targets in the project workspace.

Then I looked around and found that it was stored in Windows registry. List of SCC Providers available to us inside PowerBuilder is stored in Registry Fig 3. A specific SCC Provider chosen at the Workspace level is stored in Registry When you choose source code control provider in the PB workspace properties, PB actually stores the details in a key named SourceControl. If this is missing, then that means you didn’t setup SCC in Workspace properties. So, if you have a workspace that has problem with SCC on open, you may never be able to open the workspace. In such case, if you rename or delete the SourceControl key, PB will no longer try to connect the workspace to SCCS.

Notice, PB had replaced all the “ ” with $. PB has quirky ways of escape chars. Tilde for example is used as an escape character a lot in PB. Incidentally, the above image shows other keys like Connection, MRUList, Painters etc.

These are the “Recent Objects”, “Recent Connections” and “Recent ” listed under File menu. Object level Tracking in SCCS Remember, the PB code is now tracked at the individual object level and any SCCS will only know to store files.

Powerbuilder Source Code File Extension

Files

So, how does PVCS know about objects in PB? This is where PB export files come in handy. Every type of object can be exported to a text file with specific extension. (See for a nice post on exporting PB objects as files). If that link ever breaks down, see here for my take on it.

When you checkout/Get a copy of the file to your working directory, PB (the SCC wrapper) exports a file to the File System. The file is made writable if it’s being checked out. In that case, the object is also locked in PB IDE. Anything that can be exported as a text file will be stored in the SCC repository. So, a PB target (which is a file with.pbt extension) will have SCC status. All PB objects such as windows, applications, Datawindows etc will have SCC status.

Right clicking on such objects in the System Explorer will show additional, SCC related, options in the popup menu. A PBL itself cannot be checked into repository, at least not from within PB, so right clicking on a PBL will not include SCC options in the menu. In general, the SCC options will show up, only if the Workspace is setup to use Source Control and the object is “SCC”able.

Fig 4. Objects that can be stored in SCC Repository What is a PBG file and why do we need? To keep track SCC status of the objects in a library, PowerBuilder uses a.PBG file. Imagine, once all the objects are exported and checked into PVCS, how will you know, which objects goes to which PBL, in case you ever have to recreate the PBL file from souces (Bootstrapping for e.g). This is where the PBG file comes into the picture: Any components you add to the libraries then will be added to PBG. PBG file is created for each PBL and is a laundry list of the objects in that library for PVCS to use. Anything you add/remove/change will be in the PBG file and this is what is used to sync up with PVCS.

It has sort of a mapping for each object and the library it’s supposed to be in. This file essentially contains a list of all the objects in a PowerBuilder library (PBL) file or conversely, it tells us which PBLs, these objects (really, export files) will need to be loaded into, the moment they come out of SCCS. When objects are added or deleted in the library and checked into version control, the PBG file is automatically checked out, updated and checked back in, by PowerBuilder. Not having PBG file in sync with the PBL, may cause unexpected results. For e.g., if you added a new object to PBL (say, while NOT connected to SCCS) and the PBG file wasn’t up-to-date with it, that object will be missing if the PBL is ever bootstrapped from existing object (files) in SCCS and thus could result in compile to runtime errors. PBG files. See for a nice description why PB needs a PBG file.

Troubleshooting Removing SCC from Workspace having issues Sometimes the connection between PB IDE and the SCC system doesn’t work. If you have set up to always connect to the SCC system, then PB won’t come up. In such as a case, edit the registry and “turn off” SCC option. After this, PB will open fine again. If you need to connect to SCC, you will have to reconnect to it, as shown in Fig.

Keeping PBG file in sync manually. You are my hero! I needed to setup source control for my project but I can’t access workspace or target properties for some unknown reason, I could before, I tryed everything but worksheet or target property window just didn’t show up Then, I saw that SCC properties is stored in Registry and I just exported “SourceControl” key from my other workspace where SCC was set, edited reg file in notepad to change key path for second workspace where I try to set SCC and then execute reg file to import to registry. AND IT WORKED! Hi Tomislav, You made my day with that comment.

Thank you:-). I am really glad this post was helpful! PowerBuilder is so quirky in many ways, and even after several years of working with, I am still finding out new things. I am hoping to share my experiences (and frustrations) with the tool here. I am sure you have many like that too. If you have any comments or suggestions to improve this site, please let me know. If you have a blog or you would like to contribute to this blog, please let me know as well.

Latest Posts. We are getting into Redhat JBOSS for our Java project. I am currently exploring all the options available in JBOSS (also comparing it with Sybase.

Powerbuilder source control

Microsoft Powerbuilder

Sharing: Learn C programming by reading some of the best books from expert authors Source: 5 Best C Programming Books A C Programmer Must Read. Sharing: An exhaustive list of best hand picked free Eclipse plug-ins for a developer to be efficient Source: 27 Best Free Eclipse Plug-ins for Java. I earlier posted about exciting world of Regex here. Let’s try to learn some more in this followup post. First if you want to play.