Copyright 1992-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 December, 1992 I May Regret This... By Kevin G. Barkes One of the great things about writing this column is getting mail from readers. Alas, one of the downsides to writing this column is getting mail from readers. Permit me to explain the apparent paradox. Some correspondence is enlightening and entertaining. Readers send spiffy command files, bug fixes to stuff I've published, friendly comments and suggestions and other diverting ennui. Others request, nay, demand, that I tune their systems for them, send them copies of multiple-thousand block executables over the Internet, or write site-specific command files rivaling VMSINSTAL.COM in length. Whenever I can, I try to oblige. And I'll continue to do so. But do me a favor and please try to scale back your requests to reasonable proportions. Like most of you, I barely have enough time to write this column, perform my VAX Pro review board duties and answer the mail, let alone handle the "real world" stuff that puts bread on the table. There's no way I can debug your DCL code over the phone or write a specific procedure to handle your site's specific needs. ==== Updated 4/13/1999==== THIS WAS BEFORE EVERYONE HAD INTERNET ACCESS. PLEASE, DON'T SEND ME TAPES! But, this being the holiday season and all, I'm willing to do my bit to keep the readership happy. Here's the deal: send me a blank TK50 or 2400' 9-track tape and return shipping and I'll send you a copy of all the program files on my SYS$OUTPUT BBS system in a couple BACKUP savesets. That's about 40 megabytes of stuff for you to dump and enjoy. Somewhere in that data will probably be something that will solve your problems. I'll also throw in an "I Love DCL" sticker, a listing of all DEC-related FidoNet BBS systems, and some other info on where to find stuff on the Internet. Here are the rules: 1. Send me a new TK50 or 9-track reel. I don't want to have to fight with TK70s in disguise, tapes that have been through the moral equivalent of Hurricane Andrew or other problems. Sorry, no 8mm or 4mm. 2. Make sure to include a return mailing envelope, pre-addressed label, and return postage. No return postage, you're outta luck and I have a free tape for my backup pile. My monthly postage bill already rivals the gross national product of some third-world nations. 3. Give me a couple weeks to get the tape back to you. Tapes will be processed in the order in which they are received. No playing favorites; something that comes Fedex overnight priority one will get tossed into the same pile as the stuff that arrived via parcel post. No special handling will be done, so please don't call. Needless to say, I expect to be swamped. If you want confirmation that I received your tape, include a pre-addressed post card. I'll mail it back to you when I open your package. Expect to wait anywhere from two to four weeks for your tape to be returned. (My son doesn't know it yet, but he's going into the tape duplication business.) 4. Don't put other stuff in your tape package, like letters to the editor, submissions for publication, etc. It might be awhile before your package is opened. 5. Please don't call me for support for the stuff you receive. What you get is what you get. There will be instructions on how to run BACKUP to get the files off the tape, but that'll be it. I won't start processing this stuff until after January 1, 1993, so hold on to your tapes until then. And have a happy holiday. ====================================================== 4/13/1999 update: I must have been out of my mine. We processed over 450 tapes. ====================================================== UDKS MADE EZ This month's reader-submitted command procedure (Program 1) provides a very simple way to load the user-definable shifted function keys on the LK201/LK401 keyboards. Its author, Allen H. Porter, Senior Systems Analyst at Montana State University, explains "[T]he download sequence is very arcane, requiring a hexadecimal equivalent of the text string, key numbers, and control characters. Many users can never take advantage of this most useful and time-saving capability because of this difficulty." Allen says his procedure "has been very popular with my fellow technicians and end users alike." I'm sure DEC Pro readers will be similarly enthused. (Note that a shifted F11 is used as an "accelerator" key in DECterm windows under the Motif Window Manager and cannot be redefined.) ************** READER NOTES - John E. Babbitt, Jr. of Cutler & Co. in Medford, OR notes the command file in September's "To Beep Or Not To Beep" column contains a line to deallocate the terminal port, but fails to allocate it. Guilty- but consider the circumstances under which the procedure was written. It's probably a good idea to add the following lines prior to the first COPY command to avoid conflicts in multi-user situations: $ ALLOCATE (terminal) $ IF $SEVERITY .NE. 1 THEN EXIT I received a number of interesting DCL procedures recently that I hope to publish in future issues. Please remember to include your plain vanilla U.S. Mail address and telephone number no matter what medium you use to contact me- Internet, CompuServe, FidoNet or Postal Service. I can't run your stuff unless we can contact you by U.S. Mail. Sean Brennan and Paul Cowan submitted a command file that makes TPU work like the RT-11 KED editor; Jim Matthews passed along a copy of his expanded version of RoboVAX (December, 1990) that monitors just about everything on his system; and Kim Hawkins passed along a nifty tree utility. ********************* THERE IS A SANTA CLAUS - I just received my copy of the latest Educational Services catalog from DEC. Just one copy... it took nine months, but DEC finally removed the rest of my family from the mailing list. I'm taking this as a good omen that Digital's reorganization is finally on the right track. Thanks, ES. ********************** CLOSING OUT THE YEAR - The final correction to PURGE_MIDDLE.COM: Jay M. Bukstein, System Support Analyst with 3M Corp. in St. Paul, MN, notes the F$SEARCH lexical used in the procedure to find the highest and lowest versions of the file reports the entire file spec. The /EXCLUDE qualifiers to PURGE and DELTETE don't accept the device portion of the file spec. ********************** Kevin G. Barkes is an independent consultant who wishes his readers visions of sugarplums, whatever the heck they are. Kevin lurks on comp.os.vms and can be reached at kgbarkes@gmail.com. ************************************ PROGRAM 1 $! UDK.COM defines shifted function keys F6...F14, $! HELP, DO, F17...F20 $! Input parameters if not on command line $! Key Name: $ IF P1 .EQS. "" THEN INQUIRE P1 "_Key " $! Text String: $ IF P2 .EQS. "" THEN INQUIRE P2 "_Text " $! Terminate with return? $ IF P3 .EQS. "" THEN INQUIRE P3 "_?" $! Check key and determine key number $! for download sequence $ KEYS="F6/F7/F8/F9/F10//F11/F12/F13/F14//HELP/DO//F17/F18/F19/F20" $ KEY=0 $LOOP1: $ IF P1 .EQS. F$ELEMENT(KEY,"/",KEYS) THEN GOTO GOOD_KEY $ KEY=KEY+1 $ IF KEY .LT. 18 THEN GOTO LOOP1 $ WRITE SYS$OUTPUT "Unrecognized key." $ EXIT $GOOD_KEY: $ KEY=F$STRING(KEY+17) $!Generate hex representation of each character $!in the text string $ HEX = "" $ CHAR=0 $ LOOP2: $ HEX=HEX+F$FAO("!XB",F$CVUI(CHAR*8,8,P2)) $ CHAR=CHAR+1 $ IF CHAR .LT. F$LENGTH(P2) THEN GOTO LOOP2 $! Add optional carriage return (default) $ IF P3 .EQS. "" .OR. P3 THEN HEX=HEX+"0D" $! Create control characters and define the key $ DCS[0,8]=%X90 $ ST[0,8]=%X9C $ WRITE SYS$OUTPUT DCS+"1;1|"+KEY+"/"+HEX+ST $ EXIT $! Examples: $! $ UDK == "@UDK" $! $ USK F10 "Library, PA 15129-9735" Y $! $! Define to be EXIT $! $! $ EM[0,8] = %x19 $! $ UDK $! _Key : F6 $! _Text : 'EM'EXIT $! _?: Y