Copyright 1994-2016 by Kevin G. Barkes All rights reserved. This article may be duplicated or redistributed provided no alterations of any kind are made to this file. This edition of DCL Dialogue is sponsored by Networking Dynamics, developers and marketers of productivity software for OpenVMS systems. Contact our website www.networkingdynamics.com to download free demos of our software and see how you will save time, money and raise productivity! Be sure to mention DCL Dialogue! DCL DIALOGUE Originally published August, 1994 Ned Ludd Had The Right Idea By Kevin G. Barkes Ned Ludd, the unofficial village idiot of Leicestershire, England in the late eighteenth century, secured his place in the history books by taking a large blunt instrument to some new mechanical stocking frames owned by his employer. His actions inspired a group of workers who, from 1811 to 1816, called themselves Luddites and tried to stop the Industrial Revolution by smashing new labor-saving textile equipment. I have a lot of empathy for Ned and his compatriots. I turn 40 next month, and it's been almost exactly 10 years since I started my computer consulting business. Since then, there has never been a time when my livelihood was not threatened by some new up and coming operating system, architecture replacement, or software upgrade that could make my skills useless and/or unmarketable. Every week, the knot in my stomach tightens when the lastest bunch of industry trade rags arrive and I read that Microsoft will continue to churn the operating systems market for the forseeable future, thousands of good people are being laid off by cheap systems that leave the survivors harried and overworked, and that DEC still doesn't have a clue. Then I spotted a recent article in the Wall Street Journal about employees in high-tech positions chucking it all and opening bakeries, flower shops, antique stores and other low-stress enterprises. Hmmm... maybe they're right. Maybe I should get out of this crazy business where marketing hype generally overshadows technical reality. Maybe I should turn my back on a career where I have to do more reading than a medical doctor to stay even remotely current in my field. Maybe I should abandon the absurdity of an industry which throws away perfectly good people and machines because of the nebulous "benefits" of a new comuter/operating system/paradigm/application. Naah... ***** Whoa... Reader and frequent correspondent Carl Wheeler of Eastman Kodak passed along a small but useful command procedure (Program 1) which cleanly stops all batch queues on a system without stopping the queue manager. "This is real useful just before running backups (as a detached job) or whatever," Carl says and notes that "it can also be modified to start the queues when finished." Ticked off... that's what Kim Hawkins is. In my Decemeber 1992 column I mentioned receiving a "nifty" TREE.COM from Kim and said I'd print it later. Then I published a different tree in the June 94 issue and Kim writes, "Granted, my procedure does not produce such a pretty display, but it does have the advantage that you can capture its output (using the "/output=" qualifier) and print it or put it in documentation, Kim says. "And (I modestly point out) it creates the tree using only 24 lines of code." I've renamed the procedure KIMTREE.COM to distinguish it from the other tree file for persons downloading the online version. Note: you have to put the /OUTPUT= immediately after the file specification of the command procedure, otherwise DCL will treat /OUTPUT= as a parameter to be passed to the procedure and not as a qualifier. Never attribute to malice that which can be blamed on stupidity, Kim. I forgot. I am also incredibly lazy. Your chance of getting code published diminishes greatly if I have to retype it from a letter. If you don't have some form of e-mail capability, send me your stuff on magnetic media. Keep it short, under 100 lines; make sure it works; and keep site-specific references to a minimum. Also be certain to include your return address in your letter. When mail gets opened around here, the enevelopes are immediately trashed, and it's not uncommon for the letters not to be read until several days later. If your return address appears only on the envelope, there's no chance of you receiving a personal reply. And if you have a gender-neutral name like Kim, howzabout using a Ms. or Mr. somewhere in your letter? It's not pleasant writing a couple paragraphs about a reader submission without being able to use personal pronouns. Going boldly; and going stupidly, as well... Literally hundreds of people swamped kgbarkes@gmail.com, my CompuServe address, BBS system, fax machine and my non-cyberspatial USPS mailbox with the news that -142 remains the value for the starship pointer under Motif. Why I thought the value changed, I really don't know. I vaguely recall being told by various persons that the starship pointer had disappeared under Motif, and I took their word as gospel. I said I'd print the name of the first person to respond to my request, but it later occurred to me that would be grossly unfair. Because of the vagaries of magazine delivery and the fact many readers do not have e-mail access, it's impossible to determine who was really first. Further complicating matters is the fact the disk on my VAXstation which serves the BBS' Internet and CompuServe e-mail files crashed recently. I never back up Usenet newsgroups because of the volume involved, but I do backup private e-mail. That is, I thought I did. As I confidently did a BACKUP/LIST on the saveset containing the most recent incremental of the BBS, I discovered to my horror that I had backed up the wrong directory and instead of internet mail I had a perfect archival record of the past two weeks of alt.devilbunnies. The moral here is, of course, to always confirm that you're backing up what you think you're backing up. If you sent me e-mail concerning the pointer question and didn't receive a DCL sticker and/or calendar from me, just drop me another line and I'll send you the stuff immediately. You're on your honor here, folks, since I have no way of confirming that you originally sent me a response. ********** Kevin G. Barkes is an independent consultant who is beside himself with glee now that the new FX cable network is airing reruns of "Wonder Woman" and that he can once again watch Lynda Carter jump around in a spandex outfit with more support than DEC's Colorado Springs and Atlanta offices combined. He also knows the lyrics to the Wonder Woman theme song, which brings him endless pleasure but causes his spouse and children to lock the door leading to his office and stuff the cracks with towels. Kevin lurks on comp.os.vms and can be reached at kgbarkes@gmail.com. PROGRAM 1: $! STOP_BATCH_QUEUES.COM $! Written by Carl Wheeler @ Eastman Kodak $! $START: $ set noon $ retry_flag = "FALSE" $ temp = F$GETQUI("") $! $QLOOP: $ qname = F$GETQUI("DISPLAY_QUEUE","QUEUE_NAME","*","BATCH") $ if qname .eqs. "" then goto all_checked $ jobactive = F$GETQUI("DISPLAY_JOB","JOB_EXECUTING",,"ALL_JOBS") $ if jobactive $ then $ retry_flag = "TRUE" $ stop/next 'qname $ else $ stop/reset 'qname $ endif $ goto qloop $! $ALL_CHECKED: $ if retry_flag $ then $ wait 00:05 $ goto start $ else $ request "All BATCH queues have been cleanly stopped." $ endif $! $ exit PROGRAM 2. $! KIMTREE.COM $! $! Written by Kim Hawkins $! $! Displays directory tree from directory specified, $! or default is none specified. Use "/output=" to $! redirect output to a file. $! $ if P1 .eqs. "" then p1 = f$environment("DEFAULT") $ if (f$parse("''P1'*.*") .eqs. "") then - $ exit 114762 ! %RMS-E-DNF, directory not found $ write sys$output " " + f$parse("X.X",p1,,"DIRECTORY") + " - TREE" $ call sub_dir 'P1' 'f$environment("DEFAULT")' $ sub_dir: subroutine $ level = f$integer("''level'" + 1) !keep search streams separate $ if ("''next_sub_dir'" .nes. "") $ then prefix = "''prefix' | " $ else prefix = "''prefix' " $ endif $ set default 'P1' $ next_sub_dir = f$parse(f$search("*.dir", level),,,"NAME") $ loop: if (next_sub_dir .nes "") $ then $ this_sub_dir = next_sub_dir $ next_sub_dir = f$parse(f$search("*.dir",level),,,"name") $ if (this_sub_dir .eqs. "000000") then goto loop $ write sys$output "''PREFIX'+--- ''this_sub_dir'" $ call sub_dir [.'this_sub_dir'] [-] $ goto loop $ endif $ set default 'p2' ! up, or, if top level, original directory $ endsubroutine