You are on page 1of 254

Ilploring the TM

Openting
System

Jonathan E. Sisk
and
Steve VanAndaie

Hayden Book Company


A DIVISION OF HAYOEN PUBLISHING COMPANY, INC.
HASBROUCK HEIGHTS, NEW JERSEY I BERKELEY, CALIFORNIA
Acquisitions Editor: RON POWERS
Developmental Editor: JOHN BRAGG III
Production Editor: LORI WILLIAMS
Cover Design: JIM BERNARD
Compositor: ART, COPY, & PRINT, INC.
Printed and bound by: HAMILTON PRINTING CO., INC.

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.

Printed in the United States of America

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

1. An Introduction to the PICK System 1

1.1 FOUNDATION FOR PICK


1.2 THE PICK MilESTONE 2
1.3 THE HISTORY OF THE PICK OPERATING
SYSTEM 5
1.4 PICK AS A SPHERE 7

2. Overview of the PICK Operating System 11

2.1 PROCESSES WITHIN PROCESSES 11


2.2 FilE POINTERS AND DICTIONARIES 14
2.3 ITEM-IDS AND ATTRIBUTES 21

3. The User Processes: TCl 27

3.1 TCl: PICK'S SURFACE 27


3.2 HOW TO ENTER AND EXIT THE SYSTEM 28
Account Names 28
Prompt Characters 29
Correcting Entry Errors, Special Control
Characters 30
Type-Ahead Buffers 30
Suspending Online Program Execution 31
The OFF Command 32
3.3 TCl COMMANDS, OR VERBS 32
TCl-1 Verbs 33
TCl-1 Commands-Tutorial 33
Converting Data to Alternate Bases 34
The LIST Commands 35
The lOGON Command 36
The lOGOFF Command 37
Sending Messages to Other Users 37
The POVF (Display Available Overflow)
Command 38
The WHO Command 39
The BLOCK-PRINT Command 39
3.4 AN INTRODUCTION TO TCl AND FilE
STRUCTURES 40
TCl-1i Verbs 40
The CREATE-ACCOUNT Command 47
The Account Password and the PASSWORD
Command 44
logging to the CLASS Account 45
The CREATE-FilE Command 46
The CLEAR-FilE Command 48
The DELETE-FilE Command 49
3.5 SELECTING FilE SIZING PARAMETERS 50
Displaying File Allocations 57
The GROUP Command 57
Removing Data from the STAFF File 53

4. EDITOR: The User Tool 54

4.1 EDITOR: THE WINDOW INTO THE PROCESS 54


Theory of Operation 54
Mnemonic Commands 54
4.2 EDITOR COMMAND GLOSSARY 55
line Numbers 56
The EDITOR Line Pointer Concept 56
4.3 ACTIVATING THE EDITOR: THE ED OR EDIT
COMMAND 56
The EDITOR File Buffers 57
The I (Insert) Command 59
The l (List) Command 59
4.4 MISCELLANEOUS EDITOR COMMANDS 61
The? (Display Item-id and Filename) Command 61
The S? (Display Size of Item) Command 62
The S (Suppress Display of Line Numbering)
Command 62
4.5 LINE POSITIONING COMMANDS 63
The G (Go to Line Number) Command 63
The T (Top of Item) Command 63
The B (Bottom of Item) Command 64
The <cr> (Display Next Line) Command 64
The U (Move Line Pointer Up) Command 64
The N (Increment Line Pointer) Command 64
4.6 OTHER EDITOR COMMANDS 65
The R (Replace) Command 65
The DE (Delete Line) Command 68
The ME (Merge) Command 69
4.7 SAVING AN ITEM 72
The FI (File Item) Command 72
The FlO (File Item and Overwrite) Command 72
The FIK (File Item and Kill) Command 74
The FS (File Item and Remain in EDITOR)
Command 74
The EX (Exit Item) Command 74
The EXK (Exit and Kill) Command 75
The FD (Delete Item) Command 75
4.8 THE PRESTORED EDITOR FUNCTIONS 77
Displaying the Prestored Commands 77
Defining Prestored Commands 77
Activating Prestored Commands 78
Complex Prestored Commands 78

5. ACCESS: The Oata Retrieval Process 79

5.1 ACCESS VERBS 79


ACCESS features 80
Attribute-Defining Items 81
Explicit Dictionary Items 83
Throwaway Connectives 86
Selection Criteria 86
5.2 ACCESS VERBS AND EXAMPLES 89
The COUNT Verb 89
The LIST Verb 90
The LIST-ITEM and SORT-ITEM 90
The LIST-LABEL and SORT LABEL 90
5.3 LIST -PROCESSI NG COMMAN DS 91
The POINTER-FILE 91
The SELECT and SSELECT Commands 92
The SAVE-LIST Command 93
The GET-LIST Command 94
The EDIT-LIST Command 94
The COpy -LIST Command 95
The DELETE-LIST Command 95
5.4 ACCESS TAPE HANDLING COMMANDS 95
Generating a T-DUMP Tape or Diskette 96
Producing Reports from Media 96
Loading Data from T-DUMP Media 97
5.5 ACCESS MODIFIERS AND OPTIONS 97
The BREAK-ON Modifier 98
The BY Modifier 98
The BY-DSND Modifier 98
The COL-HDR-SUPP Modifier or (C) Option 99
The DET-SUPP Modifier or (D) Option 99
The FOOTING and HEADING Modifiers 99
The HDR-SUPP Modifier or (H) Option 100
The ID-SUPP Modifier or (I) Option 100
The WITH and IF Modifiers 101
The LPTR Modifier or (P) Option 102
The NOPAGE Modifier or (N) Option 102
The TOTAL Modifier 102
5.6 STAFF FILE UPDATES 102
New Attribute-Defining Items 104

6. PROC: The Stored Procedure Language 105

6.1 PROC FEA TU RES 105


Rules and Conventions 105
6.2 PROC LINKAGES 106
One-way Transfer of Control 106
Two-way Transfer of Control 106
6.3 THE MENU PROC 107
Examples 111

7. PICK/BASIC: The Programming Language 121

7.1 PICK/BASIC FEATURES 121


Preparing the BP File 121
Entering a Sample PICK/BASIC Program 122
Compiling the PICK/BASIC Source Code 123
7.2 ACTIVATING PICK/BASIC PROGRAMS 123
The RUN Command 123
The CATALOG Command 124
The DECATALOG Command 124

8. Controlling Peripherals 125

8.1 THE TERMINAL CONTROL COMMANDS 125


The TERM and SET-TERM Commands 125
8.2 MAGNETIC MEDIA COMMANDS 128
Attaching the Media to Your Terminal 128
Detaching the Media from Your Process 129
The Logical Structure of Media 129
Positioning the Media to the Beginning 130
Moving a File Back 130
Moving a File Forward 130
Moving to the End of Recorded Data 131
Reading the Media 131
Reading the Media Label 133
Completing the Session 133
8.3 THE SPOOLER 134
Types of Spooler Entries 134
8.4 SPOOLER CONTROL COMMANDS 134
STARTSPOOLER (Restarting the Spooler) 135
STARTPTR (Starting Printers) 135
LlSTPEQS (Displaying Spooler Entries) 136
LlSTPTR (Displaying the Printers) 138
LlSTABS (Displaying Current Spooler
Assignments) 139
SP-STATUS (Displaying the Spooler Status) 139
SP-ASSIGN (Changing Spooler Assignment) 139
SP-EDIT (Accessing Spooler Entries) 142
SP-KILL (Stopping Spooler Output 144

9. Core Processes 146

9.1 VIRTUAL MEMORY AND THE LOGICAL


COMPUTER 146
The PICK System Virtual Memory Management 146
The Frame and Frame-Id Concept 147
The Structure of the Virtual Workspace 149
9.2 FRAMES AND ITEM STRUCTURE 152
Format of the Linkage Field 152
9.3 ABS AND THE MONITOR 156
Functions of the Monitor 157
9.4 COLDSTART AND THE PICK IPL PROCESS 159
The Coldstart Options 159
The Coldstart Process 160

10. Applications: Putting the Parts Together 162

10.1 APPLICATIONS USING THE PICK SYSTEM 162


10.2 PROC AND PICK/BASIC APPLICATIONS 164
10.3 APPLICATION G EN ERATOR SYSTEMS 166
10.4 ASSEMBLY LANGUAGE APPLICATION
SYSTEMS 168
11 . Through the PICK Looking Glass 171

11.1 PRINCIPAL PLAYERS ON THE PICK WORLD 777


PICK Emulations 775
11.2 MAJOR APPLICATION SYSTEMS FOR PICK 776
11.3 TRENDS IN APPLICATION SOFTWARE 777
11.4 PICK PERSONAL COMPUTING ON THE IBM XT
ANDAT 778
11.5 OPEN ARCHITECTURE: THE UNIVERSAL
HOST 779
11.6 THE "FOURTH AND A HALF" GENERATION 780
Components of the Next Generation System 781
11.7 THE TRANSITION TO THE NEXT ERA 182
PICK and the Fifth Generation Computer 783
Spiraling Up from the Surface 784

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.1 FOUNDATION FOR PICK

Recently a local computer consultant attracted attention in the trade


papers by revealing one of his secrets for his successful consulting
practice. It seems that this data processing professional starts by ad-
vising clients to get rid of their computers. Many of his companies
immediately get along better without them, and his reputation, and
his fees, continue to grow.
This is distressing, but not altogether surprising. Since the early 1970s
there has been a growing awareness among many data processing
professionals that computers often hinder the attainment of business
goals.
This started when a business person had to become a data process-
ing specialist, or hire one, in order to use a computer effectively.
Systems were productive only after the business managers learned
about data processing. During the 1970s it became crystal-clear: to
be useful to the management team, systems have to be less special-
ized, more business-oriented, and a lot more convenient. This is the
only way that data processing professionals could become partners in
management instead of obstacles.
The situation is improving, and the computers themselves are part of
the improvement. The computer industry has focused on "user-
friendly" systems. A user-friendly system is one that relates to the
user's way of working with the data. This includes nontechnical pro-
cesses that are easy to learn and easy to use. With this type of system
the business manager can concentrate more on the business problem
and less on the computer.

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.

1.2 THE PICK MILESTONE

In many respects you are looking at a window to a new era in


computers. This book represents a window on a new generation of
computer systems. The authors have had the opportunity to look
through this window for some time; we've been using a computer
system that is part of the next era. Here we hope to provide a
glimpse of the major features of the system. Details about those
features will fill other books for years to come.
The PICK Operating System provides a view of future operating envi-
ronments. The system was ahead of its time when it was created in
the late 1960s, and today it is still one of the most advanced
computer operating systems of the 1980s. Its unusual longevity is
due to good user interface and the fundamental power of its unique
data structure. The PICK Operating System is unusually flexible, and
yet it is easy to learn and easy to use.
AN INTRODUCTION TO THE PICK SYSTEM 3

But why does it represent a milestone? Tomorrow's users will insist


upon an easy-to-Iearn, easy-to-use environment on micro and
mainframe alike. Millions of users with their billions of dollars are
likely to shape the computer industry with their demands. The things
that they learn from the PICK Operating System may, in turn, shape
their demands.
To understand the PICK Operating System's effect, we can look at
where we are today. For over twenty years the computer market-
place has been flooded with new computers and new ways to use
them. The PICK Operating System was born at the beginning of this
flood. It was developed at a time when memory was expensive. At its
core was a virtual memory management scheme that used the
available memory to its maximum efficiency. Over the years techni-
cal advances gradually provided for vast amounts of main memory;
however, the techniques for using that memory have been advanced
since the time that the memory was very expensive. Since the PICK
virtual memory scheme uses memory more efficiently than any other
approach, it remains in the forefront of the technical tide.
Furthermore, there is more than mere efficiency at work in the PICK
System. The technical tide is relentlessly making computers easier to
use, and educating users in the process. As the technical advances
bring the size and cost of the equipment down, the computers be-
come directly accessible by more users. Those users contribute to
still further operating system advances with their talents and their
dollars. The pace of innovation accelerates, and in each round the
users become more knowledgeable.
A knowledgeable user community creates a demand for features for
the user instead of the technician. The PICK System, with its orienta-
tion to the user, has many of those features. It has an easy-to-Iearn
user interface, and a report generation language similar to spoken En-
glish. It has an integral data base manager that supports flat files, hier-
archies, or relational data base files. The system includes an ad-
vanced data-base-oriented version of the BASIC programming
language with automatic compilation and link-editing. The system's
peripherals are controlled by a complete set of device commands
built into the user interface. Finally, these features are consistent,
from the personal computer version all the way up to the mainframe
system. Portability is inherent in the operating system's underlying
structure. The demand for such consistent features is growing in a
knowledgeable user community that is becoming actively involved in
computing.
And how will demand grow, explosively or gradually? We think a
gradual change in operating systems, toward more user-oriented
4 EXPLORING THE PICK OPERATING SYSTEM

features, is likely. The existing architecture is embedded in the hard-


ware and the technicians. As the technicians change, the techniques
for using the hardware will change. The changes will be made as part
of the transition from the inward orientation-for-efficiency of the
1970s to a user-oriented philosophy like PICK.
But "change" does not mean a revolutionary swing to the PICK Sys-
tem. Some aspects of PICK are not directly compatible with the ma-
jority of the leading computer systems, and this will prevent any sud-
den shift to PICK. Other PICK features may well contribute to more
standardization, however.
Standardization in computer systems will occur as a collection of
commonly used techniques are chosen in the marketplace, not any
one system. We hear claims that the ultimate user-oriented system is
here already. Some say it is MS-DOS; others say it is one of the incar-
nations of UNIX. Yet for all the clamor, no system today appears to
be sweeping all the others out of the market. It is more likely that the
seeds of a new system are growing in several places, and the univer-
sal system of the future is still evolving.
One impOt.tant seed of the universal system will be PICK. Many as-
pects of the system are inherently compatible, such as the RS232C
interfaces to terminals and printers. Other aspects are too new for a
standard to exist, like PICK's relational data base processors and nat-
ural languages. PICK will contribute these aspects, as extensions of
its universally simple data structure.
The PICK Operating System has a fundamental data structure:
variable-length ASCII files with a dictionary/data file relationship ar-
rangement. Special operating system accessing processes in combi-
nation with a virtual memory architecture eliminate the need for any
kind of indexing. The data structure enhances every process in ways
that make PICK more like a new approach to data processing. In
PICK-type processing, users store the data in much the same way
that they perceive the data, relating separate attributes (the PICK
equivalent of "fields") when appropriate. This approach enhances
user productivity by reducing complex computer processing to a
level that does not directly affect the user.
The reduced complexity lowers the barriers between the users and
the computer. For example, users make the transition to PICK gradu-
ally. Introduced by flat-file technicians and reference books, the sys-
tem is used with conventional approaches at first-indexed files,
batch processing, and online updates of the indexed files. These ap-
proaches work well enough at first; PICK accommodates these ap-
proaches easily. But then PICK users tend to evolve. With daily ex-
posure to the user interface and the PICK processes, they begin to
AN INTRODUCTION TO THE PICK SYSTEM 5

develop sophisticated, even artistic data base applications. Most


don't even realize the transition they have made; they think that they
have simply become specialized. But because the PICK System does
not require much technical background (it can even be a hindrance),
these users retain their perspective for their business. The PICK users
still see beyond the data processing to the purpose for which the
data is being processed. They gain productivity while acquiring a
new zeal and enthusiasm for the business at hand. When the PICK
users realize what has happened, they usually become enthusiastic
about the system as well, creating a healthy relationship between the
business and the business use of data processing. They have made a
transition to an era of computing that we often hear more about than
we actually see.

Because personal data processing is coming to more computer users,


and these users are becoming the computer buyers, we can expect
the PICK Operating System to exert its influence on their selections
in the next few years. As the technical advances make the machines
more powerful, the PICK System's internal architecture becomes
even more effective. As the users become more knowledgeable, the
PICK features become more attractive. As the users become more
sophisticated, they favor PICK's relational data base with its funda-
mental data structure. By examining what is in PICK today, we can
anticipate some of what will be available tomorrow.

1.3 THE HISTORY OF THE PICK OPERATING SYSTEM


Despite its features and the rave reviews of its users, the PICK Sys-
tem is relatively little-known. The PICK Operating System is a benefi-
ciary and a victim of its history. All of the system's unique features
were developed from the rich mixture of theory and research that
has existed for the last twenty years in the computer industry. The
system's relative anonymity is a product of the turmoil as well; with
all the clamor and competing claims, many of the system's features
have been ignored or discounted. We've discussed the PICK
Operating System as an example of operating environments to come;
now let's look at how we came to be here.

1965 Development of the operating system started at TRW by Don


Nelson and Dick Pick. Originally called GIRLS (Generalized In-
formation Retrieval Language System). it was developed on an
IBM 360.
1969 Delivered to the United States Army. Renamed GIM (General
Information Management). The programs temporarily became
public domain.
6 EXPLORING THE PICK OPERATING SYSTEM

1970 Dick Pick moves the development effort to the Sigma 7


computer located at the University of California at Irvine.
1971 Pick signs a license agreement with Microdata Corporation to
put the Operating System on the Microdata 800 CPU, which
had formerly been sold without an OS. The DATA/BASIC lan-
guage is added to the system as the primary programming
language.
1972 Pick & Associates incorporates in Irvine, California.
1974 Microdata announces the REALITY series of computers using
the operating system implemented by Pick & Associates.
1978 Pick & Associates announces the Evolution Computer System,
complete with the PICK Operating System, based on the
Intertechnique CPU built in France.
1978 Pick & Associates begins the implementation on the
Honeywell Level 6 machine, later to be called the Ultimate
System.
1978 Seattle-based Devcom Corporation begins development of an
emulation of PICK called Information, to run on the computers
built by Prime. Development completed in 1979.
1979 First deliveries of Ultimate Computer Systems using the PICK
Operating System.
1980 Pick & Associates sells the rights to produce and market the
Evolution Computer to an independent group of investors.
1980 Pick & Associates implements the system on the ADDS Men-
tor, a Z8000-based machine from Applied Digital Data
Systems, a division of NCR.
1981 Implementation begins on the IBM Series/1 for Computer Dis-
tributors, Inc. (now called CDI Information Systems).
1981 Pick & Associates and ADP (Automatic Data Processing) devel-
op and complete an implementation on the Hewlett-Packard
3000.
1982 Pick & Associates changes its name to PICK Systems.
1982 Licenses are established for implementations on the following
systems:
Altos. ACS 8600
ADDS. Mentor 3000, 5000
Systems Management, Inc. IBM 4300 and CS-9000
Datamedia. 932 (first system based on Motorola's
MC68000)
General Automation. Zebra series (MC68000)
Pertec Computer Corp. Sabre series (MC68000)
1983 Most of the implementations begun in 1982 are ready for the
market. New licenses include:
AN INTRODUCTION TO THE PICK SYSTEM 7

WICA T. Australian company (MC68000)


TAU Engineering. Japanese company (MC68000)
C1E Systems. Irvine, CA (MC68000)
1983 PICK Systems begins an in-house implementation on the IBM
PC-XT.
1984 PICK Systems announces the PICK XT. Deliveries begin; dealer
network is begun.
1984 PICK Systems announces the initial implementations of Open
Architecture, a new version of the system with significant en-
hancements, including unlimited record sizes, expanded virtual
memory pages, and communications capabilities. Considered a
host for the operating systems of the 1990s and expected on
the market in 1985.
1984 Fujitsu Micro Systems becomes a PICK licensee.
1984 Nixdorf Computer Corp. becomes a PICK licensee.
1985 PICK Systems begins work on the I BM PC/AT implementation
to be delivered in late 1985.

And the process continues. Now let's consider the PICK System
itself.

1.4 PICK AS A SPHERE

It is beyond the capabilities of one book to explain an entire


operating system and how to use it productively. The inner workings
of a system as comprehensive as PICK requires more detail than we
can bring to these pages. It is sufficient to discuss what the system
can do and how the user can utilize the major PICK processes. Since
the system is so closely integrated, it is helpful to describe the system
as a unique environment. In the next few pages we'll look at the
features of the PICK "world" and observe what it is like to work there.
And world is a good word for such a user environment. PICK might
be described as a small satellite in the major computer market. It
spins out on the periphery of the known computer systems, bright
for its space but relatively little-known. It has a unique and friendly
surface with languages and tools for the novice and visiting user. Be-
neath the surface are distinct levels, each designed for the users and
technicians who work there. For these users, there are powerful tools
to move between the levels and change the system. These tools can
even take a user into the core of the PICK System itself, where there
is a relational data base driven by a virtual memory management nu-
cleus. It silently supports and powers the levels above, as well as
scores of application systems spinning along on the surface.
8 EXPLORING THE PICK OPERATING SYSTEM

PICK AS A SPHERE
ACCESS LEVEL
PROC

ASSEMBLER
ABS

THE
PICK
WORLD

TCl

We'll discuss the PICK world in general at first. Then we'll go on a


sort of guided tour for several sections of tutorials. Finally we'll look
at the internal workings of the system and discuss its potential. At the
end of the book you'll go on your way with a load of mementos in
the Appendixes. First, let's discuss the local terminology.
Within the PICK System, all data and files are under the control of
the operating system. The virtual memory software maintains all the
system's disk contents without intervention by the user or technician.
To understand the implications of such a system, we need to exam-
ine a few of the PICK terms. The sphere analogy can be useful to de-
fine these terms before we start our tour.
For example, let's consider the Account structure of the PICK world.
Within the PICK world are separate accounts, which can be thought
of as buildings on the PICK surface. Every PICK System has a SYS-
TEM file. The SYSTEM file can be thought of as the global directory
containing the addresses of every building on the PICK world. Within
each building/account is a directory of the files within that account.
This account directory is called the Master Dictionary, and we'll dis-
cover many other things in this file as we tour. For now, we can think
of the master dictionary as containing a directory of all the rooms in
the building.
AN INTRODUCTION TO THE PICK SYSTEM 9

ACCOUNT FILE ROOMS

~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)

To summarize in more conventional language, the PICK Operating


System maintains a global SYSTEM file, which contains Items that en-
able the system to locate the appropriate Master Dictionary, or MD,
whenever a user logs on to an Account. The master dictionary has,
among other things, items that enable the system to locate the Dic-
tionaries of the account's Data files. These dictionaries contain items
that describe the data items contained in the data file. Every item in
the PICK environment-in a data file, dictionary, master dictionary,
and SYSTEM file-is composed of separate fields called Attributes.
These attributes can be converted, combined, associated, or translat-
ed according to the specifications recorded in the data file's dictiona-
ry. In addition, an attribute can contain separate and independent
Values, which can have separate and independent Subvalues. Items,
attributes, values, and subvalues are delimited by special characters
recognized by all PICK System processes. These delimiters allow the
PICK System to perform all data storage and retrieval automatically,
without the user being aware of any of the above components. And
the PICK Operating System performs all this magic in the blink of an
eye, because the PICK world is precisely structured to perform in this
manner.
CHAPTER

2
Overview of the PICK
Operating System

2.1 PROCESSES WITHIN PROCESSES


There are three distinct views of the PICK Operating System, all si-
multaneously applicable. The first is the user's view that we dis-
cussed in the last chapter. The user at a terminal perceives the sys-
tem as a well-ordered set of data files. The user also perceives a set
of tools (PROC, ACCESS, TCl, PICK/BASIC, and the EDITOR) acti-
vated through the keyboard for manipulating the data from the mem-
ory to the CRT screen or to paper or perhaps to magnetic tape. This
can be considered the user's view of the PICK 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
- - - - - --

12 EXPLORING THE PICK OPERATING SYSTEM

To the technician, a very different view is at work. The PICK techni-


cian, or the experienced PICK user trained in the system, sees it as a
vast set of frames of memory, numbered from zero to the tens of
thousands. The system resides in these frames, and stores and re-
trieves data from them. The system processes data in these frames,
using them as required and storing them in a table of overflow frames
when they are not needed. The frames are known as the "virtual
workspace," and management of frames is totally delegated to the
entity known as the "system." This view of an environment within
the real computer is known as the "logical" or "virtual" view. Nearly
all system functions are discussed in terms of this logical view be-
cause it is consistent among PICK computer systems, regardless of
the actual hardware.

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.

PROCESSES WITHIN PROCESSES


14 EXPLORING THE PICK OPERATING SYSTEM

The effect of these integrated processes is a very high degree of flexi-


bility in handling data, and in adapting to changing user
requirements. The PICK System has an enormous potential for pro-
ductivity in the hands of experienced technicians. Not surprisingly,
the most skillful technicians in the PICK world are users, probably
because they are the most sensitive to that potential.

2.2 FILE POINTERS AND DICTIONARIES

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.

FILE POINTERS AND DICTIONARIES

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 SYSTEM file contains file-defining items that point to account


master dictionaries, or MDs. These items are stored under an item-id,
which is the logon ID that the system will recognize. When a user
logs on, the SYSTEM file is checked by the logon process to locate
the pointer item. This item points to the second level of files in the
system, the account MD. There is one MD for each logon ID in the
system.

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

013 Reallocation modulo and separation; a new modulo and separa-


tion to be used if the file is restored from magnetic media.

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:

D For normal (data and dictionary) file pointers. This constitutes


the majority of files on the PICK System.
DC This defines the file as a "list-class" file and is reserved for files
that will contain PICK/BASIC source code items or "saved-lists"
created with the SAVE-LIST command.
DX This type of pointer affects the process that saves files to mag-
netic media. A DX pointer instructs the SAVE process to not save
this particular file pointer and the contents of the file. The file
will continue to exist on disk until a RESTORE is performed,
when the file is effectively removed.
DY This class of pointer instructs the SAVE process to save the space
reserved for the file, but not its contents. Effectively, this is the
same as clearing a file of its contents while keeping the space for
the storage of data. DY pointers are often used on temporary
transaction files that do not need to be off-loaded to magnetic
media.

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

(Ideally, the number of frames in a group should be kept to a mini-


mum, as there can be a decrease in access time with the increase in
the number of overflow frames attached to a group. This topic will
be discussed again in Chapter 3.)
The fourth attribute in a file-defining item is the separation, or the
number of contiguous frames in each group. This parameter is always
1. An early release of the PICK System allowed a different parameter
here, but the use of separation greater than 1 was found to be un-
necessary. This is due to the fact that the system automatically
accesses as many frames as necessary for each group, with little or no
loss of efficiency.
A very important note: The "hashing" technique used in the PICK
access method relies on attributes 2, 3, and 4 of the file pointer to
determine where data should be placed or where it can be found. It
is extremely important to understand that none of these attributes
should ever be changed by the user, as that can have a disastrous ef-
fect on the contents of the file.
The fifth and sixth attributes of the file-defining item are optional se-
curity codes. If the file-defining item has a value in the fifth attribute,
then a user must have the same value in the fifth attribute of his or
her logon item in the SYSTEM file in order to access the file. This fifth
attribute is called the "retrieval code" in both the file-defining item
and the logon item. If the file-defining item has a value in the sixth
attribute, a matching "update code" attribute in the logon item is re-
quired to update or change the file. These security features apply to
all PICK System processes and user programs except PICK Assembly
language programs.
The seventh attribute is used only in the SYSTEM file, in file-defining
items used as pointers to master dictionaries. It is used in the SYS-
TEM file for storing an encryption of the optional password for the
account defined by the item. There is a PASSWORD command at
TCl (Terminal Control language) on the SYSPROG account for alter-
ing an account password safely (see Chapter 3).
The eighth attribute is not used in the master dictionary and the dic-
tionary file-defining items. It is used in the SYSTEM file for storing the
privilege level of the user. There are three privilege levels in the
PICK 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.

The ninth and tenth attributes of file-defining items are generally


used for output reports. They control the justification and the width
of the column that contains the data item-ids whenever the file is
listed on the screen or on the printer. In the SYSTEM file, where file-
defining items point to account MDs, there is one additional function
provided for in the ninth attribute. This is an automatic update of the
ACC file, the accounting history file. This is accomplished by placing
the letter U in the ninth attribute of the MD file-defining item, which
is used as a logon ID. The ACC file is subsequently updated each
time a user logs on or off. The system automatically stores the ac-
count name and port number that was used, the time and date
logged on and off, the number of CPU units used during the session,
and the number of pages sent to the system printer. Storing this data
is optional, and if it is used, the ACC file should periodically be
cleared after producing a history report with the LlSTACC command.
Other possible entries into the ninth attribute of file pointers are:

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

003 Filename being accessed


004 (unused)
005 Optional retrieval security code
006 Optional update security code
007 (unused)
008 (unused)
009 Justification of item-ids in the file
010 Column width for the item-ids in the file
011 (unused)
012 (unused)
013 (unused)

It should be noted that Q-pointers can be created in any MD by


using the EDITOR or the SET-FILE verb, but that the PICK Operating
System security features are still applied. In order for a Q-pointer to
function, the user must have the appropriate privilege level and
retrieval/update code, or the access will fail with the message

"[nnnl FILE (filename) IS ACCESS PROTECTED"

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.

2.3 ITEM-IDS AND ATTRIBUTES


As we have discussed before, PICK files contain items (analogous to
records); these items are made up of attributes (analogous to fields).
Attributes can be a single string of characters or they can be com-
posed of separate but equal values; these values can contain
subvalues. All are delimited by special ASCII characters:
22 EXPLORING THE PICK OPERATING SYSTEM

ITEMS AND ATTRIBUTES


ITEM
LOGICAL ITEM-ID ATTRIBUTE 0
STRUCTURE
- ATTRIBUTE 1

-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)

HEXADECIMAL NAME AND FUNCTION


VALUE

FC Subvalue mark. The special character used to separate logical


subdivisions of a value. Its ASCII representation is a "\"
character.
FD Value mark. Used to separate logical subdivisions of an attri-
bute. Its ASCII value is a '']'' character.
FE Attribute mark. The character used to indicate the end of the
previous attribute and the beginning of the next. Its ASCII
value looks like a "/\" character.
FF Segment mark. Used exclusively by the virtual memory man-
ager as an item delimiter within a frame. Its ASCII value looks
like a "_" or underline character.

The PICK Operating System itself recognizes these hexadecimal


characters, and automatically performs data storage and retrieval
tasks by using them. The system uses them to translate the user's
view of the data to and from the virtual storage. Since values and at-
tributes are delimited by explicit characters, the system handles them
regardless of size; consequently PICK items and files are completely
variable in size. One item may be twice the size of the next, while
one attribute of an item may be ten times the size of the same attri-
bute in the next item.
OVERVIEW OF THE PICK OPERATING SYSTEM 23

ITEM SIZES
QUOTES FILE ITEMS

ITEM-ID: ANTOINETTE LINCOLN

NAME: TMARIE ABRAHAM


QUOTE: [Let them eat cake." "Fourscore and seven
years ago, our fore-
fathers brought ...

Note that although attribute 0 (ltem-Id) and 1 (Name) are


similar in size, the Quote attribute is considerably different.

Items are stored in files with a unique item-id, which is a string of


characters by which the PICK System will locate the item. By using a
unique item-id, the system requires no record keys for retrieval. Yet
any combination of selection criteria can be used to retrieve any
physical or logical item in the data base. This feat is accomplished by
a unique data storage technique, made possible by the virtual mem-
ory environment.
The PICK System stores items within groups, attached to a file during
the CREATE-FILE process. An item's group is determined by a special
mathematical formula called a hashing algorithm. When an item is
stored, it must have an item-id, which is unique in its file. The PICK
System passes the item-id through the hashing algorithm to deter-
mine the appropriate group for the item. Then, the system deter-
mines the location of the group, relative to the beginning of a file
(the Base-FID or frame-id stored in the pointer to the data file; see
Section 2.2). The system then brings the first frame of the group into
virtual memory and begins searching for the end of the group. When
the end is located, the item is added to the end of the group, and the
group is written back out to disk.
A similar process is performed when the system retrieves an item.
First the system uses the hashing algorithm to locate the item's
group, then each frame in the group is paged into memory, until the
requested item has been found. The same process is used when the
selection criteria is one of the attributes of the item rather than the
item-id. The PICK System uses special virtual memory mapping tech-
niques and dedicated address registers for efficiency, and in most
cases the user is unaware of the system's accessing process.
24 EXPLORING THE PICK OPERATING SYSTEM

The importance of this approach cannot be overemphasized; it is a


fundamental strength of the PICK relational data base. The PICK Sys-
tem provides essentially unlimited storage capacity without the use
of indexes or record numbering of any kind. All disk storage is virtual,
dynamic, and readily accessible by the name of the data element.
This is a characteristic that sets the PICK Operating System apart as a
data base system to its very core, a "virtual machine."
The ability to locate items by item-id is only one aspect of data re-
trieval, however. Most of the time an item or set of items are ac-
cessed by one or more attributes of the data. Within the PICK Sys-
tem, such access is handled by means of the dictionaries, where
attribute-defining items are stored.

ITEMS AND ATTRIBUTES

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

An attribute-defining item, as the name implies, is an item that con-


tains information on one of the attributes in the data file. These de-
fining items are found in the dictionary of a data file, and have the
following format:

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

001 Attribute definition type:


A. Attribute definition
S. Synonym attribute definition
X. Protected attribute
002 Attribute Mark Count
003 Optional column header
004 Associative; defines associated attribute
005 (unused)
006 (unused)
007 Conversion; performed after the ACCESS select and/or sort
008 Correlative; performed before the ACCESS select and/or sort
009 Output column justification:
L. Left
R. Right
T. Left with wraparound on blank
U. Unconditional left
010 Width of column on ACCESS reports

Attribute-defining items are used by the ACCESS data retrieval proc-


ess, which is the natural language report generator inherent in all
PICK computers. These items contain the instructions as to the loca-
tion of different fields within the data item, how the fields or attri-
butes are to be handled, and the format in which to display the at-
tribute. The attribute-defining items can contain conversion and/or
correlative specifications; these codes instruct the ACCESS process to
perform relational data base tasks during retrieval. These tasks are
among the most powerful aspects of PICK. For a more detailed dis-
cussion of the capabilities of ACCESS and the conversion/correlative
specifications, see Appendix E.
As discussed in Section 2.2, file-defining items that are used by the
virtual memory management software in PICK are created automati-
cally by the CREATE-FILE command. Attribute-defining items are cre-
ated by the user with the system's EDITOR; they are optional, and
are not required by the PICK Operating System.

Attribute-defining items are optional because the use of ACCESS is


optional. The PICK System supports flat files, in which the dictionary
contains nothing but the pointer item to the data. These files, howev-
er, must be read sequentially or indexes must be created and main-
tained by the user, just like any other computer system. Files with
attribute-defining items, on the other hand, are indexed by the
operating system whenever requested, and no index maintenance is
necessary.
26 EXPLORING THE PICK OPERATING SYSTEM

Dynamic indexing is an intrinsic function of the ACCESS selection


feature. The ACCESS selection-criteria option allows the user to se-
lect items in a file by any combination of characteristics in any attri-
bute. The selection criteria can be as complex as necessary; further-
more, ACCESS allows the use of nonexistent logical attributes as
selection criteria. These are attributes that are created only when the
file is accessed, such as the product of multiplication of two real attri-
butes, or the translation of an attribute through another file. The re-
sult is a virtual indexing scheme that uses indexes that are inherent in
the data itself, and therefore the indexes are always accurate.
There is an ACCESS tutorial in Chapter 5, and a list of the different
conversion and correlative specificatioFls in Appendix E. These sec-
tions provide a glimpse of the PICK relational data base; it is a subter-
ranean powerhouse, tapping the virtual furnace at the PICK core, to
support the user's ACCESS processes up on the surface of the PICK
world.
CHAPTER

3
The· User Processes: Tel

3.1 TCl: PICK'S SURFACE

An operating system is usually categorized by the way it appears on


the computer terminal or screen, its "surface" as seen by the people
who work on computer terminals. The surface of the PICK Operating
System is known as TCl, short for Terminal Control language, the
principal language spoken there. It is known to residents and fre-
quent visitors as "tickle," and is the first PICK process a user or tech-
nician encounters after logging on to a PICK Operating System
computer.
In addition to being the first process encountered, TCl is also the
only way into the PICK world. Every logon is handled the same way.
Application systems often take a user to TCl and directly into an ap-
plication program, but every logon arrives in TCl for at least a mo-
ment. (It's a little like Customs; even the VIPs get stamped.)
It is from this surface that all navigating through the system begins,
for the novice and the master alike. TCl is also the only legal way to
leave the system, and it is for that reason that all PICK processes and
user applications return the user to TCl when finished. All roads lead
from TCl, and all processes terminate there. It is fitting, then, that we
begin our explorations at TCl, since our tour will eventually end here.
One arrives at TCl by entering a valid user ID to the logon screen.
This screen differs from manufacturer to manufacturer, with each
computer displaying its own logo from a record entitled "lOGON" in
the SYSTEM file. But almost all logon screens have a prompt to the
effect: "Please Enter Your user I D:". A user I D is the item-id of a valid

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.

3.2 HOW TO ENTER AND EXIT THE SYSTEM


To enter the PICK system you must provide an account name. Op-
tionally, a password may also be provided, but more about that later.

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.

LOGON PLEASE: SYSPROG<cr>

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.

LOGON PLEASE : SYSPROG<cr>


PASSWORD: (password)<cr>

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.

LOGON PLEASE: SYSPROG<cr>


PASSWORD: (password)<cr>

«< PICK OPERATING SYSTEM »>


«< 12:00:00 26 MAY 1985 »>

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:

> TCl (Terminal Control language)


• EDITOR Command Mode (see Section 4.2)
+ EDITOR Insert/Replace Mode (see Section 4.6)
* PICK/BASIC Debugger
30 EXPLORING THE PICK OPERATING SYSTEM

System Debugger (see "Suspending Online Program Execution"


in this chapter)

Correcting Entry Errors, Special Control Characters


Commands must be entered in upper-case characters, with the ex-
ception of the Editor process. If an error is made while entering a
command, simply use the backspace key to back up to where the
mistake was made. You may then correct the error prior to depress-
ing the carriage return, which submits your input to the system for
processing.
Several special entries modify the way TCl works.

<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.

Suspending Online Program Execution


The BREAK key generates a signal telling the system to suspend
whatever process is currently in effect. On some terminals, the
BREAK key is a <ctl> "c." Depending on exactly what is happening
when the BREAK key is pressed, an interrupt will be generated and a
prompt character will be displayed (either "!" or "*") .
Whenever either of these prompt characters is present, the process
is referred to as being "in the debugger." The only difference is
which debugger; the "!" prompt character indicates the System (As-
sembly) Debugger and the "*" prompt character indicates the PICK/
BASIC Debugger. There are two ways into either debugger; one is
voluntarily, by pressing the BREAK key while processing; the second
occurs when a process runs into some sort of processing problem.
This could be either in a PICK/BASIC program or occasionally from
the operating system itself.
There are several responses available to both of these prompt
characters.

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>
>

Control returns to TCl, as the> prompt indicates.


32 EXPLORING THE PICK OPERATING SYSTEM

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

Control returns to lOGON when you enter your user ID.

RESUMING THE PROCESS


If this was a voluntary entry into the debugger, you may enter a G
followed by a <cr>, which tells the system to go or resume execu-
tion or whatever was in effect This is done by the following:

break
I 6.178
!G<cr>

The OFF Command


It is suggested that you send the process back to the "logon" mes-
sage when you are done with the system. This prevents anyone else
from inadvertently accessing or updating your files. To terminate the
session, the OFF command is entered from TCL.

>OFF<cr>

... and this appears on the CRT screen:

< CONNECT TIME= x MINS.; CPU= x UNITS; LPTR PAGES= x >


< LOGGED OFF AT 12:00:00 ON 26 MAY 1985 >
LOGON PLEASE:

Note: If you just logged off, please log back on and catch up with the
group.

3.3 TCl COMMANDS, OR VERBS

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

by a <cr>. Some of these TCl-1 commands are trivial, such as dis-


playing the TIME or reminding one's self WHO one is, and others are
decidely non-trivial, such as VERI FY -SYSTEM. Here are a few exam-
ples, along with an explanation of how they are used. Appendix D
contains a detailed explanation of how TCl verbs function.

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

displays the current system time and date on the CRT.

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

9 is the result with a remainder of 3.


34 EXPLORING THE PICK OPERATING SYSTEM

The MULD command multiplies two integer numbers.

>MULD 15 IS<cr>
225

The SUBD command subtracts the second integer number from the
first integer number.

>SUBD 15 37<cr>
28

The ADDX command adds two hexadecimal numbers.

>ADDX IS IS<cr>
2A

The DIVX command divides the first hexadecimal number by the


second hexadecimal number.

>DIVX 39 4<cr>
E I

E is the result with a remainder of 1.


The MULX command multiplies two hexadecimal numbers.

>MULX 15 IS<cr>
IB9

The SUBX command subtracts the second hexadecimal number from


the first hexadecimal number.

>SUBX U 37<cr>
2E

Converting Data to Alternate lases


We are used to counting in increments of ten, probably because we
have ten fingers. Computers work at the lowest levels with binary
data, either ones or zerm, which is called base 2 (binary). The pro-
grammers who move thes€ binary digits (or bits) around often work
in hexadecimal, base 16, where they count 1 to 9 normally, but 10
b€comes A., 11 is B, 12 is C, 13 is D, 14 is E, and 15 is F.
There are two commands us€d to convert data from one form to
another.
THE USER PROCESSES: TCl 35

THE DTR (DECIMAL TO RADIX) COMMAND


This command is used when the number to be converted is being
presented to the system in decimal (actually, integer) form.

>DTR 50<cr>
32

This instructs the system to convert the decimal number 50 to the


default radix of hexadecimal, base 16. The result is 32 (3 16's and 2
l's). If the desired radix is other than hexadecimal, it must be
indicated.

>DTR 2 50<cr>
110010

This instructs the system to convert the decimal number 50 to binary,


base 2, which results in 110010 (32 + 16 + 2).

THE RTD (RADIX TO DECIMAL) COMMAND


This command is used when the number to be converted is being
presented in its radix form. The default radix is hexadecimal, base 16.

>RTD 32<cr>
50

This instructs the system to convert the hexadecimal number 32 to


decimal. If the desired radix is other than hexadecimal, it must be
indicated.

>RTD 2 110010
50

The LIST Commands


The next group of fundamental Tel commands are the LIST
commands that provide information on the PICK System itself. Many
of these LIST commands allow directing the output to the system print-
er. These commands are illustrated in the default form, and with the
LPTR modifier, used to send it to the printer. Remember, use
<CTl>X to get out of a multipage display and back to TCL.

DISPLAYING FIELDS
>LISTFILES<cr>
36 EXPLORING THE PICK OPERATING SYSTEM

or

>LISTFILES LPTR<cr>

displays all of the file pointers from the current account.

DISPLAYING COMMANDS
>LISTVERBS<cr>

or

>LISTVERBS LPTR<cr>

displays all of the verbs (commands) from the current account.

>LISTCONN<cr>

or

>LISTCONN LPTR<cr>

displays all of the connectives from your MD (master dictionary).


Connectives are a special class of word used by the ACCESS lan-
guage. Each is discussed in Section 5.1

DISPLAYING CURRENT USERS


The LlSTU command provides data on who is currently using the
system

>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:

The LOGON Command


Remote terminals may be logged on from another terminal with the
LOGON command. This is accomplished by entering the command
LOGON, followed by a <cr>. The process will display the prompt,
"CHANNEL, NAME:." Enter the port number and the account name
in the form port number, account. If the account has a password, the
form changes to port number, account, password. If successful, the
message "LOGON SUCCESSFUL" will display on the CRT.
THE USER PROCESSES: TCl 37

>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.)

The LOGOFF Command


To log off or terminate a remote process on another terminal, the
LOGOFF command is entered followed by a <cr>. The system
prompts for the line number, at which point you enter the port
number you wish to log off, followed by a <cr>. The process will
indicate successful completion if possible.

>LOGOFF<cr>
CHANNEL: l<cr>
[534J LOGOFF SUCCESSFUL.

The lOGOFF ccommand breaks whatever process was in progress


on the port and supplies an OFF to the debugger prompt.

Sending Messages to Other Users


Messages may be directed to other users currently on the system
with the MESSAGE command. The syntax for the message command
is the command MESSAGE or MSG, followed by the account name
to which the message should be directed, followed by the text of the
message and a <cr>. Messages should be typically less than 70 or
80 characters to reduce the confusion when they suddenly appear
on the other user's terminal.

SENDING A MESSAGE TO A SPECIFIC ACCOUNT


>MESSAGE SYSPROG WILL YOU PLEASE PUSH THE PRINTER ON-LINE BUTTON?<cr>

--- text of the message


--- account name to which the message is directed
--- command
38 EXPLORING THE PICK OPERATING SYSTEM

SENDING A MESSAGE TO ALL USERS CURRENTLY LOGGED ON


This is accomplished by issuing the MESSAGE or MSG command, fol-
lowed by an asterisk (*), followed by the text of the message and a
<cr>.

>MESSAGE * THE SYSTEM WILL BE TURNED OFF IN FIFTEEN MINUTES! <cr>

--+ text of the message

--+all current users


--+ command

SENDING A MESSAGE TO A SPECIFIC LINE OR PORT NUMBER


Messages may be directed to a specific line number by using the
MESSAGE command, followed by an exclamation point 0), immedi-
ately followed by the line number to which the message should be
directed, followed by the text of the message and a <cr>.

>MESSAGE ! 3 DO YOU STILL HAVE MY PICK POCKET GUIDE? <cr>

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.

The POVF (Display Available Overflow) Command

>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

The WHO Command

>\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

The BLOCK-PRINT Command


The BLOCK-PRINT command is used to display or print enlarged let-
ters. The following illustration shows how these banners may be di-
rected to the CRT screen.

>BLOCK-PRINT HELLO THERE<cr>

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

TTTTTTTT HH HH EEEEEE RRRRRR EEEEEE


TT HH HH EE RR RR EE
TT HH HH EE RR RR EE
TT HHHHHHH EEEEEE RRRRRR EEEEEE
TT HH HH EE RR RR EE
TT HH HH EE RR RR EE
TT HH HH EEEEEE RR RR EEEEEE

The output from the BLOCK-PRINT command may be directed to


the system printer by following the text of the message with a "P"
option enclosed in parentheses.

>BLOCK-PRINT HELLO THERE (P) <cr>


ENTRY n

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

3.4 AN INTRODUCTION TO TCl AND FilE STRUCTURES

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 TCl-1i VERBS


>EDIT filename itemlist options<cr>

activates the EDITOR process.

>COPY filename itemlist options<cr>

activates the COpy process.

>BASIC fi lename i temlist options<cr>

activates the PICK/BASIC source code compiler.

EXAMPLES OF FILENAMES
The filename specification may be any of the following forms:

filename: This refers to the DATA section of a file. For example:

>EDIT STAFF itemlist<cr>

DICT filename: This refers to the dictionary section or level of a file.


For example:

>EDIT DICT STAFF itemlist<cr>

filename,filename: This refers to files with multiple data sections.


The first filename parameter refers to the dictionary in which the file
THE USER PROCESSES; TCl 41

pointer will be found, and the second filename indicates the data
section. For example:

>EDIT NEWAC,SYSPROG i temlist<cr>

EXAMPLES OF ITEMLISTS
The item list may be any of the following three forms:

A Single Item-Id: An example of this is:

>EDIT STAFF 100<cr>

Multiple Item-Ids: Here is an example of this form.

>EDIT STAFF 100 101 102 10S<cr>

(Note that each item-id in the list is separated by a blank.)

Every Item Currently in a File: The example below illustrates the


third form.

>EDIT STAFF *<cr>

(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.)

The CREATE-ACCOUNT Command


All of the upcoming tutorials assume that you have created your own
account, so let us now discuss the steps required to create an ac-
count, using the CREATE-ACCOUNT command.
Prior to using this command, you must be logged on to the
SYSPROG account. The SYSPROG account contains special files
used during the creation of accounts, so new accounts should always
be created from the SYSPROG account.
Essentially, what occurs during the creation of a new user account is
that a new account master dictionary is created and added to the
SYSTEM file. The creation process adds all of the "standard" MD
items by copying them from a file named NEWAC, which is located
in the SYSPROG account. The NEWAC file contains four types of
42 EXPLORING THE PICK OPERATING SYSTEM

items: common file pointers, standard verbs (commands), standard


ACCESS items, and common PROCS (procedures). All four of these
types of items will be discussed later.

CREATING AN ACCOUNT
The process to create the new user account is initiated with the
CREATE-ACCOUNT command, as in the following example:

> CREATE - ACCOUNT < cr >

THE ACCOUNT NAME


The first prompt is for the new account name. The name of the ac-
count must not already exist in the SYSTEM file. As with any item-id
in the PICK System, the account name may be any combination of
alphabetic, numeric, or punctuation characters. Although any charac-
ter may be used, certain characters should be avoided in item-ids be-
cause they can cause problems later. These characters include:
single-quote marks('), double-quote marks("), blanks ( ), and any con-
trol characters.
Enter the account name, CLASS, followed by a <cr>.

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>.

L/RET-CODE( S)? <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>

MODULO AND SEPARATION


The next prompt is for the modulo and separation for the new ac-
count MD. This is the only place in the system that provides a default
modulo if none is specified. Enter a <cr> to use the default modulo
and separation. Modulo and separation are discussed in more detail a
little later.

MOD, SEP?<cr>

The following displays on the screen:

[417J FILE 'CLASS' CREATED; BASE = 7288, MODULO 29, SEPAR 1.


244 ITEMS COPIED
'CLASS' ADDED
'CLASS' UPDATED

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

been modified on your system if a different number of items copied


appears. When the procedure is complete the following message
appears:

FINISHED

The Account Password and the PASSWORD Command


To add or change a logon password to any account, you must be
logged onto the SYSPROG account. The PASSWORD command, fol-
lowed by a <cr>, prompts you to enter the account name. At this
prompt, enter the account name for which you want to change the
password, followed by a <cr>. The system then asks for the new
password.

>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.

ENTER NEW PASSWORD ?<cr>


CONFIRM THAT YOU WISH TO REMOVE THE ACCOUNT PASSWORD (YIN) ?Y<cr>

The PASSWORD process returns to the account name prompt, al-


lowing you to change another account name if you wish. If you do
not want to change any more account passwords, then enter a
<cr>, at which point control then transfers to TCL. If you want to
change more passwords, repeat the process.

CHANGING OR ADDING A PASSWORD


>PASS\IIORD<cr>
ENTER ACCOUNT NAME ?SYSPROG<cr>
ENTER NEW PASSWORD ?RIO<cr>

Passwords may be any combination of alphabetic and/or numeric


characters. Each password is passed through an encryption algorithm
that converts the string to an 8-byte string of hexadecimal characters
before storing it in the SYSTEM file.
THE USER PROCESSES: TCl 45

REMOVING AN EXISTING PASSWORD


ENTER ACCOUNT NAME ?SYSPROG<cr>
ENTER NEW PASSWORD ?<cr>
CONFIRM THAT YOU WISH TO REMOVE THE ACCOUNT PASSWORD (YIN) ?Y<cr>

The account is now ready to be used. Use the lOGTO command to


move from the SYSPROG account to the CLASS account that you
just created.

Logging to the CLASS Account


For the moment, we are done with the SYSPROG account. We will
return to it later. To log to your new account (CLASS):

> LOGTO CLASS < c r >


<CONNECT TIME= x MINS.; CPU= x UNITS; LPTR PAGES= x>

Verify that you are on the right account with the WHO command:

>WHO<cr>
n CLASS

(Note: lin" is your port number.)


You are now ready to create the files that will be used throughout
the rest of the tutorials. Prior to creating these files, let's look at the
files that are already defined, using the LlSTFllES command:

>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

BLOCK-CONVERT This file contains the definitions of the charac-


ters used in the BLOCK-PRINT command for printing enlarged
characters on the terminal or printer.
CLASS This is a file pointer to the MD of the CLASS account and
will be replaced later in the PROC tutorial. It's optional, but is usu-
ally placed there during the CREATE-ACCOUNT process.
ERRMSG The error message file. This file contains the text of most
of the error messages that the machine produces.
M/DICT This is a file pointer to the MD of the CLASS account.
MD This is also a file pointer to the MD of the CLASS account.
POINTER-FILE This file is used to store the lists generated with the
SAVE-LIST command and is discussed under the ACCESS section.
Don't panic if no POINTER-FILE is there; later, in the section on
SELECT and SAVE-LIST, the steps to create it are discussed.
PROCLIB This file contains a collection of common PROCS (stored
procedures), such as the LlSTFILES procedure you just used.
SYSTEM This is a pointer to the SYSTEM file, which is used to store
the pointers to all other accounts and system-level files.

The CREATE-FILE Command


The CREATE-FILE command is used to add a new file to an account.
In most cases, it is used to construct both the dictionary and the data
section of a file simultaneously. The prerequisite is that the name
being used for the file does not previously exist in your account MD.
The CREATE-FI LE command has the following general form:

The CREATE-FI LE command has the following general form:

>CREATE-FILE filename modulo{, separation} modulo{, separation} <cr>

f- dictionary level 1--+ data level

or

>CREATE-FILE DICT filename modulo{, separation} <cr>

1--+ dictionary level only


THE USER PROCESSES: TCl 47

or

>CREATE-FILE DATA filename, filename<cr>

r- new data level section


f-->- existing dictionary level

The term modulo refers to the number of groups (frames) to allocate


for the primary file space.
Separation refers to the number of frames to allocate per group. The
default (and normal) separation is one.
See the section in this chapter called "Selecting File Sizing Parame-
ters" for more information on this process.

CREATING THE DEMONSTRATION FILES


Create the files for this tutorial using the following commands:

>CREATE-FILE STAFF 7 11 <cr>


[417J FILE 'STAFF' CREATED; BASE 7317, MODULO 7, SEPAR 1.
[417J FILE 'STAFF' CREATED; BASE 7324, MODULO 11, SEPAR 1.

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.

>CREATE-FILE PROCS I l1<cr>


>CREATE-FILE STATES 3 l1<cr>
>CREATE-FILE BP 11 l1<cr>
>CREATE-FILE SPOOL-FILE I 11 <cr>

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:

> LISTFILES < c r >


48 EXPLORING THE PICK OPERATING SYSTEM

The CLEAR-FILE Command


The CLEAR-FILE command is used to empty a file of all of its items
while retaining its primary file space. It has the following forms:

>CLEAR-FILE DATA filename<cr>

or

>CLEAR-FILE DATA filename, fi lename<cr>

or

>CLEAR-FILE DICT filename<cr>

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>

PAGE 1 12:00:00 26 MAY 1985


THE USER PROCESSES: TCL 49

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.

>CLEAR-FILE DATA BP<cr>

No message is displayed. That's normal. Now we should verify that


the file has, in fact, been emptied. Use the LIST command as follows:

>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.

The DELETE-FILE Command


The DELETE-FILE command is used to remove all items from a file
and to return all disk space used by the file back to the overflow
table. It is important to mention that once the DELETE-FILE com-
mand is initiated, the BREAK key is disabled until the process is com-
pleted. Moral: always make sure you have the right file name before
issuing this command!
Using the same filename as in the CLEAR-FILE example, delete the
BP file from your account as follows:

>DELETE-FILE BP<cr>

No message is displayed. If all went well, you should now be back to


the Tel prompt character. let's verify that the file has been removed
with the LIST command:

>LIST BP<cr>
[10J FILE NAME MISSING

This verifies that the file is gone.


Later in this tutorial we'll create the BP file again_
50 EXPLORING THE PICK OPERATING SYSTEM

3.5 SELECTING FILE SIZING PARAMETERS

When we created files in the preceding section, you used modulo


(and default separation) parameters that we provided.
Choosing the proper modulo for files requires some advance plan-
ning and techniques. Among the information needed are the follow-
ing items:

• The number of items in the file


• The average item size
• The growth factor

Once these pieces of data are collected, they may be plugged into
the following three formulas.

1. NUMBER OF ITEMS * AVERACE SIZE = STORACE


SPACE REQUIRED

For example, suppose we have a file that will contain about 100
items, each of which averages 250 bytes. The result is as follows:

100 * 250 = 25,000 bytes (storage space required)

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:

2. CURRENT STORACE SPACE REQUIRED * CROWTH FACTOR


= TOTAL STORACE SPACE REQUIRED

or

25,000 * 7.5 = 37,500 bytes (total storage space required)

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:

3. STORACE SPACE REQUIRED / FRAME SIZE (500) = NUMBER


FRAMES REQUIRED
THE USER PROCESSES: TCl 51

or

37,500 / 500 = 75 frames

We now have the approximate number of frames that will be re-


quired to store the data: 75. The modulo of a file should always be a
prime number (a number divisible by only itself and 1) to assure the
best distribution of items. For this reason, the result of our calculation
should be increased to the next nearest prime number, which is 79.
This result may now be used in the CREATE-FilE command. The dic-
tionary modulo can be 1, and the data modulo would be 79.
The command would then appear as:

>CREATE-FILE TESTFILE 1 79<cr>

Displaying File Allocations


One of the ways to understand the PICK files better is to examine
the files and the data items stored in them. There are several
commands used to display the distribution of items in a file. These
commands allow you to examine the current distribution, based on
the current modulo, or allow you to provide a "test" modulo to dis-
play what the distribution would be if the modulo were changed.

The GROUP Command


The GROUP command produces a display of the item-id hashing dis-
tribution for each frame in a file beginning with the Base FlO (first
frame) of the file. It shows each item-id that hashes to the frame
along with its size (byte count). At the end of each frame are the total
number of items, bytes, and frames in the group.
To test this function, you will need some data in a file. let's use the
COpy command to copy the first 50 items from your MD to the
DATA level of the STAFF file:

>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

Note: The message continues with a report of the contents of each


group in the file. Press <cr> at the end of each page until control
returns to the TCl prompt.
let's examine the information that was displayed.

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

6 ITEMS 166 BYTES 0/166 FRAMES

Indicates that this group contains 6 items, occupying a total of 166


(this time in decimal) bytes of storage. "0/166 FRAMES" means that
there are no forward linked frames, and that 166 bytes (of the 500 in
the frame) are being used to store these items.

Removing Data from the STAFF File


In the next section on the EDITOR, we will place real data into the
STAFF file. For this reason, we need to clear all of the data placed
into the STAFF file as in this example:

>CLEAR-FILE DATA STAFF<cr>


CHAPTER

4
EDITOR: The User Tool

4.1 EDITOR: THE WINDOW INTO THE PROCESSES

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

in the EDITOR process, all commands may be entered in either up-


per-case or lower-case characters.

4.2 EDITOR COMMAND GLOSSARY

The following lists the EDITOR commands and their respective


functions:

.<cr> Moves the EDITOR line pointer to the next line


./\ Toggles on or off the "wildcard" function
.? Displays the current filename, item-id, and line number
.A Again; repeats the last locate command
.AS Activates the Assembly formatter
.B Bottom; moves the line pointer to the bottom of the item
.C Column; displays the columnar coordinates
.DE Deletes a line or range of lines
.EX Exits the item without saving changes
.F Flips the temporary EDITOR file buffers
.FD File Delete; deletes the current item
.FI Files (writes) Item and returns to the next item or to TCl
.FS Files (writes) Item and remains in EDITOR
.G Goes to a specific line number
.I Insert; activates the Insert/Replace mode
.L Lists a range of lines
.L locates a string within the current item
.M Macro; activates macro expansion function
.ME Merge; merges text into the current item
.N Next; increments the EDITOR line pointer
.Pn Stores or executes pre stored EDITOR commands
.PD Displays prestored EDITOR commands
.R Replaces a string of characters within the current item
.S Suppress; activates or disables the display of line numbers
.S? Displays the size of the current item in bytes
.T Top; positions the line pointer to the top of the current item
.TB Tabstop; sets or updates tabstop positions
.X Cancel; negates effect of the last Replace command
.XF Cancel to last Flip; negates the effect of all changes since the
last Flip command
.z Zone; establishes column limits for editing
56 EXPLORING THE PICK OPERATING SYSTEM

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 EDITOR Line Pointer Concept


This is a line-oriented EDITOR, as opposed to a full-screen EDITOR.
As such, the PICK EDITOR maintains a line pointer that is manually
controlled. Many line pointer positioning commands exist in the EDI-
TOR for this purpose, and are basically subdivided into two catego-
ries: direct, such as the command to "go" to a certain line number; or
relative, such as the command to position to the line "up" some
number of lines above the current position.

4.3 ACTIVATING THE EDITOR: THE ED OR EDIT COMMAND

The EDIT or ED commands are used to activate the EDITOR process.


Both are automatically included as commands in your MD. The EDIT
command requires three pieces of information, as do all other TCl-1i
verbs. These three elements include the verb (ED in this case), the
filename in which the item does or will reside, and the item-id (or
item-ids) that are to be edited. The command has the following form:
In the form> ED filename item-id<cr>, one item is edited. For
example,

>ED STAFF 100<cr>

The form <ED filename item-id item-id ... <cr> indicates that
multiple items will be edited into the file.

>ED STAFF 100 101 102<cr>


EDITOR: THE USER TOOL 57

The form >ED filename *<cr> allows access through the EDITOR
to every item already in the file.

>ED STAFF .<cr>

The EDITOR File Buffers


When the EDITOR process is invoked, the data being accessed is
moved to a special memory area associated with the port. This area is
called the EDITOR File Buffers, because there are actually two por-
tions. The item is moved to one of these areas, which immediately
becomes the current version of the item. After making changes to an
item, a Flip command must be issued. During a flip, the current item
gets copied into the other EDITOR File Buffer. Even though it has
moved, it is still the current version. The other area is now consid-
ered the old, or history, version of the item. As each flip occurs, this
process is repeated.
This accounts for why certain messages appear during use of the EDI-
TOR. Let's examine the most common of these messages now in
case it appears while you are using the EDITOR in this section.
To begin with, there is a rule with regard to how changes are made
to an item: changes are always made from the TOP down, as shown
in the following example: (You needn't try to enter this example;
reading it will be enough for now.)

> ED MD FLIP. TEST<cr>


NEW ITEM
TOP
.I<cr> (Insert; explained later.)
001 +THIS IS A TEST OF<cr>
002+THE PICK EDITOR UTILITY AND<cr>
003+THE FLIP COMMAND. <cr>
004+<cr>
TOP
.F<cr>

This flips the item in preparation for our example.

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?

The command, ".Gl <cr>," moves the line pointer to attribute 1 of


the item. The message, "SEQN?," short for "sequence?," means that
changes are being attempted on a line above one in which a change
has been made. The change did not occur, but could be done after a
flip:

.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

By issuing the EX (Exit) command, none of the EDITOR session was


actually written to the MD.
The point of this illustration is that the flip command is used quite
often, normally after a series of changes and prior to reviewing them.

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:

ATTRIBUTE ACCESS DESCRIPTION


NUMBER ATTRIBUTE NAME

001 NAME The name of the staff member, in the form:


last name, first name
002 ADDRESS The street address
003 CITY The name of the city
004 STATE The two-letter abbreviation of the state
005 ZIP The ZIP code
EDITOR: THE USER TOOL 59

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.

001 MERTZ, FRED


002 128 W 12TH ST, APT 3B
003 NEW YORK
004 NY
005 10012

The following commands will be illustrated in this example:

The I (Insert) Command


The I (Insert) command places the EDITOR into Insert mode until a
<cr> is entered at the first character position of a line. Remember
that while in the Insert mode, the prompt character is the plus sign
(+) and that if EDITOR commands are issued, they will be treated as
text, rather than as commands. The period (.) is the EDITOR com-
mand mode prpmpt character.

The L (List) Command


The L command actually has two functions. In this form, it is used as
a List command to display lines within the current EDITOR item.
Later, we will use it with a slightly different format as the Locate
function.

CREATING THE STAFF FILE ITEMS


Our objective is to create seven data items for later use in the tutorial
on ACCESS. Using the format shown earlier, you can use seven dif-
ferent names and addresses where requested for entry. The process
is as follows:

>ED STAFF 100 101 102 103 104 105 106<cr>

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.

001 displays the name you entered


002 displays the address you entered
003 displays the city you entered
EDITOR: THE USER TOOL 61

004 displays the state you entered


005 displays the zip you entered
EOI 5

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.

4.4 MISCELLANEOUS EDITOR COMMANDS


Here are some EDITOR commands that you will find useful.

The 1 (Display Item-id and Filename) Command


The? command displays the current filename, item-id, and line
number within the item. It is useful if you have forgotten what item
you were working on.
Enter the EDITOR by issuing the following command:

>ED STAFF lOO<cr>


TOP
. ?<cr>
STAFF 100 L 000

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

The S1 (Display Size of Item) Command


The S? command displays the current size of the item in bytes. The
output you get depends on the size of the item you entered and is
obtained by issuing the following command:

.S?<cr>
ITEM LENGTH IS 61 BYTES

Remain in the EDITOR on item 100 for the next example.

The S (Suppress Display of Line Numbering) Command


The S command suppresses the display of line numbers along the
left-hand side of the screen. It is a "toggle" command, and will en-
able or disable the function each time the command is issued, as in
the following example:

.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.

4.5 LINE POSITIONING COMMANDS

The G (Go to Line Number) Command


The G (Go) command positions the EDITOR line pointer to a specific
line within the item currently being edited. This may also be accom-
plished by entering only the line number, followed by a <cr>. Both
forms are shown in the following example:

.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.

The T (Top of Item) Command


The T (Top) command is used to unconditionally position the line
pointer to the TOP of the current item, as in the following form:

.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

The B (Bottom of Item) Command


The B (Bottom) command is used to position the line pointer to the
bottom (or end) of the item, as in the following form:

.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.

The <cr> (Display Next line) Command


The <cr> functions as a line advance. Each time it is used, the next
line of the item is displayed and the EDITOR line pointer is
incremented accordingly:

.<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.

The U (Move Line Pointer Up) Command


The U (Up) command decrements, or moves up, the line pointer rel-
ative to the current position within the item, as in the following
example:

.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.

The N (Increment Line Pointer) Command


The N (Next or Down) command increments, or moves down, the
line pointer relative to the current position within the item, as in the
following example:
EDITOR: THE USER TOOL 65

.N2<cr>
003 NEW YORK

The N2 command instructed the EDITOR to increment the current


line pointer by 2 and display the resulting line, which happened to
be line 3.
File this item prior to entering the next example, using the FI com-
mand as follows:

.FI<cr>
'100' FILED.

4.6 OTHER EDITOR COMMANDS

The R (Replace) Command


The R (Replace) command is used to replace data in an item. This
command can place the EDITOR in a mode similar to the Insert
mode discussed earlier. While in the Replace mode, the prompt
character is the plus sign (+) to the immediate right of the line
number. This command is used to change data and has the following
general forms:

.R<cr>

This allows complete retyping of the current line.

REPLACING AN ENTIRE ATTRIBUTE


An entire line may be replaced by issuing the R command, as in the
form:

001 RICARDO, RICKY


.R<cr>
001 + MERTZ, FRED<cr>

If nothing is entered on the line while in the Replace command, the


line remains unchanged.

REPLACING A STRING OF TEXT ON A LINE


.R/old string/new string/<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:

001 MERTX, ETHEL


.R/X/Z<cr>
001 MERTZ, ETHEL

THE USE OF DELIMITERS IN THE REPLACE COMMAND


The general form of the Replace command calls for three separate
pieces of information: the command, the string to be replaced, and
the string to be used as a replacement.
In order for the EDITOR to be able to distinguish the elements, each
piece of data is separated by a delimiter. This delimiter is any non-
numeric character that does not appear in the string being searched
for or in the string being replaced.
The previous example illustrated the use of the slash U) character as
the delimiter. This has traditionally been the character used in docu-
mentation. Other characters would be equally acceptable, and
sometimes even essential.
For example, suppose the attribute we wanted to replace contained
a slash character:

003 NEIMAN/MARCUS

and you tried to issue the following EDITOR command:

003 NEIMAN/MARCUS
.R/NElMAN/MARCUS/NElMAN-MARCUS/<cr>

f-+ replace string


f-+ search string

the EDITOR would get quite confused and would send out the fol-
lowing message:

COL#?

This message reads: "Column Number?" and it is generated when too


many occurrences of the character assumed to be the delimiter are
present. In this case, it would be necessary to use a different charac-
ter, such as a period:
EDITOR: THE USER TOOL 67

003 NEIMAN/MARCUS
. R. NEIMAN / MARCUS. NEIMAN - MARCUS. < c r >

1--+ replace string


1--+ search string

REPLACING IN MORE THAN ONE LINE


The R command may be followed by a number, which instructs the
EDITOR that the change should take place in the specified number
of following lines, as illustrated in the sample data below:

001 MERTZ, FRED


002 128 W 12TH ST, APT 3B
003 NEW YORK
004 NY
005 10012
TOP
.R99/T/X<cr> "-
DOl MERXZ, FRED
002 128 W 12XH ST, APT 3B
EO! 005

This command instructed the EDITOR to replace the first occurrence


of the letter T on each line with the letter X in the next 99 lines. The
number 99 is greater than the number of lines contained in the item
to ensure that every attribute of the item is affected.
Note that this form of the Replace command only affected the first
occurrence of the string being replaced. To affect all occurrences of a
string in an attribute, the syntax changes slightly with the introduc-
tion of the RU form, which means to "Replace Unconditionally (all)
occurrences" in the specified number of lines, as in the following form:

001 MERTZ, FRED


002 128 W 12TH ST, APT 3B
003 NEW YORK
004 NY
005 10012
TOP
.RU99/T/X<cr>
001 MERXZ, FRED
002 128 W 12XH SX, APX 3B
EOI 005
68 EXPLORING THE PICK OPERATING SYSTEM

The DE (Delete Line) Command


The DE (Delete Line) command is used to remove an entire attribute
or a range of attributes from the item being edited, and has the fol-
lowing general forms:

DELETING A LINE
.DE<cr>

This deletes the current line, as in the following example:

001 MERTZ, FRED


002 128 W 12TH ST, APT 3B
003 NEW YORK
.DE<cr>
.F<cr>
TOP
.L22<cr>
001 MERTZ, FRED
002 128 W 12TH ST, APT 3B
003 NY
004 10012
EO! 004

DELETING A RANGE OF LINES


The Delete command may be followed by a number, which specifies
how many lines to delete from the current position. It has the general
form:

.DEn<cr>

This deletes the next "n" lines, as in the following example:

001 MERTZ, FRED


.DE2<cr>
.F<cr>
TOP
.L22<cr>
001 NEW YORK
002 NY
003 10012
Eor 003
EDITOR: THE USER TOOL 69

DELETING A LINE CONTAINING A SPECIFIC STRING


The Delete command can be made conditional by specifying a string
of characters to search for in the general form of the command. This
means that only attributes containing the specified string of charac-
ters will be deleted .

. DEn/ string<cr>

The following example illustrates this form of the Delete command:

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'."

The ME (Merge) Command


The ME (Merge) command is used to move an attribute or a range of
attributes into the current item. The item from which the attributes
are to be merged may be either the current item, another item in the
same file, or another item in a different file. All three forms of the
command are illustrated below.
The Merge command has the following general form:
.MEnumber lines/item-id/beginning line number
When any of the parameters in the general form are left out, the fol-
lowing defaults apply:

• No "number lines" merges one line.


• No "item-id" merges from the current item.
• No "beginning line number" begins the merge from the first line.
70 EXPLORING THE PICK OPERATING SYSTEM

MERGING ATTRIBUTES FROM WITHIN THE CURRENT ITEM


For the first example, weill cause the EDITOR to merge in 99 lines
from the current item:

001 MERTZ. FRED


002 128 W 12TH ST. APT 3B
003 NEW YORK
004 NY
005 10012
EOr 005
.ME99//<cr>
EO! 5
.F<cr>
TOP
.L22<cr>
001 MERTZ. FRED
002 128 W 12TH ST. APT 3B
003 NEW YORK
004 NY
005 10012
006 MERTZ. FRED
007 128 W 12TH ST. APT 3B
008 NEW YORK
009 NY
010 10012

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.

MERGING LINES FROM ANOTHER ITEM IN THE SAME FILE


If we wanted to merge from a different item-id, the format of the
command would be as follows:

001 MERTZ. FRED


002 128 W 12TH ST. APT 3B
003 NEW YORK
004 NY
005 10012
EOr 005
.ME99/102<cr>
EDITOR: THE USER TOOL 71

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.

MERGING FROM ANOTHER ITEM IN A DIFFERENT FILE


When the item to be merged from resides in a different file, the for-
mat of the Merge command changes. In this form, the Merge com-
mand requires that the delimiter before the filename specification
must be a left parenthesis character, as in the following example:

001 MERTZ, FRED


002 128 W 12TH ST, APT 38
003 NEW YORK
004 NY
005 10012
EOI 005
.ME99(ERRMSG 8100<cr>
EOI 004
.F<cr>
TOP
.L22<cr>
001 MERTZ, FRED
002 128 W 12TH ST, APT 3B
003 NEW YORK
004 NY
005 10012
006 L
007 ELINE
72 EXPLORING THE PICK OPERATING SYSTEM

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.

4.7 SAVING AN ITEM


After changes have been made to an item, it is necessary to write the
item back to the file from which it originated.

The FI (File Item) Command


The FI command is used to file, or write, an item. This command
leaves the EDITOR after filing, unless there are more items to be ed-
ited. The following example illustrates the command:

.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.

The FlO (File Item and Overwrite) Command


Occasionally, it will be necessary to write an item out under a differ-
ent item-id than the original. The FI command provides the ability to
specify both a different item-id, and optionally, a different filename.

>ED STAFF lOO<cr>


TOP
.F! l08<cr>
, 108' FILED.

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:

>ED STAFF 100<cr>


TOP
.FI 10S<cr>
CMND?

The "CMND?" (Command?) message indicates that the operation did


not take place. Normally, this message appears when an invalid com-
mand is issued, but it may also mean that duplicate item-ids exist. If
you already knew that the item existed in the file and that you
wanted unconditionally to write over the existing item, then the FlO
command is used. The "0" in "FlO" indicates to overwrite uncondi-
tionally. Attempting the same operation as before with the 0 in the
command will appear as follows:

.FIO 10S<cr>
'IDS' FILED.

FILING AN ITEM INTO A DIFFERENT FILENAME


The FI command can be used to write items out to a file other than
the one from which the item originated, and optionally under a dif-
ferent item-id, as in the following examples:

>ED STAFF 100<cr>


TOP
.FI(STATES<cr>
, 100' 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:

>ED STAFF 100<cr>


TOP
. FI (STATES lOS <cr>
'IDS' FILED.
74 EXPLORING THE PICK OPERATING SYSTEM

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.

The FIK (File Item and Kill) Command


The FIK command is used to file the current EDITOR item and to kill
an active item list of subsequent item-ids to edit, as in the following
example:

>ED STAFF 100 101 102 103<cr>


100
TOP
.FIK<cr>
'100' FILED.

Note that control returned directly to TCl, as evidenced by the>


prompt. Previously, we requested multiple items during the ED com-
mand, and each one was accessed until all had been processed. The
current item is filed as usual, and the EDITOR process is terminated.

The FS (File Item and Remain in EDITOR) Command


The FS command functions like the FI (File Item) command, with the
difference that the FS command remains within the current item
being edited, rather than going to the next item or to TCL.

>ED STAFF 100<cr>


TOP
.FS<cr>

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.

The EX (Exit Item) Command


The EX (Exit Item) command leaves the item without saving any
changes that may have been made. An example of this follows:

>ED STAFF 100<cr>


TOP
. R99 /FRED/ETHEL<cr>
001 MERTZ, ETHEL
EDITOR: THE USER TOOL 75

EO! 005
.EX<cr>
, 100' EXITED.

>ED STAFF 100<cr>


TOP
.L22<cr>
001 MERTZ, FRED
002 128 W 12TH ST, APT 3B
003 NEW YORK
004 NY
005 10012
EO! 005

The EXK (Exit and Kill) Command


The EXK command is used to exit the current EDITOR item and to
kill any active item list of subsequent item-ids to edit, as illustrated in
the following example:

>ED STAFF 100 101 102 103<cr>


100
TOP
.EXK<cr>
'100' EXITED.

Note that control returned directly to Tel, as evidenced by the>


prompt. When you previously requested multiple items in the ED
command, each one was accessed until all had been processed. The
current item is exited, and the EDITOR process is terminated.

The FD (Delete Item) Command


The FD command is used to remove an item from a file with the EDI-
TOR process. You must be certain that the item should be deleted,
since there is only one chance at recovering items deleted with this
command.
The following steps illustrate the case in which items may be recov-
ered after the FD command:

>ED STAFF 100<cr>


TOP
.FS 1l0<cr>
76 EXPLORING THE PICK OPERATING SYSTEM

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.

Note that control returns immediately to TCl since we requested


only one item during the initial ED command.

RECOVERING A DELETED ITEM


One chance is provided to recover a deleted item. Recovery is based
on the condition that the deleted item was the last item to be edited.
If another item was edited after this item was deleted, there is no
chance of recovery. In this case, since it was the last item, we can
still recover it using the following Tel command:

>RECOVER-FD<cr>

ENTER ITEM-ID *lOO<cr>


'100' FILED.

The RECOVER-FD command is issued from the TCl prompt. It


prompts the user to enter the item-id of the item previously deleted
with the FD command while in the EDITOR.
This process illustrated the successful recovery of an item-again,
since it was the last item to be edited. The following process illus-
trates what happens in the event that the item was not the last item
edited:

>ED STAFF 110 100<cr>


110
TOP
.FD<cr>
'110' DELETED
100
TOP
.EX<cr>
'laO' EXITED.

Attempting to recover the item, 110, will be ineffective:

>RECOVER-FD<cr>
ENTER ITEM-ID *110<cr>
ENTER ITEM-ID *<cr>
EDITOR: THE USER TOOL 77

The prompt "ENTER ITEM-ID" reappears on the screen, indicating


that the requested item-id, 110, cannot be located for recovery.
Moral of the FD command-use with caution!

4.8 THE PRESTORED EDITOR FUNCTIONS

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.

Displaying the Prestored Commands


The PD (Prestored Display) command displays the current definition
for each of the 10 available prestored command areas, called PO
through P9.

>ED STAFF IOO<cr>


TOP
.PD<cr>
PO L22

Again, the only default prestored command is PO, or simply P, which


defaults to "List 22" lines. This may be executed by entering:

.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

Defining Prestored Commands


There are two phases to prestored commands. The first phase is the
process of defining, or loading, the commands to execute. This hap-
pens as follows:

.PI ME999/101<cr>
78 EXPLORING THE PICK OPERATING SYSTEM

The defining phase requires the letter P, followed by the prestored


command area number to define, in this case, 1. The numbers 0
through 9 are allowable.

Activating Prestored Commands


This prestored command may now be activated:

.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).

Complex Prestored Commands


Presto red commands may contain more than one EDITOR com-
mand. In this case, each EDITOR command is separated by the es-
cape character (left bracket), which is generated by the ESC or ES-
CAPE key on your keyboard. This character tells the EDITOR where
the end of an EDITOR command occurs, and functions like a <cr>
between the EDITOR commands being activated.
An example of a more complex presto red command would be:

.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

5.1 ACCESS VERBS

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

In its simplest form, ACCESS requires simply a verb (SORT) and a


filename (STAFF). Unless otherwise specified, all ACCESS reports dis-
play on the CRT screen.

79
80 EXPLORING THE PICK OPERATING SYSTEM

>SORT STAFF BY NAME<cr>

f- sequence criteria
f- filename
f- verb

This illustrates that data may be sequenced for reporting purposes. In


this example, the data will be sorted in alphabetic ascending se-
quence by the data in the NAME field.

>SORT STAFF BY NAME WITH STATE = "CA"<cr>

f-- selection criteria


f-- sort sequence criteria
f-- file name
f-- verb

As before, we have a verb, a filename, and a sorting sequence. This


example also illustrates selection criteria, an optional process that
limits the items to be accessed to those items with the value in the
STATE attribute equal to "CA." This means that the string, CA, must
appear in the STATE attribute.
These examples merely skim the surface of the capabilities of
ACCESS. In order to become truly proficient in the use of ACCESS, it
is important to learn about the attribute-defining items, since they
are the ACCESS vocabulary.

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.

FEATURES OF ATTRIBUTE·DEFINING ITEMS


• They define data attributes, or fields, and tell the PICK System ex-
actly where they are located in the file.
• They define mathematical functions and operations, such as alge-
braic equations, that will be applied to the data prior to display.
• They define the width of the output column on the report, the jus-
tification of the data, and the optional column headings.
• They define output "masks," or conversions, the functions that as-
sist in converting data from internal to external format.

ATTRIBUTE·DEFINING ITEM FORMAT


As we discussed in Chapter 2, each attribute-defining item has a spe-
cific format.

001 Attribute pointer type (A, S, or X); the majority of attribute-


defining items contain an "A" pointer here
002 Attribute Mark Count (AMC); the position of the data attribute
within the data item to extract for this item
003 Optional column heading to display at the top of the column for
the data value
004 Optional "association specification" (used on multivalues only)
005 Not used
006 Not used
007 Optional output conversion
008 Optional output correlative
009 Justification (L, R, T, U)
010 Width of output column

SAMPLE DATA ITEM FROM THE STAFF FILE


For an example of how an attribute-defining item would be applied,
examine the following sample data items:
82 EXPLORING THE PICK OPERATING SYSTEM

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

SAMPLE DICTIONARY ITEMS FROM THE STAFF FILE


Here are several sample attribute-defining items one would find in
the dictionary of a file. (They are displayed across the page to save
room; they represent five distinct items.)

ATTRIBUTE ACCESS ATTRIBUTE-DEFINING ITEMS


NUMBER

NAME ADDRESS CITY STATE ZIP


001 A A A A A
002 1 2 3 4 5
003 NAME ADDRESS CITY STATE ZIP
004 (null) (null) (null) (null) (null)
005 (null) (null) (null) (null) (null)
006 (null) (null) (null) (null) (null)
007 (null) (null) (null) (null) (null)
008 (null) (null) (null) (null) (null)
009 L T L L R
010 15 20 15 5 10
ACCESS: THE DATA RETRIEVAL PROCESS 83

Here is an example of an ACCESS statement accessing the STAFF


file, using the attribute-defining items in the STAFF dictionary file.

>SORT STAFF BY STATE BY NAME NAME STATE<cr>

... and here is what appears on the CRT:

hh:mm:ss dd mmm yyyy page 1

STAFF NAME ........... STATE


103 LUCY RICARDO CA
102 RICKY RICARDO CA
104 ETHEL MERTZ NY
101 FRED MERTZ NY

4 ITEMS LISTED.

ACCESS reports automatically include the filename from which the


report was generated and the item-id of each item presented (the
left-most column). At the end of a report, the number of items pre-
sented is also displayed. Reports generated by ACCESS also provide a
default heading if one is not requested. The default heading includes
the current time, date, and page number.

Explicit Dictionary Items


In Chapter 4 you constructed the actual data in the STAFF file. Now
it's time to build the attribute-defining items (retrieve the data with
ACCESS). Attribute-defining items are typically built through the EDI-
TOR. To add the five sample items listed in the previous table to the
DICT (dictionary) file of the STAFF file, follow these steps:

>ED DICT STAFF NAME ADDRESS CITY STATE ZIP<cr>

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>

This places the EDITOR into Insert mode.

OOl+A<cr>
84 EXPLORING THE PICK OPERATING SYSTEM

This defines the NAME item as an attribute-defining item.

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>

This specification provides for 15 columnar positions in the NAME


column when NAME is output. If the actual data in the NAME attri-
bute is wider than 15 column positions, it will wrap around to the next
line. Now the structure of the attribute-defining item is complete,
but we have to remove all of the position-holding "X" characters.

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>

The attribute-defining item for NAME is ready to file. The FI com-


mand causes the EDITOR to write the NAME item to the current file,
which is the DICT of STAFF.

, 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:

>LIST STAFF NAME ADDRESS CITY STATE ZIP<cr>

1-+ attributes to display


1-+ filename
1-+ verb
86 EXPLORING THE PICK OPERATING SYSTEM

This ACCESS sentence creates a display of the items in the STAFF


file, and includes in the display the name, address, city, state, and zip
data. Note that the items do not appear on the report in the same
order that they were entered. They appear in an apparently random
sequence. This is due to the hashing method that the PICK System
uses to place items into, and retrieve items from, files. To sequence
data by the item-id, or the NAME, or any other attribute, the SORT
verb is used with a "BY ... " modifier in place of the LIST verb.

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 THE ITEMS IN THE STAFF FILE<cr>

f--+ throwaway connective


f--+ filename
f--+ throwaway connective
f--+ throwaway connective
f--+ throwaway connective
f--+ throwaway connective
f--+ verb

This would function exactly like this ACCESS command:

>SORT STAFF<cr>

f--+ filename
f--+ verb

The name "throwaways" is self-explanatory. ACCESS "parses" these


words out of the sentence before the actual execution of the
command.

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:

WITH attribute name logical operator "value string"

The attribute name may be any attribute defined in the dictionary


level of the file (for example, NAME, ADDRESS, CITY, STATE, or ZIP).
The logical operator can be any of the following:

SYMBOLIC FORM MNEMONIC FORM DESCRIPTION

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

The "value string" may be any series of letters and/or numbers; it


must be entered between double quotation marks (").
Here are some examples of how selection criteria might be applied:

>LIST STAFF WITH CITY = "NY" NAME CITY<cr>

>LIST STAFF WITH ZIP >= "10000" NAME ZIP<cr>

>LIST STAFF WITH ZIP BEFORE "20000" NAME ADDRESS ZIP<cr>

To enhance the selection power of ACCESS, more than one selection


criterion may be combined in an ACCESS sentence by separating
each individual criterion with either the AND or the OR Boolean
operator.
When two selection criteria are connected with an AND connective,
both must be true in the data item in order for them to be selected
for ACCESS processing. By contrast, the OR connective permits
either of the conditions to be true for the data item to be selected for
processing. The following examples illustrate multiple selection crite-
ria phases:
88 EXPLORING THE PICK OPERATING SYSTEM

<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.

>LIST STAFF WITH STATE = "NY" OR WITH STATE = "CA"

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:

>SORT STAFF BY NAME WITH NAME = "SMITH" <cr>

this would result in a "NO ITEMS PRESENT" message, indicating that


the string being requested (SMITH) did not match exactly what was
stored (JOHN SMITH).
With the use of string searching characters "[ ]" (brackets) the com-
parison criteria is more flexible. Using the same data as before, we
key in the ACCESS sentence as follows:

>SORT STAFF BY NAME WITH NAME = "[SMITH" <cr>

Note that the value in quotes is now preceded by a "[" character.


This tells ACCESS that the value in the name field may be preceded
by any characters, as long as it ends with the characters "SMITH." In
this case, the item is selected for display.
ACCESS: THE DATA RETRIEVAL PROCESS 89

The string searching function can also be used in both directions si-
multaneously, as in the following ACCESS sentence:

>SORT STAFF BY NAME \vITH NAME = "[SMITH]" <cr>

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:

>SORT STAFF BY NAME \vITH NAME = "[SMITH]" <cr>

Single Quotes: Single quotes are typically used to enclose item-id


strings, as in the following example, which causes the display of one
specific item from the STAFF file:

> LIST STAFF . 100' <cr>

5.2 ACCESS VERBS AND EXAMPLES


There is much more to ACCESS verbs than we have seen thus far.
The most powerful PICK System commands by far are not, strictly
speaking, TCl commands but ACCESS verbs, designed to LIST,
SORT, and/or SELECT data from the PICK files with nearly unlimited
flexibility. Used in conjunction with skillfully constructed attribute
definitions, the ACCESS verbs can be astounding relational tools for
the PICK relational data base. We will devote an entire section to
them in this chapter, so let's begin by describing the ACCESS verbs
and showing the general format of these powerful commands.
ACCESS verbs require at minimum a verb and a filename, but option-
ally may be followed by any ACCESS modifier.

The COUNT Verb


The COUNT command simply returns the number of items in a file,
or the number of items that meet a certain selection criterion.
90 EXPLORING THE PICK OPERATING SYSTEM

>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.)

>COUNT STAFF WITH STATE "CA"<cr>


n ITEMS COUNTED.

This instructs ACCESS to return a count of all items in the STAFF file
with the characters "CA" in the STATE attribute.

The LIST Verb


The LIST command displays items in their "hash order" sequence
within the file; no sorting takes place. The result of this ACCESS sen-
tence includes the item-id, the NAME, and the ADDRESS attributes
from each item in the STAFF data file.

>LIST STAFF NAME ADDRESS<cr>

The LlST·ITEM and SORT·ITEM


The LIST-ITEM command displays the entire item, without applying
any attribute definitions to the data.

>LIST-ITEM STAFF<cr>

The SORT-ITEM functions like the LIST-ITEM command, but displays


the data sorted by the item-ids.

>SORT-ITEM DICT STAFF

The LlST·LABEL and SORT-LABEL


The LIST-LABEL and SORT-LABEL commands are used to produce
formatted labels on the CRT or printer. After the command has been
entered, ACCESS prompts for the label parameters with a question
mark. Each label parameter must be separated by a comma.

>LIST-LABEL STAFF NAME ADDRESS CITY STATE ZIP (CI)<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

The C option activates the COL-HDR-SUPP (column header sup-


press) function, and the I option activates the ID-SUPP (suppress
item-id) function.

?2, 5 ,I, 0,30,2 ,C<cr>

These are the label parameters. They have the following meanings:

2 The number of labels across the page.


S The number of rows per label. This is a function of the number of
the fields requested for display (NAME, ADDRESS, CITY, STATE,
and ZIP).
1 The number of blank lines (vertically) between labels on output.
o The number of spaces to indent from the left margin. It is recom-
mended that the labels be physically aligned at the proper inden-
tation on the printer itself and that this parameter always be zero.
30 The number of print positions per label. If the data being printed
exceeds this number, it will be truncated (chopped off) to pre-
vent accidentally overprinting on the next label.
2 The number of spaces (horizontally) between labels.
C Instructs ACCESS to compress null values. For example, if one of
the records has no address field, this prevents having a blank line
where the address would normally print, so that the city would
print where the address normally would, and the rest of the label
data would move up one line.

5.3 LlST·PROCESSING COMMANDS

The ACCESS list-processing commands provided with PICK are used


to create lists of item-ids that are in a particular sequence and/or se-
lection criterion. Once they are created, these lists of item-ids may
be immediately used for output or saved as an item for later recall.
Before we investigate this PICK System feature, we need to locate a
certain special file used in list processing.

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

If the message, "[10] FILE NAME MISSING," appears on the screen,


then you do not have a pointer to this file and you will need to cre-
ate it with the following command:

>CREATE-FILE DICT POINTER-FILE 1l,1<cr>

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.

This was necessary to make your POINTER-FILE one of the special


class of files, referred to as a "pointer-class" file (see Chapter 2). This
is the only time that this EDIT operation will have to be performed
on the POINTER-FILE file-defining item, unless a new POINTER-FILE
is created on another account elsewhere in the system.
If POINTER-FILE is there you will see a display of various itemlists
stored in this file. This indicates that you already have a pointer to
the POINTER-FILE for use by the list-processing commands. Press
the carriage return on the keyboard until control returns to TCL (indi-
cated by the ">" prompt).

The SELECT and SSELECT Commands


The SELECT command is used to build a temporary list of item-ids
that meet a selection criterion. SSELECT is functionally identical, but
provides for the sequencing of the item-ids by one or more sort
criteria.

>SELECT STAFF WITH STATE "CA" <cr>


n ITEMS SELECTED.

This causes ACCESS to construct a list of item-ids using the selection


criterion that the data items to be selected must have the characters
"CA" in the attribute defined by the STATE attribute-defining item.
The "n ITEMS SELECTED" message indicates that the SELECT process
has been completed and that the list is now ready for use. It is ex-
ACCESS: THE DATA RETRIEVAL PROCESS 93

tremely important to emphasize here that the itemlist must be used


immediately, otherwise, it will disappear. The very next command is-'
sued from TCl uses or eliminates this list of item-ids.

>LIST STAFF NAME STATE<cr>

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.

>SSELECT STAFF BY NAME<cr>


n ITEMS SELECTED.

This constructed a list of item-ids, this time in the sequence of the


NAME attribute in each data item.

>LIST STAFF NAME<cr>

The items on the report are displayed in ascending sequence by


NAME. Once again, the itemlist has gone away.

The SAVE-LIST Command


The SAVE-LIST command is used after a SELECT or SSElECT to save,
or write, the itemlist to the POINTER-FilE for later use. An ACCESS
command can utilize this item list again and again simply by referring
to the name of the itemlist, which can be any combination of charac-
ters, as discussed earlier under the topic of item-ids.
Note: Choosing descriptive names for saved itemlists can be very
helpful when later reviewing the POINTER-FilE. There is no
connection from the saved itemlist to the file from which the list of
item-ids was generated, hence it may be useful to indicate the name
of the file in the name of the saved itemlist, as illustrated in the fol-
lowing example.

>SSELECT STAFF BY NAME<cr>


n ITEMS SELECTED.

This creates the list of item-ids, in ascending NAME sequence.

>SAVE-LIST STAFF .LIST<cr>


LIST 'STAFF.LIST' SAVED. 1 FRAMES USED.
94 EXPLORING THE PICK OPERATING SYSTEM

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.

The GET-LIST Command


Once itemlists have been saved, they may be retrieved for use in an
ACCESS command. The GET-LIST command is used for this purpose.
It retrieves and reactivates the item list you specify immediately fol-
lowing the SELECT or SSELECT that generated the itemlist.

>GET-LIST STAFF. LIST<cr>


n ITEMS SELECTED.

This causes ACCESS to retrieve and reactivate itemlist called


"STAFF.LlST." The lin ITEMS SELECTED" message indicates that the
itemlist is now ready to be used.

>LIST STAFF NAME<cr>

Note that the data items were displayed in ascending NAME se-
quence, as requested in the SSELECT command that generated the
itemlist.

The EDIT-LIST Command


Saved itemlists may be edited by the EDIT-LIST command. This proc-
ess provides every command associated with the EDITOR process
(see section 4.1), only on items stored in the POINTER-FILE. Conse-
quently, the general form of the EDIT -LIST command does not re-
quire a filename:

>EDIT-LIST STAFF .LIST<cr>


TOP

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

This simply illustrates that the entire EDITOR command set is


available at this point. (The "P" command defaults to "List 22 lines.")
To leave the list unchanged, issue the EX (Exit Item) command .

. EX<cr>
'STAFF.LIST' EXITED.

The COPY-LIST Command


The COPY-LIST command is used to copy saved itemlists to other
names, or for copying to the CRT or printer.

>COPY-LIST STAFF .LIST<cr>


TO: NEW. STAFF. LIST<cr>

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.

>COPY-LIST NEW. STAFF. LIST (T)<cr>

This causes the system to copy the itemlist to the CRT screen.

The DELETE-LIST Command


The DELETE-LIST command is used for cleaning up the POINTER-
FILE. In systems where storage space is limited, removing obsolete
lists helps to return extra storage space to the virtual memory over-
flow table. This makes more virtual workspace available for process-
ing and data storage.

>DELETE-LIST NEW. STAFF. LIST<cr>


[245] LIST 'NEW. STAFF. LIST' DELETED

This causes the system to remove the itemlist called


"NEW.STAFF.L1ST."

5.4 ACCESS TAPE HANDLING COMMANDS

Data may be written to magnetic tape with ACCESS, a feature useful


for incorporating selection criteria and sort sequences to the data
being copied to tape for safekeeping.
This operation is called a T-DUMP. The types of tapes or diskettes
that it produces are also referred to as T -DUMPs to distinguish this
96 EXPLORING THE PICK OPERATING SYSTEM

formatted media from a PICK System SAVE format. (See Chapter 8


for a description of tape processes.)
Using T-DUMPs is an effective means of off-loading data to backup
media. ACCESS provides the capability of retrieving the data for gen-
erating reports using the TAPE modifier in the ACCESS sentence. This
means that you can produce reports from this data without physically
reloading the data to the system.

Generating a T-DUMP Tape or Diskette


The following example shows how to archive data to magnetic media
for later retrieval by ACCESS.

>T-ATT<cr>
TAPE ATTACHED. BLOCK SIZE =500.

This TCl command attaches the tape or diskette to your process.

>T-RE\tI<cr>

This command ensures that the tape or diskette is positioned at its


logical beginning point.

>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.

Producing Reports from Media


let's now use ACCESS to create a report from the media.

>T-RE\Il<cr>

Position the media back to the beginning with the following:


ACCESS: THE DATA RETRIEVAL PROCESS 97

>LIST STAFF NAME ADDRESS TAPE<cr>

This produces a report showing the item-id, name, and address of


every item on the media, indicated by the TAPE modifier. Note that
the data items are in ascending sequence, as they were SSELECTed
before the T-DUMP.

Loading Data from T·DUMP Media


It may be necessary on occasion to reload data from a T-DUMP me-
dium. The T-LOAD command is used for this purpose. This first ex-
ample, using the medium you just created in the former T-DUMP
process, illustrates the protective nature of the T -LOAD process,
which never unconditionally writes over existing data items unless it
is specifically directed to do so.

>T-REW<cr>

>T-LOAD STAFF<cr>
'item-id' EXISTS ON FILE.

, i tem- id' EXISTS ON Fi le.


o ITEMS LOADED.

If we wanted to unconditionally write these items to the STAFF file,


we would need to use the 0 option, to overwrite duplicate item-ids,
as illustrated in the following:

>T-REW<cr>

>T-LOAD STAFF (O)<cr>


1 'item-id'

n 'i tem- id'


n ITEMS LOADED.

Each item-id that displays during the process indicates that the item
has been successfully written to the STAFF file.

5.5 ACCESS MODIFIERS AND OPTIONS


Modifiers are used to add special output or reporting functions to an
ACCESS report. Most modifiers may appear anywhere in an ACCESS
sentence, unless shown otherwise. Many modifiers have option
98 EXPLORING THE PICK OPERATING SYSTEM

equivalents, meaning that a one-character option may be used in


place of the modifier. Options always appear in parentheses at the
end of an ACCESS sentence. Here is an example using the modifier
form:

>LlST STAFF COL-HDR-SUPP lD-SUPP LPTR

This ACCESS sentence could also be written using the option form:

>LlST STAFF (ClP) <cr>

Note: Not all modifiers have one-character option equivalents.

The BREAK-ON Modifier


The BREAK-ON modifier is used to generate a visual and logical con-
trol break when a change occurs in an attribute used for sorting the
items. The visual portion of the break is displayed as the string "***"
between two blank lines on the report. If the TOTAL modifier is also
in effect during a control break, then the subtotal for each attribute
specified with the TOTAL modifier is displayed.

>SORT STAFF BY STATE BREAK-ON STATE TOTAL ZIP<cr>

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.

>SORT STAFF BY STATE BY NAME STATE NAME<cr>

This causes ACCESS to sequence the data first by the ascending


STATE attribute, and within each STATE by the NAME attribute, and
to display the item-id, the STATE, and the NAME.

The BY-DSND Modifier


The BY-DSND modifier specifies a different type of sort sequence in
a report. This reverses the ascending sequence normally specified by
the BY modifier and causes the data to be sequenced in descending
order. Each BY-DSND must be followed by a valid attribute name.
There is no limit to the number of BY-DSND modifiers, and they are
also processed from left to right.
ACCESS: THE DATA RETRIEVAL PROCESS 99

>SORT STAFF BY -DSND NAME NAME<cr>

This causes ACCESS to sort the data in the STAFF file by descending
NAME. For example, "WILSON" would display before "ADAMS."

The COL-HDR-SUPP Modifier or (C) Option


The COL-HDR-SUPP modifier suppresses both the default page
heading, which normally includes the time, date, and page number,
as well as the attribute column headings. It has an equivalent (C) op-
tion. This modifier is typically used during processes such as the
LIST-LABEL command to prevent the headings from appearing on the
labels.

>SORT STAFF NAME COL-HDR-SUPP<cr>

or

>LIST STAFF NAME (C) <cr>

The DET-SUPP Modifier or (D) Option


The DET-SUPP modifier is used in an ACCESS sentence in which a
sort sequence is combined with a BREAK-ON modifier. The function
of this modifier is to suppress the display of all the detail lines con-
tributing to a control break, and instead to display the data value that
caused the control break to occur.

>SORT STAFF BY STATE BREAK-ON STATE TOTAL ZIP DET-SUPP<cr>

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.

The FOOTING and HEADING Modifiers


The HEADING and FOOTING modifiers are functionally identical in
their syntax and options. The H EADI NG defines text to be displayed
at the top of each report page, while the FOOTING defines the text
at the bottom of each page. The general form is:
HEADING "text 'options'"
100 EXPLORING THE PICK OPERATING SYSTEM

Note that the entire HEADING string is enclosed within double


quotes, while special options within the HEADING or FOOTING are
enclosed within single quotes. Also note that this sentence may con-
tain more characters than will fit on one line of your CRT. When you
reach the right edge of the screen, just keep on keying in the sen-
tence as you normally would; the characters will wrap around to the
beginning of the next line. As long as the sentence is less than 140
characters, you won't run into any problems.

>SORT STAFF BY STATE BY ZIP HEADING '" LC' STAFF FILE REPORT' L'" FOOTING
"'LC'PAGE 'PN' PRINTED AT 'TL'''<cr>

This is how the HEADING in this sentence works:


• 'LC' issues a line feed (blank line) at the top of each page and
causes the following text string to be centered on the page.
• STAFF FILE REPORT is the text to be centered.
• 'L' issues a blank line after the HEADING text.

This is how the FOOTING in this sentence works:


• 'LC' issues a blank line before the FOOTING text and causes the
following text and options string to be centered on the page.
• PAGE 'PN' prints the literal PAGE, followed by the current page
number of the report, left-justified.
• PRINTED AT 'TL' prints the literal PRINTED AT, followed by the
current system time and date, followed by a blank line at the end
of the page.

The HDR-SUPP Modifier or (H) Option


The HDR-SUPP modifier suppresses the default page heading that
contains the time, date, and page number. Its equivalent is the (H)
option.

>L1ST STAFF HDR-SUPP<cr>


>SORT STAFF (H) <cr>

The ID-SUPP Modifier or (I) Option


The ID-SUPP modifier suppresses the automatic display of each data
item's item-id. Its equivalent is the (I) option.

>SORT STAFF 1D-SUPP<cr>


>SORT STAFF BY NAME (I) <cr>
ACCESS: THE DATA RETRIEVAL PROCESS 101

The WITH and IF Modifiers


The WITH and IF modifiers are identical in their function and form
the basis of the selection criteria of an ACCESS sentence. IF can be
substituted for WITH to make the ACCESS sentence more readable.
The basic format of a selection criterion is:
WITH attribute name logical operator "value string"
The attribute name may be any word defined with an attribute-
defining item in the dictionary of the file being ACCESSed.
The logical operator may be any of the following:

SYMBOLIC FORM MNEMONIC FORM DESCRIPTION


.~ I
EQ Equa 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

The "value string" is the series of characters and/or numbers, en-


closed in quotes, used for comparison to the attribute value. Brackets
("[ n can be used in the value string to represent an unspecified
number of characters preceding or following the value string within
the attribute (see Section 5.1 ).
Multiple selection criteria may be placed in an ACCESS sentence if
they are joined by the words "AND" or "OR". The maximum number
of AND connectives is nine. Here are some examples:

>LIST STAFF \NITD STATE = "CA" NAME STATE<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.

The LPTR Modifier or (P) Option


The LPTR modifier directs the output of the report to the system
printer instead of the CRT screen. Its equivalent is the (P) option.

>SORT STAFF BY NAME LPTR<cr>


>SORT STAFF (P) <cr>

The NOPAGE Modifier or (N) Option


The NOPAGE modifier causes the report to display on the CRT
screen without pausing for the user to enter a <cr> between each
page of output. Its equivalent is the (N) option. This modifier is typi-
cally used when the report is being printed on a slave printer at-
tached to the CRT.

>LIST MD NOPAGE<cr>
>LIST MD (N)<cr>

The TOTAL Modifier


The TOTAL modifier produces a columnar total of a numeric field.

>LIST MD TOTAL *A9989<cr>

Note: The attribute *A9999 is defined by default in each account


MD. It displays the size in bytes of each data item displayed.

5.6 STAFF FILE UPDATES

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

>ED STAFF *<cr>

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" first" i tem- id)


TOP
.B<cr>
EO! 5

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>

Attribute 6 will contain a telephone number. It is normal for the EDI-


TOR to indicate the number 005 next to the data being inserted for
attribute 6. We mentioned earlier that line numbering was automatic
during the editing of a new item. The 005 + simply indicates the line
number at which we began inserting attributes. After flipping the
item with the F command, the line numbers are adjusted and dis-
played correctly.

005+6000<cr>

Attribute 7 will contain a date attribute, which we'll define as


"HIRE.DATE." Enter any number between 5500 and 6500. You will
want each item to have a different number in this attribute.

005+ -6000<cr>

Attribute 8 will also contain a date attribute, which we'll define as


"BIRTHDAY." Enter any number between -8000 and -2000. Again,
we want different numbers for each item, and don't forget the nega-
tive sign (-).

005+S00000<cr>

Attribute 9 will contain a numeric (money) attribute we'll define as


"SALARY." Enter any number between 100000 (one hundred thou-
104 EXPLORING THE PICK OPERATING SYSTEM

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 (».

New Attribute-Defining Items


The following attribute-defining items should be added to the DICT
of the STAFF file.

ATTRIBUTE ATTRIBUTE-DEFINING ITEMS


NUMBER

Item-ids-> PHONE HIRE.DATE BIRTHDAY SALARY


001 A A A A
002 6 7 8 9
003 PHONE HIRE.DATE BIRTHDAY SALARY
004 (null) (null) (null) (null)
005 (null) (null) (null) (null)
006 (null) (null) (null) (null)
007 (null) 02/ 02/ MR2,$
008 (null) (null) (null) (null)
009 L R R R
010 14 8 8 10

Note: The values in position 7 of these attribute-defining items are


conversions. A listing of most of the conversions and correlatives is
provided in Appendix E at the end of this book. Appendix F contains
other dictionary definition items that you may want to edit into the
DICT of the STAFF file for later use.
CHAPTER

6
PROC: The Stored
Procedure Language

The PROC language provides a means of storing TCl and ACCESS


commands for automatic execution. It also provides a vehicle for
controlling the flow of processing of data, since it interfaces all the
essential processors, specifically, PICK/BASIC, ACCESS, and TCl.
PROC is a powerful and useful tool. Since it is loosely described as a
"language," it has a unique set of instructions. This section deals with
the instructions most often used.

6.1 PROC FEATURES

PROCs are essentially stored procedures, which include ACCESS


sentences, PICK/BASIC programs, and TCl commands. Any com-
mand that can be entered at TCl may be called from PROC.

Rules and Conventions


Creating a procedure is exactly like defining your own unique set of
commands that may be activated simply by entering the name of the
PROC at the TCl command prompt. For this reason, PROCs are usu-
ally initiated by an item in a user's MD. The PROC may execute a
series of commands or may call other PROCs.
Identifying a PROC: To indicate to the system that an item is a
PROC, the system requires that each PROC must have the characters
"PQ" on the first line of the item.
Statement labels: Statement labels are optional. A statement label is
a number at the beginning of a PROC line that can later be used as a

105
106 EXPLORING THE PICK OPERATING SYSTEM

destination for a GO command. These usually occur at the top of a


series of commands that will be repeated some number of times, as
we'll discover in our menu example.
Command Line Limitation: PROCs may have a maximum of one
PROC command per line, with the exception of the IF command,
where the maximum is two commands on one line.

6.2 PROC LINKAGES

In their most common form, PROCs are connected together to form


a means of controlling many functions. For this reason, the PROC
language provides an inherent means of linking, or connecting,
PROCs together. This linkage occurs in two forms:

One-Way Transfer of Control


This approach transfers control to another PROC and then termi-
nates. For example:

Fi Ie :MD
Item-id:MENU
001 PQ
002 (PROCS MENU)

The second line indicates that this is a transfer to a PROC called


"MENU" in the file called "PROCS." The parentheses around the
filename and item-id of the PROC indicates that when the PROC
being called finishes, control does not return to this calling PROC.

Two-Way Transfer of Control


This approach transfers control to another PROC and then resumes
processing when the called PROC terminates. For example:

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.

6.3 THE MENU PROC


The PROC language is often used to construct menus from which
other procedures are activated according to a menu option selected
by an operator. The following menu will subsequently activate each
of the procedures covered in this section.
Initially, there must be an activation PROC in the MD of the account.
It is here that the system initiates all PROC processing. From that
point, each subsequent PROC will be activated from the PROC
called MENU, which we will store, appropriately enough, in a file
called PROCS. Enter the following:

>ED MD MENU<cr>
NEW ITEM
TOP
.I<cr>
OOl+PQ<cr>

This is required of every PROC.

002+ (PROC MENU) <cr>

This transfers control to the PROC called MENU in the file called
PROCS.

003+<cr>
.FI<cr>
'MENU' FILED.

This PROC simply provides a mechanism for the system to transfer to


the PROCS file and begin execution of the PROC named MENU that
resides there. This is the only entry that needs to be made into the
MD. It is often very useful to keep all the procedures gathered to-
gether"in a file, such as our PROCS file, to simplify maintenance.
The following PROC illustrates many of the PROC language features,
including the capability of performing terminal output, accepting
108 EXPLORING THE PICK OPERATING SYSTEM

input from a keyboard, and performing conditional operations based


on the keyboard input.
Enter the PROC as shown, paying special attention to getting all the
blanks in the right places:

>ED PROCS MENU<cr>


NEW ITEM
TOP
.I<cr>
001+PQ<cr>
002+C CLASS PROC MENU<cr>

Any line in a PROC that begins with the C (Comment) command is


ignored by the PROC processor; it merely allows the entry of remarks
that may be used as a reference later. Each PROC in this section has
a comment line that describes the function of the procedure.

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.

004+T (-1), (20,0), "CLASS PROC MENU"<cr>

The T (Terminal) command provides a means of formatting output to


a CRT screen. The T command has many functions. This example
uses three of them: The (-1) causes PROC to clear the CRT screen
and position the cursor to the upper left-hand corner of the screen;
(20,0) causes the PROC to move the cursor to position 20 of line 0,
which is the top line of the screen; "CLASS PROC MENU" is simply a
text string to be displayed on the CRT screen at the coordinates
specified in the previous (20,0) function.

005+T (3,2) ,"1. THE HAND P COMMANDS"<cr>

This prints the text, "1. THE HAND P COMMANDS," at position 3 of


line 2.

006+T (3,3),"2. THE STON (STACKON) COMMAND"<cr>

This prints the text, "2. THE STON (STACK ON) COMMAND," at po-
sition 3 of line 3.
PROC: THE STORED PROCEDURE LANGUAGE 109

007+T (3,4),"3. THE D (DISPLAY INPUT) COMMAND"<cr>

This prints the text, "3. THE D (DISPLAY INPUT) COMMAND," at


position 3 of line 4.

008+T (3,5),"4. THE IP (INPUT) COMMAND AND PATTERN MATCHING" <cr>

This prints the text, "4. THE IP (INPUT) COMMAND AND PATTERN
MATCHING," at position 3 of line 5.

009+T (3,6),"5. INTERACTIVE PROC"<cr>

This prints the text, "5. INTERACTIVE PROC," at position 3 of line 6.

OlO+T (3,20),"ENTER OPTION OR Q TO QUIT",+<cr>

This prints the text, "ENTER OPTION OR Q TO QUIT," at position 3


of line 20. The plus sign (+) causes the cursor to remain positioned
at the end of the current line on the CRT for the next Input
command.

011 +SI<cr>

This PROC command points to a location in the PROC primary input


buffer. It establishes the location for the next PROC command. The
next IP (INPUT) command that is executed will place the keyboard
input in storage area 1 of the primary input buffer.

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>

Once input is received, this PROC statement will determine exactly


what will be done next. The 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 to return control to TCL. The
purpose of this I F statement is to provide a means of terminating (or
quitting) the PROC. In the event that input buffer 1 does not contain
the letter Q, the next line of the PROC is executed.

014+IF Al = .... GO IO<cr>


110 EXPLORING THE PICK OPERATING SYSTEM

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.

015+IF Al = I [PROCS EXAMPLEI]<cr>

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.

016+IF Al = 2 [PROCS EXAMPLE2]<cr>

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.

017+IF Al = 3 [PROCS EXAMPLE3]<cr>

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.

018+IF Al = 4 [PROCS EXAMPLE4]<cr>

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.

019+IF Al = 5 [PROCS EXAMPLE5]<cr>

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.

020+T "END OF REPORT. PRESS <cr> TO CONTINUE OR Q TO QUIT", + <cr>

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>

The GO command is used to transfer control to a numeric statement


label. This line reads: "Transfer control to the line that contains the
statement label 10," which happens to occur at line 3.

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

>ED PROCS EXAMPLEl<cr>


NEW ITEM
TOP
.I<cr>
OOl+PQ<cr>
002+C EXAMPLE OF HAND P COMMAND<cr>

The comment line (002) is ignored by PROC.

003+HSORT STAFF BY NAME<cr>

The H command causes the PROC to move a string of text to the


end of the output buffer, a staging area for constructing TCl
commands. Since this is the first time anything has been sent to the
output buffer, the result of the command is that it will contain the
string "SORT STAFF BY NAME."

004+P<cr>

The P (Process) command causes the PROC to process whatever


command is currently in the output buffer. Since the output buffer
now contains a legal ACCESS sentence, it is processed by TCL and
ACCESS. It is at this point that the output appears on the CRT screen.

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.

To activate EXAMPLE1, start the MENU:

>MENU<cr>

At the prompt, ENTER OPTION OR Q TO QUIT, enter a 1:

ENTER OPTION OR Q TO QUIT: 1 <cr>


PROC: THE STORED PROCEDURE LANGUAGE 113

A report appears automatically on the CRT, showing the contents of


the STAFF file built earlier in the EDITOR tutorial.
At the end of the report, a prompt appears on the CRT to remind you
that the end of the report has been reached.

END OF REPORT. PRESS<cr> TO CONTINUE OR Q TO QUIT: <cr>

To resume our editing, enter a Q.

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.

>ED PROCS EXAMPLE2<cr>


NEW ITEM
TOP
.I<cr>
OOl+PQ<cr>
002+C EXAMPLE OF STON COMMAND<cr>
003+8S0RT-LABEL STAFF<cr>

This moves the text, SORT-LABEL STAFF, to the primary output


buffer.

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.

005+8 NAME ADDRESS CSZ<cr>

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

SORT-lABEL STAFF BY ZIP NAME ADDRESS CSZ.

006+H COL-HDR-SUPP ID-SUPP<cr>

Just like when we executed this ACCESS command from TCl,


ACCESS still requires modifiers to suppress the automatic page head-
ing and the display of the item-ids on each label. This moves the
text, COl-HDR-SUPP ID-SUPP, to the end of the primary output
buffer. The primary output buffer now contains the text, SORT-
lABEL STAFF BY ZIP NAME ADDRESS CSZ COl-HDR-SUPP
ID-SUPP.

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.

008+H2, 3,1,0,30,2 ,C< <cr>

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>

This processes the contents of both output buffers, which includes


the SOB.

OlO+X<cr>

This terminates the PROC, EXAMPlE2, and causes control to return


to the MENU PROC.

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

A PROC provides a means of conditional execution through the IF


statements. The following example illustrates the trapping of data
and shows how to cause a PROC to perform specific commands
based on the input.

>ED PROCS EXAMPLE3<cr>


NEW ITEM
TOP
.I<cr>
001 +PQ<cr>
002+C EXAMPLE OF D COMMAND<cr>

Note the comment line.

003+T C,B<cr>

The Terminal command function is T. The C causes the CRT screen


to be cleared. The B (Bell) command causes the CRT's audible alarm
to sound.

004+RI<cr>

This resets (clears) the primary input buffer.

005+T (3,3),"ENTER YOUR FIRST NAME",+<cr>

This causes the text, "ENTER YOUR FIRST NAME," to be displayed at


position 3 of line 3 and leaves the cursor positioned at the end of the
text.

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.

008+IF Al = "X" <cr>

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

009+T (3,5), "ENTER YOUR LAST NAME", + <cr>

This causes the text, "ENTER YOUR LAST NAME," to be displayed at


position 3 of line 5 and leaves the cursor positioned at the end of the
text.

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.

012+IF A2 = " "X<cr>

This reads: "If input buffer 2 contains a null (or <cr», then perform
the X command," and control returns to the MENU PROC.

013+T (3,7),"FIRST NAME:",(35,7),+<cr>

This causes the text, "FI RST NAME," to be displayed at position 3 of


line 7, then the cursor moves to position 35 of line 7.

014+Dl<cr>

The D command displays the contents of the input buffers. This


command causes the contents of input buffer 1 to be displayed at
the current cursor position (35,7). This will display your first name.

015+T (3,9),"LAST NAME:",(35,9),+<cr>

This causes the text, "LAST NAME," to be displayed at position 3 of


line 9, then the cursor moves to position 35 of line 9.

016+D2<cr>

This command causes the contents of input buffer 2 to be displayed


at the current cursor position (35,9). This will display your last name.

017+T (3,11),"FIRST AND LAST NAME :",(35,11),+<cr>


PROC: THE STORED PROCEDURE LANGUAGE 117

This causes the text, "FIRST AND LAST NAME," to be displayed at


position 3 of line 11, then the cursor moves to position 35 of line 11.

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>

This terminates the PROC, EXAMPLE3, and control returns to the


MENU PROC.

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.

> ED PROCS EXAMPLE4


NEW ITEM
TOP
.I<cr>
001 +PQ<cr>
002+C TEST OF PATTERN MATCHING AND THE IF STATEMENT<cr>
003+10 RI<cr>
004+T C,(3,3),"ENTER SOCIAL SECURITY NUMBER (NNN-NN-NNNN) ",+<cr>
OOS+SI<cr>
006+IP: <cr>
007+IF Al = " " GO 10<cr>

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.

009+IF Al = (3N"."2N"· "4N) 60 20<cr>

This reads: "If input buffer 1 contains a string of three numbers, a


hyphen, two numbers, a hyphen, and four numbers, then to go to
the line that contains the statement label 20." Statement label 20 oc-
curs on line 11 of this PROC. If the pattern was not met, the next line
of this PROC is executed.

010+60 IO<cr>

This causes an unconditional transfer of control to the line that con-


tains the statement label 10. Statement label 10 occurs on line 3. This
causes the prompt for the social security number to be displayed again.

011+20 T (3,S),"YOUR ENTRY WAS",+<cr>

This causes the text, "YOUR ENTRY WAS," to be displayed at posi-


tion 3 of line 5, and leaves the cursor at the end of the text.

012+DI<cr>

This causes a display of the contents of input buffer 1, which con-


tains a social security number in a validated format.

013+X<cr>

This terminates the PROC, EXAMPLE4, and control returns to the


MENU PROC.

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

>ED PROCS EXAMPLE5<cr>


NEW ITEM
TOP
.I<cr>
001 +PQ<cr>
002 +C PATTERN MATCH AND PARAMETER MOVEMENT<cr>
003+10 RI<cr>
004+T (5,5),"ENTER BEGINNING DATE (FORMAT: NN/NN/NN) ",+<cr>
005+S1<cr>
006+IP: <cr>
007+IF # Al GO 10<cr>

This reads: "If input buffer 1 contains a null (or <cr», then go to
statement labella," which occurs on line 3.

008+IF Al # (ONIXONIXON) GO 10<cr>

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.

009+HSORT STAFF ItIITH DOB>=<cr>

This moves the text, SORT STAFF WITH DOB > =, to the primary
output buffer.

010+A"I<cr>

Earlier, we used a form of the A command to look into a location in


the primary input buffer. When the A command is the first command
on a PROC line, it has a different function. In this case, it causes a
move of the contents of the specified input buffer (1 in this case) to
the end of the output buffer. The double quote character causes the
PROC to surround the data with double quote marks. For example, if
you had entered the date 5/26/51, it would have been placed into
the primary input buffer as "5/26/51./1

SORT STAFF WITH ooB>="5/26/51"

This is how it looks after moving your input to the output buffer.

011 +H BY DOB NAME DOB AGE<cr>

This moves the text, BY DOB NAME DOB AGE, to end of the pri-
mary output buffer.
120 EXPLORING THE PICK OPERATING SYSTEM

012+H HEADING "'Le'STAFF REPORT - PAGE 'PL"'<cr>

This moves the text, HEADING" 'LCSTAFF REPORT - PAGE 'PL'," to


the end of the output buffer.

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

The only full-featured programming language provided with the PICK


System is the language called PICK/BASIC. It is distantly related to
the BASIC language developed at Dartmouth College. PICK/BASIC
actually has features of many of the most popular languages currently
available.

7.1 PICK/BASIC FEATURES

• A popular, easy-to-use programming language


• Fully integrated with the data base file-handling processes
• Has special data-handling instructions to aid application
development
• Uses security controls to protect the integrity of the data base
• Includes many powerful string-manipulation capabilities for values
and subvalues within attributes
• Supports interactive and batch programming
• Multiple output device specifications are supported
• Allows internal and external subroutine calls
• Many built-in intrinsic functions, including data conversion, string
and protocol conversion, and trigonometric functions

Preparing the BP File


A PICK/BASIC program is initially a data item in a PICK file, with at
least one program statement on each line. PICK/BASIC programs are
entered into the system via the EDITOR. (See Chapter 4 for
instructions on using the EDITOR process.)
121
122 EXPLORING THE PICK OPERATING SYSTEM

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.

The BP file is now recognized as a special class of file. The PICK/


BASIC source code is always stored in the DATA level of the file.
After compiling, the system stores the object code of the program
and places a pointer to it in the DICT level of the file.

Entering a Sample PICK/BASIC Program


Using the EDITOR, enter the following:

>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

015+ PRINT "TOO HIGH. TRY AGAIN" <cr>


016+END<cr>
017+GOTO 10<cr>
018+END<cr>
019+<cr>
.FI<cr>
'GUESS' FILED.

Compiling the PICK/BASIC Source Code


Prior to using the PICK/BASIC program, you must first translate it into
a machine-readable object code by use of the BASIC command.
This is accomplished in the following way:

>BASIC BP GUESS<cr>
******************

SUCCESSFUL COMPILE! 1 FRAMES USED.

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.

7.2 ACTIVATING PICK/BASIC PROGRAMS

There are two ways to execute a compiled PICK/BASIC program.


This first example shows the use of the RUN command:

The RUN Command


The RUN command locates, loads, and begins execution of the ob-
ject code generated during the compile process. Go ahead and play
the game. (It doesn't stop until you guess the number correctly, so
you may have to catch up to us later.)

>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

The CATALOG Command


The CATALOG command places a new verb (command) entry into
your MD. This allows the PICK/BASIC program to be executed by
simply entering the program name at the TCl command prompt.
Once a PICK/BASIC program is cataloged, it never needs to be cata-
loged again.

>CATALOG BP GUESS<cr>
'GUESS' CATALOGED.

This created the verb by which the program may be executed.

>GUESS<cr>
THIS IS A GUESSING GAME. I HAVE SELECTED A NUMBER BETWEEN
1,AND 100. TRY TO GUESS MY NUMBER
ENTER YOUR GUESS:

Once again, the code was located, loaded, and executed.

The DECATALOG Command


The DECATAlOG command has two functions: First, it deletes the
object code of the program, and then it removes the verb (catalog)
entry in your MD.

>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

8.1 THE TERMINAL CONTROL COMMANDS

One of the PICK System's features is portability; it is designed to run


on many different computers. As a result, there are several universal
commands for controlling peripheral devices. Two special commands
are provided with the PICK System to allow for handling different
types of CRTs on the system at the same time. Since each terminal
manufacturer uses different software in performing CRT functions
like "clear to end-of-line," special interface programs are embedded
in the PICK System.
Each type of terminal is stored in a table. When a special function is
requested, the system determines which type of terminal is in use,
then looks up in the table the appropriate signals to send to the CRT.
The TERM and SET-TERM commands are provided for this purpose.
These commands set the type-of-terminal parameter for a particular
port, or for the entire system.
In addition to the type of terminal, other parameters are set with
these commands, including the width and depth of both the CRT
and the printer. PICK uses these parameters to determine how many
lines of data to output on a device on each page.

The TERM and SET-TERM Commands


The TERM command changes the characteristics of the port from
which the command was issued. The SET-TERM command, by con-
trast, is used to establish the terminal and/or printer characteristics
for every port on the system. The characteristics defined with SET-

125
126 EXPLORING THE PICK OPERATING SYSTEM

TERM are automatically assigned to each user after logging on to the


system.
The general forms are:
> TERM term width, term depth, lineskip, Ifde/ay, ffde/ay, backspace,
printwidth, printdepth, term type {(R)}
or
>SET -TERM term width, term depth, lineskip, Ifde/ay, ffde/ay, back-
space, printwidth, printdepth, term type {(R)}
Each of the parameters has a special meaning, defined below. The
number to the left of the parameter indicates its position within the
TERM or SET-TERM command:

(1) termwidth The number of print positions (columns) per line, or


row, on the terminal
(2) termdepth The number of lines, or rows, on the terminal
(3) lineskip The number of blank lines at the bottom of each page
of screen output
(4) Ifdelay The number of delay characters (nulls) output to the
screen after a carriage return or linefeed
(5) ffdelay The number of delay characters (nulls) output to the
screen after a formfeed
(6) backspace The decimal number of ASCII character to echo to the
terminal when the backspace key is pressed
(7) printwidth The number of print positions (columns) per line (row)
on the printer output
(8) printdepth The number of lines (rows) per page on the printer
termtype Type of terminal for cursor control alphabetic charac-
ter code
(R) Optional "display results"

The parameter, "termtype," requires a little more explanation. The


terminal type codes are single, alphabetic character codes that nor-
mally coincide with the first character of the manufacturer's name. It
varies according to the PICK licensee, but some of the more general-
ly accepted terminal type codes are as follows:

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

Unlike the other parameters in the terminal characteristics, the term-


type parameter is alphabetic rather than numeric; consequently, it
may appear anywhere in the parameter list after the TERM or SET-
TERM command. However, SET-TERM does not affect the terminal
or printer characteristics for those users already logged on.
Note: Cursor control from PROC and PICK/BASIC is heavily depen-
dent on the setting of the terminal type parameter. If it is not set cor-
rectly, problems may result with X-Y coordinate addressing on the
screen. Change the type parameter and resume whatever process
was in effect.
Interrogating the Terminal Characteristics: A user can display the
current settings by entering the TERM command without parameters.

>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

Here are some examples of these powerful commands:

>SET-TERM , , , , , , 80, 60<cr>

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.

>TERM , , , , , , 132, 62<cr>

This changes the printer characteristics to 132 columns by 62 rows


and leaves all other settings intact.
128 EXPLORING THE PICK OPERATING SYSTEM

>TERM V79, 23 (R<cr>

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>

This establishes, for the entire system, a default terminal type of


Viewpoint.

8.2 MAGNETIC MEDIA COMMANDS

Each PICK System is capable of using magnetic media for backup.


Many PICK implementations now offer more than one form of back-
up magnetic media, including half-inch magnetic tape, quarter-inch
streaming cartridge tape, floppy diskettes, and removable hard disks.
(Note: PICK computers that offer multiple backup media, such as
floppy diskettes and quarter-inch streaming cartridges, typically have
implementation-specific verbs for indicating media choice prior to
attaching. This tutorial assumes that only one type of magnetic media
is in use.)
Before you begin this section, please obtain the appropriate type of
magnetic media for your system and load it on the appropriate back-
up device.

Attaching the Media to Your Terminal


Before anything can be done with the media, it must first be
attached, or assigned, to you. This is called "attaching" a device to
your terminal session, or process, and is accomplished via the T -ATT
(Tape Attach) command, as shown in the following example:

>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:

TAPE ATTACHED TO LINE linenumber

The linenumber is the port number of the process having the media
attached.

Detaching the Media from Your Process


Whenever you are finished with the media, it is advisable to detach
it from your process. This is accomplished with the T-DET command:

>T-DET<cr>

This command provides an option with which the media may be de-
tached from someone else's process:

>T-DET (U) <cr>

The U option unconditionally detaches the media unit, regardless of


who has it attached. It is better to check with the other user prior to
using this option, as it may adversely affect a process that user is cur-
rently performing.
When the T-DET command is attempted while the media is not at-
tached to your process, the following message is displayed:

[1147] NOT ATTACHED!

The Logical Structure of Media


The PICK System constructs magnetic media in two ways. The first of
these is referred to as a SAVE format, meaning that it was generated
with the SAVE command. This type is typically created with the FILE-
SAVE or ACCOUNT-SAVE procedures located in the SYSPROG ac-
count. The second type of media is called a T-DUMP. This can be
the contents of a single file or multiple files. Since SAVE media is
designed for use by PICK System processes, the T-DUMP format is
more commonly used for data. We will examine this format in this
tutorial. .
Each file on the media is preceded by a label. This 80-byte block
contains the following information.
130 EXPLORING THE PICK OPERATING SYSTEM

THE LABEL

L 2000 12:00:00 25 MAY 1985 BP 01

a b c d e f

The letters underneath the actual label define the function of each
section in the following way:

a The letter L indicates that this is a label


b The block size (in hexadecimal) at which the media was written
c The time and date at which it was written
d The filename from the process that created it
e An optional 37-character user-supplier message
The hexadecimal reel number, used when data requires more
than one tape or diskette

Positioning the Media to the Beginning


It is suggested that when creating magnetic media, you rewind the
media to its logical beginning position prior to any read or write
operation. This is accomplished with the T-REW command:

>T-RE\II<cr>

Moving a File Back


The T -BCK command backs up just past the previous mark on the
media.

>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).

Moving a File Forward


The T-FWD command moves the media forward to the beginning of
the next file.

>T-F\IID<cr>
[94] END OF FILE.
CONTROLLING PERIPHERALS 131

Moving to the End of Recorded Data


The T-EOD command is used for two purposes: to position to the
end of the recorded data, in order to write more data at the logical
end of the previous data, and to verify the integrity of the media. If
the command successfully reaches the end of the recorded data, it
usually means that no media errors have been encountered.

>T-EOD<cr>
BLOCK SIZE: blocksize
[92] END OF RECORDED DATA-n FILE(S)

The message "END OF RECORDED DATA-n FILE(S)" means that the


system has detected the logical end of the written area of the media
and that "n" files were found.

Reading the Media


The T-READ command provides a means of visually checking the
media to verify that the data in a particular file is the data desired.
The following steps illustrate the process of first writing, then reading
the media:

>T-ATT<cr>
TAPE ATTACHED BLOCK SIZE: 1000

In this example, the default block size is 1000.

>T-REW<cr>
BLOCK SIZE: 1000

This positions the media to the beginning.

>T-DUMP STAFF<cr>

BLOCK SIZE: 1000


1 102
2 105
3 100
4 106
5 103
6 101
7 104
7 ITEMS DUMPED.
132 EXPLORING THE PICK OPERATING SYSTEM

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

Now it may be read using the T-READ command:

>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.)

1 :102 ANICHOLSON, JACK A5 EASY PIECES ROASANTA MONICA A:


51 :CA A91343 A[105 AMOUSE, MICKEy A100 MAIN STREETAOISNEY:
101 :LAND ACA A91666 A[100 ASISK, JONATHAN E.ApOB 19274 AIRV:
151 :INEACAA92714A7147862211A[106AOUCK, OONALO A102 MAIN:
201 : STREETAOISNEYLANDACAA91666A[l03AASTAIRE, FREOA22 :
251 :TAPPING LANEAMINNEAPOLISAMNA40088A[101ABRANDO, MAR:
301 :LON A 1444 BLUEBIRD WAyAHOLLYWOOOACAA92662A[104AREAG:
351 :AN, RON A1600 PENNSYLVANIA AVE AWASHINGTON A OC A20001 A :
401 : LX [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
451 : [ [ [ [ [ [ [ [ [[ [[ [[ [ [ [ [ [ [ [ [ [ [[ [ [ [ [ [ [ [[ [ [ [ [ [ [[ [[ [[ [ [ [ [ [ [:
501 : [ [ [ [I [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
551 : [[ [[ [[ [[ [[ [[ [[ [[ [[ [ [[ [[ [ [[ [[ [ [ [[[ [[[ [[ [[ [[ [[ [[ [[ [[:
601 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ :
651 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
701 : [ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [[ [ [[ [ [[ [[ [[ [[ [[ [[ [[ [[ [[ [ [[:
751 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
801 : [ [ [ [ [ [[ [ [[ [[ [[ [ [[ [[ [ [ [ [[ [ [ [[ [ [ [ [ [ [ [ [ [ [[ [ [ [ [ [[ [ [ [[ [:
851 : [ [ [ [ [ [ [ [ ([ [ [ [ ([ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ :
901 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:
951 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [:

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 : [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [[ [ [ [ [ [ [ [ [ [ [ [ [[ [ [ [ [ [ [ [ [ [ [ [ [ [:

[94] END OF FILE

This message means that the end of file mark has been encountered.
Once again, the media is positioned to its logical ending point.

Reading the Media Label


The T-RDLBL (Tape Read Label) command reads and displays the 80-
byte tape label. This may be accomplished as follows:

>T-RE\tI<cr>
BLOCK SIZE: 1000

>T-RDLBL<cr>
BLOCK SIZE: 1000
L 03E8 12:00:00 26 MAY 1985 STAFF 01

Completing the Session


The commands shown in this section permit the controlling of media.
Again, once you are done, remove the magnetic media and detach
the device from your process.

>T-DET<cr>
134 EXPLORING THE PICK OPERATING SYSTEM

8.3 THE SPOOLER


The spooler is a process that runs constantly as a "phantom" process,
not associated with any terminal. Its primary function is to control the
output of data to printers, although it can be used to output to tape.
Some other features are listed below.
• Increases printer productivity in multi-user and/or multi-printer
environments
• Allows unrestricted generation of reports regardless of whether or
not a printer is available
• Allows jobs requiring special forms to be automatically routed to
the printer in which the forms are mounted
• Allows the simultaneous management of up to 125 different forms
• Allows print files to be sent to printers or magnetic media
• Allows the use of up to four parallel and sixteen serial printers

The spooler is always established as the last process on the system.


To avoid using up one of the terminal ports, the spooler is started on
the line after the last physical port (e.g., if the system has eight ports,
numbered 0 through 7, the spooler will be on line 8).

Types of Spooler Entries


Every report that is directed to a printer passes through the spooler.
The spooler records the report on disk until it can be "de-spooled" to
the appropriate device. While the report is in this temporary disk
storage, it is referred to as a spooler entry. There are two types of
spooler entries:
Normal (Default) Entry: The normal entry is one in which the report
is held by the spooler until it has completely de-spooled to the prop-
er device, at which time the space that it occupied is returned to the
overflow table.

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.

8.4 SPOOLER CONTROL COMMANDS


The first spooler control commands are typically limited to access
from the SYSPROG account only, due to their rather destructive
side-effects.
CONTROLLING PERIPHERALS 135

:STARTSPOOlER (Restarting the Spooler)


This command is automatically' ;ued during the PICK COLD-START
process. This procedure is used when the system is initially started on
a particular computer.
The effect of the command is that it brings the spooler back to a nor-
mal state of operation. The reason that this is destructive is that it is
also available as a TCl command that can be issued with options, as
we will shortly see.
When the :STARTSPOOlER command is issued by itself (with no op-
tions), it restarts the spooler and retains all of the spooler entries in
the queue. The options provided with the command are a last resort
because they cause the spooler queue to be initialized, losing all of
the previous spooler entries. This wouldn't be so bad if it were not
for the fact that none of the overflow space used by the lost spooler
entries is returned to the overflow table. So, use with caution.
In its normal (nondestructive) form, the command functions as
follows:

> : STARTSPOOLER<cr>
SPOOLER STARTED.

As a last resort, to clear the entries from the spooler queue, use the I
option:

> : STARTS POOLER I<cr>

ST ARTPTR (Starting Printers)


The PICK System handles two types of printers: serial and parallel. All
systems can support serial printers through the RS-232C interfaces
provided for the CRTs. Special hardware can be installed on some
PICK Systems to support parallel printers.
Regardless of the type of printer being used, the command is the
same to get them started. Starting a printer requires five parameters,
as illustrated in the following format for the STARTPTR command:

>STARTPTR printer#,formqueue#, #eject pages/type address <cr>

The terms have the following meanings:

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

commands refer to the printer number (the first parameter), while


others refer to the form queue number. We suggest that to avoid
confusion, the form queue number should be the same as the
printer number.
#eject pages This parameter tells the spooler how many blank pages
to eject on the device prior to printing. Note: ACCESS automati-
cally issues a form feed (blank page) prior to beginning a print job.
This parameter most often is a (zero).
type address The last two parameters in the string specify the type of
printer (P for parallel or S for serial), immediately followed by the
address or the port number. The address depends on the type of
printer. If parallel, it is likely to be the first (or perhaps only) paral-
lel printer, and as such would have a physical address of 1 (one).
Serial printers, on the other hand, are attached to RS-232 ports,
just like terminals. In the case of serial printers, the address would
be the actual port number.

The following examples illustrate the ST ARTPTR command:

>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>

This starts serial printer a as printer number a (on form queue 0) on


port 2, skipping a pages between output.

LlSTPEQS (Displaying Spooler Entries)


The LlSTPEQS (List Printer Element Queues) command provides a
display of all spooler-controlled entries. Most likely there are no en-
tries currently in the spooler, so we will place one there for use by
this command.
First, adjust your spooler assignment to hold file output. (This is dis-
cussed later in more detail under the SP-ASSIGN command.)

>SP-ASSIGN HS<cr>

Now, send an entry to the spooler:

>BLOCK-PRINT HI THERE (P) <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>

Now we can issue the LlSTPEQS command to interrogate the


spooler:

>LISTPEQS<cr>

PRINTER LIST ELEMENTS 07 NOV 1984 09:30:34

# STAT LK LN STATUSES CP FO FRMS DATE TIME ACCT

1 8880 oH C 1 0 12 OS/26/85 12:00:00 CLASS

1 QUEUE ELEMENTS. 12 FRAMES IN USE.

The columns have the following meanings:


# The job number assigned by spooler, typically the next high-
er number than the last entry.
STAT The status of the entry; redundant, since a more descriptive
status follows three columns later.
LK The linkage order of the print jobs or spooling sequence,
which contains the number of the next job that will print
when this report is completed. Since it is not enqueued for
output, there is no linkage.
LN The line (port number) from which the job was generated.
STATUSES The status codes for the entry, which have the following
meanings:
A Available.
C Closed; while entries are being sent to the spooler, they
are considered open until the process completes. Once
turned over to the spooler, they are closed and may
now be processed.
H Hold file; indicates that the entry is a hold file.
Immediate; means that the entry was assigned immedi-
ate priority. This is discussed later under the SP-ASSIGN
command.
L Locked; while an entry is waiting to be output, it is
locked by the spooler so that it becomes inaccessible.
138 EXPLORING THE PICK OPERATING SYSTEM

N No close; a result of the SP-OPEN command, meaning


that multiple print reports are to share the same entry
number.
o Currently being output; indicates the report that is cur-
rently being printed.
P Printer; assigned for printer output.
R Requested; means that the entry has previously been
accessed.
S Spooled.
T Tape; indicates that the entry is destined for the mag-
netic media as its output device.
X Aborted; indicated that the entry has been aborted via
the SP-KILL command.
CP The number of copies remaining to spool; changes dynamically
as copies are printed.
FO The form queue to which the output is assigned.
FRMS The total number of frames used by the entry.
DATE/TIME The date and time the entry was created.
ACCT The account name from which the entry was created.

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.

LlSTPTR (Displaying the Printers)


The LlSTPTR command displays the current data relating to printers
on the system, as in the following example:

> LISTPTR <cr>

PRINTER ASSIGNMENTS 12:00:00

PRINTER OUTPUT QUEUES PAGE DEV OR STATUS


TYPE NUMBER SKIP LINE #

SERIAL o o o 2 INACTIVE

The columns have the following meanings:


PRINTER TYPE Either serial or parallel.
NUMBER The printer number assigned.
CONTROLLING PERIPHERALS 139

OUTPUT QUEUES The form queue number assigned.


PAGE SKIP The number of pages to eject between reports.
DEV OR LINE # The physical address for parallel or port
number for serial.
STATUS The current state of the device.

LIST ABS (Displaying Current Spooler Assignments)


Every report directed to the spooler relies on the spooler assignment
specified during the SP-ASSIGN command. The LlSTABS command is
useful for determining the current output routing specification for
every port on the machine:

>LISTABS<cr>
LINE STATUS COP FORM
# IES #

0 H 1 0
1 0 0
2 0 0

The meanings of the columns:


LINE # The port number.
STATUS The current spooler assignment options.
COPIES The number of copies requested.
FORM # The form queue to which output is routed.

SP-STA TUS (Displaying the Spooler Status)


The SP-ST A TUS command provides a display of the current state of
the spooler and the spooler-controlled devices:

>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.

SP-ASSIGN (Changing Spooler Assignment)


The SP-ASSIGN command is probably the single most important
command related to the spooler. It indicates how output is to be
140 EXPLORING THE PICK OPERATING SYSTEM

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.

OPTIONS FOR SP-ASSIGN


When you first log onto the system, your options are typically set to
default. That is, output is to be directed to printer number 0, form
queue number 0, 1 copy, and 0 eject pages.
The SP-ASSIGN command, when issued by itself, resets the output
routing specifications back to this default state, which is required
prior to using the SP-EDIT command to spool reports in the spooler.

>SP-ASSIGN<cr>

This sets the output routing specifications to default.

Specifying the Number of Copies: Any integer number in the range 0


to 125 may be supplied with the SP-ASSIGN command to indicate
the number of copies to be produced. The default number of copies
is always 1. When presented to the system, this must be the first op-
tion in the string.

>SP-ASSIGN 2<cr>

This indicates that 2 copies of every report are to be produced when


output is routed to the spooler from your process.

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>

LINE STATUS COP FORM


# IES #
op 2 o

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>

LINE STATUS COP FORM


# IES #
o PIC o
The F Option: Earlier, the concept of form queues was discussed. Es-
sentially, the form queue number is the same as the printer number,
typically seen in systems having multiple printers.
The F option directs output to a specific form queue number, and
has the general form: formqueue#, as illustrated in the following
example:

>SP-ASSIGN FI? <cr>

LINE STATUS COP FORM


# IES #
oP
The H Option: The H option directs output to hold files, meaning
that a semipermanent entry is placed into the spooler to be held until
it is manually removed. Note that this does not suppress printing-if
the H option is used by itself, it will produce at least one copy on the
printer and create the spooler entry-hence, the S option normally
accompanies the H option.

>SP-ASSIGN HS?<cr>

LINE STATUS COP FORM


# IES #
oH 1 o
Note: Even though the S option is stripped from the STATUS display
in the resulting setting, fear not-it took hold.
The I Option: The I option indicates immediate (or instant) print out-
put. This greedy option tells the spooler to attach the printer and
begin output as soon as the first frame of output is ready. This fre-
quently is counterproductive, since the spooling process ties up the
device both while the report is being generated and while it is print-
ing, rather than just while it is printing.

>SP-ASSIGN I?<cr>

LINE STATUS COP FORM


# IES #
o PI o
142 EXPLORING THE PICK OPERATING SYSTEM

The S Option: The S option suppresses printing on system printer. Its


purpose is to prevent printing a report that is simultaneously directed
to a hold file or to magnetic media. See the H option above.

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>

TAPE ATTACHED BLOCK SIZE: default block size

LINE STATUS COP FORM


# IES #

OT 1 o

Combining Multiple Options: The following examples offer ways in


which more than one option may be used simultaneously:

>SP-ASSIGN 2Fl?<cr>

LINE STATUS COP FORM


# IES #

oP 2 1

This requested 2 copies to form queue 1.

>SP-ASSIGN 3FIHS?<cr>
LINE STATUS COP FORM
# IES #

o H 3 1

This requested 3 copies to go to a hold file in form queue 1 with im-


mediate printing suppressed.

SP-EDIT (Accessing Spooler Entries)


Once hold entries have been placed in the spooler queue, they may
be processed with the SP-EDIT command.
There are many forms of this command, in that many options are
provided that may be used from TCL. These are discussed later.
CONTROLLING PERIPHERALS 143

In its simplest form, the SP-EDIT command produces a series of


prompts for processing each spooler entry generated from the cur-
rent account.

OPTIONS FOR SP·EDIT


To cover the prompt sequences adequately, let's put another entry in
the spooler for the following examples:

>SP·ASSIGN HS?<cr>

LINE STATUS COP FORM


# IES #

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:

>BLOCK-PRINT SPOOL TEST (P) <cr>

HOLD ENTRY # 2

Issuing the SP-EDIT command by itself allows a sequential access to


each entry generated from your current account. Follow along
through the prompt sequence that appears on the screen:

>SP·EDIT<cr>

ENTRY # 1
DISPLAY (Y/N/S/D/X/(CR»?-

These options have the following meanings:


Y Displays the first frame (500 bytes) of the entry. After the dis-
play, control transfers to the STRI NG prompt.
N Transfers control to the STRING prompt.
S Transfers control to the SPOOL prompt.
o Transfers control to the DELETE prompt.
X Transfers control directly to TCL.
(CR) Transfers control to the next spooler entry or to Tel if no more
entries are present.
144 EXPLORING THE PICK OPERATING SYSTEM

Let's test the Y (display first frame) function:

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

TTTTTTTT HH HH EEEEEE RRRRRR EEEEEE


TT HH HH EE RR RR EE
TT HH HH EE RR RR EE

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)?-

The SPOOL prompt has the following functions:


Y Enqueues the report for output to the device.
N (or <cr» Transfers control to the DELETE prompt.
T Spools the report to the terminal screen in PAGE mode, requir-
ing a <cr> at the end of each page. When the report ends or a
<ctl>X is issued, control returns to the SPOOL prompt.
TN Spools the report to the terminal screen in NOPAGE mode.
When completed, control returns to the SPOOL prompt.
F Spools the report to a data file in print image. The spooler will
prompt for a file and an item-id.

SP-KILL (Stopping Spooler Output)


The SP-KILL command is used to stop a report currently being output
to a device.
CONTROLLING PERIPHERALS 145

With the 0 option, it is used to remove printers from the system.


When these printers are serial, it returns the port to which they were
attached back to a normal state where they may be used again by a
terminal. Some examples follow:
>SP-KILL Stops output of specified spooler entries, or currently
active job.
>SP-KILL D1 Removes printer 1 and returns the port to an avail-
able status.
>SP-KILL 1 Stops output on printer 1
>SP-KILL OF2 Stops output of entry 2 and returns entry to available
hold fi Ie status.

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

9.1 VIRTUAL MEMORY AND THE LOGICAL COMPUTER

Nothing as powerful as the PICK System can be as simple as it ap-


pears to be. The TCl surface, ACCESS, and the PROC and PICK/
BASIC levels are supported by some complex processes within the
operating system. Down in the core of the PICK world, these com-
plex processes are continuously running. Their function is to main-
tain the PICK world so that the user is insulated from the hardware
and the system; they allow the user to concentrate on the work at
hand instead of the computer. As we discussed in Chapter 2, the
PICK System relieves the user of file and disk space management
through the virtual memory management software. It creates a kind
of computer within the computer.

The PICK System Virtual Memory Management


The term "virtual memory management" means that there is more
room on the inside than on the outside. It is a technique for expand-
ing real or main computer memory through the use of disk space.
The PICK System has taken this technique to its limit. Every user and
every program operates in a virtual workspace. Here it seems as if
the system is composed of only one giant working memory, totally
dedicated to the task at hand. There is no apparent overhead for the
disk or peripherals in the programs, and there is little contention for
the CPU or the data files. Each user seems to be performing his work
independently on a personal computer within the real system. Mean-
while, the operating system is performing all the real work, handling
the multiple users' needs for the CPU, the memory, and the disk. It
does this by establishing and managing small pieces of the virtual
computer, called frames.
146
CORE PROCESSES 147

REAL COMPUTER LOGICAL COMPUTER

~/'--------('/
VIRTUAL
DISK WORKSPACE

Programs and data are stored on Virtual workspace functions


the disk and copied into main as if the entire computer is
memory on the programmer's composed of RAM, with all the
instructions. The amount of programs and data files in
RAM dictates the size of main memory at the same time.
programs and the amount of
data that can be processed.

The Frame and Frame-Id Concept


Within the PICK System, all disk space is divided into 512-byte sec-
tors called frames. On most computers with PICK installed, the disk
controller is set to retrieve 512 bytes, or one frame at a time. Each
frame has a specific frame-id or FI D by which the frame can be refer-
enced. It maps, or converts, FIDs into the appropriate physical ad-
dress for the disk controller hardware. Mapping involves calculating a
disk drive, track, and sector so the disk controller can position the
disk heads to access the frame.

FRAME

RAM
PAGED
IN
DISK

USED
FRAME

FLUSHED
OUT

Only the virtual memory management software and a small portion


of the PICK Operating System are in main memory continuously. The
virtual memory software uses a large part of the main memory space
for storage of frames transferred from the disk. When the system or a
148 EXPLORING THE PICK OPERATING SYSTEM

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

RIMARY RIMARY OVERFLOW


FRAMES FRAMES FRAMES
(linkages (explicitly
implied) linked together)
CORE PROCESSES 149

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.

The Structure of the Virtual Workspace


Because all real memory and all disk space is under the control of the
virtual memory software, the PICK System has been termed a virtual
machine or the logical computer. When the system is powered up,
the operating system establishes a virtual workspace consisting of all
the real memory and all the disk memory. The virtual workspace is
always separated into the same logical areas, although the size of
each area varies according to the particular computer.

MAX-FlO

VIRTUAL 100-127 PER PORT


WORKSPACE 32 FOR EACH PORT
DATA AREA
512-1024 (VARIES)
PROCESS WORKSPACE 400

PCBs
o
USER ABS

ABS 1
FRAME-IDS
150 EXPLORING THE PICK OPERATING SYSTEM

THE ABS AREA

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.

THE USER ABS AREA


Frames between 400 and somewhere between 512 and 1023 are re-
served for the user. This is the area in which the user who chooses to
use PICK Assembly Language programs can store the assembled ob-
ject code. This area varies in size according to how the PICK System
is implemented by the particular manufacturer, and ranges from 112
to 624 frames.
Note: The ABS frames are 2048 bytes each, as required by the way
PICK is implemented on most machines these days. The rest of the
frames in the PICK System are all 512 bytes each.

THE PCB AREA


The next area in the logical computer is the PCB, or Process Control
Block workspace. Here, 32 frames of virtual memory are reserved for
each port on the system. A port can be a physical terminal
connection, or a printer, or even a non-physical phantom port estab-
lished by a switch setting on the CPU board. (Such phantom ports
are used for background processing on a PICK computer.) Each 32-
frame section is called a PCB and is used to store all the status and
control flags used by the PICK System to manage the port's activity.

THE PROCESS WORKSPACE AREA


The next area established in virtual workspace is called the process
workspace. Once again, frames are allocated to each port, up to the
number of ports configured on the system. Each port is allocated
three sets of frames called the Input Storage (IS), Output Storage
(OS) and History Storage (HS) work areas. The size of each area is set
and adjustable only by the manufacturer. Historically, the size of
each workspace has been fixed between 100 and 127 frames per
area. Under Open Architecture (discussed in Section 11.5), fixed
works paces will disappear, as workspace will be allocated as needed.
If you should hear someone refer to "low disk" on a PICK System,
that's the process workspace.
CORE PROCESSES 151

THE USER (OR DATA) AREA


Following the process workspace area are the user data frames,
which extend to the end of the disk area or MAX-FlO (maximum
addressable frame-id). The first file in the user data workspace is the
SYSTEM file. Although this is simply a system-level file, it is always
the first file in virtual memory, as it is the file used to define where all
MO's reside on the system.
That concludes our thumbnail sketch of the virtual workspace. The
FID for each section of the virtual workspace described above can
be displayed on the screen using the WHAT command from TCl.
With a little information about the computer that is running the sys-
tem, these frame-ids may also be calculated.
This calculation is based on the Motorola MC68000 implementation
of the PICK System, since it seems to be the most widespread, but
the principle applies to all PICK implementations.
First in the virtual workspace are the ABS frames, beginning at frame o.
ABS Frames. 400 (fixed on all PICK Systems to date)
User ABS Frames. 624 (varies by implementation, 624 on the
MC68000)
Using this example, the beginning of the primary workspace (the
PCB for Port 0) is calculated from frame 0 to be 399 + 624 + 1 or
frame 1024.
Next, the PCB area is 32 frames long for each port on the system. On
a 12-port system, the area is 12 * 32 or 384 frames long. This means
that the process workspace area begins at frame 1024 + 384 + 1 or
1409.
Next comes the allocation to each port/user process workspace,
which varies by implementation. We'll use 127 frames, which is the
allocation on most of the MC68000 versions of the PICK System.

FRAMES FUNCTION

127 IS (Input Storage workspace)


127 OS (Output Storage workspace)
127 HS (History Storage workspace)

381 Total frames per port/terminal/process

So, for a 12-port PICK System, the process workspace is 381 * 12 or


4572 frames long. The first frame of the user area can be calculated
as follows:
152 EXPLORING THE PICK OPERATING SYSTEM

400 PICK System ABS frames


+ 624 User ABS frames
+ 384 PCB Area (32 frames * 12 ports
+4572 Process workspace area (381 frames * 12 ports)
5980 = Base FID of the SYSTEM File

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.

9.2 FRAMES AND ITEM STRUCTURE


Now we'll look closely at one of the PICK virtual frames, the funda-
mental buil'ding blocks of the PICK world. A frame is a logical, non-
physical collection of bytes. It is part of the virtual workspace, a com-
ponent of the logical computer. It is the virtual representation of a
physical string of data. The physical frame is a disk sector, one con-
tiguous string of bits on a circular track on one of the disk surfaces. In
PICK Systems, the sectors and the logical frames for the storage of
data are 51 2 bytes.
The first 12 bytes of each frame comprise a reserved area called the
linkage fields. The linkage fields contain information about how the
frame is attached to the other frames in the file.

Format of the Linkage Field


The forward link is the frame-id of the next logically attached frame.
It is always zero unless the first frame in the group has overflowed
and extra frames have been attached. The forward link from the last
frame in the group is always zero.
NNCF stands for the Number of Next Contiguous Frames. This is
zero unless the separation parameter is greater than 1. (See Chapter
3 for a discussion of file modulo and separation parameters.)

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

The backward link is the frame-id of the previous logically attached


frame. The first frame in a group always has a backward linkage of zero.
NPCF stands for the Number of Previous Contiguous Frames. Like
the NNCF, this is used only with a separation parameter greater than 1.
The best way to describe a PICK virtual frame is to examine one. For-
tunately, the PICK System itself contains tools for accessing and dis-
playing frames in an easy-to-read format. The DUMP command from
154 EXPLORING THE PICK OPERATING SYSTEM

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>

FlD 34080 o o o o 8520 : 0 o 0 0)

1 :003F100 AJES & Associates, lnc.Ap.O. Box 19274 Alrvi:


51 :ne"'CA .... 92714 A _ a • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • :
101 · .................................................. ..
151 ·· .................................................. .
201
251
..................................................
· .................................................. .
301 ·.................................................. ..
351 · ..................................................
401 · .................................................. .
451 · .................................................. .

The DUMP command accesses frames by their frame-id and displays


them as shown above. The first line is the deciphered linkage infor-
mation. It contains the FID and the four linkage fields, in decimal
format. The same information is displayed in parentheses in hexadec-
imal format. This information indicates that the frame-id is 34080 (or
hex 8520), and that the frame is part of a contiguous set of frames;
the zeros in forward link and backward link are used by the virtual
memory software to indicate that this frame is currently not
connected to any other frames. Since the number of next and previ-
ous contiguous frames are both zero, it can be assumed that the sep-
aration parameter for this file is 1.
The frame itself is displayed in ASCII format, 50 bytes at a time,
between the colons (which are not part of the data). To the left of
each line is a line number. This number is sometimes called the dis-
placement of the byte into the frame, but the user is reminded to
add 12 to this number to calculate the correct displacement. Al-
though the first byte of this frame appears to have data in it, when
the frame is stored on disk in memory, the first 12 bytes of the frame
hold the linkage data.
Note: The display used for this example is the result of the DUMP
command on the MC68000 version of the PICK System, but all other
implementations are very similar.
Our example frame has one item in it. Displayed as a string, the item
looks like this:
CORE PROCESSES 155

003FIOO/\JES & Associates, Inc. /\P.O. Box 19274/\Irvine/\CA/\92714/\_

Here is what each of these characters means to the virtual memory


software:
003F Hexadecimal byte count field, decimal 63
100 Attribute 0, or the item-id
A Attribute mark
JES & Associates, Inc. Attribute 001
A Attribute mark
P.O. Box 19274 Attribute 002
A Attribute mark
Irvine Attribute 003
A Attribute mark
CA Attribute 004
/\ Attribute mark
92714 Attribute 005
A_ Item terminator, combination of an attribute mark and a segment
mark
_ Group terminator, a second segment mark

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>

FID 34080 o o o o 8520 : 0 o 0 0)


1 :003F100 AJES & Associates, Inc.Ap.O. Box 19274 A lrvi:
51 :ne A CA A 92714 A _0042102 A Automatic Programming, Inc. A 3:
101 :2 Esp1anade A lrvine A CA A 92715 A _ _ • • • • • • • • • • • • • • • • • • • • :
151
201
·· ..................................................
.................................................. ..
251 · .................................................. .
301 · .................................................. .
351 · .................................................. .
401 ·.................................................. .
451 · .................................................. .
Now we have toured the major PICK processes, discussed the sys-
tem terminology, and examined one of the data frames. These frames
are used to store all the user's data and programs. The ABS frames at
the beginning of the virtual memory space are slightly different in
format but handled the same.

9.3 ABS AND THE MONITOR


Most of the time in the PICK world, we are not directly aware of the
inner levels where the operating system resides. The windows creat-
ed by the EDITOR reach into the data files, just below the PICK/
BASIC level. Only the System Debugger can open a channel into the
PICK world's core-the ABS frames. We get a glimpse of the ABS
area whenever we press the BREAK key and activate the Debugger.
Occasionally, one will observe the technician using this powerful
tool to examine part of the system, and perhaps to change a byte or
two. However, none but the experienced PICK Assembly Language
programmer dares to venture too far into the ABS frames. They are
the domain of the monitor, a complex and powerful processor that
supports all the levels above.
The PICK monitor is the single most significant feature of the PICK
Operating System. It is called the system's kernel or central program-
a set of software utilities that are always resident and running in real
memory when the PICK System is operating. It is this software that si-
multaneously makes the PICK System functional, and yet ensures
portability.
CORE PROCESSES 157

Functions of the Monitor


The monitor makes the system functional by providing the services
that a multi-user, multi-tasking operating system requires. It is also
the location of the virtual memory management software, which pro-
vides the relational data base structure, and the unique PICK access-
ing methods. Some of the main functions of the monitor are listed here.

• Maintains control of the computer's main memory, including the


memory-resident tables used by the virtual memory software
• Maintains and controls the virtual memory works paces
• Provides central control of multiple-user accesses
• Maintains the status of each user/port/process in the reserved
areas known as the Primary Control Blocks
• Schedules, activates, and suspends user and system processes
• Controls all input and output to the peripherals
• Maintains and controls the system software clock

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

Corelocked. Permanently locked in main memory


I/O Busy. In process of transferring data from disk to main memory
Write Required. Scheduled to be written to disk
Available. Ready for use

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

nique is called "bubbling up" the process queue and is incorporated


so that interactive processes (such as data entry tasks) do not suffer
when another user initiates a heavily disk-intensive task, such as an
ACCESS report. So, increasing or decreasing the priority of a particu-
lar port in the cycle by means of an external command is not
necessary.
The load on a PICK System is automatically balanced. Users can aid
the balancing by establishing a schedule for different types of work.
Interactive processes retrieving one or two records at a time tend not
to be resource-consuming and can be run simultaneously with little
or no impact on the system. Interactive processes, however, can be
adversely affected if batch processes are occurring. As a general rule,
batch process requiring sorts and selections of large files should be
run when few other processes are active, to ensure that the batch
processes get as much CPU activity as possible.
But the most striking aspect of the PICK monitor is its own efficiency.
On the majority of the PICK software implementations, the entire
monitor occupies only about 32K, plus about another 32K for the
Hash Address Table and the Buffer Status Table, which always re-
main in main memory. On a firmware-based PICK implementation,
where much of the system is micro-coded on the CPU processor
chip, the entire monitor fits in about 8K of main memory. The major-
ity of PICK Systems in use today are software implementations. The
only firmware implementations are the Microdata REALITY and Se-
quel, the Honeywell Ultimate, and the Evolution.

9.4 COlDSTART AND THE PICK IPl PROCESS


The PICK world springs into existence each time the PICK computer
is powered up. The system is designed with its own IPL or Initial Pro-
gram Load process imbedded in the software. This is not an unusual
feature today in this era of personal computing, but it was practically
unheard of in the early 1970s. The PICK, from the beginning, was in-
tended for use by business professionals who only know how to turn
the system on and off.

The Coldstart Options


When the PICK System is powered on, the disk hardware executes a
bootstrap procedure stored on a reserved sector of the disk. The
bootstrap procedure includes checking the backup devices and load-
ing the system from tape if a backup copy is in place. Otherwise, the
160 EXPLORING THE PICK OPERATING SYSTEM

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:

X (Coldstart) This procedure links workspace and executes the


Cold-Start procedure described below.
F (Fileload) This option performs the same process as an X, but also
reloads the entire user (data) area of disk from the tape or diskette
backup device.
A (ABSload) This option performs the same processes as the Fileload
and the Coldstart, but the system also reloads the ABS area from
the tape or diskette backup device.

Note: On some implementations, such as the IBM PC-XT version of


PICK, options are not provided. Instead, the system automatically
coldstarts itself from disk. In such cases, options are typically only
provided when a SYS-GEN tape or diskette is mounted prior to pow-
ering up (or booting) the system.

The Coldstart Process


The exact sequence of events varies by manufacturer, but the PICK
System always creates a System Configuration Table containing the
following information:
• The total amount of disk, calculated and stored as the number of
frames, or MAX-FID (the maximum addressable frame-id)
• The number of (RS-232) ports or physical locations for processes
• The amount of real main memory (RAM)
• The number of ABS frames to be reserved for the system
• The addresses of all the physical peripheral devices

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

In most situations, it is not necessary to power down a computer run-


ning the PICK Operating System. The system is secure enough when
the users are all logged off, and the user and system data on the disk
is safe. If, however, the system is to be powered off, the user is ad-
vised to wait a few seconds after the last user logs off to allow time
for any write-required frames to be written out to disk. Many manu-
facturers have added power-fail protection to the PICK software that
will activate a sequence to flush these frames to disk and perform an
orderly shutdown so that when the system is brought back up, all
work continues where it left off.
CHAPTER

10
Applications: Putting the
Parts Together

10.1 APPLICATIONS USING THE PICK SYSTEM


PICK provides a user interface (TCl), a system editor (EDITOR), and
a data base retrieval language (ACCESS). An unusual aspect of the
operating system is that a complete data base application system can
be developed using only these intrinsic tools.
For example, let's assume that a user creates files from TCl (See Sec-
tion 3.4 on the CREATE-FilE Command). Data items in these files are
entered and edited with the system EDITOR. Dictionary entries are
created with the EDITOR, and used from TCl with the ACCESS com-
mands. Skillful use of the dictionaries can accomplish an astounding
amount of data processing for any user familiar with the ACCESS op-
tions. let's observe how such a system works.
A native data base application on the PICK System begins with a
good file design. Experienced PICK users design segregated data
files, with a file for unchanging data, such as names and addresses,
and separate files for frequently updated data and transaction items.
This approach makes both files simple enough to maintain with the
EDITOR.
These simple files can support complex processing requirements.
Using the translation function in the dictionary entries, static data like
name and address can be "logically" linked into a data item by trans-
lation of a code, like customer number. For example, a file of sales
transactions might contain only date, amount, and customer number.
These transactions can easily be sorted by the customer last name,
which is stored in another file under the customer number. All that is

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

required is an item in the dictionary of the transaction file that de-


fines a "CUSTOMER-LAST-NAME" as a translation of the customer
number into the last word in the NAME attribute of the customer
name and address file. In most data base systems, this process would
require an index or a temporary file combining the data, as well as
several utility programs. In PICK, it requires only a simple ACCESS
command from TCL.
With a minor EDIT of the transaction file dictionary, the same trans-
actions could be selected and sorted by state. An item called
"STATE.NAME" in the transaction file dictionary can define an imagi-
nary field as a translation of the customer number through the ad-
dress file into a ZIP code, with a second translation through a ZIP
code file to the state abbreviation, and a third translation through the
state file for the full state name. After the dictionary definition is cre-
ated, the imaginary STATE.NAME field appears to reside in the trans-
action file; it is said to be part of the logical view of the transaction data.
But the real magic is in the algebraic functions. They provide nearly
unlimited processing power to ACCESS. These specifications in a dic-
tionary item can perform complex mathematics, conversions, even
table look-ups and output formatting. Combined with the BREAK-
ON and TOTAL options available in ACCESS, the "N' correlative can
even perform math on summation fields that only exist when the
output is created, such as an average of the items in a control-break
subtotal. When applied to multivalued attributes, the algebraic speci-
164 EXPLORING THE PICK OPERATING SYSTEM

STEP 1
1+---- ATTRIBUTE
DEFINITIONS
STEP 4
OUTPUT
STEP 2
DATA

OUTPUT
REPORTS
STEP 3
CODES

DATA

fication is applied to each value in the attribute individually, and the


results can be used separately or summed. (See Appendix E, "Con-
version/Correlative Reference," for a complete list of algebraic
functions.)
A data base application system using only the EDITOR and ACCESS
is not unusual in the PICK world. Sophisticated PICK users often use
the native PICK processors just for the sheer simplicity and time sav-
ing. For the experienced PICK user or the technician, native PICK
processes can provide unlimited logical views of the data as required,
with very little initial development effort. These are users in the PICK
world who rarely leave the TCl level.
On the other hand, there are many who take the EDITOR window
down to the PROC and PICK/BASIC programming level. These users
combine the TCl power with the flexibility available down in the
PICK program levels. We'll examine the PROC and PICK/BASIC ap-
plications next.

10.2 PROC AND PICK/BASIC APPLICATIONS

The majority of application systems on the PICK world use PROC


and PICK/BASIC. These applications are planted like factories on the
PICK TCl surface; they are activated by PROCs embedded in TCl
ApPLICATIONS: PUTTING THE PARTS TOGETHER 165

and driven by programs down on the PICK/BASIC level. The PICK/


BASIC programs read files, accept input from operators and peripher-
al devices, update files, and activate PROCs up on the TCl level.
There are hundreds of software packages available in this language.
The abundance of PICK/BASIC application systems is appropriate,
since the PICK Operating System was designed as an environment
for PICK/BASIC applications. There are special features in TCl de-
signed for facilitating PICK/BASIC, such as PROC, the ACCESS
"SELECT" feature, and cataloging of PICK/BASIC programs and sub-
routines. The TCl level also has an interesting feature for activating
application software: the logon PROC.
Whenever a user logs on to the PICK Operating System, the logon
process is activated. It establishes the user's Process Control Block
and activates TCL. Before prompting the user with the ">" symbol,
the system searches for a PROC in the user's MO that has exactly the
same name as the user's logon 10, or account name. This PROC is
called the "logon" PROC. TCl always passes control to the logon
PROC before passing control to the user.

LOGON
PROCESS

(reentrant)

(recursive)

This handy feature is especially useful for PROC and PICK/BASIC


applications. It means that as soon as a user logs on, a predefined
PROC will take control. The most common logon PROC is a user
menu, prompting the user for the PROC, PICK/BASIC, or ACCESS
processes to activate. When the user selects one of the available op-
tions, the menu PROC branches to an internal or external PROC sub-
166 EXPLORING THE PICK OPERATING SYSTEM

routine, or assembles a TCl statement in the primary output buffer.


This statement is passed to TCl, which executes the statement exact-
ly as if the user keyed it on the CRT screen.
In most application systems, the TCl statement is a RUN statement
for a BASIC program, or the program name for a cataloged PICK/
BASIC program. (See Chapter 7.) PICK/BASIC programs are used to
format screens, prompt the operator for input or update information,
and create or change data files. Other PICK/BASIC programs might
start batch processes that read or update files. Still other PICK/BASIC
processes may read data files and print output such as mailings or
invoices.
PICK/BASIC programs have a number of features inherent to the
PICK Operating System. File input and output occurs under the con-
trol of the PICK monitor. That means that the data base management
functions are made available to the PICK/BASIC program. PICK pro-
vides some very special input, output, and string-handling commands
as a result. However, the most powerful feature of PICK/BASIC is the
ability to call internal and external subroutines, which can in turn call
themselves or the original program an unlimited number of times.
PICK/BASIC application systems are usually composed of many small
PICK/BASIC programs and subroutines, easily programmed and
maintained.
The PROC that starts the PICK/BASIC program or the ACCESS proc-
ess retains control after the process terminates successfully. Menu
PROCs usually loop back to the top and redisplay the menu. One of
the options on most menus will allow the user to leave the system.
When selected, the menu PROC passes the OFF command to TCL.
For an example of a menu PROC, see Chapter 6.

10.3 APPLICATION GENERATOR SYSTEMS


Application generator software is becoming increasingly popular in
commercial software markets, and the PICK world is no exception.
Section 11.3 discusses this in more detail.
There are two distinct types of application generator software in use
on PICK Systems today. The first type is the code generator, designed
to create PROC or PICK/BASIC code that can be handled by the
standard PICK processes. This type of application generator creates
applications that are easily transported from one PICK System to an-
other, and applications that can easily be modified by the user. How-
ever, the code-generator type also creates programs that can be easi-
ly copied and altered.
ApPLICATIONS: PUTTING THE PARTS TOGETHER 167

The second type of application generator software is the run-time


system. This type produces tables or lists of parameters instead of
program code. To use the application generator, the user must have
the run-time software in place on the computer. This program reads
the parameter tables and performs all the work specified. The run-
time system produces more secure code, since any user must have
the run-time software, and modifications of the parameter tables will
usually not work without the original application generator software
that produced the tables. However, run-time system application gen-
erators are usually more expensive than code generators and are
generally less flexible in the types of work that they can do.
Both types of application generators typically work the same way.
The program creation tools are a set of programs, sometimes written
in the application generator software by the original authors. These
tools are designed to assist the software developer or dealer in defin-
ing applications. One program-creation program usually creates
screens that display data, prompt the operator for input, and create
or update data items in files. After entering all the specifications for a
particular screen, the screen creation program typically creates a
PICK/BASIC program, or creates a table that can be executed by a
run-time program.
A second program creation tool is typically used to create output re-
ports. On the PICK system, this tool usually creates ACCESS reports
according to the user's specifications, although some application
generators produce PICK/BASIC reports. Once again, after the user
enters all the specifications for a particular report, the report genera-
tor creates files or a table of parameters for a run-time program.
A third program creation tool may also be part of the application gen-
eration software, although it is rare in the PICK world. This third tool
creates programs that combine, compare, or change data files in a
batch process. The reason that such a tool is rare in a PICK applica-
tion generation system is that many such processes are performed
during output using the ACCESS functions.
After the program-creation tools are used to create the program, it is
usually compiled, or translated, into a form that can be read and pro-
cessed by the target system. This is the form that is packaged and
sold as an application by the software dealer. The buyer purchases
an application system created by the generator that can be quickly
and easily customized by the dealer according to the buyer's special
needs. The net result is a less costly application system for the buyer
and an application package that is easier to maintain for the dealer.
Application generator systems have a very important place in the
make-or-buy decisions of most users. There are some excellent eco-
168 EXPLORING THE PICK OPERATING SYSTEM

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.

10.4 ASSEMBLY LANGUAGE APPLICATION SYSTEMS


Some of the most powerful software in the PICK world is written in
PICK Assembler. It produces extremely fast programs that have the
ability to directly control all the peripheral devices attached to the
computer. For example, Assembly Language programs can create
graphics on the CRT screen or the printer. They can change the way
that the tape drive operates or the way the disk writes data. Assem-
ApPLICATIONS: PUTTING THE PARTS TOGETHER 169

bly Language programs can operate nonstandard peripherals such as


telephone systems, bar-code readers, or laser disks. However, As-
sembly Language application software is usually not recommended
for PICK Systems.
PICK Assembler Language is significantly different from the Basic As-
sembler Language (BAL) used on most computers. BAL source code
is assembled or translated into machine language instructions for ex-
ecution. In this form the resulting program executes extremely fast
and has access to very powerful hardware control registers. PICK As-
sembler Language source code is assembled into a meta-code, which
is interpreted by the PICK monitor and executed. The result is an ob-
ject code program that is not quite as fast as BAL but somewhat more
powerful. Since PICK Assembler Language programs are interpreted,
the language has many commands that can take advantage of the
monitor's virtual memory services and data base functions.
However, all of the PICK Operating System itself (with the exception
of the monitor) is written in the PICK Assembler Language. User pro-
grams written in PICK Assembler are interpreted and executed right
along with the operating system. Consequently, application programs
that use the PICK Assembly Language present some unusual prob-
lems for both the developer and the end user.
When an Assembly Language application system is installed in a
PICK Operating System computer, only the assembled object code is
loaded into the system. After recording the object code in a standard
account, the assembly language programs are copied into the ABS
area itself, using a special PICK command known as MLOAD. From
this moment on, the operating system is subtly altered.
Since the operating system cannot be restricted from access to any
virtual memory frame, and the operating system is interpreted PICK
Assembly Language object code, all PICK Assembly Language pro-
grams enjoy this unrestricted access. This can be hazardous if the As-
sembly Language programmer makes a mistake or a bad assumption
about where data is located. Errant Assembly Language programs can
write on themselves, or on the operating system, or even on user
data. They can destroy data, or alter the operating system in such a
way that the system halts and will not operate.
There are, however, many excellent application software packages
that utilize Assembler. Commercially distributed PICK Assembly Lan-
guage application software is quite safe. Such software is always thor-
oughly tested. The software developer cannot afford even one oc-
currence of damaged user data, and most developers go to
extraordinary lengths to test any Assembly Language programs sold
to the public.
170 EXPLORING THE PICK OPERATING SYSTEM

The real shortcoming to the user of PICK Assembly Language appli-


cation software is that support for the operating system becomes
more difficult. When a new release of PICK is installed, the Assembly
Language application may require relocation within the system's ABS
area, or even a modification to operate properly within the new re-
lease. Support for these modifications may be difficult to obtain.
Only the application developer can be certain of the effect that the
application software has on the operating system, since the develop-
er has the only copy of the original source code. Neither PICK Sys-
tems nor the computer manufacturer can adjust the operating system
for every user or developer's Assembly Language programs. The PICK
Systems Assembly Language Programming Manual contains a stern
warning that PICK Systems (the company) will not support any PICK
System upon which a user has chosen to program in PICK Assembly
Language.
In summary, some of the best software in the PICK world is written in
PICK Assembly Language, but it requires special support. If the soft-
ware is good enough and the developer and vendor are reliable, the
application may be worth the effort. For example, this book was pre-
pared on an exceptionally fine word processor, which was written in
PICK Assembly Language. Caveat emptor.
CHAPTER

11
Through the PICK
Looking Glass

11.1 PRINCIPAL PLAYERS ON THE PICK WORLD

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.

Licensee: Altos Computer Systems


System: Altos 586
Completed: 1982
Processor: Intel 8086 (16-bit)
Profile: The primary marketing strategy of Altos is to offer a "ge-
neric" computer on which virtually any operating sys-
tem will run. Their other OS offerings include: XENIX,
UNIX, MS-DOS, CP/M-86, MP/M-86, and OASIS.
Licensee: Applied Digital Data Systems
System: ADDS Mentor
Completed: 1981
Processor: Zilog Z8000 (16-bit)
Profile: ADDS is a wholly owned subsidiary of NCR (National
Cash Register) and was incorporated in 1969. They are
171
172 EXPLORING THE PICK OPERATING SYSTEM

one of the largest suppliers of OEM CRT's, and the larg-


est percentage of their revenue is from sales of their
Viewpoint terminals.
Licensee: ADP (Automatic Data Processing)
System: Hewlett-Packard 3000
Completed: 1980
Processor: HP 3000 (16-bit)
Profile: ADP is probably the largest single distributor of PICK-
based systems. Since 1973, they have accounted for
much of the total installed base of Microdata Systems.
In recent years, they have made deals with various
other licensees to obtain low-end systems. The 3000
implementation was completed in 1981 and has never
been made available to the commercial marketplace.
Licensee: CDI Information Systems, Inc.
System: IBM Series/1
Completed: 1982
Processor: IBM Series/1
Profile: COl is a Super VAR for the IBM Series/1 systems. They
also offer an emulation of PICK called the COl 100,
which runs on the IBM PC and XT.
Licensee: CIE Systems
System: CI E 680 Series
Completed: 1983
Processor: Motorola MC-68000 (32-bit)
Profile: CIE Systems is a California-based subsidiary of C. Itoh
of Japan. The system they sell is built by Hitachi and
imported for sale in the United States.
Licensee: Climax Computer Corporation
System: Climax Series
Completed: 1983
Processor: Motorola MC-68000 (32-bit)
Profile: Climax became a PICK licensee soon after its formation
in 1983. The system they offer is built by Ithaca Inter
Systems of New York'and features an industry standard
S-100 bus.
Licensee: Datamedia Corporation
System: 932 Series
Completed: 1982
THROUGH THE PICK LOOKING GLASS 173

Processor: Motorola MC-68000 (32-bit)


Profile: Datamedia has become one of the largest distributors of
VT compatible CRT's during its operation over the last
decade. They were the first licensee to offer an
MC68000-based system.

Licensee: Fujitsu Micro Systems


System: System 2000
Completed: 1984
Processor: Fujitsu Intel 8086
Profile: Fujitsu is another in the series of Japanese licensees,
with the PICK System implementation on its Intel 8086-
based products.

Licensee: General Automation


System: Zebra
Completed: 1982
Processor: Motorola MC-68000 (32-bit)
Profile: GA is a California-based manufacturer founded in 1968.
In the past, GA was in the top ranks of minicomputer
vendors with its SPC series. In the early 1980s they
dropped their industrial automation product line in
favor of the more lucrative super microcomputer mar-
ket. They currently offer both the PICK and the Xenix
Operating Systems on the Zebra product line.
Licensee: Intertechnique
System: Multi-6 Series
Completed: 1978
Processor: Discrete 8-bit
Profile: Intertechnique is a French-based manufacturer of com-
puting systems and has been a licensee since 1978
when it entered into a deal with PICK and Evolution to
build the CPU for the Evolution system. Prior to the
deal with PICK, they had been under contract with
Microdata Corporation to build CPUs for resale.

Licensee: McDonnell Douglas Computer Systems Company (for-


merly Microdata Corporation)
System: Microdata, REALITY, SEQUEL
Completed: 1973
Processor: REALITY - Discrete 8-bit
SEQUEL - Discrete 32-bit (bit-sliced)
174 EXPLORING THE PICK OPERATING SYSTEM

Profile: Microdata is a wholly owned subsidiary of McDonnell


Douglas, who acquired the California manufacturer in
late 1979. Microdata was the first implementation of
PICK.
Licensee: Nixdorf Computer Corporation
System: Nixdorf 8890 VM
Completed: 1985
Processor: Intel 8086
Profile: The Nixdorf implementation of PICK is initially planned
for its mainframe systems, but future plans call for the
OS to be implemented across the entire product line.

Licensee: Pertec Computer Corporation


System: Pertec 4200 Sabre Series
Completed: 1983
Processor: Motorola MC-68000 (32-bit)
Profile: Pertec is a subsidiary of Triumph Adler AG, which in
turn is a subsidiary of Volkswagen AG. Their primary
marketing thrust over the years has been in the manu-
facturing and distribution of peripheral devices. Pertec
now offers the PICK and Unix Operating Systems on its
SABRE product line.

Licensee: PICK Systems


System: IBM PC-XT
Completed: 1984
Processor: Intel 8088 (16-bit)
Profile: PICK Systems announced in 1984 the availability of its
operating system for the IBM PC-XT. The product is dis-
tributed internationally through a direct dealer network.
PICK has also announced an implementation on the
IBM PC-AT (Intel 80186) to be available in 1985.

Licensee: SMI (Systems Management, Inc.)


System: IBM 4300
Completed: 1983
Processor: IBM 4300 - IBM 4331, 4361 (32-bit)
Profile: SMI is a Chicago-based company that has the distinc-
tion of being the largest software house in the PICK
community. Their application software library is built
around their proprietary RPL (Realtime Programming
Language) product.
THROUGH THE PICK LOOKING GLASS 175

Licensee: TAU Engineering, Inc.


System: TAU M-68000
Completed: 1983
Processor: Motorola MC-68000
Profile: TAU was the first japanese licensee of the PICK
Operating System. Their marketing efforts are primarily
concentrated within japan. The TAU implementation
supports the full japanese character sets.
Licensee: The Ultimate Corporation
System: Ultimate
Completed: 1979
Processor: Honeywell Level 6 and DEC (16-bit)
Profile: The Ultimate Corporation was founded in 1978 by two
former Microdata dealers who commissioned PICK to
implement the operating system on the Honeywell
Level 6 series of computers. The first Ultimate
computer was shipped in 1979, and Ultimate has grown
to be a major supplier of new PICK Systems.
Licensee: WICAT Computers of Australia Pty. Ltd.
System: WICAT MC68000
Completed: 1983
Processor: Motorola MC-68000 (32-bit)
Profile: WICAT was formed in 1983 by Lionel Singer, who had
formerly established the Australian division of Prime
Computer. Their marketing efforts are primarily directed
toward the Australian business marketplace.

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

11.2 MAJOR APPLICATION SYSTEMS FOR PICK

It is not unusual for PICK Operating System users to become soft-


ware vendors. With the ease of application development on PICK,
enterprising users often develop their own application software and
then package the software for resale. Appendix B provides detailed
information on vendors and software available for the PICK System.
In a recent PICK application software survey, over 170 general-
purpose application packages were listed:

Package Type Number of Packages Offered


Accounts Payable 10
Accounts Receivable 6
Integrated Accounting 19
Communications 6
Distribution 20
Fixed Assets 8
General Ledger 12
Graphics 4
Application Generators 26
Inventory Control 4
Job Costing 4
Manufacturing 19
Office Automation 9
Order Entry 8
Payroll 6
Sales Management 4
Spread Sheets 9
Word Processing 5

Although this should not be considered an exhaustive list, it is an ex-


ample of the growing body of commercial-quality software being de-
veloped for PICK. These horizontal market packages provide gener-
alized business functions for a wide variety of businesses. However,
these generalized software packages do not represent the largest
body of PICK commercial software.
Since many of the PICK software developers were originally users, a
much larger list of specialized "vertical market" packages are
available for PICK. These software systems provide a variety of busi-
ness functions within a specific industry, such as accounts payable,
THROUGH THE PICK LOOKING GLASS 177

accounts receivable, and payroll for a heavy construction company.


Such a company has specialized requirements in each of these areas,
and PICK users in heavy construction have created application soft-
ware tailored to meet those needs. Other vertical market PICK appli-
cation packages have been created for the following industries:

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

11.3 TRENDS IN APPLICATION SOFTWARE

As more users become more active in PICK programming, more ap-


plication packages are appearing in the PICK trade publications and
magazines. A growing trend among all software developers is the use
of application generator software.
178 EXPLORING THE PICK OPERATING SYSTEM

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.

11.4 PICK PERSONAL COMPUTING ON THE IBM XT AND AT


Since we're coming to the end of our tour, we should discuss where
the PICK world will go from here, and on what computers. The PICK
Operating System was originally implemented on a mainframe
computer and designed to provide a personalized operating environ-
ment for a user at a time-sharing CRT terminal. Since that time, the
system has been implemented primarily on multiuser minicomputers,
providing the personalized environment to each user in a multiuser
system. In 1984, the PICK world completed its ten-year odyssey. The
system was implemented on a personal computer.
The PICK PC-XT System is designed specifically for the hard-disk ver-
sion of the popular personal computer, the IBM XT. This is the only
version of the IBM Personal Computer system with sufficient disk
space to justify PICK's virtual memory approach.
The system is designed to operate on a standard, off-the-shelf XT
with the Intel 8088 8/16-bit processor chip. The PICK System re-
quires a standard PC-XT or PC with an expansion chassis and a mini-
mum of 256K of main memory. Although 512K of main memory is
recommended, no special hardware or other additional boards are
THROUGH THE PICK LOOKING GLASS 179

required. It is a complete implementation of all the standard PICK


features described in the PICK Pocket Cuide, considered the official
list of PICK commands and processors. The XT version will load and
store PICK data files without modification and will run all PICK-
compatible software, including communications software and PICK
Assembly Language applications.
In addition to providing a pure PICK environment for the XT user,
the PICK System for the XT will support two additional terminals,
which are connected to the XT's serial ports. Each is a fully functional
PICK port, sharing virtual workspace and disk storage under the con-
trol of the PICK monitor.
The PICK Operating System for the XT has several enhancements to
take advantage of the special capabilities of the hardware. Special
extensions were made to the PICK/BASIC compiler and to the
Terminal Control Language to take advantage of the XT's memory-
mapped screen display. These extensions allow the user to control
color, reverse video, and display half-intensity protected fields on the
screen. In addition, the PICK implementation takes advantage of the
disk partitioning capabilities of the XT to share the disk with as many
as two other operating systems.
The PICK Operating System for the IBM PC-XT is the first implemen-
tation sold directly by PICK Systems and is available through dealers
for a retail price of $495-about half the cost of the fourth genera-
tion operating systems for the IBM XT. Its low cost may be in recog-
nition of the long journey from the mainframe to the user.
At the time of this writing, PICK Systems was working on the imple-
mentation of their operating system on the IBM AT. This product is
expected to be available in 1985 at a projected price of $895.

11.5 OPEN ARCHITECTURE: THE UNIVERSAL HOST


Soon a new release of the PICK Operating System will be completed.
Under development for five years, Open Architecture has been
called the culmination of a 20-year effort. It seeks to eclipse all the
PICK innovations of the past and establish a position for the PICK
System in the major computer marketplace.
Open Architecture is designed as the "operating system's operating
system," according to Dick Pick of PICK Systems. The new version
will provide the virtual memory management and relational data base
services not only to application packages but to guest operating
systems.
180 EXPLORING THE PICK OPERATING SYSTEM

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.

11.6 THE "FOURTH-ANO-A-HALF" GENERATION


People often mark the evolution of computers by "generations."
Each generation is characterized by a significant advance in the per-
formance of the computing machine. On this scale, we are in the
fourth generation of the computer.
In the early 1950s, computers were digital machines based upon the
vacuum tube. Conceptually, they were the equivalent of today's
computers, but this first generation was made up of slow machines
capable of only one process at a time.
THROUGH THE PICK LOOKING GLASS 181

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.

Components of the Next Generation System


There are several milestones along the road to that not-too-distant
future. First, there is the data base structure for the information or
knowledge or experience that a fifth generation computer will need.
This collection of data must be dynamic and flexible to be useful in a
software technique that continuously alters the relationships
between data elements. The current favorite for such a data base is
the relational data base model. In this approach, the relationship
between any two physical data attributes is created as required, and
182 EXPLORING THE PICK OPERATING SYSTEM

data items consist of logical collections of data elements, as opposed


to physical records within the computer.
The second major milestone to be developed for artificial intelli-
gence is sometimes called the "inferential algorithm," or the set of
logical rules by which the software will relate the available data. At
this writing, little progress has been made on the general set of rules,
although encouraging results have been demonstrated in specialized
applications, such as medical diagnosis and geological studies.
A third step to the next generation computer is a humanistic inter-
face. Artificial intelligence systems will require that users interact
easily with incredibly complex processes that will take place within
the computer. The interface must take the form of normal human in-
teraction, with conversational input and "politely precise" output.
Every computing system that has ever existed has made its contribu-
tion to the evolution of fifth generation computing machinery. How
does the PICK Operating System contribute? It pioneered a virtual
machine architecture designed to elevate the operating system and
the applications from any hardware constraints. The data structure is
exclusively data base, with a physical and logical relational structure.
The user interface is an exclusively interactive user environment,
with a natural data retrieval language and a powerful Beginner's AII-
Purpose Symbolic Instruction Code-PICK/BASIC. In a word, PICK is
the predecessor of artificial intelligence; it is an environment in
which many of the AI features are present, but the user provides the
logical relationships between the data attributes.

11.7 THE TRANSITION TO THE NEXT ERA


No one can predict the transition to the next era in computers. This
gives us a perfectly good opportunity to speculate.
We can expect technological advances to continue the present tur-
moil, without any real advances in the computer architecture itself.
Briefcase computers already have the capabilities of full-scale
systems, and the desktop computers act more like multi-user mini-
computers every day. Multi-user systems will set the standard; local-
area networks are simply multi-user systems spread out all over the
room. Large computers may eventually become the exception. It has
been said that ten users will not share a hundred-dollar chip when
each can have one in his terminal for a dollar. In the best blue tradi-
tion, hardware has "over-MIPed" (millions of instructions per second)
most applications and can be expected to provide all the processing
power necessary for at least the next few years.
THROUGH THE PICK LOOKING GLASS 183

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.

PICK and the Fifth Generation Computer


This will be the market in which artificial intelligence will be devel-
oped. It is here that the PICK Operating System will contribute, after
twenty-odd years of quiet patience. PICK is already being spoken of
as an AI knowledge-base manager (the file and dictionary structure is
exceptional for relational work). With each passing day, the hardware
improvements favor PICK's virtual memory approach. PICK's
pseudo-system structure, with a multi-tasking monitor between the
actual operating system and the firmware, is an essential aspect for
portability. It opens the gate for adding new processes such as
communications and graphics by simply adding assembly language
drivers to the system and activating them with simple calls from the
user level. An overall orientation to the user rather than the
computer may well be PICK's greatest contribution; it allows hard-
ware substitution and technical evolution to occur without affecting
184 EXPLORING THE PICK OPERATING SYSTEM

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.

Spiraling Up from the Surface


We have completed our tour of the PICK world and speculated on
its future. We saw the ACCESS areas with the English data retrieval
language. We looked into the EDITOR windows, the dictionaries and
data files, and the PROC and PICK/BASIC levels below the PICK sur-
face. There were views of the PICK internals-the Assembly lan-
guage level, the ABS frames, and the virtual memory core itself. All
the while, the application software systems were running on the sur-
face, planted in TCl and plugged into the levels underneath.
As you leave, you'll see scores of tourists arriving; most of them will
stay. We can assure you that as the PICK world shrinks in the dis-
tance, it will continue to grow brighter. We invite you to visit the
PICK Operating System in person.
APPENDIX

A
Glossary

There are many unique terms associated with a unique environment


like PICK. Here are some of the more common PICK System terms
and a brief definition of how the term is used in the PICK world.
ABS frame. A frame containing the object code for the operating system
(derived from ABSolute location).
ABS section. The virtual memory storage area from frames 0 through
1024, containing the object code for the operating system and all the
frames set aside for user and application system assembler code.
Account. A collection of logically related files associated with one user or
one function on a PICK System; also the entry required to log on to
the system.
AMC. Abbreviation for Attribute Mark Count, or the number of the at-
tribute within a data item; used by ACCESS to locate the attribute for
retrieval.
Attribute. Synonym for "field" in the PICK world; a specific piece of data
which, along with other attributes, constitutes an item or record. The
following example illustrates an item with six attributes:
001 JES & Associates, Inc.
002 P.O. Box 19274
003 Irvine
004 CA
005 92714
006 714-786-2211
Attribute mark. The reserved character used to separate attributes in an
item, as shown here.
Hexadecimal Value FE
Decimal Value 254

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

PICK Operating System implementations have 512-byte frames for


data and 2048-byte frames for ABS code.
GFE. Abbreviation for Group Format Error; an error condition indicating
that there are errors in the format of a virtual storage frame of a file.
Before the introduction of PICK tools for correcting GFEs, this acro-
nym was sometimes taken to mean "Gone For Ever."
Group. The name given to a series of items stored in a PICK file; it can
logically represent many frames in a linked format. The number of
groups in a file is indicated by the modulo of the file.
Hashing. The process of passing an item-id through an algorithm or
mathematical formula for determining the group of an item, prior to
placing the item into or retrieving it from a file.
Item. Synonym for "record" in the PICK world; differs from traditional re-
cord in that an item in a PICK System may contain fields or "attri-
butes" that are not physically located in the item. An item, therefore,
is a collection of logically related attributes. Items are stored in
groups in a PICK System; a set of logically related groups constitutes
a PICK file.
Item-id. Contraction for Item-Identifier; the key to an item in a file; may
be any combination of alphanumeric characters, with no practical
length restrictions.
K. One thousand twenty-four (1024) bytes; typically used in reference to
the amount of RAM memory in a computer.
Linkage. The reserved storage area of each data frame used to define for-
ward and backward pointers to the attached storage frames; usually
the first 12 bytes of a 512-byte PICK frame, leaving 500 bytes of data.
MD. Abbreviation for Master Dictionary; the primary file for each ac-
count that contains verbs, file pointers, PROCS, and ACCESS dictio-
nary definition items.
Megabyte. One million bytes; typically used in reference to the amount
of disk storage available on a computer, before RAM memory got
large enough to be measured in megabytes.
Modulo. The number of groups in a file; defined during the file creation
process.
Monitor. The PICK Operating System software component that controls
all input, output, and process scheduling.
Overflow. Available unused frames on disk, either contiguous or linked;
displayed via the POVF command.
PCB. Abbreviation for Primary Control Block; the reserved storage area
associated with each CRT or printer port; used only by the operating
system.
PIB. Abbreviation for Primary Input Buffer; the point through which all
data passes from a keyboard on its way to the operating system.
188 EXPLORING THE PICK OPERATING SYSTEM

PROM. Programmable Read Only Memory; typically used to store pro-


gram instructions on an Integrated Circuit (lC).
Q-pointer. A type of file pointer definition that allows an account to ac-
cess files defined in a different account.
RAM. Random Access Memory; the storage area in which the data is
manipulated.
Segment mark. The reserved character used to delimit items within a
frame on disk, as shown here.
Hexadecimal Value FF
Decimal Value 255
ASCII Value
Keyboard Entry IF, usually Control/Shift/Underline
Separation. The number of frames per group; normally 1, since the PICK
Operating System automatically links as many frames together as
necessary to hold the group.
Subvalue. A sub-portion of a value within an attribute, delimited by a
subvalue mark.
Hexadecimal Value FC
Decimal Value 252
ASCII Value \
Keyboard Entry IC, usually Control/Shift/Backs lash
SYSTEM. The primary file on the PICK OS; defines all accounts and sev-
eral system-level files that are accessible to all accounts.
TeL. Abbreviation for Terminal Control Language; the point from which
all operations begin; indicated with a 1/>" prompt character.
Time slice. The number of milliseconds allowed to each process upon
activation by the PICK monitor software.
Value. A sub-portion of an attribute, delimited by a value mark.
Hexadecimal Value FD
Decimal Value 253
ASCII Value ]
Keyboard Entry ID, usually Control/Shift/Right-
Bracket
APPENDIX

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

Application Generator: SCREENPLAY


Digicorp, Midvale, UT. 801-562-2227
Application Generator: SUPER
Government Systems Group, Santa Ana, CA. 714-556-7210

Application Generator: VIP


Information Solutions, Englewood, CO. 303-694-9180
Application Generator: SCREEN-GEN
Interactive Systems, Phoenix, AZ. 602-993-3579
Application Generator: PROG-MAN
Software Concepts, Don Mills, Ont. MB S Canada. 416-446-1572.
Application Generator: DECISION S/1000
Software Connection, Miami, FL. 305-252-2051
Application Generator: APPGEN
Software Express, Houston, TX. 800-231-0062
Application Generator: PROGRAMMER AID SYSTEM
Software Group, Englewood, CO. 303-790-1870
Application Generator: ESCAPE
Systems Management Inc., Rosemont, IL. 312-698-4000
Architecture Management: ARCH PAC
AWA Computer Services Pty. Ltd, Fullerton, S.A. Australia. 08-79-9581
Association Management: MEMPAC
AWA Computer Services Pty. Ltd, Fullerton, S.A. Australia. 08-79-9581
Association Management: ASSOCIATION MANAGEMENT SYSTEM
Government Systems Group, Santa Ana, CA. 714-556-7210
Auto Parts POS: MIS-AUTO
Mark Information Systems, Inc., Burlingame, CA. 415-697-9051
Bank Management: ULTRAFIS
Ultradata Corporation, Hayward, CA. 415-881-8477
Brokerage Firm Management: BROKERAGE SOFTWARE SYSTEM
Gathers Software Inc., Denver, CO. 303-399-6666
Business License Management: BUSINESS LICENSE
MMI Management System, Orange, CA. 714-542-1837
Calendaring: PLANWARE
Automation Technology, Elkins Park, PA. 215-885-4880
Calendaring: SCHEDULEWARE
Automation Technology, Elkins Park, PA. 215-885-4880
APPENDIX B 191

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

Distribution System: RESOLVE


CTS Services, Dallas, TX. 214-637-3344
Distribution System: WHOLESALE/RETAIL SYSTEM
EDP of America, Cranford, NJ. 201-272-0770
Distribution System: DISTRIBUTION MANACEMENT SYSTEM
Management Systems, Inc., Stamford, CT. 203-357-0280
Distribution System: SOLUTION
Mark Information Systems, Inc., Burlingame, CA. 415-697-9051
Distribution System: PROMAX-D+
Minicomputer Concepts, Inc., Plainview, NY. 516-349-1910
Distribution System: APPGEN
Software Express, Houston, TX. 800-231-0062
Education Management System: EDUCATION MANAGEMENT SYSTEM
Government Systems Group, Santa Ana, CA. 714-556-7210
Education and Training System: EDUCATION/TRAINING SYSTEM
Government Systems Group, Santa Ana, CA. 714-556-7210
Electronic Mail: ELECTRONIC MAIL
Generation Research, San Diego, CA. 619-483-2919
Equipment Maintenance: EQUIPMENT MAINTENANCE
MMI Management System, Orange, CA. 714-542-1837
Financial Modeling/Planning: MODEL DEV'M'T LANG. & REPORTER
Corporate Timesharing Service, New York, NY. 212-246-7733
Financial Modeling/Planning: FINANCIAL PLANNING SYSTEM
Government Systems Group, Santa Ana, CA. 714-556-7210
Financial Modeling/Planning: FINANCIAL MODELING
Software Concepts, Don Mills, Ont. MB S Canada. 416-446-1572
Fixed Asset Management System: FIXED ASSET MANAGEMENT SYSTEM
Multidata Corporation, San Jose, CA. 408-293-1801
Fundraising System: DONOR SERVICES
Anthropomorphological Systems, Tulsa, OK. 918-743-6654
Fundraising System: PRIMS
Diversified Donor Systems, Burlingame, CA. 415-340-0478
Fundraising System: FUND MANAGEMENT SYSTEM
MMI Management System, Orange, CA. 714-542-1837
Fundraising System: DONOR MEMBER SYSTEM
Software Group, Englewood, CO. 303-790-1870
APPENDIX B 193

General Accounting: UHL APPLICATIONS


Anacomp, Bellevue, W A. 206-641-4990
General Accounting: RESOLVE
CTS Services, Dallas, TX. 214-637-3344
General Accounting: PRO III
DeBugge Computer Services, Inc., Mountainside, NJ. 210-789-3222
General Accounting: DOLARS
Deliberate Systems, San Diego, CA. 619-280-4400
General Accounting: PACE
Diversified Donor Systems, Burlingame, CA. 415-340-0478
General Accounting: INTEGRATED FINANCIAL MGMT SYS
Government Systems Group, Santa Ana, CA. 714-556-7210
General Accounting: GAAP
KDK Enterprises, McLean, VA. 703-893-7883
General Accounting: FINANCIAL SOFTWARE
KTS Business Systems, Inc., Toronto, Ont., Canada MS Z. 416-483-2809
General Accounting: SCOTTY
Laguna Software, Laguna Beach, CA. 714-494-1092
General Accounting: GENERAL ACCOUNTING AR, FA, AR, INV
MMI Management System, Orange, CA. 714-542-1837
General Accounting: ACCOUNTING GL,AR,AP,PR,IV
Management Systems, Inc., Stamford, CT. 203-357-0280
General Accounting: MEGAFACS
Megawest Systems, Salt Lake City, UT. 801-487-0788
General Accounting: CONTROLLER
Omnar Corporation, North Hollywood, CA. 213-985-2680
General Accounting: GENERAL ACCOUNTING
Professional Systems, Inc., Kent, WA. 206-839-5048
General Accounting: BUSINESS-MAN
Software Concepts, Don Mills, Ont. MB S Canada. 416-446-1572
General Accounting: APPGEN
Software Express, Houston, TX. 800-231-0062
General Accounting: INTEGRATED ACCOUNTING SYSTEM
Software Group, Englewood, CO. 303-790-1870
General Accounting: PET
Sum Data Systems, Marina del Rey, CA. 213-306-2808
194 EXPLORING THE PICK OPERATING SYSTEM

Government Management: CITY MANAGEMENT SYSTEM


City of Irvine, CA. 714-660-3657
Grain Management System: GRAIN MERCHANDISING SYSTEM
Computer Partners of Tipton, Tipton, IN. 317-675-6849
Grant Management: GRANT MANAGEMENT SYSTEM
Government Systems Group, Santa Ana, CA. 714-556-7210
Hospital Management: ALTERNATE HOSPITAL SYSTEM
Data Systems Group, Sacramento, CA. 916-443-4944
Hospital Management: HOSPITAL MANAGEMENT SYSTEM
Minicomputer Company, Richmond, VA. 804-780-2938
Insurance Agency System: MARKETING SYSTEM
Insurenet, Emeryville, CA. 415-652-3771
Insurance Agency System: AGENCY MANAGEMENT SUPPORT SYS
Multidata Corporation, San Jose, CA. 408-293-1801
Inventory Management: INVENTORY MANAGEMENT
Software Group, Englewood, CO. 303-790-1870
Investment Management: INVESTMENT RESEARCH SYSTEM
Government Systems Group, Santa Ana, CA. 714-556-7210
Investment Management: INVESTMENT PORTFOLIO ANALYSIS
Systems Support, Inc., Milwaukee, WI. 414-355-1955
Job Shop: JOB SHOP SYSTEM
Addept, Santa Clara, CA. 408-986-8550
Job Shop: JOB SHOP SYSTEM
Anacomp, Bellevue, WA. 206-641-4990
Job Shop: JOB COST
MMI Management System, Orange, CA. 714-542-1837
Landscape Contracting Management: SLICE
Thornton Computer Management Sys, Maineville, OH. 513-683-8100
Law Management System: LFMS
General Physics Corporation, Colombia, MD. 301-982-1240
Law Management System: SEEK
General Physics Corporation, Colombia, MD. 301-982-1240
Library Management: URICA
AWA Computer Services Pty. Ltd, Fullerton, S.A. Australia. 08-79-9581
Library Management: THE DYNIX SYSTEM
Dynix, Inc., Provo, UT. 801-375-2770
APPENDIX B 195

List Processor: POST-MAN


Software Concepts, Don Mills, Ont. MB S Canada. 416-446-1572
Loan Processing: LAPS
Orb Systems, Honolulu, Hawaii. 808-538-6874
Mail Order Firm Management: CATALOG ORDER SYSTEM
The Computer Works, Emeryville, CA. 415-547-6565
Manufacturing: PACEMAKER
AWA Computer Services Pty. Ltd, Fullerton, S.A. Australia. 08-79-9581
Manufacturing: MANUFACTURING SYSTEM
Addept, Santa Clara, CA. 408-986-8550
Manufacturing: PRO III
DeBugge Computer Services, Inc., Mountainside, NJ. 201-789-3222
Manufacturing: MANUFACTURING
Integram Systems, Bellevue, WA. 206-643-1030
Manufacturing: INFOFLO
Interactive, Inc., San Diego, CA. 619-560-8525
Manufacturing: MANUFACTURING
Mark Information Systems, Inc., Burlingame, CA. 415-697-9051
Manufacturing: PRO:MAN
Resources for S'ware Dev'ment, Bellevue, WA. 206-451-0404
Manufacturing: STRIDE
Semaphore Corporation, Aptos, CA. 408-688-9200
Marketing Management: TELEMARKETING SUPPORT
Anacomp, Bellevue, W A. 206-641-4990
Marketing Management: MARKETWARE
Automation Technology, Elkins Park, PA. 215-885-4880
Medical Billing System: MEDICAL BILLING SYSTEM
Medical Data Services, Richmond, VA. 804-794-2818
Medical Billing System: MEDICAL BILLING SYSTEM
Penn Computer Assoc., Inc., Halboro, PA. 215-674-1399
Medical Office Management: RADIOLOGY BOOK'G & ADMIN
AWA Computer Services Pty. Ltd, Fullerton, S.A. Australia. 08-79-9581
Medical Office Management: MEDICAL WARE
Automation Technology, Elkins, Park, PA. 215-885-4880
Medical Office Management: PATIENT ACCOUNTING CONTROL SYS
Healthpac Computer Systems, Inc., Savannah, GA. 912-355-5018
196 EXPLORING THE PICK OPERATING SYSTEM

Medical Office Management: MEGAMED


Megawest Systems, Salt Lake City, UT. 801-487-0788
Medical Office Management: MEDICAL OFFICE MANAGEMENT
Wesleyan Computer DP Inc., Corpus Christi, TX. 512-881-8207
Newspaper Circulation: NEWSPAC
AWA Computer Services Pty. Ltd, Fullerton, S.A. Australia. 08-79-9581
Office Automation: EASYWARE
Automation Technology, Elkins Park, PA. 215-885-4880
Office Products Business Mgmt: ASSETS.
Datatel Minicomputer Company, Alexandria, VA. 703-549-4300
Oil & Gas: RESOLVE
CTS Services, Dallas, TX. 214-637-3344
Oil & Gas: ENERGY MANAGEMENT SYSTEM
Gathers Software Inc., Denver, CO. 303-399-6666
On-Line Help: The PICK HELP Processor
JES & Associates, Irvine, CA. 714-786-2211
Payroll: PRO III
DeBugge Computer Services, Inc., Mountainside, NJ. 201-789-3222
Personnel Management System: MANPAC
AWA Computer Services Pty. Ltd, Fullerton, S.A. Australia. 08-79-9581
Personnel Management System: SEARCHWARE
Automation Technology, Elkins Park, PA. 215-885-4880
Personnel Management System: PERSONNEL MANAGEMENT SYSTEM
Government Systems Group, Santa Ana, CA. 714-556-7210
Personnel Management System: TEMPORARY SERVICES SYSTEM
Management Systems, Inc., Stamford, CT. 203-357-0280
Pharmacy Management: PHARMACY SYSTEM
Allied Computer, Highland Park, MI. 313-869-5500
Pharmacy Management: PHARMACYWARE
Automation Technology, Elkins Park, PA. 215-885-4880
Pharmacy Management: ULTIMATE PHARMACY SYSTEM
Dataform Systems, I nc., Canton, OH. 216-497-9960
Physical Inventory Management: PIC-MAN
Software Concepts, Don Mills, Ont. MB S Canada. 416-446-1572
Printing Production Mgmt Sys: PRINTPAC
AWA Computer Services Pty. Ltd, Fullerton, S.A. Australia. 08-79-9581
APPENDIX B 197

Programming Tools: PROGRAMMING TOOLS


Generation Research, San Diego, CA. 619-483-2919
Programming Tools: PROGRAMMING TOOLS
KTS Business Systems, I nc., Toronto, Ont., Canada. 416-483-2809
Property Management: RENT ALWARE
Automation Technology, Elkins Park, PA. 215-885-4880
Property Management: RESOLVE
CTS Services, Dallas, TX. 214-637- 3 344
Property Management: PROPERTY MANAGEMENT
Mark Information Systems, Inc., Burlingame, CA. 415-697-9051
Property Management: REAL-MAN
Sunshine Data Systems, Newport Beach, CA. 714-752-6207
Publishing Management: PACAS
Systems Support, Inc., Milwaukee, WI. 414-355-1955
Radio Scheduling: RADIO SCHEDULING
AWA Computer Services Pty. Ltd, Fullerton, S.A. Australia. 08-79-9581
Religious Administration: CHURCH MANAGEMENT SYSTEM
Multidata Corporation, San Jose, CA. 408-293-1801
Religious Administration: CHURCH MEMBERSHIP PACKAGE
Sound Computing Services, Inc., Olympia, WA. 206-352-3380
Report Writer: AD HOC
Brice Associates, EI Cajon, CA. 619-579-9345
Report Writer: WORKBENCH
Megawest Systems, Salt Lake City, UT. 801-487-0788
Report Writer: RUBY
Software Group, Englewood, CO. 303-790-1870
Restaurant/Hotel/Apt Mgmt: REST AU RANT /HOTEL/ APT MGMT
KDK Enterprises, McLean, VA. 703-893-7883
Retail Management: STARPAC
AWA Computer Services Pty. Ltd, Fullerton, SA Australia. 08-79-9581
Retail Management: LePIC SYSTEMS
LePic Systems, Inc., Pleasant Grove, UT. 801-785-8667
Retail Sales: WHOLESALE/RETAIL SYSTEM
EDP of America, Cranford, NJ. 201-272-0770
Sales Management: SALES/2
Kahikatea, Mill Valley, CA. 415-332-3722
198 EXPLORING THE PICK OPERATING SYSTEM

Security System: CENTRAL STATION SYSTEM


ABM DATA SYSTEMS, Austin, TX. 512-452-9249
Specialized Accounting: COPAC
AWA Computer Services Pty. Ltd, Fullerton, SA Australia. 08-79-9581
Spreadsheet: I NTECOLOR SYSTEM
Climax Computer, Laguna Hills, CA. 714-855-4452
Spreadsheet: COMPU-SHEET
Interactive Systems, Phoenix, AZ. 602-870-1193
Spreadsheet: ELECTRONIC SPREADSHEET
Omnar Corporation, North Hollywood, CA. 213-985-2680
Statistical Analysis: REGRESSION ANALYSIS PROGRAMS
DTRO Software, San Francisco, CA. 415-861-5454
Surveying System: RIPAC
AWA Computer Services Pty. Ltd, Fullerton, SA Australia. 08-79-9581
Telephone Message Management: TELEWARE
Automation Technology, Elkins Park, PA. 215-885-4880
Textiles: YARDS
EDP of America, Cranford, NJ. 201-272-0770
Training: PICK OS Educational Courses
JES & Associates, Inc., Irvine, CA. 714-786-2211
Training: The PICK HELP Processor
JES & Associates, Inc., Irvine, CA. 714-786-2211
Transportation: FRATEBIL
Synergy Accounting, Inc., Torrance, CA. 213-325-5200
Union Management: UNION ADMINISTRATION SYSTEM
Shared Union Systems, Inc., Ft. Washington, PA. 800-341-7874
Utility Management System: UTILITY MANAGEMENT SYSTEM
MMI Management System, Orange, CA. 714-542-1837
Vehicle Management: PROMAX
Minicomputer Concepts, Inc., Plainview, NY. 516-349-1910
Word Processing: JET
Jet Software, Santa Ana, CA. 714-549-5750
APPENDIX

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.

DECIMAL HEX OCTAL BINARY EBCDIC ASCII KEYBOARD

0 00 000 00000000 00 NUL


1 01 001 00000001 01 SOH <ctl>A
2 02 002 00000010 02 STX <ctl>B
3 03 003 00000011 03 ETX <ctl>C
4 04 004 00000100 37 EOT <ctl>O
5 05 005 00000101 20 ENQ <ctl>E
6 06 006 00000110 2E ACK <ctl>F
7 07 007 00000111 2F BEL (bell) <ctl>G
8 08 010 00001000 16 BS (backspace) <ctl>H
9 09 011 00001001 05 HT (hor. tabs) <ctl>1
10 OA 012 00001010 25 LF (linefeed) <ctl»
11 OB 013 00001011 OB VT (vert. tabs) <ctl>K
12 OC 014 00001100 OC FF (formfeed) <ctl>L
13 00 015 00001101 00 CR (return) <ctl>M
14 OE 016 00001110 OE 50 <ctl>N
15 OF 017 00001111 OF 51 <ctl>O

199
200 EXPLORING THE PICK OPERATING SYSTEM

DECIMAL HEX OCTAL BINARY EBCDIC ASCII KEYBOARD

16 10 020 00010000 10 DLE <ctl>P


17 11 021 00010001 11 DC1 (XON) <ctl>Q
18 12 022 00010010 12 DC2 (ptr. on) <ctl>R
19 13 023 00010011 3A DC3 (XOFF) <ctl>S
20 14 024 00010100 3C DC4 (ptr. off) <ctl>T
21 15 025 00010101 3D NAK <ctl>U
22 16 026 00010110 32 SYN <ctl>V
23 17 027 00010111 26 ETB <ctl>W
24 18 030 00011000 18 CAN <ctl>X
25 19 031 00011001 19 EM <ctl>Y
26 1A 032 00011010 3F SUB <ctl>Z
27 1B 033 00011011 27 ESC ESC
28 1C 034 00011100 1C FS
29 10 035 00011101 10 GS
30 1E 036 00011110 1 E RS
31 1F 037 00011111 1F US
32 20 040 00100000 40 SPACE
33 21 041 00100001 5A
34 22 042 00100010 7F
35 23 043 00100011 7B #
36 24 044 00100100 5B $
37 25 045 00100101 6C %

38 26 046 00100110 50 &


39 27 047 00100111 7D
40 28 050 00101000 40
41 29 051 00101001 50
42 2A 052 00101010 5C
43 2B 053 00101011 4E +
44 2C 054 00101100 6B
45 20 055 00101101 60
46 2E 056 00101110 4B
47 2F 057 00101111 61 /
48 30 060 00110000 FO 0
49 31 061 00110001 F1 1
50 32 062 00110010 F2 2
APPENDIX C 201

DECIMAL HEX OCTAL BINARY EBCDIC ASCII KEYBOARD

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

DECIMAL HEX OCTAL BINARY EBCDIC ASCII KEYBOARD

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

112 70 160 01110000 97 P


113 71 161 01110001 98 q
114 72 162 01110010 99
115 73 163 01110011 A2 5

116 74 164 01110100 A3


117 75 165 01110101 A4 u
118 76 166 01110110 A5 v
119 77 167 01110111 A6 w
120 78 170 01111000 A7 x
APPENDIX C 203

DECIMAL HEX OCTAL BINARY EBCDIC ASCII KEYBOARD

121 79 171 01111001 A8 Y


122 7A 172 01111010 A9 z
123 7B 173 01111011 CO
124 7C 174 01111100 6A
125 70 175 01111101 DO
126 7E 176 01111110 A1
127 7F 177 01111111 07 DEL
High-order ASCII (high-order bit on)
128 80 180 10000000 04
129 81 181 10000001 06
130 82 182 10000010 08
131 83 183 10000011 09
132 84 184 10000100 OA
133 85 185 10000011 13
134 86 186 10000100 14
135 87 187 10000101 15
136 88 190 10000110 17
137 89 191 10000111 1A
138 8A 192 10001000 lB
139 8B 193 10001001 20
140 8C 194 10001100 21
141 80 195 10001101 22
142 8E 196 10001110 23
143 8F 197 10001111 24
144 90 200 10010000 28
145 91 201 10010001 29
146 92 202 10010010 2A
147 93 203 10010011 2B
148 94 204 10010100 2C
149 95 205 10010101 30
150 96 206 lDOlDl10 31
151 97 207 10010111 33
152 98 2lD 10011000 34
153 99 211 1001lD01 35
154 9A 212 1001lDlD 36
204 EXPLORING THE PICK OPERATING SYSTEM

DECIMAL HEX OCTAL BINARY EBCDIC ASCII KEYBOARD

155 9B 213 10011011 38


156 9C 214 10011100 39
157 90 215 10011101 3B
158 9E 217 10011110 3E
159 9F 220 10011111 41
160 AO 221 10100000 42
161 Al 222 10100001 43
162 A2 223 10100010 44
163 A3 224 10100011 45
164 A4 225 10100100 46
165 A5 226 10100101 47
166 A6 227 10100110 48
167 A7 230 10100111 49
168 A8 231 10101000 4A
169 A9 232 10101001 4F
170 AA 233 10101010 51
171 AB 234 10101011 52
172 AC 235 10101100 53
173 AO 236 10101101 54
174 AE 237 10101110 55
175 AF 240 10101111 56
176 BO 241 10110000 57
177 Bl 242 10110001 58 2
178 B2 243 10110010 59 3
179 B3 244 10110011 62 4
180 B4 245 10110100 63 5
181 B5 246 10110101 64 6
182 B6 247 10110110 65 7
183 B7 250 10110111 66 8
184 B8 251 10111000 67 9
185 B9 252 10111001 68
186 BA 253 10111010 69
187 BB 254 10111011 70
188 BC 255 10111100 71
189 BO 256 10111101 72
APPENDIX C 205

DECIMAL HEX OCTAL BINARY EBCDIC ASCII KEYBOARD

190 BE 257 10111110 73


191 BF 260 10111111 74
192 CO 261 11000000 75 @
193 Cl 262 11000001 76 A
194 C2 263 11000010 77 B
195 C3 264 11000011 78 C
196 C4 265 11000100 8A 0
197 C5 266 11000101 8B E
198 C6 267 11000110 8C F
199 C7 270 11000111 80 G
200 C8 271 11001000 8E H
201 C9 272 11001001 8F
202 CA 273 11001010 9A
203 CB 274 11001011 9B K
204 CC 275 11001100 9C L
205 CO 276 11001101 90 M
206 CE 277 11001110 9E N
207 CF 280 11001111 9F 0
208 DO 281 11010000 AO P
209 01 282 11010001 AA Q
210 02 283 11010010 AB R
211 03 284 11010011 AC 5
212 04 285 11010100 AD T
213 05 286 11010101 AE U
214 06 287 11010110 AF V
215 07 290 11010111 BO W
216 08 291 11011000 Bl X
217 09 292 11011001 B2 Y
218 OA 293 11011010 B3 Z
219 DB 294 11011011 B4
220 DC 295 11011100 B5 \
221 DO 296 11011101 B6 ]
222 DE 297 11011110 B7
223 OF 300 11011111 B8
224 EO 301 11100000 B9
206 EXPLORING THE PICK OPERATING SYSTEM

DECIMAL HEX OCTAL BINARY EBCDIC ASCII KEYBOARD

225 E1 302 11100001 BA a


226 E2 303 11100010 BB b
227 E3 304 11100011 BC c
228 E4 305 11100100 BD d
229 E5 306 11100101 BE e
230 E6 307 11100110 BF
231 E7 310 11100111 CA g
232 E8 311 11101000 CB h
233 E9 312 111011001 CC
234 EA 313 11101010 CD j
235 EB 314 11101011 CE k
236 EC 315 11101100 CF
237 ED 316 11101101 DA m
238 EE 317 11101110 DB n
239 EF 320 11101111 DC 0

240 FO 321 11110000 DD P


241 F1 322 11110001 DE q
242 F2 323 11110010 DF
243 F3 324 11110011 E1 s
244 F4 325 11110100 EA
245 F5 326 11110101 EB u
246 F6 327 11110110 EC v
247 F7 330 11110111 ED w
248 F8 331 11111000 EE x
249 F9 332 11111001 EF Y
250 FA 333 11111010 FA z
251 FB 334 11111011 FB [ (start
buffer)
252 FC 335 11111100 FC \ (subvalue
mark)
253 FD 336 11111101 FD 1(value
mark)
254 FE 337 11111110 FE 1\ attribute
mark)
255 FF 340 11111111 FF (segment
mark)
APPENDIX

o
Verb Formats

The Terminal Control language processor (TCl) looks to the Master


Dictionary (MD) for the definitions of the commands entered by the
user. These verb-defining items cause TCl to perform system func-
tions, activate peripheral devices, or call other PICK processes. One
of the TCl commands is WHO; it causes TCl to display the port and
the user's logon 10. There is an item in the user's MD with the fol-
lowing format:

WHO
001 P
002 lOBB

Here is what those attributes in the item above mean.

001 P indicates that this is a verb.


002 1aBB indicates the entry point and ABS frame address. The 1 is
referred to as the entry point and is the decimal displacement
(offset branch address) at which execution is to begin in the ABS
frame. The formula used is (displacement * 2) + 1; hence there
can be no entry point zero in an ABS frame. aBB is the hexadec-
imal address of the ABS frame that contains the code for this
command.

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

TCl-11 verbs are a class of commands that require a verb, a filename,


and an item-id or an asterisk (*), which signifies all the items in a file.
Here are some examples:

>EDIT filename i temlist options<cr>


>COPY filename itemlist options<cr>
>BASIC filename itemlist options<cr>

The filename specification may be any of the following forms:


filename: This filename reference defaults to access the data section
of the specified file.

>EDIT STAFF 100<cr>

DieT filename: When the literal, DICT, precedes the filename refer-
ence, this instructs the system to access the dictionary level of the file.

>EDIT DICT STAFF NAME<cr>

filename,filename: This type of filename specification only occurs in


files that have multiple data sections. The first filename parameter re-
fers to the dictionary in which the file pointer will be found, and the
second filename indicates the data section to access.

>ED STAFF ,EXECUTIVES 108<cr>

Here is the format of a TCl-11 verb:

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

004 Typically null, this attribute is referred to as the mode-id 3. It is


used only in verbs such as LIST-lABEL and REFORMAT.
005 CUPN are alphabetic characters that act as codes to indicate
special functions of the verb. Each character is an operative to
the system indicating which functions to perform upon execu-
tion: C-copy item to process workspace, U-update permit-
ted, P-print item-id, N-new items allowed.

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

The forms are:

>SORT STAFF<cr>
>SORT STAFF BY NAME<cr>
>SORT STAFF BY NAME WITH AGE > .. 21" <cr>

The verb definitions are:

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.

Format of Attribute Definition Items


Here is a general format of an attribute-definition item, indicating the
location of the specification codes.

ATTRIBUTE DESCRIPTION

001 Called the DjCODE, it indicates the type of attribute being


defined:
A-Attribute definition
S-Synonym or logical attribute definition
X-Protected attribute used only in implicit reports
002 Called the AMC, or Attribute Mark Count, it defines the attri-
bute of the item to access.
210
APPENDIX E 211

ATTRIBUTE DESCRIPTION

003 Called the S/NAME, it defines the optional column heading.


004 Called the S/ AMC, it defines an association between multiple
parallel values over multiple attributes.
005 (Null); not used by ACCESS.
006 (Null); not used by ACCESS.
007 Called the V /CONV, it is used to define special conversions
that are applied to the data after it is processed.
008 Called the V /CORR, it is used to define special correlatives
that are applied to the data before it is processed.
009 Called the V /TYP, it defines the output column justification:
L-Left-justify attribute. If data being displayed is greater than
the width specified in attribute 10 of the dictionary-definition
item, left-justify causes the data to "break" and displays the
characters on the next line of output. Left-justify is always
used on alphanumeric data.
R-Right-justify attribute. It is used on all numeric data to as-
sure proper sorting sequence.
T- Text-justify attribute. This is like left-justify, but it prevents
words from breaking; rather, if a word won't fit onto the cur-
rent output line, the system backs up to the previous space in
the data and breaks the line there.
U-Unconditionalleft-justify output. This means that no mat-
ter how long the data is, it prints without wrapping around to
the next output line, occasionally overprinting data that may
have been requested to be displayed to the right of this
column.
010 Called the V/MAX, it defines the width of the output column
on ACCESS reports.

Conversion and Correlative Codes


Here is a summary of all the different conversion and correlative
specification codes, and where they can be used:

CONVERSION/CORRELATIVE ASSOCIATIVE CONVERSION CORRELATIVE


(ATTR 4) (ATTR 7) (ATTR 8)

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

CONVERSION/CORRELATIVE ASSOCIATIVE CONVERSION CORRELA liVE


(ATTR 4) (ATTR 7) (ATTR 8)

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

This Appendix is too brief to conduct a complete tour of the conver-


sions and correlatives, but here is a list of the forms and options for
each of the different specifications: (Note: In the following list, the
"( )" encloses an expression, while the" { }" indicates an optional
operand.)

The A Correlative
The general form is:

A { decimal positions} ;expression { expression}

The A specification is used to define algebraic functions for perform-


ing arithmetic and relational operations. A relatively recent enhance-
ment to the conversion and correlative specification codes, the
algebraic specification is by far the most powerful, capable of com-
bining nearly all the other conversion and correlative codes into a
kind of program.
The A specifications always begin with an upper case "A" followed
by a semicolon (;). The decimal-positions parameter is optionally
used to indicate the number of decimal digits (in the range 0-4) to
retain during calculations involving a mixture of whole numbers and
numbers with implied decimals, along with MR conversions in the
body of the function.
The A specifications are somewhat similar to PICK/BASIC expres-
sions and consist of operands, operators, and special functions com-
bined together to yield a single resulting value.

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

is retrieved before continuing with the processing of the specifica-


tion. For example:

008 A; 1 *2

This causes ACCESS to multiply the contents of attribute 1 by the


contents of attribute 2. Since these are direct references to the data,
the AMC defined in attribute 2 of the attribute-definition item is ig-
nored, although some numeric entry is still required. It is for this rea-
son that you may encounter a "99" in attribute 2 of a dictionary item.
This is referred to as a dummy AMC, simply placed there to satisfy
the syntax requirements of ACCESS.
9998: This is a special attribute number recognized by ACCESS to
produce a sequential number of the item on an ACCESS report. This
may also appear as an AMC in attribute 2 of an attribute-definition
item.
9999: This is another special operand that returns the size, or number
of bytes, contained in the data item. This may also be used as an
AMC reference in attribute 2 of an attribute-definition item.
N{attribute name): This type of operand allows a reference to any
other attribute-definition item in the dictionary of the same file. For
example:

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"

This example causes ACCESS to use the contents of attribute 8 of the


current item (presumably a date in internal format), and subtract it
from the current system date. The parentheses indicates the prece-
dence of processing and causes this operation to occur as the very
first step. After this calculation takes place, ACCESS divides the result
by the constant 365, yielding the approximate age in years.
NB: The NB operand is a very special code used in a sorted ACCESS
report that includes a BREAK-ON modifier for producing control
breaks. This code returns the current break level, beginning with zero.
214 EXPLORING THE PICK OPERATING SYSTEM

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:

A; (9*" 15")/" 10"

This specification means: take the contents of attribute 9, presumably


an integer number, and multiply (or scale) it by the constant, 15. It
then takes the product and divides (or descales) it by dividing the re-
sult by the constant, 10. This is effectively like taking the original
value contained in attribute 9 and multiplying it by 1.5. This is useful
due to a restriction of ACCESS; it simply cannot handle any math that
requires a decimal, so the principal of scaling and descaling numbers
is always useful in attribute definitions.
Substring Function: This is very similar to the T (Text extract) specifi-
cation in that the first parameter specifies the character position at
which the extract is to begin, and the second parameter indicates the
number of characters to extract for processing.
The general form is:
["beginning character position","length expression "]

Note that the double quote symbols are required around each num-
ber and that the brackets are actually part of the function. For
example:

008 A; 6 [ " 1 " • "3 " 1


APPENDIX E 215

This causes ACCESS to retrieve, from attribute 6, the first 3 characters


of the data.
S(expression}: This operand produces a summation of all of the
multivalues in the attribute referred to in "expression."
That covers the valid operands available to the A specification.
When multiple operands are used in an A specification, they are to
be delimited by one of the following operators:

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

When the logical operators are used, the A specification returns a 1 if


the expression is true, and a 0 if the expression is false. This can be
extremely useful in an ACCESS selection criterion, using an attribute
definition with a complex A specification. Remember, however, that
such a specification must appear as a correlative in attribute 8 of the
attribute-defining item, so as to be performed before the ACCESS se-
lection criteria are applied.

The C Correlative
The general form is:

Celementl ;element ... 1

The C specification is the Concatenate specification; it concatenates,


or joins together, any combination of elements.
Allowable elements are:

• Numeric constants, enclosed in quotes


216 EXPLORING THE PICK OPERATING SYSTEM

• An attribute number reference by its numeric attribute mark count


• Alphanumeric character strings. When delimited by semicolons,
strings must be enclosed in quotes. Otherwise, alphanumeric
strings are not separated from the other entries by semicolons.

The following example illustrates this:


Sample Data

001 Irvine
002 CA
003 92714

Sample C Correlative

008 C; 1 ; .. , " ; 2 ;" "; 3

Sample Output

Irvine. CA 92714

The C Associative
The general form is:

C;attrnuml ;attrnum ... 1

Controlling associative correlatives identify the controlling value of


multivalued attribute sets. Each attribute-defining item identified in
the "attrnum" parameters {s} must contain the dependent (D) code
and attribute number of the controlling attribute.

The 0 Associative
The general form is:

D;attrnum

Dependent associative correlatives define the dependent portions of


multivalued attribute sets. The attribute number specified in the
"attrnum" parameter must contain the controlling (C) code and at-
tribute number of the controlling attribute.

The 0 Conversion
The general form is:
APPENDIX E 217

01 year digits II skipdelimiter #skips II separation character I

Date conversion specification converts value from internal to a wide


range of external date formats. The internal storage form is the num-
ber of days past 12/31/67, which is considered day zero (0) in the
PICK world. (Legend has it that this was the first day of the first PICK
computer.)
The "year digits" parameter specifies the length of the year display. It
must be a whole number between 0 and 4. The default length is the
4-digit year format.
The parameters specified in "skipdelimiter" and "#skips" are func-
tionally equivalent to the G (group extract) specification. They define
the position of the date value in a multivalued attribute.
If included, the "separation character" parameter specifies the char-
acter that delimits the month, day, and year values. The output order
is 2-digit month, 2-digit day, and the year. The number of year digits
depends on the "year digits" parameter.
If the separation character parameter is omitted, the format is 2-digit
day, 3-digit month abbreviation, and year. Again, the number of year
digits depends on the "year digits" parameter.

EXAMPLES OF OATE CONVERSIONS

CONVERSION OUTPUT FORMAT INTERNAL ExTERNAL

D DDMMM YYY 6356 26 MAY 1985


D- MM-DD-YYYY 6356 05-26-1985
DO DDMMM 6356 26 MAY
DO- MM-DD 6356 05-26
DD Day of month 6356 26
DI Internal OS/26/85 6356
DJ Julian 6356 146
DM Month (numeric) 6356 5
DMA Month (alpha) 6356 MAY
DQ Quarter (numeric) 6356 2
DW Day of week
numeric) 6356 7
DWA Day of week (alpha) 6356 SUNDAY
DY YYYY 6356 1985
218 EXPLORING THE PICK OPERATING SYSTEM

The F Correlative
The general form is:

FI n \;elementl ;element ... }

The F correlative is the Function specification for performing arith-


metic and relational operations on data. It is a stack-oriented func-
tion, requiring the statement syntax to adhere to a Postfix Polish No-
tation format.
Note: For the most part, the F specification has been made obsolete
by the more flexible A Algebraic specification.
Here is an example of Postfix Polish Notation, where values are
pushed down onto a stack of values. The values are "popped" off the
stack and used every time that an operand is encountered.

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:

cl skipsegments} delimiter getsegments

The Group correlative extracts data values from a string containing


user-specified (non-reserved) delimiters.
APPENDIX E 219

The "skipsegments" is the number of group segments to skip over. It


must be numeric, and if it is omitted, zero is used.
The "delimiter" is any non-reserved character that separates part of
the stored data. Reserved characters are attribute, value, subvalue,
and segment marks.
The "getsegments" is the number of groups to return. It must be nu-
meric. For example: Stored data string = CA*92714*1000
Using the above example, the Group extract would be:
CORRELATIVE RESULT

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

This is called the Length specification. It specifies output length re-


strictions on data values. The "maxlength" parameter indicates that
the value will be output only if the length of the string is less than the
maxlength parameter; otherwise a null is returned.
The L code, followed by a 0 (zero), returns the length of the data
value instead of the data itself. For example:

LO Displays just the length of the data


L9 Indicates that the data will only display if the length of the string
is less than 9 characters
L3,9 Indicates that the data will only display if the length of the data
is greater than 3 characters and less than 9 characters
The M Conversion
The general form is:

M{ just} {precision} {scalefactor } {Z} {,signcode} {$} {(formatmask)}

This specification is sometimes referred to as the Mask Decimal func-


tion. It is designed to format data for display or printing. Its purpose is
220 EXPLORING THE PICK OPERATING SYSTEM

to perform output conversions, literal insertions, and currency


formatting.
The "just" specification indicates the justification of the string, either
L (left) or R (right).
The "precision" parameter, a number between 0 and 9, indicates the
number of decimal positions to print after the decimal point.
The "scalefactor," a number between 0 and 9, indicates the power to
which the data is to be descaled.
The "z" parameter suppresses zero balance fields.
The comma (,) parameter inserts commas in the thousands position
on output.
The "signcode" parameter indicates the following:

C Negative results are followed by the literal CR.


D Positive results are followed by the literal DB.
E Negative results are enclosed in angle brackets <result>.
M Negative results are followed by a "-" (minus) sign.
N This suppresses the leading minus sign on negative numbers. It's
very useful on Profit & Loss Reports.

The $ specification causes a "$" (dollar sign) to be appended to the


data prior to justification.
The "formatmask" may be any combination of literals and format op-
erators, such as:

# Fills display with blanks


* Fills display with asterisks
% Fills display with zeros

Each of these parameters is followed by a number, which indicates


the length of the mask.

The MC Conversion
The general format is:

MCI! lcharcode

The MC (Mask Character) function is used to convert alphabetic


strings to upper- or lower-case, and optionally to suppress the dis-
play of numeric or non-numeric characters, as shown in the following
examples:
APPENDIX E 221

MCA Displays only the alphabetic characters in the attribute


MC/A Displays only the all non-alphabetic characters in the at-
tribute and ignores alphabetic characters
MCDX Converts a decimal data value to its hexadecimal
equivalent
MCl Converts all upper-case characters to lower-case charac-
ters and leaves lower-case characters intact
MCN Displays only the numbers from a data value
MC/N Returns all non-numeric characters and ignores numeric
characters
MCP Converts all non-printable characters (characters between
X'OO-l F' and X'7F-FF') to periods. (Note that characters
above X'7F' display, but actually have different character
meanings as their high order bit is lost.)
MCT Converts upper-case characters to lower case, starting with
the second character in each word
MCU Converts all lower-case characters to upper case and
leaves upper-case characters intact.
MCXD Converts a hexadecimal data value to its decimal
equivalent.

Here are some examples:

CONVERSION SAMPLE DATA SAMPLE OUTPUT


MCA 121 MAIN STREET MAINSTREET
MCjA 121 MAIN ST. 121
MCDX 400 1024
MCl FRED MERTZ fred mertz
MCN 121 MAIN STREET 121
MCjN 121 MAl N STREET MAIN STREET
MCP <ctl>G
MCT CAROL O'CONNOR Carol O'Connor
MCU ethel mertz ETHEL MERTZ
MCXD 1024 400

The MT Conversion
The general form is:

MT or MTH or MTS or MTHS


222 EXPLORING THE PICK OPERATING SYSTEM

The MT specification is for Military Time. It converts time data values


from their internal format to any of several formats of external out-
put. The internal storage format of time is the number of seconds
past midnight.
The H specification in the MT conversion specifies a 12-hour clock.
The default is a 24-hour clock.
The S specification indicates that seconds should be displayed. Some
examples are:

CONVERSION SAMPLE DATA SAMPLE OUTPUT

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

The MX specification stands for the Mask Hexadecimal function. It


converts any decimal or ASCII character string to its hexadecimal
equivalent. For example:

CONVERSION SAMPLE DATA SAMPLE OUTPUT

MX 12345 3132333435
MX CHIP 43484950

The T Conversion
The general form is:

r{ startcolumn, llength or r{ startcolumn}

This is the Text extraction conversion. It retrieves any number of


characters from an attribute, starting at the position specified in
"startcolumn," for the number of characters specified in "length."
Both parameters must be numeric.
If the length parameter is not specified, the extraction begins from
the same end of the string as the jl:lstification attribute (9), either L
(left) or R (right). For example:
APPENDIX E 223

CONVERSION SAMPLE DATA SAMPLE OUTPUT

Tl,3 7145551212 714

The T Correlative
The general form is:

TIDICT }filenameicode\ vrnc liinamcioutarncl ibreakamc I

This is the Translation specification. It allows an attribute value to be


translated through another file. The attribute referenced in line 2 of
the attribute-definition item will be used as an item-id in the speci-
fied filename, and one of the attributes from the new item will re-
place the value in the original item.
To retrieve a specific value within the attribute, the optional value
mark count may be specified in the "vmc" parameter.
The translate code determines the action to take with translate val-
ues, when the data being translated does not exist on the translate file.

C Displays original value if value being translated does not exist in


translate file
V Displays an error message at the end of the report for each item
unsuccessfully translated
X Displays a null if value being translated does not exist on translate
file

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:

CONVERSION SAMPLE DATA SAMPLE OUTPUT

TSTA TESiCii1 CA California


TST ATESiXii1 CX (no output)

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

As a reference tool, we have included this list of some attribute-


definition items used as examples in our tutorials. It has been our ex-
perience that one can usually remember a particular technique by re-
ferring to an example. Here is a quick reference to the attribute-
defining items and the conversion/correlative specifications used in
the tutorial examples. The table below lists ACCESS dictionary items.

Item-id: NAME ADDRESS CITY STATE


001: A A A A
002:1 2 3 4
003:NAME ADDRESS CITY STATE
004: (null) (null) (null) (null)
005: (null) (null) (null) (null)
006: (null) (null) (null) (null)
007: (null) (null) (null) (null)
008: (null) (null) (null) (null)
009: L T L L
010: 15 20 15 5

Item-id: ZIP PHONE HIRE.DATE BIRTHDAY


001: A A A A
002: 5 6 7 8
003: ZIP PHONE HIRE.DATE BIRTHDAY
004: (null) (null) (null) (null)
005: (null) (null) (null) (null)
006: (null) (null) (null) (null)
007: (null) ML((###) ###-####) 02/ D2-
008: (null) (null) (null) (null)
009: R L R R
010: 5 14 8 8

224
APPENDIX F 225

Item-Id: SALARY CSZ AREA.CODE STATE.NAME


001: A A A A
002: 9 3 6 4
003: SALARY CSZ AREA.CODE STATE.NAME
004: (null) (null) (null) (null)
005: (null) (null) (null) (null)
006: (null) (null) (null) (null)
007: MR2,$ (null) (null) (null)
008: (null) C;3;1I, 1/;4;" #;5 Tl,3 TSTATES;C;;l
009: R L R L
010:10 30 9 12
Item-id: DATE1 DATE2 DATEJ DATE4
001: A A A A
002: 7 7 7 7
003: DATEl DATE2 DATE3 DATE4
004: (null) (null) (null) (null)
005: (null) (null) (null) (null)
006: (null) (null) (null) (null)
007: D2/ D D- DMA
008: (null) (null) (null) (null)
009: R R R L
010: 8 11 11 12

Item-id: UL.NAME UL.CSZ UL.ADDRESS UL.STATE


001: A A A A
002: 1 3 2 4
003: UL.NAME UL.CSZ UL.ADDRESS UL.STATE
004: (null) (null) (null) (null)
005: (null) (null) (null) (null)
006: (null) (null) (null) (null)
007: MCT MCT MCT MCT
008: (null) C;3;", ";4;" 11;5 (null) TSTATES;C;;l
009: L L L L
010: 15 30 25 12

Item-id: MR.1 MR.2 MR.3 MR.4


001: A A A A
002: 9 9 9 9
003: MR.l MR.2 MR.3 MR.4
004: (null) (null) (null) (null)
005: (null) (null) (null) (null)
006: (null) (null) (null) (null)
007: MR2 MR2,D$ MR2,$ MR2,$*12
008: (null) (null) (null) (null)
009: R R R R
010: 8 11 8 12
226 EXPLORING THE PICK OPERATING SYSTEM

Item-id: FIRST.NAME LAST.NAME SALARY+50


001: A A A
002: 1 1 9
003: FIRST.NAME LAST. NAME DUES+50
004: (null) (null) (null)
005: (null) (null) (null)
006: (null) (null) (null)
007: T2,99 (null) MR2/$
008: Gl,l G,l A;(9*"150")/,,100"
009: L L R
010: 15 15 10

Item-id: SALARY-25 AGE


001: A A
002: 9 8
003: DUES-25 AGE
004: (null) (null)
005: (null) (null)
006: (null) (null)
007: MR2,$ (NULL)
008: A;(9*'75")/,,1 00" A;(D-8)/"365"
009: R R
010:10 5
INDEX

ABS, 149-152, 185 ACCESS (cont.)


and PICK sphere structure, 8 modifiers and options, 97-102
ABS frames, 156, 185 NOPAGE modifier or (N) option, 102
address, 207 output redirection, 80
assembly language problems, 169 PICK/BASIC activation, 80
size, 187 and PICK sphere structure, 8
system, 160 POINTER-FILE, 46, 91-92, 93-94
and System Debugger, 156 PROCs, 80, 105
ACCESS, 11, 13, 24-26, 59, 79-104 PROCs, samples, 111-120
activation from PROCs or PICK/BASIC, 80 quotes, 89
adding and converting attributes, 102-104 selection criteria, 26, 86-89
algebraic functions, 163-164, 212 string searching, 88-89
and attribute-defining items, 15, 24-26, 80-83, throwaway connectives, 86
104,180 TOTAL modifier/option, 102, 163-164
Boolean operators, 87-88, 101 value string, 87, 101
BREAK-ON modifier/option, 98, 163-164, 213 verbs, format, 79-80,207-209
BY-DSND modifier, 98-99 verb structure, 209
BY modifier, 98 WITH modifier, 101-102
COL-HDR-SUPP modifier or (C) option, 91,99, see also Conversions and correlatives,
114 ACCESS commands
data base applications, 162-164 COPY -LIST, 95
DET-SUPP modifier or (D) option, 99 COUNT,89-90
dictionary items, tutorials, 224-226 DELETE-LIST, 95
dynamic indexing, 26 EDIT-LlST,94-95
features, 80 GET-LlST,94
FOOTI NG modifier, 99-100 LIST, 35-36, 48-49, 85-86, 90-93
HDR-SUPP modifier or (H) option, 100 LlST-ITEM,90
HEADING modifier, 99-100 LlST-LABEL,90-91
ID-SUPP modifier or (I) option, 100 list processing, 91-95
I F modifier, 101-102 SAVE-LIST, 17,46,49,93-94
integer arithmetic only, 214 SELECT and SSELECT, 46, 92-93, 94, 96, 165
logical operators, 87, 101-102, 215 SORT-ITEM,90
LPTR modifier or (P) option, 35, 36, 102 SORT-LABEL, 90-91, 113-114

227
22B EXPLORING THE PICK OPERATING SYSTEM

ACCESS commands (cont.! ASCII COOl'S


Llpe-hanoling, 95-97 attribute marks, 155
T-DUMP, 95-97,131 listeo, 199-206
T-LOAD,97 ASCII files, variable-length, 4
ACC file, 19, 45 Assembly formatter, EDITOR, 55
Account(s), 8, 10, 185 Assembly language, PICK, 18
creating, 28, 41-44 BREAK, and type-ahead buffer, 3 I
Master Dictionary, 15; see also Master cL conventional assembly language, 169
Dictionary EDITOR, formatter, 55
names, 28-29, 42 meta-code, 169
Accounting history (ACC) file, 19,45 Illonitor, 157
Accounting software, 177 and PICK sphere structure, 8
general, 19l and privilege level, 43
specializeo, 198 problems with using, 169- 170
ACCOUNT-SAVE commano user ABS area, 149-152
format, 129 see also Debugger, System
ADDD commano, 31 Association Illanagement software, 177, 190
ADDS (Applied Digital Data Systems), 6, 171-172 Associations, 10
termtype, 126, 127 specification, 81
ADDX commano, 34 Associatives, 25, 210
ADP, (J, 172 Attribute-defining items, 15,24-26,81-83
Advertising agency software, 177, 189 adding, 104
Agriculture software, 177 dictionary, 82-83
Algebraic: functions, 163- 164,212 editing, 83-86
Allocations, file, 51-53 features, 81
Altos Computer Systems, 6, 171 format, 24-25, 81
Ambulance service softw<ne, 177 importance to ACCESS, 80
AMC (Attribute Mark Count), 25, 81, 185, 221, Open Architecture, 180
212-211 see also Conversions and correlatives, reference
Ampex terllltype, 127 Attribute mark, 185-186
Animal license management software, 189 DUMP screen, 155
Answering service software, 177 generating, from keyboard, 3D
Apparel industry software, 177, 189 Attribute Mark Count (AMC), 25, 81, 185,
Application generation software, 166- 168, 212-213,221
177-178 Attributes, 9, 10, 15, 22-26, 185
venoors, 189- I 9() data retrieval by, 24-26
Applications, PICK definition type, 25
algebraic functions, 163- 164,212 logical,9
assembly language, 168- 170 name, 24
data base, 162-164 PICK/BASIC, 121
PROC ann PICK/BASIC 164-166 pointer type, 81
Applications software, 13 value and subvalues, 10
availability, 176-177 Autolllatic Data Processing (ADP), 6, 172
listeo, 189-198 Automotive industry software, 177, 190
trenos, 177-178 Available frame, 158
Applieo Digitill Data Systems (ADDS), 6, 171-172 Aviation software, 177
termtype, 126, 127
Architecture management software, 190 Backup and restore, 20
Artificial intelligence, 181 Bank management software, 177, 190
inferential algorithm, 182 Bar-code readers, 169
and relational data base system, 181-182 BASE, 43
uspr interface, 182 Base conversion, 34-35,221,222
INDEX 229

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

Core locked, 158 DELETE-LIST command, 95


Correlatives, 25, 81, 186; see a/so Conversions Deleting, EDITOR, 75-77
and correlatives, reference Delimiters, 22, 186
Cosmos Revelation IBM PC, 175 DE (Delete Line) command, 68-69
COU~ T command, 89-90 EDITOR, R command, 66
CIJ/M-86,171 ERRMSG file, merging from, 71
CPU generating, from keyboard, 30
multi-tasking/multiuser, 146, 181 ME (Merge) command, 69-72
time-slice allocation, 158 RU (Replace Unconditionally) command, 67
CREATE-ACCOUNT command, 41-44 Demographics software, 191
CREATF-FI IE command, 16, 23, 25, 46-47, Dental office management software, 177, 191
208-209 Devcom,6
POINTER-FILE,92 DICT filename, 40-41
selecting size parameters, 50-53 Dictionaries, 4, 9-10, 14-21, 186
Credit union management software, 177, 191 attribute-defining items, 82-83
CRT, See Terminal construction, 46
Customization, 167 and CREATE-FILE, 46-47
data base applications, 162
Dairy route accounting software, 177, 191 d. data files, 9-10
Data base, relational, 2, 3, 4, 7 editing entries, 83-86
applications, using PICK, 162-164 and EDITOR, 40-41, 54
and artificial intelligence, 181-182 listings, tutorials, 224-226
ami PICK sphere structure, 8 modifying, 104
DATA/BASIC, 6 verb format, 208
Data entry, screen formatting, 166 see a/so Conversions and correlatives,
Data files, 10 reference; Master Dictionary
d. dictionary, 9-10 Digital Equipment Corp. (DEC), 175
Datamedia, 6, 172-173 Direct sale software, 177
termtype, 126 Disk storage/drives, 12
Data retrieval/storage frame format, 148-149; see a/so Frame
by attribute, 24-26 organization, 14-21
by item-id, 23 and privilege level, 18-19
see a/so ACCESS see also Magnetic media; Overflow; Tape
Data structure, variable-length ASCII files, 4 storage/ drives
Dates Distribution system software, 191-192
on coldstart, 160 DIYD command, 33
entering, 120 DIYX command, 34
formatting and conversion, 217 DTR command, 35
internal structure and conversion, 9,213 DUMP command, 17
PROC. pattern matching, 119-120 frame analyzed, 153-156
D/CODE, 16,17,210 and privilege level, 19
Debugger. Assembler, BREAK, and type-ahead
buffer, 31 EBCDIC codes, 199-206
Debugger, PICK/BASIC, prompt character. 29-30 EDIT command, format, 40-41
Debugger, System Editing entry errors, 30
ABS frames, 156 EDIT -LIST command, 94-95
and privilege level, 19,43 EDITOR, 11, 25, 54-78
prompt character, 30 activating, 56-57
DEC, 175 Assembly formatter, 55
DECATALOG command, 124 attribute-defining items, adding, 104
Decimal number conversion, 34-35, 221,222 buffers, 55, 57-58
Decimal output, precision, 220 COL#? message, 66
Deleted item recovery, EDITOR, 76-77 data base applications, 162
DEI ErE-FIlE command, 49 deleted items, recovering, 76-77
INDEX 231

EDITOR (cont.) Equipment maintenance/management software,


deleting, 75-77 177,192
and dictionary, 40-41, 54, 83-86 ERRMSG file, 37,46
EOI (End of Item) message, 61, 78 merging from, 71-72
and ERRMSG file, 37, 46, 71-72 ESCAPE key, 78
exiting, 74-75 Evolution Computer, 6, 159, 173
invoking, 40-41
item, entering, 58-59 FID. See Frame-id
line numbers, 56 Fields. See Attributes
line pointer, 55, 56, 61 Fifth-generation computers, 183-184
merging from other files, 72 File, 186
modes, Command d. Insert/Replace, 54 allocations, displaying, 51-53
PICK/BASIC source code, 121 creation, 16; see also CREATE-FILE command
POINTER-FILE, 46, 91-94 size parameters, 50-53
prestored functions, 77-78 File-defining items, 15, 16
PROCs, samples, 54, 111-120 format, 16-17
prompt characters, 28-30, 60, 65 FILELOAD command, 19
Q-pointer, 21 Filename, 40-41, 186, 208
saving items, 72-77 File pointers, 14-21
SEQN? message, 58 listing, 35-36
wildcard function, 55 FILE-SAVE command
EDITOR commands format, 129
? (Display Item-id and Filename), 55, 61 Open Architecture, 180
B (Bottom of Item), 64 and privilege level, 19
<cr> (Display Next Line), 64 File structure, PICK, 3
EX (Exit Item), 74-75 dictionary d. data files, 9-10; see also
EXK (Exit and Kill), 75 Dictionaries
F (Flip), 57-58,63,103 flat files, 3, 4, 25
FD (Delete Item), 75-77 indexed,4
FI (File item), 55, 61, 65, 72-74 variable-length ASCII, with dictionary, 4
FIK (File Item and Kill), 74 Financial modeling/planning software, 177, 192
FlO (File Item and Overwrite), 72-73 Firmware, 181
FS (File Item and Remain in EDITOR), 74 monitor implementations, 159
G (Go to Line NUmber), 63 Fixed asset management system, 192
I (insert), 55, 59, 60 Flat files, 3,4, 25
listed, 55 Footers, 99- 100
L (list), 55, 59-61 Formatting, data output, 215-222
N (Increment Line Pointer), 64-65 hexadecimal, 222
PD (Prestored Display), 77 numeric, 219-220
line positioning, 63-65 strings, 220-221
R (replace), 61, 65-67 time, 221-222
S? (Display Size of Item), 55, 62 Form queue, 135-136, 141
S (Suppress Display of Line Numbering), 62-63 Frame(s), 12, 17, 18, 147-149, 186-187
T (Top of Item), 65 attribute mark, 155
U (Move Line Pointer Up), 64 buffers, 148
Education software, 177, 192 and CREATE-FILE, 47
Electric utilities software, 177 DUMP analyzed, 153-156
Electronic mail, 192 linkage fields, 152-153
Encryption, password, 44 linkage fields, DUMP screen, 154
END, 31, 37 NNCF,152
Energy software, 177 Open Architecture, 180
Entry errors, correcting, 30 segment mark, 155
Entry point, 207 selecting size parameters, 50-53
EOI (End of Item) message, EDITOR, 61,78 separation parameter, 154
232 EXPLORING THE PICK OPERATING SYSTEM

Frames (cont.) IBM


structure, 152-156 360, 5
terminators, item and group, 155 4300,2,6, 174
user data, 151 Series/l, 6, 172
Frame-id (FlO), 17, 147-149, 186 termtype, 126
base, 16, 17, 23, 52, 186 IBM PC-AT, 7,179
DUMP screen, 154 IBM pc, PICK emulations, 172, 175
Hash Address Table, 157 IBM PC-XT, 2, 7, 174, 178-179
maximum (MAX-FlO), 151, 152 bootstrap, 160
overflow table, 149 multi-user, 179
status, and monitor, 157-1511 PICK enhancements, 179
Freight software, 177 Indexes, 4, 15,24
Fujitsu Micro Systems, 7, 1n dynamic, ACCESS, 26
Fundraising software, 192 and flat files, 25
Inferential algorithm, 1112
General Automation, 173 Initial Program load (IPL) process, 159
GET-liST command, 94 Input Storage (IS) area, 150, 151
GFE (Group Format Error), 187 Insurance agency software, 177, 194
GIM,5 Integrated circuit, 1118
CIRlS,5 Intel
Government management software, 194 8086,171,173,174
Crain management system software, 194 8088, 174,178
Crant management softwarp, 194 80186, 174
Graphics, 1113 Interactive systems, 2
GROUP command, 51-53 International Data Base Management Association,
Group Format Error (GFE), 187 189
Group(s), 17-111, 149 Interrupt-driven architecture, 181
and CREATE-FilE, 47 Interrupts, monitor, 1.18
determination, 23 n
Intertechnique, 6, 1
terminator, DUMP screen, 155 I nventory management software, 194, 196
Guest operating systems, 179-181, 1113 I nvestment management software, 177, 194
I/O Busy, 158
Hash Address Table (HAT), 157, 159, ISAM,15
t lashing, 15, 18, 23, 51-51, 116, 1ll1, 187 Item(s), 1il7
HAT (Hash Address Table), 157, 159 delimiters, 22
Headers, 25, 81, 99-1 OU entpring, EDITOR, 58-59
default, 83 numbering, 24
PROC, 120 size, 22
Health club management software, 177 size, Open Architecture, 7, 180
Help, on-line, 196 structure, 22
Hewlett-Packard 3000, 6, 172 terminator, DUMP screen, 155
Hexadecimal, 44 Item-id, 9, 15, 22-26, 187
arithmetic, 34 data retrieval by, 23
conversion from and to, 34-35,221,222 and EDITOR, 56-57
formatting, 222 group generation, 23
reel number, 130 location by, 23
values, delimiters, 22 Itemlists
History Storage (HS) area, 150, 151 in Tel-II commands, 40-41
H itach i, 1 72 temporary, 93
Honeywell, 6, 159, 175 Ithaca Inter Systems, 172
Horizontal market software, 176-177 Itoh, c., 172
Hospital management software, 177, 194
Hotel/motel management software, 177, 197 Japanese character set, 175
Housing authority softwarp, 177 Job shop software, 194
INDEX 233

Justification, 16, 19~20, 25, 81,211,220 LOGTO command, 45


Q~pointer, 20~21 Low disk (process workspace), 149~ 152
LPTR modifier, 35, 36, 102
K (kilobytes), 187 Lumber industry software, 177
Kernel, 13, 156; see also Monitor
Keyboard input Magnetic media
pattern match i ng, 1 1 7 ~ 1 19 ACCESS commands, 95~97
PROC, 108~ 109 attaching, 128~ 129
KSAM,15 backup and restore, 20
block size, 128
Labels, 90~91 commands, 128~ 133
file, 129~ 130 detaching, 129, 133
media, 133 label, 129~ 130, 133
Labor union software, 177 logical structure, 129~ 130
Landscape contracting software, 194 output to, 80, 142
Laser disks, 169 positioning, 130~ 131
Law enforcement software, 177 and privilege level, 43
Law management software, 177, 194 reading, 131 ~ 133
Lear Sigler termtype, 126 reallocation modulo and separation, 17
Lease/rental management software, 177 see also Disk storage/drives; Spooler; Tape
Library software, 177, 194 storage/drives
Linkage, 187 Mail order software, 177, 195
Linkage fields, 152, 153 Manufacturing software, 195
DUMP screen, 154 Marine/maritime software, 177
Link editing, 3 Marketing management software, 195
LlSPEQS command, 136~ 138 Masks, output, 81
LISTABS command, 139 Master Dictionary, 8, 10, 15
LlSTACC command, 19 and account creation, 41
LIST command, 35~36, 48~49, 85~86, 90 and EDITOR, 56
deleted files, 49 file pointers, 46
POINTER~FILE, 91 ~92 logon, 28
temporary item lists, 93 and PICK/BASIC source code files, 122
LlSTCONN command, 36 and privilege level, 18~ 19,43
LlSTFILES command, 35~36, 47 and PROC menus, 107
output explained, 45~46 verb items, 207~209
LlST~ITEM command, 90 as workspace, 151
LlST~LABEL command, 90~91 see also Dictionaries
List processor, 195 Mathematical operators, 215
LlSTPTR command, 138 MAX~FID, 151, 152, 160
LlSTVERBS command, 36 McDonnell Douglas Computer Systems Company
Loan processing software, 177, 195 (formerly Microdata), 2, 6, 159, 173~ 174
Local area networks, 182 MD. See Master Dictionary
Logging off, 32 M/DICT,46
Logical attributes, 9 Medical office software, 177, 195~ 196
Logical links, data base applications, 162 Megabyte, 187
Logical operators, 87, lOl ~ 102, 215 Membership software, 177
LOGOFF command, 37 Memory management, 12~ 13
Logon and multi~user systems, 15
id, 15; see also Item~id see al50 Frame; RAM; Virtual memory
item, 18 Memory, programmable read only (PROM), 188
PROC, turnkey applications, 165~ 166 Menus, PROC, 107~111, 165~166
SYSPROG,29 MESSAGE command, 37~38
and TCL, 27~29 Microdata Corp., 2, 6, 159, 173~ 174
LOGON command, 36~37 Microfilm~retrieval software, 191
234 EXPLORING THE PICK OPERATING SYSTEM

MLOAD command, 169-170 Operating systems, 2


Mode-id, 208-209 guest, 179-181, 183
Modulo, 16, 17, 187 Output formatting, masks, 81
and account creation, 43 Output redirection, 80
and CREATE-FILE, 46 Output Storage (OS) area, 150, 151
reallocation, 20 Overflow, 187
selecting size parameters, 50-53 displaying, 38
Monitor, 187 and spooler, 135
assembly language, 157 Table, 149, 160
"bubbling up," 158
Buffer Status Table, 157, 159 Partnership management software, 177
firmware-based implementation, 159 Password, 16
functions, 157 account creation, 42-43
Hash Address Table, 157, 159 changing, adding, deleting, 18,44-45
interrupts, 158 encryption, 44
multi-tasking, 183-184 SYSPROG,28
peripherals and clock, 157 PASSWORD command, 18,44-45
port priority, 159 Pattern matching, PROC, 117-119
process, interactive d. batch, 158-159 Payroll software, 196
process scheduling, time-slice allocation, 158 PCB (Primary Control Block), 149-152, 187
p-system architecture, 157 Peripherals. See specific peripherals
workspace establishment, Overflow Table, 160 Personal computers. See IBM PC
Motorola MC68000, 6, 7,151,154,172,174,175 Personal agency/management software, 177, 196
MP /M-86, 171 Pertec Computer Corp., 6, 174
MS-DOS, 4, 13, 171 termtype, 127
MSG command, 37-38 Pharmacy software, 177, 196
MULD command, 34 Physical fitness software, 177
Multi-tasking, 181 PIB (Primary Input Buffer), 187
Multi-user systems, 178, 182 Pick, Dick, 2, 5, 6, 179
CPU, 146 PICK
IBM PC-XT, 179 advantages, 2
memory mapping, 15 as data base, 24
Multivalues, 214 emulations, 172, 175
MULX command, 34 feature trends, 178-179
guest operating systems, 179-181
NCR. See ADDS history, 2, 5-7
Nelson, Don, 2, 5 influence, 3, 5
NEWAC file, 41-42, 43-44 on-line help, 196
Newspaper circulation software, 196 as precursor of artificial intelligence, 182
Nixdorf Computer Corp., 7, 174 publications, 189
NNCF (Number of Next Contiguous Frames), 152 sphere structure, 8
Non-profit organization software, 177 terminology, introduction, 8-10
Numerical output, formatting, 219-220 training, 198
see also Open Architecture
OASIS, 171 Pick and Associates, 6, 7
OFF command, 32 PICK/BASIC, 3, 6, 11, 121-124
Office automation, 196 ACCESS activation, 80
Office product software, 177 activating compiled programs, 122-123
Off-line media. See Disk storage/drives; Mangetic applications, 164-166
media; Tape storage/drives BREAK, and type-ahead buffer, 31
Oil and gas software, 196 CATALOG and DECATALOG commands, 124
Open Architecture, 7, 179-180 compiling, 122-123
new features, 180 and EDITOR, 54, 121
workspace structure, 1SO features, 121
INDEX 235

PICK/BASIC (cont.) Processes (cont.)


invoking, 40-41 workspace (low disk), 149-152
modifying files containing source code, 122 PROC language, 11, 46, 105- 120
Open Architecture, enhancements, 180 ACCESS activation, 80
and PICK sphere structure, 8 applications, 164-166
PROCs, 105 command line, 106
prompt character, 29-30 and EDITOR, 54
RUN command, 123-124 examples, 111-120
source code, 17, 121 headers, 120
subroutines, 121,165,166 identifying items as, 105
PICK Hits and PICK Software Directory, 189 interactive mode, 118-120
PICK Systems, 6, 174 linkages (transfer of control), 106-107
POINTER-FilE file, 46, 91-92 menus, 107-111, 165- 166
saving, 93-94 pattern matching, dates, 119-120
Pointers, file, 14-21, 25-36 pattern matching, keyboard input, 117-119
Polish notation, 218 and PICK sphere structure, 8
Port quoting output, 119-120
messages to, 38 rules and conventions, 105-106
numbers, 28, 36 Secondary Output Buffer, 114
priority and time-slice allocation, 158- 159 statement labels, 105- 106
Portability, 3, 178, 182, 183 verb format, 208-209
and monitor, 156 PROC language, commands
p-system architecture, 157 A, 119-120
Postfix Polish notation, 218 B (bell), 115
POVF command, 38 C (comment), 108
Power-down, 161 D, DO, Dl, D2 (display buffers), 116
Power-up, 159-161 GO (go to label), 106, 111
establishment of virtual workspace, 149 H (move string to output buffer), 1 12, 114
Primary Control Block (PCB), 157, 187 IF (conditional processing), 109- 111, 115-116
Primary Input Buffer (PI B), 187 IP (suspend pending keyboard input), 108-109,
Prime Computer, 6, 175 115
Printers, 4 P (process), 112
ACCESS output to, 80 RI (reset input buffer), 108, 115
coldstart, 160 Sl (primary input buffer), 109, 111
control commands, 125- 128 S2 (secondary input buffer), 116
COPY-LISTing to, 95 STON (stack on), 114
displaying, 138-139 T (terminal), 108-109, 115
file-defining attributes, 19 X (exit to TCl), 109, 112
labels, 90-91 Programming tools, 197
logical address, 135 PROM,188
lPTR modifier or (P) option, ACCESS, 35, 36, 102 Prompt characters, 29-30
restarting, 134 EDITOR, 29-30, 60, 65
types (serial and parallel), 135- 136 TCl, 28, 29
5ee a/so Spooler Property appraisal software, 177
Printing production software, 196 p-system (pseudo-system) architecture, 157,
Privilege levels, 18-19 183-184
account creation, 43 Publishing management software, 177, 197
Process Control Block workspace (pCB), 149-152
Processes, 13 Q-pointer, 20-21, 91-92, 188
BREAK,31 QSElECT,52
resuming, 32 QUOTES, 214
scheduling, 158 ACCESS, 89
terminating, 31-32 PROC Output, 119- 120
user, 28 and verb formats, 208-209
236 EXPLORING THE PICK OPERATING SYSTEM

Radio scheduling software, 197 Sequential accessing methods, 15


RAM, 2, 3,12,160,188 Sequential files, 25
size, 147 SET-FILE command, Q-pointer, 21
R/B/\SIC, 175 SET-TERM command, 125-128
Re,11Iocdlion,17 Shell, 13
Illodulos, 20 Sigma 7,6
Record, See Item SMI,174
RFCOVER-FD command, 76 S/NAME,211
Regent termtype, 127 SORT command, 83, 98
Registers, virtual memory, 23 SORT-ITEM command, 90
Relational database, See Data base, relational SORT-LABEL command, 90-91
Religious administration software, 177, 197 in PROC, 113-114
Report generation SP-ASSIGN command, 52, 134, 136, 137,
applications generators, 167 139-142
attributes, 19 SP-EDIT command, 142-144
see also ACCESS SP-KILL command, 138, 144-145
Report writers, 197 Spooler, 134-145
Restaurant management software, 177, 197 choke function, 140
Restore and backup, 20 entry types, normal and hold, 134
RESTORE command, 17 features, 134
Retail management software, 197 form queue, 135-136, 141
Retrieval code, 16, 18 hold files, 141
and account creation, 42 immediate output, 141
Q-pointer, 20-21 LlSPEQS command (Display Spooler Entries),
RS-232C interface, 4, 135, 160 136-138
RTD command, 35, 52 LlSTABS command (Display Current Spooler
RU" command, 123-124 Assignments), 139
Run-lime systems, 167 LISTPTR command, 138
output to magnetic media, 142
Sales management software, 177, 197 overflow space, 135
S/AMC, 211 SP-ASSIGN command, 52, 134, 136, 137,
SAVE format, 129-130 139-142
SAVE-LIST command, 17,46,49,91-94 SP-EDIT, 142-144
S-100 bus, 172 SP-KILL, 138, 144-145
Scalefactor, 220 SP-OPEN command, 138
Scaling, numerical, 214 SP-STATUS command, 139
Screen formatting, 166, 167; see also Terminal STARTPTR, 135-136
Security :STARTSPOOLER command, 135
codes, 16, 18, 20-21 system printer, suppress, 142
PICK/BASIC, 121 SP-OPEN command, 138
run-time systems, 167 Spreadsheets, 198
vendor, 171l SP-STATUS command, 139
Securily system software, 198 SSELECT and SELECT COMMANDS, 46, 92-94, 96
Segment Mark, 188 STARTPTR, 135-136
DUMP screen, 155 :ST ARTSPOOLER command, 135
SEI ECT and SSELECT commands, 46, 92-94, 96, Statistical analysis software, 198
165 Strings
Selection criteria, ACCESS, 26,86-89 concatenation, 216
Separation, 16, 188 formatting, 220-221
and account creation, 43 searching, ACCESS, 88-89
and CREATE-FILE, 46 substring operations, 214-215, 222-223
selecting size parameters, 50-53 SUBD command, 34
Separation parameter, DUMP screen, 154 Subscription software, 177
SEQN? message, EDITOR, 58 Substring operations, 214-215, 222-223
INDEX 237

Subvalue, 10, 188,214 TCl commands (cont.)


PICK/BASIC, 121 lOG TO, 45
SUBX command, 34 PASSWORD, 18,44-45
Surveying system software, 177, 198 POVF,38
SYS-GEN tape or diskette, 160 RECOVER-FO, 76
SYSPROG account, 18 TCl-l, 32-33
and account creation, 41 TCl-II,40-41
logon, 29 WHO, 33, 39, 45, 207
password and user ID, 28 T-DET command, 129-133
and privilege level, 19 T-DUMP command, 95-97,131
SAVE format, 129 Telephone management software, 169, 198
System Configuration Table, 160-161 Televideo termtype, 127
System Debugger. See Debugger, System Temporary item lists, 93
SYSTEM file, 8, 10, 15, 18, 188 T-EOD command, 131
password storage, 44 TERM command, 125-128
pointer to, 46 Terminal, 4, 186
and privilege level, 19 bit-mapped, 180
user ID, 27-28 characteristics, interrogating, 127-128
as workspace, 151 control commands, 125-128
Systems Management, Inc. (SMI), 6, 174 file-defining attributes, 19
System Transaction log, Open Architecture, 180 output, PROC formatting, 107
PAGE vs. NOPAGE modes, 144
Tape storage/drives, 12, 181 Terminal Control language. See TCl
commands, 95-97 Terminating processes, 31-32
and privilege level, 18-19 Terminators, DUMP screen, 155
see also Disk storage/drives; Magnetic media; Terminology, PICK, introduction, 8-10
Spooler Textile software, 198
T-ATT command, 96-97,128-131 T-FWD command, 130
TAU Engineering, 7, 174-175 Throwaway connectives, ACCESS, 86
Tax collection software, 177 Time
T-BCK command, 130 coldstart, 160
TCL, 11, 18,27-53,188 formatting output, 221-222
and applications software, 27 internal format, 214
control characters, 30 TIME command, 33
correcting entry errors, 30 Time/services reporting software, 177
logon, 27-29 Time-slice allocation, 158, 188
PROCs, 105 Tire industry software, 177
prompt character, 28, 29-30 T-lOAD command, 97
sending messages, 37-38 Trades/exchange software, 177
type-ahead buffer, 30-31 Training, PICK, 198
verbs, 32-39 Translation
TCl commands data base appl ications, 162
base conversion, 34-35 dictionary specification, 9, 10
BLOCK-PRINT, 39, 136 Transportation software, 177, 198
calculator-related, 33-34 T-RDlBl command, 133
CLEAR-FilE, 48-49,53 T -READ command, 131, 132
CREA TE-ACCOU NT, 41-44 T -REW command, 96-97, 130, 131, 132
CREATE-FilE, 16,23,25,46-47,50-53,92, Trucking industry software, 177
208-209 Trust administration software, 177
DElETE-FllE,49 TRW,S
LIST, 35-36,48-49,85-86,90-92 Turnkey applications, logon PROC, 165-166
LlSTFllES, 35-36, 45-47 T-WEOF, 49,52
lOGOFF,37 Type-ahead buffer, 30-31
lOGON,36-37
23B EXPLORING THE PICK OPERATING SYSTEM

Ultimate Corp., 6, 159, 175 Veterinary office software, 177


Union management software, 198 Virtual machine architecture, 24, 182
UNIX, 4,13,171,180 Virtual memory, 2, 7, 23, 146-152
Update code, 16, 18 assembly language problems, 169
and account creation, 42 and disk storage, 148-149
Q-pointer, 20-21 enhancements, Open Architecture, 7
User(s) and file pointer system, 14
ABS area, 149-152 least recently used algorithm, 148
area, 149, 151-152 monitor, 13
-friend Iy systems, 1, 2 registers, 23
10,27-29 see also Frame; Frame-id; Monitor
interface, 1, 2, 182 Virtual workspace, 12-13
listing, 36 structure, 149-152
MO,28 V/MAX, 211
port, 28 Voter registration software, 177
process, 28 VSAM,15
Utility management software, 198 V /TYP, 211

Value, 10, 188 WHAT command, 151, 152


PICK/BASIC, 121 WHO command, 33, 39, 45, 207
Value mark, generating, from keyboard, 30 WICAT Computers of Australia Pty. Ltd., 7, 175
Value string, ACCESS, 87, 101 Wildcard function, EDITOR, 55
V/CONV, 211 Word processors, 198
V /CORR, 211 Works paces, dynamic, Open Architecture, 180;
Vehicle management software, 177, 198 see also Virtual workspace
Vending software, 177 Write-required buffers, 148, 158
Verb(s), 28 Wyse termtype, 127
-defining items, 16
formats, 79-80, 207-209 XENIX, 13, 171, 173
listing, 36 XON/XOFF,30
structure, 209
VERIFY-SYSTEM command, 33 Zilog Z8000, 6, 171
Vertical market software, 176-177
ABOUT THE AUTHORS

jonathan E. Sisk is president of jES & Associates, Inc., Irvine, Califor-


nia, a firm specializing in the PICK Operating System. He is the au-
thor and publisher of both the REALITY and PICK Pocket Guides,
and his works have been published by many periodicals and profes-
sional publications world-wide. jon has traveled extensively in the
past several years to provide state-of-the-art training and manage-
ment seminars to licensees, dealers, and end-users of the PICK and
REALITY Operating Systems.
Steve VanArsdale is a consultant and systems professional working
for the Pertec Computer Corporation in Chicago. He brings extensive
experience with IBM mainframe and minicomputer systems, together
with a decade of experience on the PICK Operating System. Steve
has also developed software for the IBM PC and other personal com-
puters. He holds both the CPA and CDP designations and is an active
member of DPMA, the Data Processing Management Association.

You might also like