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 September, 1992 To Beep Or Not To Beep By Kevin G. Barkes It's not that I have anything against swimming. I just have a sensitive complexion. As Woody Allen once said, "I don't burn, I stroke." Dermatological considerations notwithstanding, the missus had me trapped. It was a hot Friday afternoon. Virtually all of my clients had taken off early to enjoy a long weekend, and the phone hadn't rung in hours. Even the photocopier supply and disk defragmenter salespeople seemed to have disappeared from the planet. She forced me to put on my swim trunks. "Oh look," I muttered to myself. "The Great White." "You look fine," she said. "Now come on." "Ten minutes," I said. "I have to check CompuServe for email." I tried to look busy, but it was a waste of time. She caught me posting Monty Python lyrics on the VAX Forum. "Come on," she said. "You promised me you'd go into the pool as soon as things quieted down." Ack. The Pool. The accursed vinyl-clad monster which had added a couple thousand to the asking price for our house. Sucked up 11,500 gallons of water. Blindsided me with $1,000 of unexpected expenses for a new pump and filter and enough chemicals to purify the drinking water supply of Mexico City. It was more than an aversion to bright sunlight, heat and chlorination. It was a matter of principle. Alas, I could tell from the deadly gleam in her eye there was no escape. I picked up the business phone to transfer calls to the answering service. Normally, I'd tell the operator to wait ten minutes and call my beeper, then use the page as excuse to extricate myself from the situation. The dodge had saved me before from interminable school programs and visits to my wife's relatives. No luck this time. My better half was rooted next to me. She grabbed the phone from my hands immediately after I completed dialing. "Hold all calls unless it's a dire emergency," she told the answering service operator. "Then you can get him on the beeper." She hung up the phone, grabbed me by the scruff of the neck and started hauling me out the back door. "Wait!" I cried. I have to start a job on the VAX. Only take me two minutes!" "Two minutes. Period," she growled. I sat in my chair and typed the Program furiously. (The comments were added later.) I executed the command procedure, grabbed my beeper and followed her outside. I placed the beeper on the chaise lounge, then dangled my legs in the cold water, watching the chlorinated stew turning the hair on my legs a ghastly white. She grabbed my legs and started to pull. Just then, like an angelic chorus, my beeper let out its plaintive cry. I grabbed it, looked at the display and showed it to my dismayed wife. "Hokey smoke! 777! A system disk crash!" I darted from the pool, dove into my car, and sped away to the comforting darkness of the local googolplex and the umpteenth showing of "Batman Returns". I love DCL. (A few notes: The command procedure merely copies modem commands to a terminal port. The WAIT statements following the COPY commands give the modem time to execute the command strings. The actual call to the paging service is the line beginning ATDT. I use a national paging service with a toll-free 800 number. The commas are pauses; the 1234567 is the pager id code; and the 777 is the number to display on the pager. The #s are item terminators for the paging service computer. You can use variations of this procedure to beep you when a batch job completes, when a particular user logs on to your system (a la Clifford Stoll), or to call you out of that interminable Monday morning staff meeting.) **************** DAIN BRAMAGED, PART I Several persons noted yet another apparent error (sigh) in the correction to the PURGE_MIDDLE procedure in the June issue. I said the DELETE command doesn't accept relative version numbers, which is obviously a bonehead comment. What I meant to say was the /EXCLUDE qualifier to DELETE doesn't accept them. To quote the DCL Dictionary, "Wildcard characters (* and %) are allowed in the file specification. However, you cannot use relative version numbers to exclude a specific version." And as for this limitation to /EXCLUDE being unique to DELETE... let's just drop the subject, ok? I don't want to even discuss the astute observation by several sharp readers that since PURGE itself has an /EXCLUDE qualifier (and, yes, it doesn't accept relative version numbers), it would be possible to write the procedure with one PURGE/EXCLUDE instead of two DELETE/EXCLUDEs, since PURGE automatically retains the highest version of the file, anyway. Thanks to Mark Jaeger, Ken Nellis, Lou Miller and several less tactful anonymous others for pointing this out. I gotta stop watching Dragnet reruns at 4 a.m. while writing this column. DAIN BRAMAGED, PART II Another example of stellar DEC marketing: I decided to buy a TSZ07 9-track tape drive for my VAXstation so I can distribute BBS files in a format other than TK50s and to handle my database publishing applications. The good news is the TSZ07 is a DECDirect FastShip item, so it can be shipped by the end of the next business day after ordering. The bad news is the country kit, which contains such mundane items as the power cord and SCSI cable, isn't. Expect up to a 30-day delay, I was told. I hope Alpha workstations come with their power cords in the same package... DAIN BRAMAGED, PART III DEC Educational Services still has every single member of my family on its mailing list, five months after I advised them of their error (see the June and August columns for the sordid details). The latest mailing? Five copies of an offer to subscribe to DEC's Reference Service, otherwise known as Things You Can Get For Free If You Take Your Salescritter To Lunch. You know, DEC, you could probably knock a couple bucks off the price of the subscription if you eliminated all those duplicate mailings. Or maybe have enough surplus cash to stock more than one TSZ09 country kit. JOLTING DISCOVERY My mention of Jolt Cola in June brought some inquiries from persons unable to find it in their areas. I don't have the name or address of Jolt's corporate office, but I'd suggest calling your local soft drink distributors for information, since the cola's made under license across the country. Jolt is more marketing flash than substance, truth be told. Its cola taste is rather nondescript, and its caffeine level is somewhat suspect. Computer Language magazine did an analysis of caffeine-laden soft drinks a few years back in a wonderful parody of software product comparisons. Turns out Mountain Dew has the highest caffeine content of any soft drink. I don't drink it because it's too sweet for my taste, and my family gets alarmed when I type with my feet. And at my age, it's not good to go for a week without blinking. GROUP PARTICIPATION Last month was a busy one. Aside from the aforementioned folk who pointed out the PURGE_MIDDLE gaffe, letters, comments and code were received from Emily Morse, Brian Toby, Dave Boyle, Michael deTreville, Mike Geist, Farshid Elahi, Allen H. Porter and George H. Trudeau, among others. Should be some interesting stuff showing up here in the coming months. *************************** Kevin G. Barkes is an independent consultant whose penchant for keeping odd hours sometimes results in marital strife. "Sometimes I wake up grumpy," he reports, "but most times I just let her sleep." Kevin lurks on comp.os.vms and can be reched at kgbarkes@gmail.com. ************************* Program 1. $ SET NOON $! Wait a short period of time: $ WAIT 00:03:00 $! Initialize the modem $ COPY SYS$INPUT TTA2: ATZ $ WAIT 00:00:03 $! Call the beeper $ COPY SYS$INPUT TTA2: ATDT8005555555,,,,1234567#,,,,777#,,,# $! Wait for all this stuff to complete $ WAIT 00:00:45 $! Hang up the modem $ COPY SYS$INPUT TTA2: ATH $ WAIT 00:00:03 $! Reinitialize it $ COPY SYS$INPUT TTA2: ATZ $ DEALLOCATE TTA2: $ EXIT