In the previous entry on RDz's search capabilities we zeroed in on search within a file - the flexibility of RDz's search (ala' ISPF - or using the *Ctrl/F "Find/Replace" dialog*), the simplicity of using your mouse for so much of the search workflow and especially RDz's unique Search results view, that contains hyper-links to all "found" lines and elements
(See "Things you might not have known about searching w/RDz Part I).
Clicking hyper-links to found-elements is not only faster (and it is.. much faster than typing scads of additional "FINDs") - it's also easier. And don't dismiss "easier" - easier is better than harder - all things being equal.
Most interesting to anyone doing non-trivial search tasks (data flow, impact analysis) is RDz's ability to "persist
" search results by "Pinning" the Search results view (an icon in the upper right-hand corner). By pinning your search results you can click through the hyperlinked "found" statements, and when another element is deemed interesting enough to kick off another round of searching, you just follow the same steps - iteratively - until you've walked the element/dependency tree (or it's 11:30 PM and all traces of your 9:00PM caffeine rush no longer power your fingers...sorry, I digress).
In this Part II let's find out how you extend Search out beyond a single program or source file. To do this, you have two different approaches - that ultimately utilize the same dialog (Please see the attachment named: *remotesearch.jpg*)
- Start from the Remote z/OS Search menu option - Where you will:
- Enter your search string - including wildcards
- Or conversely enter a "regular expression" (see previous search blog)
- Select the remote target PDS resources or sequential files to search - note that you select more than one PDS by holding down the Shift of Ctrl key while clicking
- Note that your target search resources could be located in the same or in different LPARs
- Optionally add wildcard search text to filter at the PDS member name level
- Start from RSE (Remote Systems Explorer) - by
- Selecting the remote target PDS resources or sequential files to search (again - on the same or even from different LPARs)
- Right-click and select Search
- And use the dialog shown as an attachment below (remotesearch.jpg)
- To be honest, I find starting from RSE faster and more intuitive (aka "easier"). Try it out - let me know what you think.
- There is a super-fast search enabled from RSE that uses a Java Lucene index - this you'll see as "Remote Index Search". I'll cover that in Part III of this series
After clicking Search RDz will create a Remote z/OS Search view - with all of your search "hits" hyperlinked to the file and statement where your searched-for text was found. So you can now merrily click through the hyper-linked entries, and analyze your source - or modify it or whatever.
If you find that additional searches are warranted AND you want to persist this search result, instead of "pinning" the result you will click a small flashlight-thingee icon in the upper right hand corner of the results view. If you mouse over this, you'll see: "Add query to My Search Queries view in Remote Systems Explorer".
When you do this, your search query is persisted to your Remote Systems Explorer - where you can re-run it any time - and run additional Searches based on your analysis and discoveries.
Additional things you can do with the Remote z/OS Search View results:
- Submit another search, based on the "found results" (see the remotesearch-2.jpg attachment). This would allow you to refine your search or logically "OR" search results-1 with search results-2.
- Select copy/paste your search results as text entries to say, an Excel spreadsheet, if you were creating documentation.
Semantically-enriched Searches - invoking RAA within RDz
Our final sub-topic for this blog entry is shown in the attachment: raasearch.jpg. This shows the capability of invoking a Rational Asset Analyzer search to search for only the statements that potentially modify the content at run-time a data element. In COBOL, verbs that modify content at run-time include: MOVE, READ/INTO, COMPUTE and the math verbs, etc. Why is this cool (aka an important feature)?
In large applications (and are there any types of production applications) you often spend an inordinate amount of time refining and filtering search results to get to exactly the place you're looking for. Let's say you're hunting the down the root cause of an ABEND (an 0C4 or 0C7, etc.). And you need to find THE statement set, that could be the cause of how invalid (garbage) values ended up in a packed decimal field.
Well, a brute force search for a variable could yield hundreds of entries - and even hyperlinked analysis processing will suck. At least compared to filtering out all the "false positives" - or statements that don't pertain to the kind of analysis you're doing.
In order to use RAA from withing RDz (termed by IBM RAAi) you'll need both products. But it may well be worth it - if (if) you spend a lot of you time and cycles doing code analysis: http://www-949.ibm.com/software/rational/cafe/thread/3420?tstart=15
Thanks for your time... until nextAttachments: