Case-Insensitive Searching Of Spooled Files
March 3, 2015 Ted Holt
We rely heavily on the DSPSPLF (Display Spooled File) command. We use it all day long, you and I, usually by selecting option 5 from various work-with displays. And yet this workhorse on which we depend suffers from a glaring deficiency–searching for text is case-sensitive. We expect case sensitivity from primitive operating systems like Unixsaurus, but not from the powerful IBM i. Here are a few ways to locate text in spooled files regardless of case. First is the modern–and in my opinion, the best–way: IBM Navigator for i, the browser application that replaces System i Navigator. This app runs on port 2001 and requires that the *ADMIN instance of the HTTP server be running. If you haven’t tried it yet, I encourage you to do so. For more information about Navigator for i, visit the Navigator for i Web page. Expand Basic Operations and click on Printer Output to get a list of your spooled files. (Click graphic to enlarge.) You can open a spooled file in a viewer or as a PDF. Either way, you have a case-insensitive search option. Maybe you need something that doesn’t require a browser, something that runs in a batch job perhaps. A second method to search a spooled file is with SQL. Create a temporary physical file if you don’t have one already. crtpf mylib/splf rcdlen(132) Copy the spooled file to the temporary file. CPYSPLF FILE(QPJOBLOG) TOFILE(MYLIB/SPLF) JOB(123456/MYSELF/MYJOB) SPLNBR(3) CTLCHAR(*NONE) Use SQL to query the physical file. select * from mylib/splf where upper(splf) like '%SMITH'' The query yields something like the following: Smith Widget Mfg Corp 45.00 7.91 21 Joe Smitherman, Esq. 150.00 2.80 6 Billy Gunsmith 28.00 14.02 300 LO-SMITHY-DIN .00 3.75 93 You can also use Qshell to search spooled files. Use the catsplf utility to pipe the spooled file into the tr utility, which translates the text from lowercase to uppercase. Pipe the uppercase text into grep to find the search string. catsplf -j 476583/MYSELF/MYJOB QSYSPRT 1 | tr 'a-z' 'A-Z' | grep 'SMITH' Or: catsplf -j 476583/MYSELF/MYJOB QSYSPRT 1 | tr '[:lower:]' '[:upper:]' | grep 'SMITH' Output looks like this: 1 SMITH WIDGET MFG CORP 45.00 7.91 21 3 JOE SMITHERMAN, ESQ. 150.00 2.80 6 4 BILLY GUNSMITH 28.00 14.02 300 6 LO-SMITHY-DIN .00 3.75 93 If you want to see the text without converting the text, try this version of grep instead: catsplf -j 270234/MYSELF/MYJOB QSYSPRT 1 | grep [Ss][Mm][Ii][Tt][Hh] The grep expression tells the system to look for a upper- or lowercase s followed by an upper or lowercase m followed by . . . . You’ll get output like this: 1 Smith Widget Mfg Corp 45.00 7.91 21 3 Joe Smitherman, Esq. 150.00 2.80 6 4 Billy Gunsmith 28.00 14.02 300 6 LO-SMITHY-DIN .00 3.75 93
|
thank you, I find catsplf command unusable when there are many spool files to search from after some time it starets running very slow are there any alternatives ?