Tip of the Day
\The Sandbox \PBL Peeper \Online Manual \Tip of the Day
General
PBLs Page
Browse Page
Lists Page
Find Page
Reports Page
Trace Page
Exports Page
Process Page
Compare Page
Print Options
Preferences
PSR Viewer
RTF Viewer
SQL Format
Script Formatter
Stringer
SQL Parser
Command Line
Applied PP
Known Issues
FAQ
Tip of the Day

Tip of the Day List


The Tip of the Day displays on the splash screen when you start PBL Peeper. However, if it goes by too fast for you to read (you can control the minimum time it shows in the Preferences window), you can come here to read it again.

 

          From the PBLs Page, select the set of PBLs you want to work against from the list of available PBLs on the left. To select, use drag and drop, double click or press Enter. You can select individual PBLs, entire PBL sets from applications, directory subtrees or drives.

The selected PBLs will appear in the right listview.


          To change some of the behaviours of PBL Peeper, go to the Tools / Preferences menu item. The most significant settings in this window relate to the Resolve settings. The Resolve level changes significantly both the performance of the tool and the ways in which it can be used.


          Resolve Level: None

Setting the Resolve Level to None will mean that the browser will only show portions that are contained in the export of the object being viewed. This may cause ambiguity, as sometimes the context of a script (ie. the control which it relates to) has to be derived from its ancestor.


          Resolve Level: Orphans

Setting the Resolve Level to Orphans will create “ghosts” of controls required to identify the true context of a script. For example, a ghost of a command button may be generated to clarify the context of a Clicked script.


          Resolve Level: Controls

Setting the Resolve Level to Controls will create “ghosts” for all controls inherited from ancestors that weren't modified in the current object and would otherwise be not recognized as present. This Resolve Level requires that all ancestors be indexed.


          Resolve Level: Scripts

Setting the Resolve Level to Scripts will create “ghosts” for all controls and scripts inherited from ancestors that weren't modified in the current object and would otherwise be not recognized as present. This Resolve Level requires that all ancestors be indexed.


          Resolve DataWindows: DW Tables

Turning this option on will create “ghosts” of the table definition for controls that have a default DataWindow object defined, such as DataWindow controls, datastores, drop down DataWindow columns and nested reports. This is helpful when developing or troubleshooting on an object, to see what columns are available.


          Resolve DataWindows: DW Controls

Turning this option on will create “ghosts” of the user interface controls, grouped by band, for controls that have a default DataWindow object defined, such as DataWindow controls, datastores, drop down DataWindow columns and nested reports. This is helpful visualizing the real user interface.


          If scripts or portions don't look parsed properly (e.g. starts in the middle), odds are the object has changed. Since PBL Peeper caches the object indexing, it is now grabbing the wrong substring. Select File / Refresh App from the menu.


          On the Browse Page, use the menu item View / Expand to expand the entire sub-tree beneath the currently selected item. This is particularly useful for DataWindows and objects with embedded classes, like windows with tabs.


          On the Browse Page, use the menu item View / Collapse to close all expanded treeview items.


          Copy is available from more than just script / portion viewer panes and output richtext windows. The Lists Pages all support copying. Treeviews and listviews will copy the current item's label to the clipboard.

This can help while working in the development environment, copying scripts or object names into PowerBuilder


          Watch for the changing enabled status of menu items and toolbar buttons. These are enabled or disabled as focus moves from control to control, indicating which functions are supported.


          To identify which line an application is GPFing on, run with PowerBuilder's PBDebug option. In the PBDebug Trace Page, select the View / Last menu item to move to the last line.


          To build custom reports based on data collected in the Lists Pages, use the File / Save Syntax menu item so that you can see the definition of the data set. Then use the File / Save As menu item to save the data (DBF recommended). In PowerBuilder, import the saved syntax or build an external DataWindow based on the saved syntax's data set, and import the data.

Using this approach, you can add headers, footers, dates and page numbers to any DataWindow report.


          To customize any rich text report, simply use the File / Save As menu item to save the report to a file. Then, load the RTF file into a word processor.

Using this approach, you can add headers, footers, dates and page numbers to any rich text report with most standard word processors.


          To customize any DataWindow report or list, simply do one of the following:


                      Use File / Save As to save the DataWindow as a Powersoft Report (PSR). If you have InfoMaker loaded on your system, double-clicking the PSR file in Explorer should launch InfoMaker load the PSR in preview mode. Go to design mode to make any modifications such as headers, footers, page numbers, etc....


                      Use File / Save Syntax and File / Save As to save the DataWindow's syntax and data (preferable data format is DBF). In PowerBuilder, import the SRD file, open the resultant DataWindow, customize in design mode and, in preview mode, import the data.


          Watch microhelp for hints on what the control with current focus is for.


          There is a small field on the microhelp line between the clock and the meter. This displays a number that indicates:


                      line number in script / portion viewers


                      row number in DataWindows


                      page number in rich text output windows


          There is an icon on the toolbar which corresponds to the icon on the Browse tabpage. This will switch you back to the Browse Page from anywhere. On pages where a current object, portion, control or script can be identified, the browser will be switched to that item.


          If you want to manipulate objects yourself, you can use the Mass Export subpage on the Exports Page. After manipulating the resultant export files, the Mass Import subpage will produce a new set of PBLs.


          On all grid style lists, the columns will automatically adjust their width so that data will not be truncated, nor will they show extra space. Lists are ready to print without concern for ambiguous, truncated data. This behaviour can be controlled on the Preferences window, defining the type of autosizing algorithm to use, or turning off the service completely.


          On all lists, counts are shown at the bottom. The main count counts the number of items in the list. The object count, on all Lists but the Object List, shows the number of distinct objects represented in the list. The counts reflect the current state of the list, including filter.


          The Go To Line, available in script / portion viewers as well as in DataWindows, uses the same shortcut as the PowerBuilder development environment: Ctrl-Shift-G.


          When defining a PBL set for PBL Peeper to work on, you can select any set of PBLs, not just a set that defines a PowerBuilder application. However, not selecting a set of PBLs that matches a single PowerBuilder application could result in problems with the following:


                      identifying the type of control


                      identifying the ancestor


                      resolving and ghosting controls (this may leave orphaned scripts, e.g. a clicked script that in an ancestor belongs to a command button, but PBL Peeper has no way of identifying that)


                      the Process page will be unavailable


          To speed finds, get only the output you need. In descending priority of performance:


                      object name


                      script name/entire script


                      context lines = 0


                      context lines > 0


          To speed finds, get only the detail of match you need. Don't use case insensitive if you don't have to. When using Match() expressions, context lines will slow down the process significantly.


          From the Lists / Objects page, use the View / Show menu item (or the plus window icon) to show:

Ancestor information: Shows additional columns of information about the objects that can only be derived by determining the ancestors


          From the Lists / Objects page, use the View / Show menu item (or the plus window icon) to show:

Duplicates only: Show objects with duplicate names


          From the Lists / Objects page, use the View / Show menu item (or the plus window icon) to show:

Autoinstantiate: Derives and displays whether custom class objects are autoinstantiate


          From the Lists / Objects page, use the View / Show menu item (or the plus window icon) to show:

Object Line Count: Counts the number of lines in the export of the object.


          From the Lists / Objects page, use the View / Show menu item (or the plus window icon) to show:

DataWindow Attributes: Shows the data source type and presentation type for DataWindows.


          From the Lists / Objects page, use the View / Show menu item (or the plus window icon) to show:

Attributes: Select any additional PB attributes to display (e.g. backcolor)


          From the Lists / Scripts page, use the View / Show menu item (or the plus window icon) to show:

Extended: Indicator whether, if the script has an ancestor, whether it is extended or overridden


          From the Lists / Scripts page, use the View / Show menu item (or the plus window icon) to show:

Line Count: The number of physical lines in the script


          From the Lists / Scripts page, use the View / Show menu item (or the plus window icon) to show:

Argument Count: The number of arguments in the function or event prototype


          From the Lists / Controls page, use the View / Show menu item (or the plus window icon) to show:

Ancestor information: Shows additional columns of information about the controls that can only be derived by determing the ancestors


          From the Lists / Controls page, use the View / Show menu item (or the plus window icon) to show:

Attributes: Select any additional PB attributes to display (e.g. fontfamily)


          From the Lists / DW Controls page, use the View / Show menu item (or the plus window icon) to show:

Data set column name: The name of the data set's column that corresponds to column objects


          From the Lists / DW Controls page, use the View / Show menu item (or the plus window icon) to show:

Column data type: The data type of the data set's column that corresponds to column objects


          From the Lists / DW Controls page, use the View / Show menu item (or the plus window icon) to show:

SELECT column: The SQL expression associated with the data set's column that corresponds to column objects


          From the Lists / DW Controls page, use the View / Show menu item (or the plus window icon) to show:

Attributes: Select any additional PB attributes to display (e.g. font.face)


          From the Lists / DW Columns page, use the View / Show menu (or the plus window icon) to show:

SELECT column: Shows the SQL expression associated with a column, as well as the owner, table and column associated if only one is used


          From the Lists / DW Columns page, use the View / Show menu (or the plus window icon) to show:

Attributes: Select any additional PB attributes to display


          To search within a specific object, on the Browse page, right click on the object and select Find / Find in this Object. You will be presented with a user interface to enter one or more search terms. The output will follow the options set on the Find page.


          The Browse page lets you


                      view the contents of objects


                      view whether a script has an ancestor and whether it is extended or overridden


                      jump back to ancestor scripts and return


                      print object contents or subportions of objects


          All Lists subpages let you


                      sort


                      filter


                      find


                      jump to the Browse page to see the selected item's contents


          The Objects List subpage shows all classes in your application. This is equivalent to what you'd see in a PBL in the Library Painter. Fields listed include:


                      object name


                      PBL


                      object comments


                      object size (source and binary)


                      object source size (size of export)


                      last compiled date


          The Scripts List subpage shows all events and functions. Fields listed include:


                      script name


                      owner (object or control which this script belongs to)


                      object


                      PBL


                      definition or prototype (includes list of parameters and their types, and the return value)


                      size (bytes)


                      type (event or function)


                      scope (public, private or protected)


                      ghost indicator (shows whether or not code is implemented for this script in this object, or if it is just being shown because of inheritance)


          The Controls List subpage shows all subclasses in your application. This includes all controls on visual objects, and also all embedded non-visual objects in PB7 or greater. Fields listed include:


                      control name


                      containers (e.g. if a DataWindow is hosted inside a tab object and tabpage)


                      object


                      PBL


                      immediate ancestor


                      ghost indicator (shows whether or not attributes are declared for this control in this object, or if it is just being shown because of inheritance)


          The DW Controls List subpage shows all the user interface objects declared on your DataWindows, such as text, columns, bitmaps, etc.... Fields listed include:


                      DataWindow control name


                      object (the DataWindow)


                      PBL


                      object type (e.g. column, text, line...)


                      style (e.g. dropdownlistbox, radiobutton...)


          The DW Columns List subpage shows all the DataWindows' data set columns for all DataWindows. This can be used to compare data sets for functions that share data sets across DataWindows, such as ShareData() and RowsCopy(). Fields listed include:


                      column name


                      object (DataWindow)


                      PBL


                      column number


                      the “DB Name” assigned to the column by PB


                      column's data type


                      some of the DataWindow's Update properties, including


                                  updateable flag


                                  inclusion in WHERE clause flag


                                  key column flag


          The Find page searches your source code for you. It can:


                      search for multiple strings in one pass of the code, merging the results into a single output


                      search for normal strings (character by character) or regular-type expressions (as defined by PB's Match() function)


                      choose to include or ignore matches found in comments or quotes


                      include various levels of detail when a match is found, from just an object name to an entire script to just the line of code where it was found


          Application Print Report:

Prints all the objects in the application, using the same routines as Browser's object print. Options are the same as the object print as well. If you run the output to a rich text window, it can be imported to a word processor later for addition of page numbers, screen prints, etc....


          Comments Extract Report:

Extracts comments from all scripts. This can provide an overview of all scripts if they are documented inline.


          DataWindow SQL Report:

Lists SQL in all DataWindows. This will also show if they are procedures or external DataWindows. The data set's data types are shown as well. A connection to the database is required for this report.


          Database Column Usage Report:

Identifies where database columns are used. Both DataWindow SQL and embedded SQL are evaluated. When found in DataWindow SQL, the dataobject is listed. When found in embedded SQL, the script is listed.


          DataWindow Object Usage Report:

Indicates where identifiable usages of DataWindow objects exist. Only dataobject attributes for DataWindows and datastores, and explicit hard coded data object assignments in scripts are included.


          Embedded SQL Extract Report:

Extracts all embedded SQL in scripts.


          Inheritance Report:

Inheritance report on objects. When generated at the object level, this produces the same result as PowerBuilder's Object Browser. When generated at the control level, it will additionally show the inheritance of controls. This will give you a full picture of where user objects are used.


          MultiTable Registry Statements Report:

Generates of_Register () statements for the PFC Multi-Table update service. This simply creates one statement for each table involved in the SQL statement, listing its columns. Key columns have to be added manually.


          PBR Builder Plus Report:

Builds PBR contents and other components for building a single EXE. The PBR elements (for graphics, DataWindows) and script inserts (for windows, user objects) ensures that all objects are included in the executable. This is the single EXE equivalent of marking all PBLs for PBD generation to make sure all objects are included in the distribution.


          Verify DW SQL Report:

Verifies DataWindow SQL against the database by executing a PREPARE statement with the SQL. This will spot any DataWindow errors due to changes in the database. This will not prompt for parameters, as other DataWindow SQL verifiers will. This report requires a transaction object.


          The Trace page lets you view a PBDEBUG trace file in a treeview format, side by side with the related code. This lets you:


                      find where an application is fatally ending


                      view the call stack for any given point


                      find where certain functions are called, including optionally viewing all calls and their call stacks in a single view


          Searching and replacing with the Universal option checked is highly dangerous, especially if you aren't familiar with the structure and contents of object exports. Accidentally replacing a keyword or attribute name will make the object unusable.


          Searching and replacing on DataWindow SQL means that the original text being used is the SQL as you'd see it in the syntax preview in the DataWindow painter. You will not be operating against the SQL the way it is stored in the DataWindow (e.g. ...table(customer)...). Any changed results are stored in syntax mode, not graphic mode.


          The Remove processor is ideal to get rid of debugging function calls before releasing to production.


          If Show Names Only is checked, Compare will only list the portion names that are identified as different. If unchecked, FC (DOS File Compare) will be used to compare the two versions.


          Comparing objects takes a significant amount of time, especially if options to ignore elements are checked. To avoid comparing objects that are likely the same, use the options Ignore Object when Modified Date/Times Match and Ignore Object When Sizes Match.


          The Object Filter allows you to filter which objects are acted upon. The Object Filter is defined by a filter expression that is evaluated against an internal object list. Filters cannot be given criteria below the object level (e.g. script = 'clicked' cannot be used). Changing the columns available in the Lists / Objects page with View / Show... doesn't impact the columns available to the Object Filter.


          When the Object Filter is set, the menu item is checked and the toolbar item appears depressed. This gives you a visual indicator that a filter is set.


          When QuickFind starts searching, it will look for:


                      an exact match for the entered string


                      a match of the substring of the first characters of the string


                      a match for any substring


          System Documentation:

The first stop for system documentation should be the Application Print on the Reports page. It will print everything in the application. Suppressing details like contents of scripts will make the volume more manageable. The options available in this report are the same as with the Print from the Browse page.


          System Documentation:

One element of system documentation could be a print of the system tree from the Browse page. Use View / Expand at the PBL level for each PBL. Then File / Print / Print Entire Tree. The resolve level will significant change the nature of this report.


          System Documentation:

Lists in some form can be used in system documentation. If not used as is, the syntax and data can be exported and used with a custom DataWindow.


          System Documentation:

Various reports on the Report page have differing value for system documentation. The Inheritance report is basic information that should be included in all documentation. Including controls in the inheritance structure is helpful by showing where user objects are used (or not used).


          In most DataWindows or treeviews, you can use the View / Back and View / Forward toolbar buttons to move through the history of movements between rows/treeview items.


          If you see a 3D raised header on a display only grid DataWindow, odds are that it has click/sort capability.


PBL Peeper PB Help PB History
& Future About Us Feedback Site Map

Google
 
Web www.techno-kitten.com
www.sybase.com