VMS on/for/istead of/under UNIX
"jochen%[131.220.221.30]" at olymp.informatik.uni-bonn.de
"jochen%[131.220.221.30]" at olymp.informatik.uni-bonn.de
Fri May 31 20:27:22 AEST 1991
Dear UNIX world,
I would like to offer the following to your discussion since I think
that some of you will be in the same situation as we are. Up to the
end of 1989 all of the (important - those who MAKE the opionions)
computer people in our institute (physics institute of the university
of bonn, germany) think that VMS is THE operating systems for all
users. As far as I saw it - the view of a programmer - VMS has
some very handy tools for me (command definition language, message
utility, logical names, batch system,...) but was somewhat strange
when programming in C (system call interface, string descriptors ...).
Since we need more computer power for the analysis of our experiments
data (at the level of 100 VAX 11/750 units) we had to check for some
cheeper solutions and came to RISC machines with UNIX (we bought two
AViiON 300 with 17 MHZ 88100 from Data General). Now we had to learn
UNIX and my summary of UNIX (from my point of view) was that
programming with system and library calls is more clear to me
(VAX does provide UNIX C libraries, too but only TOO) and more
easy to learn, using the command interpreter is much more elegant
than VMS (thinking of pipes or non-command-file loops with
foreach) but commands are somewhat cryptic and hard to learn for
many people (try to make a DIRECTORY/SINCE=YESTERDAY using find).
You can do MANY things with UNIX in commands but you have to learn
MANY things before you can do so. And people which have been worked
with VMS some time like the VMS feeling. If you are not doing very
special things VMS is GOOD (enough) for developing programs (better
than UNIX? I don't know).
We want to use our machines as batch only machines in the following
way: users should program and test their programs using VMS (using
the better tools) and then run the processing jobs (analysing some
Gigabytes of event data) on the UNIX machines. These machines got
the task to balance the load on all machines involved. So we decided
to port the following tools to UNIX:
* users should take advantage of what the learn in VMS. So DCL
command files and CLD utility should be useable in the batch
jobs. CLD, CDU and DCL will be needed for that.
* job starts should be similiar to VMS. So a job controller similiar
(not more) to VMS (SUBMIT, SHOW QUEUE, etc.) has been constructed
to server a couple of machines using load balancing.
* logical names can be very helpfull (especially if you use DCL
command files).
* if you have one file/tape and will have some machines analyzing
the data from it, you need a mechanism to split the datastream
as a multiplexor does. This can be done with TCP/IP in a very
simple way. But if you have your program written in FORTRAN
(we use some CERN libraries in good old FORTRAN 77) you get
problems with OPEN. So we need a tool mapping TCP channels
to file names.
In this text I will shortly show the components of our VMS support
for UNIX (perhaps there will be VMS on UNIX in future BUT I will
not program using VMS. I will only take advantage of some VMS tools.
You know the sampler: the best of ...?). Perhaps some of you is
interested in using it for some reason and will have the time and
is willing to work on this. Up to know it is running under DG/UX
4.32 in our special environment and since UNIX is not UNIX and
DG/UX is not UNIX (System V.3 and BSD compatibily and some special
tricks) there may be some work on it. We will not make some further
enhancements of those things because we do not have the time to do
do. But since the project has some interesting features (as I think...)
I would like to offer it to you (as first to those able to port it
to their local UNIX system). If some of you are interested in getting
the source please contact me. If some of you are interested in
discussing VMS on/for UNIX I would prefer to see thos discussion
in the UNIX digests (I'm not receiving mails from the i-unix directly)
since I think they are of common interest.
Now to the feature in short. If you are not using VMS and do not
know about some library routines and their usage (LIB$GET_INPUT
or so) you should skip this.
1. PARSE
Implementation of LIB$TPARSE (final state machine using predefined
tokens for hex, symbols, ...). Interface to C, tables can be
stored outside the program in files. Support for call of other
tables (modules).
** Ported to AmigaDOS, VMS 5.4 and DG/UX 4.32
2. Command language definition CLD and CDU
Most features of CLD, library routines LIB$DCL_PARSE. Uses 1.
Allows image activation to be used in own programs.
** Ported to DG/UX 4.32 and partial to AmigaDOS
** Not ported to VMS since the original is still better.
3. Logical names
Logical name manager using RPC. Full support of name tables and
name hierarchie. System routines SYS$TRNLNM etc. provided.
4. VMS tools and VMS related tools
Translate a VMS filename to UNIX using logical names, LIB$GET_INPUT,
LIB$GET_FOREIGN and the things usefull for workig with commandlines.
5. DCL command shell
Uses CLD. Implements - beside normal commands as SHOW LOGICAL,
FORTRAN, etc. - symbols, foreign commands and command procedures.
Symbol replacement similiar to VMS (VMS has MANY undocumented
features...), library support for symbols LIB$SET_SYMBOL etc.
DCL called images may be coded in a command language (I use csh)
which can do CLI$GET_VALUE and CLI$PRESENT. This makes execution
slower but support very easy.
6. TCP mapper
A STREAMS pseudo device which maps filenames to TCP/IP channels
after a preconfiguration step.
7. Batch queue system
First version of load balancing (easy). Support for processing
loosely coupled (processing time per "event" in the order of one
second) parallel jobs. You can set up a multiplexed job connected
to one tape unit. The system will start the job multiple time as
long as resources allow it to do so. The programs in this
environment can be coded using logical names so that the run
without any change under VMS, non-parallel queue and in the
parallel environment.
All Programs are - as VMS does - interfaced for FORTRAN. This may be
a problem in porting since FORTRAN C interface in UNIX is not well
defined and usage of CHARACTER variables is somewhat strange (see
VMS descriptors). We use Green Hills FORTRAN 77 which is very
compatible to VMS and easy to connect to C. One more problem will
be the documentation (documen.. WHAT?). The implementation of the
project is level one, i.e. level zero has been tested an improved
and I do not expect to have some major changes the next time (one
year or so).
If you want more information please contact me. This letter shall
only give a hint to those people you think they need such tools on
their UNIX systems. Perhaps we can make a PD set out of it?
I'm hoping on some response!
Jochen
PS: If you can't REPLY to this mail, sent it to MANNS at DBNPIB5.BITNET. Our
UNIX systems are not yet name served.
More information about the Comp.unix.questions
mailing list