Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

DECUServe Journal June 1995

4 views
Skip to first unread message

Brian McMahon, Info-VAX Refugee

unread,
Jun 23, 1995, 3:00:00 AM6/23/95
to

The DECUServe Journal
=====================
June, 1995

Table of Contents
=================

CONTENTS

Table of Contents . . . . . . . . . . . . . . . . . 1
From the Editor's Keyboard . . . . . . . . . . . . . 2
OpenVMS V6.2 and DECnet . . . . . . . . . . . . . . 2
What's that Underscore Do? . . . . . . . . . . . . 15
How Does OpenVMS Page? . . . . . . . . . . . . . . 18
Q-Bus FDDI Performance . . . . . . . . . . . . . . 20
PATHWORKS License Puzzle . . . . . . . . . . . . . 22
ALL-IN-1 E-mail Migration . . . . . . . . . . . . 25
Confounded by Segmented Keys . . . . . . . . . . . 32
Limiting ALL-IN-1 Access . . . . . . . . . . . . . 46
MAKE_FILE_NAME in ALL-IN-1 . . . . . . . . . . . . 48
RAID 1 vs. RAID 5 . . . . . . . . . . . . . . . . 51
Connecting a DEChub 90 . . . . . . . . . . . . . . 60
Calling CREMBX from COBOL . . . . . . . . . . . . 62
About the DECUServe Journal . . . . . . . . . . . 65
Contact Information . . . . . . . . . . . . . . . 66

The DECUServe Journal June, 1995 Page 2
From the Editor's Keyboard


From the Editor's Keyboard
==========================

We've finally had a few moments of relative calm in which to digest
some of what we brought back from DECUS '95/Washington last month.
Several of the following articles cover some of the hot topics from
the symposium; in fact, some notes were posted by subscribers from
on site. You'll find articles on OpenVMS V6.2, RAID, and ALL-IN-1
e-mail migration, to name just a few that directly relate to
well-attended D.C. sessions.

One hot topic from D.C. that is not -- yet -- covered in the
Journal is the World-Wide Web. However, that is about to change.
DECUServe has just recently added a dedicated WWW Notes conference,
and we expect to have some good information to share with you by the
next issue of the Journal. The WWW conference is shaping up to be a
very lively place.

Meanwhile, we do have one Web item of note: We've moved the Table
of Contents to appear as the very first item in the Journal, to
facilitate Don Vickers' efforts to produce a more Web-friendly HTML
version of the Journal. Expect more developments in the months
ahead. (And many thanks to Don for driving this project!)

As always, your comments, criticism, and suggestions are most
welcome. Contact information appears at the end of every issue.

* * * * *


OpenVMS V6.2 and DECnet
=======================

One of the major topics at the recent national event was the latest
version of OpenVMS. The following stream of notes, which happened
to be running concurrently with the national event, talks about
OpenVMS V6.2, with emphasis (sometimes heated) on DECnet OSI vs.
Phase IV issues. Along the way, other issues covered include OSI
numbering and mixed V5.5-2/V6.2 VMSclusters. Just another typical
DECUServe discussion....

[Note: Inserted in the middle of this is a series of notes from the
WHO_AM_I conference, which is used for personal information and
informal discussion among DECUServe subscribers. The notes in
question were copied into the VMS discussion because of their
immediate relevance to the topic, and appear here marked as WHO_AM_I
Note 748.nn.]

Participants: Rob Brooks, Alan Bruns, Geoff Bryant, Larry Clegg,
John Covert, Debbie Driesman, Lee Gleason, Bob Hassinger, Matt
Holdrege, Alan Hunt, Larry Kilgallen, John Osudar, Keith Parris,
Pete Sivia, Patrick Stair, Jay Thomas, Tim Turner (by way of

The DECUServe Journal June, 1995 Page 3
OpenVMS V6.2 and DECnet


WHO_AM_I), George Watson, Bret Wortman.


Note 2524.0, 4-May-1995
Osudar: what's up with VMS V6.2?
--------------------------------
Before the big announcement-fest on April 11th, there were reports that
Digital would be "announcing" VMS V6.2. The Customer Update from that
date contains nothing about V6.2. Now I've seen statements such as,
"since Digital announced VMS V6.2 last month..." -- but I still
haven't seen an official announcement. Digital's WWW site has no
information on it. The Electronic Store has no information on it.
I know that V6.2 was allegedly supposed to ship sometime this month.
I've even seen articles (e.g. DEC Pro) about what's in V6.2 -- but
still nothing official from Digital.

(My main interest is in the status of DECnet in V6.2. A long time ago
Digital had made some rumblings about forcing everyone to go to Phase V
as of VMS V6.2. Now there are stories that V6.2 won't "require" DECnet
at all -- whatever that means. Since I have to plan for when -- or
whether -- we'll upgrade our production systems to V6.2, I'd like some
official word.)

Note 2524.1, 4-May-1995
Thomas: As far as I know
------------------------
I've seen additional "Full Names" support, but nothing about dropping
support for Phase IV.

DECnet will no longer be a prerequisite to run VMScluster software.

Note 2524.2, 4-May-1995
Watson: Still there in this one
-------------------------------
My understanding of the "no Phase IV in V6.2" is that it is a mixup about
which version would get which number. About a year or so ago, the VMS group
announced the latest version rationalization scheme: two releases a year,
alternating "point" and "dash". The Networks group took this scheme, counted
forward to fall '95, and came up with 6.2. Well, the scheme broke down, and
now 6.2 is spring '95. So this release will still have Phase IV as the
built-in DECnet, and /OSI as a layered product. I believe that it is still
the plan that the next release (currently referred to as 6.2next) will NOT
have a built-in Phase IV DECnet.

As the reply in .1 stated, the "won't require DECnet" refers to clusters, and
specifically to satellite boot support; it was announced at last DECUS that
OpenVMS V6.2 will have direct support for MOP requests, independent of DECnet.


The DECUServe Journal June, 1995 Page 4
OpenVMS V6.2 and DECnet


Note 2524.3, 4-May-1995
Covert:
--------
I was at German DECUS a few weeks ago, and various FUD issues around going
to Phase V were discussed.

While the majority of customers were still running Phase IV, quite a few
customers got up and explained that the migration to Phase V with the current
migration tools was completely painless and essentially transparent.

YMMV.

Note 2524.4, 4-May-1995
Driesman: mid-June
------------------
We had a LUG presentation on VMS 6.2 contents last week and were told
that 6.2 would be out the end on May and FRS was scheduled for
mid-June.

Note 2524.5, 4-May-1995
Sivia: Phase IV is the default in V6.2
--------------------------------------
Absolutely, positively, there's real-live Phase IV in V6.2. Otherwise
this particular box I'm typing on would not be working.... You don't
have to do a thing installing or when upgrading to 6.2 on VAX or AXP in
terms of a DECnet Phase IV change. The default is Phase IV. Phase V
(OSI) is not mandatory in 6.2. However there is a cover letter note or
somesuch that says that 6.2 is the last to support Phase IV so I fully
expect that when V6.2+something shows up, we will have to convert to
Phase V (OSI) or dump it all for TCP/IP (or do some combo using Phase
V and TCP/IP).

Note 2524.6, 5-May-1995
Hassinger: Can individual nodes move on their own?
--------------------------------------------------
> While the majority of customers were still running Phase IV, quite a few
> customers got up and explained that the migration to Phase V with the current
> migration tools was completely painless and essentially transparent.

John, was this in the context of an individual system, or was it in
terms of an entire network? In other words, can I just upgrade my
single node to phase V without reference to what is being done or not
being done on the rest of our corporate network (which I have no
control over, very little access to information about, and serious
doubts about any timely updates to).


The DECUServe Journal June, 1995 Page 5
OpenVMS V6.2 and DECnet


Note 2524.7, 5-May-1995
Covert:
--------
It was in the context of an entire network.

I wish I knew more about what it takes to upgrade individual nodes, but,
like many of you, I have ignored Phase V. It's probably time for me to learn.

I would think that your individual nodes are probably end-nodes, and could
be upgraded without any regard for what is going on elsewhere. I could
also be wrong.

Note 2524.8, 6-May-1995
Thomas:
--------
According to DSNlink, the projected rollout dates for OpenVMS Alpha
are:

V6.2 June 95
V7.0 January-March 96

So pure speculation says that maybe it will be V7.0 that may "require"
Phase V, or phase out Phase IV. So you've got about nine months to
figure it all out.

Note 2524.9, 6-May-1995
Covert: Do Phase V before next release so it isn't all at once
--------------------------------------------------------------
I'm wondering if the wise thing to do is:

June - upgrade to 6.2
September - upgrade to Phase V under 6.2
January - upgrade to next release

(the use of specific months above by a member of the OpenVMS development
team in no way constitutes a commitment of delivery of any releases in
those particular months. I hope the lawyers are happy.)

Note 2524.10, 9-May-1995
Brooks: Phase IV --> Phase V is easy!
-------------------------------------
> I wish I knew more about what it takes to upgrade individual nodes, but,
> like many of you, I have ignored Phase V. It's probably time for me to learn.

It doesn't take much to upgrade! If you're still going to use
the NSP (Phase IV) transport, as I would imagine most of us will be,
it's quite simple. Even using CLNP (OSI) isn't hard; it's just
different.

The DECUServe Journal June, 1995 Page 6
OpenVMS V6.2 and DECnet

> I would think that your individual nodes are probably end-nodes, and could
> be upgraded without any regard for what is going on elsewhere. I could
> also be wrong.

Well, there are other considerations, like making sure that
an OSI router exists somewhere on the network if you're using
a cluster alias.

I've upgraded two clusters and several non-clustered VAXes to various
versions of DECnet/OSI. I've not had any big problems, and any
questions were rapidly answered via DSNlink or by voice from the CSC.
The DECnet/OSI doc set is quite extensive, and useful. I suspect
most of the OSI whining has come from either vendors pushing alternate
network products, or from those who haven't made an honest effort
to understand DECnet/OSI. It's not a big deal, really.

Note 2524.11, 9-May-1995
Stair: What does "OSI router" imply?
------------------------------------
> Well, there are other considerations, like making sure that
> an OSI router exists somewhere on the network if you're using
> a cluster alias.

Does this mean that you need a _dedicated_ OSI router? That is, can I
use one of my current nodes with all of its additional processing
activities (just as I have one node now with full-function DECNet), or
am I going to have to buy an additional CPU just to run OSI?

Note 2524.12, 9-May-1995
Wortman: Flip side
------------------
On the flip side, I've *never* gotten an upgrade from IV to V to work.
Granted, usually I'm forced to upgrade since the WAN Device Driver
software is no longer available except as part of DECnet/OSI and it
*does* seen to be the WAN part that messes me up every time, but....

We're willing to pay Digital upwards of $4K to do the upgrade for us to
minimize our exposure to the clients. That's how much trouble I've
had. (Of course, you could call me a moron, and might not be all that
wrong.... ;-)

Note 2524.13, 9-May-1995
Brooks: No OSI routing on VMS systems
-------------------------------------
> Does this mean that you need a _dedicated_ OSI router? That is, can I
> use one of my current nodes with all of its additional processing
> activities (just as I have one node now with full-function DECNet), or

The DECUServe Journal June, 1995 Page 7
OpenVMS V6.2 and DECnet


> am I going to have to buy an additional CPU just to run OSI?

There is no routing of OSI done by a timesharing machine. The only
OSI routers that exist are dedicated multiprotocol routers like
a DECbrouter 90 or various cisco's. Note that DEC has been
warning for years that no OSI routing would be done by timesharing
systems, so I hope the above isn't a big shock.

Note 2524.14, 9-May-1995
Clegg: OSI & Cluster Alias & No Router
--------------------------------------
I just upgraded to OSI due to the WANDD software and it was not a trivial
upgraded! 8-)

Anyway...

This issue of having a dedicated router for OSI is very confusing. The OSI
doc set says that you have to have a router in order to use the cluster alias.
DSNlink told me that if all nodes are upgraded to OSI then no router is
required to use the cluster alias. For a while I had a Phase IV and Phase V
network and my cluster alias on the Phase V nodes would not work. (We do not
have any routers.) Since this weekend and my upgrade to a total Phase V
network all of my cluster aliases are working and we still don't have any
routers. :-) The Novell LAN was oblivious to this whole changeover as well -
I'm not sure if that's good or bad!

Of course other things broke due to OSI - Talaris printers and TCPware to name
two. :-( Oh yes, DSNlink broke - it's not "officially" supported under OSI but
they gave me the correct NCL commands to get it back online!

Note 2524.15, 9-May-1995
Brooks: OSI madness
-------------------
> Granted, usually I'm forced to upgrade since the WAN Device Driver
> software is no longer available except as part of DECnet/OSI and it
> *does* seen to be the WAN part that messes me up every time, but....

Hmm. I've never had to deal with WANDD (just PSI and OSAK),
but I'm curious about the problems you've run into. Are these
problems with earlier versions (like the notorious Extensions V5.4
and DECnet/OSI V5.5/V5.6), or do these problems persist
with V5.8 and V6.0?

> (Of course, you could call me a moron, and might not be all that
> wrong.... ;-)

Well, as a big Iowa Hawkeye fan, I might be so inclined :-)

[Note: This is an inside joke. Bret is a graduate of Iowa State; Rob likes
the University of Iowa; your humble editors, who have to work with fans of

The DECUServe Journal June, 1995 Page 8
OpenVMS V6.2 and DECnet


both, profess strict neutrality on the matter. --ed.]

Note 2524.16, 9-May-1995
Brooks:
--------
> This issue of having a dedicated router for OSI is very confusing. The OSI
> doc set says that you have to have a router in order to use the cluster alias.
> DSNlink told me that if all nodes are upgraded to OSI then no router is
> required to use the cluster alias.

That's news to me. What version of OSI did you go to?

> have any routers.) Since this weekend and my upgrade to a total Phase V
> network all of my cluster aliases are working and we still don't have any

What do you mean by "total Phase V network"? You're not using
Phase IV-compatible addresses? Only using OSI transport and not NSP?

Note 2524.17, 9-May-1995
Hunt: Not bad but here are some hints.
--------------------------------------
As to the router issue what has been said is true. We are running over
a Phase IV backbone. Since nothing was running OSI routing and
corporate wouldn't run it, I purchased WANrouter 90s (relatively cheap
and I realize this wouldn't be true for everyone) and hooked them up
where we had clusters. When I configured them, I found (with CSC's
help) that configuring them as Phase IV Level 1 and 2 routers allowed
the cluster alias to work. They did NOT have to be configured as Phase
V routers to make the alias work. When I disconnect the router the
alias does not work.

Things went fairly easily here but I did do a lot of reading and
testing but we have a large network. The P.S.I. Access was easy but we
don't use the WANDD part. We do use DNS over the WAN and it works
nicely. Just takes a bit to learn it. By the DNS manual if you use.
Helps a lot.

I will say that DECnet/OSI V6.1 appears to be better than the earlier
versions but ECO 2 is out plus we just received a fix for MOP where it
doesn't always start properly.

Some bugs I found so far:

The NET$MOP_CLIENT_STARTUP.NCL file created by converting your Phase IV
database during the upgrade needs to be reformatted. It works but
CLUSTER_CONFIG.COM has problems with the "one line" format for a MOP
client. It also leaves out the host node information which allows a
cluster node booting to tell you the name of the download node.

--Bad format created by conversion procedure--

The DECUServe Journal June, 1995 Page 9
OpenVMS V6.2 and DECnet

CREATE MOP CLIENT PT9021
SET MOP CLIENT PT9021 ADDRESSES = {08-00-2B-3C-99-35} -
,TERTIARY LOADER = {SYS$SYSTEM:TERTIARY_VMB.EXE} -
,SYSTEM IMAGE = {"@NET$NISCS_LAA(DISK$CL1_RA90_00:<SYS21.>)"} -
,PHASE IV HOST ADDRESS = 52.201 -
,PHASE IV CLIENT NAME = PT9021 -
,PHASE IV CLIENT ADDRESS = 52.221

--Format supported by NET$CONFIGURE.COM, etc with additional info--

CREATE NODE 0 MOP CLIENT PT9021
SET NODE 0 MOP CLIENT PT9021 ADDRESSES = {08-00-2B-3C-99-35,AA-00-04-00-DD-D0}
SET NODE 0 MOP CLIENT PT9021 TERTIARY LOADER = {SYS$SYSTEM:TERTIARY_VMB.EXE}
SET NODE 0 MOP CLIENT PT9021 SYSTEM IMAGE = {"@NET$NISCS_LAA($1$DUA0:<SY21.>)"}
SET NODE 0 MOP CLIENT PT9021 VERIFICATION = %X0000000000000000
SET NODE 0 MOP CLIENT PT9021 PHASE IV HOST NAME SYS1 <--Left out
SET NODE 0 MOP CLIENT PT9021 PHASE IV HOST ADDRESS 52.201
SET NODE 0 MOP CLIENT PT9021 PHASE IV CLIENT NAME PT9021
SET NODE 0 MOP CLIENT PT9021 PHASE IV CLIENT ADDRESS 52.221

We found that starting with DECnet/OSI V5.8 and later the MOP images
don't always load properly. Workaround is to kill the NET$MOP process
and issue the command $ @SYS$SYSTEM:STARTUP.COM NETWORK MOP. We may
have the fix for the problem.

The MOP$NAMED_LOAD logical must be redefined by SYSTARTUP_VMS.COM. The
value in NET$LOGICALS.COM is wiped out by NET$STARTUP.COM.

If you have LPS printers, the LPS software configuration creates its
own file with the info that would normally be in
NET$MOP_CLIENT_STARTUP.NCL but it leaves out the DECnet form of the
ethernet address (AA-00-04-00-nn-nn) which is needed to make the
LOAD/BOOT commands in NCL work (NCP LOAD/TRIGGER equivalents). You add
the address with a NCL SET MOP CLIENT command.

If you trigger nodes with passwords (VMS workstations mainly), the LOAD
command becomes:

NCL LOAD MOP CLIENT 'P1' CIRCUIT MNA-0, VERIFICATION %XEFCDAB8967452301

in place of the old NCP

NCP TRIGGER NODE 'P1' VIA MNA-0 SERVICE PASSWORD 0123456789ABCDEF

command. Notice the password format change. This is documented.
This is some of the highlights/lowlights.


The DECUServe Journal June, 1995 Page 10
OpenVMS V6.2 and DECnet


Note 2524.18, 9-May-1995
Sivia: VMS V6.2 due to ship at the end of this month
----------------------------------------------------
At the symposium this afternoon, DECfolks said that VMS V6.2 for VAX
and AXP systems would ship at the end of this month. They also handed
out something like 1,200 copies of the updated VMS freeware CD here
today. The freeware CD will ship with the VMS V6.2 CDs.

Note 2524.19, 10-May-1995
Bryant: DECnet/OSI and TCPware and Novell
-----------------------------------------
> <<< Note 2524.14 by EISNER::CLEGG "Larry Clegg, Who #748" >>>
> -< OSI & Cluster Alias & No Router >-

Picking up on a comment from your WHO entry about this upgrade, I
thought I would clarify your comment about TCPware and DECnet/OSI.
TCPware works fine with DECnet/OSI. However, Novell by way of
TCPware and DECnet/OSI can conflict if you use the 802.3 frame type
for your Novell network as you discovered :-).

The short answer is that OSI started using a protocol which collides
with the Novell frames. The solution as Larry discovered, is to use
a different frame type for the Novell network and for TCPware
supporting the Novell network and the conflict goes away.

Yes, I work for Process Software in the TCPware group...


Note 2524.20, 10-May-1995
Osudar: why I care
------------------
I asked the initial question (about VMS V6.2 and DECnet/OSI) because
our site has decided not to implement OSI. So I need to know whether
to consider freezing at VMS V6.1 or V6.2, or whether we'll be able to
run DECnet-less clusters under V7.0 and beyond. I think this
discussion has helped clear up some of my confusion. Thanks!

Note 2524.21, 11-May-1995
Gleason: External ready addresses for V
---------------------------------------
What are people who go to Phase V doing about getting a unique
address? Are people ignoring this feature, using a derivative of their
telex/phone/x.25 number, or getting it from a sanctioning body?


The DECUServe Journal June, 1995 Page 11
OpenVMS V6.2 and DECnet


Note 2524.22 what's up with VMS V6.2? 22 of 28
Holdrege: official address
--------------------------
You can order it from ANSI which is the sanctioning body for OSI
addresses. Last time I checked it cost at least $1000.


Note 2524.23, 12-May-1995
Kilgallen: Phone Number
-----------------------
We used our phone number.

Note 2524.24, 12-May-1995
Brooks: Taking chances . . .
----------------------------
Since I don't expect we'll ever be part of an external OSI-based
network, I just used the default addressing provided by the
installation. Yeah, it may come back to bite me, but I'll
take my chances (and we're only talking about fewer than a dozen
nodes, which are easy to reconfig if I had to).


Note 2524.25, 15-May-1995
Bryant: Moved from WHO_AM_I
---------------------------
Dale suggested that these notes from WHO_AM_I be posted to a technical
conference. Since a part of the discussion also took place in this
topic, I am copying the notes here.

[The next seven notes are excerpted from Larry Clegg's topic in the
WHO_AM_I conference. --ed.]

WHO_AM_I Note 748.16, 9-May-1995
Clegg: I Survived (Barely)
--------------------------
Well I survived a weekend conversion from a mixed version VAXcluster (5.5-2
and 6.1) and DECnet IV to a full V6.1 cluster with DECnet/OSI! It's not for
the faint of heart! The V6.1 upgrade was smooth. The OSI change was anything
but smooth. I had previously been through an OSI conversion on a standalone
machine. I _thought_ I had passed my learning curve there. I was wrong. :-(
Apparently OSI in a cluster is something new to the Digital developers.
There's no obvious methodology for which NCL scripts to place in common versus
specific areas. I spent hours and hours on the phone with DEC support on
Saturday and Sunday. We would get one node working ok and the other nodes
would break. We finally achieved a happy balance where each node could see
and access all other nodes, the cluster alias would work, and all the
DECservers and SNA gateway could get accessed. OSI looks good - DEC needs to
give much more consideration to the configuration tools used in a clustered

The DECUServe Journal June, 1995 Page 12
OpenVMS V6.2 and DECnet


environment however. It seems to me that instead of placing everything in
SYS$MANAGER that a new SYS$NETWORK (or something) should have been created.
This would very clearly identify the DECnet/OSI "stuff" and keep it out of the
SYS$MANGER area. Anyway...that's my very tired .02 worth!

I did find a couple of pieces of software which do not work under OSI. These
included the print drivers for Talaris printers (a buying decision we mightily
regret!), and TCPware from Process Software. You can't use ethernet frame
type 802.3 under OSI with TCPware - period. To get it to work I have to use
any one of the other framing types and then change my Novell network to use
that framing type. This did not make us happy.

We did have to change to OSI due to our heavy use of WANDD which is now
bundled into OSI and not a separate layered product.

Current Configuration:

Cluster: VAX 4200 with CIQBA+ from MTI
VAX 6610
VAX 7720
uVAX 3100/80 LAVC
MTI StingRay II Disk/Tape Server with approx. 76 GB disk space

Standalone: VAX 4100 for Development

Gobs and gobs of DECservers and a DECnet/SNA ST Gateway.
Infoserver 100

Everything is at OpenVMS V6.1 and DECnet/OSI V6.1.

WHO_AM_I Note 748.17, 9-May-1995
Brooks: Check the manuals!
--------------------------
Wait a minute! Did you try to use the NET$<entity-name>_STARTUP
logicals? It's documented on page 7-4 of the DECnet/OSI V6.0 Network
management manual (AA-Q18UC-TE). Seems to me that this would fit
what you need exactly.

WHO_AM_I Note 748.18, 9-May-1995
Clegg: Training after the fact!
-------------------------------
Nope - didn't see that. Digital decided to drop me from the DECnet/OSI
documentation distribution list. When I made my first OSI upgrade it was
without the printed documentation. I was able to get by with just the
installation guide off the cd - and a lot of talking and planning over the
phone with DEC. By the way - their phone support for OSI has been great!

I do now have the complete OSI doc set and I'm going back over everything and
learning what I should have done differently. Of course I was turned down for
any OSI training before these upgrades :-( - "Wait until DECUS in December

The DECUServe Journal June, 1995 Page 13
OpenVMS V6.2 and DECnet


'95 for your training but upgrade now!" Hmmmmm - what's wrong with this
picture?

WHO_AM_I Note 748.19, 10-May-1995
Turner: Digital has it now
--------------------------
Larry;

Congratulations on your DECnet upgrade! I'm not going to berate you on what
you missed or remind you of what you need to consider. I'm just going to
stand in awe.

I just read yesterday in a DEC release that DECnet V6 was wonderful and gave
a lot of support to V4 users via NCP->NCL translations. Then a CSC guy said,
"Well, sort of."

This week's Digital News and Review extolled the benefits of a DECnet upgrade
but failed to mention the incredible hassles for a VAR facing a client network
of non-upgraded nodes on a WAN.

The problems you faced in .-2 seem to be LAN or cluster related. Thanks for
sharing your hassles and, in some measure, proving that DEC's "seamless
upgrade" promises are a chimera.

WHO_AM_I Note 748.20, 10-May-1995
Bryant: An explanation
----------------------
I did a little digging into this conflict of OSI and TCPware support for
Novell and found a discussion back and forth with Digital on the source
of the problem. Ignoring the comments about Novell not following the
802 spec properly, it turns out that TCPware has been using that frame
type for Novell networks. OSI came along and decided to also use that
protocol for the OSI ES-IS protocol SAP (end system to inter system aka
router). I won't pretend to understand all of this but it boils down
to there can be only one user of the protocol and OSI has now infringed
upon the one being used by Novell. Not much TCPware can do about that.

You have found the correct workaround of using another frame type for
Novell.

As if you hadn't guessed, I work in the TCPware group at Process...


WHO_AM_I Note 748.21, 12-May-1995
Clegg: NetWare 3.11 Drivers
---------------------------
After much discussion with Digital and Process Software I finally understand
what the problem is and how we have to fix it. It does indeed boil down to
the fact that our Novell ethernet drivers were the really, really old ones

The DECUServe Journal June, 1995 Page 14
OpenVMS V6.2 and DECnet


which are not in conformance with the 802 spec. The packets are missing 2
bytes in the header and are 24 bytes short overall (according to DEC). We are
in the process of upgrading the Novell side. There was already a project
underway to move from NetWare 3.11 to NetWare 4.1 - that project will now be
accelerated and in the meantime we'll implement newer drivers under 3.11. My
only real complaint on any of this is that neither Digital nor Process
Software nor even Novell had anything published (that I have seen at least)
which describes this problem. It would be nice to have seen a warning
somewhere in somebody's documentation.

Note 748.22, 12-May-1995
Bryant: Done
------------
The tech writers are making a note of it in the documentation for the
next release.

[We now rejoin the original note stream in the VMS conference. --ed.]


Note 2524.26, 17-May-1995
Bruns: 5.5-2/6.2 mixed version cluster supported?
-------------------------------------------------
OK, I just finished looking through the latest Customer Update posted
to Industry_News, and didn't find a cluster version compatibility table
in the VMS V6.2 announcement.

So does anybody know for sure if I can upgrade my Alpha systems
(currently at 6.1) to 6.2, leave my VAX at 5.5-2, and still be
officially supported in a mixed-version cluster?

Note 2524.27, 17-May-1995
Sivia: DEC supports a mix of V5.5-2 and V6.2
--------------------------------------------
This mixture is ok; I know it works. Off the top of my head I recall
re-reading in the release or installation notes last week at the
symposium that that DEC doesn't call it a "warranted" mixture, but it's
listed as "migration" or something like that.

Note 2524.28, 17-May-1995
Parris:
--------
It appears you will be in good shape. My (pre-release, usual disclaimers
apply) copy of the V6.2 VMScluster Software SPD says:

OpenVMS in a VMScluster configuration is supported according to
the following conditions:

- Warranted support is provided for mixed-architecture

The DECUServe Journal June, 1995 Page 15
OpenVMS V6.2 and DECnet


VMSclusters in which all Alpha and VAX systems are running
OpenVMS Version 6.2

Warranted support means that Digital has fully qualified
the two architectures coexisting in a VMScluster and will
answer any problems identified by customers using these
configurations.

- Migration support is provided for VMSclusters running
OpenVMS Version 6.2 and OpenVMS Versions 1.5 (Alpha), 5.5-2
& 6.0 (VAX), and V6.1 (Alpha & VAX).

Migration support means that Digital has qualified the two
architectures/versions for use together in configurations
that are migrating in a staged fashion to a higher version
of OpenVMS or to Alpha systems. Digital will answer problem
reports submitted about these configurations. However, in
exceptional cases, Digital may recommend that you move your
system to a warranted configuration as part of the solution.

Note that Digital does not support the use of more than two
versions of OpenVMS software in a VMScluster at a time.

Digital recommends that all Alpha and VAX systems in a VMScluster
run the latest version of OpenVMS.


What's that Underscore Do?
==========================

Next on the list, we have three shorter items from the VMS
conference, the first of which concerns that funny underscore that
shows up in front of device names on OpenVMS systems.

Participants: Gus Altobello, John Briggs, Jim Campobello, Arnold De
Larisch, Erik Husby, Don Roberts.


Note 2523.0, 3-May-1995
Campobello: Why leading underscore in device names?
---------------------------------------------------
I'm curious about the leading underscore that shows up on device names.
For example, our system disk is VAX3$DKA200: That is exactly how it
appears when I do "SHOW DEVICE DK".

However consider this:

$ SYSDISK = F$GETDVI("SYS$SYSDEVICE"," FULLDEVNAM ")
$ SH SYM SYSDISK
SYSDISK = "_VAX3$DKA200:"
^
I've experimented with using the device name both ways, and so far they

The DECUServe Journal June, 1995 Page 16
What's that Underscore Do?


seem interchangeable. Is anyone aware of any cases when they are NOT
equivalent? Why does the underscore get put there anyway?

Thanks for any help. (This isn't just idle curiosity -- I'm using F$GETDVI
in a startup procedure and I don't want to create any new problems.)

Note 2523.1, 3-May-1995
Defeats logicals?
-----------------
Well, I haven't checked, but I had thought that defeated using a
logical. If you have a disk, say $1$dua3, there is nothing preventing
you from defining a logical $1$dua3 and pointing to another disk. With
the underscore, you point to the physical device. I don't know if
underscore actually defeats logicals, but that is how it seems to work.
Anyway, if you're in the habit (silly habit) of defining logicals the
same as your physical device names, it certainly can come in handy...

Note 2523.2, 3-May-1995
De Larisch: Leading underscores defeat logical name translation
---------------------------------------------------------------
Yup ... you hit the nail right on the head ...

We've run into applications that hard coded physical device names embedded into
the exe's and needed to move the application ... we used the trick of
redefining the device name to the new location.

If you want to prevent logical name translation use an underscore as the
leading character.

Note 2523.3, 4-May-1995
Campobello: So are the physical names identical?
------------------------------------------------
Okay, so that explains the "why".

Assuming that I don't have any logicals defined to be identical to
physical device names, then is the physical name always equivalent
with and without the logical? As a physical device name only,
is VAX3$DKA200 always equal to _VAX3$DKA200 ?

Note 2523.4, 4-May-1995
Husby: Never make a logical name the same as a physical
-------------------------------------------------------
> Anyway, if you're in the habit (silly habit) of defining logicals the
> same as your physical device names, it certainly can come in handy...

Many years ago, at a VMS Magic and War Stories session, a person

The DECUServe Journal June, 1995 Page 17
What's that Underscore Do?


described their experience using logicals that were the same as
the physical. They had disk problems, so they removed the pack
from drive dba1 and inserted in another drive, dba2. They then
defined the system logical
$ DEFINE/SYSTEM DBA1 DBA2:
And their users went about their work.

Field Service came in, fixed the drive dba1. Inserted a pack in
dba1 and used their formatting software to format DBA1.

Guess what happened to the user's data on the pack that was in
drive DBA2 after VMS did logical name translation on DBA1.


Note 2523.5, 5-May-1995
Campobello: I didn't think what I said I did
--------------------------------------------
I made an error in one important word of my previous post. It should be:

Assuming that I don't have any logicals defined to be identical to
physical device names, then is the physical name always equivalent
with and without the underscore? As a physical device name only,
is VAX3$DKA200 always equal to _VAX3$DKA200 ?

Sorry about any confusion.

Note 2523.6, 8-May-1995
Husby: Underscore halts logical name translation
------------------------------------------------
VAX3$DKA200 is equivalent to _VAX3$DKA200 iff there is no
logical name VAX3$DKA200 defined.

VMS stops logical name translation if the name to be translated
begins with an underscore.

Note 2523.7, 9-May-1995
Briggs: Underscore doesn't prevent translation
----------------------------------------------
I thought I remembered that too. It turns out to be false.

$ DEFINE A _B
$ DEFINE _B XYZ.DAT
$ DIR A
(finds xyz.dat)


The DECUServe Journal June, 1995 Page 18
What's that Underscore Do?


Note 2523.8, 9-May-1995
Altobello: If you define with an "_", I'd expect a translation.
---------------------------------------------------------------
RE: .-1, I suppose if you define a logical "_B" you should expect to be
able to translate it.

The trick works as below (I deleted line-wrapped data for clarity):

=====
![This is the "real" device...]
RDTSC» sho dev/mou $1$dus20:

Device Device Error Volume Free
Name Status Count Label Blocks
$1$DUS20: (HSC001) Mounted 0 SUPPORT 250884

![So now redefine $1$dus20 as something else...]
RDTSC» def $1$dus20 $1$dus6

![See what an unsuspecting user would get...]
RDTSC» sho dev/mou $1$dus20

Device Device Error Volume Free
Name Status Count Label Blocks
$1$DUS6: (HSC000) Mounted 0 SOURCE1 102633
$1$DUS10: (HSC000) Mounted 0 SOURCE2 102744

![Now try it with a preceding underscore...]
RDTSC» sho dev/mou _$1$dus20

Device Device Error Volume Free
Name Status Count Label Blocks
$1$DUS20: (HSC001) Mounted 0 SUPPORT 250884
RDTSC»

=====

Note that after the logical "$1$dus20" is defined, use of "$1$dus20" is
translated, but "_$1$dus20" is not.

How Does OpenVMS Page?
======================

The second VMS tidbit for this issue is best summed up by the title
of the first note: so how does (Open)VMS page, anyway? Extra
bonus: A pretty good list of reference sources.

Participants: John Briggs, Mark Shumaker.



The DECUServe Journal June, 1995 Page 19
How Does OpenVMS Page?


Note 2517.0, 17-Apr-1995
Shumaker: OK, How _does_ VMS page? (Corrected)
----------------------------------------------
As a class assignment, one of our staff is doing some research on VMS.
One of the topics to be covered is how paging is accomplished. I
_thought_ I knew, but the staff member has done some research and found
references to several different schemes:

* Last-Unused-Page for each user (as described very succinctly in the
"Storage Management Crate Game", and what I remember from the VAX/VMS
System Management course several years ago; and in Wayne Sewell's
_Inside VMS_).

* FIFO (Bruce Ellis in _The Hitchhiker's Guide to VMS_).

* Modified FIFO, modifications not specified (Kenah, Goldenberg, Bate,
_VAX/VMS Version 4.4 Internals and Data Structures_).

Can somebody who knows VMS assist me? How is it actually done nowadays
(Version 6), and has it changed at any of the major releases?

Note 2517.1, 18-Apr-1995
Briggs: Page replacement circa 5.2
----------------------------------
The 5.2 IDSM describes the scheme. Essentially, it is "FIFO, but if
the next entry is not a candidate for replacement at this time, stick
it back at the tail of the list with the other recently added pages"
Section 17.3 describes the algorithm. The key trick is that the
hardware translation buffer is used to provide a "recently accessed"
bit.

The working set list is a sparsely populated ring buffer.

New pages are inserted into the working set list at an offset indicated
by PHD$L_WSNEXT. You sequentially scan for a hole starting at that offset.
After insertion, PHD$L_WSNEXT points to the inserted entry.

Old pages are selected for replacement or removal starting at PHD$L_WSNEXT.
If PHD$L_WSNEXT points to a hole, you use that. If it points to a
valid entry, you skip that (such an entry is the one that was most
recently added). You then sequentially scan for a eligible candidates
for page replacement.

An eligible candidate for replacement must not be a page that is part of
the process page table and maps other pages currently in the working
set.

A page that is part of the process page table but which does not map any
pages in the working set may be eligible for replacement depending on some
criteria (does it map a transition page? how badly do we need the space?)

An eligible candidate entry should not be a page that has been recently

The DECUServe Journal June, 1995 Page 20
How Does OpenVMS Page?


accessed. The check is made by testing whether the page is still in
the hardware translation buffer. Special SYSGEN parameter TBSKIPWSL
(default value 8) controls how many working set list entries can be
skipped for this reason.

After page replacement (or removal), PHD$L_WSNEXT points to the newly
refilled (or emptied) entry.

As long as page replacement never skips pages due to the above checks,
you end up with FIFO. Pages that fail one of the above checks and
are not replaced won't be checked again until the scan comes around
again.

Note 2517.2, 18-Apr-1995
Shumaker: Thanks.
-----------------
Thanks, John. I appreciate the rapid response. This might be sufficient
for the present query, but it appears that we need to get a more recent
IDS book. |When will | is| the V6 volume available?

Note 2517.3, 18-Apr-1995
Briggs:
--------
Don't know about the manual.

I do know, however, that the TBSKIPWSL parameter still exists under 6.1.
Even 6.1 on AXP. It seems likely, therefore, that the page replacement
algorithm is unchanged. I sure can't think of any reason to change it.


Q-Bus FDDI Performance
======================

The last of our three short VMS items is actually more of a hardware
topic -- the performance of the DEFQA Q-Bus FDDI adapter.

Participants: Terry Kennedy, Gregg Nelson, Bill Norton, Norman
Raphael, Pat Scopelliti.


Note 2522.0, 1-May-1995
Scopelliti: FDDI on Q-Bus performance
-------------------------------------
Anyone have any experience using the DEFQA Q-Bus FDDI adapter on a VAX
4000 system?

We're looking into clustering a 4600 with a 6630 across an FDDI link
and the thought of shadowing disks across the FDDI/Qbus sort of scares

The DECUServe Journal June, 1995 Page 21
Q-Bus FDDI Performance


us.

Is the thruput a valid concern?

Note 2522.1, 3-May-1995
Raphael: Misery Loves Company
-----------------------------
We too are looking at this (4700A with 6330)
and we have the same concerns!

Note 2522.2, 3-May-1995
Scopelliti: DEC info
--------------------
FWIW... the DEC blurbs claim 15 MB/second or about 2 1/2 an ethernet's
effective speed.

Note 2522.3, 4-May-1995
Nelson: 4700's on Q/Bus FDDI work OK here
-----------------------------------------
We have two 4700A's with Q/Bus FDDI controllers and a Alpha 2100 with
an EISA FDDI controller clustered together on a DEC 500 Concentrator.
The three systems are connected via DSSI to a storage-works cabinet with
about 40 GB of disk. We have just 6 shadow sets at this time.

Performance seemed to improve noticeably when we switched from
ethernet to FDDI.

Once when the systems hung and I had to halt them it took forever to reboot
after the first system started four shadow-set merges. But everything
eventually came back up OK.

Note 2522.4, 4-May-1995
Kennedy: How?
-------------
How do you move 15MB/sec on a Q-bus?

Note 2522.5, 4-May-1995
Scopelliti: That's why I asked!
-------------------------------
Beats me! I guess they meant 15 MBits, not Bytes, but still that seems
like a lot of data movement. The blurb I read mentioned lot's of DMA
optimization, etc. but, yeah, 15mbits is still tough to visualize
through a Q-Bus.


The DECUServe Journal June, 1995 Page 22
Q-Bus FDDI Performance


Note 2522.6, 5-May-1995
Norton: DEC FDDI specs
----------------------
Page 48 of the 1995 DECdirect full-line catalog (code KGY) has a table
listing specs on DEC's FDDI controllers. The DEFQA is rated at 13
MB/sec, where the others are all 96 MB/sec, except for the DEFP series
at ">90Mbits/sec have been measured on Alpha CPUs".

Since FDDI is 100 Mbits/sec, it only makes sense that all these numbers
are in Mbits/sec. If you divide 13Mbits/sec by 8 bits/byte, you get
1.6 Mbytes/sec - sounds a lot like Qbus speed range.


PATHWORKS License Puzzle
========================

In Washington, we were late getting to the session on PATHWORKS
license management. Judging by the number of people in the room, we
concluded that we're not alone in being confused by that particular
topic. Fortunately, on DECUServe, there are people who can help.
This next series of notes is taken from the PATHWORKS conference,
but you may recognize some of the names from the BUSINESS_PRACTICES
conference as well.

Participants: Ta Fuh Chiam, Bruce Gaarder, Lee Gleason, Bill
Mayhew.


Note 824.0, 8-May-1995
Gleason: Need help getting PAthworks ordered...
-----------------------------------------------
I've been tasked to "get Pathworks installed on a VAX and a PC"
right away. Now, it's been a few years since I looked at Pathworks
(last version I saw was 2.2, and that was a couple of product
names ago...).

The confused product reseller that we have, now that we can't
buy from DEC anymore, has quoted a mishmosh of products and licenses,
so I'm looking for help here...

The reseller has specced that we need...

1 QM-OTLAA-AA PW LM CCS W/D CL 1 License

1 QA-OTLAA-H5 PATHWORKS DOS Media & DOC (My PC doesn't have a TK50...)

1 QA-A93AA-H5 Pathworks for VMS Media & DOC (I have condist...do I need
another media & doc for VMS?)

Anyway, if someone could summarize what is needed to network one PC
to one VAX, and comment on whether the resellers recommendations are
anywhere near correct, I'd be darned grateful...I'd be grateful

The DECUServe Journal June, 1995 Page 23
PATHWORKS License Puzzle

Does VMS still include an implicit server license to Pathworks?

Note 824.1, 8-May-1995
Chiam: You got it
-----------------
>1 QM-OTLAA-AA PW LM CCS W/D CL 1 License

This is the client license. PATHWORKS now has both client-based and
server-based licensing scheme. Since you are starting with only one PC,
purchasing this client license is fine.

>1 QA-OTLAA-H5 PATHWORKS DOS Media & DOC (My PC doesn't have a TK50...)

I believe the client media only comes on CD now. IT used to come on
TK50 and then floppy diskettes. So, this should be fine.

>1 QA-A93AA-H5 Pathworks for VMS Media & DOC (I have condist...do I need
> another media & doc for VMS?)

Nope. If you have CONDIST, then you don't need to buy the media and doc
for the server.

> Anyway, if someone could summarize what is needed to network one PC
>to one VAX, and comment on whether the resellers recommendations are
>anywhere near correct, I'd be darned grateful...I'd be grateful

They are pretty accurate except for the last item which you already
have from CONDIST


Note 824.2, 11-May-1995
Gaarder: You do want the docs
-----------------------------
I don't know whether CONDIST has the PW docs. You really should have them,
both client and server.

Note 824.3, 12-May-1995
Mayhew:
--------
> Does VMS still include an implicit server license to Pathworks?

For the record, *VMS* never did. DECnet/VMS at one time included an
implicit server license for PATHWORKS, but that was years ago now.
(See BUSINESS_PRACTICES)


The DECUServe Journal June, 1995 Page 24
PATHWORKS License Puzzle


Note 824.4, 12-May-1995
Gleason:
---------
Ummm...OK, will do...but, while I plow through several years worth
of business practice discussions, that sound like a goat spouting
Greek to me (gimme a program to write over figuring out DEC licensing
any day), do I require some sort of server license on the VAX?

Note 824.5, 12-May-1995
Mayhew:
--------
I defer to Chiam on the current specifics; I think what he told you in
_.1 is accurate. I gave up trying to understand PW licensing when they
introduced V5 :-(

Note 824.6, 12-May-1995
Chiam:
-------
Like I said in .1, PATHWORKS V5 now comes with both server-based and
client-based licensing scheme. You can choose either one, depending on
your needs. If you buy the client-based (CCS) license, then you don't
need a server license.

I believe I posted something in BUSINESS_PRACTICES a while back and it
fully describes what all the licenses are. If I get the time and find
the note I posted, I will post another pointer here.


Note 824.7, 12-May-1995
Chiam: I found it.
------------------
Ok, I searched for the article I posted. Actually, it was not posted in
BUSINESS_PRACTICES but in this very conference. Please see 669.14 and
669.15 in this conference.

In note 397.34 in BUSINESS_PRACTICES, I mentioned that BPSG received a
PATHWORKS Customer Licensing Handbook from Digital and I posted it in

USR_SCRATCH:[CHIAM]LICENSE.PS

I just reposted it there. It is in Postscript format.

Hope all these will answer all your PATHWORKS licensing questions.


The DECUServe Journal June, 1995 Page 25
ALL-IN-1 E-mail Migration


ALL-IN-1 E-mail Migration
=========================

If you were at the recent Washington symposium, you may have noticed
that the ALL-IN-1 folks were present in force. Among the things
they were talking up every chance they got were ALL-IN-1 on Alpha
and TeamLinks. TeamLinks and distributed e-mail clients in general
definitely constitute a trend these days. In some places, though,
TeamLinks may not seem to be a viable option. Often, sad to say,
the reasons for this are ... shall we say "highly non-technical" in
nature.

One person facing just such a problem started the following
discussion in the ALL-IN-1 conference back in April. The resulting
discussion and analysis is worthwhile reading for anyone who is or
might be dealing with e-mail migration issues.

Participants: Bill Bochnik, Steve Bonine, Carl Bonner, Ta Fuh
Chiam, Gene Kent, Lynda Peach, Graham Pye, Dick Rohnert, Ruth
Sullivan, Don Vickers, Ray Whitmer.


Note 1115.0, 10-Apr-1995
Sullivan: ALL-IN-1 to LAN-Based E-Mail
--------------------------------------
I am currently the ALL-IN-1 manager at a site with 23 Vax'es running
ALL-IN-1 3.0A/WordPerfect,supporting over 3000 users.

For political reasons we will be converting to some LAN-based E-mail
system (not Teamlinks) running on Netware over the next couple of years.

Is there anyone else out there who is in the same boat?

Is this where I can find a discussion on E-Mail integration?

I am interested in all aspects of this process...
LAN-Based E mail packages, Conversion/transition from ALL-IN-1,
E-Mail gateways/switches etc.

Thanks in advance for pointing me in the right direction.

Note 1115.1, 11-Apr-1995
Pye: What's wrong with TeamLinks?
---------------------------------
I don't suppose you will take my view seriously (since I work for
Digital :-) ) but I think you are making a mistake not using TeamLinks.

Can you tell me why this is not an option? So we can see what we are
doing wrong...


The DECUServe Journal June, 1995 Page 26
ALL-IN-1 E-mail Migration


Note 1115.2, 11-Apr-1995
Bochnik: Same Here
------------------
We are in a similar situation. For political reasons, we are being
"encouraged" to migrate to MSMail q1 of next year. We do not have a
plan for how to migrate the file cabs as of yet.

Note 1115.3, 11-Apr-1995
Peach: Don't go in blind
------------------------
You would be wise to draw up a chart, not unlike what you see in
various trade magazines. Put all the things that your ALL-IN-1 users
have in Email now. Include things they've said they want and don't
have.

Then go through carefully and list everything things that ALL-IN-1
can/can't do; what Microsoft Mail [or whatever] can and can't do.

Also make the list a WEIGHTED list. In other words, before your users
know whether or not MM can do something, decide the weighted value of
it and ever other value on the chart. It is not for MANAGERS to decide
whether a USER needs something. USERS should be making the decisions
since this system is for them!

Include in your chart another section for managing these systems with
more weighted values.

Users really don't care that they are getting their own copy of every
mail message. All they care about is can I find the blasted thing when
I want it. But managers do when they start thinking about a mail
message going to 250 or 500 people and instead of "1" copy, they have
500!!!!

Not being able to autoforward out of MM is a PIT"B" in my opinion.
This way, you will know what you are getting and what you are giving
up. And management may decide to give TeamLinks another look. If not,
it won't be because they/and you didn't know.

My 2 cents worth...

Note 1115.4, 11-Apr-1995
Bonner: We are
--------------
> Is there anyone else out there who is in the same boat?

We are migrating 14,000 to cc:Mail, using PMDF as the gateway. (We
also use it for x400 and internet gateway-ing.) Feel free to contact me
directly if you'd like to discuss.

To answer Graham's question in .1, we didn't even look at TeamLinks

The DECUServe Journal June, 1995 Page 27
ALL-IN-1 E-mail Migration


because of the Pathworks requirement. If TeamLinks now works with
Netware (I haven't been keeping up) all I can tell Digital is that
they missed the window of opportunity at my company. I can recall being
at DECUS (Atlanta 92) almost begging DEC to include Netware as a
TeamLinks platform. That request got about as far as "please port
Message Router to the Alpha".

Note 1115.5, 11-Apr-1995
Sullivan: No choice but to migrate
----------------------------------
When I said that the decision was political, I meant it.
This decision has nothing to do with technology and everything
to do with market-share and personal bias.

We had a management shake up and the managers who wound up on top seem
to have a bias against anything DEC. All of their experience
is with Netware and that is what they want to see implemented.

I have about 50 Teamlinks users, (who were set up before the corporate
shake up), who have been operating very happily. As the ALL-IN-1 manager
I felt that I had found the perfect client server solution. But when I
demonstrated the product to the new regime, the only question that they
had was, "Does it have to run on a VAX? In fact, our corporate
direction calls for the elimination of the VAX'es over the next
3-5 years.

We are moving from VMS-DECNET-Pathworks to UNIX-TCP/IP-Netware!

I am a former DEC software specialist and I am viewed suspiciously
as a "DEC" person. As absurd as it sounds, it has become
politically incorrect to advocate anything DEC! Believe me,
I gave it a go, but I can't fight any longer....

We have no choice but to migrate our 3000 users to another LAN Based
E-Mail system...

Note 1115.6, 12-Apr-1995
Chiam: Keep going!
------------------
Folks, please keep this thread going. We are in the same boat as
described in .0 too and I would love to hear other people's experience.


Note 1115.7, 12-Apr-1995
Whitmer: MM may not be the only alternative.
--------------------------------------------
> Not being able to autoforward out of MM is a PIT"B" in my opinion.
> This way, you will know what you are getting and what you are giving
> up. And management may decide to give TeamLinks another look. If not,

The DECUServe Journal June, 1995 Page 28
ALL-IN-1 E-mail Migration


> it won't be because they/and you didn't know.

Just a little plug here: With Novell Groupwise, on the other hand,
autoforward is just one of many variations on rules for automatic
processing which can be placed on incoming (or other) messages, items,
schedule requests, etc. You can select qualifying messages by type,
status, content, originator, etc. and have autoforward, autoreply,
delegation, and so on. And with Groupwise running as an NLM, it is
handled on the same server which provides your file services. You can
do cross-platform cross-network busy searches when scheduling, you can
easily see who has read a message, retract messages, etc.

On the one hand, I have a vested interest in Groupwise. On the other
hand, GroupWise is not even in my own business unit, and I would not
recommend it if I did not use it every day and find it better than
anything else I have seen or used on any platform. It was certainly
the most strategic acquisition of the Novell-WordPerfect Merger, and
the one Novell was most excited about.

Note 1115.8, 12-Apr-1995
Peach: Buying a pig in the poke--you get what you pay for
---------------------------------------------------------
Thanks for the info on Groupwise. My point in the previous posting was
to *NOT* make a decision based on someone's bias. [Sorry, Ruth -- it
sounds like you are getting a mess.]

It is, imo, ridiculous in this day and age to make a decision without
doing some checking first. Find out what people *have to have* to
work. Ask questions like, 'if you cannot do thus-and-so' will it cause
you no inconvenience, some inconvenience, a lot of inconvenience, or
stop work.

You'd be surprised at the number of sites that actually implement a
product only to find out that a key application can not work on the
product. And the key application is *REALLY* key -- not just a nice to
have.

There are still management groups out there that seem to think that it
is the Systems group responsibility to make the product(s) they select
do EVERYTHING they want it to -- whether the product is capable of
doing it or not.

Excuse me -- I guess I almost went into flame-mode on this. It is one
of my personal pet peeves.

Note 1115.9, 12-Apr-1995
Rohnert: Stay put if you can
----------------------------
Good point, Lynda. The January "inFORM" magazine (by DEC) contained an article
about ALL-IN-1 3.1 running on an Alpha and how great it is. Of course, Digital

The DECUServe Journal June, 1995 Page 29
ALL-IN-1 E-mail Migration


is not going to print an article that does not put them in a favorable light.

I called this person to see if I could interest him in one of my products.
Well, one thing led to another and the conversation progressed to a discussion
on migrating from ALL-IN-1. He entertained it once and did a an analysis
of what the benefits against the cost in time and money. He said it was
prohibitive and decided to stay put. With his new Alpha and 3.1 he is very glad
he did.

Of course, he didn't have a political situation like this to deal with.

Note 1115.10, 13-Apr-1995
Pye: TCP/IP - OK now!
---------------------
RE .4

Yes, TeamLinks works across TCP/IP now, and PathWorks isn't required.
I'm afraid I don't know enough about the PC end to tell you which
TCP/IP stacks are supported, but I can find out if people want to know.

Re .Others

It appears that 'no-one was ever fired for buying IBM' has been
replaced by MicroSoft. Lest it appears this is sour grapes, let me say
that I think that most of the Apps, Word, Excel, etc., are brilliant,
but as far as scaleable servers are concerned, we've spent fifteen
years getting it wrong ( :-) ) so we think that we know a bit about
large systems!

In the medium term, we hope to be able to satisfy both sides, by being
a *great* server to MS (and other) Mail clients, whilst also offering a
client with some pretty neat features too!


Note 1115.11, 16-Apr-1995
Bonine: Teamlinks support
-------------------------
> Yes, TeamLinks works across TCP/IP now, and PathWorks isn't required.
> I'm afraid I don't know enough about the PC end to tell you which
> TCP/IP stacks are supported, but I can find out if people want to know.

We are running Teamlinks using TCP/IP. Unfortunately, DEC's support of
our non-DEC TCP/IP (Multinet) has been lukewarm, at best. We call with
problems which have little to do with the transport, and they try to
get out of supporting completely when they find out we're not using the
DEC product on VMS. Multinet does work fine, by the way, with
Teamlinks.

> It appears that 'no-one was ever fired for buying IBM' has been
> replaced by MicroSoft. Lest it appears this is sour grapes, let me say
> that I think that most of the Apps, Word, Excel, etc., are brilliant,

The DECUServe Journal June, 1995 Page 30
ALL-IN-1 E-mail Migration


> but as far as scaleable servers are concerned, we've spent fifteen
> years getting it wrong ( :-) ) so we think that we know a bit about
> large systems!

This is all opinion on my part, but I feel that DEC blew a commanding
market-share lead in the office market. By failing to listen to
customers, and by cutting back the development and support resources
for Office, DEC has lost the market.

So, Graham, I disagree with both parts of your statement. DEC had a
good product in ALL-IN-1, but did not keep up with customer
requirements. The initial Teamlinks efforts, with their limited
function, abundant bugs, and proprietary transports, poisoned
customers. Now Teamlinks isn't so bad, but there's poor support.
After begging to pay DEC to help with a Teamlinks API problem (or pay a
consultant that they would recommend) our development people have given
up and decided that this just isn't a viable product. I can't say that
I blame them.

The LAN-based products are pretty pathetic these days, but those
vendors ARE listening to their customers and they ARE pouring resources
into capturing the market that DEC has apparently abandoned. I can't
really blame managers for moving away from DEC considering how DEC is
treating their customers these days.

Note 1115.12, 18-Apr-1995
Pye: I hope, and believe, it's changed now!
-------------------------------------------
I'm sorry you had bad experiences trying to get support. I'm afraid
that I don't see these things here in Engineering. As far as we are
concerned, MultiNet is supported.

Alas, I think you are right about us missing an opportunity. The lack
of investment you refer to meant that several of my friends were fired,
so it's dear to my heart. However, things have changed now, and
TeamLinks and ALL-IN-1 are once again recognised as strategic products
that merit corporate investment and Marketing. I just hope it's not
too late.

I will pass your comments on....


Note 1115.13, 18-Apr-1995
Bochnik: I have IP and TML problems
-----------------------------------
If I have a couple of questions for getting IP to work with Teamlinks
(or is it view versus!) how would I contact you? Do you have an
internet mail address, or should I mail you here?


The DECUServe Journal June, 1995 Page 31
ALL-IN-1 E-mail Migration


Note 1115.14, 19-Apr-1995
Vickers: Post your goals, needs, and problems in the conference
---------------------------------------------------------------
It would be best for you and all concerned if you started a topic in
this conference to describe your situation and needs. There are lot's
of talented folks here and I suspect that someone can help you improve
the situation. More importantly to the community, your question and
its replies will help others.

Note 1115.15, 19-Apr-1995
Kent: What politics?
--------------------
The Answer is:
Lotus Notes
MS Exchange

The question is not relevant, unfortunately.

Note 1115.16, 19-Apr-1995
Sullivan: ALL-IN-1 to Groupwise?
--------------------------------
Does anyone out there have any experience with Groupwise?

I am particularly interested in its ability to interchange messages
with ALL-IN-1.

Note 1115.17, 20-Apr-1995
Whitmer: I have never used it personally, but...
------------------------------------------------
I believe the solution has been provided in a gateway.

Note 1115.18, 11-May-1995
Sullivan: Teamlinks may be staying
----------------------------------
Thanks to all for all your help....

I don't know if anyone is still looking at this thread but here goes...

There is a possibility that we can keep Teamlinks...

It was stated in a previous note that Teamlinks will work with TCP/IP

Do I still need Pathworks?

Can I run Teamlinks using TCP/IP and Netware 4.1????


The DECUServe Journal June, 1995 Page 32
ALL-IN-1 E-mail Migration


Note 1115.19, 11-May-1995
Vickers: TeamLinks is able to handle really cheap stacks
--------------------------------------------------------
We run TeamLinks very happily using the TCP/IP 32 from Microsoft under
Windows for Workgroups and UCX under OpenVMS. It works like a charm.

I hope you will be able to do what is best for your clients.

Note 1115.20, 11-May-1995
Vickers: How to get a cheap TCP stack for WfW
---------------------------------------------
I just received a mail message from someone asking about whether
TCP/IP-32 was really cheap. Just in case there is someone else out
there wondering, it is free and available via FTP as described in this
extract from the TCP/IP FAQ:

A-11. Where can I get Microsoft TCP/IP-32?

Microsoft has now released a 32-bit TCP/IP stack for
Windows for Workgroups v3.11. It's easy to set up,
fast, and has worked fine for me. It supports a host of very
nice new features, including DHCP automatic configuration, WINS
name resolution, and Windows Sockets v1.1. In addition it comes
with Telnet and FTP applications. However, please note that
it does not offer SLIP or PPP support.
The final release is now available via:
ftp://ftp.microsoft.com/PerOpSys/WFW/tcpip/tcpip32.exe

Confounded by Segmented Keys
============================

The topic of the following series from the ALL-IN-1 conference is
how to use segmented keys. It seems to us (in our limited
understanding) that much of the discussion is not really specific to
ALL-IN-1, but of more general interest to anyone who has to deal
with RMS database applications. (In other words, don't let the
conference title scare you away!)

Participants: Bruce Bowler, Roger Bruner, Mike Lampson, Don
Vickers.


Note 1098.0, 7-Feb-1995
Bruner: Segmented/Compounded/Confounded Key Problem
---------------------------------------------------
Believe it or not, I never REALLY needed to use segmented keys before.
I always faked it by combining all the values I wanted in the key into
a single field, and that had done the trick till now.


The DECUServe Journal June, 1995 Page 33
Confounded by Segmented Keys


I created the fdl, the entry form, and the file. The file really
contains only the two keys (I want to use this file as a quick lookup
of material stored in another file).

Much of what has resulted seems right.

I recognize the need to write to both keys when adding:

WRITE ADD RECM$RSBI$KEYWORDS CONTENT=#XXX, KEYWORD=#YYY

but the problem comes when I want to match other values against that.

If I specify #KEY of "1555000003001bane" (12x of content, up to 30x of
keyword) and attempt to

GET RECM$RSBI$KEYWORDS.%KEY[#KEY]

to verify that #KEY exists, it fails. Doing a

GET RECM$RSBI$KEYWORDS.%KEY[#KEY]

shows me something like

155500000300115550000030011555000003001

I have tried a number of variations -- all to no avail.

Is there some special trick to this, or did I mess up in creating the
form and/or file?

Note 1098.1, 7-Feb-1995
Vickers: A couple of weak suggestions & questions
-------------------------------------------------
Isn't always interesting how 'opportunities' seem to run in groupings?
We've had two back to back questions on multiple key operations. Not
that it matters, of course.

It sounds like you might not have told ALL-IN-1 to use both CONTENT and
KEYWORD as key fields. Did you have /KEY=CONTENT,KEYWORD in the .TYPE
directive?

The FDL must match field names as I mentioned in 1097.1. I am sure you
have done that but it's worth repeating (mostly).

You may wish to try a few variations of a FOR loop through the dataset
to see what ALL-IN-1 is 'seeing':

FOR RECM$RSBI$KEYWORDS DO GET .%KEY " | " .CONTENT " | " .KEYWORD

Posting the FDL and the named data for your entry form might be of
help, too.


The DECUServe Journal June, 1995 Page 34
Confounded by Segmented Keys


Note 1098.2, 8-Feb-1995
Bruner: Two non-unique keys > Unique?
-------------------------------------
Don, despite your best efforts some months back, I still have not
caught on to using Kermit (you might say I'm a little GREEN at it), so
moving FDL and Named Data is not quite so simple.

But let me ask this. I need to be able to have duplicate primary and
secondary keys, but with the combination being unique. Is this doable
with what we have been discussing?

BTW, I finally got my hands on a VMS book with FDL in it. It's no
wonder I preferred posting this note to attempting it by myself!


Note 1098.3, 8-Feb-1995
Bowler: I'm not Don...
----------------------
Sometimes my mind is even simpler than Don's (that's a complement :-)

If I were to be faced with that requirement, I'd probable make the
combined key primary, and make each of the "sub keys" a secondary key.

Note 1098.4, 8-Feb-1995
Vickers: I am don and I typed a lot in this one (';
---------------------------------------------------
Thanks for the complement, Mr. B. They and you are always appreciated.

I believe I can give the other Mr. B (also known to his 'sort of'
friends as Rog) an even more simple approach to creating the dataset he
wishes. As it turns out, I have a dataset in an application that is
virtually identical to what I believe Roger wishes.

The dataset in question is part of an application to track Material
Safety Data Sheet (MSDS) documents. The dataset, MSDS$CAS$POINTERS,
matches CAS Codes (Bruce probably knows the proper meaning of CAS - I
forgot) against Material Codes and has three fields in the dataset:

MATERIAL_CODE 7 bytes segment 0 of KEY 0
CAS_CODE 10 bytes segment 1 of KEY 0
CHEMICAL_NAME 60 bytes

This dataset allows for any number of duplications of MATERIAL_CODE and
CAS_CODE values but each combination must be unique.

I will post the named data and FDL file at the end of this note but
first will give you my personal approach to creating a multi-keyed
dataset in ALL-IN-1. I am very lazy and don't type well so I take as
many shortcuts as possible. I make the computer do more of the work so
I can do as little as possible.


The DECUServe Journal June, 1995 Page 35
Confounded by Segmented Keys


1. Create the ENTRY form in CM inserting all the fields but having only
the first field in the segmented key being in the /KEY and .FILE.
2. Create the data file for the dataset using the CFI option in CM.
3. Execute the form and use CTRL/V to see field details and note the
position and length of additional fields to be added to the key.
4. Unlock the data file using the DUMP_CACHE function.
5. Create an FDL for the file using:

$ ANAL/RMS/OUT=your_favorite_temporary_name/FDL file_name.DAT

6. Create the FDL element in CM using the your_favorite_temporary_name.FDL
created above as the basis for the element. Edit the KEY 0 section
to add additional segments or create additional KEY entries if
required.
7. Edit the named data for the ENTRY form to add the fields added as
segments to KEY 0 to the /KEY qualifier and change the second
parameter of the .FILE directive to be the FDL (using
OA$SITE_DEV_mumble as the directory, unless you want to move the FDL
live now)
8. Use CFI to create the file using the segmented keys.
9. Use the new dataset in good health.

While this is a fair number of steps, it's really quite fast and
painless unless you make dumb typos in the FDL (like I usually do ;').

Below is the named data of the MSDS$CAS$POINTERS dataset which has the
code mentioned above as well as showing how to make a segmented key
dataset friendly to a client using it.

;;.TYPE;;

ENTRY/KEY=MATERIAL_CODE,CAS_CODE

;;.FILE;;

OA$DATA:MSDS$CAS$POINTERS.DAT,OA$SITE_DEV_ENGLISH:MSDS$CAS$POINTERS.FDL

;;MATERIAL_CODE;;

/recog=MSDS$CAS$POINTERS.MATERIAL_CODE/unique

;;CAS_CODE;;

/RSE_RECOG=MSDS$CAS$POINTERS.CAS_CODE WITH .MATERIAL_CODE EQS MATERIAL_CODE
/show='.CAS_CODE:10 "( " .MATERIAL_CODE:7 " ) " .CHEMICAL_NAME'

Here is the FDL which was created automagically, mostly:

IDENT " 7-FEB-1995 21:01:59 VAX/VMS ANALYZE/RMS_FILE Utility"

SYSTEM
SOURCE VAX/VMS

FILE

The DECUServe Journal June, 1995 Page 36
Confounded by Segmented Keys


ALLOCATION 3
BEST_TRY_CONTIGUOUS no
BUCKET_SIZE 2
CLUSTER_SIZE 3
CONTIGUOUS no
EXTENSION 0
FILE_MONITORING no
GLOBAL_BUFFER_COUNT 0
NAME "OA$DATA:MSDS$CAS$POINTERS.DAT"
ORGANIZATION indexed
OWNER OA$MANAPP
PROTECTION (system:RWED, owner:RWED, group:RE, world:RE)

RECORD
BLOCK_SPAN yes
CARRIAGE_CONTROL none
FORMAT fixed
SIZE 87

AREA 0
ALLOCATION 3
BUCKET_SIZE 2
EXTENSION 0

KEY 0
CHANGES no
DATA_KEY_COMPRESSION yes
DATA_RECORD_COMPRESSION yes
DATA_AREA 0
DATA_FILL 100
DUPLICATES no
INDEX_AREA 0
INDEX_COMPRESSION yes
INDEX_FILL 100
LEVEL1_INDEX_AREA 0
NAME ""
NULL_KEY no
PROLOG 3
SEG0_LENGTH 7
SEG0_POSITION 0
SEG1_LENGTH 10
SEG1_POSITION 7
TYPE string

Note 1098.5, 8-Feb-1995
Lampson: more info would help
-----------------------------
Yes, Bruce is correct. To look up things easily in ALL-IN-1, keys
need to be unique (no duplicates). I too suggest making the
primary key a combination and then make a secondary key out of the
second half of the primary key. You don't need a secondary key on
the first part of the primary since you can do lookups as

The DECUServe Journal June, 1995 Page 37
Confounded by Segmented Keys



FOR DATASET WITH .%KEY = #PARTIALKEYVALUE

(single equal sign means BEGINNING WITH, double equal signs
mean EQUAL.)

Note that if a key is not unique, you cannot guarantee which
record you'll get with a Data set reference:

GET DATASET.FIELD[#KEY], where #KEY is a non-unique primary key

BTW, if you can't Kermit code fragments, you could retype the
important sections. The parts which would help me understand are:

1) the .TYPE and .FILE sections of Named Data
2) the KEY sections of the .FDL, specifically CHANGES,
DUPLICATES, NAME, SEG positions and lengths and TYPE
3) the field layout seen by doing a Ctrl-V while the
Entry form is on the screen. Specifically, the field names,
positions and lengths (not row and column).


Note 1098.6, 8-Feb-1995
Lampson: notes collision...
---------------------------
I, of course, ended up typing my note as the same time as Don.
Notes always seems to work out that way.


Note 1098.7, 8-Feb-1995
Bowler: More thoughts
---------------------
> primary key a combination and then make a secondary key out of the
> second half of the primary key. You don't need a secondary key on
> the first part of the primary since you can do lookups as
>
> FOR DATASET WITH .%KEY = #PARTIALKEYVALUE

That works only if #PARTIALKEYVALUE is as long as the first part of the
combined key. For completeness, the for should be

for dataset with .%key = #partialvkeyvalue:6

assuming the first have is 6 char's long...

My memory fails on what CAS stands for...


The DECUServe Journal June, 1995 Page 38
Confounded by Segmented Keys


Note 1098.8, 8-Feb-1995
Bruner: Answers to be digested...report back later!
---------------------------------------------------
As always, you've given me a bunch of stuff to digest (even more thanks
than usual!)...will get back to you as soon as I can check it out. But
it sure looks like you've given me what I need!


Note 1098.9, 8-Feb-1995
Bruner: Getting clearer...
--------------------------
Guys, I can't tell you how much you helped!

I think the main problem was that I really did not understand what a
segmented key really is! I'm glad I didn't post my FDL or Named Data;
I can admit to my ignorance without having to go into THAT much detail!

Don, I followed your steps (and you're right; it does go quickly). I
currently have a batch job loading the KEYWORDS in, so in the morning
when I try indexing by one segment or the other, I'll have more of a
feel for whether I accomplished what I wanted to accomplish.

But, since my ignorance and innocence was so extensive, let me just get
you to verify my current comprehension:

A segmented key is really just one key that is referenced by 2 or more
parts (sub-keys, as it were). However, by using the FDL cleverly, the
one key can be made to include two actual individual keys, and those
two keys can then be referenced as segments of the whole key. Am I
correct thus far?

And, probably most important, do the two (or more) segments have
indexes (okay, indices) built as well as there being one for the whole
key? I am supposing YES, but I'll ask you to tell me one way or the
other.

Suffice it to say that somehow I was confusing segmented keys with
multiple keys (and I can see how they could be [but wouldn't have to
be] related) and thinking (perhaps) the two terms were interchangable
or -- I don't know what I was thinking!

Often the documentation assumes the User to know what he/she is wanting
to do when giving instructions on how to do it. Thank goodness there
are friends on DECUServe who can pick up the pieces and
re-direct/reconstruct them!


Note 1098.10, 8-Feb-1995
Vickers: Give that man a cupie doll
-----------------------------------
> A segmented key is really just one key that is referenced by 2 or more
> parts (sub-keys, as it were). However, by using the FDL cleverly, the

The DECUServe Journal June, 1995 Page 39
Confounded by Segmented Keys


> one key can be made to include two actual individual keys, and those
> two keys can then be referenced as segments of the whole key. Am I
> correct thus far?

You are correct!!

It is important to bear in mind that when you use 'keys' in the above
statement, you are referring to the fields in the /KEY qualifier in the
_.FORM directive. These should correspond to the segments of KEY0 in
the FDL in the manner that best meets your needs. As far as RMS is
concerned, you will have a single key ISAM file. It's easy and
moderately efficient.

ALL-IN-1 is more than happy to support a wide variety of key
structures. You can have a very complicated key structures if you wish
but it doesn't seem that your current business needs warrant more than
the single segmented key.

Note 1098.11, 9-Feb-1995
Bruner: Wow...thanks...what Mike said...more
--------------------------------------------
Great! Thanks, Don. Now I think we're talking the same language...

Going back to what Mike had said (I believe) about specifying a
secondary key in the FDL that actually includes my second field (second
half of primary key): what is the benefit of that?

Perhaps I should explain that what I am trying to do is this:

The User specifies up to three (key)words that he/she is looking for in
the contents of boxes. A1 looks in the keywords file for all records
matching the first word, notes the content number, and verifies that
the same content either contains the other two words (or that they are
null); so, for search purposes initially, the KEYWORD index is most
crucial. But then the search is on the whole key (existence).

Would Mike's suggestion do anything for me? Should I have made my key
KEYWORD & then CONTENT id?

This has been an interesting challenge, as I think you can tell. I
omitted telling you the part about how after determining which contents
meet the keywords criteria, A1 then has to evaluate whether the same
contents meet BOX criteria!


Note 1098.12, 9-Feb-1995
Lampson: don't think you need it
--------------------------------
Since you are looking up only by keyword, only one key is
necessary. However, if you also want to query "Find all KEYWORDS
associated with CONTENT_ID", then you could have a secondary

The DECUServe Journal June, 1995 Page 40
Confounded by Segmented Keys


key on CONTENT_ID. Then you could do:

FOR DATASET:CONTENTS WITH .CONTENT_ID == #ID

where DATASET is your data set name (KEYWORD?),
and CONTENTS is the name of KEY 1 in the FDL file,
and CONTENT_ID is the Entry form field name which overlays
(exactly) the location of CONTENTS


Note 1098.13, 9-Feb-1995
Vickers: Depends on access and data - more details
--------------------------------------------------
I suspect that I am missing something. I certainly do not claim to be the
brightest person around but I do TRY to understand. (':

Adding additional keys to the file can help in making the access more
efficient and responsive, IF you need access via that field. Adding
alternate keys is easy by editing the FDL and then using the CONVERT DCL
command to change the file.

> Should I have made my key KEYWORD & then CONTENT id?

Based on my understanding of your application, it may be that you will get
more crisp response by adding alternate key(s). Especially since it
sounds like you have a significant amount of data in this file, alternate
keys may be valuable.

You need the primary key to be unique so you'll want the segmented key as
we have discussed. You can create other (alternate) keys which can be
used to go directly to records based on those field values. The decision
about whether to add alternate keys depends on your how you will process
the dataset.

It sounds like your clients will enter just the KEYWORD value(s) of
interest and the CONTENT field is used to cross reference against the
entered KEYWORD value(s). Based on this understanding, having CONTENT as
an alternate key will provide you with a fast means to find all occurrences
of a given CONTENT value.

The approach I would suggest would be to create KEY 1 given a name of
CONTENT and having the same position and length as CONTENT. I don't
understand why a different name was used in .12. I prefer to keep the
names the same so my simple mind doesn't get more confused.

The actual code and file design depends on the mixture of your data and
how the clients will enter the KEYWORD values. If the client will enter
the entire KEYWORD value then creating an alternate key for it might be of
value as well.


The DECUServe Journal June, 1995 Page 41
Confounded by Segmented Keys


Note 1098.14, 10-Feb-1995
Bruner: For clarification: from scratch
----------------------------------------
As often happens, I need to digest your response off-line, Don, but I
do think there must be something I have omitted, referenced awkwardly,
etc., and there does seem to be some confusion.

Let me start from scratch, and then maybe you or someone else can
respond in terms of what I am trying to say rather than in terms of
what I have previously tried to say. How's that?

Okay. The client wants to find what is in specific boxes. However,
there is a hierarchy like this:

BOX (9x) contains CONTENTS (up to 1000), which may be
folders, museum items, videos, diskettes, etc.;
BOX is actually numerical, with the first 3x
identifying the BOX location and the last 6x being
sequential within that location

CONTENT (12x) [first 9x = BOX; last 3x = sequence within BOX]
contains two lines of description in CONTENTS file

DESC (15x) [first 9x = BOX; next 3x = CONTENT sequence; last
3x = sequence]
contains supplemental description of a CONTENT at
one line per record

The Records Center builds KEYWORDS based on every word in CONTENT &
DESC that is not what in BASISplus would be called STOPWORDS -- common
words and characters which should not be used for indexing (and, or,
but, for, nor, etc.).

The User specifies up to three KEYWORDS [plus possibly BOX criteria as
well] for an index to look up box CONTENTS. There may be one or
more from a single BOX or they may be spread out from many boxes.

The procedure in use at the moment does a FOR LOOP on KEYWORDS matching
the first Client-specified KEYWORD; let's say "PAYMENT". So it finds
every CONTENT (remember CONTENT is numerical) beginning with "PAYMENT";
as it does, ALL-IN-1 says (?), "Okay, here is "155000033PAYMENT". Are
there more KEYWORDS specified by the Client? If not, this is a
definite match. "

[The Clients are urged, by the way, to specify KEYWORDS in descending
order of likelihood of popularity. For example, "BRUNER" and then
"ROGER", because there are likely to be far fewer BRUNERs that ROGERs
in the KEYWORD file, so there are far fewer cross-checks to make (see
below).]

However, let's say the Client has also entered "VOUCHER" and "1980" as
KEYWORD search criteria. So within the FOR loop, ALL-IN-1 also says,
"If this CONTENT matches all criteria, there must also be a
"155000033VOUCHER" and a "1550000331980". Let's look those two up by

The DECUServe Journal June, 1995 Page 42
Confounded by Segmented Keys


key and see."

The actual production version of this references an indexed file which
has one key that has 30x of KEYWORD followed by the 12x of CONTENT
(number); it is not segmented. With slightly under 200,000 KEYWORD
records in the file so far, it takes only about 5 seconds (on a clear
day) to find the desired results, even cross-referencing by BOX
criteria (ALL-IN-1: "This CONTENT matches, but let's check the BOX
whose number is the first 9x of this CONTENT. Does the SERIES or
OFFREC or whatever match what the Client has specified?").

However, and this is where this whole thing started getting complicated
(well, actually, it took some standing on my head and gargling with
peanut butter to get this far), there are instances where I do need to
look up KEYWORDS by CONTENT (number). So the procedure that creates
KEYWORDS creates a CONTENT (12x) KEYWORD (30x) record in one file and a
KEYWORD (30x) CONTENT (12x) in another, and I use whichever one I need.

Obviously, this has potential problems: eating up diskspace for
duplicate material, keeping the two KEYWORD files in sync, and twice
the time for the Records Center in creating KEYWORDs from the CONTENTS
& DESC files among others.

I think you can see why I started thinking SEGMENTED or SECONDARY, even
if I did get side-tracked by misunderstanding the terminology. I just
wanted to end up with one file containing records with two values:

CONTENT (number)
KEYWORD (actual word found in description)

and be able to do the most efficient lookups of

o whole key
o content (numbers) using specified KEYWORD
o KEYWORDS for specified content (number)

I apologize if I have oversimplified this (or described it into the
ground), but maybe this will make it easier to respond to.

BTW, Mike, you had mentioned keying in info that I couldn't KERMIT. I
think I had some sense of false economy about the long distance bill as
compared with the value of getting this solved. Should it come down to
that, I will be more than happy to comply. After all, you are all
trying very hard to help. Your time is at least as valuable (and I'm
sure more so) than my phone bill!


Note 1098.15, 10-Feb-1995
Vickers: Here's code and an FDL
-------------------------------
It sounds like you will benefit from having a segmented primary key and
have at least one alternate key and you may want to go whole piggie and
make both CONTENT and KEYWORD as alternate keys.

The DECUServe Journal June, 1995 Page 43
Confounded by Segmented Keys

Based on what I believe I understand of the application, you need to access
the dataset via the KEYWORD key as well as the primary key. The code
would be something like the code shown below for a form called
PEANUT_BUTTER. This form contains three fields called KEYWORD_1 through
KEYWORD_3 where these must match the KEYWORD values in the master index,
called ROGER.

The POST function scans the ROGER index to determine if the values entered
are found, if entered. I believe this does what you want.

This requires only that you setup KEYWORD as an alternate key in addition
to the segmented key. I am attaching an FDL to the end of this note that
does both KEYWORD and CONTENT just for kicks.


;;.TYPE;;

ARG/POST='XOP "~~POST_FORM~~"'

;;~~POST_FORM~~;;

GET #FOUND = 0\
IFEXIT\
FOR FIRST ROGER:KEYWORD WITH .KEYWORD EQS KEYWORD_1 DO
GET #KEY_1 = .KEYWORD:12 .CONTENT\
.FX
GET #CONTENT = ROGER.CONTENT[#KEY_1]\\
GET #KEY_2 = KEYWORD_2:12 #CONTENT \\
GET #KEY_3 = KEYWORD_3:12 #CONTENT \\
.IF ((KEYWORD_2 NES "" AND ROGER.%KEY[#KEY_2] NES "") OR KEYWORD_2 EQS "") AND
((KEYWORD_3 NES "" AND ROGER.%KEY[#KEY_3] NES "") OR KEYWORD_3 EQS "")
THEN
GET #FOUND = 1\\
GET OA$STATUS = #FOUND\\
IFNOTSTATUS\\
GET #KEY_1 = ROGER.%NEXT[#KEY_1]\\
.IF #KEY_1:12 NES KEYWORD_1
THEN
GET OA$STATUS = 0
ELSE
GET OA$STATUS = 1\\
IFSTATUS\\
REPEAT\
_.IF #FOUND NE 1
THEN
DISPLAY ("No match found")\\
FORM PEANUT_BUTTER

;;KEYWORD_1;;

/get=#KEYWORD_1
/PUt=#KEYWORD_1
/recog=ROGER:KEYWORD.KEYWORD/unique/SHOW=CONTENT

The DECUServe Journal June, 1995 Page 44
Confounded by Segmented Keys


/VALID=ROGER:KEYWORD.KEYWORD

;;KEYWORD_2;;

/get=#KEYWORD_2
/PUt=#KEYWORD_2
/recog=ROGER:KEYWORD.KEYWORD/unique/SHOW=CONTENT
/VALID=ROGER:KEYWORD.KEYWORD/OPTIONAL

;;KEYWORD_3;;

/get=#KEYWORD_3
/PUt=#KEYWORD_3
/recog=ROGER:KEYWORD.KEYWORD/unique/SHOW=CONTENT
/VALID=ROGER:KEYWORD.KEYWORD/OPTIONAL

IDENT " 9-FEB-1995 13:46:41 VAX/VMS ANALYZE/RMS_FILE Utility"

SYSTEM
SOURCE VAX/VMS

FILE
ALLOCATION 3
BEST_TRY_CONTIGUOUS no
BUCKET_SIZE 2
CLUSTER_SIZE 3
CONTIGUOUS no
EXTENSION 0
FILE_MONITORING no
GLOBAL_BUFFER_COUNT 0
NAME "OA$DATA:ROGER.DAT"
ORGANIZATION indexed
OWNER OA$MANAPP
PROTECTION (system:RWED, owner:RWED, group:RE, world:RE)

RECORD
BLOCK_SPAN yes
CARRIAGE_CONTROL none
FORMAT fixed
SIZE 42

AREA 0
ALLOCATION 3
BUCKET_SIZE 2
EXTENSION 0

AREA 1
ALLOCATION 3
BUCKET_SIZE 2
EXTENSION 0

AREA 2
ALLOCATION 3
BUCKET_SIZE 2

The DECUServe Journal June, 1995 Page 45
Confounded by Segmented Keys


EXTENSION 0

KEY 0
CHANGES no
DATA_KEY_COMPRESSION yes
DATA_RECORD_COMPRESSION yes
DATA_AREA 0
DATA_FILL 100
DUPLICATES no
INDEX_AREA 0
INDEX_COMPRESSION yes
INDEX_FILL 100
LEVEL1_INDEX_AREA 0
NAME ""
NULL_KEY no
PROLOG 3
SEG0_LENGTH 12
SEG0_POSITION 0
SEG1_LENGTH 30
SEG1_POSITION 12
TYPE string

KEY 1
CHANGES YES
DATA_KEY_COMPRESSION yes
DATA_RECORD_COMPRESSION yes
DATA_AREA 0
DATA_FILL 100
DUPLICATES YES
INDEX_AREA 1
INDEX_COMPRESSION yes
INDEX_FILL 100
LEVEL1_INDEX_AREA 0
NAME "KEYWORD"
NULL_KEY no
PROLOG 3
SEG0_LENGTH 12
SEG0_POSITION 0
TYPE string

KEY 2
CHANGES YES
DATA_KEY_COMPRESSION yes
DATA_RECORD_COMPRESSION yes
DATA_AREA 0
DATA_FILL 100
DUPLICATES YES
INDEX_AREA 1
INDEX_COMPRESSION yes
INDEX_FILL 100
LEVEL1_INDEX_AREA 0
NAME "CONTENT"
NULL_KEY no
PROLOG 3

The DECUServe Journal June, 1995 Page 46
Confounded by Segmented Keys


SEG0_LENGTH 30
SEG0_POSITION 12
TYPE string


Note 1098.16, 10-Feb-1995
Bruner: On the head directly from yours!
----------------------------------------
I knew I could count on you, Don, once I made myself clear(er)! But
when do have time to do the job that pays you? Seriously, you take
helping us on DECUServe so seriously that it does take a bunch of time,
I know, and I really don't know how to thank you for going the extra
mile time after time after time. I can hardly wait to sit down and
start playing with the code you included!

Limiting ALL-IN-1 Access
========================

Next from the ALL-IN-1 conference, consider this discussion of how
to restrict a particular user's access to certain facilities. In a
feature-rich environment, this is what they call "challenging...."

Participants: Bill Bochnik, Roger Bruner, Mike Lampson, Graham Pye.


Note 1113.0, 30-Mar-1995
Bochnik: Limit to wp/em apps
----------------------------
Any hints where to look for guidance on how to lock a specific user
into only wp and em? I've thought about customized versions in a
personal / separate flb, but I was wondering about any other
suggestions. Thanks.

Note 1113.1, 30-Mar-1995
Lampson: Your way might be easier to track/control
--------------------------------------------------
This is another option, but is not necessarily better or easier,
just another way of doing this.

If the user does not have command privilege, you could also change
the definitions for the various subsystems on form DEFAULT.

Use a User Flag, or on V3.1, a customer-reserved field. For
example:

;;OA$_MO_TIME_MANAGEMENT;;


The DECUServe Journal June, 1995 Page 47
Limiting ALL-IN-1 Access


.IF OA$PROFIL_UFLAG8 EQS "1" THEN
DISPLAY("You do not have privilege to use Time Management.")
ELSE
XOP "~~REAL_TM_OPTION~~"
---

REAL_TM_OPTION points to the original TM option code. You would
also have to make this definition for each menu name you want to
protect. For example, an unprivileged user could type TMMENU
instead of TM, so you would want to protect TMMENU also.


Note 1113.2, 31-Mar-1995
Pye: If they're smart, this is hard!
------------------------------------
It all depends on how clever they are. You might need to stop them
calling the 'undesired' forms directly by name, which would mean a
definition for them all in DEFAULT for that user. And of course, you
must do all the usual no PRVCMD, DCL, etc...

In V3.1, perhaps the right personal licence might do it? Core Services
would prevent access to TM and various other bits.

Why do you want to stop them anyway?


Note 1113.3, 31-Mar-1995
Bochnik: Management
-------------------
Management is bringing in a consultant to do some work, and they are
afraid he might gain access to other information (I know, I tried to
tell them not to give him Allin1 if that were the case, but that got me
far...)

Note 1113.4, 31-Mar-1995
Bruner: A really captive '/CAPTIVE'
-----------------------------------
We have explored the same type of thing, and I believe what we had
tentatively come up with was a specialized WP form (with a specialized
name, of course) that was /CAPTIVE, and we put that form name in that
User's PROFIL for initial menu. Seems like we might also have defined
every known key (that might "go somewhere") under the sun on that form
to simply log out. Don't know that we ever really implemented this,
but that was the direction we were going.


The DECUServe Journal June, 1995 Page 48
Limiting ALL-IN-1 Access


Note 1113.5, 4-Apr-1995
Pye: Use OVERQUOTA as template?
-------------------------------
Do what .-1 suggests, basing your form on the OVERQUOTA form which has
most of the escape holes blocked!

You could also restrict his access to other application data by suitable
VMS protections - or lack of IDENTIFIERs.

MAKE_FILE_NAME in ALL-IN-1
==========================

Our final stop in the ALL-IN-1 conference for this issue is a
discussion of building a VMS filename within an application -- one
of those deceptively simple-sounding tasks. ALL-IN-1 programmers on
Alpha systems might want to take careful note of 1112.7.

Participants: Lynda Peach, Graham Pye, Don Vickers.


Note 1112.0, 28-Mar-1995
Peach: Make_file_name isn't getting enough characters
-----------------------------------------------------
Is there a way to take a title of a document and create a VMS file
(extension .TXT) with the *entire* title substituting _ for " ".

MAKE_FILE_NAME seems perfect except it only takes the first 30
characters according to the documentation I've read.

As you know ALL-IN-1 lets us have nice long titles -- and for the
application I'm writing, I must grab *all* the characters. I
understand that some characters such as an ' will have to be ignored or
given a _.

The ultimate goal is have the script go through each drawer of an
account and take the contents of a drawer and copy it to a specific
location turning the folder and title into a file name.

Folder: EMAIL
Title: How to Send an Internet Message

becomes:

EMAIL-HOW_TO_SEND_AN_INTERNET_MESSAGE.TXT



The DECUServe Journal June, 1995 Page 49
MAKE_FILE_NAME in ALL-IN-1


Note 1112.1, 28-Mar-1995
Vickers: Simple code to get all 39 characters
---------------------------------------------
If you really want to get all 39 characters that OpenVMS supports then
you can write a really easy section of code that parses the title using
the lexical symbols.

The two most useful for adding the 9 additional possible characters
are FN$NON_MEMBER and FN$EXTRACT.

Note 1112.2, 6-Apr-1995
Peach: "Simple is as simple does" F.G.
---------------------------------------
Thanks Don for the point in the right direction. Not only do I need
the other 9 characters [or as many as user can put into a title], but I
also have to strip out or substitute any character that could not be a
VMS file name. Spaces become underscores. * are probably removed
entirely.

In addition the file name must have the foldername first.

This may be easy for you -- but... at least I'm not bored.

In doing an in-depth look at ALL-IN-1's on code, I was reminded to look
for folder WASTEBASKET and _not_ transfer/create a VMS file for
documents in that folder.

And if the document has been entered with no title, then a generic
title will have to be created, even if it is no more than
THIS_BULLETIN_DOES_NOT_HAVE_A_TITLE.TXT.


Note 1112.3, 7-Apr-1995
Pye: OA$WASTEBASKET is better than a literal...
-----------------------------------------------
And to be I18N correct, don't look for 'WASTEBASKET', look for
OA$WASTEBASKET, which will always have the wastebasket name of the
current drawer...


Note 1112.4, 24-May-1995
Peach: Accessing Mnemonic Path Info ????
----------------------------------------
This project is now under high-steam. The solution to the "replace
invalid characters" turned out to be a WHILE loop and
FN$FIND_TOKEN(FN$EXTRACT......

Now here is the next hurdle which I hope someone can help with:

1) What is being transferred is our "Eglin bulletins" which are stored

The DECUServe Journal June, 1995 Page 50
MAKE_FILE_NAME in ALL-IN-1


in either WPS-PLUS or EDT down to a VMSfile name. Bulletins are kept
in a [BULLACCT] drawer, one drawer for each "bulletin" identity.

2) The bulletins are called from a menu. The menu options may
actually show an index of the bulletin drawer or it may call yet
another menu where various options display different bulletin drawer
index.

3) The ASCII files which are being transferred must be placed in VMS
in such a way that the directory path is the same as the options that
would be called from the main bulletin menu.

For example: The PERDIEM bulletin is found like this:

Main Bull.Menu
Option TRV------> Travel Menu
Option TPD-------> Index of [BULLACCT]PERDIEM
drawer
Folder Title

File breakdown would be:

disk:[bullmain.trv.tpd.<folder>]
title_would_be_file_name
disk:[bullmain.trv.tpd.<different-folder>]
title_in_this_folder_file_name

Another example: The "official bulletin" is called from:

Main Bull.Menu
Option OB------> Index of [BULLACCT]OB drawer
Folder Title

File breakdown would be:

disk:[bullmain.OB.<folder>]
title_would_be_file_name
Different_title_in_same_folder_file_name


NOW FOR THE QUESTION:

What is there I can use that would be associated with each drawer that
would specify the mnemonic path of TRV TDP. I can't use the
description field because that already has a specific use which cannot
be changed.

I've thought of using another account -- one that will never be deleted
-- and adding each of the bulletin drawers and using the description
field there. But I'd really like to use something associated with the
drawer itself if it is possible.

This application will run via a batch job -- nightly. The only time [I
hope] to touch anything on it would be if I added or deleted a bulletin

The DECUServe Journal June, 1995 Page 51
MAKE_FILE_NAME in ALL-IN-1


drawer. That is why I'd like to use something associated with the
bulletin drawer itself.

I hope I've made this clear. Any help/suggestions would be great!


Note 1112.5, 24-May-1995
Peach: Correction to #1 in previous note
----------------------------------------
I stated in the previous message that all bulletins were kept in a
[BULLACCT] drawer. That is incorrect....

All bulletins are kept in a special BULLACCT, each bulletin "identity"
having its own drawer. Sorry for the confusion.

Note 1112.6, 26-May-1995
Peach: Never mind - figured it out
----------------------------------


Note 1112.7, 26-May-1995
Pye: FYI...
-----------
On the subject of MAKE_FILE_NAME, it's broken on Alpha if you default
the second and third parameters. Supplying default values of "" is
enough to stop it ACCVIOing.

RAID 1 vs. RAID 5
=================

RAID technology is a hot topic, no doubt about it. Mention RAID,
and you will find plenty of interest, discussion, and more than a
little confusion. Performance is usually a big issue, so the
following discussion in HARDWARE_HELP, dealing with comparative
performance of RAID Levels 1 and 5, naturally caught our eye.

Participants: Rick Carter, Dale Coy, Linwood Ferguson, Keith
Parris, Mark Shumaker, Pete Sivia.


Note 1875.0, 24-May-1995
Shumaker: RAID 1 vs RAID 5 Resync times and DB implications?
------------------------------------------------------------
We're evaluating differences between RAID 1 (mirroring/shadowing) and
RAID 5 storage in some applications here; on IBM RS/6000s to start with,
and on Digital AlphaServers later (both UNIX and VMS). Does anyone have
any information, or pointers to such information, about:

The DECUServe Journal June, 1995 Page 52
RAID 1 vs. RAID 5



1) What is the relative speed with which a resynchronization (after
replacement of a defective drive) takes place? Let's assume a
12 GByte effective storage size, using six 4-GByte drives in the
mirroring case and four drives in the RAID 5 case.

(My concern here is the time of exposure to the risk of another drive
failure occurring during the resync period. During this period, another
drive failure in the RAID 5 system will have at best a 75% chance of
trashing the disk system (3 chances out of 4 that the new failure won't
be the same drive we just replaced; and it might be 100%, I don't know
enough about RAID 5 implementations to predict what will happen if the
same drive fails before the array is fully resynchronized), but in a
shadowing system there's only a 50% chance (3 chances out of 6 that the
new failure will be in the undamaged shadow set) that my data will be
destroyed. If RAID 5 gets through the resync period enough faster, I
expect that there's a net reduction in risk exposure for a second
drive failure.)

2) I've been reading and hearing dire warnings that RAID 5 is not suited
for use with large database applications (guess what we want to use it
for...). One DBMS vendor's rep says it's because the RAID 5 data
fragmentation and rejoining processes interfere with the communication
between the database's and the operating system's data cache operations.
I also read and hear that many of these anecdotal reports are eventually
traced to improper system tuning and that the RAID 5 was not involved in
their poor performance.

Can anyone describe to me what the mechanism for such interference
might be, especially in the case where a separate RAID 5 subsystem
with its own processor performing the fragmentation and rejoining
procedures is used?

Have there been any credible studies done to determine if the RAID 5
Database reports are valid, valid under some conditions, or urban
legends?

Note 1875.1, 24-May-1995
Coy: Questions
--------------
Questions for clarification:

> 12 GByte effective storage size, using six 4-GByte drives in the
> mirroring case and four drives in the RAID 5 case.

Are we to assume that the shadowing situation does NOT use striping?

>1) What is the relative speed with which a resynchronization (after
> replacement of a defective drive) takes place? Let's assume a

What kind of CPU and I/O traffic is going on at the time? I believe
that will (potentially) affect the resynch time. [Also, it undoubtedly

The DECUServe Journal June, 1995 Page 53
RAID 1 vs. RAID 5


makes a difference whether the RAIDing is being done "controller-based"
or "host-based"]


Note 1875.2, 25-May-1995
Ferguson: It's what I have heard casually, and paid to hear also
----------------------------------------------------------------
We had IBM consulting out to do some feasibility studies on a large
database (~ 50GB) and their recommendations were a mixture of mirrored
drives for speed and RAID 5 for low use storage areas. This was a very
preliminary study so we did not get into the "how much faster" issues
but they say they do this as a matter of course where large databases
and performance is an issue. FWIW.

Note 1875.3, 25-May-1995
Coy: RAIDbook?
--------------
BTW, have you read the material in the RAIDbook? Excellent treatment
of performance issues, including what they refer to as "reconstruction"
when a disk is replaced.

It is stated (for instance) that "RAID Level 5 arrays to which a high
percentage of write requests are directed will saturate at a lower I/O
request rate than individual disks whose performance is equivalent..."

Therefore RAID Level 5 is suitable for inquiry-type transaction
processing, but not for things like credit bureau verification in which
balances are continually updated.

Note 1875.4, 25-May-1995
Carter: One specific data point
-------------------------------
I have only one data point for you. A drive that was looking loopy
(not generating errors actually, but occasionally its light would go on
and the other drive lights would all stop for a second) on an HP
NetServer 66LM (I may have the letters and numbers in the wrong order;
I'm not near it) 486/66DX2 running Novell NetWare 3.11 patched to about
two months ago's revisions. RAID 5 array of 5 x 1Gb at that time (we
went to 5 x 2Gb lately). We replaced the drive and did a rebuild with
all users kicked off one evening (don't run any DB or anything, pretty
much Microsoft Office, Windows, a few other things, so pretty quiet
system). It took about 15 minutes to put the fifth drive into the
array.


The DECUServe Journal June, 1995 Page 54
RAID 1 vs. RAID 5


Note 1875.5, 25-May-1995
Shumaker: Explanations; I hope useful...
----------------------------------------
> Are we to assume that the shadowing situation does NOT use striping?

Yes. Just plain old shadowing. Our primary concern is for data integrity,
with I/O rates a secondary -- but not minor -- concern; we are, in fact,
looking at triple-set shadowing and at shadowing two RAID 5 boxes...

> What kind of CPU and I/O traffic is going on at the time? I believe
> that will (potentially) affect the resynch time. [Also, it undoubtedly
> makes a difference whether the RAIDing is being done "controller-based"
> or "host-based"]

All of the RAID-5'ing would be controller-based (IBM 7137 Disk Array Subsystem
on the RS/6000, we have not as yet selected a candidate product for the
Alpha boxes). We would also like to do controller-based RAID-1'ing
(shadowing) if we can do so.

If we are unable to do controller-based shadowing, we would be using the
IBM RS/6000-R24 processor or the AlphaServer xxx 4-275 processor (these have
similar SPEC92 rates).

WRT the ongoing I/O rates, we don't as yet have a clue. Neither Progress
(the DBMS vendor) nor QAD (the application vendor) have been able to give us
any useful data or even wild-ass guesses yet. But then we haven't been able
provide them with any useful predictions of the rate of expected transactions.
I hope to have some representative data to extrapolate beyond rational limits
in a month or so.

We're about to start testing this system in a small plant which has a smaller
RS/6000 processor and a relatively small host-shadowed (4 GBytes per set) disk
configuration. IBM had recommended going to the 7137 and RAID 5 for the other
larger plants with 12-14 GBytes of storage requirement, and they were fully
aware of the application planned to run on these machines. Now that we have
one such machine installed, one shipping, and another on order, the DB vendor
has introduced this question.

Note 1875.6, 25-May-1995
Parris:
--------
I don't know anything about the IBM RAID/mirroring implementation, and it's
been my experience that a given implementation of RAID can be much better or
much worse than one might expect just from RAID theory alone. But I agree
that the RAB RAIDbook would be helpful.

To "resynchronize" after a RAID-1 failure, one needs to copy all the data from
the surviving disk (or any one of them, if you had a 3-member or larger set) to
the replacement disk. In theory, this involves reading and writing a disk's
worth of data. For RAID-5, you need to read each of the remaining members'
contents, do the XOR calculations, and write a disk's worth of bits to the
replacement disk. So there's more data to be read for a RAID-5 reconstruction,

The DECUServe Journal June, 1995 Page 55
RAID 1 vs. RAID 5


and there are the XOR calculations, whereas RAID-1 just involves copying data
straight across. I'd expect RAID-1 to be faster in general. Best case, where
all the RAID-5 array members have parallel data paths and the XOR is pipelined
at the full data rate, it seems like you could just match the RAID-1 speed.

> (My concern here is the time of exposure to the risk of another drive
> failure occurring during the resync period.

The MTBF of typical disk drives these days in on the order of 500K hours,
so the chances of a second failure in the few hours a reconstruction would
take are small. But the risk is not nonexistent. Using 3-member shadow
sets, or shadowing two RAID-5 arrays, as you discussed, or using a RAID-6
array, are ways to lower the risk of data loss.

> During this period, another
> drive failure in the RAID 5 system will have at best a 75% chance of
> trashing the disk system (3 chances out of 4 that the new failure won't
> be the same drive we just replaced; and it might be 100%, I don't know
> enough about RAID 5 implementations to predict what will happen if the
> same drive fails before the srray is fully resynchronized),

In the RAID 5 implementations I've seen, loss of a disk which is under
reconstruction doesn't cause data loss; you just start the reconstruction over
on another hot spare.

There are books that describe how to do MTBF calculations; basically you've got
3 drives with 500K hour MTBFs, a failure of any one of which will cause data
loss, so the resultant MTBF is going to be much lower than 500K hours, but
you're also only exposed to this greater risk for a few hours.

> but in a
> shadowing system there's only a 50% chance (3 chances out of 6 that the
> new failure will be in the undamaged shadow set) that my data will be
> destroyed.

For a 2-member shadow set, loss of one member is OK, and loss of the second
member results in data loss. So you're dependent on a disk with a 500K hour
MTBF not failing for a short period of time (single digits of hours).

With a 3-member shadow set, after the first failure, you'd have to lose both of
the other 2 disks within that same short period of time to lose data.

> If RAID 5 gets through the resync period enough faster, I
> expect that there's a net reduction in risk exposure for a second
> drive failure.)

As I pointed out above, I don't think RAID 5 is going to be faster.

>2) I've been reading and hearing dire warnings that RAID 5 is not suited
> for use with large database applications

One variable that RAID 5 arrays have and RAID 1 arrays don't is the chunk
size. This is the number of blocks that are assigned to a given member
of the array before moving to the next member. These chunks of data

The DECUServe Journal June, 1995 Page 56
RAID 1 vs. RAID 5


are assigned in a round-robin fashion, so the data gets spread evenly
across all of the disks in the array.

If you're doing very large transfers, you'd like the chunk size to be
such that all of the disks get involved at once in the transfer, that is,
chunk_size = IO_size/array_size
(for writes, you have the parity to worry about, so you'd use 1 less for
the array_size to account for that). Here, by large, we're talking
on the order of megabytes, like multi-media stuff.

If you're doing fairly small transfers (and most database products do; Oracle
tends to do 8-Kbyte I/Os, I'm told), the object is to scatter the requests
randomly across all of the available actuators, avoiding any one spindle
becoming a bottleneck, and thus lowering the average response times.
Here, you trade off two factors:

1) you want to minimize the chances of a single I/O being split across two
disks; this favors a very large chunk size

2) you want to avoid multiple hot spots landing on the same disk, making
the load balancing uneven; this favors a small chunk size

We recommend that the chunk size be at least 10-15 times the I/O size, so that
the chances of a split-up I/O are down below the 7-10% range.

Some implementations allow you to adjust the chunk size. If you know the
database software is doing I/Os of a given size, and allocates space on given
boundaries, you could choose the chunk size carefully in view of those, to
better match I/Os with chunks. I suspect that arbitrary, inflexible chunk
sizes that are a poor match with I/O sizes and allocation boundaries could be a
cause of the poor performance stories you've heard, but there are many other
potential implementation-specific anomalies that could cause that, too.

If the controller has safe (non-volatile) write-back cache, then much or all
of the negative effect of the RAID-5 "write penalty" gets hidden, making it
much more suitable for small write I/Os such as one might see in transaction
processing workloads.

Note 1875.7, 31-May-1995
Shumaker: Thanks for the answers.
---------------------------------
Keith, I appreciate the detailed information you posted, it's of great value
to me. As usual, with some enlightenment comes more questions...

> ... For RAID-5, you need to read each of the remaining members'
> contents, do the XOR calculations, and write a disk's worth of bits to the
> replacement disk. So there's more data to be read for a RAID-5 reconstruction
> and there are the XOR calculations, whereas RAID-1 just involves copying data
> straight across. I'd expect RAID-1 to be faster in general. Best case, where
> all the RAID-5 array members have parallel data paths and the XOR is pipelined
> at the full data rate, it seems like you could just match the RAID-1 speed.


The DECUServe Journal June, 1995 Page 57
RAID 1 vs. RAID 5


OK, I see now that my assumption that RAID 5 resynchronization would be faster
was incorrect. Thanks for setting me straight.

> The MTBF of typical disk drives these days in on the order of 500K hours,
> so the chances of a second failure in the few hours a reconstruction would
> take are small. But the risk is not nonexistent.

I am concerned that disk drives have historically exhibited failure patterns;
drives from the same revision or manufacturing batch or day's production have
sometimes tended (a slight tendency, I agree, but it's relevant to this
problem) to fail within narrow time windows. Populating a shadow set with
drives from different vendors, or from different manufacturing batches, is
turning out to be a logistical nightmare.

I have been instructed to treat the data to be kept by these systems as being
immensely valuable, and system data availability as essential, so I am
thinking of new things to worry about even beyond my normal system-manager
paranoia. Perhaps these considerations will prove to be unnecessary; and
this is probable (on the thesis that what one prepares for will not occur).
Fine, we can always reassign the extra disk drives to some other service.

> There are books that describe how to do MTBF calculations; basically you've

I'd appreciate a pointer. For some reason, when I did some of this a year
or so back I wasn't able to locate any even though I knew they must exist,
and I had to derive the mathematics myself based on some ancient probability
theory courses I took a long time ago. I assumed Gaussian failure
distributions, even though I know they're not, because I had no data on the
actual distributions, and I'm not really comfortable with the figures I came
up with.

> For a 2-member shadow set, loss of one member is OK, and loss of the second
> member results in data loss. So you're dependent on a disk with a 500K hour
> MTBF not failing for a short period of time (single digits of hours).

I just realized we have a basic difference here. I assume that each shadow
set member would contain several physical disk volumes, since this
application is for a fairly large database which would span several volumes.
It appears that you are treating each pair of physical volumes as a separate
shadow set. This would simplify the resynchronization process, because any
data changes made to the other volumes would not be a part of resyncing, but
I don't know if this is feasible in the case of having one big file spread
across several volumes.

If each shadow set contains several physical drives, I would expect that
resynchronizing would be much slower, since in the worst case every drive
would need to be copied to its respective volume in the other shadow set.

> If the controller has safe (non-volatile) write-back cache, then much or all
> of the negative effect of the RAID-5 "write penalty" gets hidden, making it
> much more suitable for small write I/Os such as one might see in transaction
> processing workloads.

The specific RAID-5 implementation I'm considering here is an IBM 7137 box,

The DECUServe Journal June, 1995 Page 58
RAID 1 vs. RAID 5


for the RS/6000. This box has non-volatile 4 MByte write cache, and
will perform unattended automatic volume replacements (a potentially very
valuable feature in a 24x7 environment where operations staff are not on duty
around the clock) using one or two hot spare drives.

Note 1875.8, 31-May-1995
Shumaker: Pointer to RAIDbook?
------------------------------
> BTW, have you read the material in the RAIDbook?

Forgive my ignorance, Dale. This sounds like something I should see
(actually, it looks like something I should already be aware of, but
I'm not).

Note 1875.9, 31-May-1995
Sivia: RAID Evaluator?
----------------------
> I'd appreciate a pointer. For some reason, when I did some of this a year
> or so back I wasn't able to locate any even though I knew they must exist,
> and I had to derive the mathematics myself based on some ancient probability
> theory courses I took a long time ago. I assumed Gaussian failure
> distributions, even though I know they're not, because I had no data on the
> actual distributions, and I'm not really comfortable with the figures I came
> up with.

For the calculation work, the Storageworks folks had a RAID evaluator
MS-Windows app a while back (2 years ago?) that's been re-released.
The author is Paul Massigila (sp?) with DEC Storage Engineering in
Colorado Springs. I may have the updated copy around here in my stacks
of floppies.... when I track it down I'll re-post.

Note 1875.10, 31-May-1995
Sivia: 1993 pointer
-------------------
> Forgive my ignorance, Dale. This sounds like something I should see
> (actually, it looks like something I should already be aware of, but
> I'm not).

The copy I've got is called:

The RAIDBook
A Source Book For RAID Technology
First Edition, June 9, 1993

Published by: The RAID Advisory Board, 6931 Glenview Lane, Lino Lakes,
MN 55014-1296. Unfortunately, I just checked with directory assistance
and couldn't find their phone number in the 612 area code.


The DECUServe Journal June, 1995 Page 59
RAID 1 vs. RAID 5


Note 1875.11. 31-May-1995
Coy: RAIDbook
-------------
Fourth Edition, August 8, 1994

ISBN 1-879936-90-9

The copy I have has a DEC logo on it.

IBM is a member of the RAB, so you should be able to get a copy from
your IBM salesperson.

The RAID Advisory Board, Inc.
Affiliated with Technology Forums
13 Marie Lane
St. Peter, MN 56082-9423
(507) 931-0967 FAX (507) 931-0976

> I have been instructed to treat the data to be kept by these systems as being
> immensely valuable, and system data availability as essential, so I am

Clearly, then, RAID Level 1 is more suitable than RAID Level 5.

Note 1875.12, 31-May-1995
Shumaker: Thanks.
-----------------
> IBM is a member of the RAB, so you should be able to get a copy from
> your IBM salesperson.

Thanks.

> Clearly, then, RAID Level 1 is more suitable than RAID Level 5.

It really appears so....

Note 1875.13, 31-May-1995
Sivia: DISK$FREEWARET62:[RAID_EVAL] has a copy
----------------------------------------------
V1.9 of Storageworks's RAID Evaluator is on the 'OpenVMS Freeware V1.0'
CD released at the recent symposium. It's in the directory [RAID_EVAL]
and runs under MSwindows. There's a pre-final release of the Freeware
CD mounted here on DECUServe and you can find the RAID evaluator files
in DISK$FREEWARET62:[RAID_EVAL].


The DECUServe Journal June, 1995 Page 60
RAID 1 vs. RAID 5


Note 1875.14, 3-Jun-1995
Sivia: Now it's DISK$FREEWAREV10:[RAID_EVAL]
--------------------------------------------
Update: the freeware disk name has been changed to DISK$FREEWAREV10 to
reflect the replacement by the final version of the Freeware V1.0 disk.

So... look at DISK$FREEWAREV10:[RAID_EVAL] for this software.


Connecting a DEChub 90
======================

DEC_NETWORKING is a marvelous place to find real nuts-and-bolts
stuff. Various of that conference seem to have plugged at least one
of every imaginable kind of box into every imaginable kind of
network, and can tell you exactly what you do and (more importantly)
do NOT want to do with your employer's network. The following
discussion considers ways of connecting a DEChub 90 to Thickwire
Ethernet, and discussed various (and varied!) experiences with
vendors.

Participants: Shawn Allin, David Campen, Terry Kennedy.


Note 1169.0, 24-May-1995
Allin: How to hook up DEChub 90 to Thickwire affordably?
--------------------------------------------------------
'till now, we've been a Thick-wire backbone, thin-wire-to-the-PC
installation. I'm considering buying a DEChub 90 starter package to
get going with twisted pair now. However, I have to consider how to
hook up the 90 to our Thick backbone. The one obvious way is to buy
the DECbridge 90FL, but considering that it is more expensive than the
entire starter package, I'm not interested.
Is it "legal" to put a DECrepeater 90C (6 port thin wire) unit in and
go from a port on one of our existing DEMPR's to it to get onto the
backbone?
..or is there a better (but affordable :-)) way to achieve this?

Note 1169.1, 24-May-1995
Kennedy: Try Allied Telesis
---------------------------
So you want thickwire on one end of a box and twisted pair connectors on
the other?

I'd suggest the Allied Telesis 3412, which is a 12-port "dumb" (no manage-
ment software) hub with an AUI connector. You can connect to the thickwire
with an H4005 and AUI cable (or the Allied Telesis equivalent parts). It's
less than $300.

If you want to get fancier, Allied Telesis has the 3600 system which is a

The DECUServe Journal June, 1995 Page 61
Connecting a DEChub 90


SNMP-manageable stackable hub system which starts at 12 ports and goes way
up (at least 48). Each port has configurable security (if a packet is not
addressed to the Ethernet address "registered" for that port and not a broad-
or multi-cast, the data portion is replaced with gibberish). These start at
around $1100.

I would avoid cascading devices on a DEMPR. I'm not sure how you'd use the
DEMPR and 90C in the above situation - perhaps a diagram would help.

I've avoided the current generation of DEC Ethernet gear (DEChub stuff) as
I've had bad experiences with the 90C (it won't pass frames generated by
Intel devices) and DEC support was less than helpful. At the price premium
DEC charges (compared to the rest of the competition) they had better provide
good support. Given that I can get Cabletron for less than DEC (for equivalent
devices) and Cabletron sends people out to work on their stuff for free and
apparently forever..., well you get the idea. Allied Telesis (actually, now
they're Allied Telesyn but that hasn't caught on yet) has *very* inexpensive
stuff and it's quite reliable. A quick comparison:

DEC has the DEMPR (discontinued) and the 90C for BNC fanout units. The DEMPR
has a latched fault LED per port, an overall activity LED, and a power LED.
The 90C removes the latched fault LED and adds a "port OK" LED. Both of these
have fixed internal terminators (the have to be at the end of the thinwire
span). The Allied Telesis 3008SL has per-port "OK", "receive" and "collision"
LED's, an overall activity and power LED, switchable per-port termination so
the unit can be at the end or the middle of the thinwire segments, and has a
force-disable switch for each port so you don't have to unplug cables to test
things. It's $650 ($550 for a 4-port version).

Note 1169.2, 24-May-1995
Campen:
--------
I have a DEChub 90 connected to the backbone via a DESPR. You shouldn't
need the 90C as I believe the Hub90 backplane has a thinwire port.

The "legality" you might want to watch is the limit on the number of
repeaters in a path.

Note 1169.3, 24-May-1995
Allin: I'd like to stick with Dec this time if possible
-------------------------------------------------------
I guess my experiences have been different; we had an Allied Telisis
repeater (don't remember the model #) that we had nothing but problems
with; after getting 2 replacements that blew up, we gave up. I know
it's only one experience and it was a few years back, but it sours you.
We do have Cabletron stuff here that works fine, but given that we deal
with them effectively like a mail order house here in Canada, we don't
get the forever onsite technical assistance that you get.
Dec on the other hand, while overpriced (underfeatured? :-)) has a
field service office right here in Kingston, still staffed with

The DECUServe Journal June, 1995 Page 62
Connecting a DEChub 90


excellent technicians, etc. We've had pretty good luck with Dec
equipment being plug-in-and-forget-it as well.
So, that's why I'd prefer to try the Dec solution; to your question of
how I'd propose to use an existing DEMPR with the DECrepeater 90C, it
would be cascaded. I'd use the fact that the DEMPR is already
connected to the thick wire and then cascade down to the 90C,
presumably connected the rest of the DEChub 90 up as well. Zo, is this
the only way to do it short of buying the Decbridge 90FL?
Oh, and we don't have any Intel devices that I know of; (I'll find out
when I use the 90C, eh Terry? :-))

Note 1169.4, 24-May-1995
Allin: Oh yeah, I guess it should have connected somehow!
---------------------------------------------------------
re .2 (we're posting at the same time!)
Ah, I should have remembered about the existing Thinwire connection;
ok, so apart from the limitation of numbers of cascading repeaters, all
should work well then. Thanks for the info.


Note 1169.5, 24-May-1995
Campen: Its OK by the book.
---------------------------
To be sure I checked the book; "DEChub 90 Ethernet Backplane - Owner's
Manual" and Fig. 2-2 shows a DESPR or DEMPR being used to connect the
DEChub backplane thinwire port to a thickwire segment.

Note 1169.6, 25-May-1995
Kennedy: Pointer to other notes
-------------------------------
For other notes on Allied Telesis/Telesyn gear, look at notes 1089 and 1029
here and 926 in HARDWARE_HELP.

Note 1169.7, 26-May-1995
Allin: Ok, thanks
-----------------
Thanks all, for the info. Terry, I'll check those notes.


Calling CREMBX from COBOL
=========================

Yes, on DECUServe you can even get COBOL questions answered promptly
and without gratuitous insults. This next and final article for
this issue of the Journal is taken from the DEC_SOFTWARE conference;

The DECUServe Journal June, 1995 Page 63
Calling CREMBX from COBOL


the topic is a problem calling SYS$CREMBX. See you next month....

Participants: David Campen, Linwood Ferguson, Sharon Frey, Patrick
Stair, Bret Wortman.


Note 692.0, 8-May-1995
Frey: Data type invalid for Cobol
---------------------------------
I have a cobol program that is creating a mailbox, and then waits
for another program to write messages to it before it reads the messages.
Preliminary testing has worked, but I'm having a small problem.

To make sure both programs are looking at the same box, I want
the creator to affix a logical name to it. Leaving the permflag to default
on the CREMBX call created the mailbox successfully, but I can't find the
logical on any of the logical tables. I'm assuming that's because it's a
temporary beast, and I'm just missing it.

To test that theory, I am now trying to set the permflag to 1 so
that it makes a system logical.

My problem is that the permflag is defined as an unsigned byte, and
apparently Cobol doesn't have a valid numeric byte type. The smallest is
two bytes. Alpha data can be 1 byte, but then I get a compile error on
the parameter passage (invalid to pass by value). What can I do to work
around this, and get that little ole byte passed?

I'm using Cobol version 4.4-64 on VMS version 5.5.

Note 692.1, 8-May-1995
Campen: In Fortran I use %VAL
-----------------------------
Even though the documentation specifies that the PRMFLG has type byte
the machine code appears to be actually using a longword. In Fortran I
use e.g.

CALL SYS$CREMBX(%VAL('0'X),

where %VAL specifies a longword value.

Perhaps the reason you can't see the logical name is because it is
going into the LNM$JOB table.

Note 692.2, 9-May-1995
Frey: Okay, that helps some!
----------------------------
Ah! Okay, I noticed that it passed a longword. I'd assumed that
I was getting "bad parameter" error because of the size. Perhaps that's not
so... When I leave the flag as OMITTED, the call works fine, when I tried to

The DECUServe Journal June, 1995 Page 64
Calling CREMBX from COBOL


specify it, I got "bad parameter".... What gives?

> Perhaps the reason you can't see the logical name is because it is
> going into the LNM$JOB table.

Perhaps I don't need to specify it as permanent? If the creator
program is running in JOB X, how do I make sure if the partner program is
also? If they have the same UAF? Clearly some reading of the hallowed
Gray Wall is in order! :-)

Some explanation of what I'm up to: Our software is a nifty real-time
dispatch system. It has "core" programs that startup and run continuously
until we shut the software off. It also has other programs that are initiated
by the users. I'm adding one of each, that need to communicate to each other
via mailbox. The vendor's software is part cobol and part macro, and I'm
busily exploring it, trying to figure out how the thing works. It's fun, but
I'm still fuzzy on some aspects of how the whole thing communicates. (For
surely it does!)

Note 692.3, 9-May-1995
Campen:
--------
I don't know anything about Cobol - how do you specify that you want to
pass a parameter by value?

You can either make the mailboxes permanent or, what I do, is point
LNM$TEMPORARY_MAILBOX to LNM$GROUP via a call to SYS$CRELNM and then
use temporary mailboxes.

Note 692.4, 9-May-1995
Wortman: General COBOL answer
-----------------------------
I don't have a COBOL manual in front of me, but let's see how my memory
is.

PERFORM procedure_name USING var1 BY VALUE, var2 BY REFERENCE

In cases where you need to pass the address of a pointer, you declare a
variable of type POINTER then use COBOL's SET verb to set the pointer
to the address of the variable, then pass the pointer by reference.

Hope this helps at least *slightly*, even though it's a general answer.

Note 692.5, 10-May-1995
Stair: Perhaps I can be of assistance
-------------------------------------
We do a fair amount of system service calls from COBOL and passing
stuff from COBOL programs to FORTRAN programs (some of which use the

The DECUServe Journal June, 1995 Page 65
Calling CREMBX from COBOL


data to make system service calls). Post the call you are attempting
to make and I'll see if I can give you some examples of how we do it
or how we might do it. (Or you can send the examples directly to me.)

Note 692.6, 13-May-1995
Ferguson: BY VALUE 1 works for byte, word or longword
-----------------------------------------------------
Since it's by value, just use

call "whatever" using by value 1

Calling by value stacks the actual value in a longword regardless of
what you are passing, so whether it needs byte, word, or longword you
get the same result. Now by reference is a different matter,
especially if you need structures including a byte, but the simple way
to handle that is by redefines and/or assembly in pieces. But that
does not sound like what you need.

I'm not convinced your problem is how you pass the flag but perhaps
what you are trying to accomplish. You might want to post the whole
call with the values of the various parameters you are passing and
their structure in Cobol.

Note 692.7, 23-May-1995
Frey: oops I was way off
------------------------
Well, I settled on making the 1-byte flag a PIC 9(4) COMP, even
though it's actually 2 bytes. After a little bit of struggle, I found that
I had 1 extra parameter than it needed, and I was getting a misleading
error message.

When I passed it PIC 9(4) COMP (with the extra parameter) it complained
about BUFQUO size. But when I OMITTED the BUFQUO parameter, then it complained
about the logical name parameter. Rather deceptive. I had an extra OMITTED
in the middle parameters.

Anyway, thanks for the comments. They helped me explore several
possibilities and eventually spot my error.


About the DECUServe Journal
===========================

Publication Information

Topic threads in the DEC Notes conferences on DECUServe are selected
for publication on the basis of strong technical content and/or
interest to a wide audience. They are submitted to the editor from

The DECUServe Journal June, 1995 Page 66
About the DECUServe Journal


various sources, including DECUServe Moderators, Executive Committee
members, and other volunteers. Suggestions for inclusion are
enthusiastically solicited. Articles selected for publication are
edited on an OpenVMS VAX system in TPU and then formatted with
Digital Standard Runoff.

What's a DECUServe, Anyway?

DECUServe is an on-line conferencing system which is available 24
hours a day, seven days a week. System backups are done on Fridays
from 7:00am to approximately 9:00am Eastern (Daylight/Standard)
Time. Scheduled downtimes for equipment or software maintenance are
announced in advance. The system can be reached worldwide, and
membership is by individual subscription only (no group or company
accounts). The current annual subscription fee is US$75.00.

On-line subscription information is available in the U.S. by
dialing 1-800-521-8950 and logging in with username INFORMATION.
DECUServe and the INFORMATION account can also be reached on the
Internet via telnet connection to decuserve.decus.org or e-mail to
infor...@decuserve.decus.org.

Contact Information
===================

The editors of the DECUServe Journal are Brian and Sherrie McMahon.
They can be reached by any of the following means:

mcma...@decuserve.decus.org
mcma...@decuserve.decus.org
mcma...@decus.org
grif...@decus.org
mcm...@ac.grin.edu
grif...@ac.grin.edu
+1 515 269 4901 (normal office hours, U.S. Central time)
+1 515 269 4936 FAX

0 new messages