![]() |
|
|
|
|
|
|
VM/COM, July 1985
1
-
OO OO OOO OOO // OOOOOOO OOOOOOO OOO OOO
OO OO OO OOO OO // OO OO OO OO OO OOO OO
OO OO OO O OO // OO OO OO OO O OO
oo oo oo oo // oo oo oo oo oo
oooo oo oo // oo oo oo oo oo oo
oo oo oo // ooooooo ooooooo oo oo
0 ------------------------------------------------------------
July 1985 edition Volume 2 Number 2
- CsNews Network Newsletter
-
-
Staff:
0 Michele Robinson CSMICH at MAINE Editor
Andrew T. Robinson ANDY at MAINE CsNews Director
Prof. G. Markowsky MARKOV at MAINE Faculty Advisor
0 (Special thanks to Dave Eckhardt, DAE@PSUVAX1, for error,
spelling, and grammar checking)
-
0 Ôçççççççççççççççççççççççççççççççççççççççççççççççççççççççä
³ Newsletter article contribution Userid: CSNEWS@MAINE ³
³ ³
³ Contributions from readers welcomed and encouraged! ³
¨ççççççççççççççççççççççççççççççççççççççççççççççççççççççç]
1
0 Vm-Com Issue 2.2
-
0 Table of Contents
+ _____ __ ________
- Introduction to Vm/Com 2.2 . . . . . . . . . . . . . . . 1
CSNEWS Notes . . . . . . . . . . . . . . . . . . . . . . 2
Designing a DataBase . . . . . . . . . . . . . . . . . . 3
IBM/370 I/O Architecture . . . . . . . . . . . . . . . . 6
A Look at ISPF . . . . . . . . . . . . . . . . . . . . . 10
NetCon -- Spring '85: A Summary . . . . . . . . . . . . . 12
A Poem . . . . . . . . . . . . . . . . . . . . . . . . . 14
OpCodes . . . . . . . . . . . . . . . . . . . . . . . . . 17
-
-
-
-
-
-
-
-
-
-
-
-
-
- 2
1
0 Vm-Com Issue 2.2
0 Introduction to Vm/Com 2.2
+ Introduction to Vm/Com 2.2
-
Welcome to issue 2.2!!! In this issue you will see
articles on IBM/370 I/O programming, an introduction to ISPF
(Interactive System Productivity Facility), a guide on
designing databases, a report on the recent NETCON in New
York, and a humor section consisting of a poem about LISP
and a collection of rather unusual OPCODES.
0 If any of you are interested in contributing articles
for future editions drop me a note. We really could use help
from all our readers!!! Also if you have anything to say
about Vm/Com or even something about CsNews drop us a
mailfile... If it's ok with you I'll publish it in a future
Vm/Com issue.
0 Hope you all enjoy it!! and I'll be seeing you again
next issue...
0 Michele Robinson
Editor
-
-
-
-
-
-
-
-
-
-
- 1
1
0 Vm-Com Issue 2.2
0 CSNEWS Notes
+ CSNEWS Notes
0 Andrew T. Robinson (ANDY@MAINE)
- As I'm sure most of you can see, the Vm/Com production
effort is (finally) in gear. We had a bit of a problem
between issue 1.1 and issue 2.1, but hopefully you will see
a new Vm/Com every month or so (god forbid, maybe bi-
weekly!).
0 While I am here, I may as well tell you what is going
on with CSNEWS this summer. At the current time, funding
has been allocated for the development of a locally-run
(MAINE users only) user-friendly interface system. This
interface will initially consist of three major components:
a mailer, a conferencing system (local use only), and an
academic database system.
0 And while all this is going on, I am attempting to re-
write portions of CSNEWS (specifically, the command
dispatcher and lower-level routines) in IBM/370 Assembler to
decrease CSNEWS' response time, as well as its CPU usage.
As one example of our current usage, between the months of
August 1984 and May 1985, CSNEWS used approximately $40000
worth of CPU time (assuming the current departmental 'funny
money' rate of $3.00 per Computing Resource Unit). That's a
lot of CPU time! I'm glad Maine *doesn't* charge for system
usage...
0 One thing I have noticed is that the CSBBoard system on
CSNEWS doesn't seem to be getting much use. Our other
forum, FLAME, is getting more use that I'd ever imagined,
but CSBB doesn't get updated more than once every couple of
weeks. All I can say is, C'mon people! CSBB is one of the
simplest and easy to use BBoards there is. We will be
implementing a much needed SEARCH command this summer, and
the system is already set up to allow easy location of
desired information... So use it!
0 Speaking of FLAME... It's been getting a LOT of use, and
there are a lot of interesting conversations going on in it.
Originally, FLAME was intended to be a Vm/Com column, but as
it turns out, I'm glad we made it a separate service! But
just one word of caution (a pleading one)... Don't get too
carried away in your FLAMEs. Remember that CSNEWS is still
subject to the long arm of administrative rule, and I would
prefer not having to delete FLAMEs because someone in the
hierarchy is complaining about the content of the FLAME
file. Keep it clean, if at all possible.
0 I guess that's about it for now. Thanks for reading (if
you've gone this far) and I'll see you next issue!
- 2
1
0 Vm-Com Issue 2.2
0 Designing a DataBase
+ Designing a DataBase
0 Howie Ducat (Howie@Bklyn).
-
The idea of having a database is that it provides a
centralized control for a user's/company's data. This in
itself will reduce redundancy of data, hold inconsistencies
in data to a minimum (insure integrity), allow data to be
shared by more than one user if necessary, and make a data
security system somewhat easier to implement. The following
is an outline of considerations when designing a database.
0 Requirements:
+ Requirements:
0 Before we can begin, we must first look at the
requirements of the company. We must see the type of data
that the company feels will be relevant to their daily
processing. At the same time we are viewing the data
specifications, we should also be defining the data
elements. The two previous steps will familiarize us with
the general types of data, how we might store the data, and
define what exactly is needed and not needed in the
database.
0 Another good idea at this point is to find out from the
company how they will use the database, when they will use
it, and why they believe they need one. Will they require
immediate updating of records or will end-of-day batch
processing serve their purpose? What type of response time
will they need (not want, as in the real world, it is plain
to see that everyone wants everything 2 minutes ago)? We
should try to ascertain the company's rate of growth to
allow for extra space/room to expand if necessary, as
easily and with as little downtime as possible.
0 After the requirements have been outlined we feel that
a few things should be done. First, we must consider
personnel planning, cost comparisons, cost/benefit analysis,
and a project budget. We will need to know how to divide
the total project budget between all needs in order to
complete the project. We must hire two or three programmer
analysts (depending on the urgency of the project), and one
or two systems personnel to take care of the operating
system's needs (as well as the possible formatting of
external storage devices, and channeling I/O flow for
maximum speed and efficiency). Also needed is a database
manager, who will make key decisions on insertion and
deletion of key data elements, expansion of storage
capacity, and purchases of additional hardware and software
after the database is in production. After this, a clear
schedule of installation and development of the database
must be made, involving matters such as how long each step
0 3
1
0 Vm-Com Issue 2.2
0 would take, how much time would be spent on aspects, and who
will take care of each aspect. We should allow for one or
two small setbacks per step so as to bring the scheduling
closer to a real world situation.
0 ACCESS METHODS:
+ ACCESS METHODS:
0 We are applying the following rules to our choice of
access methods:
0 1) We are not considering purely sequential media, such as
magnetic tape, since it imposes too many restrictions to be
useful to our database EXCEPT as a medium for journaling
activity.
0 2) We make no attempt to predict what future DASD or other
external storage classes will be like, but if a new large
capacity DASD were to be produced, we will be able to take
immediate advantage of it, provided we set up data
independently from disk addressing keys (random/direct
accessing).
0 We must take into account the volume of data and how it
will be used in order to choose the access method. If more
than say, 70% of all records will be posted each day,
sequential files might be best. However, if you post few
records but do a large number of inquiries, ISAM, random, or
direct access methods might be a good idea (no updating
though!). If you will be doing little to moderate updating,
and comparing many data elements, an inverted file structure
is one possibility. A hierarchical file structure might also
be used, which seems an even better choice, because when a
user does a data comparison he will see "one record" when
there are really multiple records, existing in different
files, possibly with different LRECL's and BLKSIZ's, thus
providing more flexibility.
0 SECURITY & PRIVACY:
+ SECURITY & PRIVACY:
0 With the ever increasing number of "Hackers", security
is becoming more and more important. First, we will briefly
discuss data security. A simple yet effective precaution
against internal (within Data Center) sabotage is a magnetic
field detector. The detector alerts management that someone
is attempting to enter the Computer Center with a magnetic
device. A magnetic device can do serious damage to Direct
Access Storage Devices, in-CPU program instructions, and
Magnetic Tapes (which transaction logs are usually kept on)
by simply erasing, or by reversing the information's
meaning. Another type of Data Center security are Magnetic
Card Readers with a teletype, (to produce a hardcopy of who
enters which areas of the Center) and a door Lock/Unlock
system. This will (almost) ensure that no one gets into an
area where they do not belong, therefore lowering the
0 4
1
0 Vm-Com Issue 2.2
0 probability of internal sabotage.
0 Access security should be considered at this time as
well. If data is highly confidential, different access
levels can be set up so that only certain users or
administrators can view it.
0 Examples:
0 A) Database Administrator: Unrestrained access
to
to entire relation for ALL types of
operations.
B) Payroll Department: May see ONLY Payroll
related
data. ie: Name, Address, SS#, Salary, # of
dependents
C) Employee: Can only VIEW his/her record. NO
UPDATING is permitted.
0 The above can be achieved by what is called Identification
and Authentication, which is comprised of user names and
passwords along with link passwords to specific devices
where certain data lie.
0 MANAGEMENT CONSIDERATIONS:
+ MANAGEMENT CONSIDERATIONS:
0 Management must consider the following when the
database is in the designing stages: user's needs, what
types of reports will be required by different department
personnel, what maximum response time should be, and how
"User Friendly" should the database be.
0 Management should also try to provide maximum
processing time (or minimum downtime), design the database
within the budget of the company, and try to make program
functions as modular as possible, thus facilitating easy
changes/additions to program code in as short a time as
possible.
- These are just the very basic considerations for even
beginning to design a database. Once specifications have
been received, and work has begun, there are many other
things that must be considered.
0 Special thanks to Robert Dong (KAMIKAZE@BKLYN) whose
presence in my database class prevented my premature
insanity. -H.D.
-
-
5
1
0 Vm-Com Issue 2.2
0 IBM/370 I/O Architecture
+ IBM/370 I/O Architecture
0 Andrew T. Robinson (ANDY@MAINE)
-
Computers in general would be pretty useless if they did
not have some method for interacting with the outside world.
The intent of this article is to introduce the structure of
the IBM 370 I/O system, and I/O programming in general.
0 IBM s/370 computers use a powerful interrupt-driven I/O
system. Doing I/O does not tie up, or INTERLOCK, the CPU.
Programs can continue executing while I/O is being completed
on a device. This is accomplished by CHANNELS. A channel is
basically a small computer that handles I/O operations.
Every device attached to the CPU has an ADDRESS. An example
of this address is the line-number that is returned from a
QUERY NAMES command next to the userid. This address is
often referred to as 'cuu' where 'c' is the channel address,
and 'uu' is the unit address. This means that up to 16
channels (0-F) may be attached to a 370 CPU. Each channel
may have attached to it either 256 devices, or 16
subchannels with 16 devices each.
0 Channels come in two basic varieties, SELECTOR, which
handle high-speed I/O devices such as tapes or disks, and
MULTIPLEXOR, which handle low speed devices such as
terminals. Selector channels are dedicated to one device at
a time. If the tape drives are on channel 5, only one tape
drive at a time is serviced. Multiplexor channels handle
several devices simultaneously, such as terminals. This is
necessary to provide the real-time response needed from
interactive terminals.
0 The IBM/370 machine language actually possesses very few
instructions dealing with I/O. There are instructions to
start, test, and halt I/O operations on a specific device,
but the actual operations are performed by a CHANNEL PROGRAM
kept in main storage. A channel program consists of a
series of 8-byte words called CHANNEL COMMANDS WORDS (CCWs),
which specify operations to be performed, such as a read or
a write to a device, etc. In general, the channel commands
are device specific, which is to say, a WRITE command for a
terminal will not usually work on a disk drive. The channel
command also contains such things as the address of data to
be written, or into which data is to be read, and how many
bytes are to be transferred. There is also a 'transfer in
channel' CCW (channel command word) which allows loops in
channel programs. A channel program may be arbitrarily
long, and perform many operations in a single invokation.
-
0 6
1
0 Vm-Com Issue 2.2
0 To initiate I/O operations the programmer must first
place the address of his channel program in a predefined
area of storage known as the CHANNEL ADDRESS WORD (CAW). The
CAW is located at the fixed storage address x'48' (48
hexadecimal). Once the address of the channel program is
stored in the CAW, you initiate the I/O operation with a
Start I/O (SIO) instruction. SIO causes the channel to begin
executing your channel program.
0 Now the user program may continue to execute. However,
it is generally recommended that the I/O operations are
allowed to complete before execution continues. This is
accomplished by one of two ways: a Test I/O (TIO) loop, or
a PROGRAM WAIT. In this article, we will discuss the TIO
loop method for determining I/O completion.
0 Generally you set up the TIO loop immediately after the
SIO instruction. It is simply a TIO instruction for the
specific device, followed by a series of BRANCH instructions
for specific condition codes. For a TIO, the following
condition codes are defined:
0 CC = 0 -- channel and device available
CC = 1 -- channel status word stored
CC = 2 -- device is busy (executing channel program)
CC = 3 -- device is not operational
0 If the condition code is 3 you should leave the loop
immediately. In more sophisticated applications, you would
test the Channel Status Word stored when you get a CC of 1,
but in this example, we will wait for a CC of 0 and then
exit the loop. The Channel Status Word is stored after a
channel interrupt, and contains detailed information
regarding the progress of the I/O operations. The CSW will
be discussed in a later article.
0 The following assembler program illustrates the
principles discussed above. Instructions for assembling and
executing it follow the program. The program simply writes
a line of text to your terminal, which is (usually) at
device address X'009' (that is, channel 0, device 09):
-
-
-
-
- 7
1
0 Vm-Com Issue 2.2
0 WRITERM CSECT
STM R14,R12,12(R13) save registers passed by CMS
LR R12,R15 load our entrypoint into R12
USING WRITERM,R12 address this program
*
* In order to store in location x'48' we must have a nucleus
* storage key,which we accomplish with the CMS DMSKEY macro.
*
DMSKEY NUCLEUS establish a zero storage key
LA R4,CHANPROG get the address of our channel
* program
ST R4,X'48' store into the CAW
DMSKEY RESET restore the last storage key
*
* now having stored the ADDRESS of our channel program, we
* initiate I/O on the CMS console (device x'009')
*
SIO X'009' X'009' is the device on which
* I/O is done
*
* now do a TIO loop to make sure I/O is complete. We simply
* wait for a condition code of zero, and then drop out.
*
TESTLOOP TIO X'009' test device
BO OUTOFIT BO is for CC=3,
* device not operational
BNZ TESTLOOP if CC Not Zero, do loop again
*
* Now we are through doing I/O, go back to CMS.
*
OUTOFIT LM R14,R12,12(R13) get registers back
XR R15,R15 make a zero return code
BR R14 return to CMS
*
* the following area is the channel program, consisting of 1
* channel command word, which writes the message at MSG to
* your terminal. The X'01' is the command code for a WRITE,
* X'20' is the CCW flag which indicates no more CCWs in
* chain. If the channel program is more than 1 CCW long, the
* X'20' would be changed to an X'60', in all the CCWs except
* the last which would be kept X'20'.
*
CHANPROG DS 0D align on double word boundary
CCW X'01',MSG,X'20',MSGLEN
*
* The message area to be written
*
MSG DC C'This is a line output to the terminal.'
MSGLEN EQU *-MSG length of message
*
* following are required macro definitions
*
REGEQU
END WRITERM
0 8
1
0 Vm-Com Issue 2.2
0 This program actually works!! To assemble and execute
it, issue the following commands to CMS:
0 GLOBAL MACLIB CMSLIB DMSSP
ASSEMBLE WRITERM
LOAD WRITERM
GENMOD
WRITERM
0 This program illustrates the principles discussed above.
It is relatively simple but should give you an idea of what
is described in the article. My next article will discuss
in detail some of the basic ideas presented above, including
the use of interrupts and checking the CSW for I/O
information.
-
|