Professional Documents
Culture Documents
Openting
System
Jonathan E. Sisk
and
Steve VanAndaie
PICK is a trademark of PICK Systems, which is not affiliated with Hayden Book
Company.
Copyright © 1985 by Jonathan E. Sisk and Steve VanArsdale. All rights reserved. No
part at this book may be reprinted, or reproduced, or utilized in any form or by any
electronic, mechanical, or other means, now known or hereafter invented, including
photocopying and recording, or in any information storage and retrieval system, with-
out permission in writing from the Publisher.
2 3 4 5 6 7 8 9
85 86 87 88 89 90 91 92 93 YEAR
This book is dedicated to the thousands of PICK users who "kept the
faith" through the years; to Henry Eggers, whose wisdom kept it on
track; and to Barbi and Carol, whose patience made it possible.
Thank you.
And thanks to the two Pertec computers and the JET word processor
that saw us through.
CONTENTS
Appendixes
A. Glossary 785
B. Software and Vendors 789
C. ASCII Codes 199
D. Verb Formats 207
E. Conversion/Correlative Reference 210
F. Dictionary Listings from Tutorials 224
Index 227
CHAPTER
1
An Introduction to the
PICK System
1
2 EXPLORING THE PICK OPERATING SYSTEM
This concept was the basis for an advanced approach in the late
1960s, which led to a system that performed all the management of
data automatically, letting the user store and retrieve information by
referring to it by name. The approach was implemented with the user
working interactively with the computer, using simple English sen-
tences on a CRT screen. The system itself was developed to be
hardware-independent, designed to run efficiently on small
computers that shared expensive computer resources like memory
and printers. The computer's operating system would allocate space,
handle files, organize and reorganize disk space dynamically, so that
users could concentrate on the data instead of on the data process-
ing system.
The approach was used by Don Nelson and Dick Pick to create the
operating system that today bears Dick's name. The system was
made a commercial reality by the Microdata Corporation in 1974,
and has been successfully implemented on dozens of small and large
computers since then. In 1984, the PICK Operating System was im-
plemented on both the IBM Personal Computer XT and the IBM
4300 mainframe, completing the spectrum from personal micro to
multi-user giant. And the "best-kept secret in the industry" is out of
the bag.
PICK is more than an operating system that spans a decade; it is an
advanced user environment that can change the way data is per-
ceived and manipulated. Moreover, this virtual memory, relational
data base, user-oriented system may well represent a milestone in
this generation of computers.
And the process continues. Now let's consider the PICK System
itself.
PICK AS A SPHERE
ACCESS LEVEL
PROC
ASSEMBLER
ABS
THE
PICK
WORLD
TCl
~A~([
FILE
J
DICTIONARY
FILE I
These rooms represent PICK files, and each room is actually two sep-
arate rooms. The first room or file is called a Dictionary. It contains
special types of items that tell us and the PICK System about the
items to be found in the next room. The second room is the Data
file, and it contains dozens or hundreds or thousands of data items;
the only restriction on the number of data items in a file is the physi-
cal capacity of disk storage.
Each data item can be thought of as a folder. The folder is the equiv-
alent of a data record in any other system, but is called an Item in a
PICK System because of some very special aspects of PICK items. For
example, each PICK item in a file can include data from other items
in other files. More about that later. Each folder has a unique name,
which is a string of letters and/or numbers called an Item-Id.
Within each folder or item are separate sheets of paper. Each sheet
of paper is called an Attribute. The term attribute is roughly
analagous to the term "field." The items in the outer room, the dic-
tionary, tell us how to read and handle each attribute in the data
items. For example, some sheets/attributes in the folder/item are to
have special processing applied before reading, like dates, which are
recorded in a unique internal form for efficiency and reduction of
storage space. This special processing, often called "conversion,"
prepares the data for selection and examination. Other data defini-
tion items may call for sheets/attributes to be combined with other
attributes in the folder/item to produce "logical" attributes that really
don't exist until we look in the folder. Still other sheet/attributes
have many different values on them, and each value is to be associ-
ated with a corresponding value on another sheet/attribute in the
folder. Finally, some attributes in the item are to be translated,
through other folders in other rooms, into new attributes. Since the
outer dictionary room has the translation specification in the item
10 EXPLORING THE PICK OPERATING SYSTEM
that defines this attribute, the PICK System performs the translation
automatically, as the attribute is retrieved from the item and dis-
played. We see only the proper information, converted, combined,
translated, or perhaps all three, whenever we request the folder or
item from the PICK System.
ATTRIBUTE
(VALUES)
2
Overview of the PICK
Operating System
USER'S VIEW
fEll~ILE
~
fEll ~IL:ICT
~~
fEll ~IL;ICT
~~ DICT ~___P_IC_K_/_B_A_SI_C____~tJ
~FILE ,-------,
EDITOR
DICT
11
- - - - - --
LOGICAL VIEW
I
FRAME II FRAME I
I
FRAME II FRAME I I II II 1I I
I II I 0 -1 1.1
I_I
1.1 1.11
I_~-.J
FRAME
I II
FRAME
I
- --. L-I
I-I
I-I I-O...J
CD-6tJ
FRAME FRAME SYSTEM
~
I II I
~C2J0
FRAME FRAME
I II
FRAME FRAME I
I II
FRAME FRAME I OVERFLOW FRAMES
FILES
~'--------------------~------------------~)
V
VIRTUAL WORKSPACE
The third view of the system is oriented more toward the computer
hardware. It deals with the way the PICK System uses real computer
memory (or RAM) and disk and tape storage. This is the "physical"
view, associated with the physical structure of data items throughout
the system. From time to time we'll discuss the data and the PICK
System processes from the physical view because that is sometimes
the best way to understand what is occurring. All three views of the
PICK System are valid, however, because all three are closely
integrated in any clear understanding of what is going on.
OVERVIEW OF THE PICK OPERATING SYSTEM 13
Looking down there at the PICK world, we see that in some ways the
PICK Operating System is similar to the shell-like operating systems
such as UNIX and the XENIX-based MS-DOS. However, in most
ways it is not. It would be an oversimplification to compare the com-
prehensive PICK environment with skeletal computer control pro-
grams. The PICK System does more than simply control the devices
and activate programs. It is composed of system processes within
user processes. Each supports and services the others, creating an
environment of data processing tools.
The virtual memory monitor (analogous to a "kernel") supports the
hardware resources used by the relational data base software. The re-
lational data base supports ACCESS, the English-language data retrie-
val process, a major feature of the user interface. The user interface
assists the application software with user-developed processes. The
application software creates the data, which is managed by the virtu-
al memory software.
Now let's look at the "virtual" structure of the system, or how the
PICK System actually stores data and manages the computer's disk
space.
The PICK file structure is dependent on the PICK pointer system. A
file pointer is a data item that tells the operating system where to lo-
cate a particular file on the disk. Pointers are automatically created
and maintained by the system. They are essential in an environment
with a continuously changing virtual memory workspace. The pointer
system is based upon a hierarchy of file pointers.
SYSTEM SYSTEM
FILE LEVEL
MASTER MASTER
DieT DieT
DieT
DATA
The topmost category is pointer items to files that are shared by all
users. Most of the files of this category are all but invisible to the user
since they are used almost exclusively by the operating system. The
most notable of the files in this category is the SYSTEM file.
OVERVIEW OF THE PICK OPERATING SYSTEM 15
The MD is a file reserved for items that define the verbs and
commands that make up the user interface. Also stored in this file are
the file-defining items that point to the third level of files, the file dic-
tionaries. As will be discussed in a later chapter, each dictionary con-
tains attribute-defining items, which define the fields or attributes to
be found in the data files. There is also one file-defining item in the
dictionary that points to the data file. This item is the last link in the
chain by which the PICK System can always locate a file. Using the
pointer system, the SYSTEM file tells the location of the account MD.
This file contains items that, in turn, point to the dictionary, where
one item always points to the data.
The pointer items are used exclusively by the operating system to
access the virtual files. Special memory-mapping techniques are uti-
lized to make the PICK accessing method extremely efficient. These
techniques are so effective that the PICK System is quite capable of
supporting eight interactive users on an 8-bit computer with 64K of
main memory. In today's 32-bit computers, the PICK System can
operate almost instantaneously, even with a full load of interactive
terminal users.
PICK's unique scheme for data access is described by its developers
as a "hashed open bucket" access method, which groups the items
according to their unique item name. The PICK accessing method
should not be confused with an index-imposed accessing scheme
such as an Indexed Sequential Accessing Method (ISAM) or a Keyed
Sequential Accessing Method (KSAM), or even a Virtual Sequential
Accessing Method (VSAM). Other systems might require such index-
es between data files, with data items in one file which point to data
items in another file. But such indexes are created by the user and
must be maintained; they are inevitably out of date. They are usually
redundant; the PICK System provides nearly unlimited accessing ca-
pability without indexes through the dictionary files (see Section 2.3).
The file-defining items, on the other hand, are used on a much lower
level of the PICK world, down in the virtual memory core. They
might be considered the electrical network of the PICK world, visible
to the user on the surface but actually used only by the utility com-
16 EXPLORING THE PICK OPERATING SYSTEM
pany. When the user causes the system to access a file (like turning
on an electrical appliance), the pointers are called into action but the
actual process is invisible to the user (just as the electrical network is
not apparent, only the result). The PICK file pointer system is created
by, and used exclusively by, the operating system, which can con-
nect the pointers and make the accesses quickly and efficiently.
Since pointers exist as data items all over the system, it is likely that
the user will encounter them from time to time. Let's examine these
items more closely, beginning at the master dictionary.
The MD is used for storing all the verb-defining items used to inter-
pret commands typed by the user (see "Verb Formats," Appendix D).
It is also the home of the file-defining items. These file-defining items
are created by the CREATE-FILE verb. When the user asks the system
to create a file, this item is created in the account MD, and it con-
tains the address of the first frame of the dictionary portion of the
file. The CREATE-FI LE verb also creates one item in the dictionary
portion of the file; this is another file-defining item which points to
the first frame of the data portion of the file.
File-defining items have the following format:
000 Filename (the name of the file is the item-id of this item)
001 D/CODE; by default, automatically a D; other forms include
DC, DY, DX, and DZ, which are explained later
002 Base FID; the first frame (now called a group) of the contiguous
block reserved for this file
003 Modulo; the number of frames (or groups) of data items in the
block of frames associated with this file
004 Separation; the number of frames per group, normally 1
005 Retrieval code; security code providing read-only access to the
file
006 Update code; security code providing read/write protection to a
file
007 Password (in items in the SYSTEM file)
008 Privilege level in the SYSTEM file; privilege levels are SYSO,
SYS1, and SYS2
009 Justification; defines how item-ids are to be presented, i.e., L, R,
T, and U; defaults to L after initial creation; in the SYSTEM file,
the U option causes the ACC file to be updated each time the
account is accessed, providing an audit trail
010 Column width; indicates the width of the item-id field on output
011 (unused)
012 (unused)
OVERVIEW OF THE PICK OPERATING SYSTEM 17
Let's examine the format and this new terminology in more detail.
The first attribute, the D/CODE, identifies this item as a file-defining
item, or file pointer. It is automatically created with a D in attribute
one, but can be changed to any of the following legal forms, each of
which has a special meaning:
The second attribute, the Base FID, is a number placed into the file
pointer during the CREATE-FILE process. It is the frame-id of the first
frame of the contiguous block of frames reserved for the file. A frame
is a SOO-byte segment of file data, and a frame-id is a number used to
reference the particular segment. Later we will examine one of these
frames using this number and the DUMP command.
The third attribute is called the modulo, and it indicates the number
of groups in the file. Let's take a brief side trip here to explain the
concept of groups. When the file was initially created, a contiguous
(logically connected or sequential) block of frames was reserved for
the file. Each of these frames is capable of storing SOO bytes of data.
The PICK access method determines in which frame a particular data
item will be recorded, based on the particular item-id and the
number of frames (modulo). Since more than one data item can re-
side in a frame, the frame may eventually overflow, and extra storage
will be automatically linked to the frame. Consequently, once frames
are attached to a file, they are referred to as groups because each
frame can be the first of a whole chain of frames.
18 EXPLORING THE PICK OPERATING SYSTEM
SYSO System level 0 (zero) is the lowest privilege level. The users
with this privilege level are limited to the Tel processes and
the application software; they are barred from changing items
in the MD, activating the tape drives or diskette drives, and use
OVERVIEW OF THE PICK OPERATING SYSTEM 19
of any of the SYS 1 features. These users, for the most part, can-
not create files or user processes of their own.
SYSl System Levell. Users with this privilege level have limited
access to the PICK processors. However, these users cannot
use the Assembly Language System Debugger, the FILE-SAVE
System Backup command, the :FILELOAD System Restore
command, and the DUMP Virtual Frame Display command.
These users are effectively barred from access to System-level
files and the main SYSPROG account.
SYS2 System Level 2. This is the highest level of PICK System privi-
leges, usually reserved for the SYSPROG account user and the
system administrators and technicians. These individuals are
entrusted with access to any files and all processes, since they
usually will have to fix them if anything goes wrong. However,
even the user with this privilege level can be denied access to
secured data with an application software encryption scheme.
L Left-justify output
R Right-justify output
T Text-justify output. Typically not used in file-defining items, since
it indicates that the output line should be split on a blank rather
than in the middle of a word, and item-ids should never contain
blanks.
U In the SYSTEM file, this means to update the ACC file. Anywhere
else, this means unconditional left-justify output, meaning that re-
gardless of how long the output is for an attribute, it will not wrap
20 EXPLORING THE PICK OPERATING SYSTEM
around to the next line of the column when the data exceeds the
column width specified in attribute 10 of the defining item.
Attributes 11 and 12 are reserved, and generally have nothing in them.
Attribute 13 is used by the PICK System backup (save) and restore
processes. Like all computer systems, PICK files should be backed up
to off-line media frequently. However, PICK files should also be de-
leted and restored from tape periodically. This tests the quality of the
backup tapes and allows the system to reorganize the files into con-
tiguous frames. Between restores, highly active files will link together
a lot of scattered frames. This is not particularly serious, unless the
linked frames are widely separated in the virtual workspace and con-
sequently on the physical disk surface; operations that involve all the
items in a file will be slowed. Periodically restoring from backup
tapes improves performance of these operations.
A widely used program is available to induce the system into reallo-
cating file modulos, with the intent of automatically resizing files
more efficiently. The program calculates a new modulo for every file
with a D or DC code in the first attribute of the file-defining item.
This new modulo is adjusted for the changes that have occurred in
the file since the last restore of the file. When the file is restored, the
PICK System automatically uses the modulo (and a separation of 1)
stored in attribute 13 of the file-defining item. (The user can override
this reallocation, as in the case of transaction files or temporary files,
which are often empty at system backup time, by placing a period (.)
in attribute thirteen.)
This discussion of file-defining items would not be complete without
mention of one of the secrets of the PICK world. Experienced PICK
users will often speak of the "Q-pointer." This is a master dictionary
file pointer item that does not contain the frame-id of a file; instead,
it merely points to a real file-defining item. It is used to point to a file
located in another account, whose file-defining item is located in that
account's MD. Occasionally it is used to point to a file within the
same account to establish a different name for the file. Effectively,
Q-pointers are special pointers allowed by the relational data base
software to access files that may not exist in the user's account.
A Q-pointer item in an MD has the following format:
001 "Q"
002 Account name where the file resides
OVERVIEW OF THE PICK OPERATING SYSTEM 21
That ends the first step of our tour, the PICK world's "signposts" or
file-defining items, which tell where everything is located. This brief
explanation of file-defining items describes the relationship between
the user's files and the virtual memory of the PICK Operating System.
In Chapter 9 we'll look at the relationship between the virtual mem-
ory and the physical disk storage, but first we'll look into the diction-
aries and examine the attribute-defining items, which describe how
to read and display the data values stored in the items in the data file.
-ATTRIBUTE 2
-3
-4
ITEM BYTE
PHYSICAL ITEM-ID /\ ATTRIBUTE 1/\ ATTRIBUTE 2 /\ ATTRIBUTE 3/\ 4 1\ 1\ 1\_
COUNT
STRUCTURE
t
(HEX)
1
(ASCII 254)
r
(ASCII 255)
ITEM SIZES
QUOTES FILE ITEMS
DICTIONARY FILE
~ REDEFINES
l ATTR.2
DEFINES
THIS ITEM ATTR.2
DEFINES
ATTR. OF
THIS ITEM ALL DATA
POINTS TO ITEMS
DATA FILE;
USED FOR
DATA
RETRIEVAL
000 Attribute name (the item-id is the name of the attribute that will
be used in ACCESS sentences)
OVERVIEW OF THE PICK OPERATING SYSTEM 25
3
The· User Processes: Tel
27
28 EXPLORING THE PICK OPERATING SYSTEM
item also stored in the SYSTEM file (see Section 2.2). One user ID
that should work is SYSPROG; it is the first and most powerful ac-
count on any PICK System. Fortunately, PICK provides for a pass-
word in the lOGON item in the SYSTEM file, and the SYSPROG
logon is usually protected with a complex password. So, you'll have
to have a valid user ID to log onto the PICK System and the pass-
word associated with it. See your "travel agent," the system
administrator.
Once the user has entered the user ID and the password, the PICK
System activates the user's process. This involves establishing a proc-
ess control block in the primary workspace set aside for the user's
port. Then the system activates and points TCl to the appropriate
master dictionary file for the user ID. Like a faithful gatekeeper, the
TCl process always looks for an item in the user's MD with the same
name as the user ID. If one is located, TCl will immediately execute
the command(s) stored there. That's how some user IDs get whisked
off directly into an application system without so much as a glimpse
of TCL.
If no "logon PROC," as it is called, is located in the user's MD, then
the TCl process prompts the user with a">". The prompt character
varies among manufacturers, but it is usually a distinctive single char-
acter, such as ">". This prompt means that the TCl process is ready
for the user to enter a "verb," which is a command from the Terminal
Control language.
TCl is a rich combination of system commands, user functions, file
commands, and commands to control peripheral devices. There are
several special verbs that open doors into other levels of PICK. There
are even TCl commands that can alter the entire system. A skilled
user can even create verbs, combining the best of TCl into a kind of
personal language.
Account Names
Since it is likely that you do not have your own account name yet,
we will use the SYSPROG account for this illustration. The SYSPROG
account is provided with all PICK Systems and is the account used
for most maintenance functions. We'll talk about creating your own
account later in this chapter.
THE USER PROCESSES: TCl 29
By the way, here is a note on the local customs. In a PICK System, al-
most every keyboard entry must be followed by a carriage return.
This may be called "return" or "enter" or "new line", but it means the
same thing. If your terminal does not have a return key, you may use
linefeed. The convention of abbreviating "carriage return" to <cr>
is used throughout this entire tutorial. Another convention is that text
in boldface is used in examples as the characters that should be
entered by the operator.
At the lOGON prompt, enter SYSPROG, followed by a <cr>. All
characters in the word SYSPROG must be upper case.
You may be prompted for a password. If so, obtain the password and
enter it where prompted, followed by a <cr>. Note that the pass-
word does not display on the screen as it is being entered.
A message will display indicating the time of day that you logged on
and the prompt character (» appears on the leftmost column of the
screen. This character indicates that you are at the Terminal Control
language, or TCl, the point from which all operations begin.
Note that the actual text of the "welcome" message may vary from
what appears above. This is typically customized by each licensee to
suit individual taste and marketing needs.
Prompt Characters
The first thing that appears on the screen after logging on is usually
the prompt character. There are several prompt characters to be
come familiar with while using the PICK System:
<ClL>X Cancels the current line and returns control to TCL. Also
used at the end of a page on a multipage display to return control
directly to TCL.
<ClL>W Backspaces one word (to the previous space) in a TCl
command.
<ClL>R Retypes the current line.
<CTL>H Backspaces one character. May be used in place of the
backspace key.
<ClL> J Performs linefeed.
<ClL>1 Tabs to next tab stop.
<ClL>S On most implementations of PICK, this produces an
XOFF signal, which stops transmission to the line until an XON is
generated.
<ClL>Q Generates an XON, which restarts transmission after an
XOFF.
<ClL> I shift 1/\ This combination of three keys-CONTROL,
SHIFT, and "up arrow" or "wedge up"-produces an attribute
mark, used by the PICK System to delimit a field within an item or
record. Note that the {shift} is required only if the" 1\" is a shifted
character on the terminal keyboard.
<ClL> I shift I] This combination produces a value mark, used by
the PICK System to delimit, or logically separate, values within
fields. Once again, the {shift} is required only if the 'T' is a shifted
character on the terminal keyboard.
Type-Ahead Buffers
Most PICK systems provide a feature referred to as type-ahead buf-
fers. This feature allows characters to be entered while the system is
currently working on another process. For example, if you are per-
THE USER PROCESSES: TCl 31
forming a SORT or SELECT of a file, you may "type ahead" the next
command that you want issued upon completion of this current
process.
The characters that you enter as subsequent commands or responses
to prompts are not displayed on the screen as they are entered. They
will be displayed when they are retrieved and executed by the sys-
tem. These type-ahead buffers vary in size according to the machine,
and range in size from 16 to 128 characters.
If you have an entry in your type-ahead buffer and you BREAK into
either the PICK/BASIC or the Assembler Debugger, the type-ahead
buffer will be cleared and reset to empty.
TERMINATING A PROCESS
The first response option instructs the system to terminate the pro-
gram by entering END, followed by a <cr>, which returns control
back to Tel.
break
I 6.178
!END<cr>
>
TERMINATING A SESSION
If you wish to go to the lOGON process, thereby logging off from
this account, you may enter OFF followed by a <cr>.
break
I 6.178
!OFF<cr>
Please enter your user ID
break
I 6.178
!G<cr>
>OFF<cr>
Note: If you just logged off, please log back on and catch up with the
group.
Just like stocks, bonds, and magic spells, there are different classes of
TCl verbs. The first are TCl-1 ("Tickle One") commands. These typi-
cally require only one word to be typed at the TCl prompt, followed
THE USER PROCESSES: TCl 33
TCL·I Verbs
This class of command typically requires only the command followed
by a carriage return. However, in some cases, other data may be
entered with a TCl-1 command. The only common denominator in
TCl-1 commands is that a filename and an item-id specification are
not required.
Example:
>TIME<cr>
12:00:00 26 MAY 1985
TCL·I Commands-Tutorial
Here are some of the TCl-1 verbs one will encounter in a PICK Sys-
tem. Each manufacturer adds a couple of dozen, and then the system
administrator usually adds a few, and of course each system techni-
cian has a few favorites as well. But to avoid embarrassment when
touring around on the surface of the PICK Operating System, one
should be able to recognize and use the following TCl-1 verbs.
The first of these are the Calculator function commands. Although
they are not used very often, they are easy to use and occasionally
very handy.
The ADDD command adds two integer numbers.
>ADDD 15 15<cr>
30
The DIVD command divides the first integer number by the second
integer number.
>DIVD 39 4<cr>
9 3
>MULD 15 IS<cr>
225
The SUBD command subtracts the second integer number from the
first integer number.
>SUBD 15 37<cr>
28
>ADDX IS IS<cr>
2A
>DIVX 39 4<cr>
E I
>MULX 15 IS<cr>
IB9
>SUBX U 37<cr>
2E
>DTR 50<cr>
32
>DTR 2 50<cr>
110010
>RTD 32<cr>
50
>RTD 2 110010
50
DISPLAYING FIELDS
>LISTFILES<cr>
36 EXPLORING THE PICK OPERATING SYSTEM
or
>LISTFILES LPTR<cr>
DISPLAYING COMMANDS
>LISTVERBS<cr>
or
>LISTVERBS LPTR<cr>
>LISTCONN<cr>
or
>LISTCONN LPTR<cr>
>LISTU<cr>
displays the port number, account name, time, and date logged on
and the locations of all users currently active on the system.
Here are several more fundamental TCL-I commands:
>LOGON<cr>
CHANNEL, NAME :l,SYSPROG<cr>
[533J LOGON SUCCESSFUL.
The number 533 indicates the item-id of the ERRMSG item that con-
tains the text for this message.
If, after a minute or so, no message returns indicating success at log-
ging this terminal on, the user must break out of the process and re-
turn control to TCl by entering END<cr>. (Note that when the
LOGON command "hangs up" like this, it's likely that there may be
no terminal on the port. This symptom is characteristic of most of the
new microprocessor implementations of the PICK System. To correct
the problem, simply plug a CRT into the port.)
>LOGOFF<cr>
CHANNEL: l<cr>
[534J LOGOFF SUCCESSFUL.
I I
I --+ text of the message
--+ line number to which the message is directed
--+ command
Note that messages being sent require only that that user be logged
onto the machine. If a user is in the middle of a process, such as a
data entry screen, the message will unconditionally appear on his or
her screen wherever the cursor is currently positioned, which may
upset whatever is currently on the screen. Keep this in mind before
sending messages to everyone on the system because it tends to
upset others productively engaged in the PICK world.
>POVF<cr>
This displays the available disk space, sometimes called the "over-
flow table." This overflow space is the pool from which frames are
obtained for attaching extra storage space to files.
THE USER PROCESSES: TCl 39
>\lHO<cr>
o SYSPROG
This indicates the port number and the logon-ID (account name) of
the user. This may alternately be used to determine who is on
another line.
>WO 3<cr>
3 ACCOUNTI NG
HH HH EEEEEE LL LL 0000000
HH HH EE LL LL 00 00
HH HH EE LL LL 00 00
HHHHHHH EEEEEE Ll LL 00 00
HH HH EE LL LL 00 00
HH HH EE LL LL 00 00
HH HH EEEEEE LLLLLL LLLLLL 0000000
When this option is used, the system printer will suddenly print a
full-page greeting. On every tour someone sheepishly collects such a
memento.
40 EXPLORING THE PICK OPERATING SYSTEM
TCl-1i Verbs
A second class of TCl "magic words" is known, not surprisingly, as
TCl-11 verbs. These commands typically act upon or with data that is
in one of the user's files or file dictionaries. Consequently, TCl-1i
verbs usually require a filename and list of one or more item-ids. In
most cases, if the user does not enter what the PICK System requires,
TCl politely prompts for the missing specifications.
TCl-1i verbs require a verb, filename, and itemlist specification. Most
verbs also allow a list of options, enclosed in parentheses, at the end
of the command line.
EXAMPLES OF FILENAMES
The filename specification may be any of the following forms:
pointer will be found, and the second filename indicates the data
section. For example:
EXAMPLES OF ITEMLISTS
The item list may be any of the following three forms:
(Note that the asterisk (*) character in this form signifies all the item-
ids in the file. Items are retrieved in hash order, that is, the random
sequence assigned by the hashing algorithm when the items were
stored.)
CREATING AN ACCOUNT
The process to create the new user account is initiated with the
CREATE-ACCOUNT command, as in the following example:
ACCOUNT NAME?CLASS<cr>
RETRIEVAL CODES
The next prompt is for the retrieval codes to associate with the ac-
count. Retrieval codes provide a means of adding file-level protec-
tion to prevent reading and/or writing to and from the files in the ac-
count. For now, skip this prompt by entering a <cr>.
UPDATE CODES
The next prompt is for the update codes to associate with the ac-
count. These codes function exactly like the retrieval codes and
should be skipped for this portion of the session by entering a <cr>.
L/UPD-CODE( S) ?<cr>
PASSWORD
The next prompt is for the account password. This may be any com-
bination of alphabetic characters and/or numbers. If used, it will be
THE USER PROCESSES; TCl 43
requested for entry each time the account is accessed. Enter a <cr>
to skip over (and omit) the password. The next section in this chapter
deals with adding, changing, and deleting passwords.
PASSWORD?<cr>
PRIVILEGE LEVEL
The next prompt is for the privilege level for the account. The privi-
lege level determines the capabilities (or restrictions) to impose upon
the account, and are as follows:
SYSO The lowest of the levels. This prevents the use of magnetic
media and restricts the ability to update the MD and all of the
SYSI features.
SYSI Prevents the use of the System Debugger, magnetic media,
and the Assembler.
SYS2 The highest of the levels. Allows access to any function.
For your account, enter SYS2 (the highest) privilege level, followed
by a <cr>.
PRIVILEGES?SYS2<cr>
MOD, SEP?<cr>
At this point, the new MD called "CLASS" has been added and up-
dated with the items from NEWAC. Note that the "BASE" indicated
in the message above may be different from yours. That's all right.
Also, the number of items copied is simply a function of how many
items are contained in the NEWAC file. The NEWAC file may have
44 EXPLORING THE PICK OPERATING SYSTEM
FINISHED
>PASS\IIORD<cr>
ENTER ACCOUNT NAME ?CLASS<cr>
ENTER NEW PASSWORD ?
You have two options at this point. You may enter a new password,
followed by a <cr>, or you may enter.a <cr>, which indicates that
you want to remove the current password. If you choose to enter a
<cr> (indicating that you want to remove the password) the process
will prompt you to verify that you want to remove the existing pass-
word, to which you respond with a Y for yes or N for no.
Verify that you are on the right account with the WHO command:
>WHO<cr>
n CLASS
>LISTFILES<cr>
PAGE 1 *** MD *** FILE DEFINING ITEMS 26 MAY 1985
MD ..•...• CODE F IBASE . ....••..•.•. F I MOD •........ F ISEP . ..
ACC Q ACC ACC
BLOCK-CONVQRT BLOCK-CONVERT
CLASS Q
ERRMSG Q SYSPROG ERRMSG
M/DICT Q
MD Q
POINTER-FIQE SYSPROG POINTER-FILE
PROCLIB Q PROCLIB
SYSTEM Q SYSTEM
The files listed on the screen have the following purposes and
meanings:
ACC This is the accounting history file. It is used to record the time
and date of each logon and the location of each terminal.
46 EXPLORING THE PICK OPERATING SYSTEM
or
or
The first line of the message indicates the location of the DICT (dic-
tionary) level of the STAFF file. The second line indicates the location
of the DATA level. In both cases, the location of a file is always de-
termined by its base, modulo, and separation. Note that the separa-
tion parameter may be omitted and will always default to one.
For the sake of brevity, the messages displayed as by-products of the
following commands are not included in this text. All of these mes-
sages have the same meanings as the one described above.
Your files are now in place and you are ready to proceed to the other
of the file-handling commands.
To verify that all the files were created:
or
or
For our illustration, it will be necessary to place some items into the
file. This is accomplished with the COpy command as follows:
>COPY MD • (5)<cr>
This command tells the system to select all (*) items from the MD
level, but to copy only the first five items from the MD file. After
pressing <cr>, the system prompts for the destination. For this ex-
ample, we will copy the first five items from the MD to the file called
BP. Enter the following after the "TO" prompt:
TO : (UP) <cr>
1 T-WEOF
2 BLOCK-CONVERT
3 *All
4 CHARGE-TO
5 SAVE-LIST
5 ITEMS COPIED
The items displayed on the screen are the item-ids of the items cop-
ied to the BP file, along with a sequential count of the items, and a
grand total of the items copied. Don't worry if yours are different.
The purpose of the example is just to get some data into the file to il-
lustrate the rest of the file-handling commands.
The file may now be reviewed to verify that there are indeed items
present:
>LIST UP<cr>
BP ....... .
T-WEOF
BLOCK-CONVERT
·All
CHARGE-TO
SAVE-LIST
5 ITEMS LISTED.
Using the LIST command, you have just listed all of the item-ids con-
tained in the BP file. Now, let's use the CLEAR-FILE command to
empty the file.
>LIST BP<cr>
[401] NO ITEMS PRESENT.
This message indicates that there are no items in the file and that the
CLEAR-FILE command worked as expected.
>DELETE-FILE BP<cr>
>LIST BP<cr>
[10J FILE NAME MISSING
Once these pieces of data are collected, they may be plugged into
the following three formulas.
For example, suppose we have a file that will contain about 100
items, each of which averages 250 bytes. The result is as follows:
We should next consider how much the file will grow. Although the
system will automatically link frames to the file as necessary, growth
adjustment will ensure future efficiency. The growth factor is the per-
centage at which the file will expand prior to the next time the file is
resized. For this illustration, let's assume that the file will expand by
50 percent. The second formula is as follows:
or
We have now determined the total number of bytes that the file may
contain. Each frame on the system is capable of storing 500 bytes of
data. We will plug this into the third formula:
or
>COPY MD * (50)<cr>
TO: (STAFF)<cr>
When this is complete, the message will indicate that 50 items were
copied. You are now ready to test the GROUP command.
52 EXPLORING THE PICK OPERATING SYSTEM
>GROUP STAFF<cr>
7324
0019 T-WEOF
002E BLOCK-CONVERT
OOIF *A9998
0016 SP-ASSIGN
0010 RTD
OOIA QSELECT
6 ITEMS 166 BYTES 0/166 FRAMES
7324
This indicates the Base FID (or first frame) of the file.
0019 T-WEOF
This indicates that the first item-id in this frame is "T-WEOF" and that
it has a byte count of hex 19, or 25 bytes. The byte count is the total
number of bytes required to store the item and is displayed in hexa-
decimal. See the RTD command in the beginning of this chapter for
details on how to convert this number to decimal.
002E BLOCK-CONVERT
Same as above.
OOIF *A9998
Same as above.
0016 SP-ASSIGN
Same as above.
0010 RTD
Same as above.
OOIA QSELECT
Same as above.
THE USER PROCESSES: Tel 53
4
EDITOR: The User Tool
The EDITOR utility provided with the PICK System is used to enter
or update any item on the system, including PICK/BASIC source
code, PROCS (stored TCl commands called Procedures), dictionary
items, and even data items.
It is a process the PICK user often takes for granted; yet it is a "win-
dow" into every file on the entire system. As such, we will spend the
time to closely examine this powerful utility.
Theory of Operation
The EDITOR has two modes of operation. The first of these is the
Command mode. This is always indicated by the period (.) prompt
character. From this point, any legal EDITOR command may be acti-
vated. The second mode is the Insert/Replace mode, normally indi-
cated by the plus sign (+) prompt character immediately to the right
of the line number. From this point, any characters may be entered
and are treated as data rather than as a command. Also from this
point, control may be transferred back to the Command mode by is-
suing a <cr> at the "+" prompt character.
Mnemonic Commands
Most of the EDITOR commands are actually the first or first two let-
ters of the word that describes the command. For example, B is the
Bottom of Item command, FI is File Item, and EX is Exit Item. While
54
EDITOR: THE USER TOOL 55
line Numbers
While using the EDITOR, line (attribute) numbers are automatically
displayed on the left side of the screen. This is a means of verifying
exactly where data is being placed within the item. These line
numbers are not physically stored on the system with the item; they
are added (and recalculated) by the EDITOR process each time it is
activated.
When entering a new item, the line numbers will continue to incre-
ment by one with each line of text or data entered. All other times,
the EDITOR provides the line number from which the add/change
operation began on each line of the screen, until the item is flipped.
After flipping, the line numbers are adjusted for the latest changes in
the item.
The form <ED filename item-id item-id ... <cr> indicates that
multiple items will be edited into the file.
The form >ED filename *<cr> allows access through the EDITOR
to every item already in the file.
TOP
.G2<cr>
002 THE PICK EDITOR UTILITY AND
.R/UTILITY /FUNCTION<cr> (Replace; explained later.)
002 THE PICK EDITOR FUNCTION AND
58 EXPLORING THE PICK OPERATING SYSTEM
Now, a change has been made to line 2 of the item. Changes may be
made to any line after line 2, but not before. Here is what happens if
we attempt to make a change above or before the line which has al-
ready been changed:
.Gl<cr>
001 THIS IS A TEST OF
.R/IS/IiIAS<cr>
SEQN?
.F<cr>
TOP
.Gl<cr>
001 THIS IS A TEST OF
.R/IS/IiIAS<cr>
001 THIS WAS A TEST OF
.EX<cr>
'FLIP. TEST' EXITED
ENTERING AN ITEM
For this example, you will create items in the file called STAFF,
which was created in the section on using file processors. The items
to be built will initially have the following format:
SAMPLE DATA
The following example is the first of the three pieces of system infor-
mation necessary to construct and execute an ACCESS command.
The purpose here is to create the data in the file. Later, we will add
dictionary items (piece 2) to define the data that will subsequently be
displayed with an ACCESS sentence (piece 3).
Here is our first data item.
This indicates that you wish to edit the seven item-ids listed above
into the STAFF file, regardless of whether or not they are already
present.
60 EXPLORING THE PICK OPERATING SYSTEM
100
NEW ITEM
TOP
This means that the first item, 100, is new to the STAFF file. (Each
item in this example will indicate that it is new.) You are now auto-
matically positioned to the top of the item where the first EDITOR
command may be entered. Let's put the EDITOR into Insert mode to
build the first item .
. I<cr>
The Insert mode is always indicated by the "+" prompt character im-
mediately to the right of a line number reference. Before returning to
the Command mode, enter the data as indicated in the following
instructions:
001 +enter a Name here in the format: Last Name, First Name<cr>
002+enter an Address here<cr>
003+enter a Ci ty here<cr>
004+enter a State abbreviation here<cr>
005+enter a ZIP or Postal code here<cr>
006+<cr>
TOP
To leave the Insert mode and return to the Command mode, a <cr>
is entered at the prompt character, as at line 6 in the above example.
Note that the line numbers appeared automatically, and that when
the <cr> was pressed while positioned at line 006, that control re-
turned to the EDITOR command mode. Because this happened to be
a new item, it automatically "wrapped around" to the TOP of the
item. It may now be displayed prior to writing it out to the STAFF file,
using the L (List) command as follows:
.L22<cr>
This tells the EDITOR to List 22 lines. The number, 22, was used to
make sure that all lines of the item were displayed; there are usually
22 lines on the CRT screen.
The "EOI 5" message indicates that the End Of Item was encoun-
tered at line 5, meaning that the item has five attributes. If your data
contains mistakes, don't worry about them for now. You will get a
chance to correct them later, using the R (Replace) command.
Now we want to write the item to file and continue building the
other six items .
. FI<cr>
, 100' FILED.
The FI command instructed the EDITOR to write the item to the file
(STAFF) using the item-id previously indicated in the ED command.
This process must be repeated for each of the items, until control re-
turns to TeL. If needed, return to the section on the I (Insert) com-
mand for the procedure that was just covered.
The message indicates that this is the STAFF file, an item-id called
100, and that the line pointer is currently positioned to line 0 (the top
of the item).
Remain in the EDITOR command mode for the next example.
62 EXPLORING THE PICK OPERATING SYSTEM
.S?<cr>
ITEM LENGTH IS 61 BYTES
.S<cr>
SUPPRESS ON
This indicates that the line number function has been suppressed,
and may be verified by entering the following command:
.L22<cr>
MERTZ, FRED
128 W 12TH ST, APT 38
NEW YORK
NY
10012
EOI 005
To re-enable the function, issue the S command again, and again ver-
ify that it worked properly .
. S<cr>
SUPPRESS OFF
.L22<cr>
TOP
001 MERTZ, FRED
002 128 W 12TH ST, APT 3B
003 NEW YORK
004 NY
005 10012
EO! 005
EDITOR: THE USER TOOL 63
Note that since you were already positioned at the bottom of the
item when the L (List) command was entered, the EDITOR automati-
cally wrapped around to the TOP of the item prior to the listing.
It is unlikely that you will ever need to use the Suppress command,
because the line numbers are usually needed for use in the EDITOR.
.G2<cr>
002 128 W 12TH ST, APT 38
This instructed the EDITOR to go to line 2 and display the line. The
line pointer is now positioned to line 2 and ready for the next
command .
. 4<cr>
004 NY
This also specified to go to a line number, in this case, line 4, and dis-
play the line. The G is optional.
.T<cr>
TOP
This indicates that the line pointer is now positioned to line zero, or
the top of the time.
Note: It was .mentioned earlier that changes must be made from the
top down on the item being edited. The F (Flip) command also posi-
tions the line pointer to the top of the current item. For this reason,
it's advisable to use the F command rather than the T command
when changes are being made to an item.
64 EXPLORING THE PICK OPERATING SYSTEM
.B<cr>
E01 005
This indicates that the bottom (end) of the item was encountered at
line (attribute) 5, and that the line pointer is now positioned at line 5.
.<cr>
TOP
001 MERTZ, FRED
.<cr>
002 128 W 12TH ST. APT 38
The first use actually wrapped around, since the previous example
left the line pointer at the bottom (end) of the item. The second time
the command was issued, the next relative line within the item was
displayed.
.Ul<cr>
001 MERTZ, FRED
Since we had previously left the line pointer at line 2, this command
caused the line pointer to go up one line, to line 1 of the item, and
display the line.
.N2<cr>
003 NEW YORK
.FI<cr>
'100' FILED.
.R<cr>
This translates to: "Replace, on the current line, the first occurrence
of 'old string' with 'new string'." It causes the EDITOR to scan the en-
66 EXPLORING THE PICK OPERATING SYSTEM
tire line for the first occurrence of the old string and replaces it with
the new string. For example:
003 NEIMAN/MARCUS
003 NEIMAN/MARCUS
.R/NElMAN/MARCUS/NElMAN-MARCUS/<cr>
the EDITOR would get quite confused and would send out the fol-
lowing message:
COL#?
003 NEIMAN/MARCUS
. R. NEIMAN / MARCUS. NEIMAN - MARCUS. < c r >
DELETING A LINE
.DE<cr>
.DEn<cr>
. DEn/ string<cr>
TOP
.DE99/Y<cr>
003 NEW YORK
004 NY
EOI 005
.F<cr>
TOP
.L22<cr>
001 MERTZ, FRED
002 128 W 12TH ST, APT 3B
003 10012
EOI 003
The DE99/Y literally reads, "Delete, in the current and next 98 lines,
any attribute that contains the letter 'Y'."
This command caused the EDITOR to merge 99 lines from the cur-
rent item (indicated by two successive delimiters), beginning the
merge from line 1. The Merge command places the merged attribute
(or attributes) at the current position of the line pointer. In this exam-
ple, we were positioned at the end of the item, so that is where the
new lines were placed.
EO! 005
.F<cr>
TOP
.L22<cr>
001 MERTZ, FRED
002 128 W 12TH ST, APT 38
003 NEW YORK
004 NY
005 10012
006 RICARDO, RICKY
007 14 TROPICANA DRIVE
008 HOLLYWOOD
009 CA
010 90101
This caused the EDITOR to merge 99 lines from the item-id 102,
within the same file (STAFF). Once again, because the beginning line
number was left out of the command, the merge began from line 1 of
102, and the new lines were again inserted at the end of the current
item.
008 A
009 H COMPILATION ABORTED; NO OBJECT CODE PRODUCED.
EOI 009
This instructed the EDITOR to merge 99 lines from the item-id B100,
within the file called ERRMSG. Once again, because the beginning
line number was left out of the command, the merge began from line
1 of B100, and the new lines were again inserted at the end of the
current item.
.FI<cr>
'100' FILED.
This indicates that the item has successfully been written to the file
from which it was retrieved, and that changes have been included
with the item.
This caused the item called 100 to be written to the same file
(STAFF) under a different item-id, 108. They are now identical items
with unique item-ids.
The FlO command is used to overwrite if a duplicate item-id exists
when attempting to file the item under a different filename or
item-id.
EDITOR: THE USER TOOL 73
If the item-id, 108, had already existed within the 5T AFF file, a mes-
sage would indicate that there had been a problem with the com-
mand, as in the following (deliberate) example:
.FIO 10S<cr>
'IDS' FILED.
Note that this format of the FI command requires the command, the
left parenthesis character, and the filename, with no embedded
spaces. The right parenthesis character is optional.
This operation wrote a copy of the item, formerly called 100 in the
STAFF file, under the same item-id (100) in the STATES file, since a
different item-id was not specified. If we want to rename the item
during the filing process, the format of the command is as follows:
This indicates that the item called 100 in the STAFF file has been suc-
cessfully written to the STATES file under the item-id 108. Note that
the same restrictions apply regarding the pre-existence of items as
previously covered in the FlO command.
This caused the EDITOR to write the item out to the file from which
it was retrieved, and to remain in the EDITOR after filing.
EO! 005
.EX<cr>
, 100' EXITED.
This wrote a duplicate of the item, 100, to the same file (STAFF),
under the item-id, 110, just for backing up the item during the exam-
ple. Now we are ready to delete the item .
. FD<cr>
, 100' DELETED.
>RECOVER-FD<cr>
>RECOVER-FD<cr>
ENTER ITEM-ID *110<cr>
ENTER ITEM-ID *<cr>
EDITOR: THE USER TOOL 77
We have now covered all of the EDITOR commands. The last topic
illustrates the use of the prestored commands. Prestored commands
are simply a series of EDITOR commands that function automatically
upon execution.
Remember the command, "L22," used earlier to list 22 lines? It is the
only default prestored command, and it is defined each time the EDI-
TOR is activated. All prestored commands but this one go away each
time the EDITOR returns control to TeL.
.P<cr>
001 displays the name you entered
002 displays the address you entered
003 displays the city you entered
004 displays the state you entered
005 displays the zip you entered
EOI 5
.PI ME999/101<cr>
78 EXPLORING THE PICK OPERATING SYSTEM
.PI<cr>
EO! 005
The message "EOI 005" indicates that the End Of Item occurred at
line 5 of the item in the ME (Merge) command (which was automati-
cally executed).
.PI B[U22[L22<cr>
This command has three parts: first, it positions the line pointer to
the Bottom (or end) of the item; second, it moves the line pointer Up
22 lines; and finally, it Lists 22 lines. Effectively, "P1" may now be
used to display the last 22 lines of the item.
CHAPTER
5
ACCESS: The Data
Retrieval Process
The most powerful verbs, by far, are not (strictly speaking) TCl
commands at all. They are ACCESS verbs, designed to SELECT,
SORT, and/or LIST data from data or dictionary files with nearly un-
limited flexibility. Used in conjunction with attribute-defining items,
the ACCESS verbs are the basic relational tool in the PICK relational
data base. We'll begin by describing the ACCESS verbs and showing
the general format of some of these powerful commands.
ACCESS verbs require at minimum a verb and a filename, but option-
ally may be followed by any ACCESS operative. The ACCESS verbs
are: COUNT, LIST, LIST-ITEM, SORT, SORT-ITEM, LIST-lABEL,
SORT-lABEL, SUM, STAT, SELECT, SSElECT, QSElECT.
The following examples illustrate how ACCESS sentences are con-
structed and are intended as a general overview of how ACCESS pro-
cesses the sentences it receives. later, in the tutorial, you will get a
chance to construct and execute ACCESS sentences on the STAFF
file created in the preceding sections.
>SORT STAFF<cr>
f- filename
f- verb
79
80 EXPLORING THE PICK OPERATING SYSTEM
f- sequence criteria
f- filename
f- verb
ACCESS Features
• ACCESS is an ad-hoc data retrieval language that allows the gene-
ration of reports in free-form English-like sentences.
• ACCESS provides a full complement of relational and logical opera-
tors for data selection in its sentence structure.
• ACCESS provides many inherent functions to add special features
to reports, including page headings and footings, output breaks,
and subtotals.
• Output from ACCESS sentences may be routed to CRTs, printers,
or magnetic media.
• All of the commands and words used with ACCESS may be easily
tailored to the specific vocabulary of the data to which it is being
applied.
• ACCESS can be activated from TCl or stored procedures known as
PROCs, or from a PICK/BASIC program.
ACCESS: THE DATA RETRIEVAL PROCESS 81
Attribute-Defining Items
The ACCESS process relies on the two bottom levels of the PICK Sys-
tem file hierarchy: the dictionary and the data levels.
The data level is the point at which the data actually resides. The dic-
tionary level is reserved for the attribute-defining items (the words)
we will use in ACCESS sentences to retrieve and display data items.
Item- id : 101
001 MERTZ, FRED
002 128 W 12TH ST, APT 3B
003 NEW YORK
004 NY
005 10001
Item- id : 102
001 RICARDO, RICKY
002 14 TROPICANA DRIVE
003 HOLLYWOOD
004 CA
005 90101
Item- id : 103
001 RICARDO, LUCY
002 14 TROPICANA DRIVE
003 HOLLYWOOD
004 CA
005 90101
Item- id : 104
001 MERTZ, ETHEL
002 128 W 12TH ST, APT 3B
003 NEW YORK
004 NY
005 10001
4 ITEMS LISTED.
This tells the EDITOR that you wish to edit these five items into the
. DICT of the STAFF file.
NAME
NEW ITEM
TOP
.I<cr>
OOl+A<cr>
84 EXPLORING THE PICK OPERATING SYSTEM
002+1<cr>
This instructs ACCESS that the data for NAME will be found in the
first attribute of the data item.
003+NAME<cr>
This indicates that the word NAME should appear at the top of the
column when the NAME is being printed or displayed.
004+X<cr>
The "X" and the next four entries will eventually be changed to a
"null." The "X" is placed here so that we can continue in the EDITOR
Insert Mode so that we can place information in positions 9 and 10.
This procedure has nothing to do with attribute-defining items; it's
just easier.
005+X<cr>
006+X<cr>
007+X<cr>
008+X<cr>
009+L<cr>
This tells ACCESS that the data in this attribute is to be displayed left-
justified on output.
OlO+15<cr>
Oll+<cr>
This entry causes the EDITOR to leave the Insert mode and return to
the Command mode.
TOP
.F<cr>
ACCESS: THE DATA RETRIEVAL PROCESS 85
This tells the EDITOR to flip the buffers so that the NAME item may
be examined.
TOP
.R99/X//<cr>
This causes the EDITOR to replace, in the next 99 attributes, the first
occurrence of the letter "X" with a "nullo" The effect is that all of the
positions containing an "X" are converted to "nullo" The result on the
CRT screen looks like this:
004
005
006
007
008
EO! 10
.FI<cr>
, NAME' FILED.
ADDRESS
NEW ITEM
TOP
Since we initially requested five items for editing, the next item in the
itemlist will automatically appear. Return to the top of the procedure
used for the NAME attribute-defining item to construct this
ADDRESS attribute-defining item, then repeat the procedure for the
CITY, STATE, and ZIP.
After our five attribute-defining items are constructed, an ACCESS re-
port may be created with the following sentence:
Throwaway Connectives
Up until now, we have seen ACCESS commands where each unique
word in the command had a special purpose. ACCESS provides extra
words called "throwaway connectives" to assist in making ACCESS
sentences more readable.
The throwaway connectives provided with ACCESS include: A, AN,
ANY, ARE, FILE, FOR, IN, ITEMS, OF, and THE. Here is how they
could be applied:
>SORT STAFF<cr>
f--+ filename
f--+ verb
Selection Criteria
We discussed selection criteria briefly earlier in this chapter. Selec-
tion of specific items from a data file requires the WITH modifier in
an ACCESS sentence.
ACCESS: THE DATA RETRIEVAL PROCESS 87
The WITH modifer causes ACCESS to retrieve only the items that
meet the criteria following the WITH. For this reason, the WITH
modifier has the general form:
EQ Equal to
> GT or AFTER Greater than
< LT or BEFORE Less than
>= GE Greater than or equal to
<= LE Less than or equal to
# NE or NO or NOT Not equal to
<LIST STAFF WITH CITY = "ROCHESTER" AND WITH STATE = "NY" CITY STATE<cr>
f-+ display
f-+ selection criteria 2
f-+ logical connective
f-+ selection criteria 1
f-+ filename
f-+ verb
In this example, only the data items with the city of ROCHESTER and
the state of NY will be displayed.
In this example, data items that meet either selection criteria will be
displayed.
STRING SEARCHING
When an EQ or "=" is used in an ACCESS selection criteria, a
character-for-character match must occur between the attribute and
the value string. This sometimes poses a hindrance when only part of
the field is being searched, such as a last name in the NAME attri-
bute. Hence, it's time to introduce ACCESS string searching.
String searching is an extension of the selection criteria and provides
ACCESS with the ability to test part of an attribute. For example, if
one data item's NAME attribute contained the name "JOHN SMITH,"
and the following ACCESS sentence were issued:
The string searching function can also be used in both directions si-
multaneously, as in the following ACCESS sentence:
This causes ACCESS to accept any item where the NAME has any
number of characters preceding or following the string, "SMITH." As
long as the characters "SMITH" appear somewhere in the attribute, it
will be accepted for ACCESS processing.
USE OF QUOTES
ACCESS recognizes a functional difference between single quotes
and double quotes in a sentence.
Double Quotes: Double quotes are typically used to surround value
strings in the selection criteria of an ACCESS sentence, as illustrated
in the following example:
>COUNT STAFF<cr>
n ITEMS COUNTED.
This causes ACCESS to count all the items in the STAFF file. (Note
that the number "n" depends on how many items are actually in your
STAFF file.)
This instructs ACCESS to return a count of all items in the STAFF file
with the characters "CA" in the STATE attribute.
>LIST-ITEM STAFF<cr>
This indicates that the labels are to be produced from the STAFF file
and to display the NAME, ADDRESS, CITY, STATE, and ZIP fields.
ACCESS: THE DATA RETRIEVAL PROCESS 91
These are the label parameters. They have the following meanings:
The POINTER·FILE
All ACCESS list-processing commands write the itemlist to, or re-
trieve them from, a file called POINTER-FILE. Let's check now to
make sure that you have this file, or that you have a Q-pointer in
your MD to this file, by using ACCESS to list the contents of the
POINTER-FILE:
>LIST POINTEK-FILE<cr>
92 EXPLORING THE PICK OPERATING SYSTEM
The message will indicate that the file has been created. One more
step must be performed on the pointer to the POINTER-FILE in your
MD:
>ED MD POINTER-FILE<cr>
TOP
. R/D/DC<cr>
001 DC
.FI<cr>
'POINTER-FILE' FILED.
Note that only the items containing the state abbreviation, CA, are
displayed. It applied the list of item-ids just generated by SELECT,
and now the list has gone away. This illustrates the immediate use of
the SELECT command, where the list is generated, used, then re-
leased, as opposed to saving the itemlist for later use.
This saves the itemlist under the item-id, "STAFF.LlST." The message
after the command indicates that the itemlist was saved and tells
how many frames were used for its storage.
Note that the data items were displayed in ascending NAME se-
quence, as requested in the SSELECT command that generated the
itemlist.
This allows the user to edit the list named "STAFF.LlST." The EDIT-
LIST command automatically accessed the file in which the itemlist
could be found .
. P<cr>
001 item-id
DOn i tem- id
EOI n
ACCESS: THE DATA RETRIEVAL PROCESS 95
. EX<cr>
'STAFF.LIST' EXITED.
This causes the system to copy the list called "STAFF. LIST" to the
item-id called "NEW.STAFF.LlST," resulting in identical itemlists with
different names.
This causes the system to copy the itemlist to the CRT screen.
>T-ATT<cr>
TAPE ATTACHED. BLOCK SIZE =500.
>T-RE\tI<cr>
>SSELECT STAFF<cr>
n ITEMS SELECTED
>T-DUMP STAFF<cr>
1 first i tern- id
2 second itern-id
11 last i tern- id
n ITEMS DUMPED.
This T-DUMP command simply causes the system to write all the
items in the STAFF file to the media, in ascending order by item-id.
>T-RE\Il<cr>
>T-REW<cr>
>T-LOAD STAFF<cr>
'item-id' EXISTS ON FILE.
>T-REW<cr>
Each item-id that displays during the process indicates that the item
has been successfully written to the STAFF file.
This ACCESS sentence could also be written using the option form:
The BY Modifier
The BY modifier specifies the sort sequence of a report. The default
sequence is ascending. Each BY must be followed by a valid attribute
name defined in an attribute-defining item in the dictionary of the
file being ACCESSed. There is no limit to the number of BY modifi-
ers, but they are processed left to right.
This causes ACCESS to sort the data in the STAFF file by descending
NAME. For example, "WILSON" would display before "ADAMS."
or
This sentence causes ACCESS to sort the data items by the contents
of the STATE attribute. During output, each time the data item in the
STATE output changes, only the STATE attribute is displayed rather
than all of the data items or detail lines that comprised the control
break. Note that since the TOTAL modifier was also in effect, each
control break shows a subtotal and the columnar total for the ZIP at-
tribute is also displayed. This is not a very useful total, but it does il-
lustrate the use of DET-SUPP.
>SORT STAFF BY STATE BY ZIP HEADING '" LC' STAFF FILE REPORT' L'" FOOTING
"'LC'PAGE 'PN' PRINTED AT 'TL'''<cr>
This limits the report to only the items that contain the characters
"CA" in the attribute defined by STATE.
>SORT STAFF \NITD STATE = "CA" AND \NITD CITY = "IRVINE" NAME STATE<cr>
This limits the report to the items that contain both the characters
"CA" in the STATE attribute and the characters "IRVINE" in the CITY
attribute. Note that because of the AN D connective between the
two selection criteria, both have to be true in order for the data item
to be selected and displayed.
102 EXPLORING THE PICK OPERATING SYSTEM
>SORT STAFF \IIITH STATE = "CA" OR \IIITH STATE = "NY" NAME STATE<cr>
This limits the report to displaying only the item that contains either
the characters "CA" or "NY" in the STATE attribute. Because of the
OR connective, either criterion may be true in order for a particular
item to be displayed.
>LIST MD NOPAGE<cr>
>LIST MD (N)<cr>
We have just skimmed the surface of ACCESS. Now we'll dive into
the real processing power by using some special output processing,
such as converting attributes to alternate external formats. The fol-
lowing attributes should be added to each STAFF item in preparation
for the conversions and correlatives discussed in the next tutorial.
Follow these steps to add attributes 6 through 9 to each data item in
the STAFF file:
ACCESS: THE DATA RETRIEVAL PROCESS 103
This causes the EDITOR to access each item stored in the STAFF file.
Note that they will not appear in the same order that they were
entered, due to the hashing algorithm used to write items into files.
The B positions the EDITOR line pointer at the end (bottom) of the
current item so that subsequent attributes are added there .
. I<cr>
This places the EDITOR into the Insert mode for the addition of the
following four attributes:
005+714-786-2211 <cr>
005+6000<cr>
005+ -6000<cr>
005+S00000<cr>
sand) and 500000 (five hundred thousand). Don't panic; the PICK
System stores money amounts in cents.
005+<cr>
.FI<cr>
'itern-id' FILED.
next i tern- id
TOP
Repeat this process for all items in the STAFF file. After the last item
has been edited, control will return to TCl (».
6
PROC: The Stored
Procedure Language
105
106 EXPLORING THE PICK OPERATING SYSTEM
Fi Ie :MD
Item-id:MENU
001 PQ
002 (PROCS MENU)
001 PQ
002 [PROCS EXAMPLEl]
003 [PROCS EXAMPLE 2]
The second line indicates that this PROC transfers control to an item
called "EXAMPLEl /I in a file named "PROCS./I The square brackets
around the filename and item-id indicate that the PROC being called
will return control to the calling PROC when it is completed. When
control returns from EXAMPLE1, it returns to the very next line of the
PROC: THE STORED PROCEDURE LANGUAGE 107
PROC. In this example, that means that this PROC would then trans-
fer control to the item called "EXAMPLE2" in the file named
"PROCS." It, too, indicates that control returns to the calling PROC
upon completion. At that point, there are no more PROC statements
to execute, so control returns to TCL.
>ED MD MENU<cr>
NEW ITEM
TOP
.I<cr>
OOl+PQ<cr>
This transfers control to the PROC called MENU in the file called
PROCS.
003+<cr>
.FI<cr>
'MENU' FILED.
003+10 RI<cr>
The number lOis a statement label, which will be used later when
we cause the PROC to return to this line. The RI command causes
the PROC language to reset the input buffer, the area through which
all input passes into PROC. This ensures that nothing remains in the
input buffer from any previous use.
This prints the text, "2. THE STON (STACK ON) COMMAND," at po-
sition 3 of line 3.
PROC: THE STORED PROCEDURE LANGUAGE 109
This prints the text, "4. THE IP (INPUT) COMMAND AND PATTERN
MATCHING," at position 3 of line 5.
011 +SI<cr>
012+IP: <cr>
This suspends execution of the PROC until input is received from the
keyboard. The character following the IP command specifies the
character that will be printed on the screen as the prompt character
for the input.
013+IF Al = Q X<cr>
This IF statement literally reads: "If input buffer 1 is empty (null), then
go to the line that contains the statement label 10 (which occurs on
line 3 of the PROC). The input buffer will be considered empty, or
null, if a <cr> is entered without anything else. In the event that
input buffer 1 is not null, the next line of the PROC is executed.
This reads: "If input buffer 1 contains the number 1, control transfers
to the PROC called EXAMPLEl in the file called PROCS." Note that
this is a linkage that specifies a two-way transfer of control so that
control will return to the MENU PROC when the EXAMPLEl PROC
completes.
This reads: "If input buffer 1 contains the number 2, control transfers
to the PROC called EXAMPLE2 in the file called PROCS," and returns
to the next line of this PROC (MENU) when EXAMPLE2 completes.
This reads: "If input buffer 1 contains the number 3, control transfers
to the PROC called EXAMPLE3 in the file called PROCS," and returns
to the next line of this PROC (MENU) when EXAMPLE3 completes.
This reads: "If input buffer 1 contains the number 4, control transfers
to the PROC called EXAMPLE4 in the file called PROCS," and returns
to the next line of this PROC (MENU) when EXAMPLE4 completes.
This reads: "If input buffer 1 contains the number 5, control transfers
to the PROC called EXAMPLES in the file called PROCS," and returns
to the next line of this PROC (MENU) when EXAMPLES completes.
This line was put here to provide a pause at the end of each PROC
being executed by this MENU PROC. When each EXAMPLE PROC
completes, it returns control to the next line of the PROC that called
it. This means that this line, and the following lines, will be executed
at the end of each procedure.
PROC: THE STORED PROCEDURE lANGUAGE 111
021 +SI<cr>
This establishes the location where the next available input storage
occurs. The next IP instruction that is executed will place the input in
storage area 1 of the primary input buffer.
022+IP: <cr>
This suspends execution of the PROC until input is received from the
keyboard. The character following the IP command specifies the
character that will be printed on the CRT screen as the prompt char-
acter for the input.
023+IF Al = Q X<cr>
This I F statement literally reads: "If input buffer 1 contains the letter
Q, then perform the X command." The X command causes the
PROC to stop and returns control to TCL. In the event that input
buffer 1 does not contain the letter Q, the next line of the PROC is
executed.
024+00 IO<cr>
025+<cr>
.FI<cr>
'MENU' FILED.
The PROC is now filed in the PROCS file and an activation PROC is
filed in the MD. This menu may now be activated by entering the
word MENU at the Tel prompt character (».
>MENU<cr>
The menu will display on the screen and offer five menu options and
one menu escape path option, the Q entry. Enter a Q to return to TCL.
Example 1
In its very simplest form, a PROC may be used to store a command
such as an ACCESS command sentence, as in the following example:
112 EXPLORING THE PICK OPERATING SYSTEM
004+P<cr>
005+X<cr>
In the MENU PROC, the X command was used to stop the PROC
and return control to TCL. In a PROC that was called via a two-way
linkage (remember that this example was called by MENU), the X
command functions as a completion or a RETURN command. Once
it is executed, control returns to the PROC that called the current
PROC, in this case, the MENU PROC.
006+<cr>
.FI<cr>
'EXAMPLEl' FILED.
>MENU<cr>
Example 2
Certain processes are divided into stages. In the ACCESS tutorial we
saw the SORT-LABEL command, which was a two-part command.
The first part was the actual ACCESS sentence, which was sent to
ACCESS with a <cr>. ACCESS then requested more information,
specifically, the label parameters. This example illustrates some now-
familiar commands, along with the STON command used in multi-
stage commands from a PROC.
004+8 BY ZIP<cr>
This moves the text, BY ZIP, to the end of the output buffer. The pri-
mary output buffer now contains the text, SORT-LABEL STAFF BY
ZIP. The space in front of the word BY was to make sure that the
space was embedded between STAFF and BY, as required by
ACCESS.
This moves the text, NAME ADDRESS CSZ, to the end of the primary
output buffer. (See Appendix F for a definition item called "CST'; it
must be added to the STAFF file dictionary for this example.) The pri-
mary output buffer now contains the text,
114 EXPLORING THE PICK OPERATING SYSTEM
007+STON<cr>
The first half of this command is now ready for processing. We still
need to somehow store the label parameters so that they may auto-
matically be passed to ACCESS. We call this special storage area the
Secondary Output Buffer, or SOB for short. The STON (Stack On)
command causes any subsequent H commands to be routed to this
area. When ACCESS requires the parameters, PROC tells ACCESS
that the SOB is holding the information. ACCESS then interrogates
the SOB for the data.
Since the previous instructiCln activated the SOB, this string of text is
stored in the SOB until required by ACCESS. Note the "<" character
at the end of the line, before the carriage return. When moving data
to the SOB, this stores a <cr> after the label parameters.
009+P<cr>
OlO+X<cr>
Oll+<cr>
.FI<cr>
'EXAMPLE2' FILED.
We have now filed EXAMPlE2 in the PROCS file. Activate the MENU
PROC and watch the output from this example by selecting option 2.
PROC: THE STORED PROCEDURE LANGUAGE 115
Example 3
003+T C,B<cr>
004+RI<cr>
006+SI<cr>
This directs the subsequent input to the first entry in the input buffer.
007+IP: <cr>
This suspends execution of the PROC until input is received from the
keyboard. As a result of the previous Sl command, the input is
placed into input buffer 1.
This reads: "If input buffer 1 contains a null (or <cr», then perform
the X command," and control returns to the MENU PROC.
116 EXPLORING THE PICK OPERATING SYSTEM
OlO+S2<cr>
Since the first location of the primary input buffer is already being
used, this command causes subsequent input to be stored in the
second location in the primary input buffer.
Oll+IP:<cr>
This suspends execution of the PROC until input is received from the
keyboard. Input is placed in primary input buffer 2.
This reads: "If input buffer 2 contains a null (or <cr», then perform
the X command," and control returns to the MENU PROC.
014+Dl<cr>
016+D2<cr>
018+DO<cr>
The DO command allows us to see all of the entries in the input buff-
ers. This will display both your first and last name on the same line of
the CRT.
019+X<cr>
020+<cr>
.FI<cr>
'EXAMPLE3' FILED.
EXAMPLE3 is now filed. Activate the MENU PROC and take option
3. Follow the instructions to enter your first name and your last
name.
Example 4
This example shows more functions of the I F statement, specifically
the function of pattern matching, or verifying that the keyboard input
adheres to a required format. This is typically used to prevent gar-
bage data from being entered and subsequently passed to another
process.
This reads: "If input buffer 1 contains a null (or <cr», then go to
statement label 10," which occurs on line 3.
118 EXPLORING THE PICK OPERATING SYSTEM
008+IF Al = Q X<cr>
This reads: "If input buffer 1 contains the letter Q, then perform the
X command," and control returns to the MENU PROC.
010+60 IO<cr>
012+DI<cr>
013+X<cr>
014+<cr>
.FI<cr>
'EXAMPLE4' FILED.
Example 5
This last example illustrates how a PROC can be used in an interac-
tive mode. The ACCESS sentence contained in the next PROC lacks
all of the information required for successful execution. For this rea-
son, the PROC prompts the operator for the required (missing) infor-
mation, and passes the input into the ACCESS sentence prior to
being processed.
PROC: THE STORED PROCEDURE LANGUAGE 119
This reads: "If input buffer 1 contains a null (or <cr», then go to
statement labella," which occurs on line 3.
This reads: "If the data in input buffer 1 does not match the pattern
of ON (any length numeric), 1X (any character), ON (any length nu-
meric), 1X (any character), and ON (any length numeric), then go to
statement labella," which occurs on line 3.
This moves the text, SORT STAFF WITH DOB > =, to the primary
output buffer.
010+A"I<cr>
This is how it looks after moving your input to the output buffer.
This moves the text, BY DOB NAME DOB AGE, to end of the pri-
mary output buffer.
120 EXPLORING THE PICK OPERATING SYSTEM
013+P<cr>
This causes the PROC to process the contents of the output buffer
by passing it to ACCESS.
014+X<cr>
015+ <cr>
.FI<cr>
'EXAMPLE5' FILED.
Activate the MENU PROC and choose selection 5. At the prompt for
the beginning date, enter a date somewhere around the year 1950, in
the form MM/DD/YY. For example, May 26, 1951 would be entered
as OS/26/51. Leading zeros are normally optional. This could also
have been entered as 5/26/51.
,
CHAPTER
7
PICK/BASIC: The
Programming Language
Earlier you created a file called BP-a file used to store a PICK/
BASIC source code. The source code is used to create the object
code, which is the code actually used by the PICK System.
A PICK/BASIC source code file requires a special modification prior
to creating any programs. This is done by editing the file-defining
item for the BP file stored in the MD. Follow these steps carefully:
>ED MD BP<cr>
TOP
.LI<cr>
001 D
.R/D/DC<cr>
001 DC
.FI<cr>
'BP' FILED.
>ED BP GUESS<cr>
GUESS
NEW ITEM
TOP
.I<cr>
001 + PROMPT ":" <cr>
002+MY.NUMBER = RND(IOI)+I<cr>
003 + PRINT "THIS IS A GUESSING GAME. I HAVE SELECTED A NUMBER BETWEEN " < cr >
004+PRINT "I AND 100. TRY TO GUESS MY NUMBER" <cr>
005+10 PRINT "ENTER YOUR GUESS" : <cr>
006+INPUT GUESS<cr>
007+IF GUESS = MY.NUMBER THEN<cr>
008+ PRINT "YOU WIN!! ! "<cr>
009+ STOP<cr>
OlO+END<cr>
011 +IF GUESS < MY.NUMBER THEN<cr>
012+ PRINT "TOO LOW. TRY AGAIN." <cr>
013+END<cr>
014+IF GUESS> MY.NUMBER THEN<cr>
PICK/BASIC: THE PROGRAMMING LANGUAGE 123
>BASIC BP GUESS<cr>
******************
Each asterisk (*) indicates one line of source code successfully trans-
lated into object code. The message "SUCCESSFUL COMPI LE! 1
FRAMES USED" indicates that the compile was completed without
error and that it took one frame to store the object code. The object
code was created, stored, and linked to the system by the compiler
(BASIC) process.
>RUN BP GUESS<cr>
THIS IS A GUESSING GAME. I HAVE SELECTED A NUMBER BETWEEN
1 AND 100. TRY TO GUESS MY NUMBER
ENTER YOUR GUESS:
124 EXPLORING THE PICK OPERATING SYSTEM
>CATALOG BP GUESS<cr>
'GUESS' CATALOGED.
>GUESS<cr>
THIS IS A GUESSING GAME. I HAVE SELECTED A NUMBER BETWEEN
1,AND 100. TRY TO GUESS MY NUMBER
ENTER YOUR GUESS:
>DECATALOG BP GUESS<cr>
'GUESS' DECATALOGED.
All disk space formerly required to store the object code for this pro-
gram is automatically returned to the overflow table and will be used
by the PICK virtual memory processes when necessary.
CHAPTER
8
Controlling Peripherals
125
126 EXPLORING THE PICK OPERATING SYSTEM
A Adds
D Datamedia
I IBM Monochrome Display Unit
L Lear Sigler
CONTROLLING PERIPHERALS 127
M Ampex
p Pertec
R Regent
T Televideo
V Adds Viewpoint
W Wyse
>TERM<cr>
TERMINAL PRINTER
(1) PAGE WIDTH: 79 132 (7)
(2 ) PAGE DEPTH: 23 60 (8)
(3 ) LINE SKIP 1
(4 ) LF DELAY 2
(5 ) FF DELAY 2
(6 ) BACKSPACE 8
TERM TYPE V
This establishes, for the entire system, that the printer output charac-
teristics are 80 columns by 60 rows. All other current settings remain
the same.
This establishes, for the port from which the command was issued,
the terminal type parameter as a Viewpoint and the terminal charac-
teristics to 79 columns by 23 rows. The R option displays the result-
ing changes.
>SET-TERM V<cr>
>T-ATT<cr>
TAPE ATTACHED. BLOCK SIZE = blocksize
Note: Only one process may have the media device attached at any
given time.
The block size is the number of bytes written in a single transfer of
data to the media. The PICK System automatically fills the device
buffer to this length prior to writing it to the media. The default block
size varies somewhat between implementations, typically between
CONTROLLING PERIPHERALS 129
500 and 8192 bytes. Some versions of PICK now offer block sizes up
to 27456 bytes or higher.
If the media is attached to another user's process, the following mes-
sage will appear:
The linenumber is the port number of the process having the media
attached.
>T-DET<cr>
This command provides an option with which the media may be de-
tached from someone else's process:
THE LABEL
a b c d e f
The letters underneath the actual label define the function of each
section in the following way:
>T-RE\II<cr>
>T-BCK<cr>
[94] END OF FILE.
The message "END OF FILE" refers to the last piece of data read on
the media before it stopped (the end-of-file mark on the previous file).
>T-F\IID<cr>
[94] END OF FILE.
CONTROLLING PERIPHERALS 131
>T-EOD<cr>
BLOCK SIZE: blocksize
[92] END OF RECORDED DATA-n FILE(S)
>T-ATT<cr>
TAPE ATTACHED BLOCK SIZE: 1000
>T-REW<cr>
BLOCK SIZE: 1000
>T-DUMP STAFF<cr>
The T-DUMP process wrote the entire contents of the STAFF file to
the media, in the storage order within the file (see Section 5.4).
The media is now positioned at the end of the file just written. To
read it, it must first be repositioned to the beginning:
>T-REW<cr>
BLOCK SIZE: 1000
>T-READ<cr>
BLOCK SIZE: 1000
L 03E8 12:00:00 26 MAY 1985 STAFF 01
The first data output is the label for this file, indicating that the block
size was 1000 (hexadecimal 03E8), the time and date it was created,
the file name from which it was generated, and the reel number (at
the right end of the label).
RECORD = 1
The record number is the logical number of the block. The data from
the STAFF file is displayed here. (See Chapter 9 for a discussion of
how to read the physical data items in this block.)
The character along the right side of the display indicates each 50-
byte segment of data. Note that the block was padded to a length of
1000 (the block size) with the "[" characters.
CONTROLLING PERIPHERALS 133
Although all of the data was written into the first block, the PICK Sys-
tem automatically writes an empty block at the end of this process.
This block appears as the following:
RECORD = 2
1 :[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[:
51 : [[ [[ [[ [ [[ [[ [[ [[ [[ [[ [[ [ [ [[ [[ [[ [I [ [ [ [ [( [[ [[ [[ [ [ [ [ [[ [:
101 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
151 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
201 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
251 : [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ ([ [[ [[:
301 : [[ [[ [[ [ [ [[ [[ [[ [[ [ [[ [[ [ [ [[ [[ [[ [ [[ [[ [[ [ [[ [[ [[ [ [ [[ [[ [:
351 : [[ [[ [[ [[ [[ [[ [[ [[ [ [[ [ [[ [ [[ [[ [[ [ [ [[ [ [[ [ [[ [ [[ [[ [ [[ [[ [:
401 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
451 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [[[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ :
501 : [[ [[([ [[ [[ [[ [[ [[ [[[ [[ [[ [[ [[ [( [[ [[ [[ [[ [( [[ [[ [[[ [[ [[:
551 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [I [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
601 : [ [ [[ [[ [[ [[ [[ [[ [ [ [ [[ [[ [ [ [ [[ [ [ [[ [[ [[ [[ [[ [ [ [[ [ [ [[ [[ [[:
651 : [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[:
701 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
751 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
801 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ :
851 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ :
901 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
951 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [[ [ [ [ [ [ [ [ [ [ [ [ [[ [ [ [ [ [ [ [ [ [ [ [ [ [:
This message means that the end of file mark has been encountered.
Once again, the media is positioned to its logical ending point.
>T-RE\tI<cr>
BLOCK SIZE: 1000
>T-RDLBL<cr>
BLOCK SIZE: 1000
L 03E8 12:00:00 26 MAY 1985 STAFF 01
>T-DET<cr>
134 EXPLORING THE PICK OPERATING SYSTEM
Hold Entry: A hold entry (or hold file) is an entry in the spooler that
requires manual processing for de-spooling and deletion. Hold en-
tries occur as a result of the spooler assignment options, discussed
later in this section under the SP-ASSIGN command.
The advantage to hold entries is the ability to restart a print operation
in the event that it becomes necessary, such as running out of paper
on the printer.
> : STARTSPOOLER<cr>
SPOOLER STARTED.
As a last resort, to clear the entries from the spooler queue, use the I
option:
printer# This is the logical address of the printer that is used later in
other spooler commands. The first printer on the system is always
o (zero). Printers are typically assigned the next available number.
formqueue# The form queue number is a semiredundant reference
to the printer number. This is due to the fact that some spooler
136 EXPLORING THE PICK OPERATING SYSTEM
>STARTPTR O,O,O,PO<cr>
This starts parallel printer a as printer number a (on form queue a),
skipping a pages between output.
>STARTPTR O,O,O,S2<cr>
>SP-ASSIGN HS<cr>
HOLD ENTRY # 1
CONTROLLING PERIPHERALS 137
The number assigned to the entry was chosen by the spooler. This
number is used later to access the entry.
Next, reset the spooler to print when requested:
>SP-ASSIGN<cr>
>LISTPEQS<cr>
The last line indicates two things: the total number of entries in the
spooler, and the total number of frames used by all of the spooler
entries.
SERIAL o o o 2 INACTIVE
>LISTABS<cr>
LINE STATUS COP FORM
# IES #
0 H 1 0
1 0 0
2 0 0
>SP-STATUS<cr>
THE SPOOLER IS INACTIVE.
Many forms of output from this command are possible. For the most
part, the other messages are generally self-explanatory.
handled for your process. Many options are provided, and combina-
tions of options are permitted.
These output routing specifications may be changed by following the
SP-ASSIGN command with the options discussed in the next section.
>SP-ASSIGN<cr>
>SP-ASSIGN 2<cr>
The? Option: The? option, by itself, displays the current spooler as-
signment options without changing them. When the? option is used
in conjunction with other options, the resulting setting is displayed.
>SP-ASSIGN ?<cr>
The C Option: The C activates the choke function. This means that
the spooler entry will not require more than about 20 frames of over-
flow for storage, and is only used in the event that virtually no over-
flow space is available. The C option must be used with the I option
and may not be used with the H option.
CONTROLLING PERIPHERALS 141
>SP-ASSIGN CI?<cr>
>SP-ASSIGN HS?<cr>
>SP-ASSIGN I?<cr>
The T Option: The T option attaches the magnetic media unit as the
output device. It is frequently accompanied by the S option.
>SP-ASSIGN TS?<cr>
OT 1 o
>SP-ASSIGN 2Fl?<cr>
oP 2 1
>SP-ASSIGN 3FIHS?<cr>
LINE STATUS COP FORM
# IES #
o H 3 1
>SP·ASSIGN HS?<cr>
OH o
>LIST MD (P)<cr>
HOLD ENTRY # 2
This number may be different, but assumes you have left the previ-
ous entry generated earlier in this section. One more entry would help:
HOLD ENTRY # 2
>SP·EDIT<cr>
ENTRY # 1
DISPLAY (Y/N/S/D/X/(CR»?-
ENTRY # 1
DISPLAY (Y /N/S/D/X/ (CR»? -Y<cr>
HH HH IIII
HH HH II
HH HH II
HHHHHHH II
HH HH II
HH HH II
HH HH II II
STRING: -
This prompt is used to restart a job that has been killed. After enter-
ing a string of characters, the spooler searches for the first occurrence
of the string, positions itself at the location where it was found, and
transfers control to the SPOOL prompt. If a Y response is then pro-
vided to the SPOOL prompt, printing begins from the point where
the string was found.
STRING: -<cr>
SPOOL (Y/N=CR/T/TN/F)?-
This completes our brief tour of the PICK System processes. Obvi-
ously, there is much, much more to see and do with each process
that we covered. For now, we have introduced the PICK world; in
the next chapter we'll discuss how the system works.
CHAPTER
9
Core Processes
~/'--------('/
VIRTUAL
DISK WORKSPACE
FRAME
RAM
PAGED
IN
DISK
USED
FRAME
FLUSHED
OUT
user requires data, the software determines where the data is located
and copies the required frame from disk into a frame-sized buffer in
main memory. The next time data or program code is required, the
virtual memory software checks to see if the necessary frame is al-
ready in memory. If the frame is already in place, the system provides
the data to the requesting process; otherwise the virtual memory
manager pages in the appropriate frame. When all the buffers are
filled, the system frees up frame buffers by searching for write-
required buffers (those that have been changed) and the oldest un-
changed buffers, and promptly writes them back out to disk. This
least-recently-used approach is applied continuously to the frame
buffers to ensure an adequate supply of main memory for all users.
The benefits of such an approach are not limited to the processes in
the computer's main memory. Virtual memory management simpli-
fies the disk storage as well. Files on the PICK System are permanent-
ly maintained in frame format. When a file is created, a block of con-
tiguous frames is reserved. This block is taken from an overflow table
on a best-fit basis. The block of frames, now referred to as groups,
can be considered contiguous, although the frames in the contiguous
block may not physically be adjacent. The view that they are logically
contiguous means that the system knows where the first frame of the
NEW OR
EXPANDED
CONTIGUOUS
FILE
FILE
block resides, along with the number of frames/groups that the file
contains beyond that point, with each group having the next higher
FID. This contiguous block of frames is referred to as the primary
space of a file. When more space is required for a file (when more
than 500 bytes of data are placed into a particular group) the virtual
memory manager attaches, or links, one frame at a time to the file.
In other words, when data is inserted in the middle of a file, the vir-
tual memory software adds the data to the appropriate frame until
the frame is full. Then the system acquires an additional frame from a
table of available frame-ids known as the overflow table. The system
then writes the remaining data on the new frame and adjusts the
original frame to point forward to the new frame, and the new frame
to point backward to the previous frame in the file. In this manner,
the system automatically adjusts file size no matter how much space
is required. This is why frames are referred to as groups after they are
designated as belonging to a file. The number of groups remains
fixed, whereas the number of linked frames (and consequently data)
is virtually unlimited.
MAX-FlO
PCBs
o
USER ABS
ABS 1
FRAME-IDS
150 EXPLORING THE PICK OPERATING SYSTEM
Frames 0 through 399, or 400 frames at 2048 bytes each, are re-
served for the PICK System's own use. This is known as the ABS, or
ABSolute area, and is reserved to hold the PICK Operating System
object code frames and tables as they are paged in from the disk.
FRAMES FUNCTION
The location of the end of the user area varies according to the ca-
pacity of the disk drive. The last frame-id in the system is known as
the MAX-FlO and is displayed on the WHAT screen; it is approxi-
mately the disk capacity of the computer divided by 512.
V&servAli
II II
II
C
F
(onoa 1
Link
r
p
C
F f 1 ckWBr
Link
CORE PROCESSES 153
FRAME
TRACK
SURFACE
" PLATTER
TCl accesses any frame in the system and displays its contents. Here
is an example of a DUMP of an imaginary PICK frame with a group of
one item.
>DUMP 34080<cr>
The physical item contains a lot more information than the user ever
sees. For example, every item is stored with a four-digit byte count
field in hex at the beginning. It is 003F in our example item, repre-
senting 63 bytes from the beginning of the byte count to the end of
the item terminator character.
Immediately following the byte count is attribute 0, or the item-id
100. It is delimited by an attribute mark, which is an ASCII 254 or
hexadecimal FE. The PICK System displays attribute marks with the
"/\" symbol. However, this is not to be confused with an ASCII 94,
which is also depicted by the" A" symbol.
After the item-id, each attribute in the item is delimited by an attri-
bute mark. If any attribute contained multiple values, they would be
delimited by an ASCII 253, depicted by"]"; subvalues are delimited
by an ASCII 252, depicted by "\". At the end of the item is an item
terminator, which is an attribute mark followed by an ASCII 255, or
"/\_". The end of the group is indicated by this character as well; it is
recognized by the virtual memory software by the combination of
item terminator and group terminator, or "A __ ".
When there is more than one item in the group, the items are sepa-
rated by an item terminator. Here is an example of a frame with item
156 EXPLORING THE PICK OPERATING SYSTEM
100 and item 102 stored in the group, with an item terminator at the
end of the first item and a group terminator at the end of the group.
>OUMP 34080<cr>
The monitor performs these functions for the PICK System software
as well as for the processes occurring on the levels above. It is the
portion of PICK that interprets and executes PICK Assembly Lan-
guage. The monitor itself is coded in the native assembly or machine
code of the host processor chip and actually runs the PICK Operating
System software, interpreting and executing the PICK System object
code.
The monitor also provides the PICK System with the ability to run on
many different types of computers. Because the monitor is the only
PICK component that is native to the host computer, it is the only
PICK component that must be rewritten when the PICK Operating
System is moved to a new computer. This is known as a "pseu do-
system" or lip-system" architecture, with the logical computer or
pseudo-computer wrapped around the true computer hardware. It is
this architecture that has given the PICK System its portability and
ensured compatibility from the 8-bit micro to the 64-bit mainframe.
The monitor maintains the control tables for the virtual workspace.
The monitor also maintains the Hash Address Table, or HAT, the
table containing the FIDs of all frames in main memory. It also cre-
ates and maintains the Buffer Status Table, or BST. This is a table that
contains a status byte for each of those frames that are currently lo-
cated in main memory. This extremely important table controls the
update and access of those frames and provides much of the internal
efficiency of the monitor. The BST indicates the status of each frame
as one of the following:
158 EXPLORING THE PICK OPERATING SYSTEM
The HAT and BST allow the monitor to locate frames already in main
memory and thus dramatically reduce the number of redundant disk
accesses required on the system. Studies have shown that 80 to 95
percent of all frame requests on a properly tuned PICK System are
satisfied from frames already in main memory. This is one of the
techniques that allows the PICK Operating System to service several
terminal users in relatively small amounts of memory.
The monitor balances the user processes and the hardware resources
on a process scheduling and time-slice allocation scheme. This
means that each port or process active on a port is allocated a time-
slice of up to several hundred milliseconds of the CPU's attention.
The process is allowed to execute uninterrupted for the duration of
this time-slice and then is suspended by the monitor. All the registers
to reactivate the process are stored, and the process is scheduled for
reactivation after other processes have been serviced. The monitor
then cycles through each of the processes active on the system, acti-
vating and suspending the processes as appropriate. The actual proc-
ess is extremely fast in human terms; on even a 16-bit processor,
every port on the system is usually serviced in the time that it takes
an operator to lift a finger off a key on the keyboard.
Time-slice allocation is dynamically adjusted during the cycle, to in-
crease efficiency even further. Most of the time, a process is allowed
to complete its time-slice. The monitor will terminate a time-slice
whenever a process requests a disk access or voluntarily terminates
the time-slice, such as when a program waits for operator input on
the keyboard. At these interrupts, the monitor activates the appropri-
ate peripheral device, then terminates the time-slice and reschedules
it for activation when the device sends an interrupt, signaling the
completion of the task.
There are effectively only two types of time-slice recognized by the
monitor-batch and interactive-and each user can be allocated ei-
ther one. The monitor is constantly "sensing" each port to see if acti-
vation is required. If it is required, the monitor looks for keyboard
input to determine whether the process is interactive or batch. When
it determines that the process is interactive (or senses keyboard
input), it allocates a time-slice roughly twice as high as the batch
time-slice that the port would have otherwise received. This tech-
CORE PROCESSES 159
system is reloaded to main memory from the disk. Within a few sec-
onds, the system displays a message on the terminal attached to
port 0, the first port on the system. The user is prompted for one of
three options:
If option F or A are selected, the system loads the files and/or the
ABS frames. Then the system loads and activates the monitor in main
memory. The monitor establishes the virtual workspace using the
Overflow Table, either creating the table or reading it from disk. It
then clears and starts the PICK spooler, and links workspace for the
ports and processes defined in the System Configuration Table. In
most implementations, the Coldstart procedure also prompts for the
time and date, the type of terminal attached to port 0, and the port
of the main system printer.
The Coldstart procedure then logs off, and the user is presented with
a logon message. The PICK world is up and running.
CORE PROCESSES 161
10
Applications: Putting the
Parts Together
162
ApPLICATIONS: PUTTING THE PARTS TOGETHER 163
ACCESS STATEMENT:
SORT THE CUSTOMERS BY CUSTOMER-lAST-NAME NAME ADDRESS AMOUNT STATE. NAME
CUSTOMER# CUSTOMER#
PHYSICAL
FILES
1 DATE
AMOUNT 1 NAME
ACCOUNT
CUSTOMERII
.1
1r~'-"1
NAME ~
~
1
J
ADDRESS AMOUNT
CITY ADDRESS
ZIP CODE~ STATE.NAME
ZIPCODE
1. S!E.CODE
~ 4
CODES
STATE.CODE
"l STATE. NAME
STEP 1
1+---- ATTRIBUTE
DEFINITIONS
STEP 4
OUTPUT
STEP 2
DATA
OUTPUT
REPORTS
STEP 3
CODES
DATA
LOGON
PROCESS
(reentrant)
(recursive)
nomic and technical reasons to avoid writing code when good code
already exists. Here are some important considerations on purchas-
ing an application package versus in-house programming on a PICK
System.
Of course, one must first define the specific functions to be per-
formed, and detail the system's procedures surrounding those func-
tions insofar as possible. In other words, one should determine what
the application software must do and the most desirable way within
the PICK System for it to be done.
Second, one must make a thorough search for application software
that does the job, or can be modified to do the job. In-house coding
is very expensive, sometimes several dollars per program line, con-
sidering technical labor, programming tools, and program mainte-
nance costs. A particular application software package may not be
exactly what a particular user might require, but modification can be
a significant cost saving over programming from scratch.
The third consideration is where application generators are of value.
If an application package is based upon an application generator, it
can usually be modified at a relatively low cost. Moreover, it can
usually be maintained over the years at the same cost, provided the
application generator is flexible enough for the task. Even if no appli-
cation software is available, purchase of an application generator will
reduce the cost of outside contract programming or in-house
programming.
In any case, consider some expert advice at each step. There are
many PICK dealers and distributors with a wealth of information on
what is available, and most of the time the information is available
for the asking. When expert advice is required, most PICK consul-
tants will provide a little research and a recommendation for a very
small fee, and the information can save the user vast sums and much
time. Always remember to ask the professional PICK consultant,
"How would you do this application?" Often the professional was
originally a PICK user and may have an answer that is worth many
times the fee.
11
Through the PICK
Looking Glass
The PICK System has been called the "best-kept secret in the indus-
try" by Business Week magazine. In a market of millions of users and
systems, PICK accounts for less than 1 percent of the total systems in
use. A small group of computer manufacturers have implemented
the PICK Operating System. These implementations range from mi-
crocomputers to mainframes, but all use the same data structures,
programs, software, and virtual memory management architecture.
Let's tour the sphere and meet the players.
Note: The following PICK System licensees are listed in alphabetic
rather than chronologie sequence.
Pick Emulations
Prime (1979) Information under Primos: The Information Operating
System was developed by a company named Devcom and was later
sold to Prime. It is currently being pushed very heavily by their cor-
porate headquarters, and recent reports indicate that the Information
product line now represents about 40 percent of their annual
revenues.
Cosmos (1983) Revelation IBM Personal Computer: Cosmos an-
nounced the Revelation Operating System in 1983. While not a
"true" PICK System, it is a true emulation. For example, virtually all
PICK/BASIC programs can be downloaded to the IBM PC running
the ROS, and compiled into native R/BASIC. The Revelation product
has been heavily advertised in the IBM Personal Computer market-
place, and has established a significant user base.
176 EXPLORING THE PICK OPERATING SYSTEM
Accounting/CPA Legal
Advertising Library /Cataloging
Agriculture Loan/Premium Handling
Ambulance Service Lumber
Answering Service Mail Order/Direct Sale
Apparel Industry Mailing House
Associations Management Marine/Maritime
Automotive Medical/Dental
Aviation Medical/Hospital Equipment
Banking/Financial Membership/Subscription
Bookstore Non-Profit
Broadcasting Office Product
Cemetery Partnership Management
Church Personnel Agency
Collection Agency Pharmacy
Commissary Property Appraisal
Construction Property Management
Credit Union Publishing
Dairy Religious Administration
Education Restaurant Management
Electric Utilities Sales Administration
Energy Surveyors
Eq u i pment/Veh ide Tax Collection
Health Club/Physical Fitness Time/Services Reporting
Hospital/Health Management Tires
Hotel/Motel Trades/Exchange
Housing Authority Transportation/Freight
Insurance Trucks
Investment Management Trust Administration
Labor Union Vending
Law Enforcement Veterinary
Lease/Rental Voter Registration
The reason for this trend is in the nature of PICK software developers
themselves. They are typically smaller systems houses, with limited
staffing and resources, specializing in business functions and indus-
tries according to the talents and experiences of the staff. The major
PICK licensees, with their large software development groups, have,
surprisingly, purchased rather than built application software. This al-
lows them to concentrate on the support and enhancement of their
computers.
Most PICK Systems houses would prefer to create standardized, con-
sistent PICK code that can be easily customized and maintained. Ap-
plication generation packages provide a high level of maintainability
at a low cost, since the same software that was used to create the ap-
plication package can be used to modify or customize the software
according to the customer's needs. Moreover, some application gen-
erators produce standard PICK programs that can usually be moved
to many PICK computers. This provides a high degree of portability,
enabling the software developer to sell to a wider market of PICK
users. Some application generators produce code that must be inter-
preted by a run-time package (see Section 10.3). This approach en-
hances a vendor's security, ensuring that the customer will use the
vendor's services for updates and enhancements in the future.
The new PICK System will be capable of supporting more than one
operating system by allowing more than one ABS area in the virtual
workspace. Each port or process can operate out of its own ABS area.
This suggests that UNIX or MS/DOS or even several different ver-
sions of PICK can run simultaneously, with the Open Architecture
monitor maintaining the virtual workspace.
Many new features have been promised in Open Architecture.
• Expanded item size, up to 5 million bytes or more
• Expansion of the frames from 512 bytes to 1024, which will dra-
matically increase through-put to and from the disk during
processing
• Simplified and enhanced system interfaces to facilitate new periph-
eral devices and input/output processing
• Dynamic workspaces to increase processing capability
• Communications capabilities with advanced protocol handling
• Improved FilE-SAVE facilities, such as an incremental FilE-SAVE
(which backs up only files that have changed), and a System Trans-
action log
• Extension of the PICK/BASIC language to allow execution of TCl
commands within PICK/BASIC programs
• Implementation of a PICK/BASIC processor in ACCESS to allow
the use of PICK/BASIC subroutines in attribute-defining items
• Incorporation of new programming languages, notably "C," the
programming language of the UNIX operating system
• Graphics and bit-mapped screen display support
These new features are of interest to the current users of the PICK
Operating System, since they enhance the processes that already
exist. Much of the PICK Open Architecture System, however, is
based upon speculation about what is to come. The system's ad-
vanced approach may provide a path to the environment of the future.
The second generation of computers came in the late 1950s with the
transistor, a faster and cheaper electronic mechanism. The architec-
ture remained the same, processing data sequentially and performing
one job at a time. Time-sharing was limited to job scheduling under
the control of a central operator.
The advent of silicon micro-circuitry in the mid 1960s launched the
third generation of computers. Interrupt-driven architectures opened
the door to multi-tasking, with CPU resources shared under the con-
trol of software. Mass storage random-access technology became
competitive with sequential tape processing. This brought a major
shift in application philosophy, but the architecture of computing
machinery remained the same: computer hardware running
computer software in a strictly sequential process.
Early in the 1970s, the distinction between computer hardware and
operating system software began to blur. Computer instructions were
embedded in silicon as a function of the circuitry itself, and called
firmware. More and more fundamental system processes were rele-
gated to solid state silicon chips, such as read-only memory and de-
vice controllers. The advent of solid logic has been called the turning
point from third generation computers to today's fourth generation
computing systems.
A fifth generation can be seen in the not-too-distant future. Unlike
the previous generations, it is not expected to be based upon any
revolutionary technology. Instead, the fifth generation is being called
"artificial intelligence." Like our memory or speech, fundamental pro-
cesses will be inherent in the physical circuitry. Data structures, stor-
age techniques, device control, and many other aspects of operation
will be relegated to the hardware and the operating system, while the
software is elevated to a higher perception of the data and the asso-
ciated devices. The application software, then, becomes a kind of in-
telligence that will use the system's data and devices in ways never
before possible.
How that power is used will be the important issue. The users will
soon become the most active players in the computer market, ener-
getically searching for the most useful and functional computer
systems (that means software in the fourth generation market). Close
behind them will be the investors, looking for the product that deliv-
ers that functionality. This time standardization will be a major invest-
ment consideration as the investors get smarter about what will work
and what will sell. This may limit the garage workshops and the dis-
tracting start-up companies that created so much diversity and con-
fusion in the computer industry.
As the shake-out reduces the distractions, the investment capital will,
in turn, stabilize the direction of development. There will be more
emphasis on innovation along industry-compatible lines of develop-
ment, in application software, operating systems, and user environ-
ments. We should soon see the software engineering house as the
darling of the investment market.
The software houses will be forced to sacrifice uniqueness and focus
on productivity. This focus on the central issues of the computer's
logical architecture will bring about sweeping changes in the way
computers work. We should see advances in efficiency, more stan-
dardization in interface technology, better data base management
techniques, improved user interfaces, new approaches in system im-
plementation, and layering of system processes on true multi-tasking
hardware. Before long we should see the emergence of a host-type
operating system, acting as a silent general manager of the devices
and servant for application software and even guest operating
systems.
the user's perception of the system and the data. Soon, it may be the
artificial intelligence application that PICK will insulate from the hard-
ware, allowing the AI processes to concentrate on the data, instead
of on the device that is processing it.
It is likely that there is more to come than has occurred since the be-
ginning. In the near future, computers and computer software will
change dramatically; that much is known for certain. Perhaps one of
the best places to stand during the shock wave is one of the places
that is much like the next era: the PICK world.
A
Glossary
185
186 EXPLORING THE PICK OPERATING SYSTEM
ASCII Value /\
Keyboard Entry IE, usually Control/Shift/Up-Arrow
Base FlO. The first FID in the block of (primary) space used to define a
file. (See FID.)
Baud rate. The speed at which data is transmitted to or from a device; for
example, CRTs are typically set to a baud rate of 9600 baud, indicat-
ing that they are to receive 9600 bits (1200 bytes) per second.
Bit. Contraction for binary digit; the means by which data is stored on a
computer. Each bit represents either a "1" or a "0" with an electrical
charge.
Byte. Eight bits; one character of storage; for example, the character "A"
requires one byte of storage and is represented in the binary form,
01000001.
Buffer. An ABS or data frame while it is in main memory.
Conversion. Special processing functions used in ACCESS and PICK/
BASIC for converting data to internal or external formats after select-
ing and sorting.
Correlative. Special processing functions used in ACCESS to perform
special functions on data, such as algebraic equations, before select-
ing and sorting.
CRT. Abbreviation for Cathode Ray Tube; refers to a terminal with a
video screen; also called VDT or Visual Display Terminal.
Delimiter. A character used to separate data. Certain delimiters, such as
attribute marks, value marks, subvalue marks, and segment marks are
referred to as "system delimiters" and are reserved for the purpose of
separating data elements in their physical storage on disk. In other
processes, such as the EDITOR and ACCESS dictionaries, delimiters
are any non-numeric characters used to separate parameters in a
command or function string of characters.
Dictionary. The level of the file hierarchy that contains the items that de-
fine the data in the related data section for use with ACCESS. The
dictionary also contains an item (or multiple items) that provide the
physical disk location for the data file (or files).
FlO. Contraction for Frame I D; the logical address of a frame on disk, be-
tween zero and MAX-FID, the last logical frame on a disk; automati-
cally hashed to physical address by the system.
File. A collection of logically related items.
Filename. The unique item-id of a file-defining item in an account Master
Dictionary (MD). A file-defining item is used to locate, open, and ac-
cess the file dictionary and the data file items themselves.
Frame. Five hundred twelve (512) bytes resident on disk and referred to
by a specific frame ID; a frame is the basic storage unit used by PICK
for all data, programs, software, and the operating system itself. Most
APPENDIX A 187
B
Software and Vendors
Listed below are some of the more widely used application packages
sold in the PICK world. There are many others, listed in various pub-
lications, including PICK Hits available directly from PICK Systems,
and the PICK Software Directory, published by IDBMA. Their ad-
dresses and phone numbers precede the list of software vendors.
PICK HITS
Pick Systems
1691 Browning
Irvine, California 92714
1-800-FOR-PICK
PICK SOFTWARE DIRECTORY
IDBMA (International Data Base Management Association)
PO BOX 15305
San Diego, California 92115
619-578-3152
Advertising Agency: MSI AGENCY
Management Systems, Inc., Stamford, CT. 203-357-0280
Animal License Management: ANIMAL LICENSE
MMI Management System, Orange, CA. 714-542-1837
Apparel Management System: APPAREL MANAGEMENT SYSTEM
Management Systems, Inc., Stamford, CT. 203-357-0280
Application Generator: UHL
Anacomp, Bellevue, WA. 206-641-4990
Application Generator: WIZARD II
Automatic Programming, Inc., Irvine, CA. 714-786-1111
189
190 EXPLORING THE PICK OPERATING SYSTEM
Calendaring: PAC
Diversified Donor Systems, Burlingame, CA. 415-340-0478
Collection Agency: COLLECTION AGENCY
Anacomp, Bellevue, W A. 206-641-4990
Communications: MEGANET COMMUNICATIONS
Megawest Systems, Salt Lake City, UT, 801-487-0788
Communications: PC INTERFACE
Omnar Corporation, North Hollywood, CA. 213-985-2680
Communications: INTELLIGENT DATA MOVER
SKP Electronics, Tustin, CA. 714-832-1732
Comp'r-Assisted M'film Retrieval: VISCOLINK
Visual Systems Corporation, Southfield, MI. 313-354-1100
Construction: CONSTRUCT
Construction Information Sys, Mill Valley, CA. 415-332-5073
Construction: VANGUARD
EDP of America, Cranford, NJ. 201-272-0770
Construction: CONSTRUCTION INSIGHT
Novva Computers, San Francisco, CA. 415-541-9191
Construction: TSE CONSTRUCTION SYSTEM
Software Exchange, St Louis, MO. 314-997-2602
Construction: CONSTRUCTION MANAGEMENT SYS
Software Group, Englewood, CO. 303-790-1870
Credit Union Management: CREDIT UNION
Creative Computer Solutions, Fremont, CA. 415-790-2073
Dairy Route Accounting System: DAIRY ROUTE ACCOUNTING SYSTEM
Gathers Software Inc., Denver, CO. 303-399-6666
Demographics: ATLAS OF THE WORLD
Private Sector, Washington, D.C. 202-337-2165
Dental Office Management: OVERBYTE
Software Group, Englewood, CO. 303-790-1870
Distribution System: DISTRIBUTION SYSTEM
Addept, Santa Clara, CA. 408-986-8550
Distribution System: UHL
Anacomp, Bellevue, W A. 206-641-4990
Distribution System: SALESWARE
Automation Technology, Elkins Park, PA. 215-885-4880
192 EXPLORING THE PICK OPERATING SYSTEM
C
ASCII Codes
The following table lists the ASCII codes and conversions, as used
and interpreted in the PICK System. The first 27 codes are commonly
used to control peripheral devices and special terminal functions.
They are shown with the keyboard entries required to generate the
codes on most ASCII terminals.
199
200 EXPLORING THE PICK OPERATING SYSTEM
51 33 063 00110011 F3 3
52 34 064 00110100 F4 4
53 35 065 00110101 F5 5
54 36 066 00110110 F6 6
55 37 067 00110111 F7 7
56 38 070 00111000 F8 8
57 39 071 00111001 F9 9
58 3A 072 00111010 7A
59 3B 073 00111011 5E
60 3C 074 00111100 4C <
61 3D 075 00111101 7E
62 3E 076 00111110 6E >
63 3F 077 00111111 6F
64 40 100 01000000 7C @
65 41 101 01 000001 C1 A
66 42 102 01000010 C2 B
67 43 103 01000011 C3 C
68 44 104 01000100 C4 D
69 45 105 01000101 C5 E
70 46 106 01000110 C6 F
71 47 107 01000111 C7 G
72 48 110 01001000 C8 H
73 49 111 01001001 C9
74 4A 112 01001010 Dl
75 4B 113 01001011 D2 K
76 4C 114 01001100 D3 L
77 4D 115 01001101 D4 M
78 4E 116 01001110 D5 N
79 4F 117 01001111 D6 0
80 50 120 01 01 0000 D7 P
81 51 121 01010001 D8 Q
82 52 122 01010010 D9 R
83 53 123 01010011 E2 S
84 54 124 01010100 E3 T
85 55 125 01010101 E4 U
202 EXPLORING THE PICK OPERATING SYSTEM
86 56 126 01010110 E5 V
87 57 127 01010111 E6 W
88 58 130 01011000 E7 X
89 59 131 01011001 E8 Y
90 5A 132 01011010 E9 Z
91 5B 133 01011011 80
92 5C 134 01011100 EO \
93 50 135 01011101 90 1
94 5E 136 01011110 5F 1\
95 5F 137 01011111 60
96 60 140 01100000 79
97 61 141 01100001 81 a
98 62 142 01100010 82 b
99 63 143 01100011 83 c
100 64 144 01100100 84 d
101 65 145 01100101 85 e
102 66 146 01100110 86
103 67 147 01100111 87 g
104 68 150 01101000 88 h
105 69 151 01101001 89
106 6A 152 01101010 91 j
107 6B 153 01101011 92 k
108 6C 154 01101100 93
109 60 155 01101101 94 m
110 6E 156 01101110 95 n
111 6F 157 01101111 96 0
o
Verb Formats
WHO
001 P
002 lOBB
Note: When you examine a verb that does not have four characters
in its entry point, it branches directly to entry point zero of the frame.
Another very important note: never, ever, create your own verbs
without being absolutely sure that you are instructing the system to
branch to a valid ABS address! Guessing at entry points and ABS
frames will inevitably cause your system to croak.
207
208 EXPLORING THE PICK OPERATING SYSTEM
DieT filename: When the literal, DICT, precedes the filename refer-
ence, this instructs the system to access the dictionary level of the file.
EDIT
001 PE
002 2
003 D
004
005 CUPN
001 PE indicates that this item is a verb. The character that follows
the P is referred to as the SCP and it defines special functions
that the system software will perform during the operation. SCP
characters and their functions are: Q-PROC, Z-all-purpose,
A-output list, C-change, D-delete, E-add, l-list process-
ing, O-ignore options (as in CREATE-FilE), G-retain quotes
on items with embedded quotes.
002 2 is the mode-id (ABS address); frame 2 = TCl2.
003 0 is referred to as the mode-id 2; the ABS frame address to
which control will pass for processing.
APPENDIX D 209
A third class of TCl commands are the ACCESS commands. They re-
quire at minimum a verb and a filename, but optionally may be fol-
lowed by any ACCESS operative. For example, LIST, SORT, COUNT.
This is the verb structure:
LIST
001 PA
002 35
003 4D
>SORT STAFF<cr>
>SORT STAFF BY NAME<cr>
>SORT STAFF BY NAME WITH AGE > .. 21" <cr>
001 PA indicates that this item is a verb. The character that follows
the P is referred to as the SCP and defines special functions that
the system software will perform during the operation. SCP
characters and their functions are: Q-PROC, Z-all-purpose,
A-output list, C-change, D-delete, E-add, l-list process-
ing, O-ignore options (as in CREATE-FilE), G-retain quotes
on items with embedded quotes.
002 35 is the mode-id (ABS address).
003 4D is referred to as the mode-id 2; the ABS frame address to
which control will pass for processing.
APPENDIX
E
Conversion/Correlative
Reference
Although they are one of the most powerful features of the PICK
world, the attribute-definition conversions and correlatives are also
one of the most complex aspects. Briefly, they are specifications con-
cerning what to do with a data attribute before displaying it to the user.
As specifications, the conversions and correlatives are codes that are
stored in the dictionary-definition items and interpreted by the AC-
CESS process. The difference between a conversion and a correlative
specification is in its location in the attribute-definition item, which
controls when the ACCESS process will apply the specification to the
data items. Conversions reside in the seventh attribute of a
dictionary-definition item and are applied after ACCESS applies the
user's selection criteria and sort criteria. Correlatives reside in the
eighth attribute and are applied before ACCESS performs selection
and sorting. The exception to this rule is the associatives, which are
used to align multivalued attributes properly on ACCESS reports;
they reside in the fourth attribute and are referred to as correlative
specifications because they are applied before selection and sorting.
ATTRIBUTE DESCRIPTION
ATTRIBUTE DESCRIPTION
A Algebraic expressions X X
C Concatenation X X
C Controlling multivalue X
D Dependent multivalue X
D Date conversion X X
F Mathematical function X X
G Group extract X X
L Length X X
M Mask decimal functions X X
212 EXPLORING THE PICK OPERATING SYSTEM
Me Mask characters X X
MD Mask decimal X X
ML Mask decimal, left-justified X X
MP Mask packed decimal X X
MR Mask decimal, right-justified X X
MT Mask time X X
MX Mask hexadecimal X X
T Text extraction X X
T File translation X X
The A Correlative
The general form is:
Available Operands
An Attribute Number: Any whole number implies an AMC (Attribute
Mark Count). This means that the contents of the specified attribute
APPENDIX E 213
008 A; 1 *2
008 A;N(QOH)*N(UNIT.PRICE)
This causes ACCESS to find the two dictionary items called QOH and
UNIT. PRICE. Then it uses attribute 2 of each item to determine
where the data is located. After retrieving the data, it then multiplies
and displays the product.
D: This specification returns the system date in its internal storage
format (the number of days since December 31,1967). For example:
008 A;(D-8)/"365"
ND: This operand provides the number of detail lines that have oc-
curred since the last control break. It is useful in such instances as
calculating an average. A processing restriction is imposed, however,
in that this only works in the conversion line, attribute 7 of an
attribute-definition item.
NI: The N I operand provides the sequential item number of the item
being processed.
NV: This operand returns the count of the number of multivalues
contained in item being processed.
NS: The NS operand returns the count of the number of subvalues
contained in the item being processed.
T: Like the D (system date) operand, the T operand returns the cur-
rent system time, in internal format, or the number of seconds past
midnight.
Literal or Numeric Constant: Any operand enclosed in single (') or
double (") quotes is treated as a constant, or literal, including num-
bers. This can be useful in scaling numbers or in specifications in-
volving comparisons. For example:
Note that the double quote symbols are required around each num-
ber and that the brackets are actually part of the function. For
example:
Mathematical Operators:
+ add * multiply
- subtract / divide
Concatenation Operator:
; concatenate
logical Operators:
equal to
# not equal to
< less than
> greater than
< = less than or equal to
>= greater than or equal to
The C Correlative
The general form is:
001 Irvine
002 CA
003 92714
Sample C Correlative
Sample Output
Irvine. CA 92714
The C Associative
The general form is:
The 0 Associative
The general form is:
D;attrnum
The 0 Conversion
The general form is:
APPENDIX E 217
The F Correlative
The general form is:
F;3;4;*
This example causes ACCESS to put the value of attribute 3 onto the
stack, then push the value of attribute 4 onto the stack. STACKl is
said to contain the value of attribute 4, while STACK2 contains the
value of attribute 3. A multiplication operand causes the STACKl
value and the ST ACK2 value to be "popped" off the stack and multi-
plied together; the resulting value is stored in STACKl and will be
displayed by ACCESS as the value of the attribute being defined.
The F specification push-down stack has seven possible entries. All
operands push a specific value on the top of the stack (STACK 1). A
push repositions all stack entries one position down. The entry in
STACK7 is lost when an eighth operand is pushed onto the stack.
With the exception of the "N(dictionary item name)" operand, all of
the operands listed under the A specification are available in the F
specification. In addition, any ACCESS conversion may be used as an
operator. The top entry of the stack is used as the source value for
the conversion.
The G Correlative
The general form is:
G*l CA
GO*l CA
G1*1 92714
G2*1 1000
G1*2 92714*1000
The L Conversion
The general form is:
Lminlength,maxlength or Lmaxlength or LO
The MC Conversion
The general format is:
MCI! lcharcode
The MT Conversion
The general form is:
MT 46800 13:00
MTH 46800 01 :OOPM
MTS 46800 13:00:00
MTHS 46800 01 :OO:OOPM
The MX Conversion
The general form is:
MX
MX 12345 3132333435
MX CHIP 43484950
The T Conversion
The general form is:
The T Correlative
The general form is:
The inamc parameter specifies the attribute mark count to use for
conversions on input. ACCESS does not use this operand.
The "outamc" parameter specifies the attribute mark count of the at-
tribute in the translate file that contains the value for output.
The attribute mark count referenced in the "breakamc" specifies a
different attribute to be used on the BREAK-ON and TOTAL lines,
rather than the outamc. Some examples are:
This has been a brief excursion into the unique properties of the
PICK conversion and correlative specifications. PICK users learn
more ways to use these powerful features every day. The longer one
stays, the more one learns here.
APPENDIX
F
Dictionary Listings from
Tutorials
224
APPENDIX F 225
227
22B EXPLORING THE PICK OPERATING SYSTEM
Base FID, 16, 17, 23, 52, 186 Climax Computer Corp" 172
Basic Assembler Language, 169 Clock, 157
BASIC command, 40; see also PICK/BASIC Code generators, 166-168
Batch processing, 4 Cold start, 159-161
PICK/BASIC applications, 166 establishment of virtual workspace, 149
\pe also PROC language Collection agency software, 177, 191
Baud rate, 186 COL#? message, EDITOR, 66
Billing system, medical, 195 Column header, 25
Bit, 186 Column width, 16, 19, 25
Bit-mapped screen display, Open Architecture, ACCESS reports, 81
180 Q-pointer, 20-21
BLOCK-C00JVERT, 46, 49, 52 Combination, 9, 10
BLOCK-PRINT command, 39 Commissary software, 177
and spooler, 136 Communications, 183, 191
Blocks enhancements, Open Architecture, 7, 180
empty, 133 Computer Distributors (COl Information Systems),
padding, 132 6,172
Bookstore software, 177 Computer industry shake-out, 183
Boolean operators, ACCESS, 87-88, 101 Computers, evolution of, 180-182
Bootstrap, 159-161 Concatenation, 215-216
BREAK, 31 operator, 215
clears tvpe-ahead buffer, 31 Connect ives
disabled in DlLETE-FILE, 49 listing, 36
BREAK key, 156 throwaway, 86
BREAK-ON modifier, 98,163-164,213 Construction industry software, 177, 191
Broadcasting sottware, 177 Consultallts, PICK, 168
Brokerage mcln,lgement software, 190 Control characters, 30, 35
BST (Buffer Status Table), 157, 159 ConvfCrsion, base, 34-35, 221, 222
Bufferls), 186 Conversions, 9, 10, 25, 81, 186
E:DITOR, 55, 57-58 Conversions and correlatives, reference, 210-223
frame, 148 A (algebraic) correlative, 163, 212
input, displaying, 116 C (concatenate) correlative, 215-216
input, primary, 115 C (controlling) associative, 216
output, PROC, 112, 114 codes, listed, 211-212
type-ahead, 30-31 D (date) conversion, 216
write-required, 148 D (dependent) associative, 216
Buffer Status Table (BST), 157, 159 F (function) correlative, 218
Business license management software, 190 format, 210-211
Bu,sint's\ WefC/':, 171 G (group) correlative, 218-219
Byte, HH, L (length) conversion, 219
M (mask decimal) conversion, 219-220
Calculdtor commands, 33-34 MC (mask character) conversion, no
Cllendaring softwctre, 190-191 MR (mask decimal, right-justified) conversion,
CATALOG command, 124 212
COl Information Systems, 6, 172 MT (military time) conversion, 221-222
Central Automdtion Zebra series, 6 MX (mask hexadecimal) conversion, 222
Character SfCt, lapanese, 175 T (text extraction) conversion, 222-223
CHARGE-TO, 49 T (translation) correlative, 223
Church management software, 177, 197 see also Conversions; Correlatives
CI E Systems, 7, 172 COPY command, 48, 51
C language, Open Architecture, 180 format, 40-41
CLEAR-FILE command, 48-49, 53 COPY-LIST command, 95
230 EXPLORING THE PICK OPERATING SYSTEM