Copyright 1995-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 A Case of SCSI Clusters Originally published February, 1995 By Kevin G. Barkes Sometimes I forget our industry has odd-sounding terminology. I was reading through some DEC material as my daughter was walking through my office. I murmured aloud, "VMS AXP 6.2 has SCSI ("scuzzy") clusters." "Can't you send it back?" she asked. "Doctor, he has OpenVMS AXP Six Point Two SCSI clusters, is febrile and non-responsive. I suggest amputation." Sorry. While it sounds quite horrid to the unwashed masses, SCSI cluster support is actually one of the biggest new features in the soon-to-be-released OpenVMS operating system update. The software provides support for shared access to SCSI buses using "local" system adapters. Made possible due to enhancements to SCSI (the ANSI Standard SCSI-2 Specification), a SCSI cluster can connect up to three supported host machines on a multihost SCSI bus using the same shared SCSI interconnect. Each host can have a maximum of two multihost SCSI buses, and a host can be connected to any number of single-host SCSI buses. Host-to-host communication (SCA) is handled by DSSI, Ethernet, or FDDI. SCSI tape drives aren't supported on multihost SCSI interconnects, but can be linked to single-host interconnects and then be TMSCP served to other hosts in the cluster. All the existing VMS cluster software features are used, unchanged, on top of the SCSI device drivers. This includes the distributed lock manager, distributed file system, MSCP & TMSCP serving, satellite booting, quorum disks, RAID features and all OpenVMS layered products. This initial release supports only low-end PCI-based AXP systems, specifically the AlphaServers 1000, 2000, and 2100 and the AlphaStation 200 and 400 using integral PCI to SCSI adapters or add-on KZPAA adapters. These adapters are 8-bit, single ended and feature a ten megabyte/second transfer rate. Add-on converters are available to allow single-ended hosts to communicate with differential controllers. A RAID controller, the HSZ40, is available as well. There are a number of configuration issues which must be considered in setting up a SCSI cluster, all of which are too complex to be discussed here. DEC was handing out preliminary documentation at the DECUS symposium in Anaheim this past December, and the information should be available from the traditional DEC sources, including its Internet site. Send a message to info@dec.com for details on how to get hold of good stuff online. If you can't wait for 6.2 and you're not running one of the aforementioned AXP machines, you might want to take a look at Invinvible Technology's S-COM product, which it calls "the first HSC for SCSI-based systems." S-COM directly connects up to three hosts to 15 shared SCSI IDs (either standard SCSI disks or RAID arrays), giving all hosts direct access to all data. Since it bypasses MSCP serving over Ethernet, the manufacturer claims throughput of up to 30 megabytes a second. And, it works on VAXes as well as AXPs on VMS 5.4 and higher. "But won't you hurt your SCSI if you put RAID on it?" my daughter asked. "Ask your mother," I replied. --------------------- Lots of Good Code! Ryan Maley, Information Systems Manager of Equipto Electronics Corporation supplied us with the jackpot this month... another fix to RoboVAX and, more importantly, a C-Kermit script file that can send text messages to alphanumerica pagers. Ryan's "recently been using the RoboVAX routine and have had a problem implementing the C_PROC routine, even with the changes in June 94 and September 94 columns. It seems that if the process was not found by F$CONTEXT, ctx would get set to null and the F$GETJPI call would return the *current* process name. Of course, the current process has a name (RoboVAX) and I'd never get a warning. This null ctx would also not allow a cancel (per your September 94 column)." Ryan's suggest fix appears as program 1. The real gem is a C-Kermit script file Ryan wrote to send a text file to a pager. It's an excellent example of "programming" with Kermit, and one reason why I'm such a big Kermit booster. The code is pretty self-explanatory (Program 2). To run it, you just need to check a few things: You need C-Kermit, at least version 5A(189). C-Kermit identifies itself when it executes. If your Kermit prompt says Kermit-32> instead of C-Kermit>, you have an ancient, unsupported version. Get rid of it. Now. C-Kermit must be defined as a foreign command: $ ckermit := $disk::[directory]ckermit.exe Make sure this gets executed during your login, and be careful that it doesn't get skipped if your login.com checks for batch mode operation. The file message.txt contains the message being sent to the pager. To run the file manually, give the command: $ ckermit -y pager.scr The "-y" tells C-Kermit not to read its default initialization file, but rather to execute the commands in pager.scr. Figure 1 shows a log of a typical session to my local carrier. Note the phone numbers have been changed. Ryan's integrated his C-Kermit file with the RoboVAX procedure to write a RoboVAX error to a message file and send the file to his pager. See Program 3 for a rudimentary example, which is fired up by entering: $ submit batch /parameter="This is a message." This is a far more elegant way to deal with alphanumeric paging than the crude DCL hack I proposed a while ago. It also showcases Kermit's capabilities. You can construct elaborate Kermit scripts to do just about anything. I use several to automatically transfer large files late at night when phone rates are lower. Kermit programming techniques are beyond the scope of this column. If you're using or going to use C-Kermit, get the Digital Press book "Using C-Kermit" by Frank da Cruz and Christine M. Gianone. ----------------- Vital Update: If you're an old-timer, you're probably familiar with Stan Kelly-Bootle's "Devil's DP Dictionary", a marvelous collection of droll data processing definitions. Stan's updated his classic, now called "The Computer Contradictionary, Child of Devil's DP Dictionary", and in the process nearly doubled its original size. There are 268 unchanged old definitions, 214 updated definitions, and a whopping 555 new terms, reflecting what's happened in the business since the original 1981 publication was released. Look for it in the spring 1995 catalog of The MIT Press, Cambridge, MA. ****************** Kevin G. Barkes is an independent consultant who, while living not far from the home of Punxsutawney Phil, has never met the miserable little beast and who hopes Phil has the good sense to bite the bozos wearing the funny hats when they try to roust him from his hole. Kevin lurks on comp.os.vms and can be reached at kgbarkes@gmail.com. -------------------------------------------------------------- ********************************* FIGURE 1. Sending message: This is a batch test. Executing Kermit script for an alpha page PAGER.SCR... Number of paging service: T,9999999 Pager identification: 9999999 Modem type: HAYES Serial line: tta2: Configuring the line and mode ... Configure dialing ... Dialing ... ATDT,9999999 CONNECT 2400 ID= PAGENET PITTSBURGH Enter pager ID(s): 8888888 Enter Alphanumeric Message: This is a batch test. More Pages? Good Bye +++NZ6!v OK ***************** PROGRAM 1. $ C_PROC: SUBROUTINE $ tmp = f$context("process",ctx,"PRCNAM","*''p1'*","EQL") $ pid = f$pid(ctx) $ if "''pid'" .eqs. "" $ then $ call warning "''P1' process has disappeared" $ endif $ ENDSUBROUTINE ************************ PROGRAM 2. comment pager.scr comment Commands to dial a TAP Alphanumeric Pager service comment DEFINE \%p T, ; Dialing prefix - my modem requires the T as in ATDT comment If you need to dial 9 to access an outside line, comment the line would be DEFINE \%p T9, DEFINE \%n 7882878 ; Number of the paging service DEFINE \%i 6490774 ; Pager ident (pager phone number) DEFINE \%m HAYES ; Modem type DEFINE \%l tta2: ; Serial line comment comment Probably won't have to change anything below this. comment Your pager service may use different prompts. comment echo echo Executing Kermit script for an alpha page PAGER.SCR... echo echo Number of paging service: \%p\%n echo Pager identification: \%i echo Modem type: \%m echo Serial line: \%l echo echo Configuring the line and mode ... set modem \%m set line \%l set speed 2400 set terminal bytesize 7 set parity even set file type text set duplex half set input timeout proceed :Redial echo echo Configure dialing ... set dial display on set dial speed-matching on echo Dialing ... dial \%p\%n input 10 ID= ; Wait for ID= prompt from service if success goto SendMessage Echo Can't get prompt try again ... hangup pause 15 goto Redial :SendMessage output M\13 input 5 RETURN. ; Wait for page ident prompt output \%i\13 input 5 RETURN. ; Wait for text prompt transmit message.txt input 5 Thank you hangup STOP **************** PROGRAM 3. $! BATCH.COM $ if p1.eqs."" then goto NoMessage $ write sys$output "Sending message:" $ write sys$output ''p1 $ open/write message message.txt $ write message ''p1 $ close message $ ckerm -y user2:[barkes.propress.dcl95]pager.scr -b 9600 $ del/noconf message.txt; $ goto fini $! $ NoMessage: $ write sys$output "No message to send." $ write sys$output "Be sure to enclose the message in quote marks." $! $ fini: $ exit