SC34 0404 0_ed_Access_Method_Ver_2_Jul81 0 Ed Access Method Ver 2 Jul81

SC34-0404-0_ed_Access_Method_Ver_2_Jul81 SC34-0404-0_ed_Access_Method_Ver_2_Jul81

User Manual: SC34-0404-0_ed_Access_Method_Ver_2_Jul81

Open the PDF directly: View PDF PDF.
Page Count: 346

DownloadSC34-0404-0_ed_Access_Method_Ver_2_Jul81 SC34-0404-0 Ed Access Method Ver 2 Jul81
Open PDF In BrowserView PDF
------- ---------- --------_.-

Series/1

LICENSED
PROGRAM

SC34-0404-0
File No. 51-32

IBM Series/1
Event Driven Executive
Indexed Access Method
Version 2 Guide
Program Numbers: 5719-AM4
5719-UT5

----------------------_.-~-~--

Se,ies/1

-.

"

.'

"I

LICENSED
PROGRAM

SC34-0404-0
File No. S1-32

IBM Series/1
Event Driven Executive
Indexed Access Method
Version 2 Guide
Program Numbers: 5719-AM4
5719-UT5

o

First Ed;tion (July 1981)
This edition applies to the Event Driven Executive Indexed Access
Method Version 2 Modification level 0: Program Number 5719-AM4,
until otherwise indicated by new editions or technical newsletters.
Use this publication only for the purpose stated in the Preface.
Changes are periodically made to the information herein; any such
changes will be reported i~ subsequ~nt revisions or Technical
Newsletters.
It is possible that this material may contain reference to, or
information about, IBM products (machines and programs), programming, or services that are not announced in your country. Such
references or information must not be construed to mean that IBM
intends to announce such IBM products, programming, or services
in your country.
Publications are not stocked at the address given below.
Requests for copies of IBM publications should be made to your IBM
representative or the IBM branch office serving your locality.
This publication could contain technical inaccuracies or typographical errors. A form for readers' comments is provided at the
back of this publication. If the form has been removed, address
your comments to IBM Corporation, Information Development~
Department 27T, P. o. Box 1328, Boca Raton, Florida 33432. IBM
may use or distribute any of the information you supply in any way
it
believes appropriate without
incurring any obligation
whatever. You may, of course, continue to use the information you
supply.
(el Copyright International Business Machines Corporation 1981

c

PREFACE

HOW TO USE THIS BOOK
The material in this section is a guide to using this book. It defines the
purpose, audience, and content of the book as well as listing aids for
using the book and background materials.

PURPOSE
The purpose of this publication is to describe how to use the Indexed
Access Method Version 2 to set up indexed files and to develop application
programs using indexed files.

AUDIENCE
This manual is intended for use by:

•

Application designers to design applications which use the Indexed
Access Method Versi on 2.

•

Application programmers to develop applications which use the Indexed
Access Method Version 2.

Appl i cat ions for the Ser i es/ 1 can be developed in several languages.
Unless otherwise noted in this section, material in this book is intended
for use in the development of applications in any of the following languages:
•

COBOL

•

EDL

•

PL/I

HOW THIS BOOK IS ORGANIZED
This book describes the Indexed Access Method in the following order:
•

Chapter 1, "Introduction" provides an overview of the Indexed Access
Method.

•

Chapter 2, "Usi ng the Indexed Access Method," prov; des a bri ef
description of what indexed files are, how to set" up an indexed file,
and application program request statements.

Preface

iii

•

Chapter 3, "Defining Primary Index Files," describes the format of the
primary index file and how to use the $IAMUT1 utility to set up your
indexed files.

•

Chapter 4, "Loading the Primary Index File," describes loading data
records into a primary index file using an application program.

•

Chapter 5, "Bui Iding a Secondary Index," provides information on
using secondary keys, what a secondary index is and does, and how to
set up and load a secondary index.

•

Chapter 6, "Processing the Indexed File," describes how to process the
indexed file with an application program.

•

Chapter 7, "Codi ng The Indexed Access Method Requests," provi'des
i nformat i on needed to code EDL appl i cat ions whi ch use the Indexed
Access Method. Thi s chapter is intended only for EDL appl i cat ion
. developers.

•

Chapter 8, "The $IAMUT1 Utility," provides information needed to use
$IAMUT1, including the completion codes it generates.

•

Chapter 9, "The $VERIFY Utility," provides information needed to use
$VERIFY.

•

Chapter 10, "Storage and Performance Considerations" describes the
storage and performance characteristics of the Indexed Access Method
and how to tailor the Indexed Access Method to the processing requirements of your installation.

•

Chapter 11, "Error Recovery" describe some of the error recovery procedures available for use with Indexed Access Method applications.

•

Chapter 12, "Installing the Indexed Access Method," provides an overview of the installation process.

•

Appendix A, "Summary of Calculations," provides a summary of calculations for calculating the various blocks which make up indexed
files.

•

Appendix B, "Preparing Indexed Access Method Programs," provides an
overview of preparing an Indexed Access Method application and a sample $JOBUTIL procedure for an EDL application.

•

Appendix C, '~Coding Examples," provides comprehensive examples of
Indexed Access Method programs. Thi s append; xis for appl i cat ion
developers using EDL, COBOL, or PL/I as their application programming
language.

AIDS IN USING THIS PUBLICATION
Illustrations in this book are enclosed in boxes. Many illustrations display screens generated while using the Event Driven Executive system. In
iv

SC34-0404

,/

/

those cases where the actual data exceeds the size of the box, the information may be 'illustrated in a modified format.
In display screens appearing in this manual, operator input is shown in
bold type. This highlighting is for illustrative purposes only, to distinguish data entered by the operator from that generated by the system.
Several other aids are provided to assist you in using this book:
•

A bibliography
Lists the books in the Event Driven Executive
a brief description of each book

library along with

Lists related pUblications and materials
•

A glossary defines terms and abbreviations

•

A common index includes entries from each book in the Event Driven
Executive library

RELATED PUBLICATIONS
Related pUblications are listed in the Bibliography.

SUBMITTING AN APAR
If you have a problem with the Series/l Event Driven Executive services,
you are encouraged to fi 11 out an authori zed program analysi s report
(APAR) form as described in the IBM Series/1 Authorized Program Analysis
Report (APAR) User's Guide, GC34-0099.

•

C'·"~· ·

1

'.

,

Preface

v

vi

SC34-0404

C\
.

CONTENTS

,'I'

o

o

Chapter 1. Introduction

IG-l

What The Indexed Access Method Does
Indexed Access Method Features
Devices Supported
..•....•.
languages Compatible With Indexed Access Method
Components of Indexed Access Method

IG-1
IG-l
IG-3
IG-4
IG-4

Chapter 2. Using the Indexed Access Method

IG-S

Your Data Record
............ .
Setting Up An Indexed File Using $IAMUTl
Processing The Indexed File
.....
Summary

IG-5
IG-6
IG-13
IG-14

Chapter 3. Defining primary Index Files

IG-17

P rima ry Index F i I es
..... .
Data Record Primary Key
... .
Random and Clustered Record Inserts
... .
Defining The File Structure With $IAMUTl
Designing Indexed Files Using $IAMUTl - Option 1
Opt ion 1
................... .
Designing Indexed Files Using $IAMUTl - Option 2
Opt ion 2
•.•..••.••
• . • • •
Indexed Access Method Blocks
. . . . .
Data Blocks
Free Space
Index Blocks
Primary Index Blocks (PIXB)
Second-level Index Blocks (SIXB)
Higher-level Index Block (HIXB)
Free Pool
.....
File Control Block
File Structure Types
opt ion 2 Examples
....
.... .
Example 1:, Allocating Free Records
....
Example 2: Allocating Free Records and Free Blocks
Example 3: Allocating Reserved Data Blo~ks
Example 4: Allocating Reserved Index Entries
Example 5 - Defining a Totally Dynamic File
Designing Indexed Files Using'$IAMUT1 - Option 3
$IAMUT1 - Option 3
......•...•..••
Defining, Creating, and loading a File - Summary

IG-17
IG-17
IG-18
IG-19
IG-21
IG-21
IG-24
IG-24
IG-24
IG-26
IG-27
IG-30
IG-30
IG-35
IG-37
IG-39
IG-40
IG-40
IG-42
IG-43
IG-45
IG-48
IG-51
IG-54
IG-57
IG-58
IG-59

...

Chapter 4. Loading The Primary Index File

IG-61

loading the Primary Index File
..••
loadi ng Base Records usi ng $IAMUT1
••..
loading Base Records From An Application Program . . . . • • • .
loading Base Records From a Sequential File in Random Order

IG-61
IG-62
IG-65
IG-65

Contents

vii

..

Chapter S. Building a Secondary Index

IG-67

loading a Secondary File With an Application Program

IG-67
IG-67
IG-69
IG-74
IG-75
IG-77
IG-77
IG-79
IG-82
IG-84

Chapter 6. processing The Indexed File

IG-87

Secondary Keys
••••••••••••.
The Directory • • • . • • • • . • . • •
Allocating and Inserting Entries in a Directory
Secondary Index
•.....••....•.•..••..
Defi n i ng and Loadi ng A Secondary Index
..•••
Example 1: Defining A Secondary Index Using $IAMUTI
Option 1
••••.••••
Opt ion 2
Option 3

••...••.•.••••...•..•.
..................... .

••••

IG-87
IG-87
IG-88
IG-89
IG-89
IG-90
1G-90
IG-91
IG-93
IG-93
IG-93
IG-94
IG-94
IG-95
IG-95
1G-96
IG-96
IG-96

Connecting and Disconnecting the Indexed Fila
Connecting
Di sconnect i ng
•..••
Accessing the Indexed File
Direct Reading
Direct Updating
Sequential Reading
Sequential Updating
Inserting Records
Deleting Records
Extracting Indexed File Information
Maintaining the Indexed File
.•.••.
File 'Backup and Recovery
Recovery Without Backup
Reorganizing an Indexed File
Dumping an Indexed File
Deleting an Indexed File
Verifying an Indexed File

Chapter 7. coding the Indexed Access Method Requests
Request Functions Overview
.•.•..•
Coding Indexed Access Method Requests
CALL Function Descriptions
DELETE - Delete Record
DISCONN - Close File
ENDSEQ - End Sequential Processin~.
EXTRACT - Get File Information
GET - Get Reco rd
•.........
GETSEQ - Get Record (Sequential Mode)
LOAD - Open File for Record Loading
.••.
PROCESS - Open File
...•.••.•
PUT - Put Record into Fi Ie
....••.••.
PUTDE - Delete Previously Read Record
PUTUP - Update Record
..•.
REL EASE - ReI ea sa Reco rd . • . • • • .
EDL CALL Functions Syntax Summary
Indexed Access Method Return Codes Summary

. . ,. .

...

IG-97
IG-97
IG-99
IG-I01
IG-I0l
IG-I04
IG-I06
IG-I08
IG-ll1
IG-114
IG-118
IG-122
IG-127
IG-130
IG-133
IG-136
IG-138
IG-139

Chapter 8. The $IAHUTl utility

IG-l4l

$IAMUTI
•.•••
$IAMUTI Commands

IG-142
IG-142

viii

SC34-0404

',-_;c/'

BF - Tailor the Indexed Access Method Buffers
DF - Define Indexed File
.••••..••..•..•..
DI - Display Parameter Values
.....
DR - Invoke Secondary Index Directory Functions
AL - Allocate Directory
•••.
DE -'Delete Directory Entry
.•.•.
• ••.
EN - End Di rectory Functi on
..•..•••
IE - Insert Entry
.•.•••••.
LE - List Entries
...•
UE - Update Directory Entry
EC - Control Echo Mode
. . • .
EF - Display Existing Indexed File Characteristics
LO - Load Indexed Fi Ie
.•••...••.
NP - Deactivate Paging
PG - Select Paging
PP - Define Paging Partitions
PS - Get Paging Statistics
RE - Reset Parameters
RO - Reorganize Indexed File
SE - Set Parameters
UN - Unload Indexed File
$IAMUTl Completion Codes

IG-144
IG-146
IG-149
IG-150
IG-151
IG-153
IG-154
IG-155
IG-156
IG-158
IG-160
IG-161
IG-162
IG-166
IG-167
IG-168
IG-169
IG-170
IG-171
IG-173
IG-184
IG-186

Chapter 9. The $VERIFY utility

IG-189
IG-189
IG-190
IG-190
IG-191
IG-191
IG-192
IG-193
IG-196
IG-197
IG-200
IG-200
IG-200
IG-201
IG-201
IG-201
IG-201
IG-202

$VERIFY Functions
......••
Invoking $VERIFY
.•..•...
$VERIFY Input
........•••
Invoking $VERIFY From a Terminal
Invoking $VERIFY From a Program
$VERIFY Example
FeB Report
FCB Extension Report
Free Space Report
$VERIFY Messages
File Error Messages
Error recovery procedure
Other Messages
..•..
$VERIFY Storage Requirements
Using Default Working Storage Requirements
Modifying Working Storage Requirements
Summary
. .

. . . . . . . . . . . . . . . '.

Chapter 10. storage and Performance Considerations
Determi ni ng Storage Requi rements
...•..
The Indexed Access Method Packages
.•..
Indexed Access Method Storage Environment
Performance
Data Paging
Other Performance Considerations

o

. ..

Chapter 11. Error Recovery

IG-203
IG-203
IG-203
IG-204
IG-205
IG-206
IG-209
IG-213
IG-213
IG-213
IG-215

Handling Errors
Error Exit Facilities
System Function Return Codes
Contents

ix

The Data-Set-Shut-Down Condition
••.••.
$IlOG - Error logging Facility
•....
Deadlocks and the long-lock-Time Condition
Ver i fyi ng Requests and Fi les

IG·215
IG-216
IG-218
IG-219

Chapter 12. Install;ng the Indexed Access Method

IG-221

Installation Procedures
.......•.•..
Install i ng The Indexed Access Method
......•••
Assembling And Executing The Installation Verification Program

IG-221
IG-221
IG-222

Append;x A. Summary of Calculat;ons

IG-223

Append;x B. prepar;ng Indexed Access Method Programs

•••

IG-229

A Sample $JOBUTIl Procedure and link-Edit Control Data Set

IG-230

Appendix C. coding Examples

•••••••

IG-233

EDl Indexed Access Method Coding Example
EDl Indexed Access Method Coding Example
COBOL Indexed Access Method Coding Example
Pl/I Indexed Access Method Coding Example

IG-233
IG-234
1G-238
IG-24.5

Bibl;ography

IG-2SS

Event Driven Executive library
.•••.•••...••.
Summary of library
.....
. •.•.•..
Other Event Driven Executive Programming Publications
Other Programming Publications
Series/l System library Publications

IG-255
IG-257
IG-260
IG-261
IG-261

Glossary of Terms and Abbrev;at;ons
Common Index

x

SC34-0404

......

IG-263
IG-277

/

.. "\

\1~_/

FIGURES

1.
2.
3.
4.
5.
6.
7.

S.
9.
10.
11.
12.
13.
14.

(

Indexed Fila Logical Structure
Data Block Format Example
Cluster Example
•..••••••••
High-level Index Structure
Indexed File with Free Records
Indexed File with Free Records/Blocks
Indexed Fila with Reserved Data Blocks
Indexed File with Reserved Index Entries
Totally Dynamic Indexed File
•••.
Loading and Inserting Records
••••.•
Protocol for Sequential Updating
••••
Indexed Access Method Storage Environment
Plot of Data Paging Area Sizes
•••••
Volume Space Requi remants
••••••••
••••

IG-25
IG-27
IG-31
IG-38
IG-44
IG-47
IG-50
IG-53
IG-56
IG-62
IG-92
IG-205
IG-208
IG-221

"""

"

Figures

xi

xi i

SC34-0404

C

~·

.j!

CHAPTER 1. INTRODUCTION

The Indexed Access Method licensed program
that executes on an IBM Series/1 processor
tive Supervisor and Emulator, Version 3.1
Method provides keyed access to each of your

is a data management facility
under the Event Driven Execuor later. The Indexed Access
individual data records.

WHAT THE INDEXED ACCESS METHOD DOES
Thi s 1 i censed program bu i Ids, ma i ntai ns, and accesses a data structure
called an indexed file
Your data records can be loaded by the Indexed Access Method ut iIi ty,
$IAMUT1, or they can be loaded using an application program. Data records
can then be added, deleted, modified, or accessed quickly and efficiently
for processing by your application program. When reorganization of an
indexed file is required the utility can be used to unload and reorganize
the fi Ie.
When this licensed program is used, each of your records is identified by
the contents of a predefined field called a key. The Indexed Access Method builds and ~aintains an index for those keys and through this index
fast access to each record is provided. Your data records can be accessed
either by key, or sequentially in ascending key sequence, using Indexed
Access Method requests.

INDEXED ACCESS METHOD FEATURES
The Indexed Access Method offers the following features:

C"'·:
"

•

Record access by a primary key or secondary keys - You can access
records in an index~d file by one or more keys. Secondary keys use a
separate index and Indexed Access Method provi des the connecti on
between the primary index files and seconary indexes. Duplication of
secondary key fields is permitted.

•

Support for high insert and delete activity - Free space can be distributed throughout the file and in a free-pool at the end of the file
so that new records can be inserted. The space occupied by a deleted
record is immediately available for inserting a new record.

•

Direct and sequential access - You can access records either randomly
by key, or sequentially in ascending key sequence.

•

Data paging - You can improve Indexed Access Method performance by
using data paging. With this feature active, the Indexed Access Method retains recently-used blocks of data records resident in main storage.

Chapter 1. Introduction

IG-1

•

Dynamic file structure - A dynamic file structure adjusts itself as
needed to handle record additions and deletions. This provides a
quick and easy method of designing an indexed file.

•

Concurrent access to a si ngle fi Ie by several requests - These
requests can be from one or more programs. Data integrity is maintained by a file-, block-, and record-level locking system that prevents other programs from accessi ng the porti on of the fi Ie bei ng
modified.

•

Implementati on as a separate task - A si ngle copy of the Indexed
Access Method executes and coordinates all requests. A buffer pool
supports all requests and optimizes the space required for physical
I/O; the only buffer required in an application program is the one for
the record being processed.

•

Input records
accepted.

•

$IAMUTI - A utility program that allows you to maintain a secondary
index directory, create, format, load, unload, and reorganize an
indexed file. The load and unload functions accept either blocked or
unblocked records.

•

$VERIFY - A utility program that allows you to check the integrity of
the index structure, pri nt control blocks, and pri nt a free space
report for an indexed file.

•

Error logging - If multiple error return codes occur, errors are
logged in the system error log.

•

$IlOG - The error log entries can be printed by using the $IlOG utili-

Either

blocked

or

unblocked

input

records are

fy.
•

File compatibility - Files created by the Event Driven Executive
Indexed Access Method are compatible with those created by the IBM
Series/l Realtime Programming System Indexed Access Method licensed
program, 5719-AMI and 5719-AM2 provided that the block size is a multi pIe of 256.

•

Data protection - All input/output operations are performed by system
functions. Therefore, all data protection facilities offered by the
system also apply to indexed files. The following additional data
protection is provided:
The exclusive option specifies that the file is for the exclusive
use of a requester.
File-level, block-level, and record-level locking automatically
prevents two requests from accessi ng the same fi Ie, the same
block, or the same data record simultaneously.

IG-2·

SC34-0404

o

The immediate write back option causes all file modifications
(delete, insert, update) to be written back to the file immediately.
Accidental key modification for primary keys is prevented to help
ensure that your index matches the corresponding data.
•

Di stri but; on packagi ng - The Indexed Access Method is di stri buted
with the following variations available:
A full function package that is intended to be totallY resident.
A full function package which uses an overlay structure.
A totally resident package without data paging.
A package without data paging which uses an overlay structure.

DEVICES SUPPORTED
The Indexed Access Method supports indexed files on the following direct
access dev ices:

C'\';
.,.v/

•

4962 Disk Storage Unit

•

4963 Di sk Subsystem

•

4964 Diskette Unit

•

4965 Diskette Unit

•

4966 Diskette Magazine Unit

In addition, the Indexed Access Method supports IBM 4969 Magnetic Tape
Unit for loading and unloading indexed files with the $IAMUTl utility.
Input control and output display devices supported for the $IAMUT1, $IlOG,
and $VERIFY utilities are:
•

IBM 3101 Display Station

•

IBM 4978 Display Station

•

IBM 4979 Display Station

•

IBM 4973, 4974, and 4975 Printers

•

Teletypewriter Model 33/35 or ASCII equivalent

o
Chapter 1. Introduction

IG-3

LANGUAGES COMPATIBLE WITH INDEXED ACCESS METHOD
The following programming languages can be used to code Indexed Access
Method programs.
•

COBOL

•

EDl

•

Pl/I

COMPONENTS OF INDEXED ACCESS METHOD
The Indexed Access Method consists of the following components:
•

Four load modules from which you can select to support your application program Indexed Access Method requests. These load modules are
named:
$IAM (full function with overlay)
$IAMRS (full function resident) .
$IAMNP (overlay without data paging)
$IAMRSNP (resident without paging)

/_ .....

\~_~;/'

The module you select will be named $IAM after installation.
•

A load module ,$IAMSTGM, which is used to obtain the data paging area,
if the data paging feature is requested.

•

A set of object modules that you may use to generate a customized load
modUle. If you use one of the four supplied load modules, you do not
need the object modules.

•

The object module, lAM, is called a link module. You include lAM with
your application program using the linkage editor to provide the
interface to the Indexed Access Method.

•

Two copy code modules for i nclusi on in EDl programs, IAMEQU and
FCBEQU. IAMEQU provides symbolic parameter values for constructing
CAll parameter lists. FCBEQU provi des a map of the fi Ie control
blocks.

•

load modules for each of the Indexed Access Method utilities $IAMUT1,
$VERIFY, and $IlOG.

c
IG-4

SC34-0404

c

CHAPTER 2, USING THE INDEXED ACCESS HETHOD

,/

The purpose of this chapter is to familiarize you with some fundamentals
of the Indexed Access Method. Some of the features mentioned in the previous chapter will be described only in part here so that a basic example
can be constructed. The purpose of this example is to demonstrate the
ease with which you can establish an indexed file and to help you select
which parts of the book apply directly to your application requirements.

YOUR DATA RECORD

The data records you wish to process with the Indexed Access Method have
the following specific requirements:

c

•

the records must contain a common field that can be used as a primary
key

•

each record must have a unique primary key

•

the initial records to be loaded must be in ascending order by the
primary key

•

all records that make up an

i~dexed

file must be of the same length

The primary key is any field you designate within your data records. The
key field must' begin at the same location in each record. Each key field
must have the same length. The key in each record must be unique within
the file (data set).
The data records that you will initially load must be in ascending order,
based upon the fi eld you use as the ,key. I f your data records are not
ready to be loaded when you define your primary indexed file, the records
can be loaded later by an application program or with the LO (load) command of $IAMUT 1.
Your application might use an employee number as the primary key in an
indexed file for some applications. You might want to define secondary
keys, such as employee name, for the same file for other ap~lications.
Using secondary keys requires a secondary index to be defined. Defining a
secondary index and us i ng secondary keys i s descr i bed in "Chapter 5.
Building a Secondary Index."
Whether you use the $IAMUT1 utility to load your data records into an
indexed file from a sequential file, or load them with an application program, you must know the format of your input data record.
Following is a sample record layout. Although the primary key is shown
starting in position 1, it could have been anywhere in the record.

Chapter 2. Using the Indexed Access Method

IG-5

<-------------------------Empl.
Number

80 byte data record

Employee
Name

Address

-------------------//---->
//--Zip
Code
//---"

<---->
6-Byte
Primary
Key

<~.-------------------->

24-Byte
Secondary
Key

<----------------------> <---> <-//----24-Byte
5-Byte 21-Byte
Address
Data
Field

The records used for our example have the following attributes:
•

block size 256 bytes

•

record size 80 bytes

•

primary key length 6 bytes

•

key position 1

SETTING UP AN INDEXED FILE USING $IAMUT 1

Use the Indexed Access Method uti Ii ty program, $IAMUTl, to set up an
lndexed file. After this utility is loaded into the system for execution,
the utility displays a sequence of prompts.
The prompts are questions
displayed on a terminal one at a time to which you can reply using the terminal keyboard. Responding to the questions causes the utility to perform
the required steps to:
1.

set up the structure of the file (space for records to be loaded, free
space for inserts, and an index)

2.

allocate a data set (the utility prompts you for a data set and volume
name and calls $DISKUT3 to allocate space for the indexed file)

3.

define and format the indexed file

4.

load the data records into the indexed file

loading and using the SE (set parameter) command of the $IAMUT1 utility is
described here for the purpose of our example, however, for a complete
description of $IAMUTI see "Chapter 8. The $IAMUT1 Utility."
The responses for our example are shown in bold face type inside the box.
The bold bracketed numbers at the left, outside the box, identify explanatory remarks that we have written below the box using the same bracketed
numbers. Of course these brackets and explanations do not appear on the
screen when $IAMUTI is being used.

IG-6

SC34-0404

0

'1

~,I

The $IAMUT1 Indexed Access Method utility can be loaded with the Event
Driven Executive operator command $L $IAHUTI.
When $IAMUTl is loaded the first prompt is displayed as follows:

[llIEHTER COMMAHD

(!): SE

,

[1] Entering the letters SE (set parameters), follcwed by pressing the
ENTER key, causes four options to be displayed:
SET FILE DEFINITION PARAMETERS
o = EXIT
[2] 1 = SIGNIFICANT PARAMETERS
2 = All PARAMETERS
3 = PARAMETERS FROM EXISTING INDEXED DATASET
ENTER OPTION: 1

~

C

[2] The response digit '1', causes prompts to follow which allows you to
define an indexed file with a'minimum of information. This response cause
a one line prompt to be displayed.

/

c
Chapter 2. Using the Indexed Access Method

IG-7

Note: Although the following prompts are displayed one line at a time
when using the utility, the prompts and responses are listed here in
logical groups for simplicity in describing them.

[31
141

[5]
[6]

[7]
[8]
191

[101
[Ill
[12]
[13l
[14]

SECONDARY INDEX

(Y/N):? N

DEFAULT NEW VALUE
RECORD SIZE
0 :80
KEY SIZE
0:6
KEY POSITION
1: 1
BLOCKING FACTOR (RECORDS PER BLOCK)
1:3
NUMBER OF BASE RECORDS
0:5
ESTIMATED TOTAL RECORDS
6:20
TYPE OF INSERT ACTIVITYCC=CLUSTERED,R=RANDOM)
C:R
DATA SET SIZE IN EDX RECORDS:
15
INDEXED ACCESS METHOD RETURN CODE:
-1
SYSTEM RETURN CODE:
-1
CREATE/DEFINE FILE (Y/N)!: Y

[3] The first prompt, "SECONDARY INDEX (Y/H)!:" asks ~f you are spec~fy­
ing a secondary index. The response was N tor no, because we are defining
the parameters for a primary indexed file.
[41 The second prompt, "RECORD SIZE" requests the length that the records
are to be in the indexed file which you are defining.
Note that there are two columns near the right-hand edge of the d~sp1ay.
The column on the left ~s headed by the word "DEFAULT". In the default
column the values are listed that will be used in setting up the file if no
value is supplied in the response (only the ENTER key is pressed). The
column on the right, headed "NEW VALUE" is where the decimal value is
placed from your keyboard response, followed by pressing the ENTER key.
In this example we are using a record length of 80.
[Sl The "KEY SIZE" prompt is for the length of the primary key in the data
record. In this example we are using a key which is 6 bytes long.
[6] Our key field begins in position 1 of the data record.

[7] We are requesting that our indexed file be blocked with 3 records in
each 256-byte block.

[81 The number of base record slots to be defined is S. This number is
based on the number of data records we plan to load. You cannot load more
records than this value, however, it does not restrict you from ;nsert;ng
new data records in the free (empty) slots later.
[91 The total number of records that we anticipate that this resultant
indexed file will ever contain is 20.

IG-8

SC34-0404

c

c

110] The type of record insert activity ;s to be R (random). The records
added to this file will be inserted by an application program when those
records are available.
The choice of random or clustered is based on the type of record additions
that are anticipated. Random is chosen when the records to be added are
expected to be evenly distributed throughout the file.
Clustered is chosen when the records to be added ara expected to be in
groups, relative to their range in key value.
[11] Following the previous response the system will display the number of·
records required to contain an indexed file using the paramgters you have
supplied.
[12J The Indexed Access Method return code (-1) indicates that the parameters you supplied are acceptable; no Indexed Access Method rules have been
violated.
[131 The system return code (-1) should always be -1 if the Indexed Access
Method return code is -1. If any errors are encountered, the ~eturn code
may provide additional information.
[1~] If you have verified that the parameters you entered are correct, the
data set (file) size in EDX records is acceptable, and the return codes
are both -1, you can reply Y and the file will be defined and created.

If you wish to change any of the parameter values that you previously suprespond N to this prompt and you will be prompted for the next command. To re-enter your responses, reply SE and the prompt sequence will
be repeated.
pli~d,

A Y in response to this prompt causes the next prompt sequence to begin.

Chapter 2. Using the Indexed Access Method

10-9

ENTER DATA SET CNAME,VOLUME): IAHFILE,EDXOOl
NEW DATA SET IS ALLOCATED
DO YOU WANT IMMEDIATE WRITE-BACK? Y.
INVOKE LOAD/REORGANIZE AFTER CURRENT FUNCTION (Y/N)? Y
DEFINE IN PROGRESS
DATA SET SIZE IN EDX RECORDS:
15
INDEXED ACCESS METHOD RETURN CODE:
-1
SYSTEM RETURN CODE:
-1
INVOKE LOAD (L), REORGANIZE (R) OR END (E) ?L
LOAD ACTIVE

tlSJ

[16J
[17J

[lal

[lSJ The data set and volume name you reply to thi s prompt is what
$DISKUT3 uses to allocate a data set for your file. A successful allocation results in the information message "NEW DATA SET IS ALLOCATED".
[16J The immediate write back option is recommended for most applications.
It means that we want any record in the indexed file that we process with
our application program to be written back to the indexed file
immediately. Otherwise, the rec~rd will be held in a buffer until that
buffer is needed by the Indexed Access Method.
[171 If you have data records in a sequential data set which you want
$IAMUT1 to load for you at this time, reply Y to this prompt.
If you are going to load the data records with your application program,
. reply N.
For our example we responded Y which causes the following information messages to b@ displayed: "DEFINE IN PROGRESS". The information messages
then inform you with the data set (file) size in EDX records. The system
return code and Indexed Access Method return code values at the completion
of the file allocation and formatting are displayed for your information.
[lal Because of the Y response to the previous prompt, this prompt is generated to allow you to:

•

load base records (as shown in this example)

•

reorganize an existing indexed file for loading into the fila being
defined

•

end the current SE command sessi on

We are going to load records during this session 50 the response is Y.
Following the 'LOAD ACTIVE' information message, the prompts continue.

IG;"10

SC34-0404

c
[191

[20]
[21]
[22]
[23]

[24]
[25]

$FSEDIT FILE RECSIZE = 128
INPUT RECORD ASSUMED TO BE
80 BYTES. OK?: N
ENTER RECORD SIZE: 128
ENTER INPUT BLOCKSIZE (NULL = UNBLOCKED): 256
ENTER INPUT DATA SET (NAME,VOLUME): SEQOl,EDX003
INPUT REC GT OUTPUT REC. TRUNCATION WILL OCCUR ,
OK TO PROCEED:? Y
LOAD IN PROCESS
END OF INPUT DATA SET
ANY MORE DATA TO BE LOADED?: N
5 RECORDS LOADED
LOAD SUCCESSFUL

The next sequence of prompts refers to the input data set containing the
data records that are going to be loaded into the indexed file.
[19] The utility accepts input records which have been prepared by the
Event Driven Executive utility $FSEDIT. The $FSEDIT record size is speci fi ed as 128.

[20] Because the output data set (indexed file) records are 80 bytes, this
prompt determines whether the input sequential data set is also an 80 byte
record data set.
If you use the Event Driven Executive edit utilities to prepare your data
records for input to the Indexed Access Method, remember that these utilities place one 80-byte line from $FSEDIT in a 128-byte record. The first"
record begins at location 1, and the second record begins at location 129.
Two of these 128-byte records make one 256-byte EDX record.
Because we used $FSEDIT, we responded N.
[21] This prompt requests the input data record attributes.
Because our input data records were created by $FSEDIT, our 80-byte
records were converted to 128-byte records. Therefore, our response is
128.

[22] The Indexed Access Method utility, $IAMUT1 accepts your records as
either unblocked (one record per block) or blocked (more than one record
per block) input. The utility prompts you for the block size of the input
data set being loaded. If the input data set is unblocked, reply to the
block size prompt by pressing the Enter Key. See "Blocked and Unblocked
Sequent i al Data Sets" on page IG-164 for a descri pti on of blocked and
unblocked sequential data sets.
If your input data records are unblocked sequential, reply by pressing the
Enter Key. If your input is blocked sequential, reply with the actual
blocksize that was used to prepare your input data records.
Chapter 2. Using the Indexed Access Method

IG-11

Our example USQS blockQd sQquQntial rQcords, crQatQd on QVQry line by
$FSEDIT, with a blocksize of 256.
[23] RQPly to this prompt with your input data rQcord data SQt and volumQ
namQ. Our response was SEQ01,EDX003.
[24] This prompt verifies whQther truncation of the input rQcords is
acceptable. Because our record size specified is actually 80 bytes long,
but we responded i28 because $FSEDIT converts the records to 128 bytes,
the following warning message is displayed. "INPUT REC GT OUTPUT REC.
TRUNCATION WILL OCCUR" Thi s means that the extra bytes attached by $FSEDIT to our 80-byte data rQcords will now be removed. The response is Y.

The information message "LOAD IN PROCESS" tells us that $IAMUTI is rQadin~
the input data set and loading the input data rQcords into the base record
slots. The information message "END OF INPUT DATA SET" indicates that the
end-of-file condition, on the input data set, has been encountered.
[25] This prompt allows you to specify another input data set, if more
data records are to bQ loaded from another data set. In this example,
only 1 data set is being used and the response of N caused the records
loaded statistics to be displayed, followed by the "LOAD SUCCESSFUL" message.
The design of an indexed file varies according to your application. A
comprehensivQ approach to designing your indexed files begins with "DQfining The File Structure With $IAMUTl" on page IG-19.

C-.,'
IG-12

SC34-0404

,
c

PROCESSING THE INDEXED FILE
Now that the indexed file has been defined, formatted, and loaded with
data records, the file is ready for an application program to access any
of the records in the indexed file for processing. An application program
might use the following EDL coded requests to open the indexed file and
retrieve a record.
M

M OPEN THE INDEXED FILE FOR PROCESSING
M

CALL

[1]

IAM,(PROCESS),IACB,(OSl),(OPENTAB),(SHARE)

M
M
M

PERFORM A DIRECT RETRIEVAL OF THE RECORD WHOSE KEY IS JONES PW

[2]

KEYI
OPENTAB

c

IACB

CALL

IAM,CGET),IACB,(BUFF),(KEY1)

TEXT
DATA
DATA
DATA
DATA

'JONES PW'
F'O'
ACIAMERR)
F'O'
F'O'

[1] This Indexed Access Method request opens the primary index file in
process mode so that other requests can be issued fqr processing records
in the indexed file.

£2] This Indexed Access Method request retrieves a record from the indexed
file. The primary key of this record contains the name 'JONES PW'.

Functions of the Requests
Following is a list of functions that you' can perform using the Indexed
Access Method requests in your application program:
Initiate general purpose access to an indexed file with a PROCESS request.
After the PROCESS request has been issued, any of the following functions
can be requested:

o

•

Direct reading - Retrieving a single record independently of any previous request.

•

Direct updating - Retrieving a single record for update; complete the
update by either replacing or deleting the record.

Chapter 2. Using the Indexed Access Method

IG-13

•

Sequential reading - Retrieving the next logical record relative to
the previous sequential request.

{,-.~
~

II

\

I
'

The first sequential request can access the first record in the file
or any other record in the file.
•

Sequential updating - Retrievi~g the next logical record for update;
complete the update by either replacing or deleting the record.

•

Inserting - Placing a single record, in its logical key sequence, into
the indexed file.

•

Deleting - Removing a single record from the indexed file.

•

Extracting - Extracting data that describes the file.

Note that the update functions require more than one request.
When a function is complete, another function may be requested, except·
that a sequential processing function can be followed only by another
sequential function. You can terminate sequential processing at any time
by issuing a DISCONN or ENDSEQ request.
An end-of-data condition also
terminates sequential processing.
A complete list of the Indexed Access, Method requests, the operand
descriptions, and correct syntax is described in "Chapter 7. Coding the
Indexed Access Method Requests" on page IG-97. There are also codi ng
examples using the Indexed Access Method requests in three programming
lang~ages in "Appendix C. Coding Examples."
The languages used in the
examples are Event Driven language, COBOL, and Pl/I. The purpose of these
examples is not to show any particular application, but to help you when
planning and writing your application program.

SUMMARY
This chapter has introduced some fundamentals of using the Indexed Access
Method. The references in this chapter to other chapters in this manual
were placed there to help you select the specific information you need for
your application. A list of those references is repeated here to assist
you in locating the detailed information on the listed subjects.
•

For a complete descri pt i on of $IAMUT 1 see "Chapter 8. The $IAMUT 1
Utility"

•

A comprehensive approach to designing your indexed files is described
in "Chapter 3. Defining Primary Index Files"

•

Defining a secondary index for using secondary keys is described in
"Chapter 5. Building a Secondary Index"

•

Description of blocked and unblocked sequential data sets is
descr i bed in "Blocked and Unblocked Sequent i al Data Sets" on page
IG-164

IG-14.

SC34-0404

c

c

•

Tha complete 1 i st of Indexed Access Method requests, the operand
descriptions, and correct syntax is described in "Chapter 7. Coding
the Indexed Access Method Requests"

•

Guida line information on processing the indexed file is located in
"Chapter 7. Coding the Indexed Access Method Requests." This guideline information should be read prior to planning and coding your
application program.

Chapter 2. Using the Indexed Access Method

IG-15

I

(

IG-l~

SC34-0404

- - ' \

-",

CHAPTER 3. DEFINING PRIMARY INDEX FILES

This chapter presents the following major topics:
•

Primary Indexed Files

•

Designing Indexed Files Using $IAMUTl - option 1

•

Designing Indexed Files Using $IAMUTl - option 2
Indexed Access Method Blocks
Index Blocks
File Control Block
File Structure Types
Option 2 Examples

•

Designing Indexed Files Using $IAMUTl - option 3

•

Defining/Creating, and loading A File - Summary

This chapter provides information for defining indexed files and is
arranged according to your option selection when using ,$IAMUT1. The
beginning of the chapter has information which applies to any type of primary index file design. That general information section is followed
immediately with an example using $IAMUTl, option 1. The option 2 section
is next and contains information that you will need to know prior to
designing an index file with $IAMUTl, option 2. The fourth section
applies to using $IAMUT1, option 3.

PRIMARY INDEX FILES
A primary index file contains data records, a multilevel index, control
information, and it can optionally contain free space.
Free space can be distributed throughout the file and at the end of the
file.
Free space provides areas for inserting new records and is
described later.
In an indexed file, the records are arranged in ascending order by key.

DATA RECORD PRIMARY KEY
The primary key can be any field within your data record that you select,
however, it must meet the following requirements:
Chapter 3. Defining Primary Index Files

IG-17

•

the selected field must start at the same location in each record

•

all portions of the key field must be contiguous

•

th~

•

the field must contain data that is unique within the data set

primary key length cannot exceed 254 bytes

Defining the Key
Define a single key ·field by specifying its size and position in the
record when you select the file formatting parameters using the SE (set
parameter) command of the $IAMUTI utility. The longer the key. the larger
the index. The key should not be longer than necessary but long enough to
ensure uniqueness. A shorter key is more efficient than a long key.

ENSURING UNIQUENESS OF THE KEY: To identify each record in an indexed
file. each primary key must be unique. If key duplication is possible.
the key field must be expanded to ensure that it is unique.
For example. customer name is a key whi ch may involve dupl i cates. To
avoid duplication.·leng~hen the key field to include other characters such
as part of the customer address or the account number. Because the characters in the key must be contiguous, you may need to rearrange the fields
in the record.
Another way to el i mi nate dupl i cati on is for you to modi fy new records
dynamically whenever a duplication occurs during loading or processing.
One or more characters at the end of the key field can be reserved for a
suffix code. Whenever a duplicate occurs. add a value to the suffix and
make another attempt to add the record to the file. The result is a file
that can contain a sequence of keys such as SMITH. SMITH!. and SMITH2. If
you add a suffix, you must use the entire unique key when accessing a
record directly.

Providing Access by Hore Than One Key
To provide good performance with both direct and sequential access, each
indexed file is indexed by a single primary key. At times. however, it
may be useful to locate records by a secondary key. For example, in a customer file indexed by account number, you might want to locate a record by
customer name ..
To provide access by a secondary key, you must build a secondary index (a
separate file). For a description of setting up secondary indexes. see
"Chapter 5. Bu i Idi ng a Secondary Index" on page IG-67.

RANDOM AND CLUSTERED RECORD INSERTS
The Indexed Access Method permits records to be added to an existing file.
The records are inserted by the Indexed Access Method in the proper

IG-18

·SC34-0404

locations according to their key value.
the indexed file in ascending sequence.

This keeps the keys throughout

Records to be inserted are sometimes required to be distributed throughout
the file rather evenly, other times the records to be inserted are in
groups.
When there are more individual records to be inserted throughout the file,
based on their key value, than there are groups of records to be inserted,
this is called random record inserts. The following diagram represents
random inserted records among existing records.

Existing
Records
Inserts
(Each bullet indicates an inserted record)

Record inserts are considered clustered if"most of the inserts occur at
only certain places in the file. The following diagram represents clustered inserts by vertically stacked bullets.

Existing
Records
Inserts

DEFINING THE FILE STRUCTURE WITH $IAMUTl
Defining an indexed file structure is the process of analyzing the file
requirements and selecting the appropriate file parameters. This allows
you to either precisely define your indexed file or, by proper option
selection, $IAMUTI will define most of the parameters for you.

o

$IAMUTI is a prompt driven utility. When it is loaded, messages are displayed requesting information to be entered on a keyboard. The responses
you enter through the keyboard determine how the utility will operate.

Chapter 3. Defining Primary Index Files

IG-19

The SE command of the $IAMUT1 utility permits you to select one of three
options for defining your indexed file. The parameter selections are made
using the SE command of the $IAMUT1 utility. The SE (set parameters) command of $IAMUT1 provides three options for you to choose from to define
your indexed file as follows:
1.

Option 1 significant parameters - allows you to define an indexed file
by supplying a minimum of information. The description of your data
records is required and whether you expect random or clustered record
insert activity.

2.

Option 2 all parameters - allows more flexibility in precisely defining your indexed file but requires more parameters to be supplied.

3.

Option 3 parameters from existing indexed data set - can be used when
you have an existing indexed file and you wish to use the same parameters for a new indexed file.

$IAHUTl option Selection Guide
Hav i ng read the precedi ng materi ai, you are probably ready to make a
choice as to which option you want to use in defining your indexed file.
The following table will help you to find the appropriate information,
based on your indexed file defining objectives.
(

/"

\, ....),/

Your Objective

option

Information location

You want the Indexed Access
Method
to
calculate
and
structure your file

1

See
"Designing Indexed Files
Using $IAMUTI - Option 1" on
page IG-21

You want to structure a file
and provide specific information for the parameters

2

See
"Designing Indexed Files
Using $IAMUTI - Option 2" on
page IG-24

3

See
"Designing Indexed Files
Using $IAMUTI - Option 3" on
page IG-57

You want the Indexed Access
Method to structure a file
using the parameters of an
existing file

o
IG-20

SC34-Q404

DESIGNING INDEXED FILES USING $IAHUTl - OPTION 1
Option 1 is used if you need to set up your indexed file quickly and
easily. You specify only the necessary information and the utility determines the proper values for other parameters. An indexed file generated
with this option may not be optimum in terms of storage space performance.
If you want to supply more parameters than are available with this option,
or you wish to set up a totally dynamic indexed file, you should see "D~­
signing Indexed Files Using $IAMUTl - Option 2" on page IG-24. If you
already have an indexed file established and you wish to use those same
parameters, you should see "Designing Indexed Files Using $IAMUTl - Option
3" on page IG-57.
OPTION 1
The Indexed Access Method utility, $IAMUTl, option 1 of the SE (set parameters) command, provides you with the opportunity to select only those
parameters necessary to set up an indexed file.
The $IAMUTl Indexed Access Method utility can be loaded with the Event
Driven Executive operator command $L $IAHUT1.
When $IAMUTl is loaded the first prompt displayed is as follows:

[11IENTER COMMAND (1):

SE

[11 Entering SE causes the following option list prompt to be displayed.

[2]

SET FILE DEFINITION PARAMETERS
o = EXIT
1 = SIGNIFICANT PARAMETERS
2 = ALL PARAMETERS
3 = PARAMETERS FROM EXISTING INDEXED DATA SET
ENTER OPTION: 1

[2J Respond to this prompt by entering the digit '1'. This response causes a one line prompt from the next prompt sequence to be displayed.

Note: Although the following prompts are displayed one line at a time
when using the utility, the entire prompt list is shown for simplicity
in describing the parameters.

Chapter 3. Defining Primary Index Files

IG-21

[3]

SECONDARY INDEX

[4J

RECORD SIZE
KEY SIZE
KEY POSITION
BLOCKING FACTOR (RECORDS PER BLOCK)
NUMBER OF BASE RECORDS
ESTIMATED TOTAL RECORDS
TYPE OF INSERT ACTIVITY(C=CLUSTERED,R=RANDOM)
DATA SET SIZE IN EDX RECORDS:
12
INDEXED ACCESS METHOD RETURN CODE:
-1
SYSTEM RETURN CODE:
-1
CREATE/DEFINE FILE (Y/N)!:

[5]
[6]

[7J
[8]
[9]

[10]

[11]

(Y/N)!: N
DEFAULT NEW VALUE
0:80
0:40
1:1
1 :3
0:5
6:20
C:R

[3]
The first line asks, are you specifying a secondary index. The
response should be N for no, because you are defining the parameters for a
primary index file.

[4] The record length shown is 80, however, the entry you will make is the
actual record length you want your indexed file records.
[5] Enter the length of your data record field that you are using as the
key field. The maximum primary key length is 254.
[6] Enter the position where your primary key field begins.

Your data

/----~

",~"/

record begins with 1.
[7] Specify the blocking factor (number of records per block) you want
your indexed file to have. Remember that when a record is accessed, an
entire block is actually read into the system buffer.
[8] Enter the number of base record slots to be defined. This value is the
number of records you will load initially. You cann~t load more records
than this value specifies.
[9] Enter the total number of records you expect this file to contain.
records you plan to insert during processing.

[10] Enter the type of record insert activity you expect to have

[11] If you have verified that the parameters you entered are correct, the
data set (file) size in EDX records is acceptable, and the return codes
are both -1, you can reply Y and you can create and define the file. If
you wish to change any of the parameters, reply N and you can reenter the
SE command and enter any new values for the parameters.
Replying N terminates the SE function and you can return to this point by
reentering the SE command or the DF command (within the same session of
$IAMUT1).
The DF command of $IAMUT1 is descri bed under "OF - Defi ne
Indexed File" on page IG-146.

IG-22

SC34-0404

()

To review the prompts that occur when Y is replied at this point return to
the example in "Chapter 2. Using the Indexed Access Method."

(

~

/

c
Chapter 3. Defining Primary Index Files

IG-23

DESIGNING INDEXED FILES USING $IAMUTI - OPTION 2
Option 2 is used if you have performed an analysis of your file requirements and you want to precisely define your primary indexed file. This
option provides a wide range of parameters to allow you to specify your
file structure in detail. You can optimize the file structure according
to your application requirements for the best storage use and performance.
If you L~ant to supply only the minimum parameters you might want to use
option I which is described earlier in this chapter under "Designing
Indexed Files Using $IAMUTI - Option 1" on page IG-21. If you already
have an indexed file established and you wish to use those same
parameters. you should see "Designing Indexed Files Using $IAMUTI - Option
3" on page IG-57.

OPTION 2
The following information is provided so that you can supply the required
information to the prompts when defining a primary index file using option
2 of $IAMUTI. The information is organized in levels of Indexed Access
Method blocks. The material should be read sequentially because it prov i des the i nformat ion whi ch must be understood in order to apply it to the
examples whi ch are placed near the end of thi s opt ion 2 materi al.

INDEXED ACCESS METHOD BLOCKS
Indexed files consist of three kinds of blocks:
•

Data blocks, which contain records

•

Index blocks, whi ch contai n poi nters to data blocks or lower-level
index blocks

•

File control blocks, which contain control information

Following is an overview diagram showing the types of blocks and their
general relationships to each other in an indexed file.

' )'\
C
IG-24

SC34-0404

o
File
Control
Blocks

Index
Blocks

0-0-0-0
Figure 1.

o

]
]

Data
Blocks

Fren!

Pool

Indexed File logical Structure

The indexed fi Ie is composed of a number of fi xed length blocks. The
block is the unit of data transferred by the Indexed Access Method between
disk/diskette and the central buffer. Block size must be a multiple of

Chapter 3. Defining Primary Index Files

IG-25

256. A block is addressed by its relative block number (RBN).
block in the file is located at RBN O.

The first

(j

Note that the RBN is used only in indexed files by the Indexed Access
Method. An Indexed Access Method block differs from an Event Driven Executive record in the following ways:
1.

The size of 8 block is not limited to 256 bytes; its length can be a
mul t i pI e of 256.

2.

The RBN of the first block in an indexed file is O. The record number
of the first Event Driven Executive record in 8 file is 1.

The size, in 256-byte records, of the file is calculated by the SE command
of the $IAMUTI utility.
As stated initially, three kinds of blocks exist in an indexed file: data
blocks, index blocks, and file control blocks. These blocks are all the
same length, as defined by BLKSIZE, but they contain different kinds of
information. Data blocks contain data records, index blocks contain i~dex
entries, and file control blocks contain control information.

DATA BLOCKS

Each data block contains a header, one or more data records, and it can
contain free space for additional data records.
\
The records in each data block are in ascending order, according to the
key field in each record.
Each data block header contains the address of the next sequential data
block, providing sequential processing capability.
A data block contains a header followed by data records. The numb~r of
records that can be contained in a data block depends on the size of the
data block and the si ze of the record. The header of the block is 16
bytes.
The number of record areas in the block is:

block size - 16
record size

The result is truncated; any remainder represents the number of unused
bytes in the block. For example, if block size is 256 and record size is
80, the data block can accommodate three records and there is no unused
area. The key field of the ~ast record slot in an index block is the high
key for the data block even if the block is not full. However, if the last
record of the block has been deleted, the key field of the last record
IG-26

SC34-0404

c

o

slot will contain a key higher than that of any other record in the block.
Deletion of a record does not reduce the key range for the block unless
the block is emptied. Figure 2, shows the format of a data block.

FREE SPACE
When an indexed file is loaded with base records, free space is reserved
for records that may be inserted during processing. There are four kinds
of free space: free records, free blocks, reserve blocks, and reserve
index entries.

FREE RECORDS:

Free records are areas reserved at the end of each data
block. The FREEREC parameter of the SE command of $IAMUT1, specifies the
number of free records that are reserved in each data block. The remaining record areas are called allocated records.

For example, if a block contains three data record areas and you specify
one free record per block, then there are two allocated records per block.
For the layout of a data block containing two allocated records and one
free record, see Figure 2.

c

When records are loaded (file is open in load mode), the allocated records
are filled, and the free records are skipped. When additional records are
inserted (file is open in process mode), free records are used to hold
inserted records.

HEADER
Data Record
Data Record
Free space

Figure 2.

Data Block Format Example

For an example of specifying FREEREC, see "Example 1: Allocating Free
Records" on page IG-43.

FREE BLOCKS:

o

Free blocks follow the allocated data blocks within each
cluster. Free blocks have all of their records marked as free records.
The FREEBLK parameter of option 2 is used to specify the percentage of
blocks that are to be marked as free blocks.

Chapter 3. Defining Primary Index Files

IG-27

When records are loaded, the allocated record areas in the allocated data
blocks are filled, and the free blocks are skipped. During processing, as
data blocks become full, a free block provides space for insertions.
For an example of specifying FREEBLK, see "Example 2: Allocating Free
Records and Free Blocks" on page IG-45.

SEQUENTIAL CHAINING:

Data blocks in an indexed file ara chained together
by forward pointers located in the headers of data blocks. Only allocated
data blocks are included in the sequential chain. Chaining provides for
sequential processing of the file with no need to reference the index.
When a free block is converted to an allocated block, the free block is
included in the chain.

Reserv;ng Space For Record Inserts
If base records are to be loaded and record insertions are expected in
random locations throughout the file, use BASEREC to reserve the number of
base records. Use some combination of the following parameters: FREEREC
to reserve free records in each data block, FREEBLK to reserve free blocks
in each cluster (group of blocks), and DYN to provide a free pool.
For example, consider a file with 5 records per block, and 10 data blocks
per cluster. Suppose that the file consists of 300 base records and 200
inserts.
If the inserts are distributed evenly throughout the file, the pattern of
inserts is:

Blocks
Inserts ..
(Each bullet indicates an inserted record)

With this kind of distribution you can specify 2 free records per block to
absorb the inserts; no free blocks or free pool are needed.
Of course ; nserts do not usually occur in such an even pattern. Free
blocks help to absorb a concentration of inserts. The mor~ uneven the
expected distribution, the greater the f.'ee block specification should
be.
Suppose the same number of inserts is distributed in this pattern:

IG-28

SC34-0404

()

o
Blocks
Inserts

With this distribution, specify either 3 free records per block, or 20Y.
free blocks with 2 free records per block.
How suppose the distribution were more uneven:

Blocks
Inserts

In this case a satisfactory mix of free space is 1 free record per blo~k
and 40Y. free blocks. An alternative is to use 1 free record per block and
the DYH parameter to hold those record inserts of more than 1 record per
block.

calculating Data Blocks
This calculating information is provided for your convenience if you
choose to calculate the number of blocks for a specific file. For reference later there is a summary of all calculations in "Appendix A. Summary
of Calculations" on page IG-223. However, $IAMUTI automatically calculates the required data blocks based on the parameters you provide. The
utility also lists at file definition' time (when using the SE command) the
number of blocks required according to your parameter values.
The number of allocated data blocks in a file is the specified number of
base records (BASEREC) divided by the number of allocated records per data
block, with the result rounded up if there is a remainder.

o

For example, suppose you
that is formatted for two
and five allocated blocks
allocated blocks in a file

intend to load 1000 records in an indexed file
allocated records and one free record per block
and one free block per cluster. The number of
is:

Chapter 3. Defining Primary Index Files

IG-29

number of base records
number of allocated records per block

The number of allocated blocks in this example is 1000/2 or 500 blocks.

INDEX BLOCKS
An index block contains a header followed by a number of index entries.
Each index entry consists of a key and a pointer. The key is the highest
key associated with a lower level block; the pointer is the RBN of that
block. The number of entries contained in each index block depends on
block size and key size. The header of the block is 16 bytes. The RBN
field in each entry is 4 bytes. The key field in each entry must be an
even number of byt~s in length; if the key field is an odd number of bytes
in length, the field is padded with one byte to make it even. The number
of index entries in an index block is:

block size - 16
4 + key length

The result is truncated; any remainder represents the number of unused
bytes in the block.
For example, if block size is 256 and key length is 28, then each index
entry is 32 bytes, there are 7 entries in a block, and the last 16 bytes of
the block are unused.

PRIMARY INDEX BLOCKS (PIXB)
A set of data blocks is addressed (described) by a single primary index
block (PIXB). Each key in the index block is the highest key in the data
block that its accompanying relative block number (RBN) addresses. A
block is addressed by its RBN. The PIXB and the data blocks it describes
are called a cluster.

Clusters
Primary-level index blocks and data blocks are stored together in the file
in groups called clusters. Each cluster consists of a primary-level index
block and as many data blocks and free blocks as it po i nts to. For
example, if there are seven entries in an index block, there are eight
blocks in a cluster: one primary-level index block and up to 7 data/free
blocks. If reserve blocks have been specified, the blocks represented by

IG-30

SC34-0404

···\
C
,

.

I

o

the reserve block entries are not included until insert activity has taken
place and the required blocks have been obtained from the free pool. For
example, if there are seven entri es in an 1ndex block and one of the
entries is a reserve block entry, the cluster consists of seven blocks
(one index block and si x data blocks). See Fi gure 3 for a cluster
example.

HEADER

PIXB

RBN of
block 1

High key
in block 1

RBN of
block 2

High key
in block 2

RBN of
block 3

High key
in block 3
/
/

/
/

,
C

High key
in block 7

RBN of
block 7

"~

• • •

Data
blocks

1

Figure 3.

2

7

3

Cluster Example

pr;mary-Level Index Blocks
Entries in a primary-level index block point to data blocks.
primary-level index block is one of three possibla types:

o

•

allocated entry

•

free block entry

•

reserve block entry

Each entry

Chapter 3. Defining Primary Index Files

IG-31

ALLOCATED ENTRY:

An allocated entry points to an active data block. The
key portion of the entry is initialized to binary ones by the $IAMUTI
utility. After records have been loaded or written to a data block, the
key portion of the entry which points to the data block contains the highest key from the data block.

The pointer portion contains the RBN of the data block. Allocated entries
are the first entries in an index block. The number of index entries
allocated, when the indexed file is initially created, is the total number
of entries per index block, less the number of entries of the other two
types (free block entry and reserve block entry).

FREE BLOCK ENTRY:

A free block entry points to a free data block. The key
portion of the entry contains binary zeros. The pointer portion contains
the RBN of the free block.
Free block entries follow the allocated
entries in th~ index block. The number of index entries formatted as free
entries when the indexed file is initially created is the specified percentage (FREEBlK) of the total number of entries in an indexed block, with
the result rounded up if there is a remainder.

BLOCK ENTRY: A reserve block entry does not point to a block but
is reserved for later use as a pointer to a data block which can be taken
from the free pool. Both the key and pointer portions of a reserve block
entry are binary zeros. Reserve block entries are at the end of the index
block. When a reserve block entry is converted to a used entry, the index
block is reformatted to move the entry to the allocated entry area of the
block.

~ESERVE

!~--~\

I\,="

Reserve blocks do not exist in the cluster. When all data blocks in a
cluster are used and another data block is needed, a data block can be
created from the free pool. If the primary-level index block contains a
reserve block entry, it is used to point to the record from the free pool.
The reserve block entry in the primary-level index block point~ to the
block, and the data block becomes an allocated data block.
The number of index entries initiallY formatted as reserve block entries
is the specified percentage (RSYBlK) of the total number of entries, with
the result rounded up if there is a remainder. However, if the number of
free block entries plus the number of reserve block entries require all
index entries, the number of reserve block entries is reduced by 1, providing at least one allocated entry per index-block.
To calculate the number of primary-level index blocks in an indexed file,
you must know the initial number of data blocks allocated in the indexed
file.

Calculating Clusters
Th; s calculati ng i nformat ion ; s prov; ded for your conven i ence if you
choose to calculate the number of blocks for a specific file. However,
$IAMUTI automaticallY calculates the required data blocks based on the
parameter values you provide. The utility also lists at file definition

IG-32

SC34-0404

c

0 .,

1

\'1/

1

time (when using the SE command) the number of blocks required according
to your parameter values.
The number of clusters in a file is the number of allocated data blocks
divided by the number of allocated entries in each primary-level index
block, with the result rounded up if there is a remainder.

allocated blocks
allocated entries in each PIXB

Note that in the calculat ion, if the quot i ent is not an integer, it is
rounded up (rather than truncated) in order to accommodate all of the base
records.
The number of free blocks in the file (not including the free pool) is the
number of clusters in the file multiplied by the number of free entries in
each primary-level index block.

The Last Cluster
The last cluster in the file may be different from the other clusters. It
contains the same number of free blocks as the other clusters but only
enough allocated blocks to accommodate the records that you have specified
with the parameter BASEREC. Because rounding occurs in calculating the
number of clusters, a few more allocated rQcords than required may exist
in the last allocated block. The last cluster can be a short one because
only the required number of blocks are used.
If the number of allocated blocks di vi dad by the number of allocated
blocks per cluster leaves a remainder, the remainder represents the number
of allocated entries in the primary-level index block in the last cluster.
Unused entries in the last primary-level index block are treated as
reserve block entries.
The initial number of data blocks is the specified number of base records
(BASEREC) divided by the number of allocated records in a data block, with
the result rounded up if there is a remaindQr.

BASEREC
data records per block

o
Chapter 3. Defining Primary Index Files

IG-33

The number of primary-level index blocks is the initial number of allocated data blocks divided by the number of allocated' entries per
primary-level index block, with the result rounded up if there is a
remainder.

allocated
block

IG-34

data blocks

SC34-0404

allocated

entries

per primary-level

index

o

SECOND-LEVEL INDEX BLOCKS (SIXB)
If the file is large enough to require more than rine cluster, each PIXB
(or cluster) has an entry in a second-level index block (SIXB). The entry
ina SIXB contai ns the address of the PIXB and the hi ghest key in the cluster. The SIXB has the following structure:

HEADER

SIXB

RBN of
PIXBl

High key
in PIXB1

RBN of
PIXB2

High key
in PIXB2

RBN of
PIXB3

High key
in PIXB3

RBN of
PIXB4

High key
in PIXB4

PIXBl

PIXB2

PIXB3

PIXB4

Entries in a second-level index block point to primary-level index blocks.
Each entry in a second-level index block is one of two possible types:

,
0
I

•

allocated entry

•

reserve index entry

ALLOCATED ENTRY:

An allocated entry points to an existing primary-level
index block. The key portion of the entry is initialized to binary ones
by the $IAMUTI utility. After records have been loaded or written, the
key portion of the entry contains the highest key from the primary-level
index block. The pointer portion contains the RBN of the primary-level
Chapter 3. Defining Primary Index Files

IG-35

index block. Allocated entries are the first entries in the index block.
The number of index entries allocated when the indexed file is loaded 1S
calculated as the total number of entries per index block, less the number
of reserve index entries.

0."Y
1"

RESERVE INDEX ENTRY: A reserve index entry does not point to a block but
is reserved for later use as a pointer to a primary-level index block that
can be taken from the free pool. Both the key and pointer portions of a
reserve index entry are binary zeros.
Reserve
for the
blocks.
forming
cluster

index entries, in second-level
index structure to be expanded
These, in turn, can have data
new clusters. This process of
split.

index blocks, provide index space
by adding new primary-level index
blocks associated with them, thus
forming a new cluster is called a

For an example of using RSVIX, refer to "Example 4: Allocating Reserved
Index Entries" on page IG-Sl.
Reserve index entries are at the end of the index block. The number of
index entries initially formatted as reserve index entries is the specified percentage CRSVIX) of the total number of entries, with the result
rounded up if there i,s a rema i nder. However, if the number of reserve
index entries ,'s the same as the total number of entries in an index
block, the number of reserve index entries is reduced by 1, providing at
least one allocated entry per second-level index block.
The number of second-level index blocks is the number of primary-level
index blocks divided by the number of allocated entries per second-level
index block, with the result rounded up if there is a remainder.

number of PIXBs
allocated entries per SIXB

IG-36

SC34-0404

/f'---''-\

i"l.;/

o

HIGHER-LEVEL INDEX BLOCK (HIXI)
If the file is large enough to require more than one SIXBt the SIXBs in the
file are described by one or more higher-level index blocks (HIXB) in the
same manner as the SIXB describes PIXBs. There is always one index block
that describes the entire file.
The index of an indexed file is constructed in several levels so thatt
given a keYt there is a single path (one index block per level) cascading
through the index levels that leads to the data block associated with that
key. The index is built from the bottom up. At the lowest level are the
primary-level index blocks. At the second level are tndex blocks containing entries that point to the primary-level index blocks. The highest
level of the index structure consists of a single index block.
Entries in a higher-leval index block point to index blocks at the next
lower level. All entri es in hi gher-level index blocks are allocated
entries. The key portion of the entry contains the highest key from the
index block of the next lower level. The pointer portion contains the RBN
of the next lower level index block. The number of blocks at any higher
index level is the number of index blocks at the next lower level divided
by the total number of entries per index block, with the result rounded up
if there is a remainder.
If the number of i-ndex blocks at any level is one, that level is the top
level of the index. Although the Indexed A~cess Method is capable of initially defining and supporting 17 levels of index, an indexed file is formatted with only as many index levels as are required for the number of
records. If an indexed file has not been fully loaded and one or more
higher index levels have not yet been required, the unnecessary higher
levels are not used, even though they exist in the file structure.

INDEX EXAMPLE: Assume that 500 data blocks are allocated to a file and
that each primary-level index block contains one free block entry, one
reserve block entry, and five allocated entries. Therefore, the total
number of primary-level index blocks is 100. Each second-level index
block contains one reserve index entry and six allocated entries; therefore, the number of second-level index blocks is 17. The number of
entries in higher level index blocks is seven, resulting in three index
blocks at the third level and one at the fourth level.
Therefore the file contains ~ total of 121 index blocks of which 100 are
primary-level index blocks, 17 are seco'nd-Ievel index blocks, 3 are
third-level index blocks, and 1 is a fourth-level index block. This distinction is important because high-level index blocks are located contiguouslY at the beginning of. the file (after the FeB), while primary-level
index blocks are scattered throughout the file with the data blocks. Figure 4 on page IG-38 shows the structure of the higher-level index blocks.

o
Chapter 3. Defining Primary Index Files

IG-37

Fourth
(top)
level
index

Third
level
index

Second
level
index
F;gure 4.

IG-38

H;gh-Ievel Index Structure

SC34-04~4

FREE POOL

If you specify that you want a free pool, your indexed file contains a
pool of free blocks at the end of the indexed file. The file control block
contains a pointer to the first block of the free pool, and all blocks in
the free pool are chained together by forward pointers.
A block can be taken from the free pool ~o become either ~ data block or an
index block. The block is taken from the beginning of the chain, and its
address (RBN) is placed in the appropriate primary-level index block (if
the new block is to become a data block) or in the second level index block
(if the new block is to become a primary-level index block), and so on.
Any block in the free pool can be used as either a data block or as an
index block.
When a data block becomes empty because of record deleti ons, the data
block may return to the free pool (dependi ng on thel\' delete threshold
(DELTHR) parameter). If the data block is returned to the free pool, reference to the block is removed from the primary-level index block, and the
block is placed at the beginning of the free pool chain.
Calculating the initial size of the free pool consists of the following
steps:

o

•

Each reserve block entry in a primary-level index block represents a
potential data block from the free pool. The number of data blocks
that can be assigned to initial clusters is the number of
primary-level index blocks times the number of reserve block entries
in each primary-level index block.

•

Each reserve index entry in a second-level index block represents a
potential primary-level index block from the free pool. The number of
primary-level index blocks that can be assigned from the free pool
into the index structure set up at file definition time is the number
of second-level index blocks multiplied by the number of reserve index
entries in each second-level index block.

•

Each primary-level index block taken from the free pool consi sts
enti rely of empty (reserve block) entri es.
Nm... data blocks can be
taken from the free pool for the entries in the new primary-level
index block. The number of data blocks is the number of entries per
index block multiplied by the number of new primary-fevel index blocks
(calculated in the previous step).

•

The maximum number of blocks that can be taken from the free pool and
placed into the index structure set up at file definition time is the
sum of the previous three calculations.

•

The actual number of blocks in the free pool is determined in one of
two ways:
~

The percentage (FPOOL) of the maximum possible free pool as specified by the RSVIX and RSVBLK parameters. The result is rounded up

Chapter 3. Defining Primary Index Files

IG-39

if there 1S a remainder. If the DYM parameter is also used, its
value is added to the sum.
The DYN parameter, if specified with no other free space parameters, allocates a free pool of the specified number of blocks.

DELTHR - DELETE THRESHOLD:

The percentage (0-99) of blocks to retain in a
cluster as records are deleted and blocks made available. This is known
as the delete threshold DELTHR. When a block becomes empty, this parameter, if supplied, determines if the block should be returned to the free
pool.

FILE CONTROL BLOCK
The file control block (FCB) is the first block in the file (RBH 0); it
contains control information.
Indexed files have an FCB Extension as the second block.
sion contains the parameters used to define the file.

rhe FCB Exten-

Note: Indexed files built with a version of the Indexed Access Method
prior to version 2 do not contain an FCB extension.
You can access the FCB and FCB Extension by either of the following methods:
•

using the EXTRACT function in an EDl program

•

using the $VERIFY utility

You can locate the field names in the FCB and FCB Extension by examlnlng a
listing of FCBEQU, a copy code module that is supplied as part of the
Indexed Access Method. The FCB Extensi on contai ns the parameters that
were used to set up the file using the $IAMUTl SE command. Control information is also contained in block headers; a description of control information is contained in "FCB Extension Report" on page IG-196.

FILE STRUCTURE TYPES
A wide range of file structure is available. You can set UP files that
vary from the totally dynamic to the highl~ structured. Whether a file is
structured or dynamic depends on the degree to which it uses a free pool.
A free pool is an area in your indexed file which contains ~ pool of free
blocks. The file control block contains a pointer to the first block of
the free pool, and all blocks in the free pool are chained ~ogether by
forward poi nters. A block can be taken from the free pool to become
either a data block or an index block.
I>ynami c f11es offer the advantage of easy fi Ie desi gn and good space
ut iii zat ion.
They have the di sadvantage of a potent i al performance
decrease.
IG-40

SC34-0404

()

Structured files offer the advantage of good performance. They have the
disadvantage of a more complex file design and greater space requirements.
Either method can result in a need to reorganize the file; the structured
approach because the file can run out of space for inserts, and the dynamic approach because of performance considerations.
The type of indexed file to be defined, structured or dynamic, therefore,
depends on the file requirements and the efficiency required.

structured File
A structured file has its base record slots, free space, and the index
structure needed to support them bu i 1 t at f i 1 e def in it ion time by the
Indexed Access Method utility using the file structure parameters you specify. The structured file uses little, if any, free pool. The structured
file offers better performance than the dynamic file but can result in
unused space.

"'
C

I~,

Whether or not a structured file has a free pool depends on whether or not
you supply a value for the DYH parameter when the file is defined. When
the DYH parameter is used, the FREEREC, FREEBLK, RSVBLK, RSVIX, and FPOOL
parameters, if supplied, are also used in establishing the structured free
space. The number and types of blocks in a structured file are the result
of calculated values you supply as parameters when defining the fi Ie.
Most of the blocks are not taken dynamically from the free pool as they
are needed because they are established at file definition time.

Dynamic File
The higher the degree to which a file uses a free pool, the more dynamic it
is; the system bui Ids index and data blocks for you as they are needed.
The Indexed Access Method provides a dynamic file restructuring capability. It makes use of any free pool space the file has, even if the file is
mostly structured.
The Indexed Access Method can restructure a file in two ways:

o

•

As records are inserted and additional space is needed in specific
areas of the file, blocks are taken from the free pool and become data
blocks where needed. If additional index blocks are needed, blocks
are taken from the free pool for this purpose as well. Index blocks
can be added at any level, and the number of levels of index can
increase as needed. This function is performed automatically by the
Indexed Access Method on any file that has a free pool associated with
it.

•

As records are deleted and blocks become empty, they are returned to
the free pool. If index blocks become empty (because the blocks under
them have been returned to the free pool) they are also returned to

Chapter 3. Defining Primary Index Files

IG-41

the free pool. This helps to maintain a supply of blocks in the free
pool to be used if other areas of the fi Ie expand.
For an example of defining a totally dynamic file, see "Example 5 - Defini ng a Totally Dynami c Fi Ie" on pageIG-54.

USING THE DVN PARAMETER: . The DYN parameter can be used to adjust how much
the free pool is used.
file is.

This adjustment varies how dynamic a structured

In a totally dynamic file, the initial file defined consists of only the
file control blocks, one primary index block and one data block. The rest
of the file is in the free pool.
To define a totally dynamic file, you need to only supply a value for the
DYN parameter to allow the rest of the file to be assigned to the free
pool.
A dynamic file can be used when the records you want to add to the file are
not sorted into ascending key sequence. In that case, you can place the
records in the file by inserting them in random sequence. The Indexed
Access Method will place them in their proper sequence within the indexed
file.
If base records are to be loaded initially and they are sorted in ascending key sequence but insert activity is unknown, you can use a totallY
dynamic file design. Use the BASEREC parameter to reserve the number of
base record slots requi red. 'Use the DYN parameter to provi de the free
pool needed for record inserts.

Note: When a dynamic file has grown to its working size, it should be
reorganized for more efficient operation.

OPTION 2 EXAMPLES
The examples which follow are provided to show the option 2 prompts and
the effects of certain parameter values. Although the values used are
small for simplicity of explanation, they are usually much larger in an
actual application. Also a given example does not represent a complete
primary index file but addresses a particular part of a file and its associated parameters which we wish to describe at that place in the chapter.

c'
IG-42

SC34-0404

o

EXAMPLE 1: ALLOCATING FREE RECORDS
The ,ndexed file created using these parameters has only one type of free
space, called free records:

ENTER COMMAND (?): SE

[11

SET FILE DEFINITION PARAMETERS
o = EXIT
1 = SIGNIFICANT PARAMETERS
2 = ALL PARAMETERS
3 = PARAMETERS FROM EXISTING INDEXED DATASET
ENTER OPTION: 2
SECONDARY INDEX (Y/N)?: N
PARAMETER DEFAULT NEW VALUE
BASEREC
NULL:l0
BLKSIZE
0:256
RECSIZE
0:80
KEYSIZE
0:40
KEYPOS
1:1
FREEREC
0:1
FREEBLK
0:0
RSVBLK
NULL:
0:
RSVIX
NULL:
FPOOL
NULL:
DELTHR
DYN
NULL:
TOTAL LOGICAL RECORDS/DATA BLOCK:
FULL RECORDS/DATA BLOCK:
INITIAL ALLOCATED DATA BLOCKS:
INDEX ENTRY SIZE:
TOTAL ENTRIES/INDEX BLOCK:
FREE ENTRIES/PIXB:
RESERVE ENTRIES/PIXB(BLOCKS):
FULL ENTRIES/PIXB:
RESERVE ENTRIES/SIXB:
FULL ENTRIES/SIXB:
DELETE THRESHOLD ENTRIES:
FREE POOL SIZE IN BLOCKS:
I OF INDEX BLOCKS AT LEVEL
1:
DATA SET SIZE IN EDX RECORDS:
INDEXED ACCESS METHOD RETURN CODE:
SYSTEM RETURN CODE:

3
2

5
44
5

o
o

5

o
5
5

o
1

8
-1
-1

CREATE/DEFINE FILE (Y/N)?: N
ENTER COMMAND

(1):

Chapter 3. Defining Primary Index Files

IG-43

11J Because record size was specified as 80 and block size was specified
as 2S6~ there are (256-16)/80 = 3 records per block. Because FREEREC was
specified as 1. there are 2 full (base) records per block and 1 free
record per block. Because BASEREC was specified as 10, there are 10/(2
base records per block) or 5 initial allocated data blocks (blocks that
contain base records). Because FREEBLK, RSVBLK, RSVIX, FPOOL, and DYN
were not speci fi ed. there are no free blocks or free pool blocks
allocated. One primary index block ;5 needed.
The number of free blocks is calculated as follows:
times the number of index blocks at level 1.

Free entries per PIXB

The total blocks allocated for this file is:
Initial allocated data blocks
Free blocks
Free pool blocks
Index blocks
File control block

5

o

o
1

+

~

8 Total
Figure 5 illustrates the format of the indexed file that would result from
. these SE command parameters.

1
2
3

==>

PIXB

4

5
6

2

3

4

5

6

Data
blocks
Free

Figure 5.

IG-44

Free

Free

Indexed File with Free Records

SC34-0404

Free

Free

o

o

EXAMPLE 2: ALLOCATING FREE RECORDS AND FREE BLOCKS
These parameter specifications will generate an indexed file with two
types of free space -- free records and free blocks:
ENTER COMMAND

[1]

(?):

SE

SET FILE DEFINITION PARAMETERS
o = EXIT
1 = SIGNIFICANT PARAMETERS
2 = ALL PARAMETERS
3 = PARAMETERS FROM EXISTING INDEXED DATASET
ENTER OPTION: 2
SECONDARY INDEX (Y/N)?: N
PARAMETER DEFAULT NEW VALUE
BASEREC
NULl:I0
BlKSIZE
0:256
RECSIZE
0:80
KEYSIZE
0:40
KEYPOS
1:1
FREEREC
0:1
FREEBLK
0:10
RSVBLK
NUll:
RSVIX
0:
FPOOL
NULL:
DELTHR
NULL:
DYN
NULL:
TOTAL LOGICAL RECORDS/DATA BLOCK:
FULL RECORDS/DATA BLOCK:
INITIAL ALLOCATED DATA BLOCKS:
INDEX ENTRY SIZE:
TOTAL ENTRIES/INDEX BLOCK:
FREE ENTRIES/PIXB:
RESERVE ENTRIES/PIXB(BlOCKS):
FULL ENTRIES/PIXB:
RESERVE ENTRIES/SIXB:
FULL ENTRIES/SIXB:
DELETE THRESHOLD ENTRIES:
FREE POOL SIZE IN BLOCKS:
• OF INDEX BLOCKS AT LEVEL
• OF INDEX BLOCKS AT lEVEL
DATA SET SIZE IN EDX RECORDS:
INDEXED ACCESS METHOD RETURN CODE:
SYSTEM RETURN COnE:

3
2

5
44

5
1

o

4

o
5
5

o
2
1

12
-1
-1

CREATE/DEFINE FILE (Y/N)?: N
ENTER COMMAND (?):

[1] The FREEBLK parameter of 10 causes 10~ of the total entries in each
index block to point to free blocks. Because KEYSIZE was specified as 40,
Chapter 3. Defining Primary Index Files

IG-45

the index entry size = 40 + 4 (RBN pointer) and the total entries per index
block is (256-16)/44 = 5. Thus, lOX of this total rounded up i. the number
of free entries/PIXB (1). Because there are 5 initial allocated data
blocks, one free entry and only 5 total entries per index block, 2 primary
index blocks are needed. This causes a second-level index block to be
allocated.
The total blocks allocated:
Initial allocated data blocks
Free blocks
Free pool blocks
Index blocks
File control block

5
2

o
3

+

~

12 Total
Figure 6 on page IG-47 illustrates the format of the indexed file that
would result from these SE command parameters.

c
IG-46

SC34-0404

o
2

3

==>

SIXB

9

Unused

3

PIXBs

9

4

10

5

11 Free

6

Unused

==>
7

8 Free

(':"

4

5

6

Free

Free

Free

8

7

10

11

~"

Data
blocks
Free

Free
Free
block

Figure 6.

Free
block

Indexed File with Free Records/Blocks

c
Chapter 3. Defining Primary Index Files

IG-47

EXAMPLE 3: ALLOCATING RESERVED DATA BLOCKS

, ',--t,,\
( _._,'

Reserve blocks are allocated using the RSVBlK and FPOOl parameters of the
SE command. The following SE command example show the specification of an
iridexed file with reserved data blocks.
ENTER COMMAND (1): SE

[1]
[2]

SET FILE DEFINITION PARAMETERS
o = EXIT
1 = SIGNIFICANT PARAMETERS
2 = ALL PARAMETERS
3 = PARAMETERS FROM EXISTING INDEXED DATASET
SECONDARY INDEX CY/N)?: N
ENTER OPTION: 2
PARAMETER DEFAULT NEW VALUE
BASEREC
HULL:IO
BLKSIZE
0:256
RECSIZE
0:80
KEYSIZE
0:40
KEYPOS
1:1
FREEREC
0:1
FREEBLK
0:10
RSVBLK
HULL:10
RSVIX
0:
FPOOl
NULL:SO
DELTHR
HULL:
DYN
HULL:
TOTAL LOGICAL RECORDS/DATA BLOCK:
FULL RECORDS/DATA BLOCK:
INITIAL ALLOCATED DATA BLOCKS:
INDEX ENTRY SIZE:
TOTAL ENTRIES/INDEX BLOCK:
FREE ENTRIES/PIXB:
RESERVE ENTRIES/PIXBCBLOCKS):
FULL ENTRIES/PIXB:
RESERVE ENTRIES/SIXB:
FULL ENTRIES/SIXB:
DELETE THRESHOLD ENTRIES:
FREE POOL SIZE IN BLOCKS:
• OF INDEX BLOCKS AT LEVEL
1:
• OF INDEX BLOCKS AT LEVEL
2:
DATA SET SIZE IN EDX RECORDS:
INDEXED ACCESS METHOD RETURN CODE:
SYSTEM RETURN CODE:

,,~

3

2
5

44
5

1
1
3

0
5

4

1
2

1
13

-1
-1

CREATE/DEFINE FILE (Y/N)!: N
ENTER COMMAND (1):

(ji~
IG-48

SC34-0404

o

[1] In this example RSVBLK was specified as 10.
entries in each PIXB will initially be reserved.

Thus

10~

of the total

[2] Because the total entries per PIXB is 5, lOX of 5 rounded up will cause
1 entry in each PIXB to be reserved. Because there are 2 PIXBs, each with
1 reserve entry, a maximum of 2 free pool blocks can be used. However,
since FPOOL was specified as 50X, only half of these blocks (1 block)
will be allocated for the free pool.
The total blocks allocated for this file is:
Initial allocated data blocks
Free blocks
Free pool blocks
Index blocks
File control block

5
2
1
3
+

~

13 Total
Figure 7 on page IG-50 illustrates the format of the indexed fila that
would result from these SE command parameters.

o
Chapter 3. Defining Primary Index Files

IG-49

2
3

==>

SIXB

8

Unused

8

3

PIXBs

4

9

5

10

6

11 Free

==>
7

Free

Reserved

Reserved

4

5

Free

Free

Unused

6

9

7

10

11

Data
blocks
Free

Free
Free
block
12

Free pool
block

Figure 7.

,IG-50

Indexed File with Reserved Data Blocks

SC34-0404

Free
Free
block

(/

'"

'''ly

o

EXAMPLE

~:

ALLOCATING RESERVED INDEX ENTRIES

In the following example, the index structure is set up to use free pool
blocks for ; ndex blocks by allocati ng reserve index entri es us; ng the
RSVIX parameter.
ENTER COMMAND (1): SE

C'

[1]
[2]

SET FILE DEFINITION PARAMETERS
o = EXIT
1 = SIGNIFICANT PARAMETERS
2 = ALL PARAMETERS
3 = PARAMETERS FROM EXISTING INDEXED DATASET
ENTER OPTION: 2
SECONDARY INDEX (Y/N)?: N
PARAMETER DEFAULT NEW VALUE
BASEREC
NULL:I0
BLKSIZE
0:256
0:80
RECSIZE
0:40
KEYSIZE
1:1
KEYPOS
0:1
FREEREC
0:10
FREEBLK
RSVBlK
NUll:I0
RSVIX
0:10
FPOOl
NULL:50
DELTHR
NULL:40
DYN
NULL:25
TOTAL LOGICAL RECORDS/DATA BLOCK:
FULL RECORDS/DATA BLOCK:
INITIAL ALLOCATED DATA BLOCKS:
INDEX ENTRY SIZE:
TOTAL ENTRIES/INDEX BLOCK:
FREE ENTRIES/PIXB:
RESERVE ENTRIES/PIXB(BlOCKS):
FULL ENTRIES/PIXB:
RESERVE ENTRIES/SIXB:
FULL ENTRIES/SIXB:
DELETE THRESHOLD ENTRIES:
FREE POOL SIZE IN BLOCKS:
1:
I OF INDEX BLOCKS AT LEVEL
2:
I OF INDEX BLOCKS AT LEVEL

29
2
1

DATA SET SIZE IN EDX RECORDS:
INDEXED ACCESS METHOD RETURN CODE:
SYSTEM RETURN CODE:

-1
-1

3

2
5

44
5
1

1
3
1
4
2

41

CREATE/DEFINE FILE (Y/N)?: N
ENTER COMMAND (1):

o
Chapter 3. Defining Primary Index Files

IG-51

[1] In this example there are still S total entries per index block. Th_
10 RSVIX parameter causes 10~ X 5 (rounded UP to 1) of the second-Iev.l
index block (SIXB) entries to be reserved.
In this case, 1 reserve entry is allocated in the SIXB leaving 4 full
entries. Because the block pointed to by a SIXB is also an index block
(PIXB), blocks in the free pool are allocated for the PIXB and the total
nu~ber of data blocks it can point to. Thus the total free pool size for
these parameters is 1 (reserve entry) + 5 (total entries/PIXB) + 2 (reserve block entries) = 8. Because only 50~ of the total possible free
pool was requested, 4 of the total free pool blocks plus the 2S blocks
specified on the DYH parameter for a total of 29 blocks would be allocated
to the free pool.
The total blocks allocated for this file is:
Initial allocated data blocks
Free blocks
Free pool blocks
Index blocks
File control block

5
2

29
3

+ Z.
41 Total

[2] The percentage (0-99) of blocks to retain in the cluster as records
are deleted and blocks made available. This is known as the delete threshold DELTHR. When a block becomes empty, it is first determined if the
block should be given up to the free pool by checking the response to this
prompt. If the block is not given up to the free pool, it is retained in
the cluster, either as a free block or as an active empty block. The
result of this calculation is rounded UP so that any non-zero specification indicates at least one block. The calculation is adjusted to ensure
that the cluster always contains at least one block. In this example, the
delete threshold was specified as 40~. This ·results in at least 2 blocks
always being retained in each cluster.
If the DElTHR parameter is specified as null (I) and DYM is not specified,
DElTHR defaults to the number of allocated blocks in the cluster plus one
half of the value calculated by the FREEBlK prompt.
If the DElTHR parameter is specified as null and a value is specified for
the DYM parameter, DElTHR defaults to zero.
Figure 8 on page IG-53 illustrates the format of the indexed file that
would result from these SE command parameters.

IG-52

SC34-0404

o

2

3
8

==>

SIXB

Reserved
Unused
8

3

PIXBs

4

9

5

10

6

11 Free

7 Free

Reserved

Reserved

Unused

==>

4

5

Free

Free

7

6

10

9

11

Data
blC)cks
Free

Free

Free
Free
block

Free
block
12

14

13
->

>

15
>

Free pool
blocks
Free
Figure 8.

Free

Free

Free

Indexed File with Reserved Index Entries

o
Chapter 3. Defining Primary Index Files

IG-53

EXAMPLE 5

~

DEFINING A TOTALLY DYNAMIC FILE

to define a totallY dynamic file you need only supply the parameters which
describe the format of your records within blocks: BlKSIZE, RECSIZE, KEYSIZE. If the your keys do not begin in position 1 of your records, the
KEYPOS parameter must be supplied. The DYN parameter must then be specified in the number of blocks to assign to the free pool.
The following display shows the use of the SE commands of the $IAMUTl
utility to define a totally dynamic indexed file. Note that the resulting
file has only one allocated data block and one index block. The rest of
the space is in the free pool as specified by the DYN parameter.

()
IG-54

0·';
I

~

(.

/

ENTER COMMAND (?): SE
SET FILE DEFINITION PARAMETERS
o = EXIT
1 = SIGNIFICANT PARAMETERS
2 = ALL PARAMETERS
3 = PARAMETERS FROM EXISTING INDEXED DATASET
ENTER OPTION: 2
SECONDARY INDEX (Y/N)?: N
PARAMETER DEFAULT NEW VALUE
BASEREC
NUll:
BLKSIZE
0:256
RECSIZE
0:70
KEYSIZE
0:40
KEYPOS
1:
FREEREC
0:
FREEBLK
0:
RSVBLK
NULL:
RSVIX
0:
FPOOL
NULL:
DELTHR
NULL:
DYN
NULL:5l00
TOTAL LOGICAL RECORDS/BLOCK:
3
FULL RECORDS/DATA BLOCK:
3
INITIAL ALLOCATED DATA BLOCKS:
1
14
INDEX ENTRY SIZE:
17
TOTAL ENTRIES/INDEX BLOCK:
o
FREE ENTRIES/PIXB:
o
RESERVE ENTRIES/PIXB (BLOCKS):
17
FULL ENTRIES/PIXB:
o
RESERVE ENTRIES/SIXB:
17
FULL ENTRIES/SIXB:
o
DELETE THRESHOLD ENTRIES:
5300
FREE POOL SIZE IN BLOCKS:
1
I OF INDEX BLOCKS AT LEVEL
1:
DATA SET SIZE IN EDX RECORDS:
INDEXED ACCESS METHOD RETURN CODE:
SYSTEM RETURN CODE:

5304
-1
-1

CREATE/DEFINE FILE (Y/N)?: N
ENTER COMMAND (?):

o
Chapter 3. Defining Primary Index File.

IG-55

The total blocks allocated for this file is:
Initial allocated data blocks
1
Free blocks
o
Free pool blocks
5300
Index blocks
1
File control block
~
5304 Total
Figure 9 illustrates the format of the indexed file that would result from
these SE command parameters.

~(
... ~.

I

I

..~,'

.

2

Primary index
block (PIXB)

=>
3

Data
block

=>
Free

/--

."',

\\",..)tl

4

5

6

5303

----~-->----~-->----~-->----~

Free pool
blocks

=>

Figure 9.

Totally Dynamic Indexed F;le

(

:.'
I

~

\

"J

IG-56

SC34-0404

'

o

DESIGNING INDEXED FILES USING $IAHUTI - OPTION 3
Option 3 allows you to define a new file, using the same parameters that
were used to create an exi sti ng fi Ie. Usi ng thi s opti on you are not
required to manually enter any parameters. You are prompted for the data
set name and volume of the existing indexed file followed by the prompt
"NEW PARAMATERS EXACTLY SAME AS ORIGINAL PARAMETERS (Y/N) ?". The effects
of these two possibilities are described below:

Y The new file to be defined is to appear exactly like the existing file.
when it was created. In other words, the parameters to be used for
defining the new file will be exactly like those of the existing file.
An example of this situation is where you are satisfied with the structure of a currently existing file and now you want to build a similar
file and you expect the same type of insert/delete activity.

N The growth of the existing file is to be taken into account in defining
the new file. If the total number of records in the existing file do
not exceed the number of base records when the file was defined, the
existing file parameters will be used without change to define the new
file. However, if the number of records in the existing file exceed
the number of base records, the parameters for the new file will be
adjusted as follows:

•

BASEREC will be set as the current number of records in the existi ng fi Ie.

•

FPOOl will be set to null.

•

DYN will be set to the current number of free pool blocks in the
existing file.

•

All other parameters will be the same as the corresponding existing
file parameters.
Replying N to the prompt "NEW PARAMETERS EXACTLY SAME AS ORIGINAL
PARAMETERS (YIN)?", causes the fi Ie size to be adjusted to allow at
least as many records to be loaded in the new file as appear in the
existing file. This reduces the free pool amount based upon free
pool depletion in the existing file.

An example of this situation is where you wish to reorganize a file.
The new file should be able to handle as many records as exist in the
old file.

Note: The parameters for a primary file must be set from another primary file and parameters for a secondary file must be set from another
secondary file.

o
Chapter 3. Defining Primary Index Files

IG-57

$IAMUT 1 - OPTION 3
The $IAMUTI Indexed Access Method utility can be loaded with the Event
Driven Executive operator command $L $IAMUTI.
When $IAMUTI is loaded the first prompt displayed is as

[Ill

follows~

ENTER COMMAND (1)' SE

tIl Entering SE causes the next prompt to be displayed.

[2]

SET FILE DEFINITION PARAMETERS
o = EXIT
1 = SIGNIFICANT PARAMETERS
2 = ALL PARAMETERS
3 = PARAMETERS FROM EXISTING INDEXED DATA SET
ENTER OPTION: 3

[2] Respond to this prompt by entering the digit '3'.
es the following prompts to be displayed.

This response caus1/ --,

i,~__ /

[3]
[4]

[5]

SECONDARY INDEX (Y/N)?: N
NAME OF EXISTING INDEXED DATASET (NAME,VOLUME): EMPLFILE,EDX003
NEW PARAMETERS EXACTLY SAME AS ORIGINAL PARAMETER.S (Y/N)! Y
DATA SET SIZE IN EDX RECORDS:
15
INDEXED ACCESS METHOD RETURN CODE:
-1
SYSTEM RETURN CODE:
-1
CREATE/DEFINE FILE (Y/N)?: N

[3] Enter the name of the data set and volume whose values you wish this
data set to copy.

[4l If all of the parameter values used to define the existing file initially are satisfactory, reply Y. However, if you want to change any of
the parameters, based on current file status, or you want to reorganize
the existing file, reply N. Replying N will cause the pa~ameter values
for BASEREC and FPOOl to be adjusted so that you can load as many records
into the new file as are now contained in the existing file.
[5] If you have verified that the parameters you entered are correct, the
data set (file) size in EDX records is acceptable, and the return codes
are both -1, you can reply Y and the file can be defined and created. If

IG-58

SC34-0404

o

you wish to change any of the parameters, reply N and you can reenter the
SE command and enter any new values for the parameters.

DEFINING, CREATING, AND LOADING A FILE - SUMMARY
This chapter has presented the structure, content and principles of primary index files. Several examples have been used to show what results given parameter values when defining a primary index file.
In those examples the use of the SE command of $IAMUTI was used extensively. In replying to the SE prompt "DEFINE/CREATE FILE (Y/N)?:", N was used
in this chapter. This allows you to reenter the SE command and go through
the prompt sequence again. changing any parameter values as required.
To see the result of replying Y. see the example used in "Chapter 2. Using
the Indexed Access Method" on page IG-5. When you reply Y to the
DEFINE/CREATE prompt, you enter the function called defining the file.
You can enter the define file directly anytime that $IAMUTI is loaded by
responding with DF to the prompt "ENTER COMMAND (!):." Using the DF (define file) command is described in detail under "DF - Define Indexed File"
on page IG-146.

. ·,'
C

"

,.IJ/

When you reply Y to the prompt, "INVOKE LOADCL), REORGANIZE(R) OR END(E)
AFTER CURRENT FUNCTION ,:", you are given the opportunity to enter the
$IAMUTI functions of load, reorganize, or end. While in the SE function,
load, reorganize, and end can be entered by replying with the letters L,
R, or E, respectively. However, these functions can be entered directly
from the prompt "ENTER COMMAND (!):" with LO for load, RO for reorganize,
or EN for end.
Usi ng the LO (load) command
Indexed File" on page IG-162.

is descri bed in deta i 1 under "LO - Load

Using the RO (reorganize) command is described in detail under "RO - Reorganize Indexed File" on page IG-171.
Enteri ng EN (end) termi nates the current sessi on of the SE command of
$IAMUT1. Entering EN to the prompt "ENTER COMMAND (?):" will then terminate the $IAMUTl utility.

o
Chapter 3. Defining Primary Index Files

IG-59

('-

',\,

(\'-.../

c
IG-60

SC34-0404

o

CHAPTER 4. LOADING THE PRIMARY INDEX FILE

This secti on descrt bes the process and methods of loadi ng a fi le.
You can use two methods to load base records:
•

The $IAMUTI utility

•

An application program

The methods are described in the following sections.

LOADING THE PRIMARY INDEX FILE
The Indexed Access Method uses two modes to place records into an indexed
file=
1.

load mode: records are loaded sequentially in ascending order by key,
skipping any free space. The records loaded are called base records.
Each record loaded must have a key higher than any key already in the
file.

2.

Process mode: records are inserted in their proper key position relative to records already in the file. Records are inserted using the
free space that was skipped during loading or, if a record has a new
high key, it is placed in a base record after the last loaded record.
If no base records are available, it is placed in the free space after
the last loaded record.

The total number of base records that can be loaded is established when
the indexed file is defined by the $IAMUTI utility. It is not necessary,
however, to load all (or any) base records before processing can begin.
The file can be opened for loading some of the base records, closed and
then reopened for processing (including inserts). and later opened for
loadi ng more base records. Fi gure 10 on page IG-62 illustrates thi s
sequence.

Note: Programs written in COBOL are an exception to this:

COBOL programs can use load mode only once for,any given indexed file. Therefore. all base records loaded in load mode must be loaded together.
Base records loaded later must be inserted in process mode (with slower
performance).

o

The amount of free space for inserts (i f any) is speci fi ed us; ng the
$IAMUTl utility when the indexed file i~ built. This free space can be
distributed throughout the file in the form of free records within each
data block. free blocks within each cluster, and in a free pool at the end
of the fi Ie.

Chapter 4. loading The Primary Index File

IG-61

PROCESS "ODE

LOAD "ODE

Step 1.
load a portion of
the base records
High key
after step 1

-

<

-

<
<--<--<--<
<--<--<

~

> 1'---

- - - --

f---------

First record has
lowest key

Step 2.
Insert new records
-High key after
step 2

Step 3.
load more
base records
High key
after step 3

---

> --

------

<

last record has
highest key

Unused
space

Figure 10.

loading and Inserting Records

LOADING BASE RECORDS USING $IAMUTl
After the indexed file has been defined by the $IAMUTI OF command, you can
load base records from a sequential file into the indexed file. loading
the fi Ie can be done di rectly by respondi ng Y to the prompt "INVOKE
lOADCl), REORGANIZECR) OR ENOCE) A~TER CURRENT FUNCTION?", when defining
the file, or by using the LO command after the file has been defined. The
data in the sequential file must be in ascending order by key.
To load base records using $IAMUT1, do the following:
1.

Prepare a sequential file for input to the indexed file

2.

load the sequential file into the indexed file

Prepar;ng Input for the Indexed File
Select one of the following methods to prepare the input in a sequential
file to be loaded into an indexed file:

IG-62

SC34-0404

•

If your data records are 72 bytes or less, use one of the text editors
to enter your data or one of the communications utilities to get the
data into an Event Driven Executive sequential file. In either case,
you must know the record format used by the utility. The utilities
put two 80-byte records in each 256-byte Event Dr i ven Execut i ve
record. The first record begins at location 1, and the second record
begins at location 129. This results in a blocked sequential file
which can be used to load the indexed file when using the LO command
of $IAMUT1. (A detailed description of the LO command is under "LO Load Indexed File" on page IG-162.) Specify 128 for the input record
length and 256 for the input block size.

•

If your records have more than 72 bytes of data, you must create a
program that accepts the data records and writes them to a disk, diskette, or magnetic tape file.

The data must be in ascending order, based upon the field you use as the
key.

(

\
~,

/

Chapter 4. Loading The Primary Index File

IG-63

Loading an Indexed Fi Ie from a sequential Fi Ie
The procedure for loading an indexed file from a sequential file is:
1.

Invoke $IAMUTI using the system command $L.

2.

If you want a hard copy of the terminal prompts and responses, enter
an EC command. Respond to the prompt with a Y. This will print all
further prompts and responses of $IAMUTI on the $SYSPRTR device and
your terminal. If a hard copy is not required, omit this step.

3.

Enter the LO command.
Respond to the following prompts with your data set information.

ENTER COMMAND (1): LO
LOAD ACTIVE
ENTER OUTPUT DATASET (NAME,VOLUME):
$FSEDIT FILE RECSIZE = 128
INPUT RECORD ASSUMED TO BE
80 BYTES. OK?:
ENTER INPUT BLOCKSIZE (NULL = UNBLOCKED):
ENTER INPUT DATASET (NAME,VOLUME):
LOAD IN PROCESS
END OF INPUT DATASET
ANY MORE DATA TO BE LOADED?: N
6 RECORDS LOADED
LOAD SUCCESSFUL

4.

Enter the EN command to end $IAMUTI. Your program is now loaded and
you can process the data with your application program.

'
C

~

I,

IG-64

SC34-0404

,

.:P

LOADING BASE RECORDS FRO" AN APPLICATION PROGRA"

Base records are records placed into an indexed fila in ascending new high
key sequence. That is. if a record added to the file has a key higher than
any other record in the file, it is placed in a base record slot. Base
records are placed in the base record slots reserved for them by use of
the BASEREC parameter. You can use either the $IAMUTl LO cQmmand or an
application program to load the base records.
Base records must be loaded in ascending order by key. If you are writing
your own program to load the file, use a LOAD request to connect the file
.to load base records. Then issue a PUT for each record. When the desired
records have been loaded, issue a DISCOHN request to terminate the load
procedure. The only requests that can follow a LOAD request are: PUT,
EXTRACT, and DISCONN.
You can al so insert base records in process mode by usi ng a PROCESS
request to connect the file, followed by a PUT request for each record to
be loaded. Loading records in load mode with an application program is
discouraged because of slQwer performance.
Unless the base record loading program is written in COBOL, it need not
load all base records at one time. A file that already contains records
can be reconnected to load more records, but the key of each new record
must be higher than any key already in the file.

(

"""

"\

.:Y

COBOL programs must either load all the base records in load mode at once
(because only one use of load mode is allowed on a given file) or insert
the records in process mode as needed.
The limit on base rec~rds as specified on the SE command of the Indexed
Access Method utility program ($IAMUT1) cannot be exceeded.
If you
attempt to load a record after the last allocated record area has been
filled, an end-of-file condition occurs.

LOADING BASE RECORDS FRO" A SEQUENTIAL FILE IN RANDO" ORDER

In order to load base records from a sequential file where keys are in
random order, code an EDL program to open the indexed file in load mode.
Load the SORT/MERGE program with an output exit routine specified. Write
(PUT) each record to the indexed file as it is received in the output exit
rout i ne from SORT /MERGE. The output ex it rout i ne can al so screen out
duplicates or other unwanted records. For information on using the
SORT/MERGE Program Product, refer to Sort/Merge Programmer's Guide.

C',:
i

Chapter 4. Loading The Primary Index File

IG-65

IG-66

SC34-0404

o

CHAPTER S. BUILDING A SECONDARY INDEX

Indexed files, like most data record files, can be a common base for many
applications. You can assign secondary keys in your indexed files for
greater flexibility in accessing records in indexed files.
Secondary keys are accessed through a secon~ary index (a separate file).
Your application program requests records by their secondary key and secondary index file name.
The secondary index is used to retrieve the
record by its secondary key from the primary index file.
You can have more than one secondary index for a given primary index file.
In order for the Indexed Access Method to know the relationships between
secondary indexes and primary index files, you must create and maintain a
directory with that information.

SECONDARY KEYS

Secondary keys are not requi red to be un; que; di fferent records in an
indexed file can have the same key values in their secondary key field.
The secondary key can be any fi eld wi thi n your data record that you
select, however, it must meet the following requirements:
•

the selected field must start at the same location in each record

•

all portions of the key field must be contiguous

•

the secondary key length cannot exceed 250 bytes

In a secondary index, the Indexed Access Method assigns a sequence number
to each secondary key. The sequence number shows the sequence of loading
or inserting secondary index entries.

A sample layout of a secondary index record follows:
Secondary
Key
SMITH

Sequence
Number
0001

Primary
Key

Relative Block
Number (primary)

12345AB

RBH

THE DIRECTORY

c

In order for the Indexed Access Method to know the relationships between
secondary indexes and primary index files, you must create and maintain a

Chapter 5. Building a Secondary Index

IG-67

directory with that information. The directory describes all indexed
files in the system which are either secondary indexes, or primaries which
have secondary indexes associated with them. Primary index files which do
not have secondary indexes associated with them are not in the directory.
Use the $IAMUTI utility to create and maintain the directory.
The directory name is $IAMDIR and it resides on the IPL volume.
The directory contains one or more groups of entries. Each group begins
with an entry for the primary file and is followed by an entry for each
secondary index which references that primary file.
You have the responsibility of maintaining the directory using the $IAMUTI
utility.
Each entry in the directory contains the following information:
•

fi Ie name

•

volume name

•

primary file or secondary index indicator

•

independent indicator

•

invalid index indicator (secondary entry only)

•

automatic update indicator (secondary entry only)

FILE NAME:

The file name is the data set name supplied when the primary
index file or secondary index entry is inserted in the directory.

VOLUME NAME:

The file location is the volume label name where the index
resides that this entry is for.

INDEPENDENT PROCESSING INDICATOR:

Each entry in the directory contains an
independent indicator. Independent means that the file is to be treated
as an independent file without regard to associated primary or secondary
files. If the independent indicator is set on for a file that is explicitly opened, the automatic update indicator is ignored.
In the case of a secondary index, this means that records retrieved ara
internal secondary index records, not data records from ~he primary file.
In addition, independent means that any modification to the file (either
primary or secondary) will not be reflected in its associated files. Also
any changes made in a secondary index will not be reflected in the associated primary or other secondary index files.
In the case of a primary entry, any modification to the primary file will
not be reflected in the associated secondary index files.

INVALID INDICATOR: The invalid indicator is initially turned on in the
directory, by the directory function of $IAMUT1, when the secondary entry
is inserted in the directory.
IG-68

SC34-0404

o

A secondary index entry is marked invalid until the secondary index has
been loaded.
The load function of the utility turns off the invalid indicator.
If you build the secondary index with an application program. you must
al so turn off the i ndi cator. The UE subcommand of the DR funct ion in
$IAMUT1 is used to turn off the invalid indicator. after you have successfully loaded your secondary index.
AUTOMATIC UPDAT~ INDICATOR: Each secondary index entry in the directory
contains an automatic update indicator. Any "modification to the primary
file (either directly or through any secondary index activity) results in
an automatic update to all secondary indexes whose automatic update indicator in the di rectory was speci fi ed wi th Y. Thus, a secondary index
flagged as auto-update can be thought of as "dynamic." Each secondary
index remains open until all users of it have closed. However. if the
independent indicator is set on for a file that is explicitly opened. the
automatic update indicator is ignored.
If the automatic update indicator was specified as H, changes are not
reflected in that secondary index. This would be a "static" index. The
assumption is that a static index would be rebuilt periodically to bring
it up to date.
ALLOCATING AND INSERTING ENTRIES IN A DIRECTORY
Although the Indexed Access Method references the directory, it never modifies the directory. The one function that is performed on the directory
automatically is that the secondary load option sets the invalid indicator
off following successful completion.
To define the existence of a secondary index, use $IAMUT1 to perform the
following two steps:
1.

allocate a directory using the DR (directory function) of $IAMUTl

2.

establ ish the fact that a secondary index wi 11 ex i st by mak i ng an
entry in the directory using the IE (insert entry) command of $IAMUTI

Remember that primary index file entries precede their associated secondary index entries. The $IAMUTI Indexed Access Method utility can be loaded with the Event Driven Executive operator command $L $IAHUTI.
When $IAMUTI is loaded the first prompt displayed is as follows:

o

[Ill ENTER COMMAND
[1]

(?): DR

Entering DR causes the following prompt sequence.
Chapter 5. Building a Secondary Index

IG-69

C

I~\

(

[2]
[31
[4]

ENTER DIRECTORY COMMAND (?): AL
MAX I OF DIRECTORY ENTRIES: 10
THE DIRECTORY DS REQUIRES
1 EDX RECORDS, CONTINUE (YINIEN)? V

[SI

DIRECTORY DATA SET ALLOCATED: $IAMDIR,EDX002

""i

[2] Responding to this prompt with AL . If the current open is for PROCESS, the record
may have any key and is placed in key order in either a base record or in a
free slot in the appropriate place in the file.
The PUTC request processes the record that is i ti your buffer (buff)
according to the way the file was opened (LOAD or PROCESS) only if the
record or file is not locked.
Syntax:

label

CALL

Required:
Defaults:

all
none

IAM,(PUTlpUTC),iacb,Cbuff)

Operands

Description

;acb

The label of a word containing the IACB address returned by PROCESS or LOAD.

(buff)

The label of the user area containing the record to be added to
the file.

o
Chapter 7. Coding the Indexed Access Method Requests

IG-127

PUT Return Codes

Code
-90
-1
7

8

10
12
13
14

22
60
61
62
70
76

90
100
101
230
244
246

248

IG-128

Condition
Request cancelled because the request was conditional
and a wait on a lock or buffer would be required
Successful
Link module in use, syncronize use of link
module with the program
Load error for $IAM, verify $IAM exists and enough
storage is available to load it
Invalid request
Data set shut down due to error; see version 2 guide,
error recovery
A required module is not included in $IAM
Invalid index block found - during processing an
incorrect index block type was found, recreate the file
Address supplied by your program is not a valid IAC8
Out of sequence or duplicate key (LOAD only)
End of file
Duplicate key found (PROCESS only)
No space for insert; reorganize the file
DSOPEN error occurred - The system error field in the
OPEN table contains the DSOPEN errors:
21 - DSNAME,VOLUME not found
22 - VOlSERV error
23 - I/O error
Internal key save area temporarily in use by another request
Read error - check system return code
Write error - check system return code
Directory read error form $IAMDIR. Check system return code
Error in opening auto-update on modification request
Auto-update processing an INS;RT to a secondary
failed, auto-update processing continues
I/O error on primary file during a secondary request

SC34-0404

o

PUT Example
The following example puts the record in the area named 'BUFFER' into the
file. The file is identified by the field named 'FIlEl' .

.
CAll

FllEl
BUFFER

DATA
DATA

IAM,(PUT),FllEl,(BUFFER)

F'O'
256F'O'

IACB ADDRESS RETURNED HERE
I/O BUFFER

Chapter 7. Coding the Indexed Access Method Requests

IG-l29

PUTDE - DELETE PREVIOUSLY READ RECORD
The PUT DE request deletes a record from an indexed file. The record must
have been previously retrieved by a GET or GETSEQ in update mode. Deleting the record creates free space in the file. The PUTDE releases the
lock placed on the repord by the GET or GETSEQ.

o

The PUT DEC request deletes a record from an indexed file only if the block
or buffer is not locked.
Syntax:

label

CAll

Required:
Defaults:

all
none

IAM,(PUTDElpUTDEC),iacb,Cbuff)

Operands

Description

iacb

The label of a word containing the IACB address returned by PROCESS.

(buff)

The name of the area contai"ning the record previously retrieved
by GET or GETSEQ.

"1"(-",,

IG-130

SC34-0404

l".,)

o

PUTDE Return codes

Code
-90

-1
7
8

10
12
13
14
22
76

C
/

85

100
101
230
242
244
245
247
248

Condition
Request cancelled because the request was conditional
and a wait on a lock or buffer would be required
Successful
Link module in use, syncronize use of link
module with the program
Load error for $IAM, verify $IAM exists and enough
storage is available to load it
Invalid request
Data set shut down due to error; see version 2 guide,
error recovery
A required module is not included in $IAM
Invalid index block found ~ during processing an incorrect
index block was found. Recreate the file
Address supplied by your program is not a valid IACB
DSOPEH error occurred - The system error field in the
OPEN table contains the DSOPEH errors:
21 - DSHAME,VOlUME not found
22 - VOLSERV error
23 - I/O error
Key was modified by user
Read error - check system return code
Write error - check system return code
Directory read error form $IAMDIR. Check system return code
Secondary index is out of sync with primary file.
Must rebuild file to get back in sync.
Error in opening auto-update on modification request
Auto update PUTDE to a secondary failed,
Auto-update processing continues.
During auto-update processing a GETSEQ to a secondary
failed, auto-update processing continues.
I/O error on primary file during a secondary request.

o
Chapter 7. Coding the Indexed Access Method Requests

IG-131

PUTDE Example
The following example deletes the record in the area named 'BUFFER' from
the f;18. The record was read with either a GET or GETSEQ request in
update mode. The file is identified by the field named 'FILE!'.

CALL

FILE!
BUFFER

DATA
DATA

(}

IAM,(PUTDE),FILE1,(BUFFER)

F'O'
256F'O'

IACB ADDRESS FROM PROCESS
1/0 BUFFER

-~

C)
IG-132

SC34-0404

o

PUTUP - UPDATE RECORD
The PUTUP

~equest ~eplaces the ~eco~d in tha fila with the ~eco~d in you~
The ~eco~d must have been ~et~ieved by a GET o~ GETSEQ in update
mode. You must not change the p~ima~y key field in the ~eco~d o~ the contents of the key a~ea i n you~ p~og~am ~etu~ned by the GET o~ GETSEQ
~equest.
The Indexed Access Method checks fo~ and p~ohibits p~ima~y key
modification. The PUTUP ~eleases the lock placed on the ~eco~d by the GET
o~ GETSEQ.

buffe~.

The PUTUPC ~equast ~eplaces the ~eco~d in the file with the
buffe~ only if the ~eco~d, block, o~ buffe~ is not locked.

~eco~d

in

you~

Syntax:

label

CAll

Requi~ed:

all
none

Defaults:

\
C

Ope~ands

Desc~iption

iacb

The label of a
CESS.

(buff)

The label of the use~ a~ea containing the
one p~eviously ~et~;eved.

y

Chapte~

wo~d

containing the lACS

add~ess ~etu~ned

~eco~d

to

by PRO-

~eplace

7. Coding the Indexed Access Method Requests

the

IG-133

PUTUP Return Codes

Code
-90

-1
7
8

10
12

13
14
22
76

85

100
101
230

242
244
245
246
247
248

Condition
Request cancelled because the request was conditional
and a wait on a lock or buffer would be required
Successful
link module in use, syncronize use of link
module with the program
Load error for $IAM, verify $IAM exists and enough
storage is available to load it
Invalid request
Data set shut down due to error; see version 2 guide,
error recovery
A required module is not included in $IAM
Invalid index block found - during processing an incorrect
index block was found. Recreate the file
Address supplied by your program is not a valid IACB
DSOPEN error occurred - The system error field in the
OPEN table contains the DSOPEN errors:
21 - DSNAME,VOlUME not found
22 - VOlSERV error
23 - I/O error
Key was modified by user
Read error - check system return code
Write error - check system return code
Directory read error form $IAMDIR. Check system return code
Secondary index is out of sync with primary file.
Must rebuild file to get back in sync.
Error in opening auto-update on modification request
Auto update PUT DE to a secondary failed,
auto-update processing continues.
Auto-update processing an INSERT to a secondary failed,
auto-update processing continues
During auto-update processing a GETSEQ to a secondary
failed, auto-update processing continues.
I/O error on primary filQ during a secondary request.

If --,

,\:c.jt/

o
IG-134

SC34-0404

o

PUTUP Example
The following example puts the updated record in the area named 'BUFFER'
back into the fi Ie. The record was read wi th ei ther a GET or GETSEQ
request in update mode. The fi Ie is i dent i f1 ed by the fi eld named
'FIlEl'.

CAll

FIlEl
BUFFER

DATA
DATA

IAM,(PUTUP),FIlEl,(BUFFER)

F'O'
256F'O'

IACB ADDRESS FROM PROCESS
I/O BUFFER

C'
/

Chapter 7. Coding the Indexed Access Method Requests

IG-l35

RELEASE - RELEASE RECORD

The RELEASE request frees a record that has been locked by a GET o~ GETSEQ
for update. A record lock is normally released by a PUTUP or PUTDE. The
RELEASE request is useful for freeing the locked record when the update
need not be completed. RELEASE is valid only when a record is locked f~r
update.
Syntax:

label

CALL

Required:
Defaults:

all
none

IAM,(RELEASE),iacb

Operands

Description

;acb

The label of a word containing the IACB address returned by PROCESS.

RELEASE Return Codes

Code
-1
7
8

10
12

13
22

Condition
Successful
Link module in use, syncronize use of link
module with the program
Load error for $IAM, verify $IAM exists and enough
storage is available to load it
Invalid request
Data set shut down due to error; see version 2 guide,
error recovery
A required module is not included in $IAM
Address supplied by your program is not a valid IACB

c
IG-136

SC34-0404

o

RELEASE Example
The following example releases the record that was read with either a GET
or GETSEQ request in update mode. The file is identified by the field
named 'FllEl'.

CAll

FllEl

DATA

IAM,(RElEASE),FllEl

F'O'

IACB ADDRESS FROM PROCESS

o
Chapter 7. Coding the Indexed Access Method Requests

IG-137

EDL CALL FUNCTIONS SYNTAX SUMMARY
Following is a summa~y of the syntax of the EDl CAll instructions used to
invoke the functions provided by the Indexed Access Method.

label
label
label
label
label
label

CAll
CALL
CAll
CAll
CALL
CALL

label
label
label
label
label
label

CALL
CAll
CALL
CALL
CAll
CAll

IG-138

IAM,(DElETEIDElETC),;acb,Ckey)
IAM,(DISCONN),iacb
IAM,(ENDSEQ),iacb
IAM,(EXTRACT)"acb,(buff),(slze),(type)

IAM,(GETIGETCIGETRIGETCR),iacb,Cbuff),(key)~(mode/krel)

IAM,(GETSEQIGETSEQCIGETSEQCRIGETSEQR),iacb,Cbuff),
(key),(mode/krel)
IAM,(lOAD),iacb,Cdscb),(opentab),Cmode)
IAM,(PROCESS),iacb,Cdscb),Copentab),(mode)
IAM,(PUTlpUTC),iacb,Cbuff)
IAM,(PUTDElpUTDECl'iaCb,CbUffl
IAM,(PUTUP PUTUPC),iacb,Cbuff)
IAM,(RElEASE),iacb

SC34-0404

o

INDEXED ACCESS METHOD RETURN CODES SUMMARY

Return
Code
-90
-85
-80
-79
-75

-58
-57
-1
01
07
08

C~

10
12
13
14
17
22
23
50
51
52
54
55
56
60
61
62
65
70

Condition
Request cancelled because the request was conditional
and a wait on a lock or buffer would be required
Record to be deleted not found
End of ,data
Warning - File was opened and not closed during
the last session, normal processing continues
Warning - File has either not been formatted or
the invalid indicator is on in the directory for
that file
Record not found
Data set has been loaded
Successful completion
Invalid function specified on CAll to $IAM
link module in use, syncronize use of link
module with the program
load error for $IAM, verify $IAM exists and enough
storage is available to load it
Invalid request
Data set shut down due to error; see version 2 guide,
error recovery
A required module is not included in SIAM
Invalid index block found - during processing an
incorrect index block type was found, recreate the file
lAM is inactive - not enough storage available
Use $IAMUTl BF command to readjust storage size
Address supplied by your program is not a valid IACB
Insufficient number of IACBs, use BF command of
$IAMUTl to allocate more
Data set is opened for exclusive use,
cannot be opened exclusively
Data set already opened in load mode
Data set is opened, cannot be opened exclusively
$IAM buffer too small to process a file with this block size
Use the BF command of $IAMUTl to increase the buffer size
Get storage error - FCB
READ error - FCB, refer to system return code
Out of sequence or duplicate key
End of file
Duplicate key found in process mode
Inconsistent free space parameters
RSVIX/RSVBlK or
FPOOl/DYN were specified without one or the other
No space for insert. Reorganize the fila

'0
Chapter 7. Coding the Indexed Access Method Requests

IG-139

Return
Coda
76

77
7a
ao
as
90
100
101
110
120
122
123
150
200
230
231
234
242
243
244
245
246
247
248
249

()
Condition
DSOPEN error occurred - The system error field in the
OPEN table contains the DSOPEN errors:
21 - DSNAME,VOlUME not found
22 - VOLSERV error
23 - I/O error
Record save area not large enough - use $IAMUTl BF command
to set maximum record size for secondary file processing
Attempted to open a secondary file for LOAD, file is not
opened independently
FCB WRITE error during DELETE processing - see system
return code
Key field modified by user
Internal key save area temporarily in use by another
request
READ error - check system return code
WRITE error - check system return code
WRITE error - data set closed
Invalid EXTRACT type
File does not contain FCB extension
Cannot extract paging statis~ics. Data paging is not active
Hot enough storage available for data paging
Error occurred while accessing the primary file
Directory read error form $IAMDIR
$IAMQCB not found. Check sysgen for include of $IAMQCB
Directory error - DSNAME,VOL not found in $IAMDIR
Secondary index is out of sync with primary file.
Must rebuild file to get back in sync.
Primary file failed to open on secondary open request
Primary I/O error
Error in opening an auto-update modification request
Auto-update processing an INSERT to a secondary
failed, auto-update processing continues
During auto-update processing a GETSEQ to a secondary
failed, auto-update processing continues
I/O error on primary file during a secondary request
GET UPDATE error occurred trying to update a bad RBN

Note: For return codes 243 through 249,
occured. Use $IlOG to display the errors.

mul t i pie errors may have

o
IG-140

SC34-0404

o

CHAPTER 8. THE $IAHUTl UTILITY

This chapter describes how to use the $IAMUT1 utility to build and maintain your indexed files. Each command is described, including its function, parameters, and an example of how to use it. The file definition
parameters are also described.
The chapter is arranged in alphabetic order. Following is the list of
commands and the location of their descriptions:
"BF - Tailor the Indexed Access Method Buffers" on page IG-144
"DF - Define Indexed File" on page IG-146
"DI - Display Parameter Values" on page IG-149
"DR - Invoke Secondary Index Directory Functions" on page IG-150
"EC - Control Echo Mode" on page IG-160

c

"EF - Display Existing Indexed File Characteristics" on page IG-161
"LO - Load Indexed File" on page IG-162
"NP - Deactivate Paging" on page IG-166
"PG - Select Paging" on page IG-167
"PP - Define Paging Partitions" on page IG-168
"PS - Get Paging Statistics" on page IG-169
"RE - Reset Parameters" on page IG-170
"RO - Reorganize Indexed File" on page IG-171
"SE - Set Parameters" on page IG-173
"UN - Unload Indexed File" on page IG-184
The subcommands of the directory function (DR), are listed alphabetically
under the DR description. Those subcommands are:
AL
EN
DE
IE
LE
UE

-

allocate/reallocate directory
end directory function
delete entry
insert entry
list entries
update entry

Chapter 8. The $IAMUTI Utility

IG-141

$IAMUTl

$IAMUTI can be invoked using the $l command, $JOBUTIl, or the Session Manager. $IAMUTI functions use dynamic storage for work and buffer areas.
The $IAMUTI utility is shipped with sufficient dynamic storage to handle
input and output block sizes of UP to 512 bytes. This enables you to
define an indexed file with a maximum block size of 512 bytes, and to
load, unload, and reorganize indexed files with a maximum block size of
512 bytes.
$IAMUTI determines if enough dynamic storage has been
provided. If sufficient storage has not been provided, $IAMUTI displays a
message. In order to handle large blocks of data, a larger dynamic storage area will have to be provided to $IAMUTI. Additional dynamic storage
can be provided by one of two ways: provide the storage parameter on the
$l command, or use the SS command of the $DISKUT2 utility.
The load, unload and reorganize functions use the entire dynamic storage
available to minimize the number of disk I/O operations. Improved performance, therefore, can be obtained by specifying as large a dynamic area
as possi ble.

$IAMUTl COMMANDS

The commands available under $IAMUTI are listed below. To display this
list at your terminal, enter a question mark in response to the prompting
message ENTER COMMAND (1):.
The command descriptions in this chapter are arranged in alphabetic order.

IG-142

C
'

SC34-0404

-~.··
,I

o

ENTER COMMAND (1): ?
EC
EF
DR
EN

-

SET/RESET ECHO MODE
DISPLAY EXISTING FILE CHARACTERISTICS
SECONDARY INDEX DIRECTORY FUNCTIONS
END THE PROGRAM

SE
SET DEFINE PARAMETERS
DF - DEFINE AN INDEXED FILE
DI - DISPLAY CURRENT SE PARAMETERS
RE - RESET CURRENT VALUES FOR DEFINE
LO - LOAD INDEXED FILE FROM SEQUENTIAL FILE
RO - REORGANIZE INDEXED FILE
UN - UNLOAD INDEXED FILE TO SEQUENTIAL FILE
PG
NP
PP
PS
SF

-

SELECT DATA PAGING
DESELECT DATA PAGING
DEFINE PAGING PARTITIONS
DATA PAGING STATISTICS
SET BUFFER SIZES

ENTER COMMAND

c

(1):

After the commands are displayed, you are again prompted with ENTER COMMAND (1):. Respond with the command you wish to use.

o
Chapter 8. The $IAMUTl Utility

IG-143

BF - TAILOR THE INDEXED ACCESS METHOD BUFFERS

The BF command specifies the amount of storage that the Indexed Access
Method ($IAM) is to use for buffers and control blocks and the maximum
record size for any file with a secondary index.
BF prompts you for each of the following parameters by displaying the current value and accepting new settings.
BUFFER SIZE

Indi cates the amount of storage (i n bytes) to be
used for the central buffer. Use the following
formula to calculate your minimum buffer size:

Buffer Size = (2 x blocksize) + (28 x blocksize/256)
where: blocksize = maximum block size

NUMBER OF IACBs

Indi cates the number of the I ACBs. The max i mum
number of IACBs is 64. There is an lACB associated
with"each PROCESS or LOAD that is issued. When calculating the number of IACBs you should consider
the number of concurrent users you may have at any
one time.

NUMBER OF FCBs

Indicates the number of FCBs. The maximum number
of FCBs is 64. There is one FCB for every file that
is open. When calculating the number of FCBs you
should consider the maximum number files that might
be open at a given time.

MAXIMUM RECORD SIZE

Indicates the maximum record size of any file with
an associated secondary index. If no files have a
secondary index, this value can be zero. The actual amount of storage reserved as a result of this
parameter is twi ce the value speci fi ed plus 8
bytes.

Hone of these take effect until the next time the Indexed Access Method is
loaded.

IG-144

SC34-0404

o
IF Command Example
This example sets the central buffer size to 540 bytes, leaves the number
of IACBs at 3, leaves the number of FCBs at 3, and sets the maximum record
size of any file with a secondary index to 120 bytes.

ENTER COMMAND (1): IF
PARAMETER
DEFAULT
NEW VALUE
BUFFER SIZE
1080
540
NUNBER OF IACBs
3
NUMBER OF FCBS
3
MAXIMUM RECORD SIZE
256
120
VALUECS) SET
STORAGE FOR $IAM HAS BEEN SET TO 2048
BECOMES EFFECTIVE ON NEXT LOAD OF $IAM
ENTER COMMAND (1):

o
Chapter 8. The $IAMUTI Utility

IG-145

"
C

ill
II

DF - DEFINE INDEXED FILE
The DF command allocates, defines, and formats an indexed file. The DF
function will optionally invoke the load or reorganize function for you.
Before entering DF, you must use the SE command to set up parameters that
determine the size and format of the indexed file. The DF command uses
those SE parameters to optionally allocate and format the file. The DF
function can be invoked at the end of the SE function.
The allocate step consists of using the file size computed during the SE
step to dynamically allocate the file. If the file already exists, the
size is verified to ensure that it is large enough. The define step consists of writing the file control block (FCB) and its extension to the
indexed file. Finally, the optional format step initializes all records
in the indexed file to provide an empty structured file.

INVOKING THE LOAD AND REORGANIZE FUNCTIONS FROM DF:

You can invoke the
LOAD or REORGANIZE functions directly from the DF (or SE) command. If you
invoke these functions, DF does not format the file because LOAD and REORGANIZE will format the file. If you do not invoke the LOAD or REORGANIZE
function, DF formats the file so you can load the file using an application program or the LO command.

Notes:
1.

You can use the LOAD/REORGANIZE command later to load the file, if you
do not invoke it from the DF command.

2.

An application program cannot access an unformatted indexed file.

3.

The prompt for the load/reorganize function occurs before the file is
actually defined.

4.

A secondary index file cannot be loaded with the LO command, though it
can be reorganized using the RO function.

Defining the File
The define function prompt for the file to be allocated. If the file
already exists, its size is checked. If the size is at least as large as
needed, DF prompts you as to whether the file should be reused as follows:

IG-146

SC34-0404

'

i

)1

o
ENTER COMMAND (!): OF
ENTER DATA SET (NAME,VOLUME) : IAHFIlE,EDX003
DATA SET ALREADY EXISTS AND IS LARGE ENOUGH
DO YOU WISH TO REUSE IT (Y/N)!: Y

If the file exists, but it is not as large as needed, you have the option
of deleting and reallocating it as shown in the following example:

ENTER COMMAND (!): OF
ENTER DATA SET (NAME, VOLUME)
HASTER,VOl123
DATA SET ALREADY EXISTS AND IS TOO SMALL
DELETE AND REALLOCATE (Y,N)? : Y
DELETE AND REALLOCATE COMPLETED

If the fi Ie does not exi st, it is allocated as follows:

ENTER COMMAND (?): OF
ENTER DATA SET CNAME,VOLUME)
NEW DATA SET IS ALLOCATED

HASTER,VOL123

DF prompts you to select whether or not you want to use the immediate
write-back option. Immediate write-back has the same effect on primary or
secondary indexed files.
Each request to insert, delete, or update a data record, causes the
affected blocks to be read into the Indexed Access Method buffer. The
actual modification to the block is performed in the buffer.

o

If you enter N to the immediate write-back prompt, file modifications are
held in the main storage buffer and not written back to the indexed file
until the buffer space is needed for another block or until the file ;s
closed. If the device where the file resides was powered off before the
block was written back to the file, the modification to the file would not
have been performed.

Chapter 8. The $IAMUTl Utility

IG-147

If you enter Y to the immediate write-back prompt, you are assured that
the changed block is written back to the file immediately.
The prompt is as follows:

DO YOU WANT IMMEDIATE WRITE-BACK? Y .

DF Command Example
The following example shows a use of the DF command to define a file named
MASTER on volume VOL123. Immediate write-back is selected and the request
to invoke LOAD or REORGANIZE is indicated.

ENTER COMMAND (?): DF
ENTER DATA SET (NAME. VOLUME) : HASTER,VOLI23
NEW DATA SET IS ALLOCATED
DO YOU WANT IMMEDIATE WRITE-BACK? Y
INVOKE LOAD(L), REORGANIZE(R) OR END(E) AFTER CURRENT FUNCTION? L
DEFINE IN PROGRESS
.DATA SET SIZE IN EDX RECORDS:
17
INDEXED ACCESS METHOD RETURN CODE:
-1
SYSTEM RETURN CODE:
-1
PROCEED WITH LOAD/REORGANIZE (Y/N)

c
IG-148

SC34-0404

o
DI - DISPLAY PARAMETER VALUES
DI displays the current parameter values entered during the current session of $IAMUTI SE command. The parameter values can be used to format a
file using the DF command or they can be modified by reusing the SE command.

Note: You can also use the EF command to display the parameters of an
enci

sti ng fi Ie.

The following example shows a use of the DI command.

C"

",,/

ENTER COMMAND C?): DI
CURRENT VALUES FOR SE COMMAND ARE:
FILE TYPE = PRIMARY
BASEREC
100
BlKSIZE
256
RECSIZE
80
KEYSIZE
28
KEYPOS
1
FREEREC
1
FREEBlK
10
. RSVBlK
HUll
RSVIX
0
FPOOl
NUll
DElTHR
NUll
DYN
NUll

----------

For a secondary file, the record size is not displayed.

o
Chapter 8. The $IAMUTl Utility

IG-149

DR - INVOKE SECONDARY INDEX DIRECTORY FUNCTIONS

The DR command provides access to secondary index directory functions.
Those functions are made available by replying DR when $IAMUTl requests
"ENTER COMMAND (?):". You can then respond to the "ENTER DIRECTORY COMMAND (?):" with a subcommand. To obtain a list of the available subcommands, reply with a question mark (?) as follows:

ENTER COMMAND (!): DR
ENTER DIRECTORY COMMAND (?): ?
AL
LE
ID
DE
UE
EN

-

ALLOCATE/REALLOCATE DIRECTORY
LIST ENTRIES
INSERT ENTRY
DELETE ENTRY
UPDATE ENTRY
END DIRECTORY FUNCTION

ENTER DIRECTORY COMMAND (?):

;<". "'.

'",.... j/

.

The directory function commands are arranged in alphabetic order as DR xx, where xx is the two letter di rectory subcommand. Thei r speci fi c
locations are listed below:
"AL - Allocate Directory" on page IG-151
"DE -

Delet~

Directory Entry" on page IG-153

"EN - End Directory Function" on page IG-154
"IE - Insert Entry" on page IG-155
"LE - List Entries" on page IG-156
HUE - Update Directory Entry" on page IG-158

IG-150

SC34-0404

o

DR - AL
AL - ALLOCATE DIRECTORY
The AL subcommand allocates a di rectory for secondary indexes. If a
directory already exists, this subcommand gives the option to delete and
reallocate it.

Note: To use this subcommand, you must first use the DR command.
You are prompted to enter the maximum number of directory entries. Enter
the number of entries you want the directory to be able to hold. Each
entry describes a primary file or secondary index. The maximum number of
entries defaults to 47.
The directory, $IAMDIR, is always allocated on the IPL volume.
The following example shows a use of the AL subcommand to allocate a new
directory with a capacity of 10 entries:

C:

ENTER DIRECTORY COMMAND (?>: AL
MAX I OF DIRECTORY ENTRIES: 10
THE DIRECTORY DATA SET REQUIRES 1 EDX RECORDS, CONTINUE (Y/N/EN)? Y
DiRECTORY DATA SET ALLOCATED: $IAMDIR,EDX002

The next example assumes a directory already exists and allocates a new
one.

ENTER DIRECTORY COMMAND (?): AL
DIRECTORY EXISTS, OPTIONS ARE:
BN - BUILD NEW DIRECTORY
AS - ADJUST SIZE
EN - END DIRECTORY ALLOCATE
ENTER OPTION: 8N
ALL DIRECTORY ENTRIES WILL BE DELETED, CONTINUE (YIN)? V
MAX I OF DIRECTORY ENTRIES: 20
THE DIRECTORY DS REQUIRES
2 EDX RECORDS, CONTINUE (Y/N/EN) ? V
DIRECTORY DATA SET ALLOCATED: $IAMDIR,EDX002

The following example, adjusts the size of the directory data set.
existing entries will be retained.
Chapter 8. The $IAMUTI Utility

All

IG-151

DR - AL

ENTER DIRECTORY COMMAND (?): AL
DIRECTORY EXISTS, OPTIONS ARE:
BN - BUILD NEW DIRECTORY
AS - ADJUST SIZE
EN - END DIRECTORY ALLOCATE
ENTER OPTION: AS
MAX I OF DIRECTORY ENTRIES: 1
THE DIRECTORY DS REQUIRES

1 EDX RECORDS, CONTINUE (Y/N/EN) ? Y

DIRECTORY DATA SET ALLOCATED: $IAMDIR,EDX002

IG-152

SC34-0404

0

,1

DR - DE

I

1.1'

DE - DELETE DIRECTORY ENTRY
The DE subcommand deletes an entry from the directory. If you delete a
primary entry. all associated secondary indeK entries are also deleted.

Note: To use this subcommand. you must first use the DR command.
The following example shows the deletion of the directory entry for the
file named MASTER on the volume named VOL123. MASTER is a primary index
file entry which has secondary indexes associated with it.

ENTER DIRECTORY COMMAND (?): DE
ENTRY (DSNAME,VOLUME): HASTER,VOL123
ASSOCIATED SECONDARY ENTRIES WILL BE DELETED. CONTINUE (Y/N)?
DELETE SUCCESSFUL, NUMBER OF ENTRIES DELETED:
2

C

~

Y

The following eKample shows the deletion of the directory entry for a file
named MASTER, on the volume named VOL123. MASTER is a primary index file
entry which no longer has any secondary indexes associated with it.

"

ENTER DIRECTORY COMMAND (?): DE
ENTRY (DSNAME.VOLUME): HASTER
ENTRY FOR MASTER ,EDX002 WILL BE DELETED. CONTINUE (Y/N)? Y
DELETE SUCCESSFUL. NUMBER OF ENTRIES DELETED:
1

o
Chapter 8. The $IAMUTI Utility

IG-153

DR - EN
EN - END DIRECTORY FUNCTION
The EN subcommand terminates the directory funct;ons (DR) and returns to
$IAMUT1 for your next command.

,,.c<----"',

' <1( . . ,;/

o
IG-154

SC34-0404

o

DR - IE
IE - INSERT ENTRY
The IE subcommand inserts a new entry into the secondary index directory.
It is used to insert either a primary or secondary entry. However, the
primary entry must be inserted before any of its secondary entries can be
inserted.
For a primary entry, enter the data set name and volume of the file for
which the entry is being inserted. Specify N when asked "IS THIS A SECONDARY ENTRY (Y/N)?"
For secondary entries, enter the data set name and volume of the secondary
index for which the entry is being inserted and specify that it is a secondary index. You are then prompted for additional information.
Specify the name of the primary index file which the secondary index is to
be associated with. You can select automatic update, which indicates that
any change to a primary file is to be reflected in the secondary index.
The default for automatic update is yes.
The following example inserts a directory entry for a primary index file:

c

ENTER DIRECTORY COMMAND (?): IE
ENTRY (DSNAME,VOLUME): TOHPRI,EDX002
IS THIS A SECONDARY ENTRY (Y/N)? N
DIRECTORY INSERT SUCCESSFUL

The following example inserts a directory entry for a secondary index
named 'TOMSEC1,EDX002' which is to be associated with the primary index
file'TOMPRI,EDX002'. Automatic update is selected.

ENTER DIRECTORY COMMAND (?): IE
ENTRY (DSNAME,VOLUME) TOHSEC1,EDX002
IS THIS A SECONDARY ENTRY? Y
ASSOCIATED PRIMARY ENTRY (DSNAME,VOLUME): TOHPRI,EDX002
AUTO-UPDATE (Y/N)? Y

O

Note: To use this subcommand, you must first use the DR command.

il!

,I'

Chapter 8. The $IAMUTI Utility

IG-lSS

DR - LE
LE - LIST ENTRIES
The LE subcommand lists the contents of one or more directory entries.
Specify the name of a primary indexed file to get information about that
file and its secondary indexes. Specify the name of a secondary index to
get information about only that secondary index. To obtain a complete
list of all information in the directory, just press the Enter Key without
supplying any data set name or volume.

Note: To use this subcommand, you must first use the DR command.
The following example lists the directory entries related to the primary
file named 'TOMPRI' on volume 'EDX002'.

ENTER DIRECTORY COMMAND C?): LE
ENTRY (DSMANE,VOLUME) BLANK=ALL: TOMPRI
DSNAME

PRIMARY INDEVOLUME DATA SET PENDENT

TOMPRI
TONSEC!
TOMSEC2

EDXOO2 YES
EDXOO2 NO
EDXOO2 NO

NO
NO
NO

INVALID

AUTO
UPDATE
,11· "\

****
YES
YES

NUMBER OF DIRECTORY ENTRIES USED =
NUMBER OF AVAILABLE ENTRY SLOTS =
DIRECTORY LIST COMPLETED

****
YES
NO

:,,:_..)

6

41.

c
IG-156

SC34-0404

o

DR - LE

The following example lists all directory entries.

ENTER DIRECTORY COMMAND (?): LE
ENTRY (DSNAME,VOLUME) BLANK=ALL:
INDEPENDENT

INVALID

EDXIAM
EDX003 YES
EDXIAMSl EDXOO3 NO

NO
NO

YES

TOMPRI
TOMSECl
TOMSEC2

NO
NO
NO

YES
YES

DSNAME

PRIMARYU
VOLUME DATA SET

EDXOO2 YES
EDXOO2 NO
EDXOO2 NO

****

****

YES

****

****

NUMBER OF DIRECTORY ENTRIES USED =
NUMBER OF AVAILABLE ENTRY SLOTS =
DIRECTORY LIST COMPLETED

AUTO
UPDATE

YES
NO
6

41

c~:

o
Chapter 8. The $IAMUTl Utility

IG-157

(~y

DR - UE
UE - UPDATE DIRECTORY ENTRY
The UE subcommand updates an entry in the secondary index directory.
can use this command as follows:

You

•

Specify null values for parameters to remain unchanged (press the
Enter key when you are prompted for them).

•

Enter new values for parameters to be modified.

Note: You cannot change a primary entry to a secondary entry or a secondary entry to a primary entry.
entry and insert a new one.

To do this, you must delete the old

The following example updates a primary directory entry named
'MASTER,VOL123', changes the volume name from VOL123 to EDX002 and leaves
the DSNAME MASTER as it is.

ENTER DIRECTORY COMMAND (1): UE
ENTRY (DSNAME,VOLUME) MASTER,YOL123

~-./

I

THIS IS A PRIMARY ENTRY
IN THE FOLLOWING, ENTER NEW VALUE OR,
ENTER NULL LINE TO RETAIN (PRESENT VALUE)
DSNAME (MASTER):
VOLUME (VOL123): EDX002
INDEPENDENT (N):
DIRECTORY UPDATE SUCCESSFUL

o
IG-lS8

SC34-0404

o

DR - UE
The following example updates a seconda~y di~ecto~y ent~y named
'MASTER,VOL123', changes the VOLUME name to EDX002 and leaves the DSNAME
MASTER as it is. It sets automatic update, leaves the independent p~oc­
essing flag as it is, and sets the invalid indicator off.

ENTER DIRECTORY COMMAND (1): UE
ENTRY (DSNAME,VOLUME) "ASTER,VOL123
THIS IS A SECONDARY ENTRY
IN THE FOLLOWING, ENTER HEW VALUE OR,
EHTER HULL LIHE TO RETAIH (PRESEHT VALUE)
DSHAME (MASTER):
VOLUME (EDX123): EDX002
INDEPEHDENT (N):
INVALID IHDICATOR (Y): N
AUTO-UPDATE (Y)= Y

o

DIRECTORY UPDATE EHDED

Note: To use this subcommand,

you~ust

first use the DR command.

o
Chapter 8. The $IAMUTl Utility

IG-159

EC - CONTROL ECHO HODE
EC enables you to enter or leave echo mode. When in echo mode, all $IAMUTl
input and output is logged on the $SYSPRTR device. This enables you to
save information about the files you maintain using $IAMUT~. When in echo
mode, all input and output is logged until either the current utility session is ended or echo mode is reset by use of the EC command. Echo mode is
off when $IAMUTl is loaded.

Note: Input and output from $DISKUT3 is not logged.
The following examples show the commands to set and reset echo mode:

ENTER COMMAND (?>: EC
DO YOU WANT ECHO MODE? (YIN)?: V
FUNCTION COMPLETED

(Set echo mode)

ENTER COMMAND (?): EC
DO YOU WANT ECHO MODE? (YIN>?: N
FUNCTION COMPLETED

(Reset echo mode)
(/"
I~l_,)'

IG-160

SC34-0404

EF - DISPLAY EXISTING INDEXED FILE CHARACTERISTICS
The EF command displays the file definition parameters that were used to
set up the file. The information ;s obtained from the FCB Extension
block.

EF Command Example
This example shows how to display the file parameters used to set up the
file.

ENTER COMMAND (?): EF
EXHIBIT FUNCTION ACTIVE
ENTER DATASET (NAME,VOLUME): EDXIAM1,EDX003
FILE TYPE = PRIMARY
BASEREC
20
BlKSIZE
256
RECSIZE
80
KEYSIZE
it
KEYPOS
1
FREEREC
o
FREEBlK
o
RSVBlK
NULL
RSVIX
o
FPOOl
NUll
DElTHR
NUll
DYN
10
EXHIBIT FUNCTION COMPLETED

o
Chapter 8. The $IAMUTI Utilify

IG-161

LO - LOAD INDEXED FILE
LO loads a primary indexed file from a sequential (blocked or unblocked)
input file. (A secondary indexed file must be loaded by using the DF or SE
command).
A primary indexed file can be loaded in one of two
environments. Loading an empty file is referred to as the initial load.
For an indexed file that already contains some records, the LO command can
be used to add records with higher keys (keys of higher value than those
already in the indexed file). This is called load in extend environment.
Blocks are read from the sequential file with the EDL READ instruction and
de-blocking is performed, if necessary. In the initial load environment,
data records are formatted into Indexed Access Method blocks and written
to the indexed file with the EDL WRITE instruction. Corresponding index
blocks are written as required. The remainder of the indexed file is formatted if formatting was not completed during the DF function. In the
extend environment, records are loaded into the indexed file using Indexed
Access Method PUT requests.
The sequential input'file can contain blocked or unblocked records. For a
description of blocked and unblocked sequential data sets, see "Blocked
and Unblocked Sequential Data Sets" on page IG-164. The records in the
sequential file must be in ascending order by the data contained in the
key field. If a record with a duplicate or out of sequence key is found,
you are given the option to either omit the record and continue loading,
or to end loading. The indexed file must have been defined by using the SE
and DF commands before using the LO command.

/~

-"',

\~""J!

Your response to the prompt message "ENTER INPUT BLOCKSIZE", defines to
the LO command whether the input is a blocked or unblocked sequent i al
file. A null response to the prompt "ENTER INPUT BLOCKSIZE" indicates an
unblocked input file and the block size is then calculated using the input
record size value, rounded up to the next 256-byte multiple value. If the
actual block size value is entered as your response to this prompt, a
blocked sequential input file is indicated.
The record lengths of the input and output files do not have to be the
same. When the indexed file is opened, the record length is displayed on
the terminal. At this point, you can specify the record length of the
sequential file if it is different than that of the indexed file. If the
indexed file records are longer than the sequential file records, the
loaded records are left justified and filled with binary zeroes. If the
indexed file records are shorter than the sequential file records, the
followi ng message appears on the termi nal :

o
IG-162

SC34-0404

o
INPUT REC GT OUTPUT REC. TRUNCATION WILL OCCUR.
OK TO PROCEED?

Reply 'V' to proceed (records will be truncated).
Reply 'N' to terminate the load function.
If the end of the input sequential file is reached, you can continue loading from another sequential file. You are asked if there is more data to
load. If you reply yes (Y), you are prompted for the file and volume name
of the new input sequential file to use. The load operation continues,
putting the first record of the new input sequential file in the next
available record slot of the indexed file.

Note: The record lengths and block sizes of subsequent input files are
assumed to be the same as the initial input file.
If the end of input file is reached and you·do not name another input file,
the load operation is complete.

Note: If you are loading the indexed file from a tape file, $IAMUTl
does not close the tape fi Ie upon completi on of the load. Use the
$VARYOFF command to close the tape fi Ie (refer to the Operator's
Reference for a description of the $VARYOFF command).
The following example shows use of the LO command:

ENTER COMMAND (1): LO
LOAD ACTIVE
ENTER OUTPUT DATASET (HAME,VOLUME): IAHFILE,EDX003
$FSEDIT FILE RECSIZE = 128
INPUT RECORD ASSUMED TO BE
80 BYTES. OK?: Y
ENTER INPUT BLOCKSIZE (HULL = UNBLOCKED):
ENTER INPUT DATASET (NAME,VOLUME): SEQ01,EDX003
LOAD IN PROCESS

o

END OF INPUT DATASET
ANY MORE DATA TO BE LOADED?: N
6 RECORDS LOADED
LOAD SUCCESSFUL

Chapter 8. The $IAMUTl Utility

IG-163

Blocked and Unblocked Sequential Data Sets

The LO (load) function of $IAMUTI will accept either blocked or unblocked
sequential data sets as input when loading an indexed file. The UN (unload) function will either block or unblock data as requested when unloading an indexed file to a sequential data set.

UNBLOCKED SEQUENTIAL DATA SET:

An unblocked sequential data set contains
one record in each block. The blocksize must be a multiple of 256 bytes.
The record size must be equal or less than the block size. A block can
span one or more EDX records.

The following diagram illu$trates the relationship of a data record of 300
bytes to a block size of 512 bytes in an unblocked data set.

>

512 byte block

<

300 byte
data record

212 bytes
unused

~--"

2 EDX records

<

>

\~'
,:;,)1

BLOCKED SEQUENTIAL DATA SET:

Ina blocked sequential data set a block can
contain multiple logical records. The block size must be a multiple of
256 bytes. The record size must be equal to or less, than the block size.
A block can span one or more EDX record.

The following diagram illustrates 6 data records of 80 bytes each within a
block of 512 bytes in a blocked dat~ set.

<-------------------------80 byte
data
record

80 byte
data
record

512 byte block

80 byte
data
record

<-------------------------

80 byte
data
record

2 EDX records

-------------------------->
80 byte
data
record

80 byte
data
record

32
bytes
unused

----------------------------->

Both the blocked and unblocked forms of sequential data sets, used by the
utility, are compatible with the language processors, Sort/Merge and data
IG-164

SC34-0404

c

o
sets produced by $FSEDIT. If you use the EDX edit utilities to prepare
your data records for input, remember that these utilities put one 80-byte
line from $FSEDIT into a 128-byte $FSEDIT record. Two of these 128-byte
records are then used to form one 256-byte EDX record. When you use such a
data set as sequential input for the LO (load) function, specify the
record length as 128 and the block size as 256. If your indexed file is
defined as having a record length of 80, you will receive the message
"TRUNCATION WILL OCCUR." This is acceptable because Indexed Access Method
strips off the extra bytes added by $FSEDIT.
The last block of a blocked sequent i al data set may not have enough
records for a full block. In this case, all of the unused space in the
block is set to binary zeroes.

Invoking the LOAD and REORGANIZE Funct;ons

C

'!';

You can invoke the LOAD or REORGANIZE functions directly from the DF command. If you invoke these functions, DF does not format the file because
LOAD and REORGANIZE will do it. If you do not invoke the LOAD or REORGANIZE function, DF formats the file so you can load the file using an application program or $IAMUTI at a later time •

.,?

Notes:
1.

You can use the LOAD/REORGANIZE command later to load the file, if you
do not invoke it from the DF command.

2.

An application program cannot access an unformatted indexed file.

3.

The prompt for the load/reorganize function occurs before the define
step.

o
Chapter 8. The $IAMUTI Utility

IG-165

NP - DEACTIVATE PAGING
The NP command directs that data paging be deselected the next time the
Indexed Access Method is loaded.
Page area si zes are not affected by thi 5 command.

NP Command Example
This example shows how to indicate data paging is to be deselected on the
next invocation of the Indexed Access Method.

ENTER COMMAND (1): NP
DATA PAGING MARKED AS NOT ACTIVE
BECOMES EFFECTIVE ON NEXT LOAD OF $IAM

,/--"

~,--,,;)

C)
IG-166

SC34-0404

o
PG - SELECT PAGING
The PG command directs that data paging be selected the next time the
Indexed Access Method is loaded.
Page area sizes are not affected by this command.

PG Command Example
This example shows how to indicate data paging is to be selected on the
next invocation of the Indexed Access Method.

ENTER COMMAND (1): PG
DATA PAGING MARKED AS SELECTED
BECOMES EFFECTIVE ON NEXT LOAD OF $IAM
SEE INDEXED ACCESS METHOD GUIDE CONCERNING
REMOVAL OF PAGING MODULES FROM STORAGE.
ENTER COMMAND (1):

o
Chapter 8. The $IAMUTl Utility

IG-167

PP - DEFINE PAGING PARTITIONS
The PP command defines the amount of storage in each partition that the
Indexed Access Method should reserve for paging. storage is actually used
for paging only when paging is active.
PP prompts you for the size of the paging area for each partition by displaying the partition number and current paging area size for that partition. Respond with a null entry (just press the Enter key) to retain that
size. Enter a new size to change the space allocation. Sizes are displayed and entered in K bytes (lK = 1024), and should be entered as even
numbers (multiple ~f 2K). If not, they are adjusted up to the next even
number. The new sizes do not take effect until the next time the Indexed
Access Method is loaded with paging active.

PP Command Example
This example retains the 10K paging area size in partition 3 and increases
the paging area in partition 5 from 6K to 10K.

ENTER COMMAND (?): PP
PARTITION CURRENT
NEW
1
2
3
4

5
6
7

OK
OK
OK
OK
OK
OK
OK

8

OK
PAGE AREA SIZECS) RESET
BECOMES EFFECTIVE ON NEXT
TOTAL PAGE AREA SIZE IS
SEE INDEXED ACCESS METHOD
REMOVAL OF PAGING MODULES

LOAD OF $IAM
40K
GUIDE CONCERNING
FROM STORAGE.

Notes:
1.

The letter K is optional on input, and is assumed if missing.

2.

The new.total page area size is 40K and becomes effective on the next
LOAD of $IAM.

1G-168

SC34-0404

o
PS - GET PAGING STATISTICS
The PS command displays data paging information about th~ cUrrently executing Indexed Access Method. It shows the total size of the paging area,
and "hit" information for reads, writes and overall.
The Indexed Access Method increments a "hit" counter each time a referenced block is found in the paging area. It increment~ a "miss" counter
each time a referenced block is not found in the paging area. The PS command displays these numbers, along with "hit percentages." Use the hit
percentages to determine how efficiently the paging area is being used.
After the statistics are displayed, you have the option of resetting the
counters to zero so that a new set of paging statistics can be gathered.

PS Command Example
Display the current paging statistic and reset them.

c

ENTER COMMAND (?): PS
FUNCTION
HITS
READ
45678
WRITE
2450
OVERAll
48128

MISSES
81205

HIT "
36

o

100

81205

37

RESET STATISTICS (Y/N)! Y
STATISTICS RESET

0,
Chapter 8. The $IAMUTI Utility

IG-169

(}
RE - RESET PARA"ETERS
RE resets the parameters set

UP by

the SE command to their default values.

The following example shows a use of the RE command:

ENTER COMMAND (?): RE
PARAMETERS RESET

c
IG-170

SC34-0404

o
RO - REORGANIZE INDEXED FILE
RO reorganizes a primary or secondary indexed file. It unloads an indexed
file filled by insert activity into an empty indexed file and reorganizes
the records to provide space for additional inserts.
This command requires two existing indexed files of the same type. Both
the input file and the output file must be primary indexed files, or both
must be secondary index files.
Records are read sequentially from the
input file using the Indexed Access Method GETSEQ request. The records
are loaded into the output file in a manner similar to the initial load of
the LO command.
All reserved and free space is retained as free space.
Reorganizing a secondary index does not reset the secondary key sequence
numbers during the reorganization, because it does not use the primary
file. The records are placed in another Indexed Access Method file without any modification within the individual records.
The output indexed file must have been defined by using the SE or DF commands before using the RO command. The SE Option 3 will format an output
file like the original file, or $VERIFY will show the number of records in
the file so that you can set up an outp~t file.
The record
records ~re
fer (see LO
must be the
may differ.

lengths of the two fi les need not be the same. Unloaded
truncated or filled with binary zeroes if record lengths difcommand). The key fields and key positions of the two files
same; however, the other file specifications (SE parameters)

INVOKING THE LOAD AND REORGANIZE FUNCTIONS FROM DF:

You can invoke the
LOAD or REORGANIZE functions directly from the DF command. If you invoke
these functions, DF does not format the file because LOAD and REORGANIZE
will do that, thus saving time. If you do not invoke the LOAD or REORGANIZE function, DF form~ts the file so you can load the file using an application program or the LO command.
Notes:

o

1.

You can use the LOAD/REORGANIZE command later to load the file, if you
do not invoke it from the DF command.

2.

An application program cannot access an unformatted indexed file.

3.

The prompt for the load/reorganize function occurs before the define
step.

Chapter 8. The $IAMUTI Utility

IG-171

The follow;ng example shows use of the RO command:

ENTER COMMAND (1): RO
REORG
ENTER
ENTER
REORG

ACTIVE
INPUT DATASET CNAME,VOLUME): IAHFILE,EDX003
OUTPUT DATASET CNAME,VOLUME): IAHFIL2,EDX003
IN PROCESS

END OF INPUT DATASET
100 RECORDS LOADED
REORG SUCCESSFUL

ENTER COMMAND (!): EN

o
IG-172

SC34-0404

o
SE - SET PARAMETERS

SE p~ompts you fo~ pa~amete~s that dete~mine the
indexed file. An explanation of the SE command
example of each is included with the desc~;pt;on.
The

st~uctu~e

and size of the
follow and an

pa~8mete~s

values ente~ed a~e saved by $IAMUTI. This enables you to
the SE command to change one o~ mo~epa~amete~s without having to
~eente~ all of them.
The cu~~ent values can be displayed by the DI command.
pa~amete~

~euse

The SE command

Opt;on 1

p~ovides th~ee

Significant
The utility
set.

Pa~amete~s

All

Opt;on 3

Pa~amete~s f~om

Pa~amete~s

Note:

we~e

used

Info~mation

end of the

-

Ente~

inte~nally conva~ts

Opt;on 2

that

methods of setting up an indexed fila.

-

Ente~

a minimal set of SE pa~amete~s.
tha smalle~ set to the complete

the complete set of SE

pa~amete~s.

Existing Data Set - Use the set of SE pa~amete~s
to define an existing indexed file.

p~eviously

which is common to all th~ee options appea~s
"All Options" on page IG-182.

nea~

the

~E desc~;ption unde~

Whan you specify the SE command, you a~e
options as shown in the following display.

p~ompted

to select ona of the

SET FILE DEFINITION PARAMETERS
o = EXIT
1 = SIGNIFICANT PARAMETERS
2 = All PARAMETERS
3 = PARAMETERS FROM EXISTING INDEXED DATASET
ENTER OPTION:

Option 1

a minimal set of pa~amete~s. It issues a p~ompt to
if a seconda~y index is being defined. If so, the seconda~y
file name, key size, and key position a~e ~equested. If a p~ima~y file is
being defined, diffe~ent p~ompts a~e issued. $IAMUTI inte~nally conve~ts
the option 1 pa~amete~s to option 2 pa~amete~s.
p~ompts fo~

dete~mine

When the SE opt ion 1 is i nvoked
defaults valuas a~e as follows:

fo~

tha fi

~st

ti me, tha

p~ompts

Chapter 8. The $IAMUT1 Utility

and

IG-173

()
SECONDARY INDEX CY/N)?: N
DEFAULT
0:
RECORD SIZE
0:
KEY SIZE
1:
KEY POSITION
1:
BLOCKING FACTOR (RECORDS PER BLOCK)
0:
NUMBER OF BASE RECORDS
24:
ESTIMATED TOTAL RECORDS
TYPE OF INSERT ACTIVITYCC=CLUSTERED,R=RANDOM) C:

NEW VALUE
80
,

20

On subsequent invocations of the SE option 1, the defaults are taken from
the parameter values since the last SE option 1 invocation. Option 1 and
3 values do not carryover to option 2.
The estimated total records value defaults to the last value, provided
thi s value equals or exceeds the current base records. Otherwi se it
defaults to 1.2 times the current base records.
To set up a secondary index, enter the following:

SECONDARY INDEX (Y/N)!= Y
ENTER SECONDARY DATASET NAME (DS,VOL): FILEOl,EDX002
SECONDARY KEY SIZE:IO
SECONDARY KEY POSITION:36

r

Before you can define a secondary index, you must place an entry in the
directory for the associated primary index file and the primary file must
exist. The directory is searched to obtain the data set name and volume
of the associated primary file which will then be used to compute the
remainder of the secondary SE parameters.

Parameter Descriptions for option 1
The attr i butes of the fi Ie are determi ned by the followi ng SE command
parameters:
I

RECORD SIZE:

The length, in bytes, of each record in the file.

KEY SIZE: The length of the key to be used for this file. The minimum key
length is 1. For primary files, the maximum key length is 254.

IG-174

SC34-0404

O

.:!

J,

KEY POSITION:

The position, in bytes, of the key within the record.
first byte of the record is position 1.

The

BLOCKING FACTOR (RECORDS PER BLOCK):

The total number of records to be
placed in an Indexed Access Method block. This value and the record size
wi 11 be used to compute the actual Indexed Access Method block si ze,
rounded up to the next 256-byte value. The roundi ng up act i on may
increase the actual blocking factor.

NUMBER OF BASE RECORDS:

The number of indexed record slots to be set up in
the indexed file. These record slots can be loaded with data records by
$IAMUTI or by a PUT request after either a LOAD or PROCESS request.

ESTIMATED TOTAL RECORDS:

The total number of records you expect the
indexed file to contain after insert processing activity.

TYPE OF INSERT ACTIVITY(C=CLUSTERED,R=RANDOM):

Inserts are considered
clustered if most of the inserts occur at only certain places in the file.
The following diagram represents clustered inserts by vertically stacked
bullets.

Blocks

I

Inserts

The next diagram represents random inserted records. Inserts are considered random if few or no points in the file have a concentration of activity; inserts are expected throughout the ,file.

Blocks
Inserts •.. •

()
Chapter 8. The $IAMUTI Utility

IG-175

The length, in bytes, of the secondary key within the
For secondary keys the maximum key length is 250.

SECONDARY KEY SIZE:

primary record.
SECONDARY

KEY

POSITION:

The post ti on, in bytes, of the secondary key

within the primary record.

Option 2
The following list shows the default values for parameters when the SE
command is invoked the first time (all values are decimal):

BASEREC
BLKSIZE
RECSIZE
KEYSIZE
KEYPOS
FREEREC
FREEBLK
RSVBLK
RSVIX
FPOOL
DELTHR
DYN

NULL
0
0
0
1

0
0
NULL
0
NUll
NUll
NULL

On subsequent invocations of the SE command, the option 2 defaults are
taken from the parameter values set accordi ng to the last SE command,
regardless of the option used. If the default value is acceptable, press
the enter key when prompted for the parameter. If you wish to change the
value for any parameter. enter the new value in response to the prompting
message. The new value becomes the new defaul t value for the current
$IAMUTI session. rhe parameters for which a null can be specified are
BASEREC, FREEREC, FREEBLK, RSVBlK, RSVIX, FPOOl, DElTHR, and DYN. To specify a null parameter after the origi~al default has been modified, enter
an ampersand (&) in response to the prompting message.

IG-176'

SC34-0404

o
The following example snows a use of the SE command in establishing the
size and structure of an indexed file.

PARAMETER
BASEREC
BLKSIZE
RECSIZE
KEYSIZE
KEYPOS
FREEREC
FREEBLK
RSVBLK
RSVIX
FPOOL
DELTHR
DYN

DEFAULT NEW VALUE
NULL :100
0 :256
0 :80

0
1
0
0

:28
:1
:1
:10

NULL
0

NULL
NULL
NULL

Following the response to the DYN parameter. the following list is displayed. The list shows the details of how the indexed file will be constructed using the parameters just entered.

TOTAL LOGICAL RECORDS/DATA BLOCK:
FULL RECORDS/DATA BLOCK:
INITIAL ALLOCATED DATA BLOCKS:
INDEX ENTRY SIZE:
TOTAL ENTRIES/INDEX BLOCK:
FREE ENTRIES/PIXB:
RESERVE ENTRIES/PIXBCBLOCKS):
FULL ENTRIES/PIXB:
RESE~VE ENTRIES/SIXB:
FULL ENTRIES/SIXB
DELETE THRESHOLD ENTRIES:
FREE POOL SIZE IN BLOCKS:
1:
I OF INDEX BLOCKS AT LEVEL
2:
OF INDEX BLOCKS AT LEVEL
3:
I OF INDEX BLOCKS AT lEVEL

•

DATA SET SIZE IN EDX RECORDS:

3

2
50
32
7
1

o

6

o
7
7

o
9

2
1

73

o
Chapter 8. The $IAMUT1 Utility

IG-177

If a secondary fi Ie is bei ng defi ned, the 1 i st of prompts is the sama
except for the following:
the reply to the prompt "SECONDARY INDEX (Y/N)?:" is Y
the secondary data set name is requested
the RECSIZE prompt is omitted; the Indexed Access Method computes the
correct record size

SECONDARY INDEX (YIN): Y
ENTER SECONDARY DATASET (NAME,VOLUME):

Parameter Descriptions for option 2
The attri butes of the fi Ie are determi ned by these SE command parameters:

BASEREC

The estimated number of records to be initially loa~ed into the
file in ascending key sequence. These records can be loaded by
$IAMUTI or by a PUT request after ei ther a LOAD o~ PROCESS
request.
If DYN is not specified, BASEREC defaults to null, resulting in
an error condition. In this case, specify BASEREC as a positive
number.
If DYN is specified, BASEREC defaults to one.

BLKSIZE

The length, in bytes, of blocks in the file. It must be a multiple of 256. The Indexed Access Method uses 16 bytes in each
block for a header.

RECSIZE

The length, in bytes, of each record in the file.
must not exceed block length minus 16.

KEYSIZE

The length of the key to be used for this file. The minimum key
length is 1. For primary files, the maximum key length is 254.
For secondary a secondary index, the maximum key length is 250.

KEYPOS

The position, in bytes, of the key within the record.
byte of the record is position 1.

FREEREC

The number of free records to be reserved in each block. It
must be less than the number of records per block (block size
minus 16, divided by record size). If not, an error message is

IG-178

SC34-0404

Record length

The first

()

o
issued. The calculation is adjusted to ensure that there is at
least one allocated record in the block; that is, there cannot
be 100Y. free records.
FREEREC defaults to zero.

FREEBLK

The percentage (0-99)
blocks. The percentage
at least one free block
ensure that there is
cluster; that is, there

of each cluster to reserve for free
calculation result is rounded up so that
results. The calculation is adjusted to
at least one allocated block in the
cannot be 100Y. free blocks.

FREEBlK defaults to zero.

RSYBLK

The percentage of the entries in each primary index block to
reserve for cluster expansion. These reserved entries are used
to point to new data blocks as they are taken from the free pool
to expand the cluster. The resul t of the calculat ion is rounded
up so that any non-zero specification indicates at least one
reserved index entry. The calculation is adjusted to ensure
that there is at least one allocated block in the cluster.
Enter a null character (&) for this prompt i f you do not want
initial reserved blocks and do not want the indexed access method to create reserved blocks as records are deleted and blocks
become empty. Specify a value of zero for this prompt if you do
not want initial reserved blocks but you do want the indexed
access method to create reserved blocks as records are deleted
and blocks become empty (See the DElTHR prompt).
Note that the sum of the FREEBlK and RSVBLK prompts must be less
than 100 or an error message is issued. This value defaults to
null if the DYN parameter is not specified. If the DYN parameter is specified, this value defaults to zero.

o

RSYIX

The percentage (0-99) of the entries in each second level index
block to reserve for use in case of cluster splits. A cluster
split is required when there is no room to insert a new record
in a cluster. Each cluster split uses one reserved entry of the
second-level index block to create a new cluster 'wi th blocks
from the free pool. The result of this calculation is rounded
up so that any non-zero specification indicates at least one
reserved index entry. The calculation is adjusted so that there
is at least one unreserved entry in each second level index
block. This value defaults to zero.

FPOOL

The percentage (0-100) of the maximum possible free pool to
allocate as determined by the RSVIX and RSVBlK parameters. The
RSVBlK and RSVIX prompts result in a file structure set up to
draw on the free pool for expansion.
Chapter 8. The $IAMUT1 Utility

IG-179

( "~JI"\

(.

',,'I

If insertion activity is evenly distributed throughout the
file, every reserve entry of every index block can be used. The
number of blocks drawn from the free pool to support thi s
unlikely condition is the maximum free pool size needed for the
file. In more realistic cases, insertion activity is not evenly
distributed throughout the file, so fewer free blocks are needed. The percentage specified here represents the evenness of
the di,stribution of inserted records. Specify a large number
(90, for example) if you expect insertions to be evenly distributed. Specify a small number (20, for example) if insertions
are anticipated to be concentrated in specific key ranges.
If a null character (I) is specified for thfs prompt, a free
pool is not created for this indexed file (you can use the DYN
parameter to override this and create a free pool). If zero is
specified, an empty free pool is created. Blocks can then be
added to the free pool as records are deleted and blocks become
empty (see the DElTHR prompt explanation). If you do not specify a null for this prompt, the RSVBlK must not be null and/or
the RSVIX must be non-zero or an error is returned. Conversely,
if the RSVBlK and/or RSVIX is non-zero, FPOOl must not be null
or an error is returned.
The default for FPOOl is a nUll; no free pool is created.
DELTHR

The percentage (0-99) of blocks to retai n in the cluster as
records are deleted" and blocks made available. This is known as
the delete threshold. When a block becomes empty, it is first
determined if the block should be given up to the free pool by
checking the response to this prompt. If the block is not given
UP to the free pool, it is retained in the cluster, either as a
free, block or as an active em~ty block. The result of this calculat ion is rounded up so that any non-zero spec; f; cat; on
indicates at least one block. The calculation is adjusted to
ensure that the cluster always contains at least one block.
If the DElTHR parameter is specified as null (I) and DYN is not
specified, DElTHR defaults to the number of allocated blocks in
the cluster plus one half of the .value calculated by the FREEBlK
prompt. If the DElTHR parameter is specified as null and a value is specified for the DYN parameter, DElTHR defaults to zero.

DVM

The number of blocks to be assigned to, or added to, the free
pool. When DYN is used with other free pool parameters, the
free pool size is calculated as specified by the FPOOl parameter
plus the value specified for DYN.
If DYN is specified without the FPOOl parameter, the free pool
is the number of blocks specified for DYN.

IG-180

SC34-0404

c

o
If DYN is speci fi ed, other parameters assume the followi ng
default values when specified as null:

BASEREC
BlKSIZE
RECSIZE
KEYSIZE
KEYPOS
FREEREC
FREEBlK
RSVBlK
RSVIX
FPOOl
DElTHR

=1
=0
=0
=0
=1
=0
=0
= NUll
=0
= NUll
= NUll

When you specify the number of blocks for the DYN parameter,
remember that the Indexed Access· Method can store several data
records in a block, depending on the record size and block size
you specify. Each block contains a 16 byte header. The number
of records that can be contained in each block can be calculated
by the following formula:

Records per block

= (BlKSIZE-16)/RECSIZE

In the above calculation, use the integer quotient only; discard any remainder.
Blocks can be taken from the free pool for use as index blocks
as well as for data blocks, ~o provide some extra blocks for
these. A reasonabl e est i mate of the number of index blocks
required is lOX. Thus, if you know the number of data records
you would like to add to the file, you can calculate the number
of blocks to specify for the DYN parameter as follows:

o

DYN

= (Number

of records to insert) x 1.1
(Records per block)

Chapter 8. The $IAMUTI Utility

IG-181

option 3

Option 3 issues a prompt to determine what existing file to obtain the
parameters from.
The parameters can be set exactly accordi ng to the
parameters of the original file by replying V to the appropriate prompt.
Otherwise, the parameters will be set .based on the current condition of
the existing data set to reflect insert activity.

SECONDARY INDEX CY/N)?: N
NAME OF EXISTING INDEXED DATA SET (NAME,VOLUME): IAMFILE,EDX003
NEW PARAMETERS EXACTLY SAME AS ORIGINAL PARAMETERS (Y/N) ? V
DATA SETSIZE IN EDX RECORDS:
INDEXED ACCESS METHOD RETURN CODE:
SYSTEM RETURN CODE:

17
-1

-1

All Options

For all three options, the prompts are followed by the option of entering
the DF (define file) function directly from the SE command. This simplifies the file definition process. The prompt is as follows:

CREATE/DEFINE FILE (Y/N) ? V
ENTER DATASET (NAME,VOlUME): FIlEOl,EDX003
NEW DATASET IS ALLOCATED

The immediate write-back option is then queried:

I

DO YOU WAHT IMMEDIATE WRITE-BACK? Y

The next prompt allows you the option of invoking the load or reorganize
functions as follows:

INVOKE lOAD(l), REORGANIZECR) OR END(E) AFTER CURRENT FUNCTION? L
DEFINE IN PROGRESS
Size calculations are performed using the parameter values you specify.

IG-182

SC34-0404

o

After the values are entered, the following is displayed showing the size
and structure of the defined indexed file.

DATA SET SIZE IN EDX RECORDS:
INDEXED ACCESS METHOD RETURN CODE:
SYSTEM RETURN CODE:

17
-1
-1

CREATE/DEFINE FIlE_(V/N)?:

c

Chapter 8. The $IAMUTI Utility

IG-183

UN - UNLOAD INDEXED FILE

UN unloads an indexed file to a sequential file. Records are read from
the indexed file with the Indexed Access Method GETSEQ request and written
into the sequential file with the EDL WRITE instruction. If a secondary
indexed file is specified, the primary file will be unloaded in secondary
key sequence.
You can unload a secondary index independent of its primary if you first
use the UE subcommand of the DR command of $IAMUTl to set the independent
indicator. You must turn the independent indicator off when the unload
operation is completed.
The record lengths of the two fi les need not be the same. Unloaded
records are truncated or padded with zeroes if the records lengths of the
two data sets differ. For further detail, see the LO command.
Records are placed in the sequential file in ascending key sequence as
i ndi cated by the indexed f1 Ie. Unloaded records ca'n be blocked or
unblocked.
For a descri pti on of blocked and unblocked data sets, see
"Blocked and Unblocked Sequential Data Sets" on page IG-164.
The UN command prompts you for the block size of the file to be unloaded.
A null response or a value less than or equal to the record size causes the
indexed file to be unloaded to an unblocked sequential file. The sequential file block size is calculated as the record size rounded up to the
next 256-byte multiple value. If you want the file to be unloaded to a
blocked sequential file, specify the actual block size value to the prompt
"OUTPUT BLOCK SIZE". The record and block S1 zes of subsequent output
sequential files are assumed to be the same as the initial output sequential fi Ie.
If the indexed f1 Ie conta; ns more records than are allocated in the
sequential file, you are given the option to continue unloading to another
sequential file. If you choose to continue unloading, you are prompted
for the name of the file and volume to use to continue the unload operation. The unload operation continues, putting the records read from the
indexed file into the new sequential file. If the end of the output file
is reached and you choose not to continue, the unload operation ends.

Note: Do not specify the same file for input and output.

"I

C
\.

IG-184

SC34-0404

.

The followi ng example shows the use of the UN command to put 80-byte
records into a blocked sequential file.

ENTER COMMAND (1):

UN

UNLOAD ACTIVE
ENTER INPUT DATASET (NAME,VOLUME): EDXF02,AM4VOL
ENTER OUTPUT DATASET (NAME,VOLUME): SEQOl,EDX003
OUTPUT RECORD ASSUMED TO BE 80 BYTES. OK?: Y
ENTER OUTPUT BLOCK SIZE (NULL = UNBLOCKED): 256
UNLOAD IN PROCESS
END OF INPUT DATASET
100 RECORDS UNLOADED
UNLOAD SUCCESSFUL
ENTER COMMAND (1): EN

o
Chapter 8. The $IAMUTI Utility

IG-185

$IAMUTI COMPLETION CODES

Completion
Code
-1

7
8
12
13
23

31
32

34
36
37

38
39

40
41

42
43
44
45
46

47

48
49
50
51

52
54

55
56
60
61
62

Condition
Successful completion
Link module in use
Load error for $IAM
Data set shut down
Module not included in load module
Get storage error - IACB
FCB WRITE error during IDEF processing.
check system return code
Blocksize not multiple of 256
Data set is too small
Invalid block size during file definition processing
Invalid record size
Invalid index size
Record size greater than block size
Invalid number of free records
Invalid number of clusters
Invalid key size
Invalid reserve index value
Invalid reserve block value
Invalid free pool value
Invalid delete threshold value
•
Invalid free block
value
Invalid number of base records
Invalid key position
Data set is already opened for exclusive use
Data set opened in load mode
Data set is opened, cannot be opened exclusively
Invalid block size during PROCESS or LOAD
Get storage for FCB error
FCB READ error
LOAD mode key is equal to or less than previous
high key in data set
End of file
Duplicate key found

Note: For completion codes number 37 through 49, check your parameters
for consistency.

c
IG-186

SC34-0404

0

1

Completion
Code
65
100
101
110
201
210
230
231
232
233
234
235
239

C~

>,

Condition
Inconsistent free space parameters, RSVIX/RSVBlK or
FPOOl/DYN were specified without one or the other
READ error, check system return code
WRITE error, check system return coda
WRITE error - data set closed
Request failed because the primary file for this
secondary could not be opened. Check system
return code
Request failed because $DISKUT3 could not be
loaded
Directory read error from $IAMDIR, verify that
directory exists
$IAMQCB not found, check sysgen for include
of IIAMQCB
Directory open error for $IAMDIR, verify that
directory exists
Directory related primary request is a primary entry
Directory error - DSNAME,VOl not found in $IAMDIR
Directory resource has not been requested
Directory write error. Refer to previously displayed
message

.I

o
Chapter 8. The $IAMUT1 Utility

IG-187

10·.···
"-."'

IG-188

SC34-0404

o

CHAPTER 9. THE tVERIFY UTILITY

$VERIFY checks the validity of an indexed file and prints control block
and free space information about the file on $SYSPRTR.
This $VERIFY description contains the following topics:
•

$VERIFY Functions

•

Invoking $VERIFY

•

$VERIFY Example

•

$VERIFY Messages

•

$VERIFY Storage Requirements

tVERIFY FUNCTIONS
With $VERIFY you can:

•

Verify that all pointers in an indexed file are valid and that the
records are in ascending sequence by key.

•

. Verify the conte~ts of a secondary index against the primary file and
report any discrepancies.

•

Print a formatted File Control Block (FCB) listing, including the FCB
Extension block. The FCB Extension block contains the original file
definition parameters.
Note: The FCB Extension block does not exist and file definition
parameters are not saved in the FeB for indexed files defined prior
to version 1.2 of the Indexed Access Method. The reorganize (RO)
$IAMUT1 command can be used to reformat those files by adding an
FCB Extension block to make use of all the $VERIFY facilities.

•

Print a report showing the distribution of free space in your file.

•

Determine if any space is available for inserts.

o
Chapter 9. The $VERIFY Utility

IG-189

INVOKING $VERIFY
$VERIFY can be invoked from either a terminal or a program coded in Event
Driven Language. You supply the same input in either case. If you invoke
$VERIFY from a terminal, supply the input required in response to prompts.
If you invoke $VERIFY from a program, supply the input required as parameters passed to the program.

$VERIFY INPUT
This section describes the input required to execute $VERIFY.

name, volume

Data set and volume names for the primary index
fi Ie or secondary index to be processed. (Endures that all chains within this data set are
correct).

Option

The type of processi ng you want $VERI FY to do.
The three opt ions are:
Y - The FCB and the FCB Extension blocks are formatted and printed. The file is verified. A
free space report is printed.
N -

The FCB and the FCB Extension blocks are formatted and pr i nted.
The fi Ie is veri f1 ed.
No free space report is printed.

F - The FCB and the FCB Extension blocks are formatted and printed. No free space report is
printed, but the '. OF AVAILABLE BLOCKS IN
FREEPOOL' entry can be examined to determine
if space is avai lable for inserts; if the
value is greater than zero (>0), space is
available.

Cross verify option

The type of check you want $VERIFY to do between
the primary index files and secondary indexes.
The options are:
Y - a.
If a primary index fi Ie was specified
above as the data set name, this will check
that all entries in the primary index ~ile
are in the secondary index.

b. If a secondary index was specified above
as the data set name, thi s wi 11 check that
all entries in the secondary index are in the
associated primary indexed file.
N - Do not perform any cross verification.

IG-190

SC34-0404

o

o

Data set and volume names of the secondary index
to be verified. Specify 'ALL' to verify all secondary indexes associated with the primary file.

INVOKING $VERIFV FROM A TERMINAL
Load the $VERIFY program as follows:

I

> $L $VERIFY

When $VERIFY begi ns execut ion, you ara prompted for the parameters
described previously. A complete example of a $VERIFY invocation from a
terminal is shown under "$VERIFY Example" on page IG-192.

INVOKING $VERIFV FROM A PROGRAM
$VERIFY can be invoked by EDL programs with the LOAD instruction. The
only required parameter is the address of a 30-byte area that contains:

Hex
Displacement
Data set name
Volume name
Detail listing request
(y, H, or F)
Secondary file cross verify
(Y or H)
Secondary index file name
Secondary index file volume

Length
(Bytes)

0

8

8

6

E

1

F

1

10

8

18

6

The next example shows the use of $VERIFY to verify a file named IAMFILE
in the volume EDX002. A file verification and free space report'are
requested. The secondary file named SECIAM in the volume EDX002 is also
verified.

o
Chapter 9. The $VERIFY Utility

IG-191

()\
EXAMPLE
START

PROGRAM START
EQU
*

LOAD
WAIT

PARMLIST
DSNAME
VOLUME
DETAIL
SECONDRY
SECDSN
SECVOL
VERIFY

$VERIFY,PARMLIST,EVENT=VERIFY
VERIFY
WAIT FOR POST COMPLETE

PROGSTOP
EQU
*
DC
CL8'IAMFILE'
DC
CL6'EDXD02'
DC
CLl'Y'
DC
CLl'Y'
DC
CL8'SECIAM'
DC
CL6'EDXD02'
-1
ECB
ENDPROG
END

INDEXED DATA SET NAME
VOLUME NAME
PROCESSING OPTION
SECONDARY FILE VERIFICATION
SECONDARY FILE NAME
SECONDARY FILE VOLUME
EVENT CONTROL BLOCK

$VERIFY EXAMPLE
This section presents the input and output for an example run of $VERIFY,
along with descriptions of the material presented.
$VERIFY ;s invoked from the terminal as follows:
[1] > $l $VERIFY
[2] INDEXED ACCESS METHOD FILE VERIFICATION PROGRAM ACTIVE
[3]

ENTER NAME OF OUTPUT PRINTER. (BLANK = $SYSPRTR):

[~]

(NAME,VOLUME): DPRIHl,EDXIAM

[5] DO YOU WANT DETAIL LISTING! (Y/N/F/!)!: Y
[6] DO YOU WISH TO VERIFY SECONDARY VS PRIMARY INDEXES (Y/N):N

[71 VERIFICATION COMPLETE,
[81 $VERIFY

o

ERROR(S) ENCOUNTERED

ENDED

[11 In this example, the first line loads and executes $VERIFY.

IG-192

SC34-0404

c

[2] The second line is printed by the program to indicate that execution
has begun.
[3] This line allows you to direct the output to a particular printer or
terminal. You can also press the Enter key without supplying a device
name and the output will be printed on $SYSPRTR.
[4] In the fourth line, the program prompts for the data set name and volume of the indexed file to be referenced by the program. In this example
the reply indicates that the data set is DPRIMl, located on volume EDXIAM.
[5] In the fifth line, the program prompts for the amount of detail to be
provided as output. The response of Y indicates that maximu~ detail is to
be provided.
[6] In the sixth line, the program prompts for verification of secondary
indexes. The response of N indicates that secondary indexes are not to be
verified. As the program executes, it provides output to the printer, as
shown in the example outputs that follow.
[7] Finally, messages are displayed to indicate the number of errors
found. [8] This information message is provided stating that the program
has ended.

FeB REPORT
The first page of the example output from $VERIFY follows.
always pri nted.

This page ;s

()
,

,

'"

1,1

Chapter 9. The $VERIFY Utility

IG-193

VERIFY REPORT. FILE: DPRIMI
. FLAG1:

FILE
LOADED
Y

FILE
TYPE
1

, VOLUME: EDXIAM

(O:PRPQ, l:PP)

******************************M*MM****M**MM

KEY SIZE :
KEY POSITION :
BLOCK SIZE =
RECORD SIZE :
INDEX ENTRY SIZE:
RBN OF HIGH LEVEL INDEX BLOCK IN USE :
RBN OF LAST DATA BLOCK IN USE :
RBN OF FIRST DATA BLOCK IN USE :
TOTAL'RECORDS PER DATA BLOCK:
TOTAL ENTRIES PER INDEX BLOCK :
LOAD POINT VALUE FOR A DATA BLOCK :
LOAD POINT VALUE FOR AN INDEX BLOCK :

6
1
256
60
10
2
786
6
4
24
4
2~

*******M***********************************
FLAG2 : IMMEDIATE
WRITE-BACK
N

SECONDARY
INDEX FILE
EN

FILE
FORMATTED
Y

*******************************************
VERSION NUMBER:
DELETE THRESHHOLD (RECORDS) :
• OF AVAILABLE BLOCKS IN FREEPOOL
RBN OF 1ST FREE POOL BLOCK :
RBN OF HIGHEST LOGICAL INDEX BLOCK :
LEVEL OF HIGHEST INDEX BLOCK IN USE:
CURRENT NO. OF RECORDS IN FILE:

2.0
0
30
787
2
3
3000

The preceding page of the example report is interpreted as follows:
The first line shows the data set name and volume.

FLAG1: These three lines show the significant bits of the first flag byte
in the FCB. The first two of the three lines are a heading. The
third line shows the bit value (1 : on and 0 = off or Y : on and N :
off). The headings are defined as follows:
FILE LOADED: Data set has been loaded flag. This flag is set when
any record has been successfully loaded into the file
in load mode.
FILE TYPE:

IG-194

SC34-0404

This flag indicates whether the indexed file was created wi th the Real time Programmi ng System Indexed
Access Method PRPQ (bit=O) or either the Event Driven
Executive or Realtime Programming System Indexed
Access Method Program Product (bi t:l).

o

KEY SIZE: Shows the si ze of the key in bytes.
KEY POSITION: Shows the byte di splaceme,nt of the key from the start of the
record.

BLOCK SIZE: Shows the byte length of blocks in the file.
RECORD SIZE: Shows the byte length of records in the file.
INDEX ENTRY SIZE: Shows the number of bytes in each index entry. Thi s
length should be the key length plus 4, rounded up to a multiple of
two bytes.

RBN OF HIGH LEVEL INDEX BLOCKK IN USE: Shows which index block

1S

to be

used as the starting point when the index is to be searched.

RBN OF LAST DATA BLOCK IN USE: Points to the last logical data block in
the file which has been used.

RBN OF FIRST DATA BLOCK IN USE: Points to the first logical data block in
the file which has 'been used. It is used as the starting point
when a sequential read operation is begun with no key specified.

TOTAL RECORDS PER DATA BLOCK: Shows how many data records can be contained
ina data block.

c

TOTAL ENTRIES PER INDEX BLOCK: Shows how many index entries can be contained in an index block.

LOAD POINT VALUE FOR A DATA BLOCK: The number of records that can be
placed in each data block while in load mode. This value is calculated at file definition time to provide the requested number of
free records.

LOAD POINT VALUE FOR AN INDEX BLOCK: The number of data blocks in each
cluster to be used while in load mode. This value is calculated at
file definition tim~ to provide the space requested by the RSVBlK,
RSVIX and FREEBlK parameters.

FLAG2: Another byte of flags described by a pair of lines: a heading line
followed by a data line. The heading has the following meaning:

IMMEDIATE WRITE-BACK: Immediate write back flag.

If set CY), this
flag indicates that the immediate write back
option was specified when the indexed file
was defi ned.

SECONDARY INDEX FILE: A Y indicates that this is a secondary file.
N indicates that this is a primary file.

FILE FORMATTED:

o

Y i ndi cates
that
the fi Ie has been
formatted. N indicates that only th~ parameters have bQen specified and the file allocated. The fi Ie has not been formatted.'
Chapter 9. The $VERIFY Utility

IG-195

VERSION NUMBER: Shows the version number and modification level of the
Indexed Access Method that was used to define the indexed file.
DELETE

o

THRESHHOLD (RECORDS): Indi cates the number of data blocks to
retain in each cluster as records are deleted and blocks become
empty. This value is calculated when the file is defined and is
based on the DElTHR parameter .

• OF AVAILABLE BLOCKS IN FREEPOOL: The number of available blocks in the
free pool. Thi s count is updated as blocks are taken from or
returned to the free pool.
~

RBN OF 1ST FREE POOL BLOCK: Points to the last block which was put in the
free pool (which is the next block to be taken from the free pool).
RBN

OF HIGHEST LOGICAL INDEX BLOCK: Poi nts to the logi cal top of the
index. In some cases (if the file has not been completely loaded),
this RBN might not agree with the RBN OF HIGHEST lEVEL INDEX BLOCK
IN USE. If it does not agree, then the file is structured with
index blocks that are not yet needed because the file does not contain enough records.

LEVEL OF HIGHEST INDEX BLOCK IN USE: Indi cates how many levels of the
index are currently in use.
CURRENT NO. OF RECORDS IN FILE: The current number of records that are now
contained in the file.
FCB EXTENSION REPORT
The second page of the example output from $VERIFY follows.
always pri nted.

This page is

This information is obtained from the FCB Extension block and shows the
parameters that were specified when the file was defined. Some information (BlKSIZE, RECSIZE, KEYSIZE, KEYPOS) is duplicated on the FCB and FCB
Extension report because it is contained in both control blocks. The values should correspond with each other. The word NUll for the value of a
parameter indicates that no value was specified when the file was defined.

o
IG-196

SC34-0404

o

VERIFY REPORT. FILE = DPRIMl

VOLUME : EDXIAM

INDEX FILE DEFINED WITH THESE PARAMETERS:
BASEREC=
BLKSIZE=
RECSIZE=
KEYSIZE=
KEYPOS=
FREEREC=
FREEBLK=
RSVBLK=
RSVIX=
FPOOL=
DELTHR=
DYN=

3000
256
60
6
1
0
0

NULL
0

NULL
NULL
30

Note: The parameters are the file definition parameters that were specified using the SE command of the $IAMUTl utility when the file was
defined.
FREE SPACE REPORT

A free space report of the example output from $VERIFY follows. The free
space report is printed only if the $VERIFY option is specified as Y.

o
Chapter 9. The $VERIFY Utility

IG-197

VERIFY REPORT. FILE = XMPLI , VOLUME = EDX002
TOTAL
USED
UNUSED RESERVE FREE
AVAILABLE
HIGH KEY
RBN LVL ENTRIES ENTRIES ENTRIES ENTRIES BLOCKS RECORD SLOTS (FIRST
20 CHAR.

--- ---

------- ------- ------- ------- ------ ------------ --------

2

3

24

2

0

22

0

3
4

2
2

24
24

24
8

0
0

16
16

0
0

5
30
55
80
105
130
155
180
205
230
255
280
305
330
355
380
405
430
455
480
505
530
555
580
605
630
655
680
705
730
755
780

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

24
24
24
24
24"
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24

24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
24
6

0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0

1

1
1
1

1
1

1
1
1
1

1
1

VERIFICATION COMPLETE,

0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0

18

0

0
0
0
0
0
0
0
0

0
0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

--

143949

--

--

130536
143949

0

044932
046750
048655
050527
052392
054225
056075
057930
059829
061640
063548
065389
067297
069166
071029
072887
074731
076586
078441
080329
082175
084006
085861
130536
132395
134205
136097
137929
139815
141655
143523
143949

0

0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

ERROR(S) ENCOUNTERED

o
IG-198

SC34-0404

o

In this report, each printed line represents an index block.
have the following meanings:

The columns

RBN:

The relative block number within the indexed file, based on the
block size specified when the file was defined. The first block in
the file is relative block number zero.

LVL:

The level of the index block analyzed. lowest level (PIXB) is 1,
second level (SIXB) is 2, etc.

TOTAL ENTRIES: The maximum number of index entries that can fit in an
index block.

USED ENTRIES: The number of entries used in this index block.
UNUSED ENTRIES: The number of entries in the index block which are neither
used nor reserved.

RESERVE ENTRIES: The number of reserve entries in this index block. This
number represents the number of new index blocks that can be
obtained from the free pool for creation of new blocks, provided
there are enough blocks remaining in the free pool.

FREE BLOCKS: The number of free blocks associated with this index block.

(

'\

-'

AVAILAB(~

RECORD SLOTS: The maximum number 9f records that can be inserted
into this cluster without obtaining blocks from the free pool.

HIGHEST KEV IN BLOCK: The first 20 bytes of the highest key in the block.

o
Chapter 9. The $VERIFY Utility

IG-199

.VERIFY MESSAGES
As $VERIFY executes, any errors encountered result in an error message
being written describing the type of error and where the error occurred.
FILE ERROR MESSAGES
The following messages indicate that the indexed file contains errors:
I BLOCKS IN FREEPOOL CHAIN DOES NOT MATCH FREE POOL COUNT IN FCB.
BLOCK OUT OF SEQUENCE. RBN _ _ •
HIGH KEY IN RBN _ _ DOES NOT MATCH INDEX ENTRY IN RBN _ _ •
POINTERS IN HEADER OF HIGH INDEX BLOCK ARE NOT ZERO.
RBN _ _ CONTAINS INVALID UPWARD POINTER.
RBN _ _ CONTAINS INVALID BACKWARD POINTER.
RBN _ _ CONTAINS INVALID FORWARD POINTER.
RBN _ _ IS IN FREEPOOL CHAIN, BUT lS NOT A VALID FREEPOOL BLOCK.
r--~.

RECORD OUT OF SEQUENCE NEAR RBN _ _ •

~'n.";

RECORD MATCH NOT FOUND FOR SEC INDEX.
PRIMARY=
SECONDARY=
If any of these messages are printed, the indexed file has at least one
error.
Possible sources of the error include:
•

The data set is not an indexed file

•

Data in the file has been inadvertently destroyed

•

Secondary index is not auto-update

•

The Indexed Access Method has a program error

ERROR RECOVERY PROCEDURE
If any of the $VERIFY file error messages are printed, use the following
procedure:
•

Dump the file or portion of the file which $VERIFY indicated has
errors.

.•

Attempt to reorganize the file with the $IAMUTI utility RO command.

IG-200

SC34-0404

c~

o

•

If reorganization fails, submit an APAR, including the file dump •

•

Secondary indexes may need to be regenerated. Invoke $VERIFY for each
of the secondaries to determine if they are error free. If errors are
indicated rebuild the index from the primary data sets after the problem has been corrected.

OTHER MESSAGES
Any other messages that are generated by $VERIFY can be found in the Messages and Codes.

$VERIFY STORAGE REQUIREMENTS
Work i ng storage space is needed requ i red for $VERI FY and the amount
required varies, depending on the maximum number of blocks at the SIXB
level and the block size of the file.

USING DEFAULT WORKING STORAGE REQUIREMENTS

c

The default working storage specification is 4K bytes. For a file with a
block size of 256,this default is sufficient to handle up to 896 blocks at
the SIXB level. The larger the block size of the file, the fewer the maximum number of SIXBs that can be processed.
The followi ng formula can be used to calculate the maximum number of
blocks at the SIXB level that $VERIFY can process, given the block size of
the indexed file:

NS

= (4096

- (2

*

BlKSIZE»

/ 4

NS is the number of blocks at the SIXB level
BlKSIZE is the block size of the indexed file

MODIFYING WORKING STORAGE REQUIREMENTS
The default working storage allocation is intended to satisfy the requirements of most indexed files. It may be necessary or desirable to modify
the amount of working storage space available to $VERIFY.

o

The following formula can be used to calculate the amount of working storage requi red to process a fi le wi th a gi ven block si ze and number of
blocks at the SIXB level.

Chapter 9. The $VERIFY Utility

IG-201

~

B_l_KS_I_Z_E_)~

____D_S__=
__(_4_M__N_S_)__+__(2__M__

____________________________

~I

Where:
DS is the amount of dynamic storage required
NS is the number of blocks at the SIXB level
BlKSIZE is block size of the indexed file
The number of SIXBs in a file can be determined by examining the free
space report.
You can override the default working storage size at load time (if loaded
by a program), or with the 55 command of the $DISKUT2 utility.

SUMMARY
$VERIFY requires a variable amount of working storage which defaults to 4K
bytes. Increase the working storage size if $VERIFY runs out of space
during execution.
Decrease the working storage size if the number of SIXBs is significantly
less than that supported by the default working storage allocation (896
with a block size of 256) and your available storage is limited.

c,",""

"

I

,'!-'

IG-202

SC34-0404

o

CHAPTER 10. STORAGE AND PERFORMANCE CONSIDERATIONS

This chapter desc~ibes the storage required for the Indexed Access Method
and suggestions for improving performance. The main topics are:
•

Determining Storage Requirements

•

Data Pag1ng

•

Other Performance Considerations

DETERMINING STORAGE REQUIREMENTS
The min1mum amount of storage required by the Indexed Access Method is
dependent upon the package you choose to install, plus the link module and
any error exit routine you may have wr1tten. The approximate sizes of the
available packages are included here for planning purposes.

THE INDEXED ACCESS METHOD PACKAGES

C~
,:1

The Indexed Access Method program product is shipped with four packages:
•

$IAM

•

$IAMRS

•

$IAMNP

•

$IAMRSNP

You select the particular package to install on your system which meets
your requirements for function, storage, and performance. The individual
packages are described below:

o

1.

$IAM
(18K), a full function Indexed Access Method package using
overlay structure. It is expected to satisfy the needs of most users.

2.

$IAMRS - (27K), a full function Indexed Access Method as a fully res1dent package. It requ1res more storage than $IAM, but offers maximum
performance.

3.

$IAMNP - (15K), th1s package 1s similar to $IAM (us1ng an overlay
structure) but does not include data paging. It is designed for users
who have severe storage limitations.

4.

$IAMRSNP - (24K), this package is similar to $IAMRS (fully resident)
but does not include data paging. This package provides the perform-

Chapter 10. Storage and Performance Considerations

IG-203

ance of a resident system but is intended for users who do not have
sufficient storage to take advantage of the data paging feature.

Notes:
1.

The storage value~ above do not include Indexed Access Method control
blocks, the central buffer (minimum of 2 X block size), and secondary
index update buffers (minimum of 2 X record size).

2.

To find the exact size of your Indexed Access Method package, load
$IAM with the operator command $l. A message will be displayed about
the loaded program. The number, followed by the letter P, indicates
the siz~ of the program in 256-byte pages. Multiplying this number by
256 yields the size in bytes of $IAM, including control blocks, work
areas and buffers.

INDEXED ACCESS METHOD STORAGE ENVIRONMENT
A single copy of the Indexed Access Method load module $IAM serves the
entire system.
Fi gure 12 on page 'IG-205 shows the components of the Indexed Access
Method, and their relationship to the operating system.
The Indexed Access Method control blocks, buffers and programs are contained in a single module, which can be loaded in any partition (but only
one copy on the system).
Application programs in any partitions (including the partition containing the Indexed Access Method> can invoke Indexed Access Method services
us~ng the IBM supplied link module, which must be included in the application program.
If the data paging feature of the Indexed Access Method is active, it uses
storage in the partition(s) you select for performance improvement. This
storage is in the form of a load module, $IAMSTGM.

IG-204

SC34-0404

···~

O
",

I,
"j

o

link Module
EDX
Supervisor
Space
Application
Programs
Calling
the
Indexed
Access
Method

Data Paging
Area

Control Blocks

--------------Central
Buffer

--------------Indexed
Access Method
Programs
Partition 1
Figure 12.

Partition 3

Indexed Access Method Storage Environment

Because $IAM is loaded automaticallY when the first Indexed Access Method
request is issued, it does not need to be ex~icitly loaded before being
used by any program. When loaded automati cally on the fi rst Indexed
Access Method request, $IAM is loaded into partition 1 if enough storage
is available there. If not, attempts are made to load $IAM into successi vely hi gher numbered parti ti ons unti I space is found or no more
partitions are available. Once loaded, the Indexed Access Method remains
in storage until cancelled with the $C operator command.
The Indexed Access Method can also be loaded manually by using the $l
operator command or automatically at IPl time through the automatic
initialization capability (refer to the System Guide for a description of
the automatic initialization capability.). $IAM can be loaded into any
partition, including partition one. It can be invoked (through the link
module) from application program in any partition.

PERFORMANCE
Performance can be improved by various factors and the performance will be
different for each application. One performance consideration has been
described previously, the resident Indexed Access Method packages $IAMRS
and $IAMRSNP. Another supplied performance feature is data paging.

Chapter 10. Storage and Performance Considerations
-",

IG-205

DATA PAGING

' ,
G
"

'-;~}

Data paging is a performance feature that uses main storage space for a
paging area (a cache) to improve the performance of the Indexed Access
Method.
This paging area retains recently used index and data blocks
whi ch have been retri eved for processi ng. As blocks are read from an
indexed file, they are retained in the paging area on the assumption that
they will probably be requested again. When a block is requested again,
if it is in the paging area, no I/O operation is required; the block is
moved directly into the central buffer.
The paging area is divided into 2K-byte (2048-byte) pages. Each indexed
file can also be thought of as being divided into 2K-byte pages. When data
is read from the file, a 2K-byte page is read and saved in the paging area.
When data is written to the file, only the modified block (not the 2K-byte
page) is written.
When the pagi ng area becomes full, pages are overla i d accordi ng to a
least.-recently-used algori thm. The Indexed Access Method data pagi ng
algorithm handles direct access records differently from the way it handles sequential access records.

SEQUENTIAL ACCESS AND DATA PAGING:

All of the pages in the page area can
be used for direct access. However, because sequential access can cause
the page area to be flushed out (negating the advantages of data paging),
only 25~ of the pages are set asi de for use in sequent i al mode.
Th~refore, pages referenced in sequential mode will only use a small portion of the page area. This causes the pages to tend to preempt themselves instead of flushing out the page area.

r",
\l-"-.J)

REMOVAL OF STORAGE MODULES:

The data paging area is obtained by loading a
copy of $IAMSTGM into one or more partitions. Each copy of $IAMSTGM
remai ns in storage, even if you cancel $IAM. Cancell i ng $IAM is not
recommended unless you have ascertained that no files are currently open
and 'no requests are about to be issued. If you have cancelled $IAM you can
use the $C $IAMSTGM operator command to remove the data paging storage
module from each ~artition. $IAMSTGM should never be cancelled until you
have first cancelled $IAM.

Adjusting the Size of the paging Area
Because every application is different you should not regard any information relative to the following described example as being directly applicable to your application. However, the general principles should apply
to most applications.
Fi gure 13 on page IG-208 shows the effect of vari ous data pagi ng area
sizes on the percentage of times a requested block was in th~ paging area
("Hit Ratio") and the resultant performance (response time indicator) for
one application. The data was acquired by measuring the performance, and
printing data paging statistic, while the application was running. The
total size of all indexed files being accessed during the run was 36592

IG-206

SC34-0404

c

sectors (9.3M-bytes). It must be stressed that this is only one application, and your application may not behave in the same manner.
The three variables considered in data paging described in this example
are:
•

storage size dedicated to data paging

•

the percentage of times that the block requested is in the paging area
·("Hit Ratio")

•

read/write ratio

STORAGE SIZE:

The figure shows general trends for various storage sizes.
Note that there is a ml n1 mum amount of storage whi ch can prov i de a
benefit. In this example the minimum storage to acquire a performance
improvement is approximately 20k-bytes. This is because the data paging
algorithms in the Indexed Access Method require a certain amount of processing, which is additional overhead. Your application may have a different minimum. If you cannot supply enough storage to provide a benefit, you
are better off not to use data paging. Within certain limits, the more
storage you supply, the better the performance. However, there are optimal minimum and maximum limitations. Figure 13 on page IG-208 shows that,
for this example application, the minimum amount is about 20k-bytes.

c

The optimal maximum amount of storage, beyond which the benefit of using
more storage becomes less pronounced, is about 70k-bytes for the example
shown in Figure 13 on page IG-208. You must determine, based on your own
storage/performance tradeoff requirements, how much storage to dedicate
to data paging for the performance improvement you receive. Larger files
require a proportionately larger paging area to attain the same hit ratio.

THE "HIT RATIO":

The values shown at the left side of Figure 13 on page
IG-208 is called a "Hit Ratio". This fatio is a percentage of how often an
index block or data block requested is alreadY in the paging area. Most
applications tend to concentrate activity in a few areas of the file for a
time, then move on to other areas of the file. These applications can use
data paging to good advantage because there is a probability that the data
being requested has been recently requested.
If your application references data in a completely random manner, data
paging will be less efficient. Random applications result in a smaller
hit ratio for a given paging area size than applications that concentrate
on certain areas of the file. Therefore, larger paging area is required
to obtain the same hit percentage.

THE READ/WRITE RATIO:

The data paging function is optimized for read
operations. In order to insure file integrity, write operations cause a
write-through to the file. This means that there is no benefit in using
data paging for write operations. In fact, due to paging overhead, write
operations are less efficient with data paging than without data paging.
The higher your ratio of reads to writes, the more efficiently the data
paging algorithm works, thus the better your performance improvement. In
Chapter 10. Storage and Performance Considerations

IG-207

the example shown in Figure 13 on page IG-208,
reads, 20~ were writes.

80~

of the requests were

100
90

28

· 36

I-

R
44 e

H

i 80
t
70

5

R 60
a
t 50

•

•

•

•

30

-•

20

•

_ No Paging

·

60 n

·

68 e

·

76

·

84

T
m
92 e
100

I

o
o

52 p

5

.

.

·

0

•

o 40

10

•

I-

I

I

I

I

I

I

I

I

I

lOOK
lS0K
200K
2S0K
300K
Data Paging Area Size
Plot of Data Paging Area Sizes. This graph shows how the size
of the data paging area (shown across the bottom) affects the
hit ratio (shown on the left margin), are the results in the
response time (shown on the right margin). The unit of time
for the response time scale is not given because it is application dependent. For this application, a hit ratio of at
least 28X (which can be achieved with a paging area size of
about 20K) is required to attain performance equal to that
without data paging active. This is due to data paging processing overhead. Also note that a paging area size of greate~
than about 70K provides relatively little response improvement for the amount of storage dedicated.
50K

Figure 13.

Using Data Paging
The Indexed Access Method is distributed with the paging area size set to
zero; therefore, the data paging function is not enabled. To use paging,
use the $IAMUTI PP command to set the paging area size for ~ach partition
and the $IAMUTI PG command to activate paging.
When $IAM is loaded, the loader attempts to obtai n storage in the
requested partition. When storage i~ requested in a particular partition
to activate paging, you are informed of the results with appropriate messages. The messages returned to inform you of the paging status are written to the $SYSLOG device. If $SYSLOG is not available, the messages are
IG-208

SC34-0404

()

o

wri tten
result:

to

$SYSPRTR dev ice.

Followi ng are the condi t ions whi ch can

1.

Data paging is successfully initialized. The storage you requested or
the default amount of storage required for data paging is available.
The following message is displayed:
"DATA PAGING ACTIVE."

2.

Data paging is unsuccesful.
a.

If you have attempted to activate paging and you requested zero
for the storage amountt or the minimum amount of storage necessary
for paging is not available in the partition you specified, the
following message is displayed:
"NOT ENOUGH STORAGE AVAILABLE FOR DATA PAGING."
"DATA PAGING NOT ACTIVE."

b.

If you have requested more storage for paging than is available in
the partition you specified, the following message is displayed
LOAD FAILED FOR $IAMSTGM RC=xxx, PTN= Y, SIZE= zz
where:

xxx
y
zz

represents the return code from the LOAD instruction
represents the partition number requested
represents the size in 2048-bytes of storage
you requested

OTHER PERFORMANCE CONSIDERATIONS
Following is a list of subjects followed by some ideas you might use to
affect the performance of your application:
•

looking at the File Structure

•

Controling the File size

•

Reducing the Number of Index Levels

•

Increasing the Buffer Size

•

Avoiding Resource Contention

LOOKING AT THE FILE STRUCTURE:

Performance of the Indexed Access Method
is primarily determined by the structure of the indexed file being used.
This structure is determined by parameters you specify when you create the
file. The best performance from an indexed file is attained when the file
structure is well planned and the free pool is rarely used, if it exists
at all.
For descri tJti ons of the fi Ie parameters, see "Chapter 12.
Installing the Indexed Access Method." For examples of the affects of
parameter values, see "Chapter 3. Defining Primary Index Files."

o

Use the $IAMUTI utility to see the effects of the various parameters on
the file structure.

Chapter 10. Storage and Performance Considerations

IG-209

FILE SIZE:

A large file spans more cylinders of the direct access device,
so the average seek to get the record you want is longer. Splitting files
into smaller files according to application type, or moving seldom used
records to a "history file" might be viable solutions for file size
reductions.

(.~J
-~

\"

",

If your records contain unused or unnecessary fields, delete those fields
and reduce your record length before defining and loading your file. The
Sort/Merge Program Product contains facilities to accomplish this while
sorting your records by key.

REDUCING THE NUMBER OF INDEX LEVELS:

A file with many. index levels
requires more accesses to get to the desired data record, thus degrading
performance. Factors which influence the number of index levels are:
•

Number of records in file - see "File Size" previously described

•

Amount and type of free
described

•

Block size - when defining your indexed file, remember larger block
sizes usually require fewer I/O operations

•

Key size - shorter keys are more efficient than long keys. If only a
portion of your key field provides uniqueness, set your key position
and key length to that portion of the field when you define the file.

space -

see "Fi Ie Structure" previ ouslv

(~
\

INCREASING THE BUFFER SIZE:

The buffers required for I/O operations for
all Indexed Access Method requests throughout the system are taken from a
single buffer pool. The size can be changed at any time (to become effective during the next load of $IAM) as described under "RE - Reset Parameters" on page IG-170. If you provide a large buffer when you install the
Indexed Access Method, it is more likely that blocks (especiallv
high-level index blocks) needed are already in storage and need not be
recalled from the file.

I

\l.~.Jj/

AVOIDING RESOURCE CONTENTION:

Application programs that use the Indexed
Access Method are executed the same as other appl i cat i on programs.
Because the Indexed Access Method and the indexed files are resources
available to all tasks, delays can occur. When more than one task uses
the Indexed Access Method, contention can occur between tasks for any of
the following resources:
•
•
•
•
•

An entire indexed file
An index block in the file
A data block ;n the file
A'data record in the file
Buffer space from the system buffer pool

For example, during the execution of a request from task A, some buffer
space is required and an index block, data block, or record is locked
(made unavailable to other requests). A request from task B requires more
buffer space than is available or attempts to retrieve a block or record

IG-210

SC34-0404

()

o

that was locked by task A.
becomes available.

Task B must wait until the required resource

Resources required by the Indexed Access Method are allocated only for the
duration of a request except under the following circumstances:
•

During an update, when control returns to the task after a GET or GETSEQ for update, the subject record is locked. The lock is released
when the update is completed with a PUTUP, PUTDE, RELEASE, or DISCONN.

•

During sequential processing, when control returns to the task after a
GETSEQ, the block containing the subject record is locked and held in
the buffer.
Subsequent GETSEQ requests pick up records directly from the buffer.
When a GET requires a record from the next block, the current block
and buffer are released. Pending requests for a buffer area are satisfied and the next block is locked and held in the buffer. Except
for momentary release of the buffer area between blocks, a block is
locked while it is being processed. Processing is terminated by an
end-of-data condi t ion, an ENDSEQ request, a DISCONN request, or an
error condition.

Use the following guidelines to avoid resource contention:

c"

o

•

Disconnect all indexed files before. task termination. The DISCONN
request releases locked records or blocks and writes records that have
not already been written.

•

Use conditional requests whenever possible so that your application
can be productive while a resource is unavailable.

•

Try to schedule applications so that they do not execute at the same
time.

•

If a file is used for "read only" by more than one application, consider multiple copies of the fi Ie using unique fi Ie names.

•

With multiple Indexed Access Method applications, use direct access
to retrieve a group of records. A suggested method is the following:
1.

Retrieve the first record by key.

2.

Extract the
retrieval.

3.

Retrieve the next record using the saved key and a greater than
key relational operator (GT or UPGT).

4.

Repeat the second and third steps until processing is complete.

key

from

the

record

and

save

it

for

Chapter 10. Storage and Performance Considerations

the next

IG-211

Secondary Index Functions
Usi ng secondary indexes affects the performance of the Indexed Access
Method. Some of those reasons are described here.

DIRECT RETRIEVAL:

Direct retrievals are somewhat slower when using a secondary index because of the extra accesses required to retrieve the data
record from the primary file.

SEQUENTIAL RETRIEVAL:

Sequential Retrievals are slower when using a secondary index because the records are returned in order by secondary key.
The primary file containing the data records is in order by the primary
key. Therefore, the records are not stored in the same sequence that they
are retrieved. This requires random accesses to obtain the records.

RECORD INSERTS:

Record inserts are slower if any associated secondary
indexes. have the auto-update indicator on. A new record must be inserted
into each auto-update secondary index, as well as the primary, whether the
original insert was a primary or a secondary.

RECORD DELETE:

Record deletes are slower for the sama reason as for
inserts; records must be deleted from secondary i nde)(es that have the
auto-update indicator on. However, the impact for deletion is more severe
than for insertion. This is because a search is required when multiple
records have the same value for their se~ondary key as the record being
deleted. The group of records having the same key must be sequentiallY
searched until the record with the required primary key is found. This
time could be quite significant if you have large groups of duplicate
keys.

RECORD UPDATE: Record updates that modify the secondary key must also
, update any associated secondary index which has the auto-update indicator
on. The secondary index is updated by deleting the old key and inserting
the new key.
DATA RECORD MOVEMENT:

Each record in a secondary index contains a pointer
to the RBN where the record is located in the primary index file. If a
data record has been moved, due to i~sert/delete activity in nearby areas
of the primary file, the RBH in the secondary index record will be wrong.
When the affected data record is retrieved through the secondary inde)(,
the error is detected. A full retrieval is then performed, using the pri-'
mary key to obtain the data record. The RBN in the secondary index record
is then updated for the benefit of future retrievals. This activity will
affect the performance.

$VERIFY PERFORMANCE: The $VERIFY performance will be slower when the primary fi Ie bei ng veri fi ed has a secondary index wi th large numbers of
duplicate secondary keys. This is because the entire group of duplicate
keys must be searched for the proper record. Because $VERIFY retrieves
all records in the file, these impacts accumulate and the total execution
time can be longer than e)(pected.

JG-212

SC34-0404

o

o

CHAPTER II. ERROR RECOVERY

This chapter describes how to handle Indexed Access Method errors and how
to diagnose application program errors.

HANDLING ERRORS
All Indexed Access Method requests return a code in the task code word of
the Task Control Block (TCB). The task code word is the same name as the
task name. The return code reflects the condition of the requested function. Return codes are grouped in the following categories:

•

-1

- Successful completion

•

Positive - Error

•

Negative (other than -1) - Warning

ERROR EXIT FACILITIES

C
'~"'\

There are three types of error exits for your application:
•

Task error exit, provided by the supervisor

•

Error exit, provided by the Indexed Access Method

•

The task error exit used by the Indexed Access Method itself in case
of an error

Task Error Ex i t

You can specify a task error exit routine that will receive control if
your application program causes a soft exception or if a machine check
occurs during the execution of, your application.
Because your application may have requests pending (for example, a record
is being held for update or a file is being processed sequentially), you
should issue a DISCONN request before terminating your application. The
task error exit allows you to release records, disconnect from any file
you are connected to, and make your resources available to other applications. Use of the task error exit facility helps to ensure data integrity
and allows proper termination or continuation of your application.

o

Implementi ng the task error ex; t
Guide.

faci Ii ty is descr,i bed in the System

Chapter 11. Error Recovery

IG-213

Error Exit
In PROCESS and LOAD requests. the address of an error exit routine can be
specified by the ERREXIT parameter. If specified, this routine is executed whenever an Indexed Access Method request terminates with a p~sitive
return code.
,

'

,

If the exit routine is not specified, the next sequential instruction
after the request is executed regardless of the valu~ of th~ return code.

$IAM Task Error Exit
The Indexed Access Method itself has a task error exit. If this er~or
exit is given control by the supervisor, it writes these messages to the
$SYSLOG device:

$IAM HAS INCURRED A SEVERE ERROR
$IAM CENTRAL BUFFER ADDRESS IS xxxx - PARTITION n
PSW LSB
yyyy zzzz zzzz zzzz zzzz zzzz zzzz zzzz zzzz zzzz zzzz zzzz

Where xxxx is the address. and n is the partition containing $IAM.
The PSW (yyyy), and LSB contents (zzzz), are also listed. For an explanation of the PSW (program status word) and the LSB (level status block),
refer to the Operator's Reference.
$IAM then goes into an unrecoverable wait and will not process any access
requests. You can dump the central buffer with the $D system command and
take appropriate action to quiesce your application (refer to the Operator' 5 Reference for a descri pti on of the $D command).
You can use the recovery and backup procedures, described under "File
Backup and Recovery" on page IG-94, to restore the file, or you can resume
execut i on of your appl i cat ion. To restart your appl i cat ion, you can
either IPl or cancel $IAM and reload it.
If you wish to extend the logic of the error exit, code your own exit to
replace the $IAM task error exit. Then rename CDIERR (the $IAM task error
exit), name your error exit CDIERR, and rebuild $IAM.

IG-214

SC34-0404

SVSTE" FUNCTION RETURN CODES
If a system function called by an Indexed Access Method request terminates
with a positive return code. the return code is placed in a location named
by the SYSRTCD parameter in the PROCESS or LOAD request. This location is
used until a DISCONN is issued.
For example, the GET r~que5t uses the supervisor read function. If the
read terminates with a positive return code, that return code is saved in
the location named by the SYSRTCD parameter in the PROCESS request associated with the GET request. The GET request also terminates with a positive return code in the task control word. The positive return code
indicates that a read error has occurred. The cause of the read error can
be determined by examining the location named by the SYSRTCD parameter.

Note: When analyzing errors, the Indexed Access Method return code in
the task code word would be checked prior to the system return code.
The following example is a method of obtaining the return code value from
the location SYSRTCD. This routine gets the task SYSRTCD. and compares it
to the EDX successful return code, negative one (-1).
YOURPRGM
PROGRAM START

SUBROUT
MOVE
IF

ERRTEST
TASKRC,SYSRTCD
(TASKRC.EQ.-l)

get system return code
if -1, return now
if not -1 then perform
your diagnosis

ENDIF
RETURN
TASKRC

DATA

F'O'

saved system return cods

THE DATA-SET-SHUT-DONN CONDITION
Someti mes an I/O error occurs that ; s not as.soci ated wi th a speci fi c
request. For example, task A issues a GET on file X. To secure buffer
space to satisfy the request, the Indexed Access Method attempts to write
a block to file Y and, in writing the record, an error occurs. Data set Y
is damaged but there is no requesting program to accept an error return
code.
The error is i ndi cated by sett i ng the data-set-shut-down condi t i on for
file Y. After this condition occurs, no requests except a DISCONN are
accepted for file Y.

0'· ·

.,

I

later, if task B issues a GET on file Y, the request is terminated with a
data-set-shut-down return code. Task B should issue a DISCONN and use
recovery and backup procedures as described under "File Backup and RecovChapter 11. Error Recovery

IG-21S

ery" on page IG-94,
to
reconstruct the fi Ie.
To cancel the
data-set-shut-down condition, initial program load (IPL) or cancel $IAM.

$ILOG - ERROR LOGGING FACILITY
You can have the Indexed Access Method to log errors in the system error
log data set.
To use the error logging ficility, allocate a system error log data set.
The data set must be a minimum of 3 256-byte EDX records. The first two
records are used for control, and this would allow one error log entry.
The error log entries are entered in the log data set one after the other
as they occur. When the data set becomes full, the new entries overlay
the old entries starting at the front of the data set again. Therefore
the size of the d~ta set should be based on the frequency of errors, and
the frequency with which the data set is listed or examined. Each error
log entry requires a 256-byte EDX record.
Yoy can load $LOG into any partition. Using the system command LOGINIT,
will initialize and activate error logging for any Indexed Access Method
errors.
The following format is used to record Indexed Access Method associated
errors in the error log data set:
Displacement into each EDX $IAM error log entry
Hex (Dec) Field
00
(0)
Indexed Access Method entry identifier 'CDIIAM'
06
(6)
User TCB Address
08
(8)
Data Set Name
(16)
10
Volume
(22)
16
Original Function Byte
(23)
17
Current Function Byte
(24)
18
Indexed Access Method Return Code
(26)
1A
System Return Code
(28)
lC
User AKR Value
To list the Indexed Access Method error log entries currently in the system error log, you can load $ILOG using the system command $L. Respond to
the prompt "(DSNAME,VOLUME):" with system error log data set and volume
name.
The list will be directed to the terminal which was used to load $ILOG.

c
IG-216

SC34-0404

o

Follow; ng ; 5 a sample of the prj ntad error report show; ng two error
records:
INDEXED ACCESS METHOD LOG REPORT PROGRAM ACTIVE
TCB
PTN ADDR
2
2

1F64
IF64

DSNAME

VOLUME

ORIG
FNCTH

CURR
FNCTN

IAMFILE
IAMFILE

EDX002
EDX002

PUTNW
PUTHW

PUTNW
PUTHW

$IAM
SYSTEM
RTCODE RTCODE
62
62

-1
-'1

DATE

TIME

00/00/00 00:00:00
00/00/00 00:00:00

2 INDEXED ACCESS METHOD LOG ENTRIES LOCATED
$ILOG ENDED

o
Chapter 11. Error Recovery

IG-2i7

DEADLOCKS AND THE LONG-LOCK-TIHE CONDITION
Because the Indexed Access Method uses record and block locks to preserve
file integrity, deadlock and long-lock-time conditions may occur.
The deadlock condition occurs when two or more tasks interact in such a
way that one or more resources becomes permanently locked, making further
progress impossible. A deadlock can also occur when two requests from the
same task require a lock on the same record or a lock on the same block in
sequential mode.
A long-lock-time condition occurs when your program acquires a record for
update and does not return the record to $IAM for a long time.
Application tasks should avoid using the Indexed Access Method in such a
way that a record or block remains locked for a long period of time,
because other tasks may attempt to use the same record or block. In a terminal-oriented system, make every effort to ensure that a record or block
is not locked during operator "think" time. Specifically, you should
attempt to follow these rules:
•

Do not retrieve a record for update, display the record at the terminal, and wait for the operator to modify it.

•

Do not retrieve a record in sequentiai mode, display the record at the
terminal, and wait for an operator response.
('

In both of these cases, a record or block is locked duri ng operator
"think" time and could be locked indefinitely.
A deadlock cannot be broken except by freeing the locks (records) that are
being waited on.
If your application uses more than one IACB, deadlocks are possible. For
example, one task has read record A and attempts to read record B, while
another task has read record B and attempts to read record A. If you are
using more than one IACB per task, such as in Multiple Torminal Manager
applications, use ENQ/DEQ and interprogram communications to avoid the
deadlocks.
You can avoid the long-lock-time
two methods:

~ondition

by using one of the following

1.

a.

Retrieve the desired record without specifying update.

b.

Perform processing in a work area.

c.

Retrieve the record, specifying update.

d.

Compare the record read in step 1 with the record read in step 3.

IG-218

SC34-0404

'""

\'~.,~J

o

e.

2.

If the records are identical, issue a PUTUP request, specifying
the address of the copy in the work area. If they are not identical, issue a RELEASE request for the record read in step 3, and
repeat steps 1 through 5.

Use conditional requests which do not wait for locks. (See "Chapter
7. Coding the Indexed Access Method Requests" for descriptions of coding conditional requests.)
To retrieve records in sequential mode, use the technique described in
"Avoiding Resource Contention" on page IG-2l0.

VERIFYING REQUESTS AND FILES
Following are two steps you can take to help you isolate and correct malfunctions in your Indexed Access Method application program.
•

Request verification - to determine that requests are correct check
all parameters specified or defaulted on the Indexed Access Method
CALL statements:
PROCESS/LOAD requests - When issuing a PROCESS or LOAD, check that
the specified file name is the correct file control block (DSCB)
for the file you are verifying.

c

GET-PUT-DELETE-RElEASE requests - For these requests, carefully
check the key, its position, length, and the relational operator
(if used). Ensure that the correct address for the indexed access
control block (IACB) is passed from the PROCESS or LOAD request,
and that the rec~rd area address is correct.
•

File verification - read your $VERIFY report or indexed file dump to
determine whether data or index records are missing or incorrect.

Note: Be sure that the combination of parameters specified by the SE
command of the $IAMUTl utility to define your file is correct (see the
"Chapter 8. The $IAMUTl Utility" on page IG-141 for a description of
the $IAMUTI parameters).

o
Chapter 11. Error Recovery

IG-219

o

o
IG-220

SC34-0404

o

CHAPTER 12. INSTALLING THE INDEXEP ACCESS "ETHOD

This chapter presents an overview of how to install the Indexed Access
Method.
The Indexed Access Method is distributed on two double surface diskettes
with external ID AM4001- and AM4002-YIM2BASYOlOI. The diskettes are formatted are 256 bytes per sector.

INSTALLATION PROCEDURES
The installation information which follows is for planning purposes only.
The specific details for installing the product is included in the "Program Directory", which is shipped with the product.

INSTALLING THE INDEXED ACCESS "ETHOD
Installing the Indexed Access Method consists of two steps:

o

1.

step 1
a. Ensure that adequate space is ava i labl e for the i nstallat ion
according to the requirements shown in Figure 14.

Volume

Data Sets

EDX002
ASMlIB
ASMlIB

3
2
1

Figure 14.
2.

o

EDX Records
265
145
6

Contents
load Modules
Source Modules
link Module

Volume Space Requirements

Step 2
a.

Copy the Indexed Access Method load module ($IAM), the utility
program ($IAMUT1), the file verification program ($YERIFY), and
the log report program ($IlOG), to the EDX002 volume.

b.

Copy the following source modules to the ASMlIB volume.

•
•

•

IAMEQU
FCBEQU
lAM

Chapter 12. Installing the Indexed Access Method

IG-221

ASSEMBLING AND EXECUTING THE INSTALLATION VERIFICATION PROGRAM
To assemble and execute the installation verification program:
1.

o

Submit to the $JOBUTll utility, the 'proc' $SAMPROC provided on volume
AM4001 to assemble and link edit the verification program.
The source statements for the installation verification program are
contained in a data set named SAMPLE on volume AM4001.

2.

Use $IAMUTI to define and allocate an indexed file to be used by the
installation verification program. Respond to the SE option 2 ,prompts
with the indicated values:

BASEREC
BLKSIZE
RECSIZE
KEYSIZE
KEYPOS
FREEREC

3.

10
256
80
28
1
1

FREEBLK
RSVBLK
RSVIX
FPOOl
DElTHR
DYN

10
0
0
0
0
10

Load $SAMPLE and when prompted for the data set and volume, respond
with the name for the file allocated in the previous step (SAMPFILE).

Note: The
sets exist
exist with
Operator's

procedure $SAMPROC assumes that ASMWORK and LINKWORK data
on EDX002. Allocate these data sets if they don't already
the $DISKUTI Event Driven Executive Utility. CRefer to the
Reference for details on allocation of these data sets.)

o
IG-222

SC34-0404

APPENDIX A. SUMMARY OF CALCULATIONS

The following calculations can be used to define an indexed data set. For
a more detailed description of these calculations, see "Chapter 3. Defining Primary Index Files" on page IG-17.
In the calculations requiring
division, results with non-zero remainders are either:

truncatC!d

8.

or roundC!d up

0.

To truncate ; s to dro'p the rema; nder; to round up is to add one (only if
the remainder is non-zero), and truncate.
Data Block
tl] Records per data
block = block si~e minus 16,
divided by record size;
result truncated.

111

= (BLKSIZE-16)/RECSIZE

[2] Free records per block.

t21

= FREEREC

t3]

= til

[4]

= KEYSIZE

[5]

= (BlKSIZE-16)

[6]

= FREEBlK

13] Allocated records per
data block = Records per
block minus free records per
block.

Index Block (General)
14] Index entry size = key
length plus 4; must be even;
add 1 if odd.
[5] Total entries per index
block = block size 16, divded
index entry si~e;
result truncated.
Index-Block (PIXB)
[6] Free entries per
primary index block (PIXB) =
specified percentage of total
entries per index block;
result rounded up.

C

"i,
'

- t2]

+ 4 (+1 if odd)

~

/ [4]

of [5J

,

1''-'

Appendix A. Summary of Calculations

IG-223

[7] Reserve entries per
PIXB = specified percentage
of total entries per index
block; result rounded up.
If free entries per PIXB
and reserve entries per all
PIXB entries, subtract one
from reserve entries per PIXB.

[8J Allocated entries per
PIXB = total entries per index
block minus free entries per
PIXB, minus reserve entries per
PIXB.
Index Block (SIXB)
[9] Reserv~ entries per
secondary index block (SIXB) =
specified percentage of total
entries per index block; relult
rounded up. If reserve entries
per SIXB require all SIXB
entries, subtract one.

[10J Allocated entries per
SIXB = total entries per index
block ~inus reserve entries
per SIXB.

E7]

= RSVBLK

~

of [5]

(-1 if E6] + [7[

E8J

= E5J

E9J

= RSVIX

- [6J

= [SJ

[llJ

= [5J

[7]

X of [5J

(-1 if [9J

EI0J

~

= [5J)

- [9J

Delete Threshold
[Ill The number of blocks
to retain in cluster (delete
threshold) is calculated in
one of three ways:
a. If the RSVBLK parameter
was not specified:
Number of blocks to
retain in cluster =
total entries per index
block.

b. If the RSVBlK parameter
[11]
was specified. but the
DElTHR parameter was not
specified: Number ~f
blocks to retain in the
cluster = allocated
entries per PIXB, plus
one-half of free entries
per PIXB; rusult rounded up.

IG-224

SC34-0404

or

= [8J

or

+ [6J / 2

= [5J)

c

c. If the RSVBlK parameter
was specified, and the
DElTHR parameter was
specified: Number of
blocks to retain in the
cluster = specified

[11]

= DElTHR

X of [5]

(If 0, set [11] to 1)

percentage of total
entries per index block;
result rounded up. If
the result is zero, set
it to 1.
Data in Data Set
[12] Initial allocated data
blocks = base records divided
divided by allocated records
records per data block; result
rounded up.
[13] Number of clusters in
data set = initial allocated
data blocks, divided by
allocated entries per PIXBi
result rounded up.

C',~
/

[14] Total number of free
blocks in data set = number
of clusters in data set, times
free entries per PIXB.
Indexes in Data Set
[15] Number of primary
index blocks (PIXBs) = number
of clusters in data set.
[16]aNumber of secondary
index blocks (SIXBs) = number
of PIXBs, divided by allocated
entries per SIXB; result
rounded up.

[12]

= BASEREC

[13]

= [12]

[14]

= [13] *

[15]

= [13]

[16]

= [15]

I

I

I

[3]

[8]

[6]

[10]

[17]aCalculate the number
of index blocks for levels 3 to
n. Note that levels 1 (PIXB)
and 2 (SIXB) have already been
calculated. When the number of
index blocks at a level is 1, n
has been reached and the
calculation is finished.

o
Appendix A. Summary of Calculations

IG-225

···~

Number of index blocks
at level i (i=3 to n)'=
number of index blocks
at next lower level,
divided by total entries
per index block; result
rounded u.p.
[18] Total number of index
blocks = sum of index blocks at
each level until a level
containing asingle index block
is attai ned.
Free Pool
[19] Number of new data
blocks which can be
assigned to existing clusters =
reserve entries per PIXB, times
number of PIXBs.

E171

= [171

/ [Sl

[181

= [IS]

+ [16J

[21] Number of new data
blocks which can be assigned
to new clusters = total entries
per index block, times number
of new clusters which can be
created.
[22] Maximum possible free
pool = number of new data blocks
data blocks which can be
assigned to existing clusters,
plus number of new clusters
(PIXBs) which can be created,
plus number of new data blocks
which can be assigned to new
clusters.
[23] Actual number of free
pool blocks = specified
percentage of maximum possible
free pool; result rounded up.

IG-226

SC34-0404,

'

\

.......

+ (Sum of all (1715)

[191

= [71 *

[201

= [9J * [161

[20] Number of new clusters

(PIXBs) which can be crested =
reserve entries per SIXB, times
number of SIXBs.

r,

,I

[ISJ

[21J

= [SJ * [20J

(22J

= (19J

[23J

+ [20J + (21J

= FPOOL

~

of [22J

//11'"

-"'\

I~;

"i

o

Size of Data Set
[24] Total number of blocks
;n data set = 1 (for f;le
control block), plus total
number of ;ndex blocks, plus
;n;t;al allocated data blocks
blocks, plus total number of
free blocks ;n data set, plus
actual number of free pool
blocks.

[24]

=1

+ [18] + [121

+ [14] + [23]

C~
/

o
Appendix A. Summary of Calculations

IG-227

()

IG-228

SC34-0404

o

APPENDIX B. PREPARING INDEXED ACCESS METHOD pROGRAMS

To prepare an appl i cat i on program that
requests, perform the following steps:

issues Indexed Access Method

1.

Enter your source program statements, using one of the Event Driven
Executive text editors ($FSEDIT, $EDIT1, or $EDITIH).

2.

Create the $EDXLIHK control statements required to combine your program with $IAM (the link module) and any other object modules you may
need in your appl i cat ion. Use one of the text edt tors to perform thi s
operation.

3.

Assemble or compile your source program.

4.

Use the linkage editor, $EDXLIHK, to combine the object modules into a
single load module, using the control statements prepared in Step 2.

When the preceding steps are completed, the program is ready to be executed.

C

'iI,\
,.I

Refer to the Program Preparation Guide for mora information on program
preparation.

o
Appendix B. Preparing Indexed Access Method Programs

IG-229

A SAMPLE $JOBUTIL PROCEDURE AND LINK-EDIT CONTROL. DATA SET.
The following are examples of a $JOBUTIL procedure and a link-edit control
file used to prepare a program.
Sample $JOBUTIL Procedure
The follow; ng $JOBUTIL procedure is an example of prepari ng an EDL
program.

*********************************************************
** THESE STATEMENTS WILL COMPILE, LINK, AND UPDATE THE

* APPLICATION.
**********************************************************
JOB

COMPILE
*** COMPILE USERPROG SOURCE
LOG
$SYSPRTR
PROGRAM $EDXASM,ASMLIB
DS
USERPROG,EDX002
DS
ASMWORK,EDX002
DS
USEROBJ,EDX002
PARM
LIST
$SYSPRTR
EXEC
JUMP
END,GT,4
JOB
LINK
$SYSPRTR
LOG
PROGRAM $EDXLINK,EDX002
DS
LINKWORK,EDX002

*PARM

LINKCNTL,EDX002

EXEC
LABEL
EOJ

END

***
SOURCE MODULE
ASSEMBLER WORK DATA SET
ASSEMBLER OUTPUT

WORK DSNAME
LINK-CONTROL DATA SET
&SYSPRTR

o
IG-230

SC34-0404

~·

O

,'.I

L;nk Edit control Data set Example
The fo llowi ng Ii nk-edi t control records can be used to Ii nk-edi t an
Indexed Access Method appl i cat 1on wi th the Indexed Access Method.

MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
M

M LINK EDIT CONTROL DATA SET (LINKCTL)
M

MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

INCLUDE USEROBJ,EDX002 INCLUDE APPLICATION PGM OBJECT
INCLUDE IAM,ASMLIB
INCLUDE INDEXED ACCESS METHOD
LINK
USERPROG,EDX002. REPLACE END
END

0 '·
'.

Appendix B. Preparing Indexed Access Method Programs

IG-231

,(--,,\
i.l!

~."Y

IG-232

SC34-0404

I

o

APPENDIX C. CODING EXAMPLES

This chapter
functions by
language CAll
third example

demonstrates how to code the Indexed Access Method request
means of sample programs. This example uses Event Driven
functions. The second example uses the CaBOl language. The
in this chapter is coded using Pl/I language.

EDL INDEXED ACCESS METHOD CODING EXAMPLE
This program gives an example for each of the Indexed Access Method function calls. The indexed file is opened first in load mode and ten base
records are loaded followed by a DISCONNECT. Next, the same fi Ie is
opened for processing. A GET request is performed for the first record
whose key is greater than 'JONES PW'. Two more records are retrieved
sequentially and then the ENDSEQ call releases the file from sequential
mode. A record is then retrieved directly by key and updated. Another
record is retrieved sequentially and deleted. A new record is inserted
and another one is deleted by their unique keys. ,Finally, an example of
extracting information from the'file control block is shown. Upon successful completion the message "Verification Complete" is displayed on
the console.
Although using secondary keys are not demonstrated in this example the
requests are coded the same for secondary keys as they are for primary
keys. When accessing secondary keys use the secondary index file name
instead of the primary index file name. The Indexed Access Method will
open the primary index file and retrieve the data record according to the
secondary key requested.
This program requires that an Indexed Access Method file has been defined
with the $IAMUTl utility with the following specifications:

0

BASEREC
BlKSIZE
RECSIZE
KEYSIZE
KEYPOS
FREEREC
FREEBlK
RSVBlK
RSVIX
FPOOl
DElTHR
DYN

10
256

80
28
1
1
10
0
0
0
0
0

Appendix C. Coding Examples

IG-233

EDL INDEXED ACCESS HETHOD CODING EXAHPLE

SAMPLE
START

PROGRAM START,DS=??,ERRXIT=TEECB
EQU
*
ENQT
PRINTEXT LOGON,LINE=O
DEQT

*

IAM,(LOAD),IACB,(DS1),(OPENTAB),(SHARE)

LOAD THE INDEXED ACCESS METHOD DATA SET
MOVEA POINTER,RECORDl
POINTER <== A(RECORD1)
DO
RECNUM,TIMES
CALL IAM,(PUT),IACB,(*),P4=~OINTER
ADD POINTER,80
POINT TO NEXT RECORD
ENDDO
GET OUT OF LOAD MODE
CALL IAM,(DISCONN),IACB
EJECT

'*

*

PRINT LOGON MESSAGE

OPEN THE INDEXED ACCESS METHOD DATA SET FOR LOADING
CALL

*

o

OPEN THE INDEXED FILE FOR PROCESSING

*

CALL

IAM,(PROCESS),IACB,(DS1),(OPEHTAB),(SHARE)

* PERFORM A DIRECT RETRIEVAL OF THE FIRST RECORD WHOSE KEY IS
* GREATER THAN 'JONES PW'. THE KEY FIELD WILL BE MODIFIED TO
* REFLECT THE KEY OF THE RECORD RETRIEVED.
CALL
MOVE
IF

IAM,(GET),IACB,(BUFF),(KEY3),(GT)
RTCODE,SAMPLE
(SAMPLE,NE,-l),GOTO,IAMERR

* PERFORM A SEQUENTIAL RETRIEVAL OF THE FIRST TWO RECORDS
* WHOSE KEYS ARE GREATER THAN OR EQUAL TO 'JONES PW'
CALL
MOVE
IF
CALL
MOVE
IF
CALL

IAM,(GETSEQ),IACB,(BUFF),(KEY1),(GE)
RTCODE,SAMPLE
(SAMPlE,NE,-l),GOTO,IAMERR
IAM,(GETSEQ),IACB,(BUFF)
RTCODE,SAMPLE
(SAMPLE,NE,-l),GOTO,IAMERR
IAM,(ENDSEQ),IACB,(BUFF)
END SEQUENTIAL MODE

c
IG-234

SC34-0404

o

*

UPDATE THE RECORD WHOSE KEY IS 'JONES PW' BY A DIRECT UPDATE
CALL
MOVE
IF

c

IAM,(GET),IACB,(BUFF),(KEY1),(UPEQ)
RTCODE,SAMPLE
(SAMPLE,NE,-l),GOTO,IAMERR

**
*

MAKE THE DESIRED MODIFICATIONS TO THE RECORD NOW IN BUFFER

**
*
*

DELETE THE RECORD WHOSE KEY IS 'JONES PW' BY A
SEQUENTIAL UPDATE

**
*
**

MOVE
CALL

CALL
MOVE
IF
CALL
CALL

BUFF+30,O
IAM,(PUTUP),IACB,(BUFF)

IAM,(GETSEQ),IACB,(BUFF),(KEY1),(UPEQ)
RTCODE,SAMPLE
(SAMPlE,NE,-1),GOTO,IAMERR
IAM,(PUTDE),IACB,(BUFF)
IAM,(ENDSEQ)~IACB
END SEQUENTIAL MODE

INSERT A NEW RECORD WITH A KEY OF 'MATHIS GR'
CALL

IAM,(PUT),IACB,(NEWREC)

DELETE THE RECORD WHOSE KEY IS 'LANG lK'
CALL IAM,(DELETE),IACB,(KEY2)
MOVE RTCODE,SAMPLE
(SAMPLE,NE,-1),GOTO,IAMERR
IF
EJECT

**

EXTRACT THE FILE CONTROL BLOCK INTO THE EXTRACT BUFFER
CALL
MOVEA
MOVE
SPACE

**
*

IAM,(EXTRACT),IACB,(EXTBUF),(FCBSIZE),128
11,EXTBUF
11 <-- A(EXTRACT BUFFER)
FLAGBYTE,(O,11),BYTE
OBTAIN FCB FLAG BYTE
5

WRITE VERIFICATION COMPLETE MESSAGE TO THE OPERATOR
ENQT
PRINTEXT SKIP=1
PRINTEXT VERIF,SPACES=O

SYSERR

DEQT
GOTO
EQU

FINISH

*

JUMP AROUND ERROR ROUTINES
GETS CONTROL ON SYSIPGM CHECK

o
Appendix C. Coding Examples

IG-235

M
M
M
M

*

WHEN A TASK "ERROR EXIT IS SPECIFIED IN AN INDEXED
ACCESS METHOD PROGRAM, YOU CAN RELEASE ALL ACTIVE
RECORD AND BLOCK LEVEL LOCKS AS WELL AS DISCONNECT
THE FILE ITSELF BY ISSUING THE 'DISCONN' CALL FOR
EACH FILE THAT IS OPEN.

M

IAMERR

GOTO FINISH
EJECT
EQU
M
MOVE
ENQT

RTCODE,SAMPLE
PRINTEXT
PRINTEXT
PRINTHUM
PRINTEXT
PRINTEXT

FINISH

GETS CONTROL UPON INDEXED
METHOD ERRORS
SKIP=2
RTCODMSG
RTCODE,TYPE=S,FORMAT=(3,0,I)
SKIP=l
ERRMSG,SPACES=O

DEQT
EQU
*
CALL IAM,(DISCONN),IACB
PROGSTOP
EJECT

M

*

DATA DEFINITION AND STORAGE AREAS

*
RECNUM
RTCODE
OPENTAB

DATA
DATA
DATA
DATA
DATA
RECORDl DATA
RECORD2 DATA
RECORD3 DATA
RECORD4 DATA
RECORDS DATA
RECORD6 DATA
RECORD7 DATA
RECORD3 DATA
RECORD9 DATA
RECORDlO DATA
FlAGBYTE DATA
DATA

10-236

NUMBER OF RECORDS TO LOAD
F'lO'
INDEXED ACCESS METHOD RETURN CODE
F'O'
SYSTEM RETURN CODE ADDRESS
F'O'
A(IAMERR)
ERROR EXIT ROUTINE ADDRESS
END OF DATA ROUTINE ADDRESS
F'O'
CL80'BAKER RG'
Cl80'DAVIS EN'
CL80'HARRIS SL'
CL80'JONES PW'
CL80'JONES TR'
CL80'LAHG LK'
CL80'PORTER JS'
CL30'SMITH AR'
CL30'SMITH GA'
Cl80'THOMAS SN'
FCB FLAG BYTE
H'O'
H'O'

SC34-0404

o

o

NEWREC
BUFF
KEY1
KEY2

DATA
DATA
TEXT
TEXT
DATA
DATA
KEY3
DATA
IACB
DATA
EXTBUF
DATA
LOGON
TEXT
VERIF
TEXT
ERRMSG
TEXT
RTCODMSG TEXT
EJECT

**

THE FOLLOWING STORAGE IS USED BY TASK ERROR EXIT HANDLING

*TEECB

c~'\
/

CL80'MATHIS GR'
CL80' ,
'JONES PW',LENGTH=28
'LANG LK',LENGTH=28
X'lC'
X'OO'
CL28'JONES PW'
ADDR OF IACB PUT HERE
F'O'
FCB PUT HERE BY EXTRACT
64F'O'
'INSTALLATION VERFICATION PROGRAM ACTIVE'
'VERIFICATION COMPLETE'
'VERIFICATION INCOMPLETE DUE TO BAD RETURN CODES'
'INDEXED ACCESS METHOD RETURN CODE: ,

EQU
DATA
DATA
DATA

*F'2'
ACSYSERR)
ACHSA)

TASK ERROR EXIT CONTROL BLOCK
I OF DATA WORDS THAT FOLLOW
ADDRESS OF EXIT ROUTINE
ADDRESS OF HARDWARE STATUS AREA

*
STATUS AREA. THIS STORAGE WILL BE FILLED
* HARDWARE
HARDWARE UPON SYSTEM OR PROGRAM CHECK INTERRUPT
*
*
HSA
EQU
*
HSALSB

DATA F'O'
EQU
*
DATA F'O'
DATA F'O'
DATA F'O'
DATA 8F'0'
COpy IAMEQU
COpy FCBEQU
ENDPROG
END

IN BY

PROCESSOR STATUS WORD
LEVEL STATUS BLOCK:
ADDRESS KEY REGISTER
INSTRUCTION ADDR REGISTER
LEVEL STATUS REGISTER
GENERAL REGISTERS 0-7

o
Appendix C. Coding Examples

IG-237

COBOL INDEXED ACCESS METHOD CODING EXAMPLE
This coding example inserts, deletes, and updates records in an indexed
file, using primary and secondary keys to retrieve the records. The
indexed file description is described below under "Input File".

o

Program Description
Thi s program reads a record and based on a transact; on code, e; ther
updates, deletes, or inserts records to a current Indexed Access Method
file. The transaction type also determines whether indexing is done using
a secondary or primary key.

Input Fi Ie
I. TRANSACTION FILE.
TRANSACTION RECORD FORMAT:
EMPLOYEE NUMBER
1-6
LAST NAME
7-21
FIRST NAME
22-31
ADDRESS
32-56
CITY
57-68
STATE
69-70
AGE
71-72
START DATE
73-78
TYPE
79
ACTION
80

(6)

(15)
(10)
(25)
(12)
(2)
(2)
(6)
(1 )
(1 )

II. UPDATE FILE
A. MASTER FILE.
PRIMARY. KEY IS EMPLOYEE NUMBER
B. NAME FILE
SECONDARY. KEY IS LAST 'NAME.
EMPLOYEE RECORD FORMAT
EMPLOYEE NUMBER
1-6
(6)
LAST NAME
7-21
(15)
FIRST NAME
22-31 (10)
ADDRESS
32-56 (25)
CITY
57-68 (12)
STATE
69-70
(2)
(2)
AGE
71-72
(6)
START DATE
73-78
(2)
FILLER
79-80

c
IG-238

SC34-0404

o

C~
I

IDENTIFICATION DIVISION.
PROGRAM-ID.
COBOll.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.
IBM-Sl.
OBJECT-COMPUTER.
IBM-Sl.
SPECIAL-NAMES.
SYSOUT IS PRINTER.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMPLOYEE-MASTER ASSIGN TO DS2 "EMPMAST" "EDXTST"
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS EMPLOYEE-NUMBER
FILE STATUS IS SKI
SELECT EMP-NAME-FILE ASSIGN TO DS3 "EMPNAME" "EDXTST"
ORGANIZATION IS INDEXED
ACCESS MODE IS RANDOM
RECORD KEY IS E-LAST-NAME
FILE STATUS IS SKi
SELECT TRANSACTION-FILE ASSIGN TO DS4 "TRANSF" "EDXTST"
ORGANIZATION IS SEQUENTIAL,
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS SKI
DATA DIVISION.
FILE SECTION.
FD EMPLOYEE-MASTER
LABEL RECORDS ARE STANDARD
BLOCK CONTAINS 3 RECORDS.
01 MASTER-RECORD.
05 EMPLOYEE-NUMBER
PICTURE X(06).
05 FILLER
PICTURE X(74).
FD
01

FD

01

EMP-NAME-FILE
LABEL RECORDS ARE STANDARD
BLOCK CONTAINS 3 RECORDS.
EMP-NAME-RECORD.
05 FILLER
PICTURE X(06).
05 E-lAST-NAME
PICTURE X(15).
05 FILLER
PICTURE X(59).
TRANSACTION-FILE
LABEL RECORDS ARE STANDARD
BLOCK CONTAINS 3 RECORDS
RECORD CONTAINS SO CHARACTERS.
TRANS-ACTION-RECORD
PICTURE X(SO).

o
Appendix C. Coding Examples

IG-239

(~
,oJ)
,

\

I

WORKING-STORAGE SECTION.
77 EOF
77 ERR-SWITCH
77 SK
01 EMPLOYEE-RECORD.
05 MAN-NUMBER
05 NAME.
10 LAST-NAME
10 FIRST-NAME
OS STREET-ADDRESS
OS CITY
05 STATE
OS AGE
OS START-DATE
OS FILLER
01

PICTURE 9(01) VALUE ZERO.
PICTURE X(01) VALUE ZERO.
PICTURE X(02) VALUE ZERO.
PICTURE X(06).
PICTURE
PICTURE
PICTURE
PICTURE
PICTURE
PICTURE
PICTURE
PICTURE

X(1S).
X(10).
X(25).
X( 12).
X(02).
X(02).
X(06).
X(02).

TRANSACTION-RECORD.
PICTURE X(06).
05 T-NUMBER
OS T-NAME.
PICTURE X(1S).
10 T-LAST-NAME
PICTURE X(10).
·10 T-FIRST-NAME
PICTURE X(2S).
OS T-STREET-ADDRESS
PICTURE X( 12).
OS T-CITY
PICTURE X(02).
05 T-STATE
PICTURE XC 02).
OS T-AGE
PICTURE X(06).
OS T-START-DATE
05 TRANSACTION-CODE.
PICTURE X(O!).
10 TRANS-TYPE
PICTURE xeo!).
10 TRANS-ACTION

/~

""\

1". ./

PROCEDURE DIVISION.
BEGIN-PROCESSING.
PERFORM FILE-OPEN1.
IF SK = "00"
PERFORM PROCESS-SECTION UNTIL EOF = 1.
PERFORM CLOSE-UP.
DISPLAY" CLOSE UP PROC COMPLETE" UPON PRINTER.
STOP RUN.
PROCESS-SECTION.
READ TRANSACTION-FILE INTO TRANSACTION-RECORD
AT END MOVE 1 TO EOF
DISPLAY "TRANSACTION FILE PROCESSING COMPLETE" UPON PRINTER.
IF EOF NOT = 1
DISPLAY " " TRANSACTION-RECORD UPON PRINTER
PERFORM CONTROL-SECTION.

c
IG-240

SC34-0404

CONTROL-SECTION.
IF TRANS-ACTION NOT = "2"
PERFORM READ-SECTION.
IF TRANS-ACTION = 1
PERFORM DELETE-PROC
ELSE
IF TRANS-ACTION = 2
PERFORM ADD-PROC
ELSE
PERFORM UPDATE-PROC.
READ-SECTION.
IF TRANS-ACTION : "PH
PERFORM READ-PRIMARY
ELSE
PERFORM READ-SECONDARY.
READ-PRIMARY.
DISPLAY " DURING PRIMARY READ" UPON PRINTER.
DISPLAY" KEY: " T-NUMBER UPON PRINTER.
MOVE T-NUMBER TO EMPLOYEE-NUMBER.
READ EMPLOYEE-MASTER INTO EMPLOYEE-RECORD
INVALID KEY DISPLAY "INVALID PRIMARY KEY" T-NUMBER
UPON PRINTER.
IF SK NOT = "00"
DISPLAY "PRIMARY READ FAILED " T-NUMBER " " SK UPON
PRINTER.
READ-SECONDARY.
DISPLAY " DURING SECONDARY READ" UPON PRINTER.
DISPLAY" KEY: " T-LAST-NAME UPON PRINTER.
MOVE T-LAST-NAME TO E-LAST-NAME.
READ EMP-NAME-FILE INTO EMPLOYEE-RECORD
INVALID KEY DISPLAY "INVALID SECONDARY KEY"
T-LAST-NAME UPON PRINTER.
IF SK NOT = "00"
DISPLAY "SECONDARY READ FAILED" T-LAST-NAME " " SK
UPON PRINTER.
UPDATE-PROC.
IF T-lAST-NAME NOT : SPACES
MOVE T-lAST-NAME TO LASX-HAME.
IF T-FIRST-NAME NOT = SPACES
IF T-STREET-ADDRESS NOT = SPACES
MOVE T-STREET-ADDRESS TO STREET-ADDRESS.

0"
, ~I

Appendix C. Coding Examples

" IG-241

IF T-CITY NOT = SPACES
MOVE T-CITY TO CITY.
IF T-STATf NOT = SPACES
MOVE T-STATE TO STATE.
IF T-AGE NOT = SPACES
MOVE T-AGE TO AGE.
IF T-START-DATE NOT = SPACES
MOVE T-START-DATE TO START-DATE.
IF TRANS-TYPE = "PH
PERFORM PRIMARY-REWRITE
ELSE
PERFORM SECONDARY-REWRITE.
PRIMARY-REWRITE.
DISPLAY " BEGIN PRIMARY REWRITE KEY = " T-NUMBER
UPON PRINTER.
MOVE T-NUMBER TO EMPLOYEE-NUMBER.
REWRITE MASTER-RECORD FROM EMPLOYEE-RECORD
INVALID KEY DISPLAY "INVALID ~RIMARY KEY"
T-NUMBER UPON PRINTER.
IF SK NOT = "00"
DISPLAY "PRIMARY WRITE FAILED" T-NUMBER " " SK
UPON PRINTER.
DISPLAY" PRIMARY REWRITE COMPLETE" UOPN PRINTER.
SECONDARY-REWRITE.
DISPLAY " BEGIN SECONDARY REWRITE KEY = " T-LAST-NAME
UPON PRINTER.
MOVE T-LAST-NAME TO E-LAST-HAME.
REWRITE EMP-NAME-RECORD FROM EMPLOYEE-RECORD
INVALID KEY DISPLAY "INVALID SECONDARY KEY"
" " T-LAST-NAME UPON PRINTER.
IF SK NOT = "00"
DISPLAY "SECONDARY WRITE FAILED" T-LAST-NAME " "
SK UPON PRINTER.
DISPLAY" SECONDARY REWRITE COMPLETE" UPON PRINTER.
DELETE-PROC.
IF TRANS-TYPE = "PH
PERFORM PRIMARY-DELETE
ELSE
PERFORM SECONDARY-DELETE.

IG-242"

SC34-0404

o

PRIMARY-DELETE.
MOVE TRANS-ACTION-RECORD TO MASTER-RECORD.
DISPLAY" PRIMARY DELETE STARTED" UPON PRINTER.
DELETE EMPLOYEE-MASTER RECORD
INVALID KEY DISPLAY "INVALID PRIMARY KEY"
T-NUMBER UPON PRINTER.
IF SK NOT = "00"
DISPLAY "PRIME KEY FOR DELETE NOT FOUND"
UPON PRINTER.
DISPLAY" PRIMARY DELETE FINISHED" UPON PRINTER.
SECONDARY-DELETE.
MOVE TRANS-ACT ION-RECORD TO EMP-NAME-RECORD.
DISPLAY" SECONDARY DELETE STARTED" UPON PRINTER.
DELETE EMP-NAME-FIlE RECORD
INVALID KEY DISPLAY "INVALID SECONDARY KEY"
T-lAST-NAME UPON PRINTER.
IF SK NOT = "00" DISPLAY
"SECONDARY KEY FOR DELETE NOT FOUND" UPON PRINTER
DISPLAY TRANSACTION-RECORD UPON PRINTER.
DISPLAY" SECONDARY DELETE FINISHED" UPON PRINTER.

c

ADD-PROC.
MOVE TRANSACTION-RECORD TO EMPLOYEE-RECORD
IF TRANS-TYPE = "PH
PERFORM PRIMARY-ADD
ELSE
PERFORM SECONDARY-ADD.
PRIMARY-ADD.
WRITE MASTER-RECORD FROM EMPLOYEE-RECORD
INVALID KEY DISPLAY "INVALID PRIMARY KEY"
T-NUMBER UPON PRINTER.
IF SK NOT = "00" DISPLAY
"INSERT FAILED FOR PRIME FILE" UPON PRINTER
DISPLAY TRANSACTION-RECORD UPON PRINTER.
SECONDARY-ADD.
WRITE EMP-NAME-RECORD FROM EMPLOYEE-RECORD
INVALID KEY DISPLAY "INVALID SECONDARY KEY"
T-LAST-NAME 'UPON PRINTER.
IF SK NOT = "00"
DISPLAY "INSERT FAILED FOR SECONDARY FILE"
UPON PRINTER.

o
Appendix C. Coding Examples

IG-243

FILE-OPEN!.
OPEN 1-0 EMPLOYEE-MASTER.
IFSK NOT = "00"
DISPLAY "OPEN FAILED FOR EMPMAST" SK UPON PRINTER
ELSE
OPEN 1-0 EMP-NAME-FILE
IF SK NOT = "00"
DISPLAY "OPEN FAILED FOR EMPNAME" SK UPON PRINTER
ELSE
OPEN INPUT TRANSACTION-FILE
IF SK NOT = "00"
DISPLAY "OPEN FAILED FOR TRANSACTION-FILE" SK
UPON PRINTER.
DISPLAY" FILE OPEN COMPLETE" UPON PRINTER.
CLOSE-UP.
DISPLAY" BEGIN CLOSE UP PROC " UPON PRINTER.
CLOSE TRANSACTION-FILE.
CLOSE EMP-NAME-FILE.
IF SK NOT = "00"
DISPLAY "CLOSE FAILED FOR EMPNAME, RC= " SK
UPON PRINTER.
ELSE
DISPLAY" EMP-NAME-FILE CLOSED" UPON PRINTER.
CLOSE EMPLOYEE-MASTER.
IF SK NOT = "00"
DISPLAY "CLOSE FAILED FOR EMPMAST, RC= " SK
UPON PRINTER.
ELSE
DISPLAY" EMP-MAST-FILE CLOSED" UPON PRINTER.

o

('~,

V

c
IG-244

SC34-0404

o

PL/I INDEXED ACCESS METHOD CODING EXAMPLE
Thi s PL.lI codi ng example inserts, deletes, and updates records in an
indexed file, using primary and secondary keys to retrieve the records.
The indexed file description is described below under "Input File".

PrOgraM Descr;pt;on
Thi s program reads a record and based on a transact i on code, ei ther
updates, deletes, or inserts records to a current Indexed Access Method
file. The transaction code also determines whether index access is done
using a sec~ndary key or primary k~y.

Input F;le.
I. INPUT FILE
A. TRANSACTION FILE,
TRANSACTION RECORD FORMAT:
EMPLOYEE NUMBER
LAST NAME
FIRST NAME
ADDRESS
CITY
STATE
AGE
START DATE
TYPE
ACTION

1-6
7-21
22-31
32-56
57-68
69-70
71-72
73-78
79
80

(6)
(15)
(10)
(25)
(12)
(2)
(2)
(6)
(1)
(1)

II. UPDATE FILE
A. MASTER FILE.
PRIMARY. KEY IS EMPLOYEE NUMBER
B. NAME FILE
SECONDARY. KEY IS LAST NAME.
EMPLOYEE RECORD FORMAT
(6)
EMPLOYEE NUMBER
1-6
(15)
LAST NAME
7-21
FIRST NAME
22-31 (10)
32-56 (25)
ADDRESS
CITY
57-68 (12)
(2)
69-70
STATE
(2)
71-72
AGE
(6)
73-78
START DATE
(2)
79-80
FILLER

o
Appendix C. Coding Examples

IG-245

PlITEST: PROCEDUREOPTIONS(MAIN);
DCl EMPMAST
1* EMPLOYEE MASTER FILE
FILE RECORD
1* PRIMARY
DIRECT
1* KEY IS EMPLOYEE NUMBER
UPDATE
KEYED
ENVCFB BlKSIZE(256) RECSIZECSO) INDEXED
KEYlENGTH(6) KEYlOCCl»;

o
*1
*1
*1

DCl EMPNAME

1* EMPLOYEE NAME FILE
FILE RECORD
1* SECONDARY
DIRECT
1* KEY IS EMPLOYEE NAME
UPDATE
KEYED
ENVCFB BlKSIZE(256) RECSIZECSO) INDEXED
KEYlENGTH(15) KEYlOC(7»;

*1
*1
*1

DCl TRANSFl

1* TRANSACTION FILE
1* INPUT FILE
FILE RECORD
SEQUENTIAL
INPUT
ENVCFB BlKSIZE(240) RECSIZECSO) CONSECUTIVE);

*1
*1

OCl SYSPRINT

1*

STANDARD OUTPUT FILE

*1

DCl 1 $FCBlST
STATIC
EXTERNAL,
2 $FCBCNT
FIXED BIN(15)
INIT(4),
2 $FCBFl
CHARCS)
INITC'EMPMAST'),
2 $FCBDI
CHARCS)
INITC'EMPMAST'),
2 $FCBVI
CHAR(6)
INITC'EDXTST'),
2 $FCBF2
CHAR(S)
INITC'EMPNAME'),
2 $FCBD2
CHAR(S)
INITC'EMPNAME'),

;f"-""

~.;)

FILE PRINT
EHVCF BlKSIZE(121»;
1*

FILE CONTROL BLOCK lIST

*1

1*

FILE COUNT

*1

1*

FILE 11 NAME

1*

FILE 11 DATA SET

*1

1*

FILE 11 VOLUME

*1

1*

FILE 12 NAME

1*

FILE #2 DATA SET

c
IG-246

SC34-0404

0

("'"

",/

2 $FCBV2
CHAR(6)
INITC'EDXTST'),
$FCBF3
2
CHAR(8)
INITC'TRANSFl'),
2 $FCBD3
CHAR(8)
INITC'TRANSFl'),
$FCBV3
2
CHAR(6)
INITC'EDXTST'),
$FCBF4
2
CHAR(8)
INITC'SYSPRINT'),
2 $FCBD4
CHAR(8)
INITC'SYSPRINT'),
2 $FCBTL4
FIXED BINC!5)
INIT(1),
2 $FCBBL4
FIXED BINCI5)
INIT(66),
2 $FCBHL4
FIXED BINCI5)
INITCOO);
DCl ! EMP_RECORD
STATIC,
2 EMP_NUMBER
CHAR(6),
2 NAME,
3 LAST_NAME
CHARCI5),
3 FIRST_NAME
CHARCI0),
2 STREET_ADDRESS
CHAR(25),
2 CITY
CHARCI2),
2 STATE
CHAR(2),
2 AGE
CHAR(2) "
2 START_DATE
CHAR(6),
2 FILLER
CHAR(2);

1M

FILE 12 VOLUME

MI

1M

FILE 13 NAME

MI

1M

FILE 13 DATA SET

MI

1M

FILE 13 VOLUME

MI

1M

FILE 14 NAME

MI

1M

FILE 14 DEVICE NAME

MI

1M

FILE 14 TOP LINE

MI

1M

FILE 14 BOTTOM LINE

MI

1M

NOT USED

MI

1M

lAM BUFFER FORMAT

MI

0
Appendix C. Coding Examples

IG-247

DCL 1 TRANSACTIONR
STATIC,
2 TEMP_NUMBER
CHAR(6),
2 TNAME,
3 TLAST_NAME
CHAR(!S),
3 TFIRST_NAME
CHAR(lO),
2 TSTREET_ADDRESS
CHAR(2S),
2 TCITY
CHAR(12),
2 TSTATE
CHAR(2),
2 TAGE
CHAR(2),
2 TSTART_DATE
CHAR(6),
2 TRANSACTION_CODE,
3 TRANS_TYPE
CHAR(!),
3 TRANS_ACTION
CHAR(!);
DCL BLANK
STATIC
CHAR (6)
INITC'
');

/M

/M

'P'

TRANSACTION RECORD FORMAT

= PRIMARY

'S'

= SECONDARY

M/

/M ! = DELETE 2 = INSERT
/M 3 = UPDATE
/M FIELD OF BLANKS

DCL (IOERR,
FOERR)
STATIC
CHAR(!)
INITC'F');

/M INPUT/OUTPUT ERROR FLAG
/M OPEN ERROR FLAG

DCL TRUE
STATIC
CHAR(!)
INITC'T'),
FALSE
STATIC
CHAR(!)
INITC'F');

/M·TRUE VALUE FOR FLAGS

DCL R_CODE
STATIC
FIXED BIN(lS)
INITCO);

M/

/M FALSE VALUE FOR FLAGS

/M RETURN CODE

c
IG-248

SC34-0404

o

DCL ONCODE
/M ON CONDITION CODE
BUILTIN;
DCL EOF
/* END OF FILE FLAG
STATIC
CHARCl)
INITC'F');
/***********************MM*M MAIN PROGRAM M*MMMMMM*MM******M*M*MM/
/*

M/

/**MM**MM*MM*M*M**M**M*M ON CONDITION FOR EOF MM*MMMM*M*MMMMMMMMM/
ON ENDFILECTRANSFl)
BEGIN;
PUT lISTC'M** TRANSACTION FILE PROCESSING COMPLETE MMM');
EOF = TRUE;
CLOSE
/M CLOSE All FILES
M/
FIlECEMPMAST),
FIlECEMPNAME),
FIlECTRANSFl);
STOP TASK;
END;
/****M*****M***** ON CONDITIONS FOR FILE OPEN ERRORS ******MM*MMM/
ON UNDFCEMPMAST) FOERR = TRUE;
ON UNDFCEMPNAME) FOERR = TRUE;
ON UNDFCTRANSFl) FOERR = TRUE;
/**M*******MM*M*M*M** ON CONDITIONS FOR I/O ERRORS MMM***MMM*****/
ON KEYCEMPMAST) IOERR = TRUE;
ON KEYCEMPNAME) IOERR = TRUE;
/*

/MMMMMMMMMMM*MMMMMMMM*MMMMMM OPEN All FILES *MMMMMMMMM*MMMMMMMMMM/
/M

M/

CAll OPEN;
/M**M*MM INITIATE PROCESSING UNTIL EOF CONDITION IS REACHED MMMMM/
DO WHILE CEOF ~= TRUE);
IOERR = FALSE;
FOERR = FALSE;
CAll PROCESS;
/M INVOKE PROCESS SUBROUTINE M/
END;
/M_END DO WHILE M/
/MMMMMMMMMMMMMMMMMMMMM END MAIN PROGRAM MMMMM*MMMMMMMMMMMMMMMMMMM/
/M

M/

OPEN: PROC;
OPEN FILECEMPMAST) UPDATE;
IF FOERR = TRUE THEN
DO;
R_CODE = ONCODE;
/M SET RETURN CODE M/
PUT lISTC'OPEN FAILED FOR EMPMAST') SKIP;
PUT lISTC'ON CODE = ',R_CODE) SKIP;
END;

O'~
"

Appendix C. Coding Examples

IG-249

IF FOERR = FALSE THEN
DO;
OPEN FILECEMPNAME) UPDATE~
IF FOERR = TRUE THEN
DO;
R_CODE = ONCODE;
/* SET RETURN CODE */
PUT LIST('OPEN FAILED FOR EMPNAME') SKIP;
PUT LISTC'ON CODE = ',R_CODE) SKIP;
END;
END;
/*

IF FOERR = FALSE THEN
DO;
OPEN FILE(TRANSFL);
IF FOERR = TRUE THEN
DO;
R_CODE = ONCODE;
/* SET RETURN CODE */
PUT lISTC'OPEN FAILED FOR TRANSFL') SKIP;
PUT LISTC'ON CODE = ',R_CODE);
END;
END;

.1*

IF FOERR = TRUE
THEN
STOP TASK;

(r "",
\~./

.1*

END; /* END OPEN PROCEDURE *.1
.1********************* PROCESS PROCEDURE ************************/

.1*
.1*
.1*
.1*
.1*
.1*

*.1

1) READS IN A TRANSACTION RECORD
*/
2) IF ACTION = 1 DELETES RECORD WITH CORRESPONDING KEY.
*/
*/
- 2 INSERTS RECORD ONTO lAM FILE.
3
READS
RECORD
WITH
CORRESPONDING
KEY,
*/
=
ALLOWS UPDATE, REWRITES RECORD.
*/
3) IF TYPE = 'P' All INDEXING IS DONE WITH A PRIMARY KEY */
/*
.1*
= 'S' ALL INDEXING IS DONE WITH A SECONDARY KEY*/
4) ALL IDENTIFIERS, FILES AND RECORDS USED ARE GLOBAL
*/
.1*
*/
.1*
/****************************************************************/
PROCESS: PROCEDURE;
READ FILECTRANSFL) INTO (TRANSACTIONR);
IF IOERR = TRUE THEN
DO;
R_CODE = ONCODE;
PUT LIST('READ HAS FAILED FOR TRANSFl') SKIP;
PUT LISTC'ON CODE = ',R_CODE) SKIP;
END;

IG-250

"

SC34-0404

o

IF TRANS_ACTION = , 1 '
CALL DELETE;
IF TRANS_ACTION = '3'
CALL UPDATE;
IF TRANS_ACTION = '2 '
CALL INSERT;
END;

1'*

&

IOERR = FALSE THEN
1'* BEGIN DELETE
IOERR = FALSE THEN

&

IOERR = FALSE THEN

&

*1'

END PROCEDURE PROCESS *1'

DELETE: PROC;
IF TRANS_TYPE = 'P'
THEN
DELETE FILECEMPMAST) KEYCTEMP_NUMBER);
ELSE
DELETE FILECEMPNAME) KEYCTLAST_NAME);
END; 1'* END DELETE *1'
1'*

UPDATE: PROC;
IF TRANS_TYPE = -P'
THEN
CALL PRIM_READ;
ELSE
CALL SEC_READ;
IF IOERR = FALSE THEN
DO;
.
IF TLAST_NAME ~= BLANK
THEN
LAST_NAME = TLAST_NAME;
IF TFIRST_NAME ~= BLANK
THEN
FIRST_NAME = TFIRST_NAME;
IF TSTREET_ADDRESS ~= BLANK
THEN
STREET_ADDRESS = TSTREET_ADDRESS;
IF TCITY ~= BLANK
THEN
CITY = TClTY;
IF TSTATE ~= BLANK
THEN
STATE = TSTATE;

o
Appendix C. Coding Examples

IG-251

o

IF TAGE ... = BLANK
THEN
AGE = TAGE;
IF TSTART_DATE ... = BLANK
THEN
START_DATE = TSTART_DATE;
CALL REWRITE;
END;
END;

/*

END UPDATE

/M

PRIM_READ: PROC;
READ FILECEMPMAST) INTOCEMP_RECORD)
KEYCTEMP_NUMBER);
IF IOERR = TRUE THEN
DO;
R_CODE = ONCODE;
PUT LIST('EMPMAST PRIMARY READ HAS FAILED') SKIP;
PUT LIST('KEY = ',TEMP_NUMBER);
PUT LIST('ONCODE = ',R_CODE);
END;
END;
/* END PRIMARY READ
/*

SEC_READ: PROC;
READ FILE(EMPNAME) INTOCEMP_RECORD)
KEY(TLAST_NAME);
IF IOERR = TRUE THEN
DO;
R_CODE = ONCODE;
PUT LIST('EMPMAST SECONDARY READ HAS FAILED') SKIP;
PUT LIST('KEY = ',TLAST_NAME);
PUT LIST('ONCODE = ',R_CODE);
END;
END;
/* END SECONDARY READ
REWRITE: PROC;
IF TRANS_TYPE = 'P'
/* BEGIN REWRITE
THEN
REWRITE FILECEMPMAST) FROMCEMP_RECORD)
KEYCTEMP_NUMBER);
ELSE
REWRITE FILECEMPNAME) FROMCEMP_RECORD)
KEYCTLAST_NAME);
END;

M/

*/

o
IG-2S2

SC34-0404

o

c

INSERT: PROC;
IF TRANS_TYPE = 'P'
THEN
DO;
WRITE FILE(EMPMAST) FROMCTRANSACTIONR)
KEYFROMCTEMP_NUMBER);
IF IOERR = TRUE THEN
DO;
R_CODE = ONCODE;
PUT LIST('EMPMAST SECONDARY INSERTION HAS FAILED')
SKIP;
PUT LISTC'KEY = ',TEMP_NUMBER);
PUT LISTC'ONCODE = ',R_CODE);
END;
END;
ELSE
DO;
WRITE FILECEMPNAME) FROMCTRANSACTIONR)
KEYFROMCTLAST_NAME);
IF IOERR = TRUE THEN
DO;
R_CODE = ONCODE;
PUT LISTC'EMPMAST SECONDARY INSERTION HAS FAILED')
SKIP;
PUT LISTC'KEY = ',TNAME);
PUT LISTC'O~CODE = ',R_CODE);
END;
END;
END;
END PLITEST;

o
Appendix C. Coding Examples

IG-·253

o

SC34-0404

o

BIBLIOGRAPHY

This bibliography lists and summarizes the Event Driven Executive Version
3 library; it should assi st you in usi ng the library as a whole as well as
direct you to the individual books you require.
See the pUblication IBM Serjes!1 Publications Directory, GC34-0361 for a
complete list of Series!1 hardware and programming manuals. This publicat ion lists each vers; on of the Event Dri ven Execut i ve and its ralated
licensed programs, and shows which manuals apply to each version.

EVENT DRIVEN EXECUTIVE LIBRARY
The IBM Series!1 Event Driven Executive library consists of nine
full-sized books, six specialized internals books, and a quick reference
pocket book:

•

IBM Seri es!1
System Guide)

•

IBM Series/1 Event Driven Executive
(or Operator's Reference)

•

-IBM Series!1 Event Driven Executive
(or language Reference)

•

IBM Seri es!1
Event Dri ven Executi ve Communi cat ions and Termi nal
Applications Guide, SC34-170S (or Communications and Terminal Applicati ons Gui de)

•

IBM Series/1 Event Driven Executive Commercial Applications Development Guide, SC34-0381 (or Commercial Applications Development
Guide)

•

IBM Series!1
Event Driven Executive
SC34-1704 (or Program Preparation Guide)

•

IBM Series/1 Event Driven Executive
(or Messages and Codes)

•

IBM Series/! Event Drjven Executive Systems Network Architecture
and Remote Job Entry Guide, SC34-0402 (or Systems Network Architecture and Remote Job Entry Guide)

•

IBM Series!1 Event Driven Executive Indexed Access Method Version 2
Guide, SC34-0404 (or Indexed Access Method Version 2 Guide)

•

IBM Series/! Event Driven Executive
Internal Design)

Event Driven Executive

System Guide, SC34-1702 (or

Operator's Reference, SC34-1703
Language Reference. SC34-1706

Program Preparation Guide,
Messages and Codes, SC34-0403

Internal Design, lY34-0212 (or

Bibliography

IG-255

•

IBM Serjes/1 Event Driven Executive System/370 Channel Attach Program
Internal Desi gn, l Y34-0215 (or System/370 Channel Attach Program
Internal Design),

•

IBM Series/l Event Driven Exec~tive Multiple Terminal Manager Internal Design, LY34-0190 (or Multiple Terminal Manager Internal Design),

•

IBM Ser;es/l Eyent Driven Executiya Indexed Access Method Internal
Design, lY34-0189 (or Indexed Access Method Internal Design),

•

IBM Series/1 Event Driven Executive Indexed Access Method Version 2
Internal Design, LY24-0238 (or Indexed Access Method Version 2 Internal Design)

•

IBM Seri es/1 Event Dri ven Execut i ve Systems Network Arch; tecture
Internal Design, lY34-0615 (or Systems Network Architecture Internal
Design)

•

IBM Series/l Event Drjven Executive Referenca Summary, SX34-0038 (or
Reference SummarY),

IG-256

SC34-0404

o

SUMMARY OF LIBRARY

The System Guide has four parts: Concepts and Facilities, System Generation, Problem Determination, and Data Management.
The concepts and facilities part describes the Event Driven Executive
system and its related products and introduces the capabilities of these
products. . The system generat i on part presents step-by-step procedures
for generating a supervisor tailored to your Series/l hardware configuration and programming needs. The problem determination part explains how
to use Event Driven Executive debugging aids. Data management explains
direct access data sets, tape data sets, partitioned data sets, dynamic
data set allocation, and sensor I/O.

Operator's Reference
Operator's Reference describes:
•

Event Driven Executive utility programs

•

Operator commands

•

Procedures to execute system and application programs

•

The sessi on manager -- a menu-dr; ven interface program that wi 11
invoke the programs required for program development

The operator commands and utilities are presented in alphabetic order and
include detailed syntax and explanations. Also included is a description
of the facilities of the session manager.
Utilities are described either in detail or with a reference to the publication where a more detailed description can be found.

Language Reference
The language Reference familiarizes you with the Event Driven language by
first groupi ng the instruct ions into funct i onal categor i es. Then the
instructions are presented alphabetically, with complete syntax and an
explanation of each operand. Instructi~ns that support special functions
such as 370 Channel Attach are documented in the manual that describes the
function. An appendix summarizes the syntax of all instructions.
The final section of the language Reference contains examples of using the
Event Driven language to code functions such as:

o

•

Program loading

•

User exit routine
Bibliography

IG-257

•

I/O level control program

•

Indexing and hardware register usage

communications and Terminal APplications Guide
The Communications and Terminal Applications Guide introduces the Event
Driven Executive communications and terminal support.
The Communications and Terminal Applications Guide describes:
•

Binary synchronous communications

•

Asynchronous communications

•

The Host Communications Facility

•

Series/l to Series/l Attachment support

•

The Remote Management'Utility

•

The

•

General Purpose Interface Bus support.

System/~70

Channel Attach Program

The Communications and Terminal Applications Gujde contains the utilities
and coding details on Event Driven Language instructions needed for communications support and advanced terminal applications such as graphics.

commercial Applications Development Guide
The Commercial Applications Deyelopment Guid@ describes:

I.

The Indexed Access Method Versi on 1

•

The Multiple Terminal Manager

•

Printer spooling

I.

High Level Language interface to static screen subroutines

The description of the Indexed Access Method explains how to plan~ design,
and build indexed data sets. Also included is information on how to write'
applications that use indexed data sets.
The Multiple Terminal Manager section explains how to write applications
to run under the Multiple Terminal Manager and how to use the Multiple
Terminal Manager.
The description of printer spooling explains how to install and use the
spooling facility, and describes the spool utility and spool operator commands.
IG-258

o

Program Preparation Guide
The Program Preparation Guide describes:
•

The Event Driven Language compiler

•

The Series/l assembler

•

The host assembler

•

The linkage editor

•

The object program converter (native and host)

•

The data set and overlay prefind utility

SNA and Remote Job Entry Gu; de
Systems Network Architecture and Remote Job Entry Guide describes the Systems Network Archi tecture serv ices and funct ions that are ava i labIa
through a high-level instruction set, and explains Systems Network Architecture formats and protocols. The manual also describes how to use the
Systems Network Architecture Remote Job Entry utility.

Messages and Codes
Messages and Codes describes many of the informational, warning, and error
messages produced by the Event Driven Executive system and its related
products. The manual also contains return codes, completion codes, and
post codes issued by these products.

Indexed Access Method Version 2 Guide
This manual describes Version 2 of the Indexed Access Method. It explains
how to set up and access an indexed fi Ie, and how to use the Indexed Access
Method utilities. The manual also contains examples of using the Indexed
Access Method in Event Driven Language, COBOL, and PL/I programs.

Internal Designs
Internal Desi gn descri bes the internal logi c flow and, speci fi cat; ons of
the Event Driven Executive system so that you can understand how the system interfaces with application programs. It familiarizes you with the
design and implementation by describing the purpose, function, and operation of the various Event Driven Executive system programs.

o

Multiple Terminal Manager Internal Design, System/3'70 Channel Attach
Internal Design, Indexed Access Method Internal Design, Indexed Access
Method Version 2 Internal Design, -and Systems NetwotkArchitecture Inter-

Bibliography

IG-259

nal Design describe the internal logic flow and specifications of these
programs.

o

Unlike the other manuals in the library, the Internal Design books contain
material that is the licensed property of IBM and they are available only
to licensed users of the products that they describe.

Reference summary
The Reference Summary is a pocket-sized booklet to be used for quick reference.
It lists the Event Dr; ven Language instruct; ons wi th thei r
syntax, the uti Ii ty and program preparat; on commands, and completi on,
post, and return codes.

OTHER EVENT DRIVEN EXECUTIVE PROGRAMMING PUBLICATIONS
The following is a list of Event Driven Executive publications that you
may need to code application programs in languages other than the Event
Driven Language.
•

IBM Series/! FORTRAN IV Language Reference, GC34-0133.

•

IBM Series/!
SC34-0315.

•

IBM Series/1 Mathematical and Functional Subroutine Library User's
Guide, SC34-0139.

•

IBM Series/1
GC34-0!47.

•

IBM Series/! Event Driven Executjve PL/I User's Guide, SC34-0148.

•

IBM Serjes/! COBOL Language Reference, GC34-0234.

I.
•

I·

IBM Series/1

Event

Event

Drjven

Driven

Executive

FORTRAN

Executive

PL/I

IV

User's

Language

Guide,

Reference,

COBOL Version 2 Language Reference, SC34-0392

IBM Series/!
SL23-00!4.

Event

Driven

Executive

IBM Serj es/! Event Dri ven Execut i ve
Guide, SC34-0393

COBOL

Programmer's

COBOL Versi on 2 Programmer's

•

IBM
Series/l
Event
Reference,GC34-0317.

•

IBM Series/! Macro Assembler Reference Summary, SX34-0128

Driven

Guide,

Executive

Macro

Assembler

o
IG-260

SC34-0404

o

OTHER pROGRAMMING PUBLICATIONS
The following publications may be required for reference.
•

IBM Ser;es/l Programming System Summary, GC34-0285.

•

IBM Series/l Event Driven Executive Study Guide, SR30-0436.

•

IBM Data Processing Glossarv, GC20-1699.

I.

C'

i
!

DOS/VS Tape labels Manual, GC33-5374

•

IBM Series/l Event Driven Executive Sort/Merge Programmer's Gujde,
Sl23-0016

•

IBM Series/l Data Collection
User's Guide, SC34-1654.

•

IBM Se.ries/l Host Communications Facility Program Description Manual,
SH20-1819.

•

IBM OS/VS Basic Telecommunications Access Method (BTAM), GC27-6980.

•

General Information -- Binary Synchronous Communications, GA27-3004.

•

IBM System/370

Interactive Programming RPQ

P82600

Program Preparation Facility, SB30-1072.

SERIES/l SYSTEM LIBRARY PUBLICATIONS
The following pUblications contain hardware-related information.

o

•

IBM Series/l
GA34-0084.

4952

Processor

and Processor

Features Description,

•

IBM Series/l
GA34-0022.

4953

Processor

and Processor

Features

•

IBM Series/l
GA34-0021.

4955

Processor

and Processor

Features Description,

•

IBM Series/l Communications Features Description, GA34-0028.

•

IBM 3101 Display Terminal Description, GA18-2033.

•

IBM Series/l 4962 Disk
Description, GA34-0024.

•

IBM Series/l 4963 Disk Subsystem Description, GA34-0051.

•

IBM Series/l 4966 Diskette Magazine Unit Description, GA34-0052 ..

•

IBM Series/l 4969 Magnetic Tape Subsystem Descriptjon, GA34-0087.

Storage

Unit

and

4964

Description,

Diskette

Bibliography

Unit

IG-261

o

•

IBM Series/l 4973 Line Printer Description, GA34-0044.

•

IBM Series/l 4974 Prjnter Description, GA34-0025.

•

IBM Series/l 4978-1 Display Station (RP9 D02055) and Attachment (RP9
D02038) General Informatjon, GA34-1550

•

IBM Series/l 4978-1 Display Stat jon, Keyboard (RP9 D02056) General
Information, GA34-1551

•

IBM Series/l 4978-1 Display Station, Keyboard (RP9 D02057) General
Information, GA34-1552

•

IBM Series/l 4978-1 Display Station Keyboards (RP9 D02064 and D02065)
General Information, GA34-1553

•

IBM Series/! 4979 Display Station Descriptjon, GA34-0026

•

IBM Series/l 4982 Sensor Input/Output Unit Description, GA34-0027

•

IBM Diskette - General Information Manual, GA21-9182

•

IBM Seri es/l General
D02118, GA34-1556

•

IBM Seri es/l to Seri es/l
Feature, GA34-1561

•

IBM Series/l System/370 Channel Attachment Feature and 4993 Modell
Series/l System/370 Termination Enclosyre Description, GA34-00S7

•

IBM Series/l Data Collection Interactive RPQs D02312, D02313, and
002314 Custom Feature, GA34-1567

Purpose Interface Bus
Attachment

(GPIB)

RPgs D02241

Adapter - RPg

& D02242 Custom

o
IG-262

SC34-0404

o

GLOSSARV OF TERHS AND ABBREVIATIONS

This glossary contains terms and abbreviations used in the Series/l Event
Driven Executive software pUblications. All software and hardware terms
are Series/1 oriented. This glossary also serves as a supplement to the
IBM Data Processing Glossarv (GC20-1699).

$SVSLOGA, $SVSLOGB:

The nama of
the alternate system logging
device. This device is optional
but, if defined, should be a terminal with keyboard capability, not
just a printer.

$SVSLOG:

c

The name of the system
logging device or operator
station; must be defined for every
system. It should be a terminal
with keyboard capability, not just
a printer •.

$SYSPRTR:

The name of the system

printer.

ACCA:

See asynchronous communications control adapter.

address key: Identifies a set of
Series/l segmentation registers
and represents an address space.
It is one less than the partition
number.
address space: The logical storage identified by an address key.
An addressspaca is the storage for
a partition.

o

application program manager: The
component of the Multiple Terminal
Manager that provides the program
management facilities required to
process user requests. It controls
the contents of a program area and
the execution of programs within
the area.
application program stub: A collection of subroutines that are

appended to a program by the linkage editor to provide the link from
the application program to the Multiple Terminal Manager facilities.
asynchronous communications control adapter: An ASCII terminal
attached via 11610, #2091 with
12092, or 12095 with 12096
adapters.
attention list: A series of pairs
of 1 to 8 byte EBCDIC strings and
addresses pointing to EDl
instructions. When the attention
key is pressed on the terminal, the
operator can enter one of the
strings to cause the associated EDl
instructions to be executed.
backup: .A copy of data to be used
in the event the original data is
lost or damaged.
base record slots: Space in an
indexed file that is reserved for
based records to be placed.
base
into
mode
with

records: Records are placed
an indexed file while in load
or inserted in process mode
a new high key.

basic exchange format: A standard
format for exchanging data on diskettes between systems or devices.
binary synchronous device data
block (BSeDDB): A control block
that provides the information to
control one Series/1 Binary Synchronous Adapter. It determines·
Glossary

IG-263

the line characteristics and provides dedicated storage for that
line.

tion immediately sends a character
when a keyboard key is pressed.

cluster:

block:

(1) See data block or index
block. (2) In the Indexed Method,
the unit of space used by the
access method to contain indexes
and data.

block mode:

The transmission mode
in which the 3101 Display Station
transmits a data data stream, which
has been edited and stored, when
the SEND key is pressed.

BSCOOB:

See binary synchronous
device data block.

In an indexed file, a
group of data blocks that is pointed to from the same primary-level
index block, and includes the primary-level index block. The data
records arid blocks contai ned ina
cluster are logically contiguous,
but are not necessarily physically
contiguous.

COO (change of direction):

A character used with ACCA terminal to
indicate a reverse in the direction
of data movement.

cold start:
buffer:

An area of storage that is
temporarily reserved for use in
performing an inputloutput operation, into which data is read or
from which data is written. See
input buffer and output buffer.

bypass label processing:

Access
of a tape without any label processing support.

CCB:

See terminal control block.

central buffer:

The buffer used by
the Indexed Access Method for all
transfers of information between
main storage and indexed files.

Starting the spool
facility by erasing any spooled
jobs remaining in the spool data
set from any previous spool
session.

command:

A character string from a
source external to the system that
represents a re~uest for action by
the system.

common area: A user-defined data
area that is mapped into every partition at the same address. It can
be used to contain control blocks
or data that will be accessed by
more than one program.
completion code:

character image:

An alphabetic,
numeric, or special character
defined for an IBM 4978 Display
Station. Each character image is
defined by a dot matrix that is
coded into eight bytes.

character image table:

An area
containing the 256 character
images that can be defined for an
IBM 4978 Display Station. Each
character image is coded into eight
bytes, the entire table of codes
requiring 2048 bytes of storage.

An indicator
that reflects the status of the
execution of a program. The completion code is displayed or printed on the program's output device.

controller:

A device that has the
capability of configuring the GPIB
bus by designating which devices
are active, which devices are listeners, and which device is the
talker. In Seriesl1 GPIB implementati on, the Seri esl1 is always the
controller.

conversion:
character mode:

The transmission
mode in which the 3101 Display Sta10-264

SC34-0404

See update.

/

\.

'oj

o

cross part;t;on serv;ce: A function that accesses data in two partitions.
data block: In an indexed file, an
area that contains control information and data records. These
blocks are a multiple of 256 bytes.

d;rectory control entry (DCE):
The first 32 bytes of the first
record of a directory in which a
description of the directory is
stored.

data record: In an indexed file,
the records containing customer
data.

d;rectory member entry (DHE): A
32-byte directory entry describing
an allocated data set or volume.

data set: A group of records within a volume pointed to by a directory member entry in the directory
for the volume.

d;sk data block (DDS): A control
block that describes a direct
access volume.

data set control block (DSCB): A
control block that provides the
information required to access a
data set, volume or directory using
READ and WRITE.

C:

data set shut down: An indexed
data set that has been marked (in
main storage only) as unusable due
.to an error.
DCE:

See directory control entry.

DDB:

See disk data block.

d;rect access: (1) The access
method used to READ or WRITE
records on a disk or diskette
device by specifying their
location relative the beginning of
the data set or volume. (2) In the
Indexed Access Method, locating
any record via its key without
respect to the previous operation.
(3) A condition in terminal I/O
where a READTEXT or a PRIHTEXT is
directed to a buffer which was previously enqueued upon by an IOCB.

o

primary and secondary indexed
files (secondary index support).

d;rectory: (1) A series of contiguous records in a volume that
describe the contents in terms of
allocated data sets and free
spaces. (2) For the Indexed Access
Method Version 2, a data set that
defines the relationship between

d;splay station: An IBM 4978,
4979, or 3101 display terminal or
similar terminal with a keyboard
and a video display.

DHE:
DSCB:

See directory member entry.
See data set control block.

dynam;c storage: An increment of
storage that is appended to a program,when it is loaded.
end-of-data ;nd;cator: A code
that signals that the last record
of a data set has been read or
written. End-of-data is determined by an end-of-data pointer in
the DME or by the physical end of
the data set.
ECB:

See event control block.

EDL:

See Event Driven Language.

emulator: The portion of the Event
Driven Executive supervisor that
interprets EDL instructions and
performs the function specified by
each EDL statement.
end-of-tape (EOT): A reflective
marker placed near the end of a
tape and sensed during output. The
marker signals that the tape is
nearly full.

Glossary

IG-265

event control block (ECB): A control block used to record the status (occurred or not occurred) of
an event; often used to synchronize
the execut i on of tasks. ECBs are
used in conjunction with the WAIT
and POST instructions.
event driven language (EDL): The
language for input to the Event
Driven Executive compiler
($EDXASM), or the Macro and Host
assemblers in conjunction with the
Event Driven Executive macro
libraries. The output is interpreted by the Event Driven
Executive emulator.
EXIO (execute input or output):
EDl facility that provides user
controlled access to Series/l
input/output devices.

An

external label: A label attached
to the outsi de of a tape that i dentifies the tape visually. It usually contains items of
identification such as file name
and number, creation data, number
of volumes, department number, and
so on.
external name (EXTRN): The 1- to
8-character symbolic EBCDIC name
for an entry point or data field
that isnot defined within the module that references the name.

FCA:

See file control area.

FeB:

See file control block.

file control block (FCB): The
first block of an indexed file. It
contains descriptive information
about the data contained in the
file.
file control block extension: The
second block of an indexed file.
It contains the file definition
parameters used to define the file.
file manager: A collection of subroutines contained within the program manager of the Multiple
Terminal Manager that provides
common support for all disk data
trans'fer operat ions as needed for
transaction-oriented application
programs. It supports indexed and
direct files under the control of a
single callable function.
formatted screen image: A collection of display elements or display groups (such as operator
p~ompts and field input names and
areas) that are presented together
at one time on a display device.
free pool: In an indexed data set,
a group of blocks that can be used
for either data blocks or index
blocks. These differ from other
free blocks in that these are not
initially assigned to specific
logical positions in the file.
free space: In an indexed file,
records blocks that do not currently contain data. and are available
for use.

file: A set of related records
treated as a logical unit.
Although file is often used interchangeably with data set, it usually refers to an indexed or a
sequential data set.

free space entry (FSE): An 8-byte
directory entry defining an area of
free space within a volume or a
device.

file control area (FCA): A Multiple Terminal Manager data area that
describes a file access request.

general purpose interface bus:
The IEEE Standard 488-1975 that
allows various interconnected
devices to be attached to the GPIB
adapter (RPQ 002118).

IG-266

SC34-0404

FSE:

See free space entry.

c

o

GPIB: See general purpose interface bus.

group:

A unit of 100 records in
the spool data set allocated to a
spool job.

H exchange format:

A standard format for exchanging data on diskettes between systems or devices.

hardware timer:

The timer features available with the Series/1
processors. Specifically, the
7840 Timer Feature card or the
native timer (4952 only). Only one
or the other is supported by the
Event Driven Executive.

immediate data: A self-defining
term used as the operand of an
instruction. It consists of numbers, messages or values which are
processed directly by the computer
and which do not serve as addresses
or pointers to other data in storage.
index: In an indexed file, an
ordered collection of pairs of keys
and pointers, used to sequence and
locate records.
index block: In an indexed file,
an area that contains control
information and index entries.
These blocks are a multiple of 256
bytes.

host assembler:

C·)

The assembler
licensed program that executes in a
370 (host) system and produces
object output for the Series/1.
The source input to the host assembler is coded in Event Driven
language or Series/l assembler
language. The host assembler
refers to the System/370 Program
Preparation Facility (5798-NNQ).

indexed access method: An access
method for direct or sequential
processing of fixed-length records
by use of a record's key.

host system:

indexed data set:

Any system whose
resources are used to perform services such as program preparation
for a Series/I. It can be connected to a Series/l by a communications link.
IACB: See indexed access control
block.
IAR: See instruction address register.
ICB: See indexed·access control
block.

lIB: See interrupt information
byte.

o

image store: The area in a 4978
that contains the character image
table.

indexed access control block
(IACS/ICB): The control block
that relates an application program to an indexed file.

Synonym for

indexed file.

indexed file: A file specifically
created, formatted and used by the
Indexed Access Method. An indexed
file is sometimes called an indexed
data set.
index entry: In an indexed file, a
key-pointer pair, where the pointer is used to locate a lower-level
index block or a data block.
index register (11, 12): Two words
defined in EDl and contained in the
task control block for each task.
They are used to contain data or
for address computation.
input buffer:

(1) See buffer.

(2)
In the Multiple Terminal Manager,
an area for terminal input and output.

Glossary

IG-267

input output control block
(IOCB): A control block containing information about a terminal
such as the symbolic name, size and
shape of screen, the size of the
forms in a printer, or an optional
reference to a user provided
buffer.
instruction address register
(IAR): The pointer that identifies the instruction currently
being executed. The Series/l maintains a hardware IAR to determine
the Series/l assembler instruction
being executed. It is located in
the level status block (lSB).
interactive: The mode in which a
program conducts a continuous
dialogue between the user and the
system.
internal label: An area on tape
used to record identifying information (similar to the identifying
information placed on an external
label). Internal labels are
checked by the system to ensure
that the correct volume is mounted.
interrupt information byte (lIB):
In the Multiple Terminal Manager, a
word containing the status of a
previous input/output request to
or from a terminal.
invoke: To load and activate a
program, utility, procedure, or
subroutine.
job: A collection of related program execution requests presented
in the form of job control statements, identified to the jobstream
processor by a JOB statement.
job control statement: A statement in a job that specifies
requests for program execution,
program parameters, data set definitions, sequence of execution,
and, in general, describes the

IG-268

SC34-0404

environment required to execute
the program.

o

job stream processor: The job processing facility that reads job
control statements and processes
the requests made by these statements. The Event Driven Executive
job stream processor is $JOBUTIl.
jumper: A wire or pair of wires
which are used for the arbitrary
connection between two circuits or
pins in an attachment card.
key: In the Indexed Access Method,
one or more consecutive characters
used to identify a record and
establish its order with respect to
other records. See also key field.
See also key field.
key field: A field, located in the
same position in each record of an
indexed file, whose content is used
for the key of a record.
level status block (LSB): A
Series/l hardware data area that
contains processor status.
library: A set of contiguous
records within a volume. It.contains a directory, data sets and/or
available space.
line: A string of characters
accepted by the system as a single
input from a terminal; for example,
all characters entered before the
carriage return on the teletypewriter or the ENTER key on the
display station is pressed.
link edit: The process of resolving external symbols in one or more
object modules. A 11nk edit can be
performed with $EDXlINK, whose
output is a loadable program, or
with $lINK, whose output is a single, composite object module that
is the input to the update process.

c

o

listener: A controller or active
device on a GPIB bus that is configured to ~ccept information from
the bus.

multifile volume: A unit of
recording media, such as tape'reel
or disk pack, that contains more
than one data file.

load mode: In the Indexed Access
Method, the mode in which records
are loaded into base record slots
in an indexed file.

multiple terminal manager: An
Event Driven Executive licensed
program that provides support for
transaction-oriented applications
on a Series/I. It provides the
capability to define transactions
and manage the programs that support those transactions. It also
manages multiple terminals as
needed to support these transactions.

load module: A single module having cross references resolved and
prepared for loading into storage
for execution. The module is the
output of the $UPDATE or $UPDATEH
utility.
load point: (1) Address in the
partition where a program is
loaded. (2) A reflective marker
placed near the beginning of a tape
to indicate where the first record
is written.

c

lock: In the Indexed Access
Method, a method of indicating that
a record or block is in use and is
not available for another request.
logical screen: A screen defined
by margin settings, such as the
TOPM, BOTM, LEFTM and RIGHTM parameters of the TERMINAL or IOCB
statement.

LSI:

See level status block.

member: A term used to identify a
named portion of a partitioned data
set (PDS). Sometimes member is
also used as a synonym for a data
set. See data set.
menu: A formatted screen image
containing a list of options. The
user selects an option to invoke a
program.

o

menu-driven: The mode of processing in which input consists of the
responses to prompting from an
option menu.

multivolume file: A data file
that, due to its size, requires
more than one unit of recording
media (such as tape reel or disk
pack) to contain the entire file.
new high key: A key higher than
any other key in an indexed file.
non-labeled tapes: Tapes that do
not contain identifying labels (as
in standard labeled tapes) and contain only files separated by tapemarks.
null character: A user-defined
character used to define the unprotected fields of a formatted
screen.
option selection menu: A full
screen display used by the Session
Manager to point to other menus or
system functions, one of which is
to be selected by the operator.
(See primary option menu and secondary option menu.)
output buffer: (1) See buffer.
(2) In the Multiple Terminal Manager, an area used for screen output
and to pass data to subsequent
transaction programs.
overlay: The technique of reusing
a single storage area allocated to
a program during execution. The
Glossary

IG-269

storage area can be reused by loading it with overlay programs that
have been specified in the PROGRAM
statement of the program or by
calling overlay segments that have
been specified in the OVERLAY
statement of $EDXLINK.
overlay area: A storage area within a program reserved for overlay
programs specified in the PROGRAM
statement or overlay segments specified in the OVERLAY statement in
$EDXLINK.
overlay program: A program in
which certain control sections can
use the same storage location at
different times during execution.
An overlay program can execute concurrently as an asynchronous task
with other programs and is specified in the EDL ~ROGRAM statement
in the main program.
overlay segment: A self-contained
portion of a program that is called
and sequentially executes as a synchronous task. The entire program
that calls the overlay segment need
not be maintained in storage while
the overlay segment is executing.
An overlay segment is specified in
the OVERLAY statement of $EDXLINK.
parameter select;on menu: A full
screen display used by the Session
Manager to indicate the parameters
to be passed to a program.
part;t;on: A contiguous
fixed-sized area of storage. Each
partition is a separate address
space.
phys;cal timer:
ware timer.

primary f;le: An indexed file containing the data records and primary index.
pr;mary f;le entry: For the
Indexed Access Method Version 2, an
entry in the directory describing a
primary file.
pr;mary ;ndex: The index portion
of a pri mary fi Ie. Thi sis used to
access data records when the primary key is specified.
pr;mary key: In an indexed file,
the key used to uniquely identify a
data record.
pr;mary-Ievel index block: In an
indexed file, the lowest level
index block. It contains the relative block numbers CRBNs) and high
keys of several data blocks. See
cluster.
pr;mary menu: The program
selection screen displayed by the
Multiple Terminal Manager.
primary option menu: The first
full screen display provided by the
Sessi on Manager.
primary task: The first task executed by the supervisor when a program is loaded into storage. It is
identified by the PROGRAM statement.

Synonym for hard-

post code: An indicator returned
to the event control block to indicate the completion of a wait or an
event.

IG-270

prefind: To locate the data sets
or overlay programs to be used by a
program and to store the necessary
information so that the time
required to load the prefound items
is reduced.

SC34-0404

pr;or;ty: A combination of hardware interrupt level priority and a
software ranking within a level.
Both primary and secondary tasks
will execute asynchronously within
the system according to the priority assigned to them.

o

o

process mode:

In the Indexed
Access Method, the mode in which
records can be retrieved, updated,
inserted or deleted.

queue descriptor (QD):

A control
block describing a queue built by
the DEFINEQ instruction.

queue element (QE):
processor status word (PSW):

A

16-bit register used to (1) record
error or exception conditions that
may prevent further processing and
(2) hold certain flags that aid in
error recovery.

program:

A disk- or
diskette-resident collection of
one or more tasks defined by a PROGRAM statement; the unit that is
loaded into storage. (See primary
task and secondary task.)

An entry in
the queue defined by the queue
descriptor.

record: (1) The smallest unit of
direct access storage that can be
accessed by ~n application program
on a disk or diskette using READ
and WRITE. Records are 256 bytes
in length. (2) In the Indexed
Access Method, the logical unit
that is transferred between $IAM
and the user's buffer. The length
of the buffer is defined by the
user.

program header:

The control block
found at the beginning of a program
that identifies the primary task,
data sets, st~rage requirements
and other resources required by a
program.

program/storage manager:

A component of the Multiple Terminal Manager that controls the execution
and flow of application programs
within a single program area and
contains the support needed to
allow multiple operations and
sharing of the program area.

recovery: The use of backup data
to recreate data that has been lost
or damaged.
reflective marker:

A small adhesive marker attached to the reverse
(nonrecording) surface of a reel of
magnetic tape. Normally, two
reflective markers are used on each
reel of tape. One indicates the
beginning of the recording area on
the tape (load point), and the other indicates the proximity to the
end of the recording area (EOT) on
the reel.

protected field:

A field in which
the operator cannot use the keyboard to enter, modify, or erase
data.

PSW:

See processor status word.

QCB:

See queue control block.

QD:

See queue descriptor.

QE:

See queue element.

queue control block (QCB): A data
area used to serialize access to
resources that cannot be shared.
See serially reusable resource.

relative record number:

An integer value identifying the position
of a record in a data set relative
to the beginning of the data set.
The first record of a data set is
r~cord one, the second is record
two, the third is record three.

reorganize:

The process of copying the data in an indexed file to
another indexed file in a manner
that rearranges the data for more
optimum processing and free space
distribution.

restart: Starting the spool
facility by processing spool jobs

Glossary

IG-271

remalnlng in the spool data set
from any previous spool session.
return code: An indicator that
reflects the results of the execution of an instruction or subroutine. The return code is placed in
the task code word (at the beginning of the task control block).
roll screen: A display screen
which is logically segmented into
an optional history area and a work
area. Output directed to the
screen starts di splay at' the begi nn i ng of the work area and cont i nues
on down in a line-by-line sequence.
When the work area gets full, the
operator presses ENTER/SEND and
its contents are shifted into the
optional history area and the work
area itself is erased. Output now
starts agai n at the begi nni ng of
the work area.

SBIDCB:

See sensor based I/O control block.

second-level index block: In an
indexed data set. the
second-lowest level index block.
It contai ns the addresses and hi gh
keys of several primary-level
index blocks.
secondary file.:
index.

See secondary

secondary index: For the Indexed
Access Method Version 2. an indexed
file used to access data records by
their· secondary keys. Sometimes
called a secondary file.
secondary index entry: For the
Indexed Access Method Version 2,
this an an entry in the directory
describing a secondary index.
secondary key: For the Indexed
Access Method Versi on 2. the key
used to uniquely identify a data
record.

IG-272

SC34-0404

secondary option menu: In the Session Manager, the second in a
series of predefined procedures
grouped together in a hierarchical
structure of menus. Secondary
option menus provide a breakdown of
the functions available under the
session manager as specified on the
primary option menu.
secondary task: Any task other
than the primary task. A secondary
task must be attached by a primary
task or another secondary task.
sector: The smallest addressable
unit of storage on a disk or diskette. A sector on a 4962 or 4963
disk is equivalent to an Event Driven Executive record. On a 4964 or
4966 diskette, two sectors are
equivalent to an Event Driven Executive record.
sensor based I/O control block
rSBIDCB): A control block containing information related to
sensor I/O operations.
sequential access: The processing
of a data set in order of occurrence of the records in the data'
set. (1) In the Indexed Access
Method, the prodessing of records
in ascending collating sequence
order of the keys. (2) When using
READ/WRITE, the processing of
records in ascending relative
record number sequence.
serially reusable resource (SRR):
A resource that can only be
accessed by one task at a time.
SeriallY reusable resources are
usually managed via (1) a QeB and
ENQ/DEQ statements or (2) an ECB
and WAIT/POST statements.
service request: A device generated signal used to inform the GPIB
controller that service is
required by the issuing device.

c

o

session manager: A series of predefined procedures grouped together as a hierarchical structure of
menus from which you select the
utility functions, program preparation facilities, and language
processors needed to prepare and
execute application programs. The
menus consist of a primary option
menu that displays functional
groupings and secondary option
menus that display a breakdown of
these functional groupings.
shared resource: A resource that
can be used by more than one task
at the same time.
shut down:

(~.~

See data set shut down.

source module/program: A collection of instructions and statements that constitute the input to
a compiler or assembler. Statements may be created or modified
using one of the text editing
facilities.

/

1

il

supervisor: The component of the
Event Driven Executive capable of
controlling execution of both system and application programs.
system configuration: The process
of defining devices and features
attached to the Series/I.
SYSGEN:

See system generation.

system generation: The processing
of user selected options to create
a supervisor tailored to the needs
of a specific Series/l configuration.
system partition: The partition
that contains the supervisor (partition number 1, address space 0).

spool session: An inv~cation and
termination of the spool facility.

talker: A controller or active
device on a GPIB bus that is configured to be the source of information (the sender) on the bus.

See service request.

standard labels: Fixed length
SO-character records on tape containing specific fields of information (a volume label identifying
the tape volume, a header label
preceding the data records, and a
trailer label following the data
records).

',1

subroutine: A sequence of
instructions that may be accessed
from one or more points in a program.

spool lob: The set of print
records generated by a program (including any overlays) while
engueued to a printer designated as
a spool device.

SRQ:

0

to prevent accidental overlay by
input data. Areas defined a~ input
areas are not protected and are
usually filled in by an operator.
The entire screen is treated as a
page of information.

static screen: A display screen
formatted with predetermined protected and unprotected areas.
Areas defined as operator prompts
or input field names are protected

tapemark: A control character
recorded on tape used to separate
files.
task: The basic executable unit of
work for the supervisor. Each task
is assigned its own priority and
processor time is allocated
according to this priority. Tasks
run independently of each other and
compete for the system resources.
The first task of a program is the
primary task. All tasks attached
by the primary task a~e secondary
tasks.

Glossary

IG-273

task code word: The first two
words (32 bits) of a task's TCB;
used by the emulator to pass information from system to task regarding the outcome of various operations, such as event completion or
arithmetic operations.

terminal server: A group of programs that perform all the
input/output and interrupt handling functions for terminal devices
under control of the Multiple Terminal Manager.
terminal support:

task control block (TCB):

A con-

trol block that contains information for a task. The information
consists of pointers, save areas,
work areas, and indicators
required by the supervisor for controlling execution of a task.

task supervisor:

The portion of
the Event Driven Executive that
manages the dispatching and
switching of tasks.

TCB:

See task control block.

The support
provided by EDX to manage and control terminals. See terminal.

trace range:

A specified number of
instruction addresses within which
the flow of execution can be
traced.

transaction oriented
applications: Program execution
driven by operator actions, such as
responses to prompts from the system. Specifically, applications
executed under control of the Multiple Terminal Manager.

terminal:

A physical device
defined to the EDX system using the
TERMINAL configuration statement.
EDX terminals include directly
attached IBM displays, printers
and devices that communicate with
the Series/l in an asynchronous
manner.

terminal control block (CeB):

A

control block that defines the
device characteristi~s, provides
temporary storage, and contains
links to other system control
blocks for a particular tar-minal.

terminal environment block (TEB):
A control block that contains
information on a terminal's attributes and the program manager operating under the Multiple Terminal
Manager. It is used for processing
requests between the terminal servers and the program manager.

terminal screen managert

The component of the Multiple Terminal
Manager that controls the presentation of screens and communications between terminals and
transaction programs.
IG-274

SC34-0404

transaction program: See transaction-oriented applications.
transaction selection menu:

A

Multiple Terminal Manager display
screen (menu) offering the user a
choice of functions, such as reading from a data file, displaying
data on a terminal, or waiting for,
a response •. Based upon the choice
of option, the application program
performs the requested processing
operation.

unprotected field: A field in
whi ch the operator can use the keyboard to enter, modify or erase
data. Also called non-protected
field.
update:

(1) To alter the contents
of storage or a data set. (2) To
convert object modules, produce~
as the output of an assembly or
compilation, or the output of the
linkage editor, into a form that
can be loaded into storage for program execution and to update the

o

directory of the volume on which
the loadable program is stQred.

(1) Assembly language
i nstructi ons included as part of an
EDL program and invoked via the
USER instruction. (2) A point in
an IBM-supplied program where a
user written routine can be given
control.

device. (2) To place a disk or
diskette in a state where it is
unknown by the system.

user exit:

(1) To change the
status of a dey ice from onl i ne to
offline. When a device is offline,
no data set can be accessed on that

vary online: To place a device in
a state where it is available for
use by the system.
volume:

A disk, diskette. or tape
subdivision defined using $IHITDSK
or $TAPEUTI.

vary offline:

volume label:

A label that uniquely identifies a single unit of storage med; a.

C\
/

o
Glossary

IG-275

IG-276

SC34-0404

COMMON INDEX

This index is common to the Event Driven Executive library. It is a
combi nati on of entri es from the publ i cati ons 1 i sted below. Each entry
references all of the publ i cat ions that conta in i nformat i on about the
entry, so this index provides a cross-reference between the publications.
Each page number entry contains a single or double letter prefix which
identifies the publication where the subject can be found.
The letter
prefixes have the following meanings:
•

AM

= Indexed Access Method Internal Design (Version 1)

•

CA

•

CT

•

ID

= Commercial Applications Development Guide
= Communications and Terminal Application Guide
= Internal Design

•

IG

= Indexed

•

•

= Indexed Access Method Version 2 Internal Design
LR = Language Reference
M = Multiple Terminal Manager Internal Design

•

MC

•

= Operator's Reference
PP = Program Preparation Guide
SG = System Guide
SI = SNA Internal Design
SM = Sort/Merge Programmer's Guide
SN = SNA and Remote Job Entry Guide
T = S/370 Channel Attach Internal Design

•

c

•
•
•
•
•
•

Access Method Verst on 2 Gui de

1M

= Messages

and Codes

OR

o
IG-277

Special Characters
$$EDXIT task error exit routine
description 5G-253
extending the routine 5G-255
output example 5G-254
using 5G-254
$$EDXLIB system name 5G-284
$$EDXVOL system name LR-268,
5G-284
$A operator command OR-24, 5G-61
$AUTO data set PP-87, 5G-420
$B operator command OR-26, 5G-61
$B5CTRCE utility CT-235, OR-90,
5G-63
$B5CUT1 utility CT-237, OR-91,
5G-63
$B5CUT2 utility CT-239, OR-92,
5G-63
$C operator command OR-27, 5G-61
$CAPGM program CT-382
$CHANUT1 utility
commands
CA change device
address CT-409
EN terminate utility CT-409
PR pri nt trace area CT-409
5P stop channel attach
device CT-410
5T start channel attach
device CT-410
TR enable/disable
trace CT-410
description CT-408, OR-94
function 5G-63
invoking CT-408
$COBOL utility 5G-66
$COMPRE5 utility OR-95, 5G-63
$COPY utility OR-100, 5G-63
$COPYUT1 utility OR-lll, 5G-63
$CP operator command
function 5G-61
syntax OR-29
$D operator command OR-30, 5G-61
$DA50I utility OR-119, 5G-63
$DEBUG ut i 1 i ty
description OR-142
with PA5STHRU ($RMU) CT-314
$DICOMP display composer
command descriptions CT-165
create partititioned data set
member 5G-322
function SG-65
invoking CT-165
overview OR-165
$DIINTR utility CT-186, OR-167,
5G-65
$DI5KUT1 utility
command description OR-168
create partititioned data
set 5G-322
function 5G-63
used with $MIGAID
utility 5G-441
$DI5KUT2 utility
commands OR-181
description OR-180
function SG-63
printing I/O error logs 5G-258
$DI5KUT3 program
description 5G-339
function 5G-57
IG-278

5C34-0404

input to 5G-340
request block contents 5G-341
return codes MC-225, 5G-343
Version 3 conversion considerations 5G-435
$DIUTIl utility CT-192, OR-191,
5G-322
$DUMP utility OR-193, 5G-65
$E operator command
function 5G-61
with spool writer
active CA-407
$EDIT1/$EDIT1N text editors
control keys OR-202
data set requirements OR-199
function 5G-64
line editing commands OR-235
overview OR-199
$EDXA5M Event Driven Language
compiler
completion codes MC-208, PP-21
control statements ID-243
description PP-11
example 5G-414
function 5G-66
internals ID-233
invoking
with $JOBUTIL PP-19
wi th $l PP-15
with session manager PP-18
language control data
set PP-12
1 i st i ng program
($EOXlI5T) PP-24
'multiple overlay areas 10-249
options PP-13
output PP-20
overlay programs ID-246
overview PP-11, 5G-71
required data sets PP-11
syntax checking 10-246
use considerations
$COPY definitions PP-22
instructions requiring
support modules PP-23
using the compiler PP-13
work data set 10-275
$EOXAT5R supervisor routine ID-39
$EDXOEF hardware configuration
editing 5G-180
internals ID-8
storage map ID-8
$EDXl language control data
set PP-12
command syntax
$EOXlINK AUTOCAll control statement PP-51
$EDXlINK comment control
statement PP-51
$EOXlINK completion codes MC-209,
PP-73
$EOXlINK control statements PP-49
$EDXlINK COpy control
statement PP-52
$EOXlINK data sets PP-48
$EDXlINK ENO control
statement PP-53
$EDXLINK INCLUDE control
statement PP-53
$EOXLINK lINK control
statement PP-54
$EOXlINK linkage editor
$JOBUTIl interface PP-65
$l interactive interface PP-62

to"
"

J

o

o

$L non-interactive
interface PP-61
advantages SG-74
AUTOCALL option
data set PP-74
data set record
format PP-74
processing PP-75
system data set PP-75
completion codes MC-209
control statements
AUTOCALL PP-51
comment PP-51
COPY PP-52
END PP-53
INCLUDE PP-53
LINK PP-54
OVERLAY PP-55
RESET PP-56
VOLUME PP-56
data sets PP-48
description OR-241
function SG-66
interactive $JOBUTIL
interface PP-67
interactive session manager
interface PP-68
internals
ESD item types ID-300
hash table ID-304
include table ID-306
modules ID-311
OCT table entry ID-309
invoke usi ng
$JOBUTIL PP-65
$JOBUTIL interactive PP-67
$JOBUTIL
non-interactive PP-66
$L interactive PP-62
$L non-interactive PP-61
session manager PP-68
link map PP-70
non-interactive $JOBUTIL interface PP-66
non-interactive session manager
interface PP-68
operator termination PP-69
overview SG-72, SG-73
primary control statement data
set
description PP-48
example of PP-57
requesting a link edit PP-60
secondary control statement
data set
description PP-48
example of PP-59
specifying dynamic
storage PP-77
using $LINK control statement
data sets PP-76
$EDXLINK OVERLAY control
statement PP-55
$EDXLINK RESET control
statement PP-56
$EDXLINK VOLUME control
statement PP-56
$EDXLIST program PP-24, SG-66
$EDXNUC supervisor data set
in link-edit PP-89
in system generation SG-192
$FONT utility SG-66
$FORT utility SG-66
$FSEDIT full-screen editor

data set requirements OR-26 0
function SG-64
options
BROWSE OR-265
EDIT OR-266
END OR-272
READ OR-268
SUBMIT OR-270
WRITE OR-269
options and commands
summary OR-263
overview OR-259
primary commands OR-268
program function (PF)
keys OR-262
scrolling OR-261
$GPIBUTI utility
commands CT-134
description CT-134
example CT-145
overview SG-66
use in debugging
applications CT-144
$HCFUTI utility CT-367, OR-294,
SG-64
$HXUTI utility SG-63
$IAMSTGM module removal IG-206
$IAMUTI utility
commands
AL IG-151
SF IG-144
CR CA-I05
DE IG-153
DF CA-106, IG-146
DI CA-I08, IG-149
DR IG-150
EC CA-109, IG-160
EF IG-161
IE IG-155
LE IG-156
LO CA-110, IG-162
NP IG-166
PG IG-167
PP IG-168
PS IG-169
RE CA-113, IG-170
RO CA-112, IG-171
SE CA-114, IG-173
UE IG-158
UN CA-120, IG-184
completion codes CA-121,
IG-186, Me-210
description CA-103
function SG-63
overview CA-14, OR-317
$ID statement
coding description LR-36
for problem
determination SG-239
$IDEF $EDXASM instruction definition
description ID-267
instruction format 10-252
$ILOG IG-216
$IMAGE subroutines
example of using CT-55
general description CT-44
use for device independence in
terminal support CT-41
$IMAGE ut i 1 i ty
commands OR-325
description OR-321
example SG-404
function SG-66
Common Index

IG-279

program function keys OR-340
$IMOATA subroutine
description CT-53
example CT-42, CT-54, CT-SS,
SG-391
return codes CT-54, MC-239
$IMOEFN subroutine
description CT-48
example CT-49, CT-SS, SG-391
$IMOPEN subroutine
description CT-46
example CT-41, CT-47, CT-SS,
SG-390
return codes CT-47, MC-239
$IMPROT subroutine
description CT-SO
example CT-42, CT-Sl, CT-SS,
SG-391
return codes CT-52, MC-240
$INDEX subroutine, $EDXASM ID-2S9
$INITDSK utility
commands OR-34S
description OR-343
function SG-63
used in Version 3
conversion SG-438
$INITIAL dataset
description SG-174
with session manager OR-46
$IOTEST utility 'OR-368, SG-6S
$JOBUTIL job stream processor
commands OR-377
completion codes MC-212
example SG-424
setup procedure OR-376
usage example OR-396
$JOBUTIL utility
usi ng to invoke
Sort/Merge SM-42
$L operator command
description OR-32
function SG-61
syntax OR-32
usi ng to invoke
sort/merge SM-40
$LEMSG data set PP-87
$LINK
autocall facility PP-I01
autocall option PP-87
combining program modules PP-S
completion codes MC-213, PP-97
control records PP-88
data set requirements PP-86
description OR-398, PP-8S
elimination of duplicate
CSECTs PP-6
example SG-419
formatting modules for
$UPDATE PP-85
function SG-66
invoking
with $JOBUTIL PP-9S
wi th $L PP-93
with session manager PP-94
multiple CSECTs PP-6
object module record
format ID-381
output PP-95
output listing PP-96
overview PP-5, SG-72
storage map PP-96
use considerations PP-4
$LOADER program
description ID-16
IG-280

SC34-0404

location SG-206
module description ID-72
$LOG utility
descri pti on 10-393', OR-400
function SG-65
log data set OR-400
$LPARSE subroutine,
$EDXASM 10-266
$MIGAI0 utility
commands SG-444
description SG-441
error handling SG-4S2
examples SG-445
overview SG-436
$MIGCOPY utility
description SG-4S8
examples SG-460
overview SG-436
$MIGRATE utility
description SG-457
overview SG-436
$MOVEVOL utility OR-402, SG-63
$MTMUTl utility
description OR-409
function SG-66
$NETCMO (application link to
SNA) SN-12
$P operator command OR-33, SG-61
$PACK subroutine CT-59
$PDS uti Ii ty
allocating a data set SG-322
command descriptions SG-334
example SG-333
return codes MC-226
$PFMAP utility OR-410, SG-66
$PL/l utility SG-66
$PREFIND utility
description PP-121
function SG-66
use considerations PP-129
$PRT2780 utility CT-343, OR-413,
SG-64
$PRT3780 utility CT-343, OR-414
$RECON utility OR-415, SG-66
$RJESNA utility
addi ng a error exi t
routine SN-217
control record
processing SN-206
error handling SN-216
hardware and software requirements SN-202
host considerations SN-22S
how to install SN-221
how to start SN-207
how to terminate SN-216
job entry systems
supported SN-202
messages SN-239
operator commands SN-210
overview SG-64, SN-201
receiving compacted
data SN-223
sample sessions SN-218
task error exit SN-217
workstation features SN-203
workstation functions SN-203
card reader SN-204
console SN-203
printer SN-204
punch SN-20S
writing decompaction
routines SN-223
$RJE2780 utility

c

'
"
'.
C

;/

0" '·
I

"

commands CT-339
description CT-337, OR-416
host subsystems CT-338
$RJE3780 utility
commands CT-339
description CT-337, OR-418
function SG-64
host subsystems CT-338
$RMU
See Remote Management Utility
$RMUPA CT-297
$S operator command
entering commands and parameters CA-412
function SG-61
5ubcommands
ALT CA-415
DALL CA-418
DE CA-419
DG CA-420
DISP CA-421
HOLD CA-426
KEEP CA-427
REL CA-429
STOP CA-430
WRES CA-431
WSTP CA-433
WSTR CA-435
$SMJOBR program OR-73
$SMLOG program OR-73
$SMMAIH program OR-46
$SMMPRIM, primary option
menu OR-55
$SMM02, secondary option
menu OR-57
$SMM03, secondary option
menu OR-60
$SMM04, secondary option
menu OR-62
$SMM05, secondary option
menu OR-63
$SMM06, parameter selection
menu OR-64
$SMM07, parameter selection
menu OR-65
$SMM08, communication utilities
option OR-67
$SMM09, secondary option
menu OR-68
$SHADEF, SHA configuration
file SH-I03
$SPLUTI utility
commands
CA CA-440
CD CA-441
DS CA-441
EN CA-440
GS CA-440
MA CA-441
MJ CA-441
RS CA-443
SO CA-441
description OR-427
functions CA-437, SG-66
invoking CA-440
$SPOOL spool manager
functions CA-400
internals ID-13S
starting spool facility CA-401
terminating spooling CA-402
$SSIHIT utility
description SG-441
overview SG-436
$STOREMAP storage map ID-26

$SYSCOM system common data
area ID-13, SG-172
$SYSLOG system logging
device SG-116
$SYSLOGA alternate system logging
device 5G-116
$5YSLOGB alternate system logging
device SG-116
$SYSPRTR system printer SG-116
$SIA5M 5eries/l macro assembler
data sets required PP-28
description PP-27
function SG-67
internals ID-279
output PP-38
overview SG-7
$SIS1UTI utility
commands CT-I0l
description CT-I0l, OR-425
function SG-66
invoking CT-I01
$T operator command OR-36, SG-61
$TAPEUTI utility
commands OR-432
description OR-431
function 5G-58, SG-63
used in Version 3
conversion SG-439
$TERMUTI utility OR-462, SG-66
$TERMUT2 utility
function 5G-66
process 4978 image or control
store OR-468
restore 4974 image OR-468
$TERMUT3 utility OR-487, SG-66
$TRAP utility OR-491, SG-6S
functions SG-6S
$U operator command OR-37, SG-61
$UHPACK subroutine
description CT-S8
example CT-S9
$UPDATE utility
completion codes MC-216,
PP-lIS
data sets required PP-I05
description OR-494, PP-I0S
function 5G-67
output PP-115
use considerations PP-116
$UPDATEH utility (host) PP-117,
SG-67
$VARYOFF operator command
description OR-38
function SG-61
syntax OR-38
$VARYOH operator command
description OR-40
function 5G-61
syntax OR-40
with standard labeled
tape SG-296
$VERIFY utility
example CA-127
functions CA-124, OR-498,
5G-6S
invoking CA-12S, OR-499
messages CA-134
storage requirements CA-139
$W operator command OR-44, SG-62
/MCONCAT control record SN-206
/MEND control record SN-206
11 index register 1 LR-7
12 index registe~ 2 LR-7

Common Index

IG-281

A-conversion lR-169
A/I
See analog input
A/O
See analog output
AB command ($SlS1UTl) CT-I02
ABORT command ($RJESNA) SN-210
ABORT command
($RJE2780/$RJE3780) CT-339
abort i ng Seri es/1 to Seri es/1
write CT-I02
aborting task level
(SVCABEND) ID-40
absolute record copying OR-101
accepting host initiated transactions SN-40
access level, BSC CT-214
Access Method, Indexed
See Indexed Acc~ss Method
accessing system control
blocks ID-331
acknowledgment, message SN-33
ACQUIRE parameter, NETINIT SN-21
action codes
I/O error exit SM-143
input exit SM-140
output exit SM-142
ACTION, Multiple.Termtnal Manager
CAll
coding description CA-225
internals M-10
overview of CA-207
activating a stopped task OR-152
activating error logging,
$lOG OR-400
activating paging IG-167
activating TRAP function of storage dump OR-491
activation, session SN-17
active, task supervisor
state ID-30
ACTlU command SN-134
ACTPU command SN-134
AD command ($DICOMP) CT-166
AD command ($PDS) SG-330
AD command ($TERMUT2) OR-472
AD subcommand ($DICOMP) CT-171
ADAPTER statem~nt SG-90
ADD data manipulation instruction
coding description LR-38
overview lR-14
precision table lR-39
adding a new device, Multiple
Terminal Manager M-6
adding a null data set on tape
volume OR-461
adding member to data base (graphics) CT-166
adding session manager
options OR-80
adding support for new terminals
coding GENxxxx ID-116
coding the support
module ID-114
implementation ID-113
modifying the TERMINAL statement ID-116
ADDRESS parameter, SHAPU SN-105
address relocation
translator SG-43
IG-282

SC34-0404

addressing indexing feature lR-7
addrout sort
See SORTA (record address sort)
ADDV data manipulation instruction
coding description lR-38
index register use lR-42
overview lR-14
precision table lR-42
AF command ($INITDSK) OR-354
AI
See analog input
Al command ($DICOMP) CT-167
Al command ($DISKUTl) OR-172
Al command ($DIUTIl) CT-195
Al command ($IAMUT1) IG-151
Al command ($JOBUTIl) OR-378
ALIGN statement
coding description LR-45
overview lR-14
aligning spool job forms CA-415
ALLOCATE function, Remote Management Utility CT-258, ID-200
allocating a directory IG-69
allocating data set ($RMU) CT-258
allocating fixed head
volume OR-354
allocating journal data
set SN-212
allocating member
of partitioned data set SG-334
with $DIUTIl command CT-195
allocating secondary index directory IG-151
allocating volume OR-353
allocating OR-354
altering alternate tracks OR-136
altering member (graphics) CT-167
altering spool job
printing CA-415
altering terminal
configuration OR-462
alternate collating sequence
statement
See AlTSEQ (alternate collating
sequence) statement
alternate sectors SG-49
ALTSEQ (alternate collating
sequence) statement
affect on control field
contents SM-87
ASCII and EBCDIC
differences SM-88
definition SM-8
EBCDIC character codes SM-88
example of use SM-8
example, specifying SM-88
how to specify SM-87
AlTSEQ statement, position
descriptions
position 1 - statement
type SM-87
position 3-4 - From
character SM-88
positions 35-80 comments SM-90
positions 5-6 - To
character SM-88
positions 7-34 - additional
characters SM-9Q
analog input
AT $IOTEST command OR-373
control block ID-162
description SG-357
IODEF statement SG-361

/",(-

".

~~/

o

o

overview SG-58
SBIO instruction SG-367
analog output
AO $IOTEST command OR-368
control block ID-162
description SG-357
IODEF statement SG-361
SBIO instruction SG-367
SENSORIO statement SG-IOl
AND instruction
coding description LR-46
overview LR-14
AO
See analog output
application program
automatic initialization and
restart SG-174
introduction LR-1
preparation of PP-l
size estimating SG-225
structure LR-2
application program major
node SN-323
application program stub, Mutliple
Terminal Manager M-9
application, identifying
host SN-17
arithmetic operators LR-4
ascending/descending sequence
option SM-60
ASCII (American National Standard
Code), changing SM-8
ASCII terminal
codes SG-114
configuring SG-113
definition CT-6
devices supported SG-17
graphics CT-151, SG-81
ASMERROR instruction,
$EDXASM ID-256
assembler
See $EDXASM and $SIASM
assigning $RJESNA printer SH-213
assigning alternate for defective
4963 sector OR-136
assigning DEFINE key in 4978
control store OR-472
asynchronous communications
See terminal support
AT command ($DEBUG) OR-149
ATTACH instruction
coding description LR-48
internals ID-35
overview LR-28, SG-30
attention event sequence,
example SN-40
attention handling, terminal
I/O SG-62
attention handling, terminal
support
internals 10-102
See also interrupt servicing
attent i on list
processing for terminal
support CT-20, CT-21
See also ATTHLIST statement
ATTNEV parameter, NETINIT SH-20
ATTHLIST statement
coding description. LR-50
overview LR-28, SG-30
use in terminal support CT-21
with a two task program lR-405
ATTR define attribute characters,
$IMAGE command OR-326

attribute characters, 3101 CT-36,
CT-38
AUTOCAlL control statement ($EDXLINK) PP-51
AUTOCAlL data set
($EDXLIHK) PP-74
AUTOCALl data set record format
($EDXLINK) PP-74
autocall feature
description PP-87
statement requirement
(WXTRN) LR-399
AUTOCAlL option ($EDXlINK) PP-74
AUTOCALL processing
($EDXLINK) PP-75
automatic initialization and
restart SG-l74
automatic update indicator IG-69
AV command ($INITDSK) OR-353

B line command ($FSEDIT) OR-280
Backing up disk or diskette volume
on tape OR-457
backup IG-94
backup dump restore utility,
$MOVEVOL OR-402
base records, indexed file
definition of CA-33, IG-61
loading CA-33, IG-61
base SNA function codes SN-21,
SN-87
basic exchange diskette
data set copy utility OR-107
exchanging between
systems SG-54
basic supervisor and emulator
See supervisor/emulator
batch job processi ng
See $JOBUTIl job stream processor
BCB (buffer control block internals T-35
BEEP subroutine CA-466
BEEP, Multiple Terminal Manager
CAll
coding description CA-229
internals M-9
overview of CA-207
BF command ($IAMUT1) IG-144
BID command SH-134
binary synchronous communications
access level CT-214
.automatic retry SG-20
BSCAM/BSCAMU module
descriptions ID-64
BSClIHE statement SG-92
conversat i onal \
operations CT-216
device data block (BSCDDB)
description ID-167
listing 10-340
features of BSCAM CT-214,
SG-19
instruction formats 10-174
instruction overview CT-219
instruction processing
(BSCAM) 10-177
internals 10-167
Common Index

IG-283

multipoint operations CT-215,
SG-19
overview CT-I0, SG-82
point-to-point lines SG-19
Remote Management Utility
requirements CT-250
return codes CT-246, MC-227
sample programs CT-300
special labels for 10-179
storage requirements SG-220
test utility, $BSCUT2 CT-239
trace printing utility,
$BSCUTI CT-237
trace utility, $BSCTRCE CT-235
transmission protocol 10-184
utilities overview CT-213
BIND checking SN-120
BIND command SN-135
BIND parameter control block,
BND SI-282
BIND parameters SN-121
BIND post codes MC-218, SN-94
BIND processing SN-142
blank sc~een, $B operator
command OR-26, SG-6l
BLCC, block lock line
count AM-lO, IM-ll
BLOTXT subroutine, $EOXASM 10-263
BLINK subroutine CA-467
BLINK, Multiple Terminal Manager
CALL
coding description CA-231
internals M-10
overview CA-207
block and record locks AM-lO,
1M-II
block header, Indexed Access Method
description AM-6, IM-6
equates AM-74
blocked sequential IG-164
BLP
See also bypass label processing
tape management utility OR-431
BNO, BIND parameter control
block 51-282
BOT (beginning-of-tape) LR-26
bottom editor subcommand
($EOIT1/N) OR-213
boundary requirement, full-word
DO LR-21
IF LR-21
PROGRAM LR-266
BP command ($OEBUG) OR-151
BPIACB, block place header AM-10,
1M-II
bracket initiation, PLU SN-128
bracket initiation, SLU SN-128
bracket protocol SN-128
brackets
definition SN-l27
error conditions SN-130
indicator rules SN-128
initiatio~ rules
SN-128
termination rules SN-129
branch vector table, BVT SI-286
BROWSE option ($FSEOIT) OR-265
BSC
See binary synchronous communications
BSC 8-line control
data rates CT-12
use with #2094 CT-12
IG-284

SC34-0404

BSCAM
See binary synchronous communications
BSCCLOSE instruction
coding description CT-219
expanded format 10-174
processing 10-178
BSCOOB (binary synchronous device
data block)
description 10-167
listing 10-340
BSCEQU (BSCLINE equate
table) LR-431
BSCIA immediate action
routine 10-178
BSCI0CB statement CT-218, ID-174
BSCLINE statement SG-92
BSCOPEH instruction
coding description CT-220
expanded format 10-175
processing 10-178
BSCREAO instruction
coding description CT-221
example CT-234
expanded format 10-175
processing 10-178
required buffers CT-220
types of BSC read
operations CT-223
BSCWRITE instruction
coding description CT-226
example CT-233
expanded format 10-176
. processing 10-178
required buffers CT-220
types of BSC wr i te
operations CT-227
BSF (backward space file) LR-65,
OR-449
BSR (backward space
record) LR-65, OR-449
BTAM/BTAM-ES, channel attach
considerations CT-418
BTE (buffer table entry)
description AM-6, IM-6
equates AM-72, IM-114
BU command ($OIUTIL) CT-195
BUFF pa rameter
NETCTL SN-48
NETGET SN-37
NETPUT SN-30
buffer
allocation in Remote Management
Utility CT-255
areas, Multiple Terminal Manager M-23, M-37
input, Multiple Terminal Manager CA-206
management, terminal
I/O 10-103
output, Multiple Terminal
Manager CA-206
buffer control block (BCB) internals T-35
BUFFER statement
coding description LR-54
overview LR-13
buffer table entry (BTE)
descripti.on AM-6, IM-6
equates AM-72, IM-114
buffers, specifying
receive SN-114
buffers, specifying send SN-114
BUFNO parameter, SHAPU SN-106

o

r""
\~'

c·

o

c'

o

BUFSIZ parameter, SNAPU SN-I06
BUILD option ($EDXASM) PP-14
building data member
(graphics) CT-195
bus
See General Purpose Interface
Bus
BVT, branch vector table SI-286
bypass label processing (BLP)
description SG-300
example SG-311
BYTES parameter, HETGET SN-37
BYTES parameter, NETPUT SH-30

CA attention request
($COPYUTI) OR-113
CA attention request
($EDXASM) PP-13
CA attention request
($EDXlIST) PP-25
CA attention request
($FSEDIT) OR-270
CA command ($CHANUTl) CT-409
CACBl and CACB2 channel attach
con'fi gurati on statements CT-413
CACLOSE instruction
coding description CT-400
overview CT-400
return codes CT-442
CAD command ($COPYUTl) OR-113
CADIOCB (channel attach device I/O
control block)
data map T-41
description T-35
C~IOCB (channel attach I/O control
block) statement
coding description CT-399
data map T-59
example CT-399
internals T-35
overview CT-399
CALL ($COPYUTl) OR-118
CALL instruction
coding description LR-58
overview lR-20, SG-41
program lR-58
subroutine LR-58
CALLFORT instruction
coding description LR-6l
overview LR-20
CANCEL command SN-135
canceling a listing OR-202
canceling dump OR-195
canceling list option OR-270
canceling program OR-27
cancelling messages SN-52
CAOPEN instruction
coding description CT-400
example CT-400
overview CT-400
return codes CT-440
CAP command ($COPYUTl) OR-113
CAPCB (channel attach port control
block)
data map T-55
description T-35
CAPRNT instruction
coding description CT-401
example CT-402

overview CT-401
return codes CT-440
card reader function,
$RJESNA SN-204
CAREAD instruction
coding description CT-402
example CT-403
illustration CT-389
overview CT-402
return codes CT-440
CASTART instruction
coding description CT-404
example CT-404
overview CT-404
return codes CT-440
CASTOP instruction
coding description CT-405
example CT-405
overview CT-405
return codes CT-440
CATRACE instruction
coding description CT-406
example CT-406
overview CT-406
return codes CT-440
CAWR1TE instruction
coding description CT-407
example CT-407
overview CT-407
return codes CT-440
CB command ($DISKUT2) OR-182
CC line command ($FSED1T) OR-280
CCB (control block)
Multiple Terminal Manager M-13
CCB (terminal control block)
description ID-115
GPIB terminal control
block 10-119
listing 10-341
spool extension 10-148
CCBEQU (terminal control block
equate table) LR-432
CO command ($COPY) OR-103
CO command ($TAPEUTl) OR-433
CDATA, Multiple Terminal Manager
CAll
coding description CA-233
internals M-9
overview of CA-207
CORRM equate listing, Remote
Management Utility CT-330
CG command ($COPYUTl) OR-116
CH command ($BSCUT2) CT-244
CH command ($GPIBUTl) CT-135
CH command ($UPOATEH) PP-120
chain properties SN-126
CHA1H supervisor routine 10-44
chain, ECB/QCB/TCB ID-44
CHAIHO supervisor routine 10-44
CHAINE supervisor routine 10-44
CHA1NP supervisor routine 1D-44
chains, definition SH-126
chains, receiving SN-147
chains, send operation SN-127
chains, sending SN-144
changing $OEBUG base
address OR-160
changing character string
with $EOITI/N OR-214
with $FSED1T OR-273
changing execution
sequence OR-153
changing GP1B partition CT-135
Common Index

IG-285

changing graphics or report
display profile CT-165
changing hardcopy device
with $BSCUT2 CT-244
with $TERMUTI OR-467
changing host library PP-120
changing logical device
name OR-466
changing output volume PP-I07
changing partition
assignment OR-29
changing realtime data member
name SG-332
changing spool job
forms code CA-415
id heading CA-415
number of copies CA-415
output device CA-415
changing tape label
support OR-442
changing terminal address assignment OR-465
changi ng volume
with CV ($DISKUTl) OR-172
with CV ($DISKUT2) OR-181
with CV $UPDATE PP-I07
with CV $UPDATEH PP-118
wi th CV command
($BSCUTl) CT-239
changing 4978 key
definition OR-473
Channel Attach
$CAPGM CT-382
BTAM considerations CT-418
CAREAD illustration CT-389
CAWRITE illustration CT-389
closing a port CT-396
control blocks
data maps T-39
descriptions T-35
structure T-36
device (4993) CT-380
functions supported CT-379
instruction expansions T-29
instructions, listed CT-397
issue I/O
read CT-387
write CT-388
link module descriptions T-18
link-editing CT-416
module descriptions
link modules T-18
overlay programs T-32
program modules T-8
utility program
modules T-26
opening a port CT-386
overlay program
descriptions T-32
overview CT-12, CT-379, SG-83
post codes CT-435, MC-219
preparing an application
program
assembling CT-416
link-editing CT-416
problem determination
error logging CT-428
online test (OLTEP) CT-434
trace CT-419
program module
descriptions T-8
return codes CT-437, MC-229
sample programs CT-442
starting a device CT-386
1G-286

SC34-0404

stopping a device CT-396
storage requirements SG-222
system generation ~T-412
utility
See $CHANUTI utility
utility program module
descriptions T-26
character constants LR-85
character image table OR-242
$FONT utility OR-242
CHASE command SN-135
CHGPAN, Multiple Terminal Manager
CALL
coding description CA-236
internals M-9
overview of CA-207
C1CS/VS considerations SN-172
CICS/VS support SN-155
CL primary command
($FSEDIT) OR-275
class interrupt vector
table ID-ll
CLEAR command SN-135
clear to send timeout SN-I06
clearing data set OR-181
clearing screen OR-26
CLEART subroutine CA-468
CLOSET subroutine CA-469
CLSRU close tape data set LR-65
cluster controller SI-l
clustered records IG-18
CM command ($COPYUTl) OR-115
CM command ($DIUTIL) CT-197
CMDEQU LR-432
CMDSETUP emulator entry
point ID-14
CNCTYPE parameter, SNAPU SN-I05
CNG command ($COPYUTl) OR-116
CO command
($RJE2780/$RJE3780) CT-341
COBOL
estimating storage
requirements SG-228
execution requirements SG-24
overview SG-9
program preparation requirements SG-24
use with Multiple Terminal
Manager CA-283
code translation
tables ID-114
terminal I/O 1D-I03
code words, task LR-9
coding the TERMINAL
statement SG-116
collating sequence
changing SM-8
specifying in header SM-67
COLS line command
($FSEDIT) OR-282
COMMAND command ($RJESNA) SN-211
COMMAND command
($RJE2780/$RJE3780) 'CT-340
command table, emulator
description ID-14
emulator setup routine 1D-52
listing ID-323
commands processed by Series/l
SNA SN-132
comment control statement ($EDXLINK) PP-51
comments
in comment statement SM-68

(

'''.::
,./

o

in other specification statements SM-76
commercial application
facilities CA-2
commercial products SG-4
common AM-23
common area, $EOXASM ID-236
common area, Multiple Terminal
Manager M-16, M-34
common data area
See $SYSCOM system common data
area
common emulator setup routine
command table 10-14
description 10-52
communication products SG-4
communications error
function 10-209
communications support SG-19
communications utilities
$BSCTRCE CT-235
$BSCUT1 CT-237
$BSCUT2 CT-239
$HCFUT1 CT...;367
$PRT2780 CT-343
$PRT3780 CT-343
$RJE2780 CT-337
$RJE3780 CT-.337
$RMU CT-249
session manager OR-66
summarized SG-63
communications vector table
description 10-12
listings 10-319
compacted data, processing SH-223
compaction SN-222
compiler
See $EOXASM Event Oriven
Language compiler"
compiler common area,
$EOXASM 10-236
completion codes
$EOXASM MC-20a, PP-21
$EOXLINK MC-209, PP-73
$IAMUT1 CA-121, IG-186, MC-210
$JOBUTIL MC-212
$LINK MC-213, PP-97
$UPOATE MC-216, PP-115
See also post codes, return
codes
component definition SN-160
component flow, Multiple Terminal
Manager M-3
compressed byte string CT-60
compressing library OR-95
compression SH-222
CON CAT instruction
coding description CT-153
overview CT-153
concatenating data sets SH-206
concatenation loops,
avoiding SN-215
concurrent execution lR-28
conditional force
continuation SM-115
data types allowed SM-109
definition SM-118
how to specify SM-118
keep/drop from output
record SM-64
length, maximum
in a field statement SM-109
specifying in header SM-60
total in include set SM-118

number, maximum SM-118
required entries in field
statement SM-109
rules for SM-115
configuration statements SG-89
configuration, system
See system configuration
configuring terminal OR-463
connecting Series/1 support SI-3
connecting to indexed file CA-54,
IG-87
consecutive frames,
specifying SN-106
console function, $RJESNA SN-203
control block and parameter tables
list lR-431
control block linkages, Indexed
Access Method AM-9, IM-9
control blocks
accessing 10-331
analog input 10-162
analog output 10-162
Binary Synchronous Communications CBSCOOB) 10-340
chaining 10-334
Channel Attach T-37
data set control block (OSCB)
data maps T-39
descriptions 10-88, M-13,
M-17, T-35
equates M-32
listing ID-360
device data block (OOB)
description 10-84
listing 10-357
digital input/output control
block ID-162
EXI0 device data block 10-153
GPIB terminal control
block 10-119
including ID-334
Indexed Access Method
description IM-5
equates IM-81
Multiple Terminal Manager
description M-13
equates M-33
printer spooling
descriptions 10-143
listings 10-371
process interrupt control
block ID-162
Remote Management Utility
description 10-191
listing ID-366
sensor I/O DOB listing 10-358
sensor-based I/O control block
(SBIOCB) 10-159
tape device data block (TOB)
description 10-92
listing 10-377
task control block (TCB)
description 10-32
listing 10-375
terminal control block (CCB)
description 10-115
listing 10-341
control field
data types allowed SM-110
examples SM-14
how to specify SM-126
keep/drop from output record
default drop with variable
records SM-65
Common Index

IG-287

specifying in header SM-64
when to drop SM-65
length, maximum
in a field statement SM-II0
specifying in header SM-60
total in include set SM-117
number, maximum SM-117
purpose SM-I05
required entries in field
statement SM-I09
rules SM-115
types SM-I05
control flow
Indexed Access Method
description AM-5
equates AM-51
with data paging IM-33
control flow, access method AM-I,
IM-l
CONTROL IDCB command LR-201,
5G-58
control keys for test
editors OR-202
control operation internals,
GP1B 1D-121
control operations, NETCTL SN-49
CONTROL option ($EDXASM) PP-14
control records, $LINK PP-88
CONTROL tape instruction LR-64
control, device instruction
level LR-18
controlling echo mode CA-I09,
IG-160
controlling message
exchange 5N-9, 5N-47
conversational operations,
B5C CT-216
conversion algorithm for
graphics ID-225
conversion module (EBFLCVT) ID-65
conversion, terminal I/O
binary/EBCDIC ID-l04
converting floating
point/binary 10-227
converting program modules PP-7
converting to Version 3
$MIGAID 5G-44l
$MIGRATE SG-457
data 5G-436
CONVTB instruction
coding description LR-70
internal format ID-229
overview LR-13
return codes LR-70, MC-232
CONVTD instruction
coding description LR-75
internal format ID-229
overview LR-13
return codes LR-75, MC-232
copy code library
($EDXA5M) 10-244
COPY control statement
($EDXLINK) PP-52
COpy instruction
coding description LR-80
overview LR-20
copying block of text OR-280
copying data set OR-l03
copying data sets with
allocation OR-Ill

IG-288

5C34-0404

copying line of text OR-280
copyi ng member
with $COPYUTI OR-112
with $DIUTIL CT-197
copying text OR-216
copying volume OR-I05
correlation table entry,
CTE 51-290
correlation table entry,
format 5N-124
correlation tables 5N-124
count record, Remote Management
Utility CT-253, CT-298
CP command ($DIUTIL) CT-196
CP command ($GPIBUTl) CT-135
CR command ($IAMUTl) CA-I05
creating character image
tables OR-242
creating indexed file CA-l05
creating secondary index IG-76
creating source data set OR-266
creating stand-alone dump
diskette OR-120
creating supervisor for another
Series/l 5G-2l4
creating task error exit
routines 5G-256
cross-partition services
DEQ LR-92
description and
examples lR-432
ENQ lR-120
MOVE LR-225
overview LR-ll
P05T lR-240
READ LR-290
WAIT lR-385
WHERES LR-388
WRITE LR-391
C5ECT list, supervisor 5G-465
C5ECT statement
coding description LR-82
overview LR-20
CT command ($TAPEUTI) OR-435
CT command ($TERMUTl) OR-463
CTE parameter, SNALU 5N-115
CTE, correlation table
entry 51-290
customized system
generation 56-194
CV command ($B5CUTl) CT-237
CV command ($COPY) OR-105
CV command ($DI5KUTl) OR-172
CV command ($DI5KUT2) OR-18l
CV command ($UPDATE) PP-107
CV command ($UPDATEH) PP-118
cyclq steal status word (C5SW)
description 5G-267
finding 5G-268
CYCLE, Multiple Terminal Manager
CALL
coding description CA-238
internals M-I0
overview CA-206
cylinder 5G-46
cylinder track sector (CT5)
disk 5G-49
diskette 5G-52

( .-'J!"

iii',

c

0:
D/I
D/O

0',',:,
,

,'I

See digital input

See digital output
DACTLU command SH-136
DACTPU command 5H-136
DAT, 5HA data area SI-294
data
definition statements LR-13
floating-point LR-15
floating-point arithmetic
instructions
data representation LR-16
operations using index
registers LR-16
return code
introduction LR-16
formatting functions
instructions LR-13
module names LR-14
integer LR-14
integer and logical
instructions LR-14
manipulation instructions
data representation LR-15
overflow LR-15
vector LR-15
overview LR-13
terminal input LR-32
terminal output LR-31
Data Base/Data Communication
(DB/DC) 51-1
Data Collection Interactive (DCI)
overview SG-13
storage requirements 5G-222
data communication
architecture 51-1
data control block, DCB SI-302
data exchange SG-23
data fields
definition SM-I05
determining output record
format and content SM-I05
how to specify SM-124
rules SM-125
data files for $SlASM 10-280
data formatting return
codes MC-232
data interchange SG-23
data link buffer, DLB SI-317
data link terminal, DLT SI-327
data management SG-45
data management utilities
$COMPRES OR-95
$COPY OR-IOO
$COPYUTI OR-Ill
$DASDI OR-119
$DISKUTI OR-168
$DISKUT2 OR-180
$DISKUT3 SG-339
$IHITDSK OR-343
$MOVEVOL OR-404
$PDS SG-321
$TAPEUTI OR-431
session manager OR-59
summarized SG-63
data manipulation instructions
ADD LR-38
ADDV LR-41
coding description LR-38

DIVIDE LR-99
MULTIPLY LR-230
overview LR-14
SUBTRACT LR-332
data manipulation, vector LR-15
data paging control block IM-6
data paging, Indexed Access Method
activating IG-167
control flow IM-33
deactivating IG-166
description IG-206
extracting statistics IG-I08
gett i ng pag; ng
statistics IG-169
module descriptions 1M-53
page preemption IM-40
problem determination IM-78
selecting ·IG-167
setting paging area
size IG-168
using IG-208
data record contents, text
editor ID-387
data record, Remote Management
Utility CT-253, CT-298
data representation, terminal
I/O LR-31
data set allocation/deletion,
with $DISKUTI OR-172
.
with $DISKUT3 SG-339
with $JOBUTIL OR-378
with $PDS SG-322
with session manager OR-47
data set concatenation SH-206
data set control block CDSCB)
description ID-88
listing ID-360
data set definition statement
See DSD statement
data set description, DSD SI-334
data set directory
internals ID-77
data set format
$FSEDIT OR-260
$PDS SG-323
$PRT2780 CT-343
$PRT3780 CT-343
data set nami ng
conventions SG-283
data set ready (DSR) ID-178
data set ready timeout SH-I05
data set utilities
See data management utilities
data sets
defining in DSD
statement SM-71
end-of-data requirements SM-82
input SM-9
output SM-9
purposes SM-9
required SM-12
specification SM-9
work SM-9
DATA statement coding
description LR-84
data terminal ready
timeout SH-I05
data transfer initiation, terminal
I/O ID-I06
data transfer ready (DTR) 10-178
data types
format, internal
binary, signed SM-226
character SM-222
Common Index

IG-289

decimal packed SM-226
decimal, sign attached leading SM-226
decimal, sign detached leading SM-226
decimal, sign detached
trailing SM-226
decimal, unpacked SM-226
digit SM-223
zoned SM-223
in field statement SM-l10
in include/omit
statement SM-97
data-set-shut-down, Indexed Access
Method CA-150, IG-215
~ata, invalid in output
SM-82
date/time
description SG-207
display, $Woperator
command OR-44'
set, $T operator command OR-36
DC statement
coding description lR-84
overview lR-13
DCB statement
coding description lR-87
function SG-57
overview lR-18
DCB, d~ta control block SI-302
DCBNO parameter, SNAPU SN-I06
DCE (directory control entry)
description 10-80
listing ID-347
DCI (Data Collection
Interactive) SG-13
DD command ($GPIBUTl) CT-136
DD command ($SISIUTI) CT-I02
DD line command OR-283
DDB (disk device data block)
description ID-84
listing ID-357
DDB, device descriptor
block SI-306
DDBEQU (device data block equate
table) lR-431
DDE (device descriptor
entry) ID-86
DE command ($DISKUTl) OR-172
DE command ($DIUTIl) CT-198
DE command ($IAMUTI) IG-153
DE command ($JOBUTIl) OR-379
deactivating paging IG-166
deactivating the network
(SNADACT) SN-I00
debugging $EDXASM overlay
programs ID-274
debugging aids (see also diagnostic aids) SG-21
debugging utility, $DEBUG
data necessary for
debugging OR-144
description OR-142
features OR-143
tips and techniques OR-163
decompaction routines SN-222,
SN-224
DEFINEQ statement
coding description lR-90
overview lR-24
defining a multifunction attachment SG-90
defining an interrupt key on
4978 OR-481
defining device name CT-I02
IG-290'

SC34-0404

defining disk volumes SG-286
defining diskette volumes SG-285
defining end character
(GPIB) CT-135
defining GPIB device CT-136
defining horizontal tabs OR-331
defining image dimensions OR-328
defining indexed file CA-I06,
IG-146
defining null characters OR-332
defining processor SG-I03
defining protected fields
($IMAGE) OR-342
defining tape volumes SG-304
defining vertical tabs OR-339
defining 3107 attribute
characters OR-326
definition statements, data LR-13
DELETE function, Remote Management
Utility CT-260, ID-200
DELETE, Indexed Access Method CAll
description CA-67, IG-I01
return codes CA-68, IG-I02
deleting all spool jobs CA-418
deleting data set
on tape OR-461
with $JOBUTIL OR-379
with $PDS SG-335
with Remote Management
Utility CT-262
deleting directory entry IG-153
deleting elements CT-167
deleting generic spool
jobs CA-:-42 0
deleting indexed file
records CA-59, IG-93
delet i ng member
with $OISKUTI OR-172
with $OIUTIL CT-197
deleting spool job CA-419
deleting text
with $EDITI/N OR-218
with line ($FSEOIT) OR-283
deleting volumes, DV $INITDSK
command OR-365
delimited data field
data types allowed SM-I09
examples SM-18
how to specify SM-124
length, minimum/maximum SM-II0
required entries in field
statement SM-I09
rules for specifying SM-115
when to use SM-:-60
density for diskette initialization, $OASOI utility OR-122
OEQ instruction
coding description LR-92
internals 10-49
overview LR-28, SG-43
supervisor function ID-36
DEQBSC BSC routine 10-178
OEQT instruction
coding description lR-94
function SG-79
internals 10-110
overview lR-30
printer spooling ID-140
descending sequence
affect on control field
contents SM-65
option SM-60
OETACH instruction
coding description lR-97

~.

",

'\!l.oP"

o

o

internals 10-35
overview lR~28, 5G-30
detached, task supervisor
state 10-30
device busy, resetting lR-136
device control block, spool (5PW)
description 10-149
listing ID-371
device data block
disk (DOB)
description ID-84
listing 10-357
sensor I/O listing 10-358
tape (TOB)
description ID-92
listing 10-377
device descriptor block,
ODB 51-306
device descriptor entry
(ODE) 10-86
device independence for terminal
support
between display stations and
printers CT-7, CT-15, 5G-78
between 4978/4979 and
3101 CT-7, CT-31, CT-38
coding EDl instructions
for CT-39
for stetic screens CT-38
usi ng the $IMAGE
subroutines CT-41
device interrupt handling,
EXIO ID-156
device test utility,
$IOTE5T OR-368
device vector table 10-12
OF command ($IAMUT1) CA-I06,
IG-146
DI
, 5ee digital input
DI command ($IAMUT1) CA-I08,
IG-149
diagnosing
I/O errors 5G-267
IPL problem 5G-270
diagnostic aids
access method AM-31, 1M-57
description 5G-231
hardware-oriented 5G-21,
5G-241
software trace table 50-249
software-oriented 5G-22,
5G-236
summary 5G-22
diagnostic utilities
$DEBUG OR-142
$DUMP OR-193
$IOTE5T OR-368
$LOG OR-400
$TRAP OR-491
overview 5G-65
session manager OR-68
digital input
direct output to another
device, $P05 utility 5G-329
direct output, $DICOMP subcommand CT-171
external sync, XI $IOTE5T
command OR-371
I/O control block ID-162
IOOEF statement 'SG-361
IOTEST command OR-370
overview SG-58
5BIO instruction 5G-367

5EN50RIO statement 5G-I01
digital output
I/O control block ID-162
IODEF statement 5G-361
overview 5G-58
SBIO instruction 5G-367
direct access device
organization 5G-53
direct graphics output CT-171
direct I/O
Series/l to Series/l CT-85,
LR-367
with IOCB LR-209
with PRINTEXT lR-247
directory allocation IG-69
directory control entry (DCE)
description 10-80
listing 10-347
directory entries IG-71, 5G-323
directory free space entry
(FSE) ID-82
directory member entry
(OME) 10-81
directory of instruction
locations LR-34
015CONN Indexed Access Method CAll
description CA-69, IG-I04
return codes CA-69, IG-I04
DI5CONNECT Multiple Terminal
Manager utility CA-3~6
disconnecting from indexed
file CA-54, IG-87
di sk data sets
end-of-data requirements 5M-82
rules for specifying 5M-74
disk I/O instructions lR-16
OI5K statement
coding 5G-95
description SG-95
function SG-57
disk volumes, defining SG-286
disk/diskette capacity SG-285
disk/diskette directory
equates ID-347
disk/diskette return
codes LR-295, MC-234
diskette volumes, defining 5G-285
disks/diskettes
converting to Version 3 5G-436
device data block (DDB)
description 10-84
listing ID-357
fixed-head 5G-16, SG-48
logical volume 5G-47
physical volume 5G-46
storagecapacity 5G-285
symbolic addressing lR-I0
utilities
$COMPRE5 OR-95, 5G-63
$COPY OR-I00, SG-63
$COPYUTI 5G-63
$DA5Dl OR-119, 5G-63
$DI5KUTl OR-168, 5G-63
$DISKUT2 OR-180, 5G-63
$IAMUTI SG-63
$INIT05K OR-343, SG-63
$MOVEVOL OR-404, SG-63
$TAPEUTI 5G-63
volume SG-16
disks/diskettes OISP command
($FONT) OR-244
dispatch queue, access
method AM-7, IM-7
display control member SG-324
Common Index

IG-291

display control member
format SG-326
display operator commands SN-212
display processor composer,
$DICOMP CT-165
display processor interpreter,
$DIINTR CT-185
display processor utilities,
general description CT-151
display processor utility,
$DIUTIL CT-192
display profile elements,
$PDS SG-326
display profiles, defining (graphics) CT-164
displaying character image
tables OR-244
'
displaying file definition parameters IG-161
displaying indexed file
parameters CA-I08, IG-149
displaying report line
items SG-330
displaying screen image OR-334
displaying spool status CA-421
di splayi ng status of all
tasks OR-162
displaying storage OR-30, SG-61
displaying storage or
registers OR-154
displaying time and date SG-62,
SG-332
displaying variable SG-328
displaying 4978 program function
keys OR-410
Distributed Presentation Management
advantages of DPM SN-164
MFS DPM compatibility SN-164
screen off-loading SN-164
screen presentation SN-162
SLU type P without DPM SN-165
DIVIDE instruction
coding description LR-99
overview LR-14
precision table LR-99
DLB, data link buffer, SI-317
DLT, data link terminal SI-327
DME (directory member entry)
descr i pt ion ' I D-81
listing 10-348
updated by SETEOD SG-354
00
See digital output
DO command ($IOTEST) OR-370
DO instruction
coding description LR-102
overview LR-21
double-precision
floating-point
arithmetic LR-16
integer and logical LR-14
DOWN subcommand (EDIT/H) OR-219
OP command ($BSCUTl) CT-237
OP command ($TAPEUT1) OR-437
OPACTBUF decompaction
buffer SN-223
DPACTRJE decompaction
routine SN-223
DR command ($IAMUT1) IG-150

DR function ($PDS) SG-328
DR subcommand ($DICOMP) CT-172
drawing line relative, SG-331
drawing line, $DICOMP
subcommand CT-178
drawing symbol CT-172
DS command ($JOBUTIL) OR-380
DSCB (data set control block)
statement
coding description LR-106
disk/diskette
description ID-88
listing 10-360
function SG-57
overview LR-16
tape internals ID-93
Version 3 conversion considerations SG-435
DSCBEQU (data set control block
equate table) LR-431
DSD statement
input SM-72
output SM-72
purpose SM-71
work SM-72
DSD statement, position
descriptions
position 1 - statement
type SM-72
position 12-17 - volume
name SM-74
position 2 - data set
type SM-72
position 20-24 - record
size SM-75
position 25-29 - block
size SM-75
position 3 - device SM-73
position 35-80 comments SM-76
position 4-11 - data set
name SM-74
positions 18-19 - record
format SM-74
DSD, data set description SI-334
DSECT LR-431
DSOPEN subroutine SG-347
DSR (data set ready) ID-178
DTR (data transfer ready) ID-178
dump and restore volume OR-402
DUMP function, Remote Management
Utility CT-262
dumping storage partition
($RMU) CT-262
dumping to printer
with $DICOMP CT-168
with $DUMP OR-194
with $TAPEUTI OR-437
dumping to terminal
with $DICOMP CT-168
with $DISKUT2 OR-182
dumping trace file on printer
($BSCUTl) CT-237
dumping trace file on terminal
($BSCUT1) CT-237
dumping trace table SG-250
DV command ($INITDSK) OR-365
dynamic storage, specifying ($EDXLINK) PP-77, PP-81

o

'

\

,. "
C

IG-292

SC34-0404

o

"
C
,,:

o

E-conversion (Ew.d) LR-167
EBCDIC (extended binary coded
decimal interchange character)
changing SM-9
collating sequence SM-224
default SM-67
specifying in header SM-66
EBFLCVT, EBDIC to floating-point
conversion
internals ID-227
module description ID-65
EC command ($IAMUT1) CA-109,
IG-160
EC command ($SlS1UT1) CT-I02
ECB address SN-20
ECB statement
coding description LR-I08
internals ID-45
overview LR-28, SG-30
with SBIOCBs ID-161
echo test, Series/l to
Series/1 CT-102
EDIT command ($EDIT1/N) OR-204
EDIT command ($FONT) OR-246
EDIT command (IMAGE) OR-328
edit data set subroutine examples,
text editor ID-388
EDIT option ($FSEDIT) OR-266
editor subcommands,
$EDIT1/N OR-212
EDL (Event Driven Language)
estimating storage
requirements SG-225
features summarized SG-20
instruction format ID-55
interpreter module description
(EDXALU) ID-66
operation codes ID-56
purpose LR-1
use with Multiple Terminal
Manager CA-281
EDXFLOAT module description ID-66
EDXINIT module
in IPL ID-5
module description ID-66
EDXLIST host listing
formatter OR-297, PP-41
EDXSTART module description ID-67
EDXSVCX/EDXSVCXU module
description ID-67
EDXTIO terminal I/O
internals ID-97
module description ID-68
EF command ($IAMUTl) IG-161
EJECT command ($JOBUTIL) OR-381
EJECT statement
coding description LR-II0
overview LR-19
ejecting printer page OR-31
description OR-31
ELSE instruction LR-lll
emulator
See supervisor/emulator
emulator command table
description ID-14
listing ID-323
emulator setup routine
command table ID-14
internal description ID-52
listing ID-323

emulator/interpreter functional
flow ID-52
ENCODE parameter, SNAPU SN-I05
END command ($EDXASM) PP-13
END command ($EDXLIST) PP-25
END command ($FSEDIT) OR-275
END command ($IMAGE) OR-329
END control record ($LINK) PP-92
END control statement
($EDXLINK) PP-53
end display (graphics) CT-177
end of job, DOJ command
($JOBUTIL) OR-382
end of nested procedure, EOP
command ($JOBUTIL) OR-382
END statement
coding description LR-112
overview LR-28
end-of-data processing SG-287
end-of-file, indicating with
SETEOD SG-354
end~of-transaction, coding
SN-32
ENDATTN instruction
coding description LR-113
overview LR-28, SG-30
ENDDO instruction
coding description LR-114
overview LR-21
ENDIF instruction
coding description LR-115
overview LR-21
ENDPROG statement
coding description LR-116
overview LR-28, SG-30
ENDRJE command ($RJESNA) SN-211
ENDSEQ Indexed Access Method CALL
description CA-71, IG-I06
return codes CA-71, IG-I06
ENDSPOOL command
($RJE2780/$RJE3780) CT-340
ENDTASK instruction
coding description LR-118
overview LR-28
ENQ instruction
coding description LR-120
internals ID-48
overview LR-28, SG-43
supervisor function ID-36
ENQT instruction
coding description LR-122
function SG-79
internals 10-109
overview LR-30
printer spooling ID-139
use for vi rtual
terminals CT-205
use in GPIB CT-I10
use with logical screens CT-33
using to reserve a
termi nal . CT-17
enqueue, task supervisor function
See ENQ instruction
entering and editing source statements OR-204, SG-64, SG-70
entering command parameters and
operands
prompt-reply mode OR-22
single line format OR-23
entering unprotected output fields
using $IMAGE OR-342
entry points, supervisor SG-465
ENTRY statement
coding description LR-125
overview LR-20
Common Index

IG-293

entry, correlation table SN-124
EOF1 tape label SG-295
EOJ command OR-382
EOP command ($JOBUTIL) OR-382
EOR instruction
coding description LR-127
overview LR-14
EOT (end-of-tape) LR-26
EOT parameter, NETPUT SN-30
EOVI tape label SG-295
EP subcommand ($OICOMP) CT-177
EQ (equal) lR-21
EQU statement
coding description LR-129
overview LR-13
equate listings AM-51
equate tables
accessing 10-331
BSCOOB (BSC device data
block) ID-340
CCB (terminal control
block) 10-341
communication vector
table 10-346
DOB sensor I/O device data
block 10-358
DOB, disk/diskette data
block 10-357
disk/diskette directory 10-347
OSCB (data set control
block) ID-360·
.
emulator command table 10-323
including 10-334
Indexed Access Method IM-81
Multiple Terminal Manager M-31
parameter and control
block LR-431
printer spooling 10-371
program header
listing 10-365
referencing 10-23
RCB (Remote Management
Utility) 10-366
Remote Management Utility
general equates 10-369
TCB (task control
block) 10-375
TOB (tape device data
block) 10-377
ERASE instruction
coding description LR-131
function SG-79
overview LR-30
ERRCOOE parameter, NETINIT SN-20
ERREXIT (load mode) IG-119
ERREXIT (process mode) IG-123
error codes
See return codes
error exit I/O SM-68
error exit, task
$RJESNA SN-217
Series/l SNA SN-11
error handl i ng
GPIB CT-131
I/O error logging OR-400,
SG-257
Indexed Access Method error
exit CA-148, IG-213
PROGRAM (TERMERR=) LR-270
program checks SG-273
PSW (processor status
word) SG-275
Remote Management
Utility CT-327
IG-294

SC34-0404

software trace SG-249
system-supplied SG-253
TASK (TERMERR=) LR-336
task error exit SG-253
terminal I/O LR-30
error handling, $RJESNA SN-216
error information, extended SN-87
error logging (Indexed Access
Method) IG-216
error logging, channel
attach CT-428
error logging, SOLC SN-12
error messages, Sort/Merge SM-247
error, I/O, header option SM-66
ERRORDEF lR-432
ERRORS command ($EOXLIST) PP-25
errors option ($EOXASM) PP-13
errors, debugging
Sort/Merge SM-179
establishing a session,
overview SN-6
estimating storage
See storage estimating
event control block
See ECB statement
Event Oriven Language
See EOL (Event Oriven language)
events, specifying
attention SN-20
EX command ($TAPEUT1) OR-439
example of Series/1 SLU type P/OPM
configuration
host components SN-170
Series/l control
application SN-171
Series/l screen
formatting/presentation
support SN-170
Series/1 SLU type P
support SN-170
exchange station 10 SN-I07
exchange station 10,
format SN-302
exchanging data SG-23
EXEC command ($JOBUTIl) OR-383
EXEC function, Remote Management
utility CT-264, 10-204
executing program
EXEC function, $JOBUTIL OR-383
EXEC function, Remote Management Utility CT-264
overview SG-33
PASSTHRU function, Remote
Management Utility CT-281
SHUTOOWN function, Remote
Management Utility CT-276
utilities (session
manager) OR-65
executing, task supervisor
state 10-30
exercising GPIB devices OR-292
exercising tape OR-439
exhibiting file definition parameters IG-161
EXIO instruction
coding description LR-136
function SG-57
overview LR-18, SG-20
return codes LR-141, MC-236
storage requirements SG-220
EXIO support internals 10-153
EXIOOOB device data block 10-153
EXIOOEV considerations SN-103
EXIODEV statement SG-98

o

(if" .........\

~"~)

o

o

exit routines
examples SM-146
I/O error SM-143
inplJt SM-137
output SM-139
when to use SM-33
with vs. without synchronization SM-131
writing SM-137
EXOPEN instruction
coding description LR-139
function SG-57
interrupt codes lR-141
overview lR-18
return codes lR-141
extended error information SN-87
extended error information,
requesting SN-20
extended error return codes
BIND event Me-218, SN-94
NETBINO MC-260, SN-94
NETCLOSE MC-261, SN-93
NETOPEN MC-262, SN-89
NETRECV MC-263, SN-90
NETSEND MC-264, SN-91
NETUBNO MC-267, SN-94
READ MC-233, SN-95
WRITE MC-233, SN-96
extended summary field
example SM-29
how to specify SM-125
length, maximum SM-I10
when to use SM-29
external I/O level supp~rt internals 10-153
external sync 01/00, XI/XO, $IOTEST command OR-368
EXTRACT Indexed Access Method CALL
description CA-73, IG-I08
return codes CA-74, IG-I09
EXTRN statement
coding description lR-145
overview lR-20

F-conversion (Fw.d) lR-166
factor 1 field SM-99
factor 2 constant SM-I02
factor 2 field SM-I0l
FAOO instruction
coding description LR-147
overview LR-14
return codes lR-148, MC-238
FAN Multiple Terminal Manager
CALL CA-240
fast path feature (IMS/VS) SN-161
FAT, function address
table SI-337
FCA (file control area) CA-243
FCB (file control block)
accessing CA-159
contents CA-159
description IM-5
equates IM-93
queue description IM-8
FCBEQU (Indexed Access Method copy
code module) lR-432
FCBEQU module CA-12, IG-4
FDIVO instruction
coding description LR-150

overview LR-14
return codes lR-151, MC-238
FE command ($HCFUT1) CT-370
fetching record, $PDS
utility SG-335
field statement
controlling sort
sequence SM-I05
determining output record
content SM-I05
determining output record
format SM-I05
examples SM-14
how to specify
control fields SM-116
data fields SM-124
position summary SM-I07
required entries in field
statement SM-109
rules SM-112
rules for control
fields SM-121
rules for data fields 5M-128
field statement, position
descriptions SM-I06
length, minimum/maximum
in a field statement 5M-112
position 1 - statement
type 5M-I06
position 13 - forced data character SM-114
position 14 - force continuation'indicator SM-115
position 2 - field type 5M-I06
position 3 - data type 5M-I09
positions 12-13 overflow/nonoverflow
indicator SM-114
positions 12-13 - test and
insert characters SM-113
positions 15-16 - extended
summary field 5M-115
positions 35-80 comments SM-115
positions 4-11 - field location
start and end SM-112
rules for total in include
set SM-117
field table (FTAB)
$IMOATA subroutine CT-53
$IMPROT subroutine CT-51
format of CT-51
file
backup IG-94
backward space file
(BSF) lR-65
definition LR~26
forward space file (F5F) LR-65
sequential blocked IG-164
sequential unblocked IG-164
tape control commands LR-64
file control block (FCB)
accessing CA-159
contents CA-159, 16-26
description IM-5
equates IM-93
extracting IG-93, IG-I08
location CA-18, IG-40
queue description, IM-8
file control block extension
accessing CA-159
contents CA-157, IG-40
extracting IG-93, IG-I08
location CA-18, IG-40
Common Index

IG-295

file locking system IM-7
file manager, Multiple Terminal
Manager M-8
file table, Multiple Terminal
Manager M-19, M-35
FILEIO, Multiple Terminal Manager
CALL
coding description CA-242
internals M-9
overview of CA-208
return codes CA-247
FIND command OR-276
FIND instruction
coding description LR-153
overview LR-21
FIND subcommand ($EDIT1/N) OR-221
FINDNOT instruction
coding description LR-156
overview LR-21
finite state machine (FSM),
description SN-127
FIRSTQ instruction
coding description LR-159
overview LR-24, SG-42
fixed blocked record format SM-79
fixed storage area 10-11
fixed unblocked record
format SM-77
fixed-head devices SG-48
floating-point
arithmetic instructions LR-15
binary conversions ID-227
EOXFLOAT/NOFLOAT module
description ID-66
return codes LR-16, MC-238
FM profiles 3 and 4
differences SH-117
supported commands SH-117
FMH parameter, NETPUT SH-30
FMULT instruction
coding description LR-160
overview LR-14
return codes LR-161, MC-238
force-all
See force-otherwise
force-otherwise
data types allowed SM-120
definition SM-120
keep/drop from output
record SM-65
length, maximum
in a field statement SM-112
specifying in header SM-60
total in include set SM-120
number, maximum SM-120
required entries in field
statement SM-I09
rules for SM-121
forced control field
conditional force
continuation SM-115
definition SM-119
how to specify SM-119
data types allowed SM-I09
defaul t drop wi th vari able
records SM-65
force-otherwise
definition SM-117
how to specify SM-117
keep/drop from output record
default d~op with variable
records . SM-65
example SM-14
specifying in header SM-64
IG-296

SC34-0404

when to drop SM-65
length, maximum
in a field statement SM-112
specifying in header SM-60
total in include set SM-117
multi conditional force
definition SM-117
how to specify SM-117
number, maximum SM-117
required entries in field
statement SM-I09
rules for SM-121
unconditional force
definition SM-117
example SM-22
how to specify SM-117
forced data character
examples SM-22
forced control field,
contrast SM-124
how to specify SM-124
required entries in field
statement SM-I09
rules for specifying 5M-128
format
illustrated (program) LR-6
instruction (general) LR-3
FORMAT statement
A-conversion LR-169
alphameric data LR-168
blank lines in output LR-171
coding description LR-163
conversion of alphameric
'data LR-169
conversion of numeric
data LR-164
E-conversion LR-167
F-conversion LR-166
formatted screen images OR-321
function SG-79
H-conversion LR-168
I-conversion LR-165
module names lR-14
multiple field format LR-171
numeric data LR-164
overview LR-13
repetitive
specification LR-171
storage considerations LR-172
using multipliers LR-171
X-type format lR-170
formatted screen return codes
$IMDATA subroutine MC-239
$IMOPEH subroutine MC-239
$IMPROT subroutine MC-240
formatting instructions,
data lR-13
forms control
for display screens CT-23
for printers CT-24
FORTRAN IV
estimating storage
requirements SG-228
execution requirements 5G-26
link editing SG-72
overview SG-8
program preparation requirements SG-25
use with Multiple Terminal
Manager CA-285
FPCOHV instruction
coding description LR-175
overview lR-14
frame count, specifying 5N-113

c

frames per transmission, considerations SH-lll
free space entry (FSE) ID-802
FREEMAIH instruction ID-25
FSE (directory free space entry)
description ID-82
listing ID-349
FSF (forward space file) lR-65
FSF (forward spacefile) OR-449
FSR (forward space record) lR-65,
OR-449
FSUB instruction
coding description lR-178
index registers lR-179
overview lR-14
return codes lR-179, MC-238
FTAB command ($IMAGE) OR-330
refid=pfkeys, listing, KEYS
$IMAGE command OR-331
FTAB, Multiple Terminal Manager
CAll
coding description CA-254
internals M-26
overview of CA-207
return codes CA-255
full-word boundary requirement
DO lR-21
IF lR-21
PROGRAM lR-266
function address table,
FAT SI-337
function management headers, definition of SH-7
function process subroutines
adding new functions ID-214
definition ID-189
logic flow 10-196
function table, Remote Management
Utility ID-191

o

gather read operation CT-37,
CT-40, CT-43
GE (greater than or equal) lR-21
general instruction format LR-3
General Purpose Interface Bus
$GPIBUTI utility
commands CT-134
description CT-134
configuration CT-113
cycle steal status CT-132
data transfers CT-l14
device addresses CT-I09
device group operation CT-121
device roles CT-I08
EDX support components CT-I08
error detect ion
cycle steal status CT-133
resi dual status
block CT-133
error handling CT-131
function SG-66
initialization CT-112
internals
control operations ID-121
functional flow ID-120
input operations ID-124
output operations ID-125
start I/O operation ID-125

terminal control block
(CCB) ID-119
interrupt handling CT-116
interrupt status byte CT-132
loading programs CT-II0
overview CT-7, CT-I07, SG-18,
SG-81
parallel polling CT-118
return codes MC-272
roles of attached devices
controller CT-I08
listener CT-I08
talker CT-I08
sample program CT-127
serial polling CT-118
service requests (SRQ) CT-116
storage requirements SG-219
system generation CT-131
TERMCTRL coding
description lR-371
terminal I/O
considerations CT-II0
translated data
(XlATE=NO) CT-I10
universal unlisten CT-113
user buffer CT-l11
generating a diskless
system SG-214
generating logical unit control
block SN-114
generating physical unit control
block SN-I04
generating the supervisor SG-167
GET command ($FONT) OR-247
GET Indexed Access Method CALL
description CA-75, IG-l11
return codes CA-77, IG-113
GETCUR subroutine CA-470
GETCUR, Multiple Terminal Manager
CALL
coding description CA-258
internals M-I0
overview CA-207
GETDAT subroutine CA-471
GETEDIT instruction
coding description lR-181
function SG-79
overview lR-13
return codes lR-183, MC-232
GETFMT subroutine CA-473
GETMAIN instruction ID-24
GETPAR3 subroutine ID-53
GETSEQ Indexed Access Method CAll
description CA-78, IG-114
return codes CA-80, IG-116
GETIIME instruction
coding description lR-188
overview lR-32, SG-42
time/date lR-188
getting paging statistics IG-169
GETVAl subroutine, $EDXASM ID-261
GETVALUE instruction
coding description LR-190
function SG-79
overview LR-30
GIN instruction
coding description CT-154
overview CT-154
global area, $EDXASM ID-246
GLOBAL ATTNlIST lR-50
GO command ($DEBUG) OR-152
GOTO command OR-153
GOTO instruction
coding description lR-196
Common Index

IG-297

overview lR-21
GP command ($GPIBUT1) CT-136
GPIB
See General Purpose Interface
Bus
GPRESUME command
($GPIBUT1) CT-143
graphics
conversion algorithm I0-225
functions CT-151
general description SG-81
hardware considerations CT-151
instructions
CONCAT CT-153
GIN CT-154
overview SG-81
PlOTGIN CT-155
XYPlOT CT-158
YTPlOT CT-159
overview CT-8
programming example CT-160
requirements CT-151
terminals CT-8, SG-81
utilities
$OICOMP CT-165
$OIINTR CT-186
$DIUTIl CT-192
summarized OR-7, 5G-65
GT (greater than) lR-21

H-conversion

lR-168
half~duplex flip-flop
SN-131
hardcopy function for terminals
(PF6) 10-108, OR-9
hardware features
for binary synchronous communications CT-l1
for Remote Management
Utility CT-252
for terminal support CT-5,
CT-9
hardware levels SG-30
hardware options, SOlC SN-I08
hash table, data paging IM-34
HASHVAl instruction
coding description lR-198
overview LR-14
HCF
See Host Communications Facility
HOR1 tape label SG-295
header labels, tape SG-293
header record, text editor 10-385
header statement
examples SM-14
purpose SM-60
rules SM-60
header, position descriptions
position 1 - statement
type SM-60
position 11 ascending/descending
sequence SM-6.3
position 12 - message
output SM-64

IG-298

SC34-0404

position 13 - keep/drop control
fields SM-64
position 14 - warning message
option SM-66
position 15 - data set organizat ion SM-66
..
position 16 - collating
sequence SM-67
position 17 - I/O error processing SM-67
position 35-80 comments SM-68
positions 2-7 - Sort/Merge
application SM-60
positions 8-10 - sum of control
field lengths SM-62
HELP command ($OEBUG) OR-153
hold line active timeout SN-I06
holding spool jobs(s) CA-426
horizontal tabs, defining with
$IMAGE OR-331
host assembler PP-39
Host Communications Facility
data set
characteristics CT-348
host data sets CT-348
internals 10-181
overview CT-11, CT-347, SG-14,
SG-83
programming examples CT-365
requirements CT-347
return codes CT-373, MC-276
storage and performance . CT-352
system status data set CT-350
TP instructions
CLOSE CT-355
FETCH CT-356
OPENIH CT-357
OPENOUT CT-358
REAO CT-359
RELEASE CT-360
SET CT-361
SUBMIT CT-362
TIMEOATE CT-363
WRITE CT-364
TPCOM module description ID-73
utility program
. ($HCFUT 1) CT-367
host considerations, $RJE5NA
005/V5E (VSE/POWER) SN-235
OS/VS1 (RES) SN-233
OS/VS2 MVS (JES2) SH-227
05/VS2 MVS (JES3) SH-231
VTAM HCP SN-225
host data set naming conventions,
Host Communications
Facilit CT-348
host 10 data list, building SH-17
host initiated transactions,
rejecting SN-41
host logon, $RJESNA SN-207
host-initiated transactions,
accepting SN-40
.
HOSTCOMM statement SG-10~
HOSTID parameter, HETIHIT 5N-21
HRJE command ($RJESNA) SN-212
HTAB command ($IMAGE) OR-331
HX subcommand ($OICOMP) CT-177
HXUT1, H exchange utility OR-298

;Y' "''',

I\~,_J

c

0
,

,1

,

o

I-conversion (Iw) lR-164
I/O control block spool (IOSPTBl)
description 10-151
listing 10-371
I/O device instruction
level lR-18
I/O direct
Series/l to Series/l CT-85,
lR-367
with IOCB lR-209
with PRINTEXT LR-241
with REAOTEXT lR-300
I/O error exi t
example SM-146
in parameter list SM-133
writing program with SM-131
I/O error logging
activating SG-259
data set list utility,
$OISKUT2 OR-180
description SG-259
device table 10-395
equates 10-391
invoking OR-400
log control record 10-395
log data set OR-400
lOG macro
description SG-263
syntax SG-263
printing the errors SG-258
record layout 10-391
recording the errors 10-393,
SG-258
storage requirements SG-220
tape log entries SG-262
USER instruction
description SG-265
example SG-266
syntax SG-265
I/O error option SM-66, SM-61
I/O errors, SOLC device
never retried SN-I07
retried until count
exceeded SN-I07
retri ed unt i I
successful SN-I01
I/O functions
EXIO control internals 10-153
HOSTCOMM statement SG-I00
instruction level
control LR-18
sensor-based
sensor-based SBIOCB
internals 10-159
summarized SG-56, SG-59
terminal SG-79
timers SG-42
IACB (indexed access control
block)
creating CA-54, IG-81
description IM-5
equates IM-I02
queue description IM-8
lAM module CA-12
IAMEQU (Indexed Access Method copy
code module) LR-432
IAMEQU module CA-12
IBM 3105 communication
controller SI-l
10 command ($INITOSK) OR-346

10 statement
See $10 statement
roc, immediate device control
block SI-340
IOCB statement.
coding description LR-201
function SG-57
IDCB command LR-201
overview lR-18
IOCHECK function, Remote Management Utility CT-267, 10-203
identifying batch job stream
continuation point OR-386
identifying batch job stream data
set OR-380
i denti fyi ng host
application SN-17
IE command ($IAMUTl) IG-155
IF instruction
coding description LR-203
overview LR-21
II command ($INITOSK) OR-358
II line command ($FSEOIT) OR-287
lIB (interrupt information
byte) CA-220
1M function ($POS) SG-33l
1M subcommand ($OICOMP) CT-177
image dimensions, defining OR-328
image, formatted screen
creating OR-321
See also screen formats, terminal support
immediate action routines
BSC access method
(BSCIA) 10-178
interrupt servicing ID-37
specifying maximum
number SG-I04
supervisor entry 10-38
immediate data LR-5
immediate device control block,
IOC SI-340
immediate session
termination SN-60
implied message acceptance SN-42
IMS/VS considerations SN-155
IMS/VS definition macros
COMM macro SN-156
NAME macro SN-160
TERMINAL macro SN-157
TYPE macro SN-157
IMS/VS support SN-155
IN command ($OICOMP) CT-167
IN command ($OIUTIl) CT-198
in-storage specifications SM-131
INCLUDE control statement ($EOXLINK) PP-53
INClUOE control statement
($lINK) PP-91
include set
definition SM-93
example SM-20
how to specify SM-95
INCLUDE statement requirement
(EXTRN) LR-145
include-all
See include-remaining statement
include-remaining statement
how to specify SM-95
purpose SM-94
include/omit statement
example SM-20
how to specify SM-95
purpose SM-93
Common Index

IG-299

include/omit, position
descriptions
factor 1 field, rules SM-99
factor 2 constant,
rules SM-I02
factor 2 field, rules SM-I0l
position 1 - statement
type SM-97
position 14 - constant or
field SM-I0l
position 2 - AND/OR
indicator SM-98
position 3 - data types SM-98
positions 12-13 - test relational SM-I0l
positions 15-22 -factor 2
field SM-I01
positions 15-34 - factor 2
constant SM-I02
positions 35-80 comments SM-I03
positions 6-11 - factor 1 field
location SM-99
specifying in header SM-66
independent indicator IG-68
index block
description CA-159
internal description IM-6
index entry, text editor 10-386
indexed access control block
description IM-S
equates IM-I02
See also IACB (indexed access
control block)
Indexed Access Method
$IAM load module CA-189
$IAMUTI utility CA-I03, IG-141
base records
definition of CA-33, IG-61
load mode IG-61
loading CA-33, IG-61
processing mode IG-61
BTE (buffer table entry) IM-6
buffer management CA-143,
IG-210
coding example CA-97, IG-233
components CA-12, 1G-4
concepts and facilities CA-ll,
IG-l
control block
descriptions 1M-S
equate listings 1M-81
.1 i nkages 1M-9
control flow IM-l
data block header IM-6
data paging internals IM-33
delete threshold
parameter CA-118
devices supported by CA-l1,
1G-3
diagnostic aids 1M-57
dynamic file facilities CA-20,
1G-41
error recovery
common IM-45
data paging 1M-53
data-set-shut-down CA-150,
IG-215
deadlocks CA-151, IG-218
error exit facility CA-148,
IG-213
long-lock-time CA-151,
IG-218
secondary index 1M-55
IG-300

SC34-0404

system function return
codes CA-149, IG-215
features CA-2, IG-l
file control block (FCB) IM-5
file locking system IM-7
I/O requests
DELETE CA-67, IG-I01
D1SCONN CA-69, IG-I04
ENDSEQ CA-71, IG-I06
EXTRACT CA-73, IG-I08
GET CA-75, IG-l11
GETSEQ CA-78, IG-114
LOAD CA-81, IG-118
overview CA-13
PROCESS CA-84, IG-122
PUT CA-87, IG-127
PUTDE CA-89, IG-130
PUTUP CA-91, IG-133
RELEASE CA-93, IG-136
syntax summary CA-95,
1G-138
verifying CA-152, IG-219
index block header IM-6
indexed access control block
(IACB) IM-5
installation CA-186, IG-221
languages supporting CA-12,
IG-4
loading CA-15, IG-204
loading file CA-33, IG-61
locking, record CA-144
master control block
(MCB) IM-5
overview SG-ll
performance CA-142, IG-205
preparing application program
$JOBUTIL procedure CA-196,
IG-230
link-edit control
file CA-197, IG-231
overview CA-195, 1G-229
problem determination 1M-57
queue description IM-8
record deletion
processing CA-181, IM-21
record insertion
processing CA-175, IM-15
record/request processing IM-2
requesting records CA-15
resource contention CA-144,
IG-210
return codes
DELETE CA-68, IG-I02
DISCONN CA-69, IG-I04
ENDSEQ CA-71, IG-I06
EXTRACT CA-74, IG-I09
GET CA-77, IG-113
GETSEQ CA-80, IG-116
LOAD CA-83, IG-120
PROCESS CA-86 , IG-125
PUT CA-88, IG-128
PUTDE CA-89, IG-131
PUTUP CA-92, IG-134
RELEASE CA-93, IG-136
summary CA-96, IG-139,
MC-241
Secondary Index
Directory IM-29
secondary indexes IM-25
services CA-13
storage allocation IM-l
storage layout CA-15, IG-204
storage requirements CA-141,
IG-203

/1

"'J

,~-.,

c

o

o

tailoring
$IAMUT1 buffer size CA-193
buffer/control block allocations CA-190
central buffer size CA-191
Indexed Access Method buffer
size IG-44
usi ng al ternate
allocations CA-189
using read-only $IAM CA-194
volume requirements SG-178
with data paging IM-33
indexed data set
See indexed file
indexed fi Ie
building file CA-31
control block structure CA-155
design considerations CA-20
designing file CA-23
format
blocks CA-157, IG-24
clusters CA-168, IG-30
data blocks CA-160, IG-26
file control blocks CA-159,
IG-40
free blocks CA-170, IG-27
free pool CA-172, IG-39
free records CA-168, IG-27
free space CA-168, IG-27
higher-level index
block CA-166, IG-37
index CA-161, IG-30
index blocks CA-159, IG-30
index example CA-167, IG-37
last cluster CA-171, IG-33
overview CA-154, IG-17
PIXB CA-161, IG-32
reserve blocks CA-170,
IG-32
reserve index
entries CA-170, IG-36
sequential chaining CA-161,
IG-28
SIXB CA-164, IG-35
loading with $IAMUTI IG-62
maintenance
backup and recovery CA-60,
IG-94
deleting file CA-62, IG-96
dumping file CA-62, IG-96
recovery CA-61, IG-95
reorganizing file CA-61,
IG-95
overview CA-18
processing
accessing file CA-S5, 1G-89
connecting file CA-54,
IG-87
deleting records CA-~9,
IG-93
direct reading CA-55, IG-89
direct updating CA-S',
IG-90
disconnecting file CA-54,
IG-87
extracti ng fi Ie
attributes CA-59, IG-93
inserting records CA-59,
IG-93
loading sequential
file IG-65
sequential processing summary CA-58, IG-92

sequential reading CA-57,
IG-90
sequential updating CA-57,
IG-91
setti ng up
building file CA-31
defining file
structure IG-19
defining the key CA-24,
IG-18
designing file
structure CA-25
loading base records CA-33,
IG-61
loading from sequential
file CA-36, IG-64
preparing input CA-35,
IG-63
selecting block size CA-23
setting file
structure CA-31
structured and dynamic
files CA-20, IG-40
indexing, address feature LR-7
indicator, auto-update IG-69
Information Management
System/Virtual Storage
(IMS/VS) SI-1
INIT-SELF command SN-136
initial program load
See IPL (initial program load)
initialization
automatic restart SG-174
disk (4962) OR-131
disk (4963) OR-136
disk and diskette SG-204
disk or diskette, $INITDSK
utility OR-346
diskette
(4964,4965,4966) OR-122
graphics data base CT-198
IPL SG-204
module overview ID-61
modules 10-9
nucleus 10-5
Seriesl to Series/1 CT-103
stand-alone dump
diskette OR-120
tape SG-205
terminal SG-213
initializing IPL text OR-358
initializing volumes OR-357
INITMOOS table 10-9
INITTASK initialization task ID-5
input buffer, Multiple Terminal
Manager
contents during I/O
operations CA-220
description CA-219
internals M-23, M-37
input data parsing ID-240
input data set SM-9
input error function, Remote
Mangement Utility 10-208
input exit
example SM-146
rules for passing
records SM-139
uses SM-33
wri ti ng program with SM-137
input operations, GPIB ID-124
input record as data field
example SM-3
how to specify SM-125
Common Index

IG-301

required entries in field
statement SM-109
restriction with summary
fields SM-126
rules for specifying SM-125
use with variable input
records SM-125
INPUT subcommand
($EDIT1/N) OR-222
input/output control block
See IOCB instruction
input, terminal 1/0 lR-32
insert secondary index directory
entry IG-155
inserting block of text OR-288
inserting elements
(graphics) CT-167
inserting line of text OR-286
inserting member
(graphics) CT-171
installing $RJESNA SN-221
installing the system SG-27
instruction and statements overview lR-13
instruction definition and checking, $EDXASM ID-267
instruction expansions, 370 Channel Attach T-29
instruction format, Event Driven
language ID-55, lR-3
instruction locations, directory
of lR-34
instruction processing,
SNA SN-141
instruction sequence,
examples SN-13
integer and logical
instructions lR-14
interactive debugging OR-142,
SG-65
intercepting class
interrupts OR-491
interchanging data SG-23
interface layers SI-4
interface routines,
supervisor ID-50
interface, $JOBUTIl
($EDXlINK) PP-65
interface, $JOBUTIl interactive
($EDXlINK) PP-67
interface, $JOBUTIl
non-interactive ($EDXlINK) ~P-66
interface, $l interactive ($EDXLINK) PP-62
interface, $l non-interactive
($EDXLINK) PP-61
interrupt information byte
(lIB) CA-220
interrupt keys
attention key CT-20
enter key CT-21
program function (PF)
keys CT-20
interrupt line (Channel
Attach) CT-466
interrupt servicing
EXIO ID-156
GPIB ID-127
immediate action
routines ID-37
Series/1 to Series/1 ID-132
terminal 1/0 CT-20, ID-106
interrupt types, PSW MC-282
INTIME instruction
IG-302

SC34-0404

coding description lR-207
overview lR-32, SG-42
introduction to EDl lR-1
INVITE parameter, NETPUT SN-30
invoke your operator command
($U) OR-37
invoking $GPIBUT1 OR-292
invoking directory
subcommands IG-150
invoking operator commands OR-22
invoking session manager OR-46
invoking Sort/Merge, methods
with $JOBUTIL utility SM-42
with lOAD SM-44
invoking user written operator
command SG-61
invoking utilities SG-62
IOCB instruction
BUFFER parameter lR-209
coding description lR-209
direct 1/0 LR-209
function SG-79
overview lR-30
structure CT-35
terminal 1/0
instruction LR-209
use in accessing virtual terminals CT-205
use in defining logical
screen CT-33
using PRINTEXT lR-247
using READTEXT lR-300
IODEF statement
,coding description SG-361
function SG-59, SG-360
SPECPI process interrupt user
routine SG-365
lOR instruction
coding description lR-214
overview lR-14
IOSPTBl (spool 1/0 control block)
description ID-151
listing 10-371
IP command ($SIS1UT1) CT-103
IPl (initial program load)
$SlSlUTl utility CT-86
automatic
initialization SG-174
diagnosing a problem SG-270
internals ID-5
ISAPPID parameter, NETHOST SN-17
ISMODE parameter, NETHOST SN-17
ISPASWD parameter, NETHOST SN-18
ISQUEUE parameter, NETHOST SN-18
ISRQID parameter, NETHOST SN-18
ISUSFlD parameter, NETHOST SN-18
IV command ($INITDSK) OR-357

[~l
JOB command ($JOBUTIl) OR-384
job control block
spool active job (SPA)
description ID-147
listing 10-371
spool job (SPJ)
description 10-146
listing 10-372
job control statement OR-384
job stream control records SN-206

c

o

job stream processor,
$JOBUTIL OR-376
job streams, submitting SN-214
JOURNAL command ($RJESNA) SN-212
journal data set SN-212
journaling messages SH-212
JP command ($PDS) SG-329
JP subcommand ($DICOMP) CT-177
JR subcommand ($DICOMP) CT-178
JUMP command ($JOBUTIL) OR-385
jump to address (graphics) CT-177
jump to reference
(graphics) CT-178
jumping to batch job stream
label OR-385

keep/drop option
specifying SM-64
when to use SM-65
keeping spool job CA-427
key
See program function (PF) keys
key, primary IG-18
key, secondary IG-67
Keyboard define utility for 4978,
$TERMUT2 OR-468
KEYS command ($IMAGE) OR-331
keyword operand definition LR-5

o

LA command ($DISKUT1) OR-168
LA command ($DIUTIL) CT-199
LA command ($TERMUT1) OR-465
label
field LR-3
syntax description LR-4
LABEL command ($JOBUTIL) OR-386
LABELS subroutine, $EDXASM ID-264
label s, tape
See tape label s
LACTS command ($DISKUTl) OR-l68
LAD command ($DISKUT1) OR-178
language control data set,
$EDXASM ID-243, PP-22
language products SG-3
LAST parameter, NETPUT SN-30
LASTQ instruction
coding description LR-216
overview lR-24, SG-42
lAVcommand ($DISKUTl) OR-179
layers, terminal I/O ID-97
lB function ($PDS) SG-326
LB subcommand ($DICOMP) CT-178
lC command ($TERMUT2) OR-476
LD command ($DISKUT1) OR-174
LD command ($IOTEST) OR-374
LDCB command ($GPIBUTl) CT-137
LDCTS command ($DISKUTl) OR-168
LE (less than or equal) LR-2l
LE command ($IAMUTI) IG-156
level status block
See LSB (level status block)
LH command ($DIUTIL) CT-199
LI command ($TERMUT2) OR-477
LI function ($PDS) SG-327

LI subcommand ($DICOMP) CT~178
library
definition SG-48
directory ID-77
licensed programs
descriptions SG-5
Event Driven Language SG-26
FORTRAN SG-25
Macro Assembler Language SG-26
line command ($FSEDIT) OR-285
line commands, $FSEDIT OR-280
line connection types
(SDLC) SN-I05
line continuation, source LR-4
line editing, $EDITI/N OR-235
description OR-237
line pointer reposition
See moving line pointer
LINK control statement
($EDXLINK) PP-54
link map ($EDXLIHK) PP-70
link-editing $HETCMD SH-12
LINK, Multiple Te~minal Manager
CALL
coding description CA-260
internals M-Il
overview of CA-206
1 i nkage edi tor
See $LINK
linkage editor overlays
See overlay support
linkages AM-9
linking decompaction
routines SH-224
LINKON, Multiple Terminal Manager
CALL
coding description CA-262
internals M-ll
overview of CA-206
LIST command ($DEBUG) OR-154
LIST command ($EDITl/N) OR-206
with $EDITI/N
READ OR-207
LIST command ($EDXASM) PP-13
LIST command ($EDXLIST) PP-25
list partitions and
programs OR-24
LIST subcommand ($EDITI/N) OR-224
list i ng breakpo i nts and trace
ranges OR-IS!
listing characters
(graphics) CT-178
listing control instructions
EJECT LR-l10
overview LR-19
PRINT LR-244
SPACE LR-322
TITLE LR-380
listing data members OR-174
listing data members in CTS
mode OR-168
listing data set
with $DISKUT2 OR-185
with $DIUTIL CT-202
with $EDIT1/N OR-224
with $FSEDIT OR-270
listing data set status
(graphics) CT-20l
listing date/time CT-183, OR-44
listing device control block
(GPIB) CT-137
listing devices OR-374
listing error specification PP-13
Common Index

IG-303

listing hardware
configuration OR-368
listing insert mask OR-289
listing members CT-168, CT-199,
OR-175
listing members, all
with $DISKUTI OR-168
with $DIUTIL CT-199
listing processor program, $EDXLIST PP-24
listing program function key
codes OR-410
listing program function
keys OR-331
listing program members OR-168
listing secondary index
directory IG-156
Ii sting status of all
tasks OR-162
listing storage OR-30
listing supervisor
configuration OR-375
listing terminal
names/types/addressses OR-465
listing variables CT-183
listing volumes on disk or
diskette OR-362
LISTP command ($OISKUTl) OR-168
LISTT command ($OISKUTl) OR-168
LL command ($OISKUTl) OR-175
LL command ($OISKUT2) OR-186
LO command ($IAMUTl) CA-II0,
IG-162
LOAD Indexed Access Method CALL
description CA-81, IG-118
return codes CA-83, IG-120
LOAD instruction
coding description LR-217
example SM-146
overview LR-28
preparing a job using SM-13l
required parameters SM-132
return codes LR-221, MC-244
return codes from
Sort/Merge SM-135
'used with overlays SG-40
when to use SM-131,
wi th automat i c
in,itialization SG-174
load mode IG-61
load point defined LR-26
loading $SNA SI-3
loading control store OR-476
loading image store OR-477
loading indexed file CA-l10,
IG-162
loading overlay programs ID-19
loading overlay segments ID-20
loadi ng program
$L,operator command OR-32
automatic
initialization SG-174
EXEC $JOBUTIL command OR-383
internals 10-16
loading secondary index IG-75
loading SNA support SN-I00
LOCAL ATTNLIST LR-50
LOCATE command ($FSEDIT) OR-277
location dictionary,
$EDXASM ID-277
locking queues AM-IO, 1M-II
locks, Indexed Access Method
block and record AM-IO, 1M-II
conditional processing IG-88
IG-304

SC34-0404

description CA-54, IG-87
file AM-12, IM-13
overview CA-3, IG-2
LOG command ($JOBUTIL) 'OR-387
log data set for I/O errors OR-400
LOG macro SG-263
log statement
default if not written SM-S7
how to wri te SM-58
purpose SM-57
relative position SM-57
logging device for messages
changing SM-59
defaults SM-59
logging on to host
($RJESNA) SN-207
logical end-of-file on
disk SG-354
logical screen, terminal support
examples CT-33, CT-34
us; ng IOCB and ENQT to
define CT-33
using TERMINAL to define CT-32
logical unit, defining SH-114
logon menu, session manager OR-46
low storage
during IPL ID-6
during program load ID-16
LP command ($DISKUTI) OR-176
LP command ($OISKUT2) OR-181
LPCTS command ($DISKUTl) OR-168
LR function ($PDS) SG-331
LR subcommand ($DICOMP) CT-179
LS command ($OISKUTI) OR-177
LS command ($IOTEST) OR-375
LSB (level status block) ID-42
LT (less than) LR-21
LU command ($DISKUT2) OR-185
LU parameter
NETCTL SH-48
NETGET SN-37
HETINIT SN-19
NETPUT SN-30
NETTERM SH-59
SHALU SN-l14
LUE control block, LUE SI-342
LUL control block, LUL SI-342,
SI-352
LUS, system services control
block SI-366, SI-367
LUSTAT command SH-136

macro assembler internals ID-279
macro library SG-7
macro library/host SG-8
magazine, diskette
See 4966 Diskette Magazine Unit
magnetic tape
See tape
mapping storage SG-I04
MASK line command
($FSEDIT) OR-289
master control block
description IM-5
printer spooling
description ID-144
listing ID-373
See also MCB (master control
block)

'-'\.,

( _,
,I

\

1

..

,'Ij

c

o

(~:

o

Mathematical and Functional
Subroutine Library SG-8
MCB (master control block)
description AM-5, IM-5
equates AM-51
MCB (member control block) SG-333
MO command ($DIUTIL) CT-200
member area SG-324
member control block (MCB) SG-333
MENU command ($FSEOIT) OR-277
MENU Multiple Terminal Manager
CALL
coding description CA-264
overview of CA-206
MENU, Multiple Terminal Manager
CALL
internals M-ll
menus
option selection menu OR-52
parameter selection menu OR-52
primary option menu OR-55
primary option menus OR-264
See also session manager, menus
See session manager, menus
MERGE (merge)
contrasted with sort SM-l
example SM-16
func":i ons supported SM-13
output record size,
determining SM-242
specifying in header SM-60
MERGE option ($FSEOIT) OR-271
message acknowledgment SN-33
message cancellation SN-52
message completion criteria SN-39
message flow, suspending SN-53
Message Format Service
(MFS) SN-161
message length, specifying SN-30
message numbers SN-24
message output
changing output device SM-57
overriding header
statement SM-60
specifying SM-64
with header statement SM-64
with log statement SM-60
message resynchronization
data set SN-63
data set content SN-64
data set size SN-63
disk considerations SN-65
main storage
considerations SN-65
protocols for STSN SN-65
message resynchronization, definition of SN-7
message sending utility,
$TERMUT3 OR-487
message syntax MC-3
message verification SN-52
message verification,
requesting SN-30
message/module cross-reference,
Sort/Merge SM-193
message, PRINTEXT
instruction LR-248
messages
compilation time
($EOXASM) MC-169
compilation time
($S1ASM) MC-191
definition SN-6

examples wi th
explanation SM-36
execution time
(alphabetized) MC-ll
execution time (with
variables) MC-5
list SM-249
program status SM-247
specification SM-247
statistics SM-247
system initialization SG-204
warning message option SM~66
messages, definition of SN-6
MFA
See Multifunction Attachment
mi xed preci si on
combinations LR-15
MM line command ($FSEOIT) OR-290
mode table, patching
$RJESNA SN-227
mode, load IG-61
mode, processing IG-61
modified data
reading from the 3101 CT-57
reading from the 4978 CT-57
3101 considerations CT-71
3101 example CT-73
modified data tags CT-71
modify defaults, Remote Management
Utility CT-320
modifying characte~ image
screen OR-246
modifying character string
with $EDITI/N OR-214
with $FSEDIT OR-273
modifying default storage allocation OR-190
modifying existing data
set OR-267
modifying image/control
store OR-468
modifying storage or
registers OR-157
modifying the TERMINAL
statement 10-116
module descriptions
GPIB 10-71
Indexed Access Method
common AM-23, IM-45
data paging 1M-53
secondary inde~ 1M-55
Multiple Terminal Manager
component M-25
link modules T-18
overlay programs T-32
program modules T-8
utility M-29
utility program
modules T-26
printer spooling 10-71
Remote Management
Utility 10-217
Series/l to Series/l 10-72
supervisor 10-57
370 Channel Attach T-7, 1-25
module names, supervisor SG-465
module removal, $IAMSTGM IG-206
MOVE instruction
coding description LR-225
overview LR-14
MOVEA instruction
coding description LR-229
overview LR-14
Common Index

IG-305

MOVEBYTE subroutine,
$EDXASM ID-262
moving block of text OR-290
$FSEDIT line command OR-290
moving line pointer
down OR-219
to bottom OR-213
to top OR-232
UP
OR-233
moving tape OR-449
moving text
•
$EDITI/N subcommand OR-225
movi ng volumes on di sk or
diskette OR-404
MP function ($PDS) SG-327
MP subcommand ($DICOMP) CT-180
MSGDATA parameter, NETINIT SN-20
MT command ($TAPEUTl) OR-449
MTMFILE5 utility CA-319, M-29
MTMPFMAP utility CA-315, M-29
MTMPGM5 utility CA-316, M-29
MTMRPT utility CA-318, M-29
MTMSCRNS utility CA-317, M-29
MTMSTORE file CA-212, M-20
MTM5TR volume CA-218
MTMUPDT utility CA-312, M-29
MTMUT2 utility CA-308, M-30
multi conditional force
data types allowed 5M-112
definition 5M-119
how to specify 5M-119
keep/drop from output
record 5M-64
length, maximum
in a field statement 5M-112
specifying in header 5M-63
total in include set SM-119
number, maximum 5M-119
required entries in field
statement SM-109
rules for SM-115
Multifunction Attachment
attachment with 3101 Display
Terminal CT-477
changing random access
memory SG-212
considerations for attachment
of devices 5G-113
defining SG-90
description CT-9, CT-467
module description ID-69
use in binary synchronous
communications CT-l1
use with EDX terminals CT-9
multiple overlay areas,
$EDXASM ID-249
Multiple Terminal Manager
accessing the TEB CA-233
adding a new device M-6
application execution CA-217
application
organization CA-219
application program design
considerations
COBOL CA-283
EDL CA-281
FILEIO CA-290
FORTRAN CA-285,
PL/I CA-287
spooling CA-289
application program stub M-9
application swap-out CA-218
automatic OPEN/CLOSE CA-242
CALL functions
IG-306

5C34-0404

ACTION CA-225, M-I0
BEEP CA-229, M-9
BLINK CA-231, M-I0
CDATA CA-233, M-9 \
CHGPAN CA-236, M-9
CYCLE CA-238, M-I0
FAN CA-240
FILEIO CA-242, M-9
FTAB CA-254, M-26
GETCUR CA-258, M-I0
LINK CA-260, M-l1
LINKON CA-262, M-ll
MENU CA-264, M-l1
overview CA-205
SETCUR CA-266, M-9
SETFMT CA-268, M-I0
5ETPAN CA-272, M-9
WRITE CA-275, M-I0
CCB with printer spooling M-13
component flow M-3
components CA-205, M-3
concepts and facilities CA-201
creating additional
copies CA-386
data files
MTMSTORE M-20
MTM5TR volume M-20
PRGRMS volume M-5
data files/volumes
considerations CA-290
MTMSTORE file CA-212
MTMSTR volume CA-2l8
PRGRMS volume CA-212
SCRNS volume CA-213
SIGNONFL file CA-293
TERMINAL file CA-212
debugging applications CA-300
direct file
FCA format CA-244
request types CA-247
disk file support CA-208
distribution CA-362
ending application CA-304
endi ng manager
operation CA-304
equate tables M-31
examples
dynamic screen
creation CA-324
dynamic screen
modification CA-323
file m.aintenance transaction
application CA-327
indexed file update CA-326
sample signon
program CA-352
sample terminal I/O error
program CA-352
screen display
techniques CA-325
screen retrieval and
display CA~321
file control area (FCA) CA-243
file management M-8
file manager CA-208
FILEIO direct file
access CA-290
FILEIO indexed file
access CA-291
hardware requirements CA-201
indexed fi Ie
considerations CA-291
FCA format CA-245
request types CA-246

c

o

c'

o

input buffer address CA-219
input buffer contents during
I/O operations CA-220
installation CA-369
interrupt information byte
(lIB) CA-220
introduction CA-4
link-edit considerations
COBOL CA-298
EDL CA-296
FORTRAN CA-297
PL/I CA-299
module descriptions M-25
output buffer CA-220
overview SG-12
printer spooling, with M-13
program management M-3
program manager CA-205
programming considerations
COBOL CA-283
EDL CA-281
FORTRAN CA-285
PL/I CA-287
return codes
FILEIO CA-247
FTAB CA-255
SETFMT CA-270
SETPAN CA-273
summary CA-278, MC-246
screen formats
SCRNADD CA-313
SCRNFIOI CA-319
SCRNFI02 CA-320
SCRNIPL CA-214
SCRNMENU CA-2'6
SCRNMTMI CA-308
SCRNMTM2 CA-309
SCRNMTM3 CA-310
SCRNMTM4 CA-311
SCRNPFMP CA-315
SCRNPGM CA-314
SCRNSIGN CA-215
SCRNSREP CA-317
SCRNUPDT CA-312
screen image manager M-7
signing on and off CA-212
SIGNOFF CA-295
SIGNON CA-293
software requirements CA-204
spooling considerations CA-289
storage environment M-ll
storage requirements SG-222
summary CA-278
swap-out data set CA-218
system generation considerations CA-367, SG-176
tailoring CA-376
terminal environment block
(TEB) CA-220, M-17
terminal manager CA-207
terminal servers M-6
terminal states M-39
utilities
$MTMUTI CA-307
$RECON CA-306
DISCONNECT CA-306
MTMFILES CA-319
MTMPFMAP CA-315
MTMPGMS CA-316
MTMRPT CA-318
MTMSCRNS CA-317
MTMUPTD CA-312
MTMUT2 CA-308
RECONNECT CA-306

3101 considerations CA-202
MULTIPLY instruction
coding description LR-230
overview LR-14
precision table LR-231
multiprogramming
automatic
initialization SG-174
design feature SG-16
multitaskini SG-16

NBLINK subroutine CA-476
NCP major node definition
operands SN-313
sample SN-318
Series/l related
parameters SN-313
HE (not equal) LR-21
_
negative acknowledgments, respondi ng to SN-33
HETBIND return codes MC-260,
SH-94
NETCLOSE MC-261
HETCLOSE return codes MC-261,
SH-93
NETOPEN MC-262
HETCTL instruction
coding examples SH-54
description SH-47
overview SN-9
return codes MC-251, SH-55
summary of protocols SN-50
syntax SN-47
types of control
operations SN-49
HETGET instruction
coding example SN-43
description SN-37
overview SN-8
return codes MC-253, SH-44
summary of protocols SN-38
syntax SH-37
HETHOST instruction
description SN-17
syntax SN-17
, HETINIT i nstructi on
coding examples SH-17
description SN-19
overview SH-6
return codes MC-256, SH-28
return codes from STSN processing SH-85
summary of protocols SH-23
syntax SN-19
HETOPEH return codes MC-262,
SH-89
NETRECV MC-263
NETPUT instruction
coding examples SH-34
description SN-29
overview SH-6
return codes MC-257, SN-36
summary of protocols SH-31
syntax SN-29
HETRECV return codes MC-263,
SN-90
NETSEND MC-264
HETSEND return codes MC-264,
SH-91
Common Index

IG-307

NETUBNO MC-267
NETTERM instruction
coding example SN-61
description SN-59
overview SN-10
return codes MC-258, SN-62
syntax SN-59
NETUBNO return codes MC-267,
SN-94
session termination MC-268
network activation
checklist SN-311
network control program
(NCP) SI-1
newline subroutine ID-106
NEXTQ instruction
coding description lR-233
overview LR-24
timers SG-42
no data record, PASSTHRU function
of $RMU CT-293
NOFlOAT module description ID-66
NOLIST command ($EOXASM) PP-13
NOMSG command ($JOBUTIL) OR-388
non-compre~sed byte string
CT-S8
non-labeled tapes
description SG-299
layout SG-299
processing SG-300
NORING parameter, SNAPU SN-105
normal control field
contrast with opposite control
field SM-116
data types allowed SM-112
dropping SM-64
example 1-13 SM-29
how to specify SM-116
keep/drop from output
record SM-64
length, maximum
in a field statement SM-112
specifying in header SM-64
required entries in field
statement SM-109
rules SM-12l
specifying in header SM-64
when to drop SM-65
NOTE instruction
coding description LR-236
function SG-57
overview lR-16
Version 3 conversion considerations SG-435
notify of an event
See POST instruction
NP;command ($IAMUT1) IG-166
NQ command ($COPYUT1) OR-1l3
NSPE command SN-136
nucleus initialization 10-5
NULL character, defining OR-332
NULL command ($IMAGE) OR-332

object data set for $EOXASM
object module record
format 10-381
object text elements,
$EOXASM 10-237
obtaining a stand-alone
dump SG-240
IG-308

SC34-0404

PP-11

OFF function, CONTROL
instruction LR-65
OLE (operand list element) $EOXASM
format 10-239
in instruction parsing 10-242
used in $10EF ID-267
omit set
definition SM-93
how to specify SM-95
omit statement
how to specify SM-95
purpose SM-93
op (operation field) LR-3
OPCHECK subroutine,
$EOXASM 10-258
opening a data set
on disk or diskette 10-90
on tape 10-94
opening EXIO device,
EXOPEN 10-155
opening member, $POS
utility SG-334
OPENT subroutine CA-477
operands
defined lR-3
keyword LR-5
parameter naming (Px) LR-8
operating environment
minimum system
configuration SG-23
required for program preparation SG-23
operation codes
description 10-56
emulator command table
listing 10-323
in $EDXASM compiler 10-242
operations using index
registers LR-15
operator command overview
($RJESNA) OR-42l, SN-210
operator command/utility selection
guide OR-9
operator commands OR-21, SG-61
operator commands overview OR-2
operator termination
($EOXLINK) PP-69
operators, arithmetic LR-4
opposite control field
contrast with normal control
field SM-116
data types allowed SM-112
dropping when not
ascending SM-65
examples SM-18
how to specify SM-116
keep/drop from output record
default drop with variable
records SM-6S
example SM-20
specifying in header SM-64
when to drop SM-6S
length, maximum
in a field statement SM-112
specifying in header SM-64
total in include set SM-116
numbert maximum SM-116
required entries in field
statement SM-109
rules for (see also control
field) SM-116
.option selection menu OR-52
'optional features support LR-13
orderly session termination SN-60

c

o

o

OTE $EDXASM instruct ion ID-253'
output buffer, Multiple Terminal
Manager
contents during I/O
operations CA-220
description CA-220
internals M-23, M-37
output considerations for terminal
support
end of forms for
printers CT-24
forms control CT-23
output line buffering CT-23
OUTPUT control record
( $ LIN K) PP-8 9
output data set SM-9
output exit
example SM-146
returning control SM-142
rules for passing output
records SM-142
uses SM-36
writing program with SM-139
output operations, GPIB ID-125
output record size,
determining SM-241
overflow indicator
example SM-29
how to specify SM-127
purpose SM-127
rules 5M-127
overflow, arithmetic LR-15
OVERLAY control statement ($EDXLINK) PP-55
overlay function process
table 1D-192
OVERLAY option ($EDXASM) PP-14
overlay support
overlay program SG-37, T-30
loading ID-19
subroutines, $EDXASM ID-257
supervisor initialization
routines 5G-210
overlay segment 5G-37
considerations PP-78
loading 1D-20
storage layout PP-78
overlay table, Remote Management
Utility ID-192
overlay work area, $EDXA5M ID-247

pacing 5N-131
pacing response 5N-132
pad characters, specifying 5N-I05
PAD parameter, 5NAPU 5N-I05
page eject 5G-61
page table, data paging 1M-36
parameter equate tables LR-431
parameter list 5M-132
parameter naming operands
(Px=) 5N-ll
parameter naming operands in
instruction format LR-8, 5N-11
parsing, input data
($EOXA5M) 10-240
partial messages, sending 5N-35
partition assignment, changing
CP command ($GPIBUT1) CT-135
partitioned data sets 5G-321

partitions 5G-43
pass control to log
routines 5G-263, 5G-265
passing parameters using
$JOBUTIL OR-389
PA55THRU function
communications flow CT-284
conducting a session CT-286
establishing a session CT-281
example of passing
parameters CT-256
internals ID-205
logic flow diagram CT-288
overview CT-281
programming
considerations CT-294
record blocking CT-294
sample program CT-306
types of records CT-289
virtual terminals CT-294
with $OEBUG CT-314
PA5STHRU record, Remote Management
Utility CT-253
PATCH command ($OEBUG) OR-157
patch, Remote Management Utility
defaults CT-320
patching $RJESNA mode
table SN-227
patching disk/diskette OR-181
patching storage OR-33, 5G-61
patching storage or
registers OR-157
PAUSE command ($JOBUT1L) OR-390
PC function ($P05) SG-329
PC subcommand ($OICOMP) CT-181
PO command ($IOTEST) OR-370
performance (Sort/Merge) SM-155
performance aids
supervisor initialization
routines 5G-2I0
using 1024-byte sectors 5G-208
performance volume
defined 5G-96
description SG-208
performing a customized system
generation 5G-194
PF keys
See program function (PF) keys
PG command ($IAMUT1) IG-167
PGPIB command ($GP1BUTl) CT-142
phase execution, $51A5M 10-281
physical unit services control
block, PUS SI-371, SI-372
physical unit, defining 5N-I04
PI
See process interrupt
P10 program directory 5G-27
PIXB (primary-level index
block) CA-161, 1G-32
PL subcommand ($OICOMP) CT-181,
CT-182
realtime data member CT-184
PL/I
estimating storage
requirements SG-228
execution requirements 5G-25
link editing SG-72
overview SG-I0
program preparation requirements 5G-25
use with Multiple Terminal
Manager CA-287
PLC, program list control
block SI-369, 51-370
Common Index

1G-309

plot control block
(graphics) CT-156
plot curve data member, $PDS utility SG-325
PlOTCB control block CT-156
PlOTGIN instruction
coding description CT-155
overview CT-155
PlU bracket initiation SN-128
POINT instruction
coding description lR-238
function SG-57
overview lR-16
polling and selection, BSC CT-215
post codes
BIND event MC-218, SN-94
channel attach CT-438, MC-219
See also completion codes and
return codes
tape CONTROL lR-67, MC-222
tape READ lR-296, MC-222
tape WRITE lR-397, MC-222
POST command ($DEBUG) OR-159
POST instruction
coding description lR-240
internals ID-48
overview lR-28, SG-31
POST supervisor function ID-36
posting GPIB operation
complete CT-142
power outage, restoring
after SG-174
PP command ($IAMUT1) IG-168
PR command ($CHANUTl) CT-409
PR command ($OICOMP) CT-168
precision
combinations allowed lR-15
floating-point
arithmetic lR-16
integer and logical lR-14
precision table lR-15
PREPARE IOCB command lR-201
PRGRMS volume CA-212
PRGRMS volume, Multiple Terminal
Manager M-5
primary OR-264
primary commands, $FSEDIT OR-272
primary control statement data
set PP-48
primary option menu,
$FSEOIT OR-264
primary option menu, session
manager OR-55
primary-level index block
(PIXB) CA-161, IG-32
PRINDATE instruction
coding description lR-242
function SG-79
overview lR-30, SG-42
PRINT statement
coding description lR-244
overview lR-19
print utilities, remote job
entry CT-343
printer function, $RJESNA SN-204
printer spooling
advantages of CA-3
automatic writer start CA-441
capacity parameters
changing CA-437
defaults CA-439
cold starting 'CA-438
components
operator command CA-405
IG-310

SC34-0404

spool manager £A-400
spool utility CA-404
spool writers CA-402
concepts and facilities CA-393
considerations for
Multiple Terminal Manager
user CA-289
Pl/I user CA-408
control blocks
descriptions ID-143
listings 10-371
controlling from a program
controlling spool job processing CA-449
finding if spooling
active CA-454
preventing spooled
output CA-447
separating SPooled
output CA-449
summary CA-447
cross-reference CA-409
data flow CA-397
functions summary CA-393
install i ng and
optimizing CA-455
internals
$SPOOL program ID-135
control block
listings 10-371
control blocks 10-143
introduction CA-396
language considerations CA-408
Multiple Terminal Manager M-13
operator functions
change max active spool
jobs CA-441
change max spool
jobs CA-441
change spool data
set CA-441
change spool devices CA-441
delete generic spool
jobs CA-420
delete spool jobs CA-418
display spool status CA-421
hold spool job(s) CA-426
invoking CA-412
keep spool job CA-427
release spool job(s) CA-429
restart spool writer CA-431
start spool writer CA-435
stop spool facility CA-430
stop spool writer CA-433
overview SG-18
requirements to use CA-397
restarting CA-438
return codes MC-249
starting CA-401
storage requirements SG-219
supervisor interface
module 10-139
system generation CA-397
system generation considerations SG-176
term definitions CA-395
terminating CA-402
tips and techniques CA-406
PRINTEXT instruction
coding description LR-247
function SG-79
overview LR-30
return codes lR-253
use in terminal support

o

c

o

o

o

changing individual
fields CT-40
using on 3101
terminals CT-44
PRINTIME instruction
coding description LR-259
function 5G-79
overview LR-30
printing B5C trace files CT-237
printing graphics member CT-168
PRINTNUM instruction
coding description LR-261
function 5G-79
overview LR-30
PRINTON command ($RJE5NA) 5N-213
PRINTON command
($RJE2780/$RJE3780) CT-340
priorities, $RJE5NA
workstation 5N-205
priorities, 5NA task 5N-11
priority
assigned to tasks 5G-30
design feature 5G-16
illustrated 5G-34
program LR-267
SNA ta sk 5N-11
task LR-335
task internals 10-30
work station ($RJESNA) SN-205
PRNT command ($IMAGE) OR-334
problem determination
access method AM-31, 1M-57
binary synchronous communications CT-235
BSC utilities for CT-10
Remote Management
Utility 10-215
Sort/Merge SM-179
terminal I/O 10-112
PROC command ($JOBUTIL) OR-392
procedures, session manager
See session ~anager
PROCESS Indexed Access Method CALL
description CA-84, IG-122
return codes CA-86, IG-125
process interrupt
control block (SBIOCB) 10-159
description SG-357
100EF statement 5G-361
IOTEST command OR-368
supported by sensor I/O SG-20
user routine (5PECPI) 5G-364
processing compacted data 5N-223
processing compiler output with
$LINK or $UPOATE PP-7
processing mode IG-61
processor status word
(PSW) MC-282, 5G-275
processor-to-processor communications
transmission protocol CT-81
use in Series/1 to Series/1
Attachment CT-87
PROGEQU (program header equate
table) LR-431
program assembly or
compilation PP-2
program check message,
formats MC-279, SG-273
program control LR-20
Program Design Language (POL)
listing conventions SI-6
overview SI-6
verbs SI-7

program design language, SOLe
layer modules
CDCABNO SI-244
CDCADDTO 51-246
CDCATTN 51-247
CDCBLDDC SI-248
CDCCL500 SI-250
CDCCMDPR 51-251
CDCCMDR SI-254
CDCCNTBU 51-255
CDCCNTRL SI-256
CDCD15AB 51-257
CDCENABL SI-259
CDCIHT SI-260
CDCISXMT SI-267
CDCNOI SI-271
CDCOIO SI-272
CDCPERME SI-274
CDCPURGE SI-275
CDCRCSS SI-276
CDCSETRE SI-278
program design language, Series/1
SNA base layer modules
CDOACTLU SI-144
CDOBETBR SI-145
CDDB5MGR SI-146
CDDCLEAR 51-147
CDDCOMSC SI-148
CDDCPMGS SI-150
CDOCPMGX SI-151
CDDCP25 SI-152
CDOCTOLT 51-153
CDOCTGEN 51-154
CDDCTPRC SI-156
CDODRQRV SI-157
CDDEXRCV SI-158
CDDFISC SI-159
CDDGTBFS SI-161
CDDHXMGR 51-162
CDDINM5G SI-165
CDOl5EG SI-170
CDOLUPRG 51-172
CDDMRSCV 51-175
CDDNTDAC 51-176
CDDNTRCV 51-178
CDDNT5NO SI-180
CDDPCLUR SI-186
CDOPCNG5 SI-190
CDOPCPUR SI-191
CDOPC20T 51-194
CDOPSVOO SI-195
CDOPUSIN SI-198
CDDQCHK SI-199
CDOQOFF SI-200
CDOQON 51-201
CDDRECVY SI-202
CDDRELBL SI-203
CDDRElBS SI-204
CDORQCV SI-174
CDDRQRCV SI-205
CDDRQRSZ SI-211
CDDRQ5HN SI-212
CDDRQSNX SI-219
CDDR5RCV SI-220
CDDRS5NN SI-222
CDDR55NX SI-223
CDD5ElB SI-224
CD05E5CL SI-225
CDDSTPLK 51-227
CDD5VCCR SI-228
CDDZPNMS 51-229
NETBIND SI-134
NETCLOSE SI-140
NETOPEN SI-129
Common Index

IG-311

NETUBND 51-139
program design language, 5eries/1
5NA top layer modules
CDDFANE 51-98
CDEATTN 51-24
CDEBUFF 51-50
CDECD 51-25
CDECHKA 51-26
CDECHKRU 51-27
CDECHKOO 51-33
CDECLEAN 51-34
CDECTLOA 51-36
CDECTLOB 51-38
CDECTlOC 51-40
CDECTLOD 51-41
CDECTlOO 51-42
COECTl01 51-44
CDEOEQ 51-46
CDEDEQAB 51-47
CDEENQ 51-48
CDEEXIT 51-49
CDEGBUFF 51-51
CDEGETOO 51-52
CDEGET01 51-53
CDEINITA 51-59
CDEINITO 51-61
CDEINIT1 51-62
CDEP05T 51-64
CDEPUTOA 51-65
CDEPUTOO 51-69
CDEPUT01 51-72
CDERCVRU 51-75
CDEREJ 51-76
CDERSP SI-77
CDERSYNA 51-78
COERSYNC SI-79
CDE5NDRU 51-81
CDESTSN SI-83
COESTSNA SI-85
CDETERMA SI-88
COETERMO SI-91
COETERM1 SI-95
program end record, PASSTHRU function of $RMU CT-293
program execution via Remote
Management Utility
EXEC function CT-264
PASSTHRU function CT-281
SHUTDOWN function CT-276
program function (PF) keys
internals 10-102
listing 4978, $PFMAP
utility OR-410
PF6 with spool writer
active CA-407
use in terminal support CT-20
use with attention lists CT-21
when using $FONT OR-252
when using $FSEDIT OR-262
when using $IMAGE OR-331
when using session
manager OR-70
Program Function key record,
PASSTHRU function of $RMU CT-289
program header
description ID-21
listing ID-365
program identifier, $JOBUTll
command OR-393
PROGRAM instruction
coding description lR-266
overview LR-28, SG-31
program header
generation ID-21
IG-312

SC34-0404

program library update
See $UPOATE utility
program library update (see
,$UPOATE)
program list control block,
PLC SI-369, SI-370
program loading
See LOAD instruction
program module sectioning functions LR-20
program organization,
Sort/Merge SM-180
program preparation
$EDXASM PP-l1
$S1ASM PP-27
example SG-383
host assembler PP-39
on System/370 PP-4, SG-7
overview PP-1, SG-6, SG-21
Remote Mangement
Utility ID-210
summarized SG-66
utilities OR-56, PP-1
program sequencing
functions LR-21
program structure SG-29
program table, Multiple Terminal
Manager M-21, M-31
program termination, EXI0 10-157
program/storage manager, Multiple
Terminal Manager M-3
program/task concepts SG-29
PROGSTOP statement
coding description LR-274
overview lR-28, SG-31
prompting and advance input CT-22
protected field OR-322
protocol, HCF transmission ID-184
protocols,
resynchronization SN-65
PRT3780 utility SG-64
overview SG-15, SG-64, SG-85
PS command ($IAMUT1) IG-169
PSW (processor status
word) MC-284, SG-275
PSW bit settings MC-282
PSW interrupt types MC-282
punch data set formats SN-213
punch data set, defining SN-213
punch function, $RJESNA SN-205
PUNCHO command ($RJESNA) SN-213
PUNCHO/PUNCHS command
($RJE2780/$RJE3780) CT-340
PUNCH5 command ($RJESNA) SN-213
PUS, physical unit services
control block 51-371, 51-372
pushing a digital output
address OR-368
PUT command $FONT OR-249
full-screen text editor ($FSEDIT) OR-259
PUT Indexed Access Method CALL
description CA-87, IG-127
return codes CA-88, IG-128
PUT CUR subroutine CA-480
PUTDAT subroutine CA-481
PUT DE Indexed Access Method CALL
description CA-89, IG-130
return codes CA-89, IG-131
PUTEDIT instruction
coding description lR-276
function SV-79
ovarv;ew lR-13
return codes LR-278, MC-232

. )'
(
-~

c

o

PUTFMT subroutine CA-485
PUTUP Indexed Access Method CALL
description CA-91, IG-133
return codes CA-92, IG-134
Px parameter naming operand LR-8,
SN-l1

QC command SN-137
QCB resource control block ID-45
QCB statement
coding description LR-282
overview LR-28
QD queue descriptor LR-24
QE queue entry overview LR-24
QEC command SN-137
QUALITY command $DEBUG OR-160
QUESTION instruction
coding description LR-284
function SG-79, SG-80
overview LR-30
queuable resources SG-42
queue control block
See QCB statement
queue descriptor LR-24
queue entry
See QE queue entry
queue processing facilities SG-41
queue processing
instructions LR-24

o

RA command ($TERMUTl) OR-465
random records IG-18
RATE parameter, SNAPU SN-I05
RBN (relative block
number) CA-18, IG-40
RCB (Remote Management Utility
control block)
description ID-191
listing ID-366
RD command ($INITDSK) OR-367
RDCURSOR instruction
coding description LR-287
function SG-79
overview LR-30
RDSCB parameter, NETINIT SN-20
RE command ($COPY) OR-I07
RE command ($DISKUTl) OR-168
RE command ($DIUTIL) CT-201
RE command ($GPIBUTl) CT-139
RE command ($HCFUTl) CT-370
RE command ($IAMUTl) CA-113,
IG-170
RE command ($SlSlUTl) CT-I04
RE command ($TERMUTl) OR-466
RE command ($TERMUT2) OR-478
READ command ($EDITl/N) OR-208
READ IDCB command LR-201
READ instruction
coding description LR-290
disk/diskette return
codes LR-293, MC-234
function SG-57
overview LR-16

tape post codes LR-293,
LR-296, MC-222
tape return codes LR-293,
LR-295, MC-235
read operations, HCF ID-184
READDATA command ($HCFUTl) CT-368
READID IDCB command LR-201
reading analog input OR-373
reading character image table from
4979 or 4978 OR-247
reading data set into work file
with $EDITI/N OR-207
with $FSEDIT OR-268
reading digital input using
external sync OR-371
reading program
with $UPDATE PP-I08
with $UPDATEH PP-119
reading records from host
($HCFUTl) CT-369
READOBJ command ($HCFUTl) CT-369
READTEXT instruction
coding description LR-300
function SG-79
gathqr read operations CT-40
overview LR-30
reading unprotected
data CT-41, CT-43
return codes LR-253
using on 3101 terminals CT-43
ready task supervisor state ID-31
READI IDCB command LR-201
READ80 command ($HCFUTl) CT-369
realtime data member
$PDS utility SG-325
RT $DICOMP subcommand CT-183
receive buffers,
specifying SN-114
RECEIVE function, Remote Management Uti 1 i ty
communications flow CT-271
internals ID-199
overview CT-269
sample program CT-302
receive operations (NETCTL) SN-51
receiving function management
headers SN-42
receiving messages SN-37
receiving messages, overview SN-8
receiving status SN-47, SN-51
RECLEN parameter, HETGET SN-37
RECONNECT Multiple Terminal Manager utility CA-306
record blocking, Remote Management
Utility CT-255
record exchange, Remote Management
Utility CT-253
record format, specifying in
DSD statement SM-74
record formats, explanation
fixed SM-77
fixed block SM-79
variable SM-81
variable blocked SM-81
record header, Remote Management
Utility. CT-253
record locks, access
method AM-II, IM-12
directory IM-29
internals IM-25
record selection
advantages SM-6·
examples SM-20
how to include SM-93
Common Index

IG-313

record size, determining SM-241
record sizes, Host Communications
Facility CT-349
record summarization
examples SM-29
record/request processing AM-2,
IM-2
recording system release
level LR-36, SG-239
RECVBUF parameter, SNALU SN-114
redirecting spool jobCs) CA-41S
reformatting diskettes OR-119
register conventions
$SIASM 10-282
BSCAM processing 10-177
common emulator setup
routine 10-53
EBCOIC to floating-point
conversion 10-227
terminal I/O support ID-99
register, index LR-7
register, software LR-7
rejecting host initiated transactlons SN-41
REL command ($HCFUT1) CT-370
relating Series/l support and
applications SI-3
relational statements LR-206
relative block number
(RBN) CA-18, IG-40
definition of
loading sequential
file CA-37
RELEASE Indexed Access Method CALL
description CA-93, IG-136
return codes CA-93, IG-136
releasing space, $PDS
utility SG-335
releasing spool jobCs) CA-429
releasing status record
($HCFUT1) CT-370
relocating program loader 10-15
relocation dictionary,
$EOXASM 10-277
RELQ command SN-137
REMARK command ($JOBUTIL) OR-394
remote job entry utilities, BSC
See $RJE2780, $RJE3780,
$PRT2780, and $PRT3780
remote job entry utility,
SNA OR-420, SG-15, SN-201
remote job entry, SNA SG-1S,
SG-85, SN-201
Remote Management Utility
CORRM equates CT-330
control block CRCB)
description 10-191
listing 10-366
data areas 10-191
defaults CT-320, 10-213
error handling CT-327
function table 10-191
functions CT-250, 1D-193,
SG-64
general equate listing 10-369
installation CT-252
logic flow 10-196
modifying defaults CT-320
module descriptions 10-217
module list 10-212
operation CT-257, 10-193
overlay function process
table 10-192
overview CT-I0, CT-249, SG-82
IG-314

SC34-0404

problem determination 10-215
program preparation 10-210
requirements CT-250
sample programs CT-300
system generation considerations CT-251, SG-176
tables 10-191
removing breakpoints and trace
ranges OR-156
removing storage modules IG-206
renaming member C$D1UT1L) CT-201
renaming volumes, RV $INITDSK
command OR-366
RENUM command C$FSEDIT) OR-278
RENUM subcommand
($EOIT1/N) OR-226
reorganizing indexed file CA-61,
1G-171
report data member C$PDS) SG-32S
reposition line pointer
See moving line pointer
REQDISCONT command SN-138
request for data record, PASSTHRU
function of $RMU CT-293
request record, Remote Management
Utility CT-253
request/response header SN-I0l
request/response header,
format SN-300
requesting right-to-send SN-53
reserved labels lR-5
RESET command ($RJESHA) SH-214
RESET command,
$RJE2780/$RJE3780 CT-341
RESET control statement
C$EOXLINK) PP-56
RESET instruction
coding description LR-314
overview LR-28, SG-31
RESET option C$EOXASM) PP-14
RESET option C$FSEDIT) OR-279
reset punch data set name SH-214
resetting device, Series/l to
Series/l CT-I04
resetting GPIB adapter CT-140
resetting indexed file
parameters CA-113, IG-170
resetting line commands,
$FSEOIT OR-279
resident assembler routines,
$SlASM 10-281
resident program loader 10-15
resolution, graphics enhanced and
standard 10-225
resource control,
supervisor ID-44
restart, automatic SG-174
restart, session SH-24
restarting printer
spooling CA-438
restarting spool writer CA-431
restore/dump volume,
$MOVEVOL OR-404
restoring disk or disk volume from
tape OR-452
restoring 4974 to standard character set OR-478
RESYHC parameter, NETINIT SH-21
resynchronization data set SH-63
resynchronization data set
contents SH-64
resynchronization data,
disk SH-65

;f--~

(V

c

o

o

o

resynchronization data,
storage SN-65
resynchronization protocols SH-65
resynchronization support, specifying SH-21
retrieving Series/l data
set OR-208
RETRY parameter, SNAPU SN-I05
return codes
$DISKUT3 MC-225, SG-343
$IMDATA subroutine CT-54,
MC-239
$IMOPEN subroutine CT-47,
MC-239
$IMPROT subroutine CT-52,
MC-240
$PDS MC-226
binary synchronous communications CT-246, MC-227
channel attach CT-440, MC-229
checking SN-I0
CONVTB LR-70, MC-232
COHVTD LR-75, MC-232
description SG-232
disk/diskette LR-295, MC-234
EXIO instruction LR-141,
MC-236
EXIO interrupt LR-141, MC-237
extended error MC-259, SH-87
FADD LR-148, MC-238
FDIVD lR-151, MC-238
floating point MC-238
FMULT LR-161, MC-238
FSUB LR-179, MC-238
general terminal I/O LR-254,
MC-269
GETEDIT LR-183, MC-232
Host Communications
Facility CT-373, MC-276
Indexed Access Method
'DELETE CA-68, IG-I02
DISCONN CA-69, IG-I04
EHDSEQ CA-71, IG-I06
EXTRACT CA-74, IG-I09
GET CA-77, IG-113
GETSEQ CA-80, IG-116
LOAD CA-83, IG-120
PROCESS CA-86, IG-125
PUT CA-88, IG-128
PUTDE CA-89, 1G-131
PUT UP CA-92, IG-134
RELEASE CA-93, IG-136
summary CA-96, 1G-139,
MC-241
LOAD lR-221, MC-244
Multiple Terminal
Manager CA-278, MC-246
NETBIND MC-260
NETCLOSE MC-261
NETCTL MC-251, SN-55
NETGET MC-253, SN-44
NETINIT MC-256, SN-28
NETOPEH MC-262
NETPUT MC-257, SH-36
HETRECV MC-263
NETSEND MC-264
HETTERM MC-258, SN-62
HETUBHD MC-267
printer spooling MC-249
PRIHTEXT LR-253
PUTEDIT lR-278, MC-232
READ disk/diskette LR-290,
MC-234
READ tape LR-296, MC-235

READTEXT LR-253
SBI0 instruction MC-247,
SG-367
SDlC device MC-248, SH-113
See a I so compl et i on codes and
post codes
session termination MC-268
Sort/Merge SM-135
Systems Network
Architecture MC-251
tape LR-67
TERMCTRL LR-253
terminal I/O lR-306, MC-269
terminal support
FILEIO CA-247
for all EDX terminals CT-28
for DEVICE=ACCA CT-29,
MC-270
FTAB CA-255
GETFMT CA-474
OPENT CA-478
PUTDAT CA-481
PUTFMT CA-485
SETFMT CA-270
SETPAN CA-273
summary CA-278, CA-488
virtual terminals CT-206,
MC-274
WHERES LR-389
WRITE disk/diskette LR-394,
MC-234
WRITE tape LR-394, MC-235
return from immediate action
routine (SUPEXIT) ID-40
return from task level
(SUPRTURH) ID-40
RETURN instruction
coding description LR-316
overview lR-20, SG-41
RETURN supervisor interface 1D-51
REW (rewind tape) LR-65, OR-449
rewinding tape OR-449
RH command ($TERMUTl) OR-467
RHDATA area SN-299
RI command ($BSCUT2) CT-243
right-to-send, definition of SN-7
right-to-send, granting SN-30
right-to-send, requesting SN-53
ring support, specifying SN-I05
RLOADER resident loader
module description ID-72
overlay programs ID-19
overlay segments ID-20
RO command ($1AMUTl) CA-112,
IG-171
ROFF (rewind offline) LR-65
roll screen, terminal support
description CT-7, CT-15, CT-25
differences from static
screen CT-31
sample roll screen
program CT-25
ROLlOFF command ($COPYUTl) OR-113
ROLLON command ($COPYUTl) OR-112
RP command ($UPDATE) PP-I08
RP command ($UPDATEH) PP-119
RS command ($GPIBUTl) CT-140
RS command ($SlSlUTl) CT-I04
RSHUTD command SN-138
RSTATUS IDCB command LR-201
RT command ($TAPEUTl) OR-452
RT function ($PDS) SG-332
RT subcommand ($DICOMP) CT-183
RTR command SN-138
Common Index

1G-315

RTYPE parameter, NETINIT . SN-22
RV command ($INITOSK) OR-366
RWI command ($BSCUT2) CT-240
RWIV command ($BSCUT2) CT-245
RWIVX command ($BSCUT2) CT-244
RWIX command ($BSCUT2) CT-241
RWIXMP command ($BSCUT2) CT-242

SA subcommand ($DICOMP) CT-183
sample SNA application
(SNAIMS) SN-263
SAVE command ($EOITl/N) OR-227
SAVE command ($IMAGE) OR-337
saving a control store OR-479
saving a formatted screen OR-337
saving current task status (TASKSAVE) 10-44
saving disk or diskette volume on
tape OR-457
saving graphics data CT-183
saving image store OR-480
sav!ng session parameters SN-20
savlng storage and
registers OR-491
SB command ($IOTEST) OR-372
SBIO instruction
coding description SG-367
function SG-59, SG-360
return codes MC-247, SG-369
SBIOCB (sensor based I/O control
block) 10-159
SC command ($TERMUT2) OR-479
scatter write operation CT-37,
CT-39, CT-42
screen format builder utility
See $IMAGE utility
screen formats, terminal support
for 31~1 CT-37
for 4978/4979 CT-36
sample for 3101 static screen
program CT-79
using $IMOPEN to
retrieve CT-41
screen formatting/presentation
support SN-171
screen image manager, Multiple
Terminal Manager M-7
screen images
buffer sizes CT-54
retrieving and
displaying CT-41
storage format M-22
using $IMAGE subroutines CT-45
SCREEN instruction
coding description CT-157
interprogram dialogue
overview CT-157
screen table, Multiple Terminal
Manager M-21, M-31
screens, terminal support
logical screen
See logical screen, terminal
support
roll screen
See roll screen, terminal
support
static screen
See static screen, terminal
support
IG-316

SC34-0404

SCRNAOD screen CA-313
SCRNFIOI screen CA-319
SCRNFI02 screen CA-320
SCRNIPL screen CA-214
SCRNMENU screen CA-216
SCRNMTMI screen CA-308
SCRNMTM2 screen CA-309
SCRNMTM3 screen CA-310
SCRNMTM4 screen CA-311
SCRNPFMP screen CA-315
SCRNPGM screen CA-314
SCRNS volume CA-213
SCRNSIGN screen CA-215
SCRNSREP screen CA-317
SCRNUPDT screen CA-312
scrolling, $FSEOIT OR-261
SCSS IDCB command LR-201
SDLC buffers, specifying SN-112
SDLC device address SN-I05
SDLC device I/O retries SN-I07
SDLC support options SN-I08
SDLC error logging SN-12
SDLC log record, format SN-12
SDLC return codes MC-248, SN-113
SDLC time-outs, specifying
clear-to-send SN-I09
data set ready SN-I09
data terminal ready SN-I09
default value SN-I09
hold line active SN-I09
SDT command SN-138
SE command ($HCFUTl) CT-370
SE command ($IAMUTl) CA-114,
IG-173
searching and dumping tape OR-437
second-level index block
(SIXB) CA-164, IG-35
secondary control statement data
set PP-48
secondary index IG-67
secondary index directory IG-68
secondary index, Indexed Access
Method
action chart IM-27
module descriptions 1M-55
secondary keys IG-67
secondary logical unit type P .
formats and protocols
advantages of Series/l as SLU
type P SN-169
example of SLU type P/DPM
configuration SN-169
message
resynchronization SN-168
overview SN-165
relation to MFS
formatting ~N-167
selecting SLU type P
support SN-166
SLU type P without DPM SN-165
secondary option menus, session
manager OR-56
sectioning of program
modules LR-20
sector size for diskette initialization $DASDI utility OR-124
disk (4963) OR-136
sector, disk/diskette SG-46
segmenting SN-131
selecting paging IG-167
selection, record
example SM-20
how to specify SM-95
self-defining terms LR-5

o

o

c

o

o

send buffers, specifying SN-114
send data, HX $DICOMP
subcommand CT-177
SEND function, Remote Management
Utility
communications flow CT-275
internals 10-198
overview CT-273
send/receive buffers, SDLC SN-I06
SENDBUF parameter, SNALU SN-114
sending commands to host SN-211
sending function management headers SN-32
sending message to another terminal OR-487
sending messages SN-29
sending messages, overview SN-6
sending partial messages SN-35
sending record to host, Host Communications Facility CT-364
sense codes SN-305
sensor based I/O
assignments SG-359
control block (SBIOCB) ID-159
device data block (DDB)
listing ID-358
module descriptions ID-70
statement overview SG-360
storage requirements SG-220
support summarized SG-20
SENSORIO statement
description SG-lOl
function SG-59
separator records SH-205
sequence numbers SN-63
sequencing instructions,
program LR-21
sequential access, Indexed Access
Method IG-90
serially reusable resource
(SRR) ID-48, SG-42
Series/I layer elements SI-5
Series/I network activation procedure SN-309
Series/I screen
formatting/presentation
support SN-170
Series/I SNA base layer
module cross reference SI-230
overview SI-4
program design language
(PDL) SI-129
visual table of contents
(VTOC) SI-103
Series/I SNA Control Block Data
Maps
BIND parameter control block
(BND) SI-282
branch vector table
(BVT) SI-286
correlation table entry,
CTE SI-290
data control block, DCB SI-302
data link buffer, DLB SI-317
data link terminal, DLT SI-327
data set description,
DSD SI-334
device descriptor block,
DDB SI-306
function address table,
FAT SI-337
immediate device control block,
IDC SI-340
LUE control block, LUE SI-342

LUL control block, LUL SI-342,
SI-352
physical unit services control
block, PUS SI-371, SI-372
program list control block,
PLC SI-369, SI-370
SNA data area, OAT SI-294
system services control block,
LUS SI-366, SI-367
Series/l SNA instructions, overview SN-6
Series/I SNA SDLC layer
module cross reference SI-280
overview SI-4
program design language
(PDL) SI-244
visual table of contents
(VTOC) SI-233
Series/l 5NA subset 5N-3
Series/I 5NA system
generation 5N-l03
Series/1 5NA top layer
module cross reference 51-100
overview 51-4
program design language
(POL) 51-24
visual table of contents
(VTOC) 51-11
5eries/1 to Series/l
components CT-83
data transfers CT-84
error recovery CT-86
exercise attachment
See $SlSlUTl utility 86
initiating processor CT-84
internals
interrupt processing 10-132
request processing 10-129
IPL function CT-86
overview CT-7, CT-83, 5G-19,
5G-80
posting an event control block
(ECB) CT-87
processor relationships
(IPL) CT-84
program synchronization CT-84
programming
considerations CT-84
reconfiguring CT-85
responding processor CT-84
return codes MC-274
sample programs CT-90
storage requirements 5G-219
using direct I/O CT-85
service request (5RQ) CT-116
session activation SN-17
session manager
adding an option OR-80
automatic creation/deletion of
data sets
$SMOELET data set deletion
control data set OR-51
$SMMALLOC data set allocation control data
set OR-50
disk utilities OR-50
building a $JOBUTIL
procedure OR-87
communication utilities OR-66
creating a new menu OR-81
data management OR-59
diagnostic utilities OR-68
execute program
utilities OR-64
Common Index

IG-317

graphics utility OR-63
interactive interface
($EDXLINK) PP-68
invoking OR-46
invoking a $JOBUT1L
procedure OR-87
job stream processor
utilities OR-64
logon OR-47
menus
minimum partition size
required OR-71
operational overview OR-71
option combinations OR-69
overview OR-71
primary option OR-55
procedures OR-77
program function keys OR-70
program preparation
utility OR-56
programs OR-76
secondary option OR-56
session manager non-interactive
interface ($EDXLIN PP-68
storage usage OR-71
tailoring the session manager
terminal utilities OR-61
text editing utility OR-56
updating a primary option
menu OR-8l
updating a procedure OR-83
utilities supported
session parameters, saving SN-20
session partner, definition
of SN-6
ses~ion restart
SN-24, SN-143
session termination return
codes MC-268
session termination,
immediate SN-60
session termination,
orderly SN-60
session termination,
overview 5N-lO
session, definition of SN-6
session, PASSTHRU
See PASSTHRU function
session, termination SN-59
sessions, sample $RJESNA SN-218
SESSPRM parameter, NETINIT SN-20
SET command ($HCFUT1) CT-370
set time and date SG-61
SETCUR, Multiple Terminal Manager
CALL
coding description CA-266
internals M-9
overview of CA-207
SETEOD subroutine SG-354
SETFMT, Multiple Terminal Manager
CALL·
coding description CA-268
internals M-lO
overview of CA-207
return codes CA-270
SETPAN, Multiple Terminal Manager
CALL
coding description CA-272
internals M-9
overview of CA-208
return codes CA-273
setting breakpoints and trace
ranges OR-149
setting date and time OR-36
IG-318

SC34-0404

setting indexed file
parameters CA-114, IG-173
setting paging area size IG-168
setting status ($HCFUT1) CT-370
setting tape offline OR-449
setup procedure for
$JOBUTIL OR-376
with $JOBUT1L OR-378
SG command ($IOTEST) OR-372
SHIFTL instruction
coding description LR-318
overview LR-14
SHIFTR instruction
coding description LR-320
overview LR-14
SHUTC command SN-138
SHUTD command SN-139
SHUTDOWN function, Remote Management Utility CT-276, 1D-207
S1 command ($TERMUT2) OR-480
51G command SN-139
S1GNONFL file CA-293
single task program SG-31
SIXB (second-level index
block) CA-164, IG-35
SLE sublist element, $EDXASM
format ID-240
in instruction parsing ID-242
instruction description 1D-255
used in $IDEF 1D-267
SLU bracket initiation SN~128
SNA base modules SI-230
SNA base support, overview SN-99
SNA command and data flows
controlling message
flow SN-190
establishing a session SN-176
receiving messages SN-186
sending messages SN-177
terminating a session SN-194
SNA control block
relationship SI-281
SNA data area, DAT SI-294
SNA functions 51-2
SNA return codes MC-250
NETB1ND MC-260
return codes MC-251, MC-253,
MC-256, MC-257, MC-258
SNA SDLC layer modules S1-280
SNA storage requirements SN-295
SNA top layer modules SI-100
SNADACT command SN-I00
SNA1MS, sample SNA
application SN-263
SNALU configuration statement
parameter
considerations SN-115
parameter descriptions SN-114
syntax SN-114
SNAPU configuration statement
parameter
considerations SN-I07
parameter descriptions SN-I04
syntax SN-I04
software register LR-7
software trace table SG-249
Sort/Merge
data interpretation SM-221
debugging SM-179
examples
merge SM-16
output record
classification SM-6, SM-22

(....f

"~

,(1,.-.... '''''.

"t_,;

o

o

output record
formatting SM-3, SM-18
record selection SM-l, SM-5
record summarization SM-22,
SM-29
simple sort SM-2, SM-14,
SM-44
improving performance SM-155
initiation SM-131
installation SM-295
job preparation SM-39
messages SM-247
overview SG-13, SM-l
sample jobs SM-159
space requirements SM-239
statements
alternate collating
sequence SM-87
comments SM-68
data set definition SM-71
field SM-105
header SM-60
include/omit SM-93
log SM-57
user exit routines SM-137
SORTA (record address sort)
description SM-7
dropping control fields SM-125
functions supported SM-12
input data sets
number allowed SM-60
restrictions SM-60
inserting records
input exit SM-137
output exit SM-140
output record size,
determining SM-242
specification statements
allowed with SM-60
specifying in header
statement SM-60
when to use SM-7
sorting, how to write a sort job
steps in preparing and
running SM-44
using $JOBUTIL SM-42
using $L operator
command SM-40
using $SMMAIN SM-48
using LOAO (see also LOAO
instruction) SM-44
SORTR (record sort)
drop/keep control fields SM-65
example using SM-14
functions supported SM-12
output record size,
determining SM-243
rules for data fields SM-90
specification statements
allowed with SM-64
specifying in header
statement SM-60
SORTRS (record summary sort)
examples using SM-8
functions supported SM-13
keep/drop control fields SM-64
output record size,
determining SM-243
rules with data fields SM-129
specification statements
allowed with SM-64
specifying in header
statement SM-60
source program compiling SG-71

source program entry and
editing PP-l, SG-64
source program line continuation
using $EOXASM lR-4
SP command ($CHANUT1) CT-410
SP function
($RJE2780/$RJE3780) CT-341
SPA (spool active control block)
description 10-147
listing 10-371
space requirements, determining
for output data set SM-241
for work data set SM-239
SPACE statement
coding description LR-322
overview lR-19
SPC (spool terminal control block)
description 10-148
listing 10-374
special PI bit/group OR-372
specification data set SM-I0
specifications, data
conversion LR-163
conversion specifications
. See conversi on LR-163
specifications, in-storage SM-131
specifying dynamic storage ($EOXLINK) PP-77
SPECPI define special process
interrupt SG-364
SPECPIRT instructi·on
coding description SG-376
function SG-59, SG-360
speed rate, modem SN-I05
SPJ (spool job control block)
description 10-146
listing 10-372
splitting volume OR-355
SPM (spool master control block)
description 10-144
listing 10-373
spool active job control block
(SPA)
description 10-147
listing 10-371
SPOOL command
($RJE2780/$RJE3780) CT-341
spool control record
COBOL, use of CA-452
format CA-450
FORTRAN, use of CA-451
functions CA-450
Pl/I use of CA-451
spool data set
allocating CA-455
designating CA-437
estimating size of CA-456
spo.,l device
definition of CA-395
designating CA-458
spool device control block (SPW)
description 10-149
listing 10-371
spool forms type code
altering CA-415
changing CA-407
using CA-406
spool I/O control block (IOSPTBL)
description 10-151
listing 10-371
spool job
definition of CA-396
deleting CA-418
dis~laying status
CA-421
Common Index

IG-319

estimating print time CA-458
holding CA-426
keeping CA-427
releasing CA-429
status definition CA-396
spool job control block (SPJ)
description 10-146
listing 10-372
spool master control block (SPM)
description 10-144
listing 10-373
spool printer assignment
($RJESNA) SN-213
spool return codes MC-249
spool session
definition of CA-396
starting CA-401
terminating CA-430
spool terminal control block (SPC)
description 10-148
listing 10-374
spool utility
See $SPlUT1 utility
spool writer
definition of CA-396
displaying status CA-421
functions CA-402
procedure CA-402
restarting CA-431
starting CA-435
stopping CA-433
spool writer control block (WCB)
description 10-150
listing 10-374
spooled output, $RJESNA SN-204
spooling
See printer spooling
SPW (spool device control block
description 10-149
listing 10-371
SQ command ($COPYUT1) OR-113
SQRT instruction
coding description lR-323
overview lR-14
SS command ($01SKUT2) OR-190
SSCPI0 parameter, NETHOST SN-18
ST command ($CHANUT1) CT-410
ST command ($OIUT1l) CT-201
ST command ($GPIBUT1) CT-140
ST command ($SlSlUT1) CT-105
ST command ($TAPEUT1) OR-457
stand-alone dump diskette OR-120
stand-alone dump,
obtaining SG-240
standard labels, tape
EOF1 SG-295, SG-298
EOV1 SG-295, SG-298
fields SG-297
HDRI SG-295, SG-297
header label SG-294
layouts SG-296
processing SG-296
trailer label SG-294
volume label SG-294
VOl1 SG-295, SG-297
start and termination procedure,
$DEBUG OR-145
START, IOCB command lR-201
START, PROGRAM statement
operand lR-266
starter system, supervisor
description SG-167
terminal initialization SG-213
starting $RJESNA SN-207
IG-320

SC34-0404

starting spool writer CA-435
starting spooling CA-401
statement label lR-4
statement locations, directory
of lR-34
static screen, terminal support
description CT-7, CT-31
designing for device independence CT-38
differences from roll
screen CT-31
3101 considerations CT-64
3101 sample program CT-65
4978/4979 sample program CT-60
station 10, exchange SN-I07
status commands ($HCFUT1) CT-370
status data set, Host Communications Facility CT-350
status display, WHERE
$OEBUG OR-162
status obtaining error
with $GPIBUTI CT-140
with $SlS1UT1 CT-105
status record, Remote Management
Utility CT-253, CT-299
STATUS statement
coding description lR-325
overview lR-13
status, receiving SN-47, SN-51
STAX1D parameter, SNAPU SN-107
ST1MER instruction
coding description lR-328
in Series/1 to Serias/l error
. reco'!ery CT-87
overVlew lR-32, SG-42
with PASSTHRU function CT-295
stopping spool writer CA-433
stopping spooling facility CA-430
storage environment, access
method AM-I, IM-1
storage environment, Multiple
Terminal Manager M-11
storage estimating
application program
size SG-225
supervisor size SG-217
utility program size SG-223
storage management
address relocation
translator SG-43
allocating 10-24
description SG-43
design feature SG-16
storage map generation SG-206
storage map, Indexed Access
Method CA-15, IG-204
storage map, resident
loader 10-26
storage maps ($SlASM) 10-286
storage requirements, SNA SN-295
storage usage during IPl 10-6
storage usage during program
load 10-17
storage-resident loader
(RlOADER) ID-15
store record, $PDS utility SG-335
strings, relational
statement lR-206
STSN command SN-65, SN-139
STSN processing
PlU to SlU flow (with
resync) SN-76
return codes to NETINIT SN-85
sessions without resync SN-84

()

c

o

0'"
"

SlU to PlU flow (with
resync) SN-68
STSN processing, Series/1 SN-67
SU command ($GPIBUT1) CT-141
SU command ($HCFUT1) CT-371
SUBMIT command ($EOIT1/N) OR-209
SUBMIT command ($FSEOIT) OR-270
SUBMIT command ($RJESNA) SN-214
SUBMIT command
($RJE2780/$RJE3780) CT-342
submitting job streams SN-214
submitting job to host
($HCFUT1) CT-371
SUBMITX command ($RJESNA) SN-214
SUBMITX command
($RJE2780/$RJE3780) CT-342
SUB ROUT statement
coding description lR-330
in I/O error exit
routine SM-143
in input exit routine SM-137
in output exit routine SM-141
overview lR-20, SG-41
subroutines
$0ISKUT3 SG-339
$IMAGE CT-44
$POS SG-321
OSOPEN SG-347
overview SG-40
SETEOO SG-354
subset, Series/l SNA SN-3
SUBTRACT instruction
coding description lR-332
overview LR-14
precision table lR-333
summary data field
example SM-29
extending SM-32
how to specify SM-126
length, minimum/maximum SM-112
maximum number SM-125
rules for specifying SM-125
summary tagalong sort
See SORTRS (record summary
sort)
supervisor/emulator
calling control
functions 10-49
class interrupt vector
table 10-11
communications vector table
description 10-12
listings 10-319
concepts SG-29
control block pointers 10-12
design features SG-15, SG-16
device vector table 10-12
emulator command table
description 10-14
listing 10-323
entry points SG-465
entry routines 10-37
exit routines 10-40
features SG-15, SG-16
fixed storage area 10-11
functions 10-34
generation SG-167
interface routines
GPIB 10-119
printer spooling 10-139
Serles/1 to Series/l 10-129
task supervisor 10-50
maintaining more than
one SG-193

module descriptions 10-57
module names SG-465
module overview 10-58
overview SG-5, SG-29
PASSTHRU session with CT-281
referencing storage
locations 10-13
service routines 10-44
size, estimating SG-217
storage requirements SG-218
task supervisor
description 10-29
work area 10-14
SUPEXIT routine 10-40
support for optional
features lR-13
SUPRTURN routine 10-40
surface analysing tape OR-439
suspending $GPIBUTI CT-141
suspending message flow SN-53
suspending transmission SN-150
SV command ($INITOSK) OR-355
SVC routine 10-38
SVCABENO routine 10-40
SVCBUF supervisor buffer 10-38
SVCI routine 10-38
switched major node definition
operands SN-324
sample SN-325
symbol dictionary, $EOXASM 10-277
symbolic address
(disk,tape) LR-IO
symbolic disk/tape I/O
assignments LR-I0
symbolic diskette lR-I0
symbolic reference to
terminals SG-116
symbolic terminal I/O lR-I0
symbols (EXTRN) lR-145
symbols (WXTRN) LR-399
syntax rules lR-4
SYSGEN
See system generation
system alternate logging
device SG-116
system AUTOCAll data set
($EOXLINK) PP-75
system class interrupt vector
table ID-l1
system common area 10-13
system common data area
($SYSCOM) SG-l1, SG-172
system communications vector table
description ID-12
listing ID-319
system configuration
for program preparation SG-24
minimum for execution SG-23
minimum licensed
programs SG-24
statements SG-89
system control blocks SG-44
system data tables, EOXSYS 10-67
system device vector table ID-12
system emulator command table
description 10-14
listing 10-323
system generation
customizing the starter
system SG-194
procedure SG-179
system installation SG-27
system logging device SG-116
system printer SG-116
Common Index

IG-321

system products SG-3
system program check MC-282~
SG-27S
system release level~
recording LR-36~ SG-239
system reserved labels LR-S
system services control block~
LUS SI-366~ SI-367
SYSTEM statement SG-I03
system task supervisor work
area ID-14
System/370 Channel Attach
See Channel Attach
System/370 Program Preparation
Facility SG-7

TA command ($TAPEUT1) OR-461
tables, Multiple Terminal Manager
file table M-19, M-3S
program table M-21~ M-31
screen table M-21, M-31
terminal table M-19, M-31
tables, parameter equate LR-431
tabs sett i ng
horizontal ($IMAGE) OR-331
vertical ($IMAGE) OR-339
with $EDITI/N OR-228
TABSET command ($EDITl/N) OR-228
tagalong sort
See SORTR (record sort)
tailoring the Indexed Access Method IG-144
tailoring your supervisor SG-194
tape
bypass label processing SG-300
characteristics and
layout SG-55
CONTROL LR-64
data set LR-26
definitions for data
sets LR-26
end-of-tape (EOT) .LR-26
examples SG-310
I/O instructions LR-26
internals ID-91
load point (BOT) LR-26
post codes MC-222
READ LR-290
record LR-26
return codes LR-67, MC-23S
statement SG-l11
symbolic addressing LR-I0
used in Version 3
conversion SG-439
volume LR-26
WRITE LR-391
tape control commands OR-449
tape data set
end-of-data requirements SM-82
rules for specifying SM-72
tape data set control block ID-93
tape device data block (TDB)
description ID-92
listing ID-377
tape labels
external SG-293
internal SG-294
tape standard·label
fields SG-297
IG-322

SC34-0404

layout SG-296
processing SG-296
support SG-294
TAPE statement
coding SG-lll
description SG-l11
function SG-58
tape support SG-17
tape utility, $TAPEUTI OR-431
tape volumes, defining SG-304
tape, non-labeled
layout SG-299
processing SG-300
support 5G-299
tapemark LR-64
task
active/ready table ID-41
check and trap handling SG-231
control 10-44
definition and control functions 5G-30
dispatching ID-42
error exit facility SG-41,
SG-253
error exit routine LR-270
error handling LR-31
execution ID-30
execution states ID-30~ SG-37
facilities SG-30
linkage conventions SG-256
multiple-task program SG-33
overview LR-28, SG-30
single-task program SG-31
states SG-37
structure SG-30
switching ID-42, SG-30
synchronization and
control 10-44, SG-30
task code words LR-9
task control block
See TCB (task control block)
task error exit SN-ll, SN-217
TASK statement
coding description LR-33S
overview LR-28, SG-31
priority LR-335
task supervi sor
functions ID-34
internals ID-29
work area ID-14
TASKSAVE supervisor service
routine ID-44
TCB (task control block)
description ID-32
listing ID-375
wi th QCB ID-46
TCBEQU LR-431
TCBGET instruction
coding description LR-338
overview LR-28
TCBPUT instruction
coding description LR-340
overview LR-28
TD command ($PDS) SG-332
TD subcommand ($DICOMP) CT-184
TDB (tape device data block)
description 10-92
EDXTIO/EDXTIOU module ID-68
listing ID-377
virtual I/O ID-lll
TEB (terminal environment block)
description CA-220, M-17
equates M-32'
Tektronix

c

o

C
'I"

o

\

,I

devices supported SG-17
support for digital I/O CT-465
teletypewriter adapter SG-148
TERM-SELF command SN-139
TERMCTRL instruction
ACCA attached devices LR-361
coding descriptions LR-342
function to terminal comparison
table lR-343
General Purpose Interface
Bus lR-371
overview LR-30
return codes lR-306
Series/l To Series/1 lR-367
teletypewriter attached
devices lR-364
use on 3101 terminals CT-44
virtual terminal lR-365
2741 Communications
Terminal lR-344
3101 Display Terminal (block
mode) lR-345
4013 Graphics Terminal LR-349
4973 Printer LR-351
4914 Printer LR-352
4915 Printer LR-354
4918 Display LR-355
4919 Display LR-359
TERMERR operand
of PROGRAM LR-270
of TASK lR-335
with end-of-forms LR-31
terminal
#1850 teletypewriter
adapter SG-148
ACCA support LR-361
adding support for new I/O
terminals ID-113
characteristics CT-3
data representation LR-31
defining and accessing CT-16
definition CT-3, SG-19
device independence
between display stations and
printers CT-1
between 4978/4979 and
3101 CT-7
for static screens CT-38,
CT-39
electrical interfaces CT-5
error handling LR-30
input LR-32
list of EDX terminals CT-4
output lR-31
relationship to a
program CT-16
return codes LR-253, MC-269
sample I/O error
program CA-352
sample signon program CA-352
specialized capabilities
general purpose interface
bus CT-7
graphics CT-8
Series/1 to Series/1 attachment CT-7
virtual terminals. CT-8
support summarized SG-11
terminal configuration utility,
$TERMUTl OR-462
terminal control block
See CCD (terminal control
block)
terminal environment block

See TEB (terminal environment
block)
TERMINAL file CA-212
terminal I/O
high-level language subroutines
COBOL sample program CA-492
FORTRAN sample
program CA-499
introduction CA-464
overview CA-465
performance CA-506
Pl/I sample program CA-495
preparing programs CA-503
internal design ID-98
problem determination ID-112
return codes MC-269
See also terminal support
support routines ID-106
virtual ID-111
terminal message sending utility,
$TERMUT3 OR-487
terminal page formatting parameters OR-463
terminal response mode SN-160
terminal servers, Multiple Terminal Manager M-6
terminal session manager
See session manager
TERMINAL statement
coding by device
ACCA CT-80, SG-136
GPIB SG-160
PROC CT-81, SG-154
Series/1 to Series/1 SG-163
TTY CT-80, SG-148
virtual terminal SG-158
2141 SG-120
4013 SG-123
4913/4914 SG-127
4915 SG-129
4918/4919 SG-132
description SG-113
DEVICE parameter CT-4
device-dependent
operands SG-116
examples CT-16
function SG-19
terminal control
function SG-80
use in defining virtual terminals CT-204
use of CT-3, CT-4
terminal states, Multiple Terminal
Manager M-39
terminal support
definition CT-3
EDL instructions
for controlling a
terminal CT-18
for defi ni ng and accessi ng a
terminal CT-18
for formatting data CT-19
output considerations CT-23
overview CT-3, SG-77
sample roll sreen
program CT-25
3101 sample static screen
program CT-65
4978/4979 sample static screen
program CT-60
terminal table, Multiple Terminal
Manager M-19, 'M-31
terminal utilities (session manager) OR-61
Common Indax

IG-323

terminals connected via digital
I/O CT-467
terminating $RJESNA 5N-211,
SN-216
terminating a session SN-59
terminating GPIB operation CT-134
terminating Remote Management
Utility CT-276
terminating transmission,
$RJESNA SN-210
test display ($DICOMP) CT-168
testing BSC conversational transparent mode CT-244
testing generated report or graphics profile member CT-168
testing label types OR-439
testing process interrupt OR-372
text editing utilities
edit dataset subroutine examples ID-388
full screen-editor
$FSEDIT OR-259
line editors, $EDITI/N OR-199
overview SG-64
work area internals ID-383
text record data area ID-192
text record, PASSTHRU function of
$RMU CT-289
TEXT statement
coding description LR-376
overview LR-13
.
text wrapping, WRAP function of
$RMU CT-279
THRESH parameter, SNAPU SN-I06
threshold considerations SN-ll0
threshold value SN-I09
time of day, GETTIME
instruction LR-188
time/date
display, $Woperator
command OR-44
set, $T operator command OR-36
set, automatic initialization
facility SG-175
timer control LR-32
TIMER statement SG-42, SG-165
timer storage requirements 5G-219
timer support SG-20
timing instructions lR-32, 5G-42
TITLE statement
coding description LR-380
overview lR-19
TOCTS parameter, SNAPU 5N-I06
TODSR parameter, SNAPU 5N-I05
TODTR parameter, SNAPU 5N-I05
TOHlA parameter, SNAPU SN-I06
TOP subcommand ($EDIT1/N) OR-232
TP instructions (Host Communications Facility)
CLOSE CT-355
coding description CT-353
FETCH CT-356
OPENIN CT-357
OPENOUT CT-358
READ CT-359
RELEASE CT-360
SET CT-361
subcommand internals ID-182
SUBMIT CT-362
TIMEDATE CT-363
use in examples CT-365
WRITE CT-364
TR command ($CHANUT1) CT-410
IG-324

SC34-0404

trace printing ~tility for
B5C CT-237
trace ranges and breakpoint
settings OR-149
trace table, software SG-249
trace utility for BSC CT-235
transaction retry,
requesting 5N-41
transactions, definition of 5N-6
transfer rates for data, Host
Communications Facility CT-353
transferring an object
module SG-72
transferring data set from host
($HCFUT1) CT-368
transferring data set to host
5END function, Remote Management Utility CT-273
WR command ($HCFUT1) CT-372
transient program loader ID-15
transmission codes 5G-114
transmission header,
format 5N-301
transmission protocol, HCF ID-184
transmission, suspending 5N-150
TRAPDUMP attention command
($TRAP) OR-491
TRAP END attention command
($TRAP) OR-491
TRAPOFF attention command
($TRAP) OR-491
TRAPON attention command
($TRAP) OR-491
TS profi les 3 and 4
supported commands SN-119
TYPE parameter, NETCTl SN-49
TYPE= return codes (NETCTl) 5N-57
types of session
termination SN-60

UE command ($IAMUT1) IG-158
UN command ($IAMUT1) CA-120,
IG-184
UNBIND command 5N-139
unblocked sequential IG-164
unconditional force
data types allowed 5M-I09
definition SM-117
example SM-22
how to specify 5M-117
keep/drop from output
record 5M-64
number, maximum SM-121
required entries in field
statement 5M-I09
rules for 5M-116
unconditional session
termination SN-60
undefined length records,
tape 5G-303
units (basic) of
information 5N-297
unloading indexed file CA-120,
IG-184
unprotected field OR-322
UP subcommand ($EDIT1/N) OR-233
update indicator, automatic IG-69
update ut iii ty

c

o

o

o

$UPDATE convert object
program PP-I0S
$UPDATEH convert host~object
program PP-117
updating a session manager
menu OR-81
updating directory IG-158
user defined data member, $PDS
utility SG-326
user exit routines SM-33
keep/drop from output record
specifying in header SM-64
selectirig the invocation facility SM-39
user initialization modules ID-I0
USER instruction
coding description LR-381
effect on ENDPROG LR-116
overview LR-20
using SELB to connect
support SI-3
utilities
listed by type SG-62
overview SG-6
utility program size SG-223

VA command ($DICOMP) CT-183
VA function ($PDS) SG-328
valid arithmetic operators LR-4
variable blocked record
format SM-81
variable length records,
tape SG-303
variable names LR-4
variable record format SM-81
variable unblocked record
format SM-80
varying device offline OR-38
varying device online OR-40
VDE (volume descriptor
entry ID-85
vector addition (ADDV) LR-41
vector data manipulation LR-15
verification, requesting
message SN-30
VERIFY parameter, NETPUT SN-30
VERIFY subcommand
($EDIT1/N) OR-234
verifying disk or diskette
dataset OR-360
verifying identification of
systems, $RMU CT-267
verifying tape executing
correctly OR-439
tape, $TAPEUTI utility OR-442
vertical tabs, defining OR-339
virtual terminals
accessing the virtual
terminal CT-205
defined by TERMINAL
statement SG-158
description CT-203
establishing the
connection CT-204
examples of use CT-203
internals ID-ll1
interprogram dialogue CT-206
loading from a virtual
terminal CT-204

return codes CT-206, MC-274
sample programs CT-207
storage requirements SG-219
TERMINAL statement
example SG-159
using TERMINAL to
define CT-204
volume
accessing ID-82
allocating OR-353
definitions
(disk/diskette) LR-17
deleting OR-365
directory entry
listings ID-347
directory internals ID-77
dump/restore~ $MOVEVOL
OR-404
initializing OR-357
listing OR-362
renaming OR-366
split OR-355
verifying OR-360
VOLUME control statement
($EDXLINK) PP-56
volume descriptor entry
(VOE) 10-85
volume label s
logical SG-47
physical SG-46
VOLI tape label SG-295
VTAB command ($INITDSK) OR-339
VTAM considerations
block number SN-293
network deactivation SN-293
pacing SN-293
station address SN-293
VTOCs for SOLC layer modules
CDCABNO SI-238
CDCAOOTO SI-238
COCATTN SI-238
COCBlDDC 51-238
COCClSOO SI-239
CDCCMDPR 51-239
CDCCMDR SI-239
COCCNTBU SI-240
COCCNTRL SI-240
COC01SAB SI-240
COCENABL SI-240
CDCIHT SI-241
CDC1SXMT 51-242
COCN01 51-243
COCOIO 5I-243
CDCPERME 51-243
CDCPURGE S1-243
COCRC5S 5I-243
COC5ETRE 5I-243
SDlC abnormal/error
handling SI-235
SOlC close 51-237
SOLC interrupt handler 51-234
SOlC issue command to
adapter 51-236
SOlC read cycle steal status
processing 51-236
SOlC receive 5I-235
SOlC send 51-235
SOlC stop device SI-237
VTOCs for Series/l 5NA base layer
modules
$NETCMO, interface to 5NA
modules 5I-I07
$SNA, SNA load program 5I-128
CODACTlU, ACT LU command
processor 51-108
Common Index

IG-325

CDDBETBR, between brackets
check SI-108
CDDBINDO, bind command processor SI-108
CDDBNDCK, process basic bind
checking SI-108
CDDBR5PO, BIND response processor SI-109
CDDBSMGR, bracket state
manager SI-109
CDDCLEAR, reset data traffic
subtree SI-109
CDDCLSOO, SNA close SI-110
CDDCOMSC, common session
control processor SI-111
CDDCPMGS, CP manager send for
LU-LU sessions SI-111
CDDCPMGX, process expedited
flow queue SI-111
CDDCP2S, pacing queue
processor SI-111
CDDCTDLT, correlation table
entry delete processor SI-112
CDDCTGEN, RSP correlation table
entry generation SI-112
CDDCTPRC, correlation table
entry processor SI-112
CDDDRQRV, OFC commands processor SI-112
CDDEXRCV, convert RQ to
EXR SI-113
CDDF1SC, Fl for session control
processor SI-113
CDDGTBFS, allocate buffer
pool SI-113
CDDHXMGR, half-duplex
manager SI-114
CDDIMM5G, inbound message
processor SI-114
CDD1SEG, queues and releases
segmented buffers SI-115
CDDLUPRG, purge queues SI-115
CDDMRQCV, create negative RSP
and SEND SI-115
CDDMRSCV, change RCV/SEND buffer count SI-115
CDDNTBND, send user bind
response SI-116
CDDNTDAC, network
deactivation SI-116
CDDNTRCV, receive
message SI-116
CDDNTSND, send message SI-117
CDDOPNOO, SNA NETOPEN phase
o 51-118
CDDOPN01, SNA NETOPEN phase
1 51-118
CDDOPN02, SNA NETOPEN phase
2 SI-118
CDDOPN03, SNA NETOPEN phase
3 SI-118
CDDOPN04, SNA NETOPEN phase
4 SI-118
CDDPBUFF, post send
event SI-119
CDDPCLUR, SSCP-LU command
processor SI-119
CDDPCNG5, path control no-good
message processor SI-119
CDDPCPUR, PU message
processor SI-119
CDDPC20T, outbound path
control SI-l20
IG-326

SC34-0404

CDDPSVOO, perform physical unit
services SI-120
CDDPUS!N, process write buffers
and SDLC commands 51-120
CDDQCHK, check all network
queues 51-120
CDDQOFF, remove from FIFO
queue SI-121
CDDQON, insert on FIFO
queue SI-121
CDDRECVY, half-duplex
recovery SI-121
CDDRELBL, release link
buffer SI-122
CDDRELBS, release
buffer SI-122
,
CDDRQRCV, request received
processor SI-123
CDDRQRSZ, convert RQ to
EXR SI-124
CDDRQSNN, normal request send
processor SI-124
CDDRQSNX, expedited request
send processor SI-124
CDDR5RCV, response received
processor SI-125
CDDRSSNN, normal response send
processor SI-126
CDDRSSNX, expedited outbound
response processor SI-126
tDDSELB, interface to
$NETCMD 51-126
CDDSESCL, session
cleanup SI-126
CDDSTPLK, halt SDLC 51-127
CDDSVCCR, process
NETSEND/NETRECV
requests SI-127
CDDTCB, find active TCB SI-127
CDDUBND, send term-self SI-127
CDDWTUBD, wait for
UNBIND SI-128
CDDZPNM5, convert to minus
response SI-128
NETBIND 51-105
NETCL05E 51-107
NETOPEN 51-104
NETRECV 51-106
VTOCs for Series/l SMA Top Layer
Modules
CDDFANE 51-13
CDEATTN SI-19
CDECD SI-20
CDECHKRU 51-19
CDECHKOO 51-20
CDECLEAN SI-20
CDEDEQ 51-21
CDEDEQAB SI-21
CDEENQ 51-21
CDEEXIT 51-21
CDEFBUFF 51-21
CDEGBUFF 51-22
CDEINIT1 - NETINIT phase
1 SI-15
CDEPOST SI-22
CDEPUTOO - HETPUT phase
o SI-17
CDEPUTI - HETPUT phase 1 51-17
CDERCVRU SI-22
CDEREJ SI-22
CDERSP SI-23
CDERSYHC SI-23
CDESNDRU 51-23

c

o

CDE5T5N - NETINIT phase
1 51-16
CDETERMO - NETTERM phase
1 51-18
CDETERMI - NETTERM phase
1 51-18
HETCTL phase 0 51-12
HETCTL phase 1 51-12
HETGET phase 0 51-14
HETGET phase 1 51-14
HETIHIT phase 0 51-15
VV command ($IHIT05K) OR-360

wait state, put program in, W5
$IOTE5T command OR-368
WAIT statement
coding description lR-385
overview LR-28, 5G-31
use of WAIT KEY ;n terminal
support CT-21
WAIT supervisor function 10-36
waiting, task supervisor
state 10-31
WAITKY subroutine CA-487
warning message option 5M-66
WCB (spool writer control block)
description ID-150
listing 10-374
WE command ($COPY) OR-I09
WHERE command ($OEBUG) OR-162
WHERE5 instruction
coding description LR-388
overview LR-28
return codes LR-389
WI command ($B5CUT2) CT-243
WIX command ($B5CUT2) CT-243
word boundary requirement
DO LR-21
IF LR-21
PROGRAM LR-266
work areas, Multiple Terminal
Manager
buffer areas M-23, M-37
common area M-16, M-34
MTMSTORE work.file M-20
work data set SM-9
$EOXASM PP-l1
$EOXASM internals ID-275
$EDXLINK PP-48
$LINK PP-86
$51A5M PP-28
$51A5M internals ID-284
work file (MTMSTORE), Multiple
Terminal Manager M-20
workstation features SN-203
workstation function priorities,
$RJESNA SN-205
workstation functions
card reader 5H-204
console SN-203
printer SN-204
punch 5N-205
workstation, defining
Series/l SN-225
WR command ($GPIBUT1) . CT-142
WR command ($HCFUT1) CT-372

WR command ($51S1UTl) CT-I05
WRAP function, Remote Management
Utility CT-279, 10-202
WRITE command ($FSEDITl/N) OR-210
WRITE command $EDITI OR-210
WRITE $EDITI command
WRITE OR-210
WRITE disk/diskette I/O instruction
coding description LR-391
disk/diskette return
codes LR-396, MC-234
function 5G-57, 5G-58
IDCB command LR-201
overview LR-16
return codes SN-96
tape post codes LR-397
tape return codes LR-397,
MC-234
WRITE IDCB command lR-201
WRITE instruction
WRITE Multiple Terminal Manager
CAll
coding description CA-275
overview of CA-208
write operations, HCF ID-184
WRITE option ($F5EDIT) OR-269
WRITE, Multiple Terminal Manager
CALL
internals M-IO
writer control block, spool (WCB)
description ID-149
listing ID-374
WRITEl IDCB command LR-201
writing data to the GPIB
adapter CT-142
writing data, 5eries/l to
Series/l CT-I05
writing decompaction
routines SN-223
writing IPL text OR-358
WS command ($IOTEST) OR-368
WTM (wri te tape mark) LR-65
WXTRN statement
coding description LR-399
overview LR-20

X.21 protocol CT-ll
x-type format lR-170
XI command ($IOTEST) OR-371
XO command ($IOTEST) OR-370
XYPLOT instruction
coding description CT-158
overview CT-158

YTPlOT instruction
coding description
overview CT-159

CT-159

Common Index

IG-327

1024-byte sectors
alternate load SG-209
I/O module description ID-70
storage requirements SG-218
taking advantage of SG-208
1310 Multifunction Attachment
defined by ADAPTER
statement SG-90
description CT-9, CT-467
use in BSC CT-11
with 3101 Display
Terminal CT-477
1610 asynchronous communications
single line controller
attachment with 3101 Display
Terminal CT-471
considerations for attachment
of devices SG-113
considerations when
DEVICE=PROC CT-81

2091 asynchronous communications
eight line controller
attachment with 3101 Display
Terminal CT-471
considerations for attachment
of devices SG-113
2092 asynchronous communications
four line adapter
attachment with 3101 Display
Terminal CT-471
considerations for attachment
of devices SG-113
2095 feature programmable eight
line controller
attachment with 3101 Display
Terminal CT-471
considerations for attachment
of devices ~G-113
2096 feature programmable four
line adapter
attachment with 3101 Display
Terminal CT-471
considerations for attachment
of devices SG-113
2741 Communications Terminal
as an EDX termi nal CT-5
defined by TERMINAL
statement SG-120
storage requirements SG-219
TERMINAL statement
example SG-122

3101 Display Terminal
as an EDX terminal CT-5, CT-6
attribute characters CT-36,
OR-326
block mode CT-474, OR-259
character mode CT-470
data stream CT-36
IG-328

SC34-0404

defined by TERMINAL
statement SG-136, SG-148
interface with Multiple Terminal Manager CA-202
PF key support CT-20
reading modified data CT-57
SEND key CT-478
setup switch settings
block mode CT-474
character mode CT-470
static screen
considerations CT-64
static screen sample
program CT-65
storage requirements SG-219
TERMINAL statement
examples SG-144, SG-152
transmitting data from CT-36
3585 4979 Display Station attachment SG-132

4952 Processor
maximum partitions SG-43
timer feature SG-42
4953 Processor
maximum partitions SG-43
timer feature SG-42
4955 Processor
maximum partitions SG-43
timer feature SG-42
4962 Disk Storage Unit storage
capacity SG-285
4963 Disk Storage Unit storage
capacity SG-285
4964 Diskette Storage Unit
description SG-51
part of minimum
configuration SG-23
required for program preparation SG-24
storage requirements SG-218
4965 Diskette Storage Unit
description SG-51
part of minimum
configuration SG-23
required for pro~ram preparation SG-24
storage requirements SG-218
4966 Diskette Magazine Unit
part of minimum
configuration SG-23
required for program preparation SG-24
storage requirements SG-218
4969 Magnetic Tape
Subsystem SG-293
4973 line Printer
as an EDX terminal CT-5
defined by TERMINAL
statement SG-127
end of forms CT-24
storage requirements SG-218
TERMINAL statement
example SG-128
4974 Matrix Printer
as an EDX terminal CT-S
defined by TERMINAL
statement SG-127
end of forms CT-24

o

o

c

modify image/control store,
$FONT utility OR-242
restore to character set, RE
$TERMUT2 OR-478
storage requirements SG-218
TERMINAL statement
example SG-128
4975 Printer
as an EDX terminal CT-6
defined by TERMINAL
statement SG-129
end of forms CT-24
storage requirements SG-218
TERMINAL statement
example SG-131
4978 Display Station
$FONT utility OR-468
as an EDX termi nal CT-5
control/image store SG-212
defined by TERMINAL
statement SG-132
modify image/control store
static screen sample
program CT-60
storage requirements SG-218
TERMINAL statement
example SG-135
4979 Display Station
as an EDX termi nal CT-5
defined by TERMINAL
statement SG-132
static screen sample
program CT-60
storage requirements SG-218
TERMINAL statement
example SG-135
4993 channel attach device CT-380

5230 Data Collection
Interactive SG-13
5620 4974 matrix printer attachment
defined by TERMINAL
statement SG-127

5630 4973 line printer attachment
defined by TERMINAL
statement SG-127
5719-AM3
See Indexed Access Method
5719-AM4
See Index~d Access Method
5719-ASA
See macro assembler
5719-CB4
See COBOL
5719-F02
See FORTRAN IV
5719-LM7
See macro library
5719-MS2
See Multiple Terminal Manager
5719-PL6
See PL/I
5719-SM2
See Sort/Merge
5719-SX2
See $RJESNA
5719-UT5
See ut iii ties
5719-XS3
See basic supervisor and emulator
5719-XX4
See program preparation
5740-LM4
See macro library/host
5799-TDE
See Data Collection Interactive
CDCI>

7850 teletypewriter adapter
attachment with 3101 Display
Terminal CT-470
considerations when
using CT-80, SG-113
overview CT-I0

Common Index

IG-329

'c-.··.~'
\

I

l

7

IG-330

SC34-0404

READER'S COMMENT FORM
SC34-0404-O

o

IBM Series/1 Event Driven Executive
Indexed Access Method Version 2 Guide
Your comments assist us in improving the usefulness of our publications; they are an
important part of the input used in preparing updates to the publications. I BM may
use and distribute any of the information you supply in any way it believes appropriate without incurring any obligation whatever. You may, of course, continue to
use the information you supply.
Please do not use this form for technical questions about the system or for requests
for additional publications; this only delays the response. Instead, direct your
inquiries or requests to your I BM representative or the I BM branch office serving
your locality.
Corrections or clarifications needed:
Page

Comment

Please indicate your name and address in the space below if you wish a reply.

·~· i

C··
."

I
I
I

I
I
I

I
I
I
I

Thank you for your coOperation. No postage stamp necessary if mailed in the U.S.A.
(Elsewhere, an IBM office ~representative will be happy to forward your comments.)

Reader's Comment Form

Fold and tape

Please Do Not Staple

Fold and tape

111111

NO POSTAGE
NECESSARY
IF MAILED
IN THE
UNITED STATES

BUSINESS REPLY MAIL
FIRST CLASS

PERMIT NO. 40

ARMONK, NEW YORK

/1(

POSTAGE WILL BE PAID BY ADDRESSEE

\(... )i.'

I BM Corporation
I nformation Development, Dept 27T
P.O. Box 1328
Boca Raton, Florida 33432

Fold and tape

Please Do Not Staple

,--,~;

Fold and tape

------ ----- ------_
-----

- - ---..

SC34-0404-0
Printed in U.S.A.

/

SC34-0404-0
Printed in U.S.A.



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37
Create Date                     : 2013:01:03 09:40:51-08:00
Modify Date                     : 2013:01:03 16:44:32-08:00
Metadata Date                   : 2013:01:03 16:44:32-08:00
Producer                        : Adobe Acrobat 9.52 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:7919d194-c603-4c2f-968e-423c1d6c112e
Instance ID                     : uuid:6af16183-e3ae-4b5a-83e9-413e78b3e1cf
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 346
EXIF Metadata provided by EXIF.tools

Navigation menu