UP 8832_OS3_Supervisor_Macroinstructions_Prog Ref Manual_Aug87 8832 OS3 Supervisor Macroinstructions Prog Manual Aug87

UP-8832_OS3_Supervisor_Macroinstructions_ProgRefManual_Aug87 UP-8832_OS3_Supervisor_Macroinstructions_ProgRefManual_Aug87

User Manual: UP-8832_OS3_Supervisor_Macroinstructions_ProgRefManual_Aug87

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

DownloadUP-8832_OS3_Supervisor_Macroinstructions_Prog Ref Manual_Aug87 UP-8832 OS3 Supervisor Macroinstructions Prog Manual Aug87
Open PDF In BrowserView PDF
UNISYS

OS/3
Supervisor
Macrol nstructions
Programming
Reference Manual

Copyright© 1987 Unisys Corporation
All Rights Reserved
Unisys is a trademark of Unisys Corporation.
Previous Title: OS/3 Supervisor Macroinstructions
Programmer Reference
Relative to Release
Level 10.0
Priced Item

August 1987
Printed in U S America
UP—8832

C

NO WARRANTIES OF ANY NATURE ARE EXTENDED BY THE
DOCUMENT. Any product and related material disclosed herein are only
furnished pursuant and subject to the terms and conditions of a duly
executed Program Product License or Agreement to purchase or lease
equipment. The only warranties made by Unisys, if any, with respect to
the products described in this document are set forth in such License or
Agreement. Unisys cannot accept any financial or other responsibility that
may be the result of your use of the information in this document or
software material, including direct, indirect, special or consequential
damages.
You should be very careful to ensure that the use of this information
and/or software material complies with the laws, rules, and regulations of
the jurisdictions with respect to which it is used.
The information contained herein is subject to change without notice.
Revisions may be issued to advise of such changes and/or additions.
FASTRAND, +SPERRY, SPERRY+UNIVAC, SPERRY, SPERRY UNIVAC,
UNISCOPE, UNISERVO, UNIS, UNIVAC, and + are registered trademarks
of Unisys Corporation. ESCORT, PAGEWRITER, PIXIE, PC/IT, PC/HT,
PC/microlT, SPERRYLINK, and USERNET are additional trademarks of
Unisys Corporation. MAPPER is a registered trademark and service mark
of Unisys Corporation. CUSTOMCARE is a service mark of Unisys
Corporation.

C

+
PUBLICATIONS
UPDATE

•

Operating System!3 (OS/3)
Supervisor Macroinstructions
User Guide

.L

.

!I rup-8e32-E

This Library Memo announces the release and availability of Update E to “SPERRY® Operating
System/3 (OS/3) Supervisor Macroinstructions User Guide”, UP—8832.
This manual describes the Operating System/3 (OS/3) Supervisor macroinstructions and gives instructions for
and examples of their use. It also contains Supervisor diagnostic and debugging aid information.
The Supervisor is a package of routines that form the heart of OS/3. It allows other parts of OS/3 to work
together and makes possible such features as multijobbing and spooling.
This update for release 10.0 describes the I/O TRACE facility, a debugging tool that is run as a symbiont.
All other changes are corrections or clarifications applicable to features present in the Supervisor prior to the
10.0 release.
Copies of Update E are now available. You can order the update only or the complete manual with the update
through your local Sperry representative. To receive only the update, order UP—8832--E. To receive the
complete manual, order UP—8832.

LIBRARY MEMO ONL..Y
Mailing Lists

BZ, CZ, and MZ

1101-251 Rev. 11/83

j

LIBRARY MEMO AND ATTACHMENT$fI
Mailing Lists AOO, A07, BOO, B07,
B08, MBW, 18, 18U, 19, 19U, 20,
20U, 21, 21U, 28U, 29U, 75, 75U,
76, and 76U
(Package E to UP—8832,
13 pages plus Memo)

TI SIEE7 IS
Library Memo for
UP—8832--E

May 1986

I

C;

+

r

PUBLICATIONS

Operating Systemf3 (OS/3)
Supervisor Macroinstructions
User Guide/Programmer
Reference

Eb 1ZZE
This Library Memo announces the release and availability of Updating Package D to “SPERRY®
Operating System/3 (OS/3) Supervisor Macroinstructions User Guide/Programmer Reference”,
UP-8832.
This update documents the following new macroinstructions for the 8.2 release:
•

GETLDA

•

PUTLDA

All other changes are corrections or clarifications applicable to features present in the supervisor prior to the
8.2 release.
Copies of Updating Package D are now available for requisitioning. Either the updating package only, or the
complete manual with the updating package may be requisitioned by your local Sperry representative. To
receive the updating package, order UP-8832—D. To receive the complete manual, order UP-8832.

LiBRARY MEMO ONLY
Mailing Lists
BZ, CZ and MZ

LIBRARY MEMO AND ATTACHMENTS
Mailing Lists BOO, B18, 28U, and 29U
(Package D to UP-8832,
13 pages plus Memo)

ijjIj

:91

.

Library Memo for
UP-8832—D

ELEASE DATE:
February, 1 984
UO1—251 Rev. 11/83

C

C’

SPE’/+UNIVAC
PUBLICATIONS
UPDATE
Operating System/3 (OS/3)
Supervisor Macroinstructions
User Guide/Programmer
Reference

UP-8832—C
This Library Memo announces the release and availability of Updating Package C to “SPERRY UNIVAC Operating
System/3 (OS/3) Supervisor Macroinstructions User Guide/Programmer Reference”, UP-8832.
The change in this update is a correction applicable to features present in the supervisor macroinstructions prior to
the 8.0 release.
Copies of Updating Package C are now available for requisitioning. Either the updating package only, or the
complete manual with the updating package may be requisitioned by your local Sperry Univac representative. To
receive the updating package, order UP-8832—C. To receive the complete manual, order UP-8832.

LArMO ONLY
Mailing Lists
BZ, CZ and MZ

L

IS.

L1;fY MEMO AND AACHM4S

Mailing Lists B00,818,28U and 29U
(Package C to UP-8832
5 pages plus Memo)

•

Library Memo for
UP-8832—C

RELEASE DATE:
December, 1982
jc1-25!

3/7

C:

C.

ERV+UNIVAC
COMPUTER SYSTEMS

PUBLICATIONS
UPDATE
OPeratin System/3 (OS/3)
Supervisor Macroinstructions
User Guide/Programmer
Reference

UP-8832 B
This Library Memo announces the release and availability of Updating Package B to “SPERRY UNIVAC Operating
System/3 (OS/3) Supervisor Macroinstructions User Guide/Programmer Reference”, UP-8832.
This update documents the following changes for release 8.0:
•

Enhancement of the OC STXIT routine

•

Restrictions to the monitor routine

•

Addition of the Soft-Patch Symbiont to the system debugging aids

This update also includes minor technical corrections to material applicable to the supervisor macro instructions prior
to release 8.0.
Copies of Updating Package B are now available for requisitioning. Either the updating package only, or the
complete manual with the updating package may be requisitioned by your local Sperry Univac representative. To
receive the updating package, order UP-8832-B. To receive the complete manual, order UP-8832.

LIBRARY MtMO:Q(WY
Mailing Lists BZ,
CZ and MZ

LIBRARY MEMO AND ATTACHMENTS
Mailing Lists BOO, B18, 28U, and 29U
(Package B to UP-8832,
41 pages pIus Memo)

THIS SHEET IS:
Library Memo for
UP-8832-B

RELEASE DATE:
September, 1982
JD21 p3/73

—

.-;:-

-

-

-1’
:7

--

-

-

____

Er’4uNIVAC
COMPUTER SYSTEMS

rPUBL1CATIONS
UPDATEJ.
Operating System/3 (OS/3)
Supervisor
Macroinstructions
User Guide/Programmer
Reference

This Library Memo announces the release and availability of Updating Package A to “SPERRY UNIVAC
Operating
System/3 (0S13) Supervisor Macroiristructions User Guide/Programmer Reference”, UP-8832.
This update discusses the newly added support of checkpoint files on diskette and magnetic tape
available with
release 7.1 of OS/3. It also contains minor corrections and clarifications.
Copies of Updating Package A are now available for requisitioning. Either the updating package only or
the complete
manual with the updating package may be requisitioned by your local Sperry Univac representative.
To receive only
the updating package, order UP-8832—A. To receive the complete manual, order UP-8832.

LfARV’MEMO4J
Mailing Lists
BZ, CZ (less DE,
GZ, HA) and MZ

I

L

AMEMO A4t kTt:AØ1MNS

Mailing Lists DE, GZ, HA, 28U and 29U
(Package A to UP-8832,
40 pages plus Memo)

.

r

TH!SET IS:
Library Memo for
UP-8832—A

RELEASE DATE:
September, 1981

k

SPE iY+U NIVC
COMPUTER SYSTEMS

PUBLICATIONS
RELEASE
Operating Systeml3 (OS/3)
Supervisor
Macroinstructions
User Guide/
Programmer Reference

This Library Memo announces the release and availability of “SPERRY UNIVAC® Operating Systemf3 (OS/3)
Supervisor Macroinstructions User Guide/Programmer Reference”, UP-8832.
This manual describes the Operating System/3 (OS/3) Supervisor macroinstructions and gives instructions and
examples for their use. It also contains Supervisor diagnostic and debugging aid information.
Additional copies may be ordered by your local Sperry Univac representative.

LIBRARY MEMO ONLY
Mailing Lists
BZ, CZ (less DE, GZ
and HA) and MZ

Li

LIBRARY MEMO AND ATTACHMENTS
Mailing Lists DE, GZ, HA, 28U and 29U
(Covers and 245 pages)

THIS SKEET IS
Library Memo

October, 1980

PSS 1

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Update F

PAGE STATUS SUMMARY
ISSUE:
RELEASE LEVEL:
Page
Number

Part/Section

Update
Level

Cover

F

Title Page/Disclaimer

P

PSS

1

Contents

1

1

A
Orig.

1, 2
3
4

5

Orig.
D
Orig.
A

6,7

E

1 thru 7
8
9

Orig.
D
Orig.

10

A

1
2
2a
2a
3 thru 48

Orig.
B
B
B
Orig.

49

B

50 thru 56
56a, 56b

Orig.
D

57

A

58 thru 63
3
4

2

7

7(cont.)

10 thru 13
14
15,16
17 thru 21

Glossary

Index

Update
Level

Part/Section

Page
Number

Update
Level

A
Orig.
A
Orig.

22

B

23 thru 25
26
27 thru 39
40
40a

Orig.
A
Orig.
E
E

41

A

42 thru 46
47,48

Orig.
B

49

C

50 thru 52
53
54

B
E
P

1 thru 5

Orig.

6,7

B

8, 9

Orig.

1

Orig.

A

4
5

Orig.
E

6

A

Orig.

7
8
9

Orig.
D
Orig.

10

B

1 thru 5

Orig.

11, 12

Orig.

1
2 thru 9

A
Orig.

11 thru 15

6

Page
Number

Part/Section

2,3

User Comment Form

B

10

5

—

F

2

Preface

Update F
UP—8832
10.0 Forward

Orig.

16

A

1 7 thru 22
23
24

Orig.
Orig.
Orig.

25

B

26 thru 44
45 thru 48
49 thru 55

Orig.
A
Orig.

56

B

57 thru 63

Orig.

1 thru 19

Orig.

1

Orig.

2

B

3 thru 5

Orig.

1

Orig.

2

B

3 thru 9

Orig.

New Page

(=)

All the technical changes are denoted by an arrow
in the margin. A downward pointing arrow (ii) next to a line indicates that
technical changes begin at this line and continue until an upward pointing arrow (1) is found. A horizontal arrow (=‘) pointing to a line
indicates a technical change in only that line. A horizontal arrow located between two consecutive lines indicates technical changes in both
lines or deletions.

0

C)

0

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

PSS 1
Update E

PAGE STATUS SUMMARY
ISSUE:
RELEASE LEVEL:

Update E
UP—8832
10.0 Forward
—

2
2a
2a
3 thru 48
49
50 thru 56
56a, 56b
57
58 thru 63

2 thru 9
10

User Comment
Sheet

11 thru 15

16
17
23
24
25
26
45
49
56
57

thru 22

thru 44
thru 48
thru 55

New Page
All the technical changes are denoted by an arrow 1
=) in the margin. A downward pointing arrow
next to a line indicates that
technical changes begin at this line and continue until an upward pointing arrow (t)is found. A horizontal arrow
pointing to a line
indicates a technical change in only that line. A horizontal arrow located between two consecutive lines indicates technical
changes in both
lines or deletions.

()

(=)

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

PSS 1

Update D

PAGE STATUS SUMMARY
ISSUE:
RELEASE LEVEL:
Page
Number

Part/Section
Cover/Disclaimer

Update
Level
Orig.

PSS

1

D

Preface

1
2

A

Orig.

1.2
3
4
5
6,7

Orig.
D
Orig.
A
B

1 thru 7
8
9
10

Orig.
D
Orig.
A

2

1
2
2a
3 thru 48
49
50 thru 56
56a, 56b
57
58 thru 63

Orig.
B
B
Orig.
B
Orig.
D
A
Orig.

3

1 thru 5

Orig.

4

1
2 thru 9
10
11 thru 15
16
17 thru 22
23
24
25
26 thru 44
45 thru 48
49 thru 55
56
57 thru 63

A
Orig.
B
Orig.
A
Orig.
A
Orig.
B
Orig.
A
Orig.
B
Orig.

5

1 thru 19

Orig.

6

1
2
3 thru 5

Orig.
B
Orig.

7

1
2
3 thru 9
10 thru 13
14

Orig.
B
Orig.
A
Orig.

Contents

1

Update D UP-8832
8.2 Forward

Part/Section
87(cont.)

—

Page
Number
15, 16
17 thru
22
23 thru
26
27 thru
40
40a
41
42 thru
47,48
49
50 thru

21
25
39

46

53

Update
Level

Part/Section

Page
Number

Update
Level

A
Orig.
B
Orig.
A
Orig.
B
B
A
Orig.
B
C
B

Glossary

1 thru 5
6,7
8,9

Orig.
B
Orig.

Index

1
2,3
4
5
6
7
8
9
10
11,12

Orig.
A
Orig.
D
A
Orig.
D
Orig.
B
Orig.

User Comment
Sheet

New pages
All the technical changes are denoted by an arrow (==) in the margin. A downward pointing arrow (J.L) next to a line indicates that
technical changes begin at this line and continue until an upward pointing arrow
is found. A horizontal arrow (==) pointing to a line
indicates a technical change in only that line. A horizontal arrow located between two consecutive lines indicates technical changes in both
lines or deletions.

(fr)

C

C

C

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

PSS 1
Update C

PAGE STATUS SUMMARY
ISSUE: Update C UP-8832
RELEASE LEVEL: 8.0 Forward
—

Part/Section

Page
Number

Update
Level
Orig.

Cover/Disclaimer

Page
Number

Update
Level

7 (cont)

27 thru 39
40
40a
41
42 thru 46
47, 48
49
50 thru 53

Orig.
B
B
A
Orig.
B
C
B

Part/Section

PSS

1

C

Preface

1
2

A
Orig.

Contents

1 thru 4
5
6,7

Orig.
A
B

Glossary

1 thru 5
6,7
8,9

Orig.
8
Orig.

1 thru 9
10

Orig.
A

Index

2

1
2
2a
3 thru 48
49
50 thru 56
57
58 thru 63

Orig.
B
B
Orig.
B
Orig.
A
Orig.

1
2,3
4, 5
6
7
8
9
10
11,12

Orig.
A
Orig.
A
Orig.
B
Orig.
B
Orig.

3

1 thru 5

Orig.

2 thru 9
10
11 thru 15
16
17 thru 22
23
24
25
26 thru 44
45 thru 48
49 thru 55
56
57 thru 63

A
Orig.
B
Orig.
A
Orig.
A
Orig.
B
Orig.
A
Orig.
B
Orig.

5

1 thru 19

Orig.

6

1
2
3 thru 5

Orig.
B
Orig.

2
3 thru 9
l0thru 13
14
15,16
17 thru 21
22
23 thru 25
26

Orig.
B
Orig.
A
Orig.
A
Orig.
B
Orig.
A

1

4

7

Part/Section

Page
Number

Update
Level

User Comment
Sheet

All the technical changes are denoted by an arrow (*-) in the margin. A downward pointing arrow ( $1 next to a line indicates that
technical changes begin at this line and continue until an upward pointing arrow (
) is found. A horizontal arrow (-b-) pointing to

4

a line indicates a technical change in only that line. A horizontal arrow located between two consecutive lines indicates technical
changes in both lines or deletions.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

PSS 1
Update B

PAGE STATUS SUMMARY
ISSUE: Update B UP-8832
RELEASE LEVEL: 8.0 Forward
—

Part/Section

Page
Number

Update
Level
Orig.

Cover/Disclaimer

Page
Number

Update
Level

7 (cont)

27 thru 39
40
40a
41
42 thru 46
47
48 thru 53

Orig.
B
B
A
Orig.
B
B*

Part/Section

PSS

1

B

Preface

1
2

A
Orig.

Contents

1 thru 4
5
6,7

Orig.
A
B

Glossary

1 thru 5
6,7
8,9

Orig.
B
Orig.

1 thru 9
10

Orig.
A

Index

2

1
2
2a
3 thru 48
49
50 thru 56
57
58 thru 63

Orig.
B
B*
Orig.
B
Orig.
A
Orig.

1
2,3
4, 5
6
7
8
9
10
11,12

Orig.
A
Orig.
A
Orig.
B
Orig.
B
Orig.

3

1 thru 5

Orig.

2 thru 9
10
11 thru 15
16
17 thru 22
23
24
25
26 thru 44
45 thru 48
49 thru 55
56
57 thru 63

A
Orig.
B
Orig.
A
Orig.
A
Orig.
B
Orig.
A
Orig.
B
Orig.

5

1 thru 19

Orig.

6

1
2
3 thru 5

Orig.
B
Orig.

2
3 thru 9
l0thru 13
14
15, 16
l7thru 21
22
23 thru 25
26

Orig.
B
Orig.
A
Orig.
A
Orig.
B
Orig.
A

1

4

7

Part/Section

Page
Number

Update
Level

User Comment
Sheet

*New pages
All tne technical changes are denoted by an arrow

(-ø.)

in the margin. A do wnward pointing arrow

technical changes begin at this line and continue until an upward pointing arrow

(

( fi

next to a line indicates that

) is found. A horizontal arrow

(-ø) pointing to
a line indicates a technical change in only that line. A horizontal arrow located between two consecutive lines indicates technical
changes in both lines or deletions.

UP-8832

SPERRY UNIVAC 05/3
SUPERVISOR MACROINSTRUCTIONS

PSS 1
Update A

PAGE STATUS SUMMARY
ISSUE:
RELEASE LEVEL:
Part/Section

Page
Number

Update
Level

—

Part/Section

Page
Number

Update
Level

Part/Secton

Page
Number

Update
Level

Orig.

Cover/Disclaimer
PSS

1

A

Preface

1
2

A
Orig.

Contents

1 thru 4
5
6,7

Orig.
A
Orig.

1

1 thru 9
10

Orig.
A

2

1 thru 56
57
58 thru 63

Orig.
A
0 rig.

3

1 thru 5

Orig.

4

1
2 thru 15
16
17 thru 22
23
24 thru 44
45thru48
49 thru 63

A
Orig.
A
Orig.
A
Orig.
A
Orig.

5

1 thru 19

Orig.

6

1 thru 5

Orig.

7

1 thru 9
l0thru 13
14
15,16
17 thru 25
26
27 thru 40
40a
41,42
43 thru 47

Orig.
A
Orig.
A
Orig.
A
Orig.
A*
A
Orig.

Glossary

1 thru 9

Orig.

Index

1
2,3
4, 5
6
7 thru 12

Orig.
A
Orig.
A
Orig.

C)

[

Update A UP-8832
7.1 Forward

User Comment
Sheet

*New pages
All the technical changes are denoted by an arrow

(—) in the margin. A downward pointing arrow (

technical changes begin at this line and continue until an up ward pointing arrow (

f I next to a line indicates that

1/s found. A horizontal arrow

(-) pointing to

a line indicates a technical change in only that line. A horizontal arrow located between two consecutive lines indicates technical
changes in both lines or deletions.

P55 1

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

PAGE STATUS SUMMARY
ISSUE: UP8832
7.0 Forward
LEVEL:
RELEASE
Part/Section

Page
Number

Update
Level

Pa1t/SeCtiOn

Page
Number

Update
Level

Part/Section

Page
Number

Update
Level

Cover/Disclaimer
PSS

1

Preface

1,2

Contents

1 thru 7

1

lthrulO

2

lthru63

3

lthru5

4

lthru63

5

lthrul9

6

lthru5

7

lthru47

Glossary

1 thru 9

Index

1 thru 12

User Comment
Sheet

All the technical changes are denoted by an arrow (*-) in the margin. A down ward pointing arrow
technical changes begin at this line and continue until an upward pointing arrow (

4

1

(

4r

) next to a line indicates that

is found. A horizontal arrow

(-ø.)

pointing to

a line indicates a technical change in only that line. A horizontal arrow located between two consecutive lines indicates technical
changes in both lines or deletions.

c_i

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Preface 1
Update A

Preface

This manual describes the SPERRY UNIVAC Operating System/3 (OS/3) Supervisor
macroinstructions and gives instructions and examples for their use. A user of this manual
should have a knowledge of the OS/3 assembler, job control, and data management. This
document is one of three manuals that explain the supervisor; the others are: the
Introduction manual, UP-8830, which gives a general description of the supervisor, and
Concepts and Facilities, UP-8831, which provides a functional description and gives
information on generating the supervisor. This manual is arranged as follows:
•

Section 1. Introduction
This section provides an introduction and gives the conventions for writing the
macroinstruction statements that request the supervisor services.

•

Section 2. Program Management Macros
This section gives the function and format of the supervisor macroinstructions that
provide for management of program design and execution.

•

Section 3. Disk and Diskette Space Management
This section gives the function and format of the macroinstructions that provide for
automatic disk and diskette space management.

•

Section 4. System Access Technique Macros
This section gives the function and format of the macroinstructions for the system
access technique, which provides efficiency in the handling of disk, format label
diskette, and tape files.

•

Section 5. Multitasking Macros
This section gives the function and format of the macroinstructions associated with
the system’s multijobbing and multitasking capability.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Section 6.

Spooling

Preface 2

— Breakpoint Macroinstruction

This section describes spooling and gives the function and format of the breakpoirt
macro.
I

Section 7.

Diagnostic and Debugging Aids

This section describes the supervisor diagnostic and debugging aids and gtves the
function and format of the associated macros.
‘

Glossary
Briefly describes some of the terms used in this manual.

(

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Contents 1

Contents

PAGE STATUS SUMMARY
PREFACE

CONTENTS
1.

2.

INTRODUCTION
1.1.

GENERAL

1-1

1.2.

MACROINSTRUCTION FORMAT AND STATEMENT CONVENTIONS

1-1

1.3.
1.3.1.
1.3.2.
1.3.3.
1 .3.4.
1.3.5.
1.3.6.

ASSEMBLER CODING FORM
Label Field
Operation Field
Operand Field
Comments Field
Continuation Column
Sequence Field

1-5
1-6
1—6
1-7

1.4.
1.4.1.
1.4.2.
1.4.3.

MACROINSTRUCTIONS
Declarative Macroinstructions
Imperative Macroinstructions
Summary of Supervisor Macroinstructions

1-7
1—7
1—8
1-8

1.5.

PROGRAMMING CONSIDERATIONS FOR MACROINSTRUCTIONS

1-10

1—7
1-7
1—7

PROGRAM MANAGEMENT MACROS
2.1.
2.1.1.
2.1 .2.
2.1 .3.
2.1 .4.
2.1 .5.
2.1 .6.

PROGRAM LOADER
Block Loader
Relocation
Library Search Order
Read Pointer for Repetitive Loads
Loader Error Processing
Load a Program Phase (LOAD)

2-1
2—2
2—2
2—3
2-3
2-4
2-4

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Contents 2

2.1.7.
2.1 .8.
2.1.8.1.
2.1 .9.

Load a Program Phase and Relocate (LOADR)
Locate a Program Phase Header (LOAD I)
Program Phase Header
Load a Program Phase and Branch (FETCH)

2-6
2—7
2—9
2-9

2.2.
2.2.1.
2.2.2.
2.2.3.
2.2.4.
2.2.5.

PROGRAM TERMINATION
Normal Termination
Abnormal Termination
Printout
End-of-Job Step (EOJ)
Cancel a Job (CANCEL)

2—il
2—12
2—12
2-12
2-12
2—13

2.3.
2.3.1.
2.3.1.1.
2.3.1.2.
2.3.1.3.
2.3.2.
2.3.2.1.
2.3.2.2.
2.3.2.3.
2.3.2.4.

TIMER SERVICES
Date and Time Facilities
Current Date
Time of Day
Get Current Date and Time (GETIME)
Timer Interrupt Facilities
Set Timer Interrupt (SETIME)
Continue Processing until Interrupt
Wait for Interrupt
Cancel a Previous Timer Interrupt Request

2-16
2—15
2—15
2—16
2—16
2—19
2—20
2—22
2—24
2—24

2.4.
2.4.1.
2.4.2.
2.4.3.
2.4.4.
2.4.5.
2.4.6.
2.4.7.

PROGRAM LINKAGE
Linkage Register Conventions
Linkage Procedure
Register Save Area
Call a Program (CALL/VCALL)
Generate an Argument List (ARGLST)
Save Register Contents (SAVE)
Restore Registers and Return (RETURN)

2-24
2—25
2-26
2—27
2-28
2-30
2-30
2—32

2.5.
2.5.1.
2.5.1 .1.

2-34
2—35

2.5.1 .2.
2.5.2.
2.5.3.
2.5.4.
2.5.4.1.
2.5.4.2.
2.5.4.3.
2.5.5.
2.5.6.
2.5.7.
2.5.8.
2.5.9.
2.5.9.1.
2.5.9.2.
2.5.9.3.

ISLAND CODE LINKAGE
Attaching Island Code to a Task (STXIT)
Attaching Program Check, Abnormal Termination, and
Interval Timer Island Code
Attaching Operator Communication Island Code
Detaching Island Code from a Task (STXIT)
Island Code Entrance
Island Code Exit (EXIT)
Exiting from Program Check and Operator Communication Island Code
Exiting from Interval Timer Island Code
Exiting from Abnormal Termination Island Code
Program Check
Abnormal Termination
Interval Timer
Operator Communication
Use of Island Code with Multitasking
Program Check and Interval Timer with Multitasking
Abnormal Termination with Multitasking
Operator Communication with Multitasking

2—35
2—37
2—38
2—39
2—40
2—41
2—41
2—42
2-42
2—45
2—47
2—48
2—51
2—51
2—53
2—53

2.6.
2.6.1.
2.6.2.

SYSTEM INFORMATION CONTROL
Get Data from Communication Region (GETCOM)
Put Data into Communication Region (PUTCOM)

2-53
2-54
2-55

UP-8832

3.

4.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Contents 3
Update D

2.6.3.
2.6.4.
2.6.5.

Get Data from System Control Tables (GETINF)
Move Data from LDA (GETIDA)
Move Data to IDA (PUTIDA)

2—55
2—56a
2—56b

2.7.
2.7.1.
2.7.2.
2.7.3.
2.7.4.
2.7.5.
2.7.6.

CONTROL STREAM READER
Embedded Data
Reading Embedded Data
Get File from Control Stream (GETCS)
Rereading Embedded Data
Reset Control Stream Reader (SETCS)
Minimizing Disk Accesses

2-57
2-58
2-58
2-59
2-61
2-61
2-63

DISK AND DISKETTE SPACE MANAGEMENT
3.1.

GENERAL

3-1

3.2.

ACCESS DISK/DISKETTE FORMAT LABEL FILE VTOC USER BLOCK (OBTAIN)

3-2

3.3.

OBTAIN DISKETTE DATA SET LABEL INFORMATION (OBTAIN)

3-4

3.4.

SPACE MANAGEMENT ERROR CODES

3-5

SYSTEM ACCESS TECHNIQUE MACROINSTRUCTIONS
4.1.

GENERAL

4-1

4.2.
4.2.1.
4.2.2.
4.2.3.
4.2.4.
4.2.5.
42.5.1.
4.2.5.2.
4.2.6.

DISK SAT FILE ORGANIZATION AND ADDRESSING METHODS
PCA Table Entries Used in Addressing
Block Addressing by Key
Block Addressing by Relative Block Number
Disk Space Control
Record Interlace
Interlace Operation
Lace Factor Calculation
Accessing Multiple Blocks

4-1
4-1
4-3
4-3
4-4
4-5
4—6
4-8
4-8

4.3.
4.3.1.
4.3.1.1.
4.3.1.2.
4.3.2.
4.3.3.
4.3.3.1.
4.3.3.2.

DISK SAT FILE INTERFACE
Define a New File (DTFPF)
Filelocks
Shared Filelock Capability
Defining a Partition (PCA)
Processing Partitioned SAT Files
Processing Blocks by Key
Processing by Relative Block Number

4-10
4-10
4—12
4-13
4-14
4-17
4—17
4—18

4.4.
4.4.1.
4.4.2.
4.4.3.
4.4.4.
4.4.5.
4.4.6.
4,4.7.

CONTROLLING YOUR DISK FILE PROCESSING
Open a Disk File (OPEN)
Retrieve Next Logical Block (GET)
Output a Logical Block (PUT)
Wait for Block Transfer (WAITF)
Read by Key Equal/Read by Key Equal or Higher (READE/READH)
Access a Physical Block (SEEK)
Close a Disk File (CLOSE)

4-19
4-19
4-20
4-21
4-22
4-23
4-24
4-24

4.5.

SAT FOR TAPE FILES

4-25

.

UP-8832

5.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Contents 4

4.6.
4.6.1.
4.6.2.
4.6.2.1.
4.6.2.2.
4.6.3.

SYSTEM STANDARD TAPE LABELS
Volume Label Group
File Header Label Group
First File Header Label (HDR1)
Second File Header Label (HDR2)
File Trailer Label Group

4.7.
4.7.1.
4.7.2.
4.7.3.

TAPE VOLUME AND FILE ORGANIZATION
Standard Tape Volume Organization
Nonstandard Tape Volume Organization
Unlabeled Tape Volume Organization

4.8.
4.8.1.
4.8.2.

TAPE SAT FILE INTERFACE
Define a Magnetic Tape File (SAT)
Define a Tape Control Appendage (TCA)

4-45
4-45
4-47

4.9.
4.9.1.
4.9.2.
4.9.3.
4.9.4.
4.9.5.
4.9.6.

CONTROLLING YOUR TAPE FILE PROCESSING
Open a Tape File (OPEN)
Get Next Logical Block (GET)
Output Next Logical Block (PUT)
Wait for Block Transfer (WAITF)
Control Tape Unit Functions (CNTRL)
Close a Tape File (CLOSE)

4-50
4-51
4-52
4-52
4-53
4-54
4-55

4.10.
4.10.1.
4.10.2.
4.10.2.1.
4.10.2.2.

BLOCK NUMBER PROCESSING
Facilities Required for Block Number Processing
Specifications for Block Number Processing
Initialized Processing
Noninitialized Processing

4-55
4-56
4-57
4—57
4—58

4-26
4-27
4-29
4-29
4—32
4-33

.

4-38
4-38
4-42
4-44

.

.

.

MULTITASKING MACROS
5.1.
5.1 .1.
5.1.1.1.
5.1.1.2.

GENERAL
Multijobbing and Multitasking
Primary Task
Subtask

5-1
5—1
5—1
5—2

5.2.
5.2.1.
5.2.2.
5.2.3.
5.2.4.
5.2.5.
5.2.6.

TASK MANAGEMENT
General
Task Creation
Task Priority
Task Termination
Queue Driven Task
Hierarchical Structure

5-2
5-2
5-3
5—3
5-3
5-4
5-4

5.3.
5.3.1.
5.3.2.
5.3.3.
5.3.4.
5.3.5.
5.3.6.

TASK MANAGEMENT MACROINSTRUCTIONS•
Generate an Event Control Block (ECB)
Create an Additional Task (ATTACH)
Terminate a Task (DETACH)
Yield until Task Completion (TYI.ELD)
Reactivate a Task (AWAKE)
Change a Priority (CHAP)
.:.

.

.

.

.

.

.

.

.

‘.

..

.

..:

.

.

54
55
5-7
5_9
5-10
5-1 1
5-12

fm

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

5.4.
5.4.1.
5.4.2.
5.4.3.
5.4.4.
5.4.5.
5.4.6.

6.

7.

TASK SYNCHRONIZATION
General
Wait for Task Completion (WAIT)
Multiple Task Wait (WAITM)
Activate the Waiting Task (POST)
Deactivate a Task (TPAUSE)
Reactivate a Task (TGO)

SPOOLING

-

Contents 5
Update A

5-13
5-13
5-14
5-15
5-16
5-1 7
5-18

BREAKPOINT MACROINSTRUCTION

6.1.
6.1.1.
6.1.2.
6.1.3.
6.1.4.
6.1.5.

GENERAL
Initialization
Input Reader
Spooler
Output Writer
Breakpoint

6-1
6—1
6-2
6-2
6-3
6-4

6.2.

TO USE SPOOLING

6-4

6.3.

CREATE A BREAKPOINT IN A SPOOL OUTPUT FILE (DMBRK)

6-5

DIAGNOSTIC AND DEBUGGING AIDS
7.1.
7.1.1.
7.1.2.
7.1.3.

STORAGE DISPLAYS
Snapshot Dumps (SNAP/SNAPF)
Normal Termination Dumps (DUMP)
Abnormal Termination

7-1
7-1
7-5
7-10

7.2.
7.2.1.
7.2.2.
7.2.2,1.
7.2.2.2.

CHECKPOINT AND RESTART CAPABILITY
How to Generate Checkpoint Records (CHKPT)
Using a SAT File as a Checkpoint File
Estimate Space Requirements for a Disk Checkpoint File
Define, Open, and Close a SAT Checkpoint File (DDCPF, DCPOPN, DCPCLS)

7-10
7-12
7-13
7-14
7-1 5

7.3.
7.3.1.
7.3.1 .1.
7.3.1 .2.
7.3.2.
7.3.3.
7.3.4.
7.3.4.1.
7.3.4.1 .1.
7.3.4.1 .2.
7.3.4.1 .3.
7.3.4.2.
7.3.4.3.
7.3.4.4.
7.3.4.5.
7.3.5.
7.3.5.1.
7.3.5.1 .1.
7.3.5.1 .2.

MONITOR AND TRACE CAPABILITY
How to Call the Monitor Routine
Monitoring from the Beginning of the Job
Monitoring after Execution Begins
Monitor Input Format
Defining What You Want to Monitor
Specifying Options
Storage Reference Option (5)
Program Relative Address (PR)
Base/Displacement Address (B/D)
Absolute Address (ABS)
Instruction Location Option (A)
Instruction Sequence Option (I)
Register Change Option (R)
No Option Specified? You Get a Default
Specifying Actions
Display Actions
Register Display (DAR)
Storage Display (DAS)

7-17
7-18
7—18
7-21
7-23
7-24
7-26
7—27
7—27
7-29
7-29
7—29
7-30
7-31
7—32
7-32
7-33
7-33
7-35

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Contents 6
Update E

73.5.1 .3.
7.3.5.2.
7.3.5.3.
7.3.6.

Default Display
Halt Action (H)
Quit Action (Q)
Cancel of Monitor

7—37
7—37
7—38
7-39

7.4.
7.4.1.
7.4.2.
7.4.3.
7.4.4.
7.4.5.
7.4.6.
7.4.6.1.
7.4.6.2.
7.4.6.3.
7.4.6.4.
7.4.6.5.
7.4.7.

SYSTEM DEBUGGING AIDS
Supervisor Debug Option
Console Debug Options
Transient Management Halts
Symbiont Halt
Shared Code Halts and Pauses
Soft-Patch Symbiont (PT)
Soft-Patching Using the Workstation Console
Soft-Patching Using Card Input
Using the PT Command
Cancelling the PT Symbiont
PT Symbiont Error Messages
I/O Trace Facility

7-40
7-41
7—46
7—46
7-47
7-47
7-48
7—49
7—51
7—51
7—52
7—52
7—53

GLOSSARY
INDEX
USER COMMENT SHEET
FIGURES
1-1.

Assembler Coding Form

1-6

2—1.
2—2.
2—3.
2-4.
2-5.
2-6.
2-7.
2—8.
2-9.
2-10.
2—11.

Examples of GETIME Macroinstruction
Example of SETIME Macroinstruction
Register Save Area Format
Example of Program Check Island Code Linkage Using Symbolic Addresses
Example of Program Check Island Code Linkage Using Register Addresses
Example of Abnormal Termination Island Code Linkage Using Symbolic Addresses
Example of Interval Timer Island Code Linkage Using Symbolic Addresses
Example of Operator Communication Island Code Linkage Using Symbolic Addresses
Example of Operator Communication Island Code Linkage Using Register Addresses
Example of Discrete Program Check Island Code for Each Task in a Job Step
Example of Common Program Check Island Code for All Tasks in a Job Step

2-18
2-23
2-27
2-43
2—44
2—46
2-47
2-49
2-50
2-51
2-52

4—1.
4—2.
4—3.
4—4.
4-5.
4-6.
4—7.
4—8.
4—9.
4—10.

Partition Control Appendage (PCA) Table Format
Record Formats for Disk Devices
Definition of Interlace Variables
Interlace Accessing
Define the File (DTF) Table Format
Tape Volume 1 (VOL1) Label Format for an EBCDIC Volume
First File Header Label (HDR1) Format for an EBCDIC Tape Volume
Second File Header Label (HDR2) Format for an EBCDIC Tape Volume
Tape File EOF1 and EOV1 Label Formats for EBCDIC Tapes
Tape File EOF2 and EOV2 Label Formats for EBCDIC Tapes

4—2
4-3
4—6
4—7
4-9
4-28
4-30
4-32
4-34
4-36

UP-8832

4—11.
4—12.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Contents 7
Update E

4-14.
4—15.
4—16.
4-17.
4-18.
4-19.
4-20.
4—21.

Reel Organization for EBCDIC Standard Labeled Tape Volumes Containing a Single File
Reel Organization for EBCDIC Standard Labeled Tape Volume: Multifile Volume
with End-of-File Condition
Reel Organization for EBCDIC Standard Labeled Tape Volumes: Multifile Volumes
with End-of-Volume Condition
Reel Organization for EBCDIC Nonstandard Volume Containing a Single File
Reel Organization for EBCDIC Nonstandard Multifile Volume
Reel Organization for Unlabeled EBCDIC Volumes
Tape Volume 1 (VOL1) Label Format for an EBCDIC Volume with Block Numbers
First File Header Label (HDR1) Format for an EBCDIC Tape Volume with Block Numbers
Second File Header Label (HDR2) Format for an EBCDIC Tape Volume with Block Numbers
Tape File EOF1 and EOV1 Label Formats for Block Numbered EBCDIC Files
Tape File EOF2 and EOV2 Label Formats for Block Numbered EBCDIC Files

4-41
4-42
4—43
4—44
4-59
4—60
4-61
4-62
4-63

5—1.

Event Control Block (ECB) Format

5—7

6—1.

Relationship of Spooling Devices and User Programs

6—2

7-1.

Monitor Input Format

7—24

4—13.

4—39
4—40

TABLES
1—1.

Supervisor Macroinstructions

1—8

2—1.

Register Save Area

2—28

4—1.
4—2.
4—3.
4—4.
4—5.

Tape Volume 1 (VOL 1) Label Format, Field Description for an EBCDIC Volume
First File Header Label (HDR1), Field Description
Second File Header Label (HDR2), Field Description
Tape File EOF1 and EOV1 Labels, Field Description
Tape File EOF2 and EOV2 Labels, Field Description

4—29
4—31
4—33
4—35
4—37

7—1.
7—2.
7—3.
7—4.

Checkpoint/Restart Error Codes
Summary of Actions and Program Information Printed
Summary of System Debugging Aids
Available Options for I/O Trace

7—13
7—39
7—40
7—54

1-i

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

1.

1.1.

Introduction

GENERAL

The services provided by the System 80 Operating System/3 (OS/3) supervisor are
described in the OS/3 Supervisor Concepts and Facilities Manual, UP-8831. The basic
assembly language (BAL) programmer utilizes these services through a complement of
supervisor macroinstructions whose function and format, along with examples of their
use, are contained in this manual. (These macroinstructions are used in assembly
language and cannot be directly called by higher-level languages.)
Following are the conventions used in writing the supervisor macroinstructions and
general rules for using the assembler coding form. This section also includes a summary
listing of the supervisor macroinstructions, which includes a list of the pages where the
format of each macroinstruction is located.
1.2.

MACROINSTRUCTION FORMAT AND STATEMENT CONVENTIONS

The general format of a macroinstruction is:
LABEL

symbolic
name

AOPERATIONz2

macro

OPERAND

parameters

mnemonic

•

A symbolic name can appear in the label field. It can have a maximum of eight
characters and must begin with an alphabetic character.

•

The appropriate macroinstruction mnemonic must appear in the operation field and
identifies the operation or service requested.

•

When parameters are specified in the operand field, they must be positional
parameters or keyword parameters as required by the particular function.

•

Parameters must not be separated by blanks.

•

Assembler rules regarding blank columns and continuation of the operand field must
be followed.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

1-2

The conventions used to delineate the supervisor macroinstructions are as follows:
•

Capital letters, commas, parentheses, and equal signs must be coded exactly as
shown.
Examples:
R
All
(1)
SI ZE=

•

Lowercase letters and words are generic terms representing information that must be
supplied by the user. Such lowercase terms may contain hyphens and acronyms (for
readability). Acronyms that form part of the variable symbolic name remain
capitalized.
Examples:
symbol
start add
numb e r of
pa ram-i
-

-

-

bytes

CCB- name

•

Information contained within braces represents mandatory entries of which one must
be chosen.
Examples:
PC
IT
AB

J

1

•

input-area
(1)

Information contained within brackets represents optional entries that (depending
upon program requirements) are included or omitted. Braces within brackets signify
that one of the specified entries must be chosen if that parameter is to be included.
Examples:
entry numb e r
,R]
• CCB-name
-

[

flAIL

LI.w
[
[

ERROR=symbo I]
,WAIT=YES]

•

1-3

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

When an uppercase portion of a parameter is underlined, only that portion need be
coded. For example:
PR: xv

canbe coded as either P:12 or PR:12.
•

An ellipsis (series of three periods) indicates the omission of a variable number of
entries.
Example:
CCB-name-1

•

CCB-name-n

An optional parameter that has a list of optional entries may have a default
specification that is supplied by the operating system when the parameter is not
specified by the user. Although the default may be specified by you with no adverse
effect, it is considered inefficient to do so. For easy reference, when a default
specification occurs in the format delineation it is printed on a shaded background. If,
by parameter omission, the operating system performs some complex processing
other than parameter insertion, it is explained in an “if omitted” sentence in the
parameter description.
Example:

•

Positional parameters must be written in the order specified in the operand field and
must be separated by commas. When a positional parameter is omitted, the comma
must be retained to indicate the omission, except for the case of omitted trailing
para meters.
Examples:
Assume that LOAD is a supervisor macroinstruction with one mandatory
positional parameter (phase-name) and four optional positional parameters (load
addr, error-addr, and R):
Format:
LABEL
[symbol]

LOPERATIONz2
LOAD

OPERAND
phase-name
1
1
1(1)

1,Iload-addr
L (ø)

r,Ierror-addrfl

L 1(r)

JJ

[,Rj

[,DA]

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

1-4

Macroinstruction statements might be written:
1

10
LOAD
LOAD
LOAD
LOAD

•

16
RECAPLØ5,INADDR,ERADDR,R
RECAPLØ5, ERADDR
RECAPLØ5,INADDR
RECAPLØ5
,

A keyword parameter consists of a word or a code immediately followed by an equal
sign, which is, in turn, followed by a specification. Keyword parameters can be
written in any order in the operand field. Commas are required only to separate
para meters.
Examples:
Assume that PCA is a supervisor macroinstruction with two mandatory keyword
parameters (IOAREA1 and BLKSIZE) and nine optional keyword parameters
(EODADDR, FORMAT, KEYLEN, LACE, LBLK, SEQ. SIZE, UOS, and VERIFY):
Format:
LABEL

LOPERATIONL
PCA

[symbol]

OPERAND
IOAREA1=area-name
BLKS I ZE=n
[,EODADDR=end-of-data-addr]
[ FORMAT=NOJ
[ ,KEYLEN=n]
[,LACE=n]
,

[
[

LBLK=n]
,SEQ=YES]
[,SI ZE=n]

[
[

UOS=n]
,VERI FY=YES]

Macroinstruction statements might be written:
1

10
PCA

72
16
IOAREA1=WORKAREA,B1KSIZE=256,F0RMAT=NO,EODADDR=ENDNAME, x
SEQ=YES SI ZE=1 UOS=1 VER I FY=YES
,

PCA

EODADDR=ENDNAME,IOAREA1=INAREA,UOS=1,BLKSIZE=256

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

•

1-5

The option to use register preloading is indicated by a register number enclosed in
parentheses and may be shown as (1), (0), (1 5), or (r). This indicates that, instead of
entering a symbolic address or a value as the parameter in the macroinstruction, you
intend to load the designated register with the required data prior to the execution of
the macroinstruction. For example, in the format illustration:
LABEL
[symbol]

z1OPERATIONL

GETCS

OPERAND
Iir1Putarea}
1(1)

r

number-of-records

L

r,Jerror-addrfl
JJ
L 1(r)

1,i
L 180

The optional entries (1) and (0) refer to registers 1 and 0. The optional entry (r) refers
to a register (other than 1 or 0) to be designated by you in the macroinstruction
statement. For example, the instruction:
1

16
10
GETCS WORK(0),ERRADDR

Specifies the input area (positional parameter 1) as WORK and the error address
(positional parameter 3) as ERRADDR. It also specifies that, at the time this
macroinstruction is executed, register 0 will contain the number of records to be read
(positional parameter 2).
Note the use of the shaded entry 1, which means that an entry of one as the number
of records is assumed if you omit positional parameter 2; and the shaded entry 80,
which means a record image of 80 bytes is to be read if you omit positional
parameter 4.

1.3.

ASSEMBLER CODING FORM

To convert your written program to a form that can be conveniently input to the computer,
you enter your written work in the form of 80-column card images. To make the job of the
programmer, keypunch operator, and any other person who may reference this program
easier, there are conventions for writing and reading programs and reference materials. A
useful tool is the assembler coding form. (See Figure 1—1.)
Theoretically, you could write your program on a plain sheet of paper, as long as you
observe the assembly language formatting rules. Using an assembler coding form,
however, will ease the job of preparing your input card images.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

1-6

The following subsections describe the conventions and rules that apply to the use of this
form. Following these rules will result in a stylized assembly listing that is easy to read
and use, in addition to ensuring that your program executes properly. The assembler user
guide, UP-8913 (current version) gives a detailed description of how to use the coding
form. However, some of the rules and conventions are included here for your convenience.
LABEL
1

LOPERATIONA
10

OPERAND

16

72
Figure 1—1.

1.3.1.

Assembler Coding Form

Label Field

The first eight columns of the assembler coding form may contain a symbol. This symbol
can be used to identify a line of coding, or to identify a main storage or constant area. The
rules for using the label field are:
1.

The symbol must start in column 1.

2.

The symbol must begin with an alphabetic or special character.

3.

The symbol must not exceed eight characters in length.

4.

The symbol must not contain embedded blanks or other special characters.

5.

The field must be terminated by a blank.

6.

An asterisk (*) entered in column 1 indicates to the assembler that the entry on this
line is to be treated as comments.

1 .3.2.

Operation Field

The operation code is written in the operation field (columns 10 through 14). These codes
specify the operation to be performed. The rules for using this field are:
1.

The operation code must not contain embedded blanks.

2.

The operation code must be written exactly as shown in the list of mnemonics for
application instructions, directives, and macro or proc instructions.

3.

The operation field must be terminated by a blank.

4.

An operation code consisting of six characters (for example, the macroinstruction
ATTACH), will fall in columns 10 through 15. In this case, column 16 must be blank
to terminate the operation field.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

1.3.3.

1-7

Operand Field

The operand field begins in column 16 and usually ends in or before column 71. The
operands that form part of the assembler statements are written in this field. The rules for
using this field are:
1.

The operand field is terminated by a blank that is not enclosed by an apostrophe.

2.

Operands may be continued onto the next line by placing a nonbiank character in
column 72. The continuation line starts at column 16. Up to two continuation lines
are permitted.

1.3.4.

Comments Field

Program documentation is as important to the programmer writing the program as it is to
those who must refer to it later. Operand specification is usually completed by column 40,
thus leaving column 41 through 71 free for comments. There must be at least one blank
between the end of the operand specification and the start of the comments. Long
comments can be entered by coding an asterisk in column 1.

1.3.5.

Continuation Column

When the operand specification is to be continued onto the next line, a nonblank character
must be written in column 72. Do not confuse this with continuing a comment. An
operand specification can be continued for a total of three lines. The second and third
continuation lines start in column 16.
1.3.6.

Sequence Field

Columns 73 through 80 may be used for entering sequence numbers. This is done by
assigning consecutive numbers to each line of coding and is useful for updating the input
card images as needed. It is good practice to number the lines in multiples of 1 0, or even
100. This allows you to insert additional coding lines without having to renumber the card
images already in the program. Some programmers use letters in addition to the numbers.
This is useful in identifying the program from which card images have come if they have
been removed for any reason.
1.4.
1.4.1.

MACROINSTRUCTIONS
Declarative Macroinstructions

Declarative macroinstructions generate nonexecutable code sequences in the user
program and are used to allocate areas in main storage containing control information for
various system services.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

1 .4.2.

1-8
Update D

Imperative Macroinstructions

Imperative macroinstructions generate executable code sequences in the user program.
These code sequences make up the interface between the user program and the
supervisor. Imperative macroinstructions are used to request services of the supervisor or
to direct the operation of the user program.
1 .4.3.

Summary of Supervisor Macroinstructions

Table 1—1 lists the QS/3 supervisor macroinstructions and gives a brief description of their
function, along with the page number where the format for each appears. ARGLST,
DTFPF, PCA, SAT, TCA, ECB, and DDCPF are the declarative macroinstructions in this list;
the remainder are imperative macroinstructions. The macroinstructions are arranged in
this manual in the same groups as they appear in this table.
Table 1—1

Supervisor Macroinstructions (Part 1 of 3)

PROGRAM MANAGEMENT

Format
Page

Program Loader
LOAD
LOADR
LOADI
FETCH

Load a
Load a
Locate
Load a

Job and Task Termination
EOJ
CANCEL

Terminate a job step normally.
Terminate a job abnormally.

2—13
2—14

Timer Services
GETIME
SETIME

Obtain current time and date.
Set an elapsed time counter for the requesting task.

2—17
2—21

Subroutine Linkage
CALL/VCALL
ARGLST
SAVE
RETURN

Call a program
Generate an argument list
Save register contents
Restore registers and return

2—29
2—30
2—31
2—32

Island Code Linkage
STXIT
EXIT

Link to island code subroutine.
Exit from island code subroutine.

System Information Control
GETCOM
PUTCOM
GETINF
GETLDA
PUTLDA

Retrieve data from job communication area.
Place data into job communication area.
Retrieve data from system control tables.
Transfer data from LDA
Transfer data to LDA

2—54
2—55
2—55
2—56a
2—56b

Control Stream Reader
GETCS
SETCS

Retrieve embedded data file submitted in job control stream.
Reset pointer to embedded data file.

2—60
2—61

program phase and return control.
program phase, relocate address-constants, and return control.
a program phase and store its phase header in a workarea.
program phase and branch.

.

2—4
2—6
2—8
2—10

2—38
2—41

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Table 1—1.

1-9

Supervisor Macroinstructions (Part 2 of 3)

DISK AND DISKETTE SPACE MANAGEMENT

Format
Page

Disk
OBTAIN
Diskette
OBTAIN

Access VTOC user block.

3—2

Obtain diskette label information.

3—4

SYSTEM ACCESS TECHNIQUE (SAT)
Disk SAT
DTFPF
PCA
OPEN
GET
PUT
WAITF
READE
READH
SEEK
CLOSE

Define a partitioned file.
Define a partition control appendage.
Open a disk file.
Retrieve next logical block.
Output a logical block.
Wait for block transfer.
Search track by key, equal.
Search track by key, equal or higher.
Access a physical block.
Close a disk file.

4-11
4—14
4—19
4-20
4—21
4—22
4—23
4-23
4—24
4—25

Tape SAT
SAT
TCA
OPEN
GET
PUT
WAITF
CNTRL
CLOSE

Defines magnetic tape file.
Defines a tape control appendage.
Open a tape file.
Get next logical block.
Output next logical block.
Wait for block transfer.
Control tape unit functions.
Close a tape file.

4-45
4_47
4-51
4-52
4-53
4—53
4_54
4-55

Task Management
ECB
ATTACH
DETACH
TYIELD
AWAKE
CHAP

Generate an event control block.
Create and activate an additional task.
Terminate a task normally.
Deactivate a task.
Reactivate an existing nonactive task.
Change the priority of a task.

7
59
510
5_li
512

Task Synchronization
WAIT
WAITM
POST
TPAUSE
TGO

Wait for a task request to complete.
Wait for one of several task requests to complete.
Activate the waiting task.
Deactivate one or more tasks other than the issuing task.
Reactivate one or more tasks other than the issuing task.

5 14
5
_
5 i5
16
517
5—18

MULTITASKING

—

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Table 1—1.

1-10
Update A

Supervisor Macroinstructions (Part 3 of 3)

Format
Page

DIAGNOSTIC AND DEBUGGING

Storage Displays
SNAP/SNAPF
DUMP

Printout portions of main storage and return control.
Printout the job main storage and terminate the job step.

7-2
7-7

Checkpoint Facility
CHKPT
DDCPF
DCPOPN
DCPCLS

Record a checkpoint.
Define a SAT checkpoint file.
Open a SAT checkpoint file.
Close a SAT checkpoint file.

7-12
7-1 5
7-15
7-16

Monitor from start of job.
(This is a job control statement, not a macroinstruction.)

7-20

Create a breakpoint in a spool output file.

6—5

Monitor and Trace
// OPTION TRACE

SPOOLING
DMBRK

1.5.

PROGRAMMING CONSIDERATIONS FOR MACROINSTRUCTIONS

When the assembler encounters a macroinstruction, it generates machine code, which is
called inline expansion code. This code can consist of machine instructions and machine
data. Data, in turn, may consist of constants defined by the macroinstruction at assembly
time and reserved main storage, which is not used until program execution time.
A macroinstruction, expecially if it is a request to the supervisor for some service, will
usually generate a supervisor call (SVC) instruction. When the program is later executed,
the SVC will either be processed by the resident supervisor, or a transient will be called.
The actual processing of the request is then performed by the supervisor; the inline
expansion code generated by your program is normally just used to set up parameters.
Because SVC instructions are processed in the supervisor region and not in your program
region, you can use macroinstructions freely, without having to allocate extra main storage
to your job.
Of the 16 general registers available to assembler programs, registers 2 through 13 are
generally left unchanged by macroinstructions. Registers 0 and 1, however, are the
principal means by which data and program control are passed between user programs
and macroinstructions. Consequently, these two registers cannot be counted upon to
remain unchanged during execution of any macroinstruction. If it is important to keep
intact the data in either of these two registers, you should save the data in main storage
before calling the macroinstruction and load the data back into the register afterwards. In
addition to registers 0 and 1, program linkage macroinstructions (2.4) change registers 14
and 1 5. Most other macroinstructions, though, leave these two registers intact.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2.

2.1.

2-1

Program Management Macros

PROGRAM LOADER

The program loader is responsible for locating and loading program modules or overlays
output by the linkage editor in the form of phases. A load module phase may be thought of
as a program segment that can perform one or more specific processing operations. The
following macroinstructions are available:
•

LOAD
Load a phase and return control.

•

LOADR
Load a phase, relocate address constants, and return control.

•

LOADI
Locate a phase and store its phase header iri a workarea.

•

FETCH
Load a phase and give it control.

The use of these macroinstructions is described in the following subsections.
In addition, the loader is capable of modifying data in any phase of a problem program
whenever that phase is loaded. The job control ALTER statement is used to specify such
changes to the loader.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2.1.1.

2-2
Update B

Block Loader

The LOAD, LOADR, LOADI, and FETCH macroinstructions handle both standard load
modules, which are loaded by the regular program loader, and block modules, which are
loaded by the block loader, an extension of the program loader. The program loader reads
one sector at a time from disk, and then moves this data one record at a time to the user
job region in main storage. The block loader reads an entire track of data at a time directly
into the user job region in main storage. You can take advantage of the faster block loader
by using the BLK control statement in the system librarian to convert a load module phase
from the standard load module format to block format (described in the system service
programs user guide, UP-8841 (current version)). This may be done at any time before the
job is executed and there is no need to specify in the macroinstructions loading the phase
whether the load module phase is in the standard format or in block format.

+

NO TE:
The following problem may exist if when loading a blocked module you consistently get
the 54 error code. If the total number of partition 1 and partition 2 extents is greater than
14, then certain blocked modules start getting the 54 error code. The temporary solution is
to copy your load file to a temporary file. Then, scratch and allocate the load file, and copy
the temporary file to the load file.
If the load file is $Y$LOD, you must IPL the system again from another SYSRES to scratch
$Y$LOD from your original SYSRES.
2.1.2.

Relocation

The loader can perform positive or negative relocation on 8-bit, 16-bit, 24-bit, or 32-bit
fields as specified by the relocation list dictionary (RLD) information in the text/RLD
records of the load module.
Because of the relocation register, user programs do not require relocation of address
constants (A-cons) when the phase is located at the address at which it was linked. If an
alternate load address is specified on LOAD or LOADR, however, the loader handles it as
follows:
•

LOAD
No relocation is performed. You must ensure that the phase being loaded is selfrelocating.

•

LOADR
Relocation is performed on all A-cons specified by the linker which refer to addresses
in that same phase. A-cons which point inside another phase are not relocated
because the loader has no way of knowing where that phase was loaded.

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

The following examples illustrate when the loader performs relocation:

Macro

Call

LOAD
LOADR
FETCH
LOAD
LOADR
FETCH

phase-name
phase-name
phase-name
phase-name,altad
phase-name,altad
phase-name,entpt

*phase being loaded should be self-relocating.

User Program
Relocation
No
No
No
No*
Yes
No

2—2a
Update B

C:;’

0’

U

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2.1.3.

2-3

Library Search Order

The default order of search employed by the loader is:
1.

Load library file ($Y$LOD)

2.

Temporary job run library file ($Y$RUN)

If the temporary job run library file ($Y$RUN) is specified on the EXEC job control card, the
order of search is:
1.

Temporary job run library file ($Y$RUN)

2.

Load library file ($Y$LOD)

If an alternate library is specified on the EXEC job control card, the order of search is:
1.

Alternate load library

2.

Load library file ($Y$LOD)

3.

Temproary job run library file ($Y$RUN)

To minimize search time, the loader always begins searching a library at the last root
phase loaded from that library for that job. This means that it is generally more efficient to
link modules together than to create a series of smaller, separately linked load modules.

2.1.4.

Read Pointer for Repetitive Loads

Another way to minimize search time is to reduce the need for a directory search. This can
be done by using a read pointer for repetitive loads of a particular load module. When the
disk address (DA) optional parameter is used with the LOAD, LOADR, or FETCH
macroinstruction, the 8-byte EBCDIC phase name in the user program (possibly within the
macro-generated code) is overwritten with a read pointer during the first execution of the
macro. This read pointer contains the relative disk address of the phase being loaded. The
next execution of the same macro call uses this read pointer to find the phase, instead of
performing a directory search.
With the DA option, only the first load of a module requires a directory search. All
subsequent loads of the same module use the read pointer and do not have to repeat the
directory search. In this case, the larger the directory, the more efficient the use of the
read pointer.
When using the DA option, you must be certain that the module is not being updated by
another job at the same time that it is being loaded by your job; otherwise, an error will
result. Remember, the DA option may be used only with the LOAD, LOADR, and FETCH
macroinstructions, and should only be used for repetitive loads of the same module. It is
not available for use with the LOADI macroinstruction. If you do not wish to add the DA
capability to an assembled program, there is no need to reassemble.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2.1.5.

2-4

Loader Error Processing

When an error is detected by the loader, a binary error code is set up in register 0. If an
error address was specified, the macro-generated code branches to that address. If no
error address was specified (or if the call was a FETCH), the calling task is abnormally
terminated.
The 4-byte error code set up in register 0 has the following format:
Byte 0

=

EBCDIC A, R, or L specifying whether the error occurred while
loading from alternate, run, or load library, respectively.

Bytesl,2

=

0

Byte 3

=

Binary error code. For descriptions, refer to the system messages
prog rammer/operator reference, UP-8076 (current version).

2.1.6.

Load a Program Phase (LOAD)

Eu nctio n:
The LOAD macroinstruction locates a program phase in a load library on disk, loads it
into main storage, and transfers control to the calling program immediately following
the LOAD macroinstruction.
After execution of this macroinstruction, register 0 contains the job-relative address
at which the phase was loaded, and register 1 contains the entry-point address. This
entry point address is determined at linkage edit time. If an alternate load address is
provided (positional parameter 2), the load point address specified to the linkage editor
is overridden and the phase is loaded at the specified address. This new override
address is returned in register 0.
This macroinstruction does not relocate address constants regardless of whether an
alternate load address is specified (positional parameter 2).
Format:
LABEL

LOPERATIONL

[symbol]

LOAD

OPERAND

Sphase-namer,fload-addri1r,Ierror-addr1[,R][,DA1
L(l)
ii
JJ L I r)
IL 1(0)

Positional Parameter 1:
phase

-

name

Specifies the name of the program phase to be loaded. This may be either the 1
to 6-character user-assigned alias phase name or the 8-character linker-assigned
phase name in the format nnnnnnpp where nnnnnn is the program name and pp
is the phase number.
-

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-5

(1)

Indicates that register 1 has been preloaded with the address of the 8-character
phase name.
Positional Parameter 2:
I oad-addr

Specifies the symbolic address at which the phase is to be loaded.
(0)

Specifies that register 0 has been preloaded with the load address.
If omitted, the program phase will be loaded at the address specified by the linkage
editor.
Positional Parameter 3:
er ror-addr

Specifies the symbolic address of an error routine that is to be executed if a load
error occurs.
(r)

Specifies that the designated register (other than 0 or 1) contains the address of
the error routine.
If omitted, the calling task will be abnormally terminated if a load error occurs.
Positional Parameter 4:
R

Specifies that only the system load library is to be searched for the phase.
If omitted, a full search is to be performed.
Positional Parameter 5:
DA

Specifies that the 8-byte phase name specified in positional parameter 1 will be
overwritten with a read pointer during the first execution of this
macroinstruction. This read pointer is used to find the phase on the second and
all subsequent executions of this macroinstruction.
This option is designed to reduce the search time for separately linked load
modules which are loaded repeatedly. When using this option, you must ensure
that there is no possibility of another job deleting or moving the load module you
are trying to load. For example, if another job uses the librarian to pack the
library, this may cause a load error in your job. If you can be sure this doesn’t
happen, you may be able to considerably reduce the load time for some modules,
particularly in large libraries.
If omitted, a search is performed on the phase name specified in positional parameter
1 each time this macroinstruction is executed, and the 8-byte phase name is not
overwritten.

2-6

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Load a Program Phase and Relocate (LOADR)

2.1 .7.

Function:

The LOADR macroinstruction locates a program phase in a load library on disk, loads
it into main storage, and transfers control to the calling program immediately
following the LOADR macroinstruction.
After execution of this macroinstruction, register 0 contains the job-relative address
at which the phase was loaded, and register 1 contains the job-relative entry-point
address. This entry point address is determined at linkage edit time. If an alternate
load address is provided (positional parameter 2), the load point address specified to
the linkage editor is overridden and the phase is loaded at the specified address. This
new override address is returned in register 0.
The format and operation of the macroinstruction is identical to the LOAD
macroinstruction except that all address constants in the phase are relocated if an
alternate load address is specified (positional parameter 2).
This macro instruction is used to load a phase at an address other than that at which
it was linked.
Format:
LABEL

[

s ymb

LSOPERATIONL
0

I

LOADR

OPERAND
Ioadaddr}] [,jerroraddr}][,R][ ,DA]

1(1)
Jphase-name)L{
(0)

L

1(r)

Positional Parameter 1:
phase

-

name

Specifies the name of the program phase to be loaded. This may be either the 1
to 6-character user-assigned alias phase name or the 8-character linker-assigned
phase name in the format nnnnnnpp where nnnnnn is the program name and pp
is the phase number.
-

(1)

Indicates that register 1 has been preloaded with the address of the 8-character
phase name.
Positional Parameter 2:
load

-

add

Specifies the symbolic address at which the phase is to be loaded.
(0)

Specifies that register 0 has been preloaded with the load address.
If omitted, the program phase will be loaded at the address specified by the linkage
editor.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-7

Positional Parameter 3:
er ror-addr

Specifies the symbolic address of an error routine that is to be executed if a load
error occurs.
(r)

Specifies that the designated register (other than 0 or 1) contains the address of
the error routine.
If omitted, the calling task will be abnormally terminated if a load error occurs.
Positional Parameter 4:
R

Specifies that only the system load library is to be searched for the phase.
If omitted, a full search is to be performed.
Positional Parameter 5:
DA

Specifies that the 8-byte phase name specified in positional parameter 1 will be
overwritten with a read pointer during the first execution of this
macroinstruction. This read pointer is used to find the phase on the second and
all subsequent executions of this macroinstruction.
This option is designed to reduce the search time for separately linked load
modules which are loaded repeatedly. When using this option, you must ensure
that there is no possibility of another job deleting or moving the load module you
are trying to load. For example, if another job uses the librarian to pack the
library, this may cause a load error in your job. If you can be sure this doesn’t
happen, you may be able to considerably reduce the load time for some modules,
particularly in large libraries.
If omitted, a search is performed on the phase name specified in positional parameter
1 each time this macroinstruction is executed, and the 8-byte phase name is not
overwritten.
2.1 .8.

Locate a Program Phase Header (LOAD I)

Function:
The LOADI macroinstruction locates the header record of a program phase and stores
it in a workarea.
You may then examine the information contained in the program phase header to
determine if it is desirable to load the program phase. If the phase is to be loaded, you
must use one of the other load instructions to load the program phase.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-8

The format of the phase header record is shown in 21.8.1.
Format:
LABEL

LOPERATIONL
LOADI

[symbol]

OPERAND
fphase-name,fwork-area-addrljwork-area-length
JL ‘LH
I (ø)

rL je1(r)r ro r -add rflJJ [

R]

Positional Parameter 1:
phase

-

name

Specifies the name of the program phase to be loaded. This may be either the 1
to 6-character user-assigned alias phase name of the 8-character linker-assigned
phase name in the format nnnnnnpp where nnnnnn is the program name and pp
is the phase number.
-

(1)

Indicates that register 1 has been preloaded with the address of the 8-character
phase name.
Positional Parameter 2:
wo r k

-

a rea

-

ad d r

Specifies the symbolic address of the area in main storage where the phase
header is to be placed.
(0)

Specifies that register 0 has been preloaded with the workarea address.
Positional Parameter 3:
wo r k

-

a rea

-

I engt h

Specifies the number of bytes of the phase header that are to be placed in the
workarea.
If omitted, the value 13 is assumed. This specifies that the portion of the phase
header up to and including the phase load address and the phase length is to be
placed in the workarea.
Positional Parameter 4:
error-addr

Specifies the symbolic address of an error routine that is to be executed if a load
error occurs.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-9

(r)

Specifies that the designated register (other than 0 or 1) has been preloaded with
the address of the error routine.
If omitted, the calling task will be abnormally terminated if a load error occurs.
Positional Parameter 5:
R

Specifies that only the system load library is to be searched for the phase.
If omitted, a full search is to be performed.
2.1.8.1.

Program Phase Header

The format of the phase header is as follows:
Bytes

Contents

0, 1

Systems use

2

Phase number

3, 4

System flags

5—8

Phase load address (linker assigned)

9—1 2

Phase length

13—20

Phase name (linker assigned)

21—23

Date (packed decimal

24—26

Time (packed decimal

27—30

Module length

31—38

Alias phase name

39—68

Comments

2.1.9.

—

—

yymmdd)
hhmmss)

Load a Program Phase and Branch (FETCH)

Function:
The FETCH macroinstruction locates a program phase in a load library on disk, loads it
into main storage, and transfers control to the address specified in the phase transfer
record, unless an alternate address has been specified (in positional parameter 2).

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-10

After execution of this macroinstruction, register 0 contains the job-relative address
at which the phase was loaded, and register 1 contains the job-relative entry point
address. This entry point address is determined at linkage edit time. If an alternate
entry point address is provided (positional parameter 2), the entry point address
specified to the linkage editor is overridden and the phase is given control at the
specified address. This new entry point address is returned in register 1.
Format:

AOPERATIONzD

LABEL

FETCH

[symbol]

OPERAND
jphase-name1r.(entry-poInt-namefl[,R][,DA]
JJ
IL 1(0)
1(1)

Positional Parameter 1
phase

-

name

Specifies the name of the program phase to be loaded. This may be either the 1
to 6-character user-assigned alias phase name or the 8-character linker-assigned
phase name in the format nnnnnnpp where nnnnnn is the program name and pp
is the phase number.
-

(1)

Indicates that register 1 has been preloaded with the address of the 8-character
phase name.
Positional Parameter 2:
entry p01 n t
-

-

name

Specifies the symbolic address of the point in the program at which control is to
be passed after a successful load.
(0)

Indicates that register 0 has been preloaded with the entry point address.
If omitted, control will be passed to the address specified in the phase transfer record.
Positional Parameter 3:
R

Specifies that only the system load library is to be searched for the phase.
If omitted, a full search is to be performed.

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-11

Positional Parameter 4:
DA

Specifies that the 8-byte phase name specified in positional parameter 1 will be
overwritten with a read pointer during the first execution of this
macroinstruction. This read pointer is used to find the phase on the second and
all subsequent executions of this macroinstruction.
This option is designed to reduce the search time for separately linked load
modules which are loaded repeatedly. When using this option, you must ensure
that there is no possibility of another job deleting or moving the load module you
are trying to load. For example, if another job uses the librarian to pack the
library, this may cause a load error in your job. If you can be sure this doesn’t
happen, you may be able to considerably reduce the load time for some modules,
particularly in large libraries.
If omitted, a search is performed on the phase name specified in positional parameter
1 each time this macroinstruction is executed, and the 8-byte phase name is not
overwritten.
22.

PROGRAM TERMINATION

The program termination macroinstructions cause the system facilities assigned to a job or
to a task to be relinquished for assignment to other jobs or to other tasks. When
terminating a task, the EOJ, CANCEL, and DETACH macroinstructions will also clear all
I/O locks for the task.
The following macroinstructions are available:
•

EDJ
Causes normal job step termination.

•

CANCEL
Causes abnormal job termination and prints out the job main storage.

There are two other macroinstructions used for job and task termination:
•

DETACH
Causes normal termination of a task.

•

DUMP
Causes normal job step termination in addition to printing out the job main storage.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2.2.1.

2-12

Normal Termination

Normal ‘program termination is requested by means of the EOJ or DUMP
macroinstructions, the DUMP operator command, or the self-detaching of a primary task.
This implies normal completion of the job step and continuation of the job. These functions
will detach all subtasks, delink outstanding I/O. and wait for all outstanding system
functions to complete, prior to terminating the program and passing control to the next
phase of job control.
The termination of a job step which has open data files will cause an immediate
cancellation of the job.
The DUMP macroinstruction provides a printout of the contents of the job region if the
appropriate //OPTION job control statement is specified (for example, DUMP, JOBDUMP,
SYSDUMP, or ABRDUMP). After printing the region, the DUMP transient overlays itself
with the end-of-job step transient routine which provides normal job step termination.
The DUMP console command sets the job step to execute its own DUMP macroinstruction.
2.2.2.

Abnormal Termination

Abnormal job termination can be requested by you through the CANCEL macroinstruction,
by the operator through the CANCEL command, or as a result of a system-detected error.
The latter case includes: systems function errors with no error address specified, program
exception errors without program check island code, and unrecoverable hardware errors.
The cancel function detaches all subtasks, delinks all outstanding I/O, and waits for all
outstanding system functions to be completed. It provides a printout of the contents of the
job region if the DUMP option was specified on the OPTION statement, and either there is
a printer assigned to this job or there is a printer available.
2.2.3.

Printout

Both the CANCEL and DUMP macroinstructions provide for a printout
the job main storage which will occur if a printer was assigned to the
and LFD job control statements, or is available for assignment, and the
ABRDUMP, or SYSDUMP parameter was specified in the OPTION job
Otherwise, both macroinstructions will execute normally; however, no
2.2.4.

of the contents of
job using the DVC
DUMP, JOBDUMP,
control statement.
printout will occur.

End-of-Job Step (EOJ)

Function:
The EOJ macroinstruction causes normal job
task or a subtask. If an EOJ macroinstruction
subtasks, all subtasks are terminated. If an
subtask, only the subtask and any subtasks

step termination. It terminates a primary
is issued from a primary task with active
EOJ macroinstruction is issued from a
it created are terminated.

(

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2—13

This macroinstruction also clears all locks for the task.
Format:
LABEL
[symbol]

AOPERATIONA

OPERAND

EOJ

There are no parameters for the EOJ macroinstruction.
The EOJ macroinstruction is used to cause normal job step termination. It is
invoked by the job step task after all attached subtasks have been detached
data files have been closed. Job control is then loaded in the problem program
prepare the next scheduled job step, or to terminate the job if it is the last job
the job.

usually
and all
area to
step of

The EOJ macroinstruction may be used to force subtask termination for the job step.
If a subtask encounters a fatal (abnormal termination) error condition before the EOJ
function receives control, the job may be canceled (depending on the existence and
function of an abnormal termination island code routine). An EOJ macroinstruction
executed by a subtask is treated as a request for the DETACH macroinstruction
function.
Error Conditions:
The job will be canceled if errors that prevent normal termination are encountered by
the EOJ routine. A hexadecimal error code is provided for display in the diagnostic
storage dump produced by the CANCEL function. The error codes and their meaning
are shown in the system messages programmer/operator reference, UP-8076
(current version).
2.2.5.

Cancel a Job (CANCEL)

Eu nctio n:
The CANCEL macroinstruction causes abnormal termination of a job. It terminates the
current job step, prevents execution of any remaining job steps for that job, detaches
all subtasks, delinks all outstanding I/Os, and waits for all outstanding system
functions to complete.
This macroinstruction also displays an abnormal termination message on the operator
console indicating which job is being terminated and the error code defining the error.
Unless NODUMP is entered as positional parameter 2, this macroinstruction provides
a diagnostic storage dump of the job region similar to that produced by the DUMP
macroinstruction.
This macroinstruction also clears all locks for the task.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP8832

.2-14

Format:
LABEL
[symbol]

AOPERATIONA

CANCEL

OPERAND
[{errorcode)][ ,NODUMP]

Positional Parameter 1
error-code

Specifies a 1- to 3-digit hexadecimal error code to be displayed on the system
console and included in the diagnostic storage dump.
(0)

Indicates that register 0 has been preloaded with the error code.
If omitted, the error code is set to binary zero.
Positional Parameter 2
NOD UM P

Specifies no dump regardless of the dump options specified in the OPTION job
control statement.
The CANCEL macroinstruction is used to cause abnormal job termination when error
conditions are encountered which prevent further processing. The abnormal job
termination function may be requested by you through the CANCEL macroinstruction,
by the operator through the CANCEL command, or as a result of a system-detected
error.
If an error occurs during the execution of a macroinstruction, control will be passed to
the error routine if an error address was specified or, if none was specified, to the
abnormal termination island code if it is present. The use of island code permits you
to take additional action prior to terminating the task or job step which is in error.
Error Conditions
A number of conditions may exist when the cancel routine is entered; however, the
error code displayed in the diagnostic storage dump will always represent the original
cause of entry to the abnormal termination function.
A printout is produced if:
•

the DUMP, JOBDUMP, ABRDUMP, or SYSDUMP option was specified via job
control;

•

the CANCEL macroinstruction does not specify NODUMP; and

•

a printer was assigned to the job or is available.

UP8832

2.3.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-15

TIMER SERVICES

During execution of a job, you may want to record the date and time that an event
occurred, for example, the date a credit was posted to an accounts receivable record, the
date and time a message was received from a remote communications terminal, or the
date and time a job step was completed. You can do this by using the GETIME
macroi nstruction.
At times you may want to request an interrupt to your program after a specified interval.
For example, you may wish to allow 30 seconds for a response from a terminal, and if no
response if received within that time, branch to another subroutine or to another task. You
can do this by using the SETIME macroinstruction.
2.3.1.
2.3.11.

Date and Time Facilities
Current Date

The current date is placed in the systems information block by the operator during initial
program load. The date is automatically advanced each day at midnight unless the
supervisor was configured at system generation time not to update. In that case, the
operator must change the date through a console command. This date is referred to herein
as the system date to distinguish it from the job date.
System Information Block

system date

There is a date for each job, which is stored in the preamble for the job. This is the date
you get when you use the GETIME macroinstruction. Normally, the job date is the same as
the system date. However, you can change it using the SET job control statement which
changes the date for your own job and does not disturb the system date or the job dates
for other jobs being processed. For example, if your application calls for statements to be
produced on the fifteenth of each month but no processing was done that day because of
a holiday or because of machine maintenance, you could change the job date in the
preamble the next day from 16 to 1 5 so that the statements and other records produced
will show the date the job was intended to be run.
Job Preamble

job date

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-16

23.1.2. Time of Day
In addition to the current date, the GETIME macroinstruction gives you the time. The current
time of day is maintained by a simulated day clock in the system information block. This day
clock specifies the amount of time that elapsed since midnight. The clock can show a maximum
of 99 hours and maybe permitted to run past midnight if jobswere processing atthattime. The
time of day is automatically reset at midnight along with the date unless the supervisor was
configured notto update. Otherwise,the operator must resetthe clockeach day. Acommon use
of the clock is to record the time of day a job was run and to calculate the length of time required
to run it. The job log you receive with your listing shows the start and stop times for your job
steps. The run time could be used to charge an account number, or to invoice your department
for the computer time required to run your job.

System Information Block

day clock

2.3.1 .3. Get Current Date and Time (GETIME)
Function
The GETIME macroinstruction obtains the calendar date and the current time of day from
the simulated day clock function of the supervisor. The date is returned in register 0, and
the time is returned in register 1.
Format:
LABEL
[symbol]

LOPERATIONL,

OPERAND

GET IME

Positional Parameter 1
M

Specifies that the current time of day is to be expressed in milliseconds in binary
representation.
S

Specifies that the current time of day is to be expressed in packed decimal
format.
If omitted, the parameter S is assumed.

C

UP-8832

SPERRY UNIVAC 05/3
SUPERVISOR MACROINSTRUCTIONS

2-17

The current calendar date is returned in register 0 expressed in packed decimal in the
form:
Oyym mdd+
where:
yy

mm
dd

year

=

month

=

=

day

The high order half byte is always zero, and the low order half byte is the sign, which
is always positive.
The current time of day is returned in register 1. If you write this macroinstruction
with the S parameter or with no parameter, the time is expressed in packed decimal
format in the form:
Ohhmmss+
where:
hh

hours

mm
ss

=

=

minutes

seconds

The high order half byte is always zero, and the low order half byte is the sign, which
is always positive.
The following entries:
1

10
GETIME

16
S

or
GET IME

return the date and time in registers 0 and 1 in packed decimal format. You can then
store the contents of these registers, and edit the fields for a printout of the date and
exact time that an event occurred.

2-18

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

For example, let’s assume you wish to print the date and exact time a job step is completed.
The two subroutines shown in Figure 2—1 each get the date and time from the job
preamble and the system information block, unpack and edit them into buffers, then print
the contents of the buffers.
16
10
GETIME S
RB ,WS
ST
Ri ,WS 2
ST
BUFFER+4(6) ,WS1(4)
UNPK
BUFFER+12(6) ,WS2(4)
UNPK
BUFFER+9 ,X F0
0I
BUFFER+17, I F0
0I
BUFFER (2), BUFFER+4
MVC

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

Returns date in register 0 and time in register 1.
Stores date from register 0 toWSI.
Stores time from register 1 to WS2.
Unpacks date into BUFFER
Unpacks time into BUFFER
Changes contents of right hand byte of date from Cl
Changes contents of right hand byte of time from C3

‘

10.
11.
12
13.
14.
15.
16.
17.

MV I
MVC
MV I

BUFFER+2 ,C I’
BUFFER+3 (2) ,BUFFER+6

MVC

BUFFER+6(2),BUFFER+8

MV I
MV I

BUFFER+8 C
BUFFER+9 ,C

MVC

BUFFER+10( 2), BUFFER+12
BUFFER+12 C.
BUFFER±13(2).BUFFER+14

BUFFER+5.C’/’
Inserts slashes,

and periods

spaces,

18.

MV I
MVC
MV I

19.

DMOUT PR I NT BUFFER

20.

EOJ

21.
22.
23.
24.
25.
26.
27.
28.

Returns date in RO and time in RI.
GET IME S
Stores date in full-word save.
ST
0, SAVE
Unpacks and edits date.
DATMSK( 10) ,SAVE
ED
Moves edited date to buffer.
MVC
BUFFER2(8) ,DATMSK+2
Stores time in save.
1, SAVE
ST
Unpacks and edits time.
T IMMSK( 10) SAVE
ED
BUFFER2+10( 8) r IMMSK+2 Moves edited time to buffer.
MVC
Prints date and time.
DMOUT PR I NT ,BUFFER2

29.
30.
31.
32.

to Fl.
to F3.

in date and

time.

BUFFER+15,C’
Prints date and time from BUFFER.
Terminates the job step.

,

SAVE
BUFF ER2
DATMSK
I IMMSK

OS
DC
DC
DC

F
CLI8
K 402 120206 12020612020
X ‘402 120204820204B2020

Figure 2—1.

Buffer initial ized
Date mask format:
Timemaskformat;

to blanks
99/99/99
99.99.99

Examples of GETIME Macroinstruction

Let’s assume the GETIME macroinstruction was executed October 24, 1 977 at 13 seconds
after 9:30 A.M. The job date from the preamble would be returned in register 0, and the
time from the day clock in the SIB would be returned in register 1. The registers would
contain:
Preamble

Register 0 07

System
I nformafion
Block

job date

71

02

4C

Register 1

day clock

00

93

01

3C

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-19

Following execution of line 7, BUFFER contains:

7I7hI024I

109I3I0Ih13I

Following execution of line 18, BUFFER contains the date (year/mon/day) and the time
(hours.min.sec):

11

10LI2f4

The date and time are printed:
77/10/24 09.30.13
If the subroutine in lines 21 through 32 is executed with the same original contents of
registers 0 and 1, BUFFER2 will contain the following after execution of line 27

1717LH10L12141 I 10191131011h131
and will print the same date and time as the subroutine of lines 1 through 20.
If you write this macroinstruction using the M parameter, the date is expressed in
packed decimal in register 0, but the time is expressed in milliseconds in binary
representation in register 1. For example, if the following macro instruction was
executed at 10 seconds after midnight, September 26, 1979, registers 0 and 1 would
contain:
1

10

16

GET IME M

Register 0

2.3.2.

I

07 90

92

I

6C

Register 1

I

00

00

I I
27

10

Timer Interrupt Facilities

The timer services module also enables you to request a scheduled timer interrupt in the
requesting task. Using the SETIME macroinstruction you may request an interrupt after
any time period greater than 1 millisecond. You may:
‘

continue processing the task until the interrupt, then transfer control to the task’s
timer island code;

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2—20

•

suspend processing the task until the interrupt, then continue with the next
instruction; or

•

cancel a previous SETIME request.

The time interval requested in the SETIME macroinstruction is added to the current time of
day to calculate the time when the interrupt is scheduled to occur, and this SETIME
expiration time is stored in the task control block.
Task Control Block

SETIME expiration time

timer island code address

If timer island code is to be executed, a STXIT macroinstruction must have been previously
issued to link the island code to this task. If no timer island code is present, or if the
interrupt request was canceled, the interrupt is ignored. There may only be one set of
timer island code per task.
If the task is to be suspended, the next available task in the switch list is executed. When
the interrupt occurs, control is returned to the next instruction in the task immediately
following the SETIME macroinstruction.
2.3.2.1.

Set Timer Interrupt (SETIME)

Function:
The SETIME macroinstruction requests a scheduled timer interrupt in the requesting
task and continues executing the requesting task. When the specified time interval
elapses, the task’s timer island code (as specified by a STXIT macroinstruction) is
executed.
Note that, in this case, the STXIT macroinstruction must have been previously issued
to set up timer island code for this task. There may be only one set of timer island
code per task.
If written with the WAIT parameter, this macroinstruction requests a timer interrupt
and suspends execution of the requesting task until the timer interval elapses. At this
time, the task resumes execution with the next instruction following the SETIME
macroinstruction.

ç

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2—21

This macroinstruction cancels any previous SETIME request. By using this
macroinstruction with no parameters or with a time interval of zero, you can
effectively eliminate any outstanding SETIME requests without having to set up a new
one.
Format:
LOPERATIONi

LABEL

[symbol]

SET IME

OPERAND
tirne- interval

[WAIT] [.{M]

Positional Parameter 1:
time

-

i nte rva I

Specifies the interval of time that must expire before the interrupt is generated.
This interval is expressed either in seconds or milliseconds depending on the
entry in positional parameter 3. The maximum value that may be entered as
positional parameter 1 is 4095. To specify a value greater than 4095, enter (1)
as positional parameter 1 and preload register 1 with the required time interval
value.
(1)

Indicates that register 1 has been preloaded with the time interval value.
If omitted, any previous SETIME request for this task is canceled, preventing the scheduled
interrupt.
Positional Parameter 2:
WA I T

Specifies that the problem program is to relinquish control until the specified
time interval expires, at which time control is returned to the point immediately
following the SETIME macroinstruction.
If omitted, the requesting program retains program control. When the time interval
expires, the timer island code is activated.
Positional Parameter 3:
M

Specifies that the time interval entered as positional parameter 1 is expressed in
milliseconds.
$

Specifies that the time interval entered as positional parameter 1 is expressed in
seconds.
If omitted, the parameter S is assumed.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2.3.2.2.

2-22

Continue Processing until Interrupt

If you omit the WAIT parameter, the task retains program control and continues processing
at the instruction immediately following the SETIME macroinstruction. When the time
interval elapses, the timer island code for this task is executed. For example, the
instruction:
1

10

16

SETIME 30,, S
next instruction

or
SETIME 30
next instruction

requests a timer interrupt in 30 seconds. The task continues processing until the 30second time interval elapses; then the timer island code is executed.
If you want to specify an interval smaller than a second, the instruction:
SETIME 200, ,M
next instruction

requests a timer interrupt in 200 milliseconds. The task continues processing until the
200-miflisecond time interval elapses; then the timer island code is executed.

2—23

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Figure 2—2 is an example of the use of the SETIME macroinstruction to request an
interrupt in 25 seconds so that a time of 25 seconds can be placed on the computation
that follows.

1

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

72

16

10

TIMER EXAMPLE

-

LIMIT COMPUTE

LOOP TO 25 SECONDS
ISLAND CODE TO HANDLE

ESTABLISH TIMER

ITJLANDCOD,ICSAVE
START TIMING INTERVAL
TWENTY FIVE SECONDS
SETIME 25, ,S
START OF COMPUTE LOOP

COMPUTE

9.
10.
11.

EQU
TEST TO SEE IF TIME LIMIT HAS BEEN EXCEEDED
FLAGBYTE,TIMEFLAG
TEST IF FLAG WAS SET BY ISLAND CODE
TOOLONG
BRANCH IF FLAG IS SET

TM
BO

12.
13.
14.

.

‘computationoccurshere

.

‘I

.

15.
16.
17.

X,Y

C
BNE

COMPUTE
NORMAL EXIT
STXIT IT

18.

TEST TO SEE IF COMPUTATION
LOOP BACK IF NOT
FROM COMPUTE LOOP
DISABLES ISLAND CODE
}exit

19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.

INTERRUPT

STXIT

EQU
STXIT

.

IT

routine

IF COMPUTATION NOT DONE BEFORE TIME

ERROR
TOOLONG

IS DONE

ELAPSES

DISABLES ISLAND CODE
PRINT ERROR MESSAGES, ETC

.

.er ror

.

pr

nt

routine

.

TIMER
ILANDCOD EQU
01
EXIT
ICSAVE
DS
FLAGBYTE DC
TIMEFLAG EQU

ISLAND CODE

FLAGBYTE,TIMEFLAG
IT
WORK AREAS
1SF
X’øø’
X01’

Fiqure 2—2.

SET

—

ACTIVATED WHEN TIME

ELAPSES

FLAG

REGISTER SAVE AREA REQUIRED
INITIALLY ZERO
BIT = 1 WHEN TIME ELAPSES

Example of SETIME Macroinstruction

Line 4 links the timer island code (lines 27 to 29) which sets a flag when the time interval
expires. Line 6 requests an interrupt in 25 seconds and the compute routine (lines 8 to 1 6)
is entered. Line 18 is the normal exit which occurs if computation is completed before the
time elapses. Lines 20 to 25 are the error routine which is executed if the time elapses
before the computation is completed.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-24

23.2.3. Wait for Interrupt
If you use the WAIT parameter, the task suspends processing and program control is
transferred to the next available task. When the time interval elapses, program control is
returned to the next instruction in the task immediately following the SETIME
macroinstruction. For example, the instruction:
1

10

16

SETIME 30WAIT

next

instruction after

interrupt

requests a timer interrupt in 30 seconds. The task is suspended until the 30-second time
interval elapses, then processing continues with the next instruction. This instruction
could be used following a message to the console operator or a question to a user at a
remote terminal allowing a period of time (in this case, 30 seconds) to reply or to enter
additional data.

2.3.2.4.

Cancel a Previous Timer Interrupt Request

To cancel a previous timer interrupt request, simply use the SETIME macroinstruction
without parameters. For example:
300, ,M
instruct ion

1.

SETIME

2.

next

3.
4.
5.
6.

SETIME

Line 1 requests activation of interval timer island code in 300 milliseconds. Line 6 cancels
the request.

2.4.

PROGRAM LINKAGE

A program may consist of several phases or routines produced by an assembler, compiler,
or other language translator, and then combined by the linkage editor. Control can be
passed from one routine to another within the program. This is referred to as direct
linkage. Linkage can proceed through as many levels as necessary. During the execution
of a job step, a routine (referred to as the calling program) passes control to another
routine (the called program), which can in turn become the calling program passing control
to a third routine (the called program), etc. This branch and linking process requires that
the contents of certain registers be saved, then restored, so that control can be returned to
the calling program.

(

:

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-25

The following macroinstructions are used for direct linkage:
‘

CALL/VCALL
Calls a program module and gives it control.

•

ARGLST
Generates an argument (parameter) list.

•

SAVE
Saves the contents of specified registers.

•

RETURN
Restores registers and returns control.

The CALL and VCALL macroinstructions can also be used to pass parameters from the
calling program to the called program.
2.4.1.

Linkage Register Conventions

During the direct linkage process, certain registers are used for specific purposes to avoid
conflicts in register use. These registers and their uses in the linkage procedure are:
•

Register 0

•

Register 1

—

—

Reserved for system use
Parameter or parameter list register

Register 1 is used for passing parameters between linked programs (each parameter
is four bytes long and is aligned on a word boundary). This register is loaded with the
parameter to be passed, or, in the case of a parameter list, the address of the first
parameter in the list. The last parameter in a parameter list has its sign bit set to 1.
•

Registers 2 through 1 2

—

Free registers

These registers are never used or referenced by the direct linkage macroinstructions.
•

Register 1 3

—

Save area register

If a save area is provided for the called program by the calling program (for temporary
register storage), the address of the save area, which must be aligned on a full-word
boundary, is loaded in register 13 by the calling program.
•

Register 14

—

Return address register

This register is loaded by the calling program with the address to which control
should be returned following the execution of the called program.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

•

Register 15

—

2-26

Entry point register

This register is loaded by the calling program with the address of the entry point in
the called program. This register can be used to provide initial addressability in the
called program.
2.4.2.

Linkage Procedure

The calling program establishes direct linkage with another program by means of the CALL
or VCALL macroinstruction. If registers are used in the called program (other than 0, 1,
and 15), the SAVE macroinstruction must be used to save their content. The RETURN
macro is used to return control to the calling program.
The calling program is responsible for the following:
•

Loading register 1 3 with the address of a 72-byte save area (if one is required by the
called program). The save area must be aligned on a full-word boundary.

I

Loading the parameter register, if necessary.

•

Loading register 14 with the return address.

I

Loading register 15 with the entry point in the called program.

The called program is responsible for the following:
•

Saving the content of all registers used by it, with the exception of registers 0, 1, and
15 which are considered volatile. The contents of registers are saved in the area
addressed by register 13.

•

Following its execution, the called program must reload the saved registers and
transfer program control to the return address loaded in register 14 by the called
program.

You can have the CALL, VCALL, SAVE, and RETURN macroinstructions perform the
linkage functions for you. Or, if you prefer, depending on how you code the parameters in
the SAVE and RETURN macroinstructions, you can perform some of these functions
yourself.
If you use the SA parameters in the SAVE and RETURN macroinstructions, the macro
establishes a save area and loads the address of the save area into register 1 3. If you do
not use the SA parameters, you must establish the save area in the calling program and
load the address of the save area into register 13 before issuing the CALL or VCALL
macroinstruction.
If you use the COVER and COVADR parameters in the SAVE macroinstruction, the macro
loads the base register addresses. If you do not use the COVER and COVADR parameters,
you must perform your own base register loading.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2.4.3.

2-27

Register Save Area

A save area is established by one program (the calling program) for use by a second
program (the called program). If the called program finds it necessary to use any of
registers 2 through 1 4, thereby destroying their contents, the called program must store
the original contents of these registers in the save area provided by the calling program
before using them. The called program itself can be a calling program, and must provide a
save area for its called program (the third program in the chain). Any number of programs
can be chained together in this manner. It is not necessary to have a save area in the last
program of a chain.
Standard register save areas are used with the CALL, VCALL, SAVE, and RETURN
macroinstructions. Note that this register save area is different from the save area used
with island code linkage for register and PSW storage (described in 2.5).
The format of the register save area is shown in Figure 2—3 and further explained in Table
2—i.
Word

Byte

Content

1

0

RESERVEDFORSYSTEMUSE

2

4

SAVEAREABACKWARDLINKADDRESS

3

8

SAVEAREAFORWARDLINKADDRESS

4

12

CALLINGPROGRAMRETURNADDRESS

5

16

CALLED PROGRAM ENTRY POINT ADDRESS

6

20

REGISTER 0

7

24

REGISTER 1

8

28

REGISTER 2

9

32

REGISTER 3

10

36

REGISTER 4

11

40

REGISTER 5

12

44

REGISTER 6

13

48

REGISTER?

14

52

REGISTER 8

15

56

REGISTER 9

16

60

REGISTER 10

17

64

REGISTER 11

18

68

REGISTER 12

NOTE:
Each word in the save area is aligned on a full-word boundary.

Figure 2—3. Register Save Area Format

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Table 2—1.

Word

2-28

Register Save Area

Content

1

Reserved for system use.

2

If zero, indicates the first save area of a chain. Otherwise, this is the address of the save area used by the
calling program which is located in the higher level program that called the calling program. For example,
bytes 4—7 of SAVE B (a save area in program B for the use of program C) contains the address of SAVE A
(a save area in program A for the use of program B). It is the responsibility of the calling program to store
the backward link address in this field from register 1 3 before loading the current save area address in
register 13.

3

If zero, indicates the last save area in a chain. Otherwise, this is the address of the save area in the most
recently called program. It is the responsibility of this called program to store the save area address in this
field before calling a lower level program.

4

The address in the calling program (as loaded in register 14) to which control is to be returned. This address
must be stored in this field by the called program if that program intends to alter the contents of register
14.

5

The entry point address of the called program (as stored in register 1 5) to which control is to be transferred.
This address must be moved to this field by the calling program.

6 to 8

A storage area provided to contain the contents of registers 0 through 1 2. The called program determines
the number of registers, if any, to be saved.

24.4.

(Th

Call a Program (CALL/VCALL)

The CALL and VCALL macroinstructions pass control from a program to a specified entry
point in another program. They are written in the calling program to establish linkage with
a called program. CALL is used to establish a direct linkage with a program already in
main storage. It loads an A-type address constant and branches. VCALL is used to
establish a V-CON type linkage with a program not necessarily in main storage. It loads a
V-type address constant and branches. No SVCs are generated by either macroinstruction.
The CALL or VCALL entry point need not have a manually coded EXTRN. All other labels
used on these calls, which appear outside the assembly, must have manually coded
EXTRNs.
You can use positional parameter 2 of the CALL or VCALL macroinstruction to pass
parameters from the calling program to the called program. In this case, you can enter the
parameters themselves, enclosed in parentheses; the macro expansion will generate a
parameter list in the required format. Or, you can enter the address of a parameter list
defined elsewhere in your program in the format required by the macro.
Another convenient method is to use the ARGLST macroinstruction to generate this list for
you. You then enter the symbolic address of the macro call as positional parameter 2 of
the CALL or VCALL macroinstruction.

C)

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-29

Format:

LABEL

zOPERATIONL

[symbol

OPERAND

JCAL L

fen try point

VCALL
1

k(

-

15)

tr
I

L

(param-1
list-address
1

Positional Parameter 1
entry-point

Specifies the symbolic address of the entry point in the called program to which
program control is to be given.
(15)

Indicates that register 15 has been preloaded with the address of the called
program.
Positional Parameter 2:
(param-1

param-n)

Specifies one or more parameters to be passed to the called program. These
parameters are written enclosed in parentheses, and are included in the CALL or
VCALL macro expansion in the same sequence as entered on the call line. Each
parameter is considered as one full word and is aligned on a full-word boundary.
The three low order bytes of each generated word contain the address of a
parameter. To mark the end of the parameter list, the sign bit of the last
parameter in the list is set to 1. The address loaded in register 1, prior to control
being transferred to the called program, is the address of the first parameter in
the list.
The parameter entries can represent actual values. However, for compatibility with
higher-level languages, this parameter is usually used to pass address constants to
the called program.
list-address

Specifies the symbolic address of a user-defined parameter list. You can define
the list in the required format, or you can use the ARGLST macroinstruction to
generate the list for you.
(1)

Indicates that register 1 has been preloaded with the address of the parameter
list.
If omitted, no parameters are assumed.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-30

C.,

Exa mples:
1

10

16

CALL
CALL

TEST (ADDR1 ,ADDR2 ,ADDR3)
TEST TSTADR
SINE (1)
(15) ,(1)

CALL
CALL

2.4.5.

Generate an Argument List (ARGLST)

The ARGLST macroinstruction generates an argument list (list of parameters) in the format
required by the CALL/VCALL macroinstruction.
This is a declarative macroinstruction and must not appear in a sequence of executable
code.
Format:
LABEL
symbol

LOPERATIONL
ARG 1ST

OPERAND
param-1

param-n

Positional Parameter 1
symbol

Specifies the symbolic address of the generated parameter list. This name can be
used in the CALL/VCALL macroinstruction to refer to the parameter list.
param-1

param-n

Specifies one or more parameters to be included in the parameter list generated
by this macro.
Exa mple
TSTADR

2.4.6.

ARGLST ADDR1,ADDR2,ADDR3

Save Register Contents (SAVE)

The SAVE macroinstruction is written at the entry point of the called program. It saves the
contents of the calling program registers, loads one or more base registers, establishes
addressability, and sets the linking pointers of the save areas. All code is generated inline
with no inner subroutine calls or SVCs.

C

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-31

Format:
LABEL
[symbol]

LOPERATIONA

SAVE

OPERAND

[(rl,r2)]

[,T]

rC0VER=(r
(r1,r2

I

[

COVADR={base addr]

[SA=savearea

rn)

name]

Positional Parameter 1:
ri

r2)

Specifies that the registers designated in ri through r2 are to be saved in the
calling program save area. The registers are always stored in their respective
fields of the save area. For example, if register 2 is specified, it is stored in word
8. All combinations of valid rl and r2 register addresses are acceptable. If ri >
r2, the register addresses wrap around from 15 to 0. If register 13 is included
within this range, it is ignored, However, if the SA keyword parameter is coded,
the contents of register 1 3 are stored in the save area specified.
If omitted, no registers are saved by this parameter.
Positional Parameter 2:
T

Specifies that if the return and entry point registers (14 and 15) are not saved by
positional parameter 1, these registers are to be stored in the calling program
save area in words 4 and 5.
If omitted, registers 14 and 15 are not saved by this parameter.
Keyword Parameter COVER:
The COVER and COVADR keyword parameters are used to establish addressability.
The values specified by COVADR are loaded in the registers specified by COVER.
COVER=r

Specifies the register designated as base register for the called program.
COVER=(rl,r2

rn)

Specifies the registers to be designated as base registers. A total of nine
registers can be designated.
If omitted, register 15 is assumed to be the base register.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-32

Keyword Parameter COVADR:
COVADR=ba se add r
-

Specifies the base address for the called program. If only one register is specified
by the COVER keyword parameter, this base address is loaded in that register. If
several registers are specified by the COVER keyword parameter, they are
successively loaded with 4096 increments of COVADR. A USING statement is
generated indicating the base address and all cover registers, regardless of
whether this parameter is specified or omitted.
If omitted, the base address is assumed to be the address of this SAVE
macroinstruction, that is, the contents of the location counter at the time this
macroinstruction is assembled.
Keyword Parameter SA:
S A=s ave a rea

-

name

Specifies the symbolic address of a 72-byte register save area. This address is
loaded into register 1 3 after register 1 3 (which is assumed to contain the
address of a previous save area if there is one) is stored in word 2 of the save
area. This process provides linkage to a higher level save area if there is one.
If omitted, register 13 is unaltered.
Exa mples:
1
SUB

10

16

SAVE

(14,12), ,COVER=12
14, 12), SA=SAVEAREA, CO VER=1ø
14, 12)
CO VADR=SUB2 SA=AREA

SAVE
SAVE

2.4.7.

,

,

,

,

Restore Registers and Return (RETURN)

The RETURN macroinstruction is written at the exit point of the called program. It restores
the contents of the calling program registers, branches back to the calling program, and
reserves storage for the current save area. All code is generated inline with no inner
subroutine calls or SVCs.
Format:
LABEL
[symbol]

AOPERATIONz

RETURN

OPERAND

[(

ri, r2)]

[

,T]

[SA={saveareaname}]

C

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-33

Positional Parameter 1:
( ri, r2)

Specifies that the registers designated in ri through r2 are to be restored from
the calling program save area. The address of the save area is assumed to be in
register 13. All combinations of valid ri and r2 register addresses are acceptable.
If ri > r2, the register addresses wrap around from 15 to 0. If register 13 is
included within this range, it is ignored. However, if the SA parameter is coded,
register 1 3 is reloaded from word 2 of the save area before the registers are
restored.
If omitted, no registers are restored by this parameter.
Positional Parameter 2:
T

Specifies that if the return and entry point registers (14 and 1 5) are not restored
by positional parameter 1, these registers are to be restored from the calling
program save area (words 4 and 5).
If omitted, registers 14 and 15 are not saved by this parameter.
Keyword Parameter SA:
The SA keyword parameter creates a 72-byte save area, or else it indicates that you
have created the save area elsewhere in the routine. It reloads register 13 (from word
2 of this program’s save area) with the pointer to the calling program’s save area. It
generates a branch via register 14 as the last executable instruction.
SA=s ave area

-

name

Specifies the symbolic address of a 72-byte register save area to be created by
this macroinstruction.
S A=

*

Specifies that you have defined a save area elsewhere in the routine.
If omitted, a save area is not created by this macroinstruction, and register 13 is
unaltered.
Examples:
1

10
RETURN
RETURN
RETURN

18
(14,12)
(14,12) ,T,SA=’
(14,12),,SA=SAVEAREA

2.5.

2-34

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

ISLAND CODE LINKAGE

Your program may be interrupted at any time for a variety of reasons. Supervisor
macroinstructions are available that let you handle four of these interrupts:
1.

An operation in your program causes a program check interrupt,
Program Check
such as an addressing error, arithmetic overflow, or operation exception.

2.

A time interval, which you specified
Interval Timer
macroinstruction (WAIT parameter omitted), elapses.

3.

Abnormal Termination
impossible.

4.

The operator entered an unsolicited message at the
Operator Communication
system console or workstation.

—

—

—

using

the

SETIME

An error occurs that makes continuation of your program

—

To handle these interrupts, you must write closed routines, called island code, and link
these routines to tasks in your program. When one of these interrupts occurs, the
supervisor stores the contents of the program status word (PSW) and general registers,
and then transfers control to your island code routine. If you elect to resume processing
the interrupted task, the supervisor uses this stored information to return control to the
task at the point of interrupt.
The purpose of the program check, interval timer, and operator communication island code
routines is to handle program contingencies or to notify your program that the interrupt
has occurred. In the case of abnormal termination, the function of your island code routine
is to terminate either a task or a job step rather than the entire job (normal procedure for
abnormal termination if there is no abnormal termination island code routine).
The supervisor provides two macroinstructions that automatically generate the linkages
between your island code routine and your program. The macroinstructions are:
•

STXIT
Attach and detach your island code routine.

I

EXIT
Exit from your island code routine.

You must use the STXIT macroinstruction in your program to attach your island code
routines to your tasks. You use the EXIT macroinstruction in your program check, interval
timer, and operator communication island code routines to return control to the
interrupted task. Do not use the EXIT macroinstruction in the abnormal termination island
code routine. Instead, use:
•

a DETACH macroinstruction to detach the task;

•

a DUMP or EOJ macroinstruction to terminate the job step; or

•

a CANCEL macroinstruction to terminate the job.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2.5.1.

2-35

Attaching Island Code to a Task (STXIT)

You use the STXIT macroinstruction to attach island code routines to a task. An important
point to remember is that STXIT only sets up the linkage, it does not call in the island code
routine. Control passes to the island code routine only when the interrupt for which it was
written occurs.
There are two formats for the STXIT macroinstruction. One is for program check, abnormal
termination, and interval timer island code routines; and one is for operator
communication.

2.5.1.1.

Attaching Program Check, Abnormal Termination, and Interval Timer
Island Code

Function:
This form of the STXIT macroinstruction establishes or terminates linkage between
your task and the user island code routine specified by the parameters. If only
parameter 1 is supplied, the previous linkage with the island code specified is
terminated.
If a program check or an abnormal termination condition occurs for which no linkage
is provided, the task is terminated. If the task is a primary task, the entire job is
terminated; if it is a subtask, only the subtask is terminated.
If a timer interrupt occurs for which no linkage is provided, the interrupt is ignored.
Format:
The format for the STXIT macroinstruction when it is used for program check,
abnormal termination, or interval timer island code linkage is:
LABEL

AOPERATIONt

[symbol]

STX IT

OPERAND
‘PCi

r

fent ry-point, isave -area]
1(1)

I rJ
ABL
Positional Parameter 1
PC

Establishes linkage with the program check island code routine.
RB

Establishes linkage with the abnormal termination island code routine.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-36

IT

Establishes linkage with the interval timer island code routine.
If only positional parameter 1 is specified, the previous linkage with the particular
user island code routine is terminated; otherwise, a linkage is established.
Positional Parameter 2:
entry-point

Specifies the symbolic address of the entry point of the user island code routine
that processes the interrupt.
(1)

Indicates that register 1 has been preloaded with the address of the entry point.
If positional parameters 2 and 3 are omitted, the previous linkage with the island code
specified in positional parameter 1 is terminated.
Positional Parameter 3:
save-a rea

Specifies the symbolic address of an 18-word save area for PSW and general
register storage. This save area must be aligned on a full-word boundary. The
format for the save area is:
Byte

0
8

register save area
(registers 0—15)

T

68T_____
(0)

Indicates that register 0 has been preloaded with the address of the save area.
If positional parameters 2 and 3 are omitted, the previous linkage with the island code
specified in positional parameter 1 is terminated.
As you can see from the format, parameters 2 and 3 are indicated as being optional. They
are shown this way only because these parameters are omitted when you use the STXIT
macroinstruction to detach an island code routine (2.5.2). Remember, when attaching an
island code routine, you must specify parameters 2 and 3; when you detach an island code
routine, you must omit them. Examples of the STXIT macroinstruction for program check,
abnormal termination, and interval timer are shown in 2.5.5, 2.5.6, and 2.5.7.

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-37

2.5.1 .2. Attaching Operator Communication Island Code
Function:
This form of the STXIT macroinstruction establishes or terminates linkage between
your task and the operator communication island code specified by the parameters. If
only parameter 1 is supplied, the previous linkage with the operator communication
island code is terminated.
If an unsolicited console message interrupt occurs for which no linkage is provided,
the interrupt is ignored and the operator is notified.
Format:
The format for the STXIT macroinstruction when it is used for unsolicited operator
communication linkage is:
LABEL

LOPERATIONL

[symbol]

OPERAND

STXIT

OC,Jentry-point,save-area,msg-area,Iength

Lt

(1)

Positional Parameter 1:
oc
Establishes linkage with the operator communication island code routine.
If only positional parameter 1 is specified, the previous linkage with the operator
communication island code routine is terminated; otherwise, a linkage is established.
Positional Parameter 2:
entry

-

point

Specifies the symbolic address of the entry point of the operator communication
user island code routine that processes the interrupt.
(1)

Indicates that register 1 has been preloaded with the address of a 4-word table
containing parameters 2, 3, 4, and 5 in the following format:
Byte

0

save area address

4

entry point address

8

message area address

12

message area length

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-38

C

Positional Parameter 3:
save- a rea

Specifies the symbolic address of an 18-word save area for PSW and general
register storage. This save area must be aligned on a full-word boundary. The
format for the save area is:
Byte

0
8
register save area
(registers 0—1 5)

681

T

Positional Parameter 4
ms g a r e a
-

Specifies the symbolic address of an input area reserved for unsolicited
messages from the operator.
Positional Parameter 5
length

Specifies the length (in bytes) of the message area. The size of the area can be
from 1 to 60 bytes; any message exceeding the specified length is truncated,
while any message smaller is left-justified and space-filled.
2.5.2.

Detaching Island Code from a Task (STXIT)

Eu nct ion
This form of the STXIT macroinstruction terminates linkage between your task and
the user island code routine specified by the parameter.
Format:
LABEL

[symbol]

z2OPERATIONL

STX IT

OPERAND

PC
AB
IT
OC

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-39

Positional Parameter 1:
PC

Terminates linkage with the program check island code routine.
Terminates linkage with the abnormal termination island code routine.
IT

Terminates linkage with the interval timer island code routine.
OC
Terminates linkage with the operator communication island code routine.
The specific island code routine remains in the program, but it is not entered the next time
that type of interrupt occurs. Later in the program, if you want to attach the island code
routine again, use the STXIT macroinstruction with the same parameters or with other
appropriate parameters. You may want to link another set of island code to the same task,
in which case you would detach the old routine and attach the new. Remember, except for
program check and interval timer island code in a multitasking environment, there can
only be one current island code routine of one type in a job step, that is, one island code
routine of one type currently linked to the task.

2.5.3.

Island Code Entrance

As we have described earlier, you attach your island code routine with the STXIT
macroinstruction, specifying the type of island code routine, the routine’s entry point, and
a save area. When the event occurs for which your routine was written, the instruction
being executed at that time completes, and the PSW and the general register contents are
stored in the save area. Control is then transferred to your island code routine. If the last
instruction in the routine is an EXIT macroinstruction, the supervisor uses the stored PSW
and general register contents to return control to the interrupted task at the instruction
following the point of interrupt.
Program check, abnormal termination, and interval timer island code routines receive
control under the task control block (TCB) of the task, or subtask, causing the interrupt.
Operator communication island code routines receive control under the TCB of the primary
task. When your island code routine is activated, the contents of the PSW and the register
save area of the TCB are moved to the island code routine’s save area. Your island code
routine should not change entries in this save area. If it does, the state of the system and
your program is different after the interrupt is processed than it was before the interrupt
occurred. You may not be able to resume program execution or you may get erroneous
results. Floating point registers are undisturbed from the time of interrupt; however, any
changes made during island code routine execution are returned to the interrupted task.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-40

For abnormal termination, interval timer, or operator communication island code
processing, registers saved by the system in an island code save area should never be
depended upon or changed by your job. Usually it makes no difference; however, if two or
more interrupts for different types of island code are received at about the same time, an
island code save area may not have your PSW and registers, but rather another island
code’s PSW and registers. These rules do not apply to the PC island code. It is always safe
to look at the PC island code PSW and register save area.
Your island code routines are given control by the task switcher even though the
associated task is in a wait state. This override wait (e.g., wait for I/O synchronization,
wait for interval timer, task pause, PAUSE console commands) is referred to as island code
override and remains in effect during island code execution.
For example, assume that you have written an island code routine to handle operator
communications, your task has issued a wait for an I/O operation, and the operator enters
an unsolicited message at the system console. The island code routine is entered
immediately, regardless of whether the wait has been completed. When you exit from the
island code routine, the island code override is removed; but if the I/O wait is still set,
your program cannot return to the interrupted task until the I/O operation has completed.
As you know, the purpose of an island code routine is to handle an interrupt immediately.
Consequently, functions that cause a task to be put in a wait state (WAIT macroinstruction
and certain data management imperative macroinstructions such as GET or PUT, TYIELD
macroinstruction, SETIME macroinstruction) should not be placed in an island code
routine. If they are, they can defeat the purpose of the island code routine; that is, they
prevent an interrupt from being handled immediately. To illustrate this, assume that you
included a wait in an island code routine and it was followed by an EXIT macroinstruction.
Control would be immediately transferred to the interrupted task even though the wait in
the island code was still set. If another interrupt occurred, control is not transferred from
your task to your island code routine until the wait within the island code routine is
completed.

2.5.4.

Island Code Exit (EXIT)

At the close of your island code routine, you can:
•

use the EXIT macroinstruction to return control to the interrupted task; or

•

use the DETACH, EOJ, DUMP, or CANCEL macroinstruction to terminate the task.

The normal procedure for program check, interval timer, and operator communication
island code is to return control to the interrupted task. You do this by coding the EXIT
macroinstruction as the last executable instruction of the island code routine.

(

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2.5.4.1.

2—41

Exiting from Program Check and Operator Communication Island Code

Function:
This format of the EXIT macroinstruction is used for program check and operator
communications island code. The macroinstruction terminates the user island code
routine, restores the contents of the registers and the PSW, and returns program
control to the point immediately following the interrupt. This macroinstruction must
be the last executable instruction within the island code routine.
Format:
LABEL

zOPERATIONA

[symbol]

EXIT

OPERAND
jPC

bc
Positional Parameter 1
PC

Specifies that exit is from the program check island code routine.
OC

Specifies that exit is from the operator communications island code routine.

Exiting from Interval Timer Island Code

25.4.2.
Function

This format of the EXIT macroinstruction is used for interval timer island code. The
macroinstruction terminates the user island code routine, restores the contents of the
registers and the PSW, and returns program control to the point immediately
following the interrupt. If positional parameter 2 is specified, the interval timer is set
to the specified value before program control is returned to the task. When the
specified time interval elapses, the timer island code is again executed. This
macroinstruction must be the last executable instruction within the island code
routine.
Format:
LABEL

[symbol]

LO PERATIONA
EXIT

OPERAND
IT

r jt i me r (1)inter va I JJfl
-

Li

1, JM

Positional Parameter 1
IT

Specifies that exit is from the interval timer island code routine.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-42

Positional Parameter 2:
time r

-

I nt e rva I

Specifies the interval of time that must expire beofre the timer island code is
again activated. This interval is expressed either in seconds or milliseconds,
depending on the entry in positional parameter 3. The maximum value that may
be entered as positional parameter 1 is 4O95. To specify a value greater than
4O95, enter (1) as positional parameter 1 and preload register 1 with the
required time interval value.
The effect of this parameter is the same as if you had issued your own SETIME
macroinstruction immediately before the EXIT. If you had done that, however, an
interrupt occurring between the SETIME and EXIT macroinstructions could
possibly take control away from you long enough for your SETIME to expire and
cause an error (referenced island code in busy state). To avoid this possibility,
you should only reset the interval timer either when the EXIT macroinstruction is
issued or by a SETIME macroinstruction issued outside the timer island code.
(1)

Indicates that register 1 has been preloaded with the time interval value.
If omitted, the interval timer is reset by this macroinstruction.
Positional Parameter 3:

Specifies that the time interval entered as positional parameter 2 is expressed in
milliseconds.
S

Specifies that the time interval entered as positional parameter 2 is expressed in
seconds.
If omitted, parameter S is assumed.
2.5.4.3.

Exiting from Abnormal Termination Island Code

You do not have the option to return to the interrupted task from abnormal termination
island code. However, you do have a choice of four macroinstructions. You may use the
DETACH, EOJ, DUMP, or CANCEL macroinstruction. The use of these macroinstructions to
terminate abnormal termination island code is described in 2.5.6.
2.5.5.

Program Check

Your program check island code routine receives control as the result of a hardware
program check interrupt. The island code routine gains control at the entry point specified
in the STXIT macroinstruction in your program that linked the island code to the task. At
this time, the least significant eight bits of register 0 contain an error code and register 1
contains the address of the event control block (ECB) of the task causing the interrupt. A
value of zero in register 1 indicates a primary task, otherwise it is the address of the ECB
of a subtask. All other registers are as they were when the task was interrupted.

C’.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-43

The program check error code returned in register 0 does not necessarily indicate an error
condition since occurrences such as arithmetic overflow can cause the interrupt. These
codes, which range from hexadecimal 01 to OF, are listed and described in the system
messages programmer/operator reference, UP-8O76 (current version).
Program check island code enables you to take some corrective action so that a program
check interrupt does not cause abnormal termination of the job step. You can take
whatever action is necessary to correct the situation, then return to the interrupted task by
executing the EXIT macroinstruction.
If a program check interrupt is caused by a task for which there is no program check
island code routine, or the island code routine was detached using a STXIT
macroinstruction with only the first parameter, the task enters abnormal termination
island code with an error code of hexadecimal 20. If there is no abnormal termination
island code to handle the situation, the task is abnormally terminated. When the task is a
primary task, the entire job is terminated; when it is a subtask, only the subtask is
terminated.
Let us look at how you would use the STXIT macroinstruction with symbolic addresses.
Figure 2—4 illustrates this.

1
1.

10

16

LR

R3,R7

2.
3.
4.

5.
6.
7.

PCOVFL

8.
9.
10.
11.

57.

AROVFI

58.
59.
60.
61.
62.

MH
R3,TRAJ
STXIT PC,AROVFL,PC1
ST
R3,MAXTRAJ

1

R6,MAXWGT

C

R1,TESTA
is land

.

EXIT
PCi

Figure 2—4.

DS

code

rout me

PC
18F

Example of Program Check Island Code Linkage Using Symbolic Addresses

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-44

In this example, we’ve coded a program check STXIT in line 6. The entry point address is
AROVFL and the save area address is PCi. The STXIT macroinstruction is not part of the
island code routine, nor does it call the island code routine. It only attaches the island
code routine to the task. The island code routine is coded in lines 57 through 61. You
should place the island code routine in the nonexecutable portion of your program.
Nothing, however, prevents you from coding it inline in your program. If you do this, you
must unconditionally branch around the island code routine. The reason for this is that
you want the island code routine executed only when a program check interrupt occurs,
not every time it is encountered in the main line of your program. Line 62 reserves the
main storage save area needed by the island code routine.
From the format, you can see that you can also code STXIT using register addresses
instead of symbolic addresses. Let’s take a look at the same program using the alternate
method of coding STXIT, as shown in Figure 2—5.
1

10

16

LR

R3,R7

MH

R3,TRAJ
R1,AROVFL
Rø,PC1

1.
2.

3.
4.
5.
6.
7.
8.

LA
LA
PCOVFL

STXITPC,(1),(ø)

9.
10.
11.
12.

ST

R3,MAXTRAJ

13.

1

R6,MAXWGT

C

R1,TESTA

59.
60.
61.
62.
63.

AROVFL

64.

Pci

island

.

EXIT
DS

Figure 2—5.

code

routine

PC
i8F

Example of Program Check Island Code Linkage Using Register Addresses

Except for three lines of coding, the programs are identical. In order to use register
addresses in the STXIT macroinstruction, you must preload them. Register 1 must be
preloaded with the entry point address (line 6) and register 0 with the save area address
(line 7). When you code the STXIT macroinstruction in line 8, you simply write the register
numbers as shown in the format.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-45

When the STXIT macroinstruction is encountered, the supervisor takes the addresses in
registers 0 and 1 and stores them in a control table. These entries in the control table are
referenced when the interrupt occurs and the island code routine is needed. Once the
addresses in the registers are stored, these registers are freed. It is advisable to code the
load address instructions immediately preceding the STXIT macroinstruction because these
registers are frequently used by the system and their contents are dynamic. Other than
the exceptions just noted, the points brought out in the previous example about island
code routine placement and reserving main storage still apply.
2.5.6.

Abnormal Termination

Abnormal termination island code is similar to program check island code in that an
interrupt can occur at any time during the execution of the task; however, the action to be
taken differs radically. Your program check island code routine must return control to the
interrupted task; your abnormal termination island code routine cannot.
Abnormal termination island code receives control when a task enters cancel processing.
The cancel can be either intentional (execution of a CANCEL macroinstruction) or
unintentional, as with a system-imposed cancellation due to a software detected error.
This permits you to intervene to prevent the abnormal termination of a job. For example,
the operating system can abnormally terminate a job because of a physical IOCS error.
Instead, you may prefer to terminate the job step in error, but process the next job step of
the job. Or, in the case of a subtask causing the abnormal termination interrupt, you may
want to detach only the subtask in error and continue processing the remaining active
subtasks or the primary task.
Your abnormal termination island code gains control at the entry point specified in the
STXIT macro instruction that linked the island code routine to the job step. At this time, the
least significant 12 bits of register 0 contain an error code, and register 1 contains the
address of the ECB of the task causing the cancellation. A value of 0 in register 1
indicates a primary task; otherwise, it is the address of the ECB of a subtask.
The error codes that may cause cancellation are listed and described in the system
messages programmer/operator reference, UP-8076 (current version). Because you cannot
return to the interrupted task, you cannot use the EXIT macroinstruction to exit from
abnormal termination island code. Instead, you may use any of the following
macroinstructions to terminate the task:
•

DETACH
Terminate the task or subtask normally.

•

EOJ
Terminate the job step normally.

•

DUMP
Print out the job region contents and terminate the job step normally.

•

2-46

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

CANCEL
Print out the job region contents and terminate the job abnormally.

The EOJ macroinstruction is described in 2.2.4, CANCEL in 2.2.5, DUMP in 7.1 .2, and
DETACH in 5.3.3.
If an abnormal termination interrupt is caused by a task for which there is no abnormal
termination island code routine, or the island code routine was detached, the task is
abnormally terminated. If the task is a primary task, the entire job is terminated; if it is a
subtask, only the subtask is terminated.
If a program check interrupt is caused by a task for which there is no program check
island code routine, or the island code routine was detached, the task enters the abnormal
termination island code routine with an error code of hexadecimal 20. If there is no
abnormal termination island code routine or the island code routine was detached, the job
is abnormally terminated.
Figure 2—6 is an example of how you use the STXIT macroinstruction to attach the
abnormal termination island code routine to your task. Note that in this case we have
chosen to use the DUMP macroinstruction to exit from the island code routine.

1
1.

10
LR

16
R4R6

2.
3.
4.
5.
6.
7.
8.
9.

40.
42.
43.
44.
45.

STXIT ABABENTRYABSAVE

RDREC

GET

DATAFILPARNAM

ABENTRY

C

R0,TESTCODE
island

ABSAVE

Figure 2—6.

DUMP
DS

code

routine

369
18F

Example of Abnormal Termination Island Code Linkage Using Symbolic Addresses

In this example, we’ve coded an abnormal termination STXIT macroinstruction in line 5.
The entry point address is ABENTRY and the save area address is ABSAVE. As we
mentioned earlier, the STXIT macroinstruction is not part of the island code routine. The
island code routine, which is coded in lines 40 through 44, is executed only when an
abnormal termination interrupt occurs. Line 45 reserves the main storage save area
needed by the island code routine.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2.5.7.

2-47

Interval Timer

Your interval timer island code routine receives control as the result of a timer interrupt
requested by a SETIME macroinstruction in your program written without the WAIT
para meter.
When the time interval specified in the SETIME macroinstruction elapses, your interval
timer island code routine gains control at the entry point specified in the STXIT
macroinstruction that linked the island code routine to the task. At this time, register 0 is
cleared to 0, and register 1 contains the address of the ECB of the task for which the time
interval elapsed. A value of 0 in register 1 indicates a primary task; otherwise, it is the
address of the ECB of a subtask. All other registers are as they were when the task was
interrupted.
To exit from your interval timer island code routine, use the EXIT macroinstruction to
return to the interrupted task.
Remember, there must be a SETIME macroinstruction without the WAIT parameter to
request an interval timer interrupt, and a STXIT macroinstruction in the same task to
attach the task to the island code routine that handles the interrupt. If an interval timer
interrupt occurs in a task for which there is no interval timer island code routine, or the
interval timer island code routine was detached, the interrupt is ignored.
Figure 2—7 is an example of the use of the SETIME, STXIT, and EXIT macroinstructions
with an interval timer island code routine.

1

1.
2.

*

10
TIMER EXAMPLE

3.
4.
5.
6.
7.
8.

16
—

LIMIT COMPUTE

LOOP TO 25 SECONDS

ESTABLISH TIMER
STX IT

COMPUTE

9.
10.

13.

ISLAND CODE TO HANDLE

INTERRUPT

I LANDCOD, I CSAVE

START TIMING INTERVAL
SETIME 25, ,S
TWENTY FIVE SECONDS
START OF COMPUTE LOOP
EQU
TM
BO

11.
12.

IT

TEST TO SEE IF TIME LIMIT HAS BEEN EXCEEDED
FLAGBYTE,TIMEFLAG
TEST IF FLAG WAS SET BY ISLAND CODE
TOOLONG
BRANCH IF FLAG IS SET
computat ion occurs here

.

3

14.

15.

C

X,Y

16.
17.

BNE

COMPUTE

18.

STXIT

NORMAL
IT

EXIT

TEST TO SEE IF COMPUTATION
LOOP BACK IF NOT
FROM COMPUTE LOOP
DETACH ISLAND CODE
}exit

Figure 2—7.

IS DONE

routine

Example of Interval Timer Island Code Linkage Using Symbolic Addresses (Part 1 of 2)

2-48

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP.-8832

19.
20.

16

10

1

TOOLONG

21.
22.

EQU
STXIT

ERROR

IF COMPUTATION NOT DONE BEFORE TIME

PRINT

DETACH ISLAND CODE
ERROR MESSAGES, ETO

IT

23.

1

24.
25.

error print routine

26.
27.

3
TIMER
ILANDCOD

28.
29.
30.
31.
32.
33.

ELAPSES

ISLAND CODE

EQU

*

01
EXIT

FLAGBYTE,TIMEFLAG

SET

—

ACTIVATED WHEN TIME

ELAPSES

FLAG

IT
WORK AREAS

DS
ICSAVE
FIAGBYTEDC
TIMEFLAG EQU

Figure 2—7.

18F
X’ø’
Xø1’

REGISTER SAVE AREA REQUIRED
INITIALLY ZERO
BIT = 1 WHEN TIME ELAPSES

Example of Interval Timer Is/and Code Linkage Using Symbolic Addresses (Part 2 of 2)

In this example, the SETIME macroinstruction (line 6) requests a timer interrupt in 25
seconds so that a time limit of 25 seconds can be placed on the computation (lines 8 to
16) that follows. The STXIT macroinstruction (line 4) attaches the interval timer island
code routine (lines 27 to 29) to the task. The routine sets a flag when the time interval
expires. The STXIT macroinstruction is used again (lines 18 and 21) to detach the island
code routine. The EXIT macroinstruction (line 29) returns control from the island code
routine to the interrupted task. Line 18 is the normal exit from the compute loop, which
occurs if computation is completed before the timer elapses. Lines 20 and 25 are the error
routine which is executed if the time elapses before the computation is completed. Line 31
defines the save area needed when the interrupt occurs.

2.5.8.

Operator Communication

Your operator communication island code routine receives control when the operator
enters an unsolicited message at the system console or workstation. He does this by
typing the job number and a zero, followed by the message text. For additional details of
the operating procedure at the system console or workstation, refer to the appropriate
operations handbook for your system.
The use of operator communication island code routines permits the operator to enter a
message for the attention of your program at any time during the execution of a job step
without being prompted by your program. He could enter one of several predefined
messages to acknowledge an event or a condition external to your program, for example,
an infrequent request for statistics at the end of a particular job step.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-49
Update B

The island code routine gains control at the entry point specified in the STXIT
macroinstruction that linked the island code routine to the job step. At this time, register 0
contains the length (including the character under the cursor) of the message entered by
the operator. Register 1 contains either a 0, indicating that the operator communication
was initiated at the console, or a negative sign (—), indicating that the operator
communication was initiated at the workstation. (Register 1 would not contain an ECB
address because operator communication island code routines always execute under the
primary task TCB.)
To exit from the operator communication island code, use the EXIT macroinstruction to
return to the interrupted task.
If the operator attempts to enter an unsolicited message for a job step for which there is
no operator communication island code routine, or the island code routine has been
detached, the message is rejected.
Figure 2—8 is an example of the use of the STXIT and EXIT macroinstructions for operator
communication island code routine using symbolic addresses. The general operation is
similar to that described for program check. However, you will note that, in addition to the
entry point and save area, the STXIT macroinstruction also specifies a message area and
message length.
Following the format, the STXIT macroinstruction in line 21 specifies that it is attaching an
operator communication island code routine (CC). The island code routine’s entry point is
SYSCON, the save area address is OC1, and the message from the system console is
stored in a reserved 60-byte area whose address is OPRMSG.

1

10

1.

LR

16
R3,R7

21.

STXIT

OC,SYSCON,0C1,OPRMSG,60

LR

R5,OPRMSG+3

75.

SYSCON

island
89.
90.
91.

OC1
OPRMSG

Figure 2—8.

EXIT
DS
DS

code

routine

OC
18F
1SF

Example of Operator Communication Island Code Linkage Using Symbolic Addresses

4

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-50

Figure 2—9 is an example of how your program would look if you elect to use register
addresses instead of symbolic addresses. The load address instruction in line 21 places
the address of a 16-byte area, called OCSETUP, into register 1. The format of this area is:
Byte

0

save area address

4

entry point address

8

message area address

12

message area length

What we have done is taken the last four parameters of the STXIT OC format and
converted them to a short table. This short table is referenced as the (1) parameter in line
22. Line 93 reserves the main storage area for this table. Note that in the table the save
area address is the first field and the entry point address is the second field. Do not
confuse this with how these parameters are listed in the STXIT macroinstruction if you are
using symbolic addresses. Remember also that the time the operator communication
interrupt occurs, this 16-byte field (OCSETUP) must contain the appropriate addresses and
message area length.

1

10

16

IR

R3,R7

21.

LA

22.

STXIT

R1,OCSETUP
OC,(1)

LR

R5OPRMSG+3

1.

75.

SYSCON

island
90.
91.
92.
93.

OC

OPRMSG

EXIT
Os
OS

OCSETIJP

OS

16F

OC1

Figure 2—9.

code

routine

18F
15F

Example of Operator Communication Island Code Linkage Using Register Addresses

UP-8832

2.5.9.
2.5.9.1.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-51

Use of Island Code with Multitasking
Program Check and Interval Timer with Multitasking

In a multitasking environment, you can specify discrete program check and interval timer
island code routines using a separate STXIT macroinstruction in each task to link the task
to its island code routine.
Figure 2—10 depicts a job step with three tasks (the primary task and two subtasks). The
STXIT macroinstruction in each task specifies a separate island code routine and a
separate save area. Note that, upon exit, control returns to the interrupted task at the point
of interrupt.
PRIMARY TASK
ISLAND CODE ROUTINE
PRIMTASK.
STXIT PC,ICR,SAVE.
INTERRUPT

SAVE

DS

ICR

RETURN

18F

EXIT PC

SUBTASK 1
ISLAND CODE ROUTINE
SUBTASK1
STXIT PC,ICR1 ,SAVEA
INTERRUPT

SAVEA

DS

1BF

4

ICR1

EXIT PC

RETURN

ISLAND CODE ROUTINE
SUBTASK2
STXIT PC,ICR2,SAVEB
INTERRUPT

SAVEB

Figure 2—10.

DS

18F

RETURN

ICR2

EXIT PC

-

Example of Discrete Program Check Island Code for Each Task in a Job Step

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-52

You can also use a common program check island code routine or a common interval
timer island code routine for all the tasks within a job step. In this case, you use a
separate STXIT macroinstruction for each task to link the task to the common island code
routine, specifying the same entry point but with a different save area for each task. When
you use a common island code routine, the island code routine must be reentrant, that is,
it can’t make any changes to itself or to its common parts.
Remember, this common island code routine can be entered from any of its associated
tasks and program control returns to the interrupted task via the EXIT macroinstruction.
Also, make sure you don’t disturb the affected save area because the task environment
must be restored so that control can be returned to the interrupted task.
Figure 2—1 1 shows how all the tasks in a job step (in this case, a primary task and two
subtasks) could use a common island code routine. The STXIT macroinstruction in each
task specifies the same entry point; however, each STXIT specifies a separate save area.
When a program check interrupt occurs in any of the tasks, control is transferred to the
one island code routine. Upon exit, control returns to the interrupted task at the point of
interrupt.
PRIMARY TASK

STXIT PC,ICR,SAVE
INTERRUPT

ISLAND CODE ROUTINE
STXIT PC,ICRSAVEA

SUBTASK 2
SUBTASK2.
STXIT PC,ICR,SAVEB

C
Figure 2—11.

Example of Common Program Check Island Code for All Tasks in a Job Step

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2.5.9.2.

2-53

Abnormal Termination with Multitasking

There can be only one abnormal termination island code routine current in a job step at
any one time. You can use a STXIT macroinstruction in any task to attach the island code
routine. The abnormal termination island code routine is associated with the job preamble;
however, it may be entered from any task in the job step.
If several tasks in a job step are each causing an abnormal termination interrupt, these
cancellation requests are queued for entry into the one abnormal termination island code
routine for the job step.
You can have several abnormal termination island code routines in a job step (for example,
one for each overlay), but only the routine linked by the current STXIT macro instruction is
effective when an interrupt occurs. In this case, each succeeding STXIT macroinstruction
supersedes the previous one, and you do not have to issue a STXIT macroinstruction to
detach each previous island code routine.
2.5.9.3.

Operator Communication with Multitasking

There can be only one operator communication island code routine current in a job step at
one time. You can use a STXIT macroinstruction in any task to attach the island code
routine. The operator communication island code routine is associated with the primary
TCB; however, it may be entered at any time, regardless of which task is processing at the
time the operator enters the job number and a zero at the system console to cause an
operator communication interrupt.
Multiple activations of an operator communication island code routine are not possible. If
the island code routine is executing, it must exit before it can be reentered. If the island
code routine is handling an operator communication interrupt when the operator attempts
to enter another unsolicited message for the same job step, the later unsolicited message
is rejected.
As is the case with an abnormal termination island code routine, you can have several
operator communication island code routines in a job step, but only the code linked by the
current STXIT macroinstruction is effective when an interrupt occurs.

2.6.

SYSTEM INFORMATION CONTROL

Each problem program is assigned a variable-length storage area within the program
region which is known as the job prologue and contains the job preamble and task control
blocks. You can retrieve or read information from the job prologue only through the
supervisor. In addition, you can establish, change, or cancel information only within the
1 2-byte communication region of the job preamble. You cannot alter any other part of the
contents of these critical storage areas. The communication region is most commonly used
to pass information from one job step to the next; 1 2 bytes of data can be stored by one
job step and retrieved by subsequent job steps associated with the same job. The user
program switch indicator (UPSI) can be retrieved using the GETCOM macroinstruction or
set using the PUTCOM macroinstruction. The UPSI is the last byte in the 1 2-byte
communication region in the job preamble and is tested by a subsequent SKIP job control
statement. The job control user guide, UP-8065 (current version) contains a description of
the UPSI bit values, how to set and change the bits, and how to use the UPSI to branch
around JCL statements.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-54

The following macroinstructions are provided to assist you in accessing these restricted
storage areas:
•

GETCOM
Retrieves the contents of the 12-byte communication region from within the job
preamble.

•

PUTCOM
Writes a 12-byte character string into the communication region within the job
preamble.

•

GETINF
Retrieves information from the SIB, PUBs, TCBs, or preamble.

2.6.1.

Get Data from Communication Region (GETCOM)

Function:
The GETCOM macroinstruction retrieves the contents of the 12-byte communication
region from within the job preamble and stores it in an area specified in positional
parameter 1:
Format:
LOPERATIONL

LABEL
[symbol]

GETCOM

OPERAND

jto-addr
k( 1)

Positional Parameter 1
to-addr

Specifies the symbolic address of a 12-byte area in main storage to which the
contents of the communication region is to be moved.
(1)

Indicates that register 1 has been preloaded with the address of the area in main
storage.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2.6.2.

2-55

Put Data into Communication Region (PUTCOM)

Function:
The PUTCOM macroinstruction moves the contents of a 12-byte area in main storage
specified in positional parameter 1 to the communication region within the job
preamble.
Format:

LABEL
[symbol]

LOPERATIONL
PUTCOM

OPERAND

rom-addr
1(1)

Positional Parameter 1
from-add

Specifies the symbolic address of a 1 2-byte area in main storage containing the
data characters to be moved into the communication region within the job
preamble.
(1)

Indicates that register 1 has been preloaded with the address of the area in main
storage.

2.6.3. Get Data from System Control Tables (GETINF)
Function:
The GETINF macroinstruction retrieves data from the task control block (TCB), systems
information block (SIB), physical unit block (PUB), or the job preamble and stores it in
a workarea in main storage specified in positional parameter 2.
NOTE:

If you use the GETINF macro/n struction in your program, you must reassemble your
program upon every major re/ease of the system software.
Format:
LABEL
[symbol]

tOPERATIONA
GET I NF

OPERAND
TCB
SIB
PRE
PUB

jwo rk a r e a

numb e r

-

I

-

of

-

bytes

di s p1 a cement

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-56

Positional Parameter 1:
TCB

Specifies that the data requested is from the job task control block.
SIB

Specifies that the data requested is from the systems information block.
PRE

Specifies that the data requested is from the job preamble.
PUB

Specifies that the data requested is from the physical unit block. In this case,
register 1 must be pre loaded with the address of the PUB or with the identifying
number of the PUB. The PUB identifying number is its position within the PUBs
specified at SYSGEN. That is, the first PUB is 0, the second PUB is 1, and so on.
Positional parameter 2 must specify work-area, not (1).
Positional Parameter 2:
work a r e a
-

Specifies the symbolic address of the workarea in the problem program to which
the data is to be moved. This area must be large enough to contain the data
requested.
(1)

If positional parameter 1 is TCB, SIB, or PRE, indicates that register 1 has been
preloaded with the address of the workarea.
Not valid if positional parameter 1 is PUB because register 1 already contains the
address of the PUB or the identifying number of the PUB.
Positional Parameter 3:
numb e r of
-

-

bytes

Specifies the number of bytes of data requested.
Positional Parameter 4:
d Isp I acement

Specifies the displacement, that is, the number of bytes from the beginning of
the table to the beginning of the data requested.

(

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-56a
Update 0

2.6.4. Move Data from IDA (GETLDA)
Function:
The GETLDA macroinstruction allows you to read data from the local data area
(LDA) (set up by job control or OS/3 interactive (OS/31) LOGON processing) into
the user supplied buffer.
Format
LABEL

[symbol]

LOPERATIONt

GETLDA

OPERAND

Jaddress[disp] [, length]
(1)

Positional Parameter 1
address

Specifies the address in the user program to which the data is transferred.
(1)

Indicates register 1 is preloaded with the address of an 8-byte parameter area
as follows:
Bytes 0
Bytes 4
Bytes 6

—

—

—

3
5
7

=
=
=

address of user buffer
displacement into LDA
length of transfer

Positional Parameter 2:
disp

Specifies the local data area displacement after data transfer.
Positional Parameter 3
length

Specifies the number of bytes to be transferred. The maximum is 256 bytes.
The default is 1.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP- 8832

2-56b
Update D

2.6.5. Move Data to LDA (PUTLDA)
Function:
The PUTLDA macroinstruction allows you to transfer data to LDA from the user
supplied buffer.
Format:
LABEL

[symbol]

OPERATIONL

PUT LD A

OPERAND

jaddress[,disp] [, length]
1(1)
J

Positional Parameter 1:
address

Specifies the address in the user program from which the data is transferred.
(1)

Indicates that register 1 is preloaded with the address of an 8-byte parameter
area as follows:
Bytes 0
Bytes 4
Bytes 6

—

—

—

3
5
7

=
=
=

address of user buffer
displacement into LDA
length of transfer

Positional Parameter 2:
di sp
Specifies the LDA displacement for data transfer
Positional Parameter 3:
length

t

Specifies the number of bytes to be transferred. The maximum is 256 bytes
The default is 1.

C:

UP-8832

2.7.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-57
Update A

CONTROL STREAM READER

The control stream reader allows you to access data that was entered into the system with
the job control stream. This provides a convenient method to handle small quantities of
input that would normally have been handled as a card or diskette file. Because the data is
embedded within the job control stream, there is no need to define a card or diskette file,
nor is a device assignment set required for the card reader or diskette subsystems.
This embedded data might consist of transactions or changes to be processed against a
master file, source code or control statements to be processed by a utility routine, or it
might consist of PARAM job control statements to introduce parameters that can be used
during program execution. Refer to the job control user guide, UP-8065 (current version)
for a description of statements within embedded data.
When job control reads the job stream, it stores the embedded data in compressed form
in
the job run library file. During the execution of the job step, this file is read into main
storage and may be accessed by GETCS macroinstructions in your program. The requested
records are expanded to their original form and stored in an input area you specify.
You can retrieve one or more records at a time from your embedded data file, and you can
retrieve records from more than one set of embedded data belonging to the same job step.
Images are read sequentially from the start of the entire data file. However, you can alter
the sequence or reread data by using the SETCS macroinstruction.
Except for PARAM statements, each retrieved record is an exact image of the source
statement, which may be from 1 to 128 bytes. Thus, you can read 80-byte images from
punched cards or 1 28-byte images from diskette.

NOTE:
Although PARAM and other job control statements may be handled as part of an
embedded data set, they must still observe the job control statement conventions.
Remember that job control statement in formation cannot extend past character position
71, and that position 72 is used to indicate continuation of a statement.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2.7.1.

2-58

Embedded Data

/* (end-of-data) statements.
Embedded data is delimited by a pair of /$ (start-of-data) and
They must follow the EXEC statement in the control stream or, if used, any PARAM
statements. Note that PARAM statements are considered to be a part of the data set that
follows. For example:

//EXEC
1/ PA RAM
//PARAM

Is
Data

Set
1

1*
7/ PA RAM

Is
Data
Set
2

I.
Is
Data
Set

.

3

I,.

Is

Data
Set
4

2.7.2.

1$

(Embedded/S image)

1

(Embedded /

/

(Real!’

image)

image)

Reading Embedded Data

If you are reading one record at a time from this embedded data file, the first GETCS
macroinstruction executed retrieves the first PARAM statement of data set 1, the second
retrieves the second PARAM statement, the third retrieves the /$ statement, the fourth
retrieves the first data card, etc.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2—59

Following the successful execution of a GETCS macroinstruction, program control is
returned to the issuing program at the point immediately following the GETCS
macroinstruction. Registers 0 and 1 will contain:
RO

—

—

—

—

Ri

—

The binary count of records retrieved.
016

if a

/*

that terminates a data set is the first image in the input area.

16 when all embedded data images have been read.
OOFFFFFF
80000nnn if an error occurred while processing GETCS. (nnn is the error
code; refer to the system messages manual, UP-8076 (current version), for a
list of possible error codes).
The reread pointer (2.7.4). When passed to the SETCS macroinstruction
(2.7.5), it allows you to reread embedded data at this pointer.

If two or more records are requested by a single GETCS macroinstruction, the first
occurrence of a real /* image terminates the control stream reader function. The /* is not
returned until the next GETCS macroinstruction call, at which time register 0 is set to zero
and register 1 contains the reread pointer. On subsequent GETCS macroinstruction calls,
the /* image is always returned; however, control is not returned to the error address
specified because it is not an error.
Because control streams may themselves be embedded data, the GETCS macroinstruction
indicates the end of a data set by signaling which end-of-data (7*) image actually
terminates the data set. This is referred to as a real 7* image as opposed to an embedded
/*
image. An embedded /* image is treated like any other image.

2.7.3.

Get File from Control Stream (GETCS)

Function:
The GETCS macroinstruction retrieves embedded data images and control statements
that were entered in the system through the job control stream. You can retrieve one
or more data images at a time from your embedded data file. The images may be from
1 to 1 28 bytes in length and may be obtained from more than one set of embedded
data belonging to the same job step. Except for PARAM statements, each retrieved
record is an exact image of the source statement. PARAM statements appear
according to standard JCL conventions.
Images are read sequentially from the start of the entire data file. You can alter the
sequence or reread data by using the SETCS macroinstruction.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-60

Format:
AOPERATIONL

LABEL
[symbol]

GETCS

OPERAND

jinput-area1r
1(1)
1

L

number-of-records
(0)

i

ror-addrfl Fi
JJL
L 1(r)

pfer

Positional Parameter 1:
input-area
Specifies the symbolic address of an input area in main storage that is to receive
the record or records. When more than one record is requested at a time, as
each record is retrieved from the control stream, it is stored in contiguous byte
locations beginning with this address. This area must be large enough to contain
the retrieved records. The record image size is specified in positional parameter
4.
(1)

Indicates that register 1 has been preloaded with the address of the main storage
input area.
Positional Parameter 2:
number-of- records

Specifies the number of records requested.
(0)

Indicates that register 0 has been preloaded with the number of records
requested.
If omitted, one record is assumed.
Positional Parameter 3:
error-addr

Specifies the symbolic address of an error routine to be executed if an error
occurs.
(r)

Indicates that register r (other than 0 or 1) has been preloaded with the address
of the error routine.
If omitted, the calling task is abnormally terminated if an error occurs.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-61

Positional Parameter 4:
II

Specifies the size of the data images to be retrieved. To retrieve the entire
record, make sure this value equals the data stream record size.
If images smaller than n were originally written, the returned image will be leftjustified and the remainder of the input area filled to the right with spaces. If
images larger than n were originally written, only the number of bytes specified
in this parameter will be returned and the remaining bytes in the data stream
record will be ignored.
If omitted, 80-byte images are retrieved. If smaller images were originally written, the
returned image will be left-justified and space-filled to the right. If larger images were
originally written, only the first 80 bytes will be returned.

2.7.4.

Rereading Embedded Data

Following execution of a GETCS macroinstruction, register 1 contains a full-word reread
pointer consisting of the data set number, record displacement, and block number for the
first record of the data just retrieved. If you intend to reread data, store this pointer in
main storage and use the address of the pointer as parameter 1 of a SETCS
macroinstruction. A succeeding GETCS macroinstruction will read the same data into your
embedded data input area.
The pointer is advanced for every GETCS issued. If one image is requested, the pointer will
point to the location in the data file of the record just returned. If more than one image is
requested (parameter 2 of the GETCS macroinstruction), the pointer will point to the
location in the data file of the first record of the group of records just returned. For
example, if an execution of a GETCS macroinstruction has just returned five images, the
reread pointer would point to the first image in the data file, not the fifth.

2.7.5.

Reset Control Stream Reader (SETCS)

Eu nction:
The SETCS macroinstruction alters the sequence in which a subsequent GETCS
macroinstruction retrieves embedded data images from the job control stream. To do
this, you may back up the GETCS pointer, skip backward or forward to the start of any
embedded data set, or resume sequential reading of the data file at the beginning of
the next data set.
Format:
LABEL
[symbol]

1OPERATIONL
SETCS

OPERAND
pointer
data-set-no
(1)
NEXT

rIR1r,Je1r0r-addr
L 1FsJJ L L(r)

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

2-62

Positional Parameter 1:
pointer

Specifies the symbolic address of a full word embedded data file pointer provided
by a previous GETCS macroinstruction.
Upon successful completion of a GETCS macroinstruction, control is returned to
the program at the point immediately following the GETCS macroinstruction, and
register 1 contains a pointer to the last set of data images read from the
embedded data file in the run library. When passed to the SETCS
macroinstruction, it allows embedded data to be reread starting at the pointer.
Note that the pointer points to the first data image.
data-set -no

The number of the embedded data set from which subsequent GETCS
macroinstructions are to retrieve data images. Data sets are numbered
sequentially starting with 1.
(1)

Indicates that register 1 has been preloaded with either the 4-byte GETCS
pointer itself or with a data set number.
NEXT

Indicates that subsequent GETCS macroinstructions are to retrieve data images
starting at the beginning of the next data set.
Positional Parameter 2:
R

Specifies that the entry in positional parameter 1 is the address of the reread
pointer provided by a previous GETCS macroinstruction.
S

Specifies that the entry in positional parameter 1 is a data set number.
If omitted, the parameter S is assumed.
Positional Parameter 3:
er ror-addr

Specifies the symbolic address of an error routine to be executed if an error
occurs.
(r)

Indicates that register r (other than 0 or 1) has been preloaded with the address
of the error routine.
If omitted, the calling task is abnormally terminated if an error occurs.

UP-8832

2.7.6.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2-63

Minimizing Disk Accesses

The job control stream embedded data reader operates as a transient within the supervisor
and is called by the GETCS macroinstruction. The transient is not replaced in main storage
unless absolutely necessary. It can recognize whether or not the same user is recalling it.
If so, there is no need to reread the embedded data file from disk unless the final record of
the data file block was returned for the previous call. This reduces disk accesses while
reading the embedded data.

C

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

3-1

3. Disk and Diskette
Space Management

3.1.

GENERAL

Space management comprises a set of routines that provide an efficient and completely
automatic disk and diskette space accounting capability. Job control, by using these
routines, can:
•

allocate space to a new disk (format label) or diskette (format or data set label) file
with the EXT job control statement;

I

extend a disk or diskette format label file with the EXT job control statement;

•

scratch a disk or diskette file with the SCR statement; and

•

rename a disk or diskette (format label only) file using the REN statement.

More information on these capabilities can be found in the current version of the job
control user guide, UP-8065.
In addition to these functions, space management provides you with the OBTAIN
macroinstruction for the retrieval of volume and file information from a disk or diskette
volume. For disk and format label diskette volumes, this information is contained in the
volume table of contents (VTOC), a permanently allocated, unmovable file that exists on
every volume. The VTOC is addressed by the standard volume label and is created by the
volume initialization program. The VTOC file comprises a control block, or set of control
blocks, for each file on the volume and for all unused space on the volume. Refer to the
consolidated data management concepts and facilities, UP-8825 (current version) for the
formats and description of the VTOC and disk/diskette format file labels.
For data set label diskette volumes, volume and file information is contained in the index
track.

3-2

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

3.2. ACCESS DISK/DISKETTE FORMAT LABEL FILE VTOC USER BLOCK (OBTAIN)
Fu nction:
The OBTAIN macroinstruction allows you to access any user block in the VTOC. You
must first construct the parameter list which specifies the file, the particular area of
the VTOC that is of interest to you, and the address of a buffer in main storage where
you want the retrieval data stored.
Format:
LOPERATIONz

LABEL

OPERAND

OBTAIN

[symbol]

(i)

[

,

JL

1(r)

JJL 1

j.

FCBCORE]

Positional Parameter 1:
pa ram-I

St

Specifies the symbolic address of a parameter list containing the following:
Bytes 0-7
An 8-byte file name (as listed on the LED job control card).
Byte 8
Function code of the requested service for the disk pack containing the
volume sequence number specified by positional parameter 3:
Code

Interpretation

00
01
02
03
04
05
06
80
81
82
83
84
85
86
87

VOL1 address in form Occchhrr
Format 1 address in form Occchhrr
Format 2 address in form Occchhrr
Format 3 address in form Occchhrr
Format 4 address in form Occchhrr
Format 5 address in form Occchhrr
Format 6 address in form Occchhrr
Contents of VOL1 label
Contents of format 1 label
Contents of format 2 label
Contents of format 3 label
Contents of format 4 label
Contents of format 5 label
Contents of format 6 label
Contents of format 1—6 label record at the disk address
that is in the first word of the buffer in the form Occchhrr

NOTE:
Addresses in the form Occchhrr are in discontinuous binary, where ccc is
the cylinder number, hh is the head number, and rr is the record number.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

3-3

Bytes 9—11
Buffer address of the storage area into which the addresses or label
contents requested through byte 8 are loaded. For codes 00 through 06,
the first word of the buffer contains the disk address of the label record.
For code 87, you must store the disk address (in the form Occchhrr) of
the label desired in bytes 0 through 3 of this buffer area.
Bytes 12-15
Symbolic address of the FCB in main storage. This field is required only
if positional parameter 4 is specified.
(1)

Indicates that register 1 has been preloaded with the address of the parameter
list.
Positional Parameter 2:
error

-

add

Specifies the symbolic address to which control is transferred if an error is
encountered.
(r)

Indicates that a register (other than 0 or 1) has been preloaded with the error
address.
If omitted, the calling task will be abnormally terminated if an error occurs.
Positional Parameter 3:
vol -seq-no

Specifies the volume number of a multivolume file from which you retrieve the
VTOC information.
If omitted, a value of 1 is assumed.
Positional Parameter 4:
FCBCORE

Specifies that the FCB is in main storage. The address of the FCB is contained
within bytes 1 2—1 5 of the parameter list whose address is specified by positional
parameter 1.
If omitted, space management reads the FCB from disk, using the 8-byte file name
contained in the parameter list.
Exa mples:
1

10

16

OBTAIN

(1),(4),2

OBTAIN

RECOVER1

ERRRTN

3-4

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

3.3. OBTAIN DISKETTE DATA SET LABEL INFORMATION (OBTAIN)
Function:
The OBTAIN macro instruction retrieves the volume label or any file label on the index
track. After ensuring that the request is valid, the obtain routine locates the requested
label and returns it in a buffer area in main storage. You must construct a parameter
list which specifies the type of label requested and gives the address of your buffer.
Format:
AOPERATIONis

LABEL

OPERAND

OBTAIN

[symbol]

IL
[

L(r)

JJ L Li

FCBCOREJ

Positional Parameter 1:
param- list

Specifies the symbolic address of a parameter list containing the following:
Bytes 0-7
An 8-byte file name (as listed on the LFD job control card).
Byte 8
Function code specifying the type of label requested.
Code

Interpretation

80
81

Contents of index track label 7
Contents of index track label for the file name specified in
bytes 0—7

Bytes 9—1 1
Buffer address of the storage area into which the label contents are to
be loaded. This buffer must be at least 1 28 bytes.
Bytes 12—15
Symbolic address of the FCB in main storage. This field is required only
if positional parameter 4 is specified.
(1)

Indicates that register 1 has been preloaded with the address of the parameter
list.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

3-5

Positional Parameter 2:
e r ror-addr

Specifies the symbolic address to which control is transferred if an error is
encountered.
(r)

Indicates that a register (other than 0 or 1) has been preloaded with the error
address.
If omitted, the calling task will be abnormally terminated if an error occurs.
Positional Parameter 3:
vol

-

seq -no

Specifies the volume number of a multivolume file.
If omitted, a value of 1 is assumed.
Positional Parameter 4:
FCBCORE

Specifies that the FCB is in main storage. The address of the FCB is contained
within bytes 12—15 of the parameter list whose address is specified by positional
parameter 1.
If omitted, space management reads the FCB from disk, using the 8-byte file name
contained in the parameter list.

3.4. SPACE MANAGEMENT ERROR CODES
Errors that occur during processing of the OBTAIN macroinstruction cause a transient routine
to be called into main storage. This error transient overlay routine places an appropriate error
code into register 0, depending upon the typeof error. lftheerror is notcatastrophic(onethat
necessitates termination of your program), control is then switched to your error-handling
routine (through the error-addr parameter of your macroinstructions). If you do not include an
error handling routine in your program, your task is terminated and control is returned to the
supervisor.
The system messages programmer reference, UP-8076 (current version) contains a list of
space management error codes and their interpretation.

C’

Ci

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4.

4.1.

4-1
Update A

System Access Technique
Macroinstructions

GENERAL

OS/3 includes several data management packages that allow you to process a wide
variety of file types in several different ways. System access technique (SAT) is a
specialized block level device handler that provides great efficiency in handling disk and
tape files.
This section provides you with a brief functional description of SAT operation techniques,
and an explanation of the interface that is available to modify the SAT operation or to
construct your own handler modules.
Whenever disk file is used in the following discussion, it refers to both disk and format
label diskette files. A format label diskette file is treated exactly the same as any other disk
file.
SAT techniques and macroinstructions that define and control disk files are described in
4.2; SAT techniques and macroinstructions that define and control tape files are described
in 4.5.

4.2.

DISK SAT FILE ORGANIZATION AND ADDRESSING METHODS

SAT files may be segmented into logical parts called partitions, with each partition having
distinct physical and logical characteristics. Each partition is defined by a PCA
macroinstruction, which generates a partition control appendage to the DTF file table. Up
to seven partitions may be defined within a single file.

4.2.1.

PCA Table Entries Used in Addressing

The addressing of physical blocks being accessed from a partition is controlled by two
entries in the partition control appendage (PCA) table in main storage. A PCA table (Figure
4—i) is created for each partition processed and is used as a reference by the program.
The two entries in the PCA table that affect addressing are:
•

Current ID

•

End of data ID

The current ID is the starting address of the logical partition or the address of the current
block being processed.
The end of data ID is the last logical block of the partition.

4-2

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

When you open your file with the OPEN macroinstruction, the current ID and end of data
ID for each partition in the fife referenced are initialized to the start and end of that
partition. When sequential processing (SEQ keyword parameter) is performed, successful
completion of the GET and PUT macroinstructions results in the current ID being
incremented to the next physical block of the partition. This incrementation, which occurs
after the wait, continues until the end of data ID is encountered; this indicates that all
blocks in a fi!e have been processed.
Provisions are also made to allow you to access blocks in other than sequential method.
The current ID is the same address as the label of your PCA (partition). This is a 4-byte
field containing a right-justified hexadecimal number representing the block to be
referenced relative to the first block of the partition.
When first initialized, this field contains a 1 corresponding to the first block of the
partition. If you wish to access a particular individual block, you must load the relative
block number into the PCA address; this causes the current ID to reflect the block you
want to access.
BYTE

0

current ID

4

max relative block

logical blocks/track

8

EOD ID

12

PA ID

16

I/O count

IOAREA/address

sectors/block

reserved

20

block size

24

lace factor/key length

unit of store

DTF address

28

32

3

2

0

EOD address

PCA flags
PCA FLAGS
Bit

0
2
3

Format write
Interlace
SEQ = YES
Write verify
Figure 4—1

Bit
4

Verify required/initial allocation

5

No extension permitted

6
7

Interlace adjust/keyed data
LBLK specified

Partition Control Appendage (PCA) Table Format

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-3

When searching by key (READE and READH macroinstructions), you must know the
relative address of at least one block on the track you want to search. Once again, when
you open the file, the current ID and end of data ID of the partition are initialized.
However, you must initialize the current ID to the relative block address of a block on the
track you want to search. Next, you place the key for which you want a match (or match
and higher) into the first key length bytes of the I/O buffer area. When you issue the
READE or READH macroinstruction, a search of the track begins. A successful search
results in the current ID field being loaded with the address of the block retrieved by the
match. If the SEQ keyword parameter was specified in the PCA macroinstruction, the
address contained in the current ID field will be the block just read plus 1.
When using the SEEK macroinstruction, there is no updating of the PCA table entries. In
this case, after the file is opened, place the relative block number of any block on the track
you want to access into the current ID field of the PCA.
4.2.2.

Block Addressing by Key

Blocks are addressed either by key or relative ID. You create a partition using keyed data
blocks (Figure 4—2) by specifying the KEYLEN keyword parameter of the PCA declarative
macroinstruction. The key is placed in the first part of the I/O buffer area and is leftjustified; when the PUT macroinstruction is issued, the block is then written from the I/O
area and to disk by PIOCS. To read data blocks by key, place the key ID into the first key
length area of I/O buffer area. The instruction to read allows you two options. First, you
can access a specific block by using the READE macroinstruction, which searches for a
matching (equal) key; this block is then read into the I/O area for you to process. You can
use the READH macroinstruction where the key is placed in the first part of the I/O buffer
area. As the block with the matching key or higher is located, that block is read into the
I/O buffer area.
4.2.3.

Block Addressing by Relative Block Number

When you address by relative block number, the current ID field of the PCA will contain
the relative block number of the current block being referenced. (The first block of each
partition is relative block 1, the second is 2, etc.) Load the relative block number of the
block you want to access, then issue a GET macroinstruction to read the block or a PUT
macroinstruction to write the block.
WITH KEYS

I

count

I

data

key

D

K
B
Figure 4—2.

Record Formats for Disk Devices (Part 1 of 2)

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-4

WITHOUT KEYS
I---I
data

COUflt

ii

LEGEND:
C
K
D
B

=
=
=
=

Count field length (8 bytes). Count field is used only by data management.
Key field length (3—255 bytes)
Data field length
Block length (K track length and cannot span track boundaries)
Figure 4—2.

4.2.4.

Record Formats for Disk Devices (Part 2 of 2)

Disk Space Control

Space required for new files is allocated and scratched using the standard disk space
management routines. Requests for temporary disk space are handled through job control;
space allocated in this manner is released at the end of job step.
Allocation of disk space to your partitions is on a serial basis; first, the partition 1 space
requirements are filled from the first available tracks of the extents, then the other
partitions are satisfied in sequence.
Specify the initial space allocation to a partition using the SIZE keyword parameter of the
PCA macroinstruction. This is represented as a percentage value of the overall file.
To calculate the SIZE entry, use the following formula:

SIZE

=

BLKSIZE x Percentage
Total

For example, if you have a file requiring three partitions, as follows:
Partition 1
Block size is 1024 bytes. Approximately 40% of the blocks in the file are this size.
Partition 2
Block size is 256 bytes. Approximately 50% of the blocks in the file are this size.
Partition 3
Block size is 768 bytes. Approximately 1 0% of the blocks in the file are this size.
NO TE:
Block size is specified for each partition by the BLKS/ZE keyword parameter in the
PCA macroinstruction.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-5

Divide the result of each BLKSIZE times the percentage value by the total for all the
partitions. If necessary, round the results so that the total for all partitions does not exceed
100 percent. Use this value as the specification for the SIZE keyword parameter in the
PCA macroinstruction for the partition.
Partition No.

BLKSIZE

Percentage

Result

SIZE

1

1024

40

40960

67

2

256

50

12800

21

3

768

10

7680

12

61440

100

Total

If all the blocks in your file are of equal size and each partition will contain the same
number of words, you would simply use the percentage of the overall file with the SIZE
keyword entry. For example, if your file consisted of three partitions, each containing the
same number of blocks of the same size, the entry in the PCA macroinstruction for each
partition of the file would be SIZE33.
Dynamic allocation is given as a unit of store (UOS keyword parameter). The unit of store
is a percentage of secondary allocation and cannot exceed 100 percent. The total of
secondary allocation is given by an EXT job control statement. If you do not use the SIZE
keyword parameter to specify initial space allocation, the initial allocation to the partition
is equal to the percentage specified in the UOS keyword parameter. When the UOS
keyword parameter is not specified, no extension to your file can be made. When you do
not specify either the SIZE or UOS keyword parameter, an amount of disk space equal to 1
percent of your files is allocated to the partition.
Once the file is established and you have specified a UOS, the partition can be extended
by this percentage. This occurs each time your PUT macroinstruction references a block
beyond the current maximum block address for the partition. If the new allocation cannot
satisfy the current PUT macroinstruction demands, an error will be indicated. However,
partitions will not be extended beyond the volume on which the file resides.
4.2.5.

Record Interlace

Record interlace is a technique available to you that reduces the effects of rotational delay
when processing partitioned files, accessed sequentially. The interlace function is optional
and, when specified, is completely controlled by SAT.
During file creation, the interlace function automatically arranges the physical records
(blocks) in the file so that several blocks can be accessed during one disk rotation and, at
the same time, provides the necessary interval between block accesses (time frame). This
time frame is based on a lace factor specified in the LACE keyword parameter when you
define a partition by using the PCA macroinstruction. When the file is opened by the OPEN
macroinstruction, this lace factor is applied to the performance of the particular device
type being used.

4-6

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

The lace factor determines the spacing of sequential blocks on the track; a lace factor of 4
results in the next logical block occurring at a minimum interval of 4 blocks. Calculation of
the lace factor is described in 4.2.5.2.
Figure 4—3 illustrates some of the factors involved in accomplishing interlace:
•

Number of physical blocks on each track

•

I/O time (time required to input or output a block)

•

Sector time (average interval available to each block)

•

Time frame (time between block accesses)
Track

Logical Block Number

:

2

Physical Block Number

I

2

:

;

Sector
Time

I/o
Time
Logical Blocks Read
or Written during First
Disk Revolution

6

hI

I

I

I

2

I

[

Time Frame
Figure 4—3.

4.2.5.1.

Definition of Interlace Variables

Interlace Operation

Figure 4—4 illustrates the advantage of interlace accessing. For example, assume that a file
contains ten 1024-byte blocks per track and the disk subsystem being used has a
rotational speed of 21 .4 ms per revolution. If the blocks were stored sequentially on the
track in contiguous locations, it would require ten revolutions to sequentially access all ten
blocks, or a total of 214 ms (exclusive of head positioning and latency for initial access).
However, using an interlace factor of 4, all ten blocks could be accessed in 81 .32 ms
because the last block would be retrieved before completion of the fourth disk revolution.
This performance can be obtained only if your required time between block accesses is not
more than the actual time frame.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-7

Without Interlace
Physical Block No.

1

2

Logical Block No.

1

2

4

3

5

6

5

6

7

With Interlace
8
8

9

10

1101

1

1

2

3

4

5

6

4

9

2

)

6

7

8

7

5

1O

9

10
8

Revolution
No.

1
2

El

El

El

El

El
Logical Blocks
Read or Written
during Each
Disk Revolution

El

El

6
7
8
9
10

El

El

El
[ii

El

El
El

El
El
El
El
[11
El
Figure 4—4.

Interlace Accessing

Successful interlace operation requires that the I/O orders must be issued within a
specific time frame. The lace factor, therefore, determines how blocks are to be spaced on
the track to ensure that the actual time frame (which includes both user and SAT
overhead) is equal to or greater than your estimate of required time between block
accesses.
A lace factor of 4 means that the blocks will be spaced in sufficient intervals (every fourth
block) to produce an actual time frame that is equal to or greater than the estimated
required time frame.
To calculate the lace factor, use the formula described in 4.2.5.2. Although the formula is
based on the use of a typical disk subsystem, all lace factor calculations must be
performed by using this formula, regardless of the actual disk subsystem being used.
When the file is opened by the OPEN macroinstruction, the specified lace factor will be
applied to the performance of the particular disk subsystem being accessed. If necessary,
SAT will adjust the lace factor to the capacity and speed of the specific device so that a
similar time frame will be maintained for interlaced files processed on all supported disk
subsystems.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4.2.5.2.

4-8

Lace Factor Calculation

The lace factor is calculated in two steps by using the following formula:
1.

BLKSIZE

2.

Required Time Frame
+ 1 (rounded high)
Calculated Sector Time

x .535

=

Calculated Sector Time

=

Lace Factor

For example, if you are using a block size of 1024 bytes, first calculate the sector time in
milliseconds:
1.

x.5352.l4ms

Then, calculate the lace factor using an estimate of the processing time required between
block accesses. For this example, let us use a required time frame estimate of 7.48 ms:
2.

7.48
=

3.49 + 1

4.49 rounded to 4

The result is a lace factor of 4. In the PCA macroinstruction statement for this partition,
enter the keyword parameter LACE=4.
NO TE:
When the time frame exceeds 21.4 ms, it should be divided by 21.4 and the remainder
should be used as the time frame in the foregoing calculation.

4.2.6. Accessing Multiple Blocks
When you are engaged in sequential processing (SEQ=YES specified in PCA
macroinstruction), you can read or write more than one block with each SAT imperative
macroinstruction that is issued. This is done by specifying the number of blocks you wish to
access together by using the LBLK keyword parameter of the PCA macroinstruction. However,
when you use multiple buffer accessing, be certain that your I/O buffer area has enough
contiguous space to contain the blocks. Also, if you are creating the partition by using the
format write option (FORMAT=NO), an additional 8-byte area, used to construct the count field,
must immediately precede the first buffer area. During input operations, fewer than the
requested number of blocks may be read if the end of data ID is encountered. The I/O count field
(bytes 44 and 45) of the DTF (Figure 4—5) will contain the number of buffers not acted upon.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

L

0

BYTE
0

4-9

2

control 1

I/O error count

4

3

transmission byte

control 2

next CAW

8

residual byte count

reserved

12

CCW address

16

PIOCB address

-

20

sense byte 0

seise byte 1

sense byte 2

sense byte 3

24

sense byte 4

sense byte 5

device status

channel status

28
filename

36

module flags

40

t•’

44

48

number of vols

current PCA address

V

I/O count

DTF type code (contl

DTF type code

function code

error flags

IOCS module address

52

56

err msg code

60

command code

64

error exit address

V

current I/O address

current block size

68

VS

reserved

reserved

V

72

sectors/block

current head

current cylinder

76

80

current vol no.

reserved

current sector

reserved

address of extent storage

PCA count

allocation incr

84

share flags

ext table entr!es available

tracks per cylinder

file low head

88

file high head

V

92

PCA ID 1

PCA ID 7

Figure 4—5.

address of PCA 1

address of PCA 7 (if presenti

Define the File (DTF) Table Format (Part 1 of 2)

ERROR FLAGS

MODULE FLAGS
Byte 1

Bit 0
1
2
3
4
5
6
7

Byte 2

Bit 0
2
3
4
5
6
7

Open
Wait required
WAIT=YES
Sector type disk
F2active
No extension made
FCB not found
Multiple I/O permitted

Byte 1

Bit 0
1
2
3
4
5
6
7

Access to last record on track
Invalid ID
Invalid PCA
Hardware error
Reserved
Reserved
Reserved
Reserved

Search wait required
Cylinder alignment
Format entered by extend
Reserved
Library lock required
FCB in core
Single mount
Unassigned space available

Byte 2

Bit 0
1
2
3
4
5
6
7

I/O complete
Unrecoverable error
Unique unit error
No record found
Unit exception
Reserved
End of track
End of cylinder

Figure 4—5.

f
4

4-10
Update B

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Define the File (DTF) Table Format (Part 2 of 2)

Normally, SAT makes a single reference to the physical input/output control system
(PIOCS) for the number of blocks requested. If an end-of-track condition is encountered for
any block other than the last block of the request, SAT makes an additional reference to
PIOCS to access the next track. For interlaced files, SAT makes one reference to PIOCS for
each block requested. If an end-of-block condition is encountered on the last, or only, block
requested, an information bit will be set in the error status field (byte 50, bit 0, of the DTF)
to indicate the last block on that track has been accessed.
The LBLK keyword parameter specifies the number of blocks required, within a range from
1 to 255; however, the total size of the buffer cannot exceed 32,767 bytes.

4.3.

DISK SAT FILE INTERFACE

Interface with SAT files is through declarative and imperative macroinstructions. The
DTFPF declarative macroinstruction is used to define your overall file structure, while a
separate PCA declarative macroinstruction is required to define each of the partitions
which make up a particular file.
The imperative macroinstructions allow you to control file activity; the set of imperative
macroinstructions varies slightly, depending upon the type of accessing you specify. The
following subsections describe these interfaces in detail.

43.1.

Define a New File (DTFPF)

When organizing your partitioned file, you must assign a unique name (filename) to the
file and describe certain operating characteristics as well as physical characteristics of
your file. This is accomplished by the define the file partitioned file (DTFPF)
macroinstruction which creates a table in main storage (Figure 4—5) that can be referenced
by the system.

C

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4—i 1

This is a declarative macroinstruction and must not appear in a sequence of executable
code.

Format:
LABEL
filename

AOPERATIONA
DTFPF

OPERAND
PCA1=pa r t it ion-name

PCA7=pa r titian name
-

TACCESS

EXC

L

SRD

[
[
[
[

,ALINE=YES]
ERROR=symbo I]
,EXTENTS=n]

FCB=YES I
[ ,LIBUP=YES]
[ ,WAIT=YES]
,

The DTFPF macroinstruction provides up to six operating/physical characteristic
specifications and allows you to name from 1 to 7 file partitions. In its most abbreviated
form, the DTFPF macroinstruction contains only the required partition names (one for each
PCA macroinstruction) supplied by using the PCA1 through PCA7 keyword parameters. For
file operation, these keywords must be specified in sequence with no intervening
keywords missing. The remaining six keyword parameters, when not specifically listed in
your DTFPF macroinstruction, assume a predetermined value or condition (default). These
keyword parameter defaults are as follows:
Keyword

Default

ALINE

PCAs start on track boundaries.

ERROR

Program will terminate when a major file error occurs.

EXTENTS

No extent table will be generated with the DTFPF macroinstruction.

FCB

The file control block (FCB), which controls file I/O, is placed into the
transient area of main storage during the open operations.

LIBUP or
ACCESS

The file being accessed cannot be written into. This is a read-only lock
for the file.

WAIT

You must issue a WAITE macroinstruction after each I/O operation
(GET, PUT, READE, or READH).

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-12

The default values and characteristics applied to your file partition represent the most
common usage. However, you have the option of specifying your own parameters for these
keywords. This enables tailoring the file to suit your own particular needs. For example,
you may want to use your own error routine to handle file errors. The following options
are available:
a

When creating a file, you can have your PCAs start and end on cylinder boundaries by
specifying ALINE=YES in your DTFPF macroinstruction.

a

When you want the program to branch to your own error routine when a file error
occurs, provide the address (symbol) of the error routine by specifying
ERROR=symbolic address.

a

An extent table can be generated for you if you specify the E)(TENTS keyword
parameter. When your DTFPF macroinstruction references one of the standard system
library files ($Y$LOD, $Y$SRC, $Y$MAC, $Y$OBJ, or $Y$JCS), you must use the
EXTENTS keyword parameter to specify the number of extent entries you want to be
allocated. The number of extents required is calculated by added the number of
extents allocated (to the file) to the number of partitions in the file.
When standard system libraries are being accessed, 19 extents are recommended to
be specified as EXTENTSI 9.

a

File control blocks (FCB5) are used to make information available about a file or
partition to the system. Normally, the FCB is placed in the transient area when the
OPEN macroinstruction is issued. However, you may place an FCB in the I/O area
specified in the PCA macroinstruction for the first or only partition of the file. This
area address is specified by the IOAREA1 keyword parameter of the PCA
ma croinstruction.

a

There are several ways to request a specific type of filelock. If you use LIBUPYES,
when the file is opened, it is reserved for exclusive use of the job step until it is
closed. No access by any other task will be permitted.
You can request the same type of filelock using the ACCESSEXC keyword parameter
entry instead of LIBUP=YES. The ACCESS parameter provides an expanded filelock
capability with more options available.

a

Normally, you must issue a WAITE macroinstruction after each I/O function to assure
completion of the input or output operation and to set particular status bytes in the
DTFPF reference table. However, you can have SAT initiate this waiting period by
specifying WAIT=YES. When specifying the WAIT keyword parameter, you don’t have
to use the WAITF macroinstruction.

4.3.1.1.

Filelocks

The use of filelocks enables you to restrict access to your files. A filelock is applied when a
file is opened and remains in effect until it is closed. You can choose the specific type of
restriction you want for a file during the execution of your job step. For example, you may
want exclusive use of the file, or you may want to permit other tasks to read but not write.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-13

The files that may be locked and the type of filelock processing performed are determined
by a combination of system generation, job control, and SAT options. The FILELOCK
parameter at system generation (refer to the system installation user guide, UP-8839
(current version)) specifies the type of filelocks available and the types of files affected. The
LIBUP or ACCESS parameter in your DTFPF macroinstruction specifies the type of lock you
want to be applied to that file. The LBL job control statement assigns a lock ID to your user
file (refer to the job control user guide, UP-8065 (current version)), and the ACCESS
parameter in the DD job control statement at run time adds or changes the ACCESS
parameter in the DTFPF.
For SAT disk files, if the LIBUP or ACCESS DTF keyword parameters are not used, the file
is locked as read only. Therefore, any attempt to output to the file results in a DM14 error
message (invalid imperative macro/macro sequence issued). To avoid this situation and to
prevent reassembling the DTF, you can place a //DD ACCESSEXC job control statement
anywhere between the DVC and LFD statements for the file in question. This statement, at
open time, causes the file to be marked as exclusively dedicated to the requesting DTF and
thereby removes any restrictions as to the type of operation you can perform while
preventing concurrent use of the file by other jobs.
4.3.1 .2.

Shared Filelock Capability

The ACCESS parameter provides a greater filelock capability than the LIBUP parameter.
They should not be used together. If both appear in the same DTFPF, the ACCESS
parameter supersedes LIBUP. The ACCESS options can only be used if FILELOCK=SHARE
was specified at system generation. The filelock options available with ACCESS are:
ACCESS=EXC
Requests exclusive use of the file. You may read, update, and extend the file. No
access is permitted by any other task. This type of filelock is the same as that
requested by the LIBUP=YES parameter entry.
ACCESS=EXCR
Requests exclusive-read use of the file. You may read, update, and extend the file.
Other tasks may also read the file, but may not write.
ACCESS=SR DO
Requests shared-read-only access to the file. You intend only to read the file. Other
tasks may also read the file. No writing is permitted. This type of filelock is the same
as the default of LIBUP.
ACCESS=SRD
Requests shared-read access to the file. You intend to read the file. Other tasks may
read, update, or extend the file.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-14

4.3.2. Defining a Partition (PCA)
Once your file is defined and each file partition is listed by using the PCA1 through PCA7
keyword parameters of the DTFPF macroinstruction, the characteristics of each partition
appendage must be described. This is done by using the partition control appendage (PCA)
macroi nstruct ion.
This is a declarative macroinstruction and must not appear in a sequence of executable
code.
Format:
LABEL
partitionname

LOPERATIONL
PCA

OPERAND
BLKSIZE=n
IOAREA1=symbol

[
[
[

EODADDR=symbo I]
FORMAT=NO]
,KEYLEN=n]

[.LACE=n]
[ LBLK=nJ
[,SEQ=YES]
[ SI Z E=n I
[,UOS=nJ
[,VERIFY=YES]

The partition name for a particular PCA macroinstruction is the same as that assigned by
the PCAn keyword parameter in the DTFPF macroinstruction. The keywords allow you to
specify up to 10 operating and physical characteristics for each partition; these
characteristics are placed in a PCA table in main storage together with a current ID and
end of data ID. In its most abbreviated form, it is required only that you specify the size, in
bytes, of the blocks in the partition (BLKSIZE=n) and the address of an input/output area
where the blocks are going to be processed (IOAREAlsymbol). The size of the I/O area is
the same as the BLKSIZE specification. The remaining keywords, when not specifically
listed, assume their default conditions as follows:
Keyword

Default

EODADDR

When the GET macroinstruction accesses the block with the relative
block number equal to the end of data ID for that partition, SAT
assumes that there is no end of data routine for this partition and
indicates that an invalid ID has been requested.

FORMAT

Space allocated to the partition on 8430 and 8433 disk subsystems is
preformatted. This is used when writing new files in which each block
is written in format (count field followed by either a data field or a key
field and data field).

KEYLEN

Assumes blocks will not be referenced by key.

()

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-15

Keyword

Default

LACE

Assumes that no interlace is to be applied. LACE and FORMAT keyword
parameters are mutually exclusive.

LBLK

One block (the size as specified in the BLKSIZE keyword parameter)
comprises one logical block (LBLK=1).

SEQ

The file is not treated as a sequential file and you must provide the 4byte current ID field at the address of the PCA being referenced for
each I/O request (WRITE ID and READ ID macroinstructions).

SIZE

The new file partition being defined requires one percent of the total
file allocation (SIZE1).

UOS

The unit of store (secondary allocation of disk space) has a value of 1.

VERIFY

No verification (parity check) of block writing is performed.

The default values of the PCA macroinstruction represent the most common usage.
However, you have the option of specifying your own parameters for these keywords.
Certain keywords are interrelated; the following are some examples:
•

Some of these are mutually exclusive, such as the FORMAT and LACE keyword
parameters, because you cannot use format write (WRITE ID) and interlace
simultaneously.

•

Some are required together, such as the SEQ and EODADDR keyword parameters.

•

The LACE keyword parameter must be specified for interlace files. The lace factor is
adjusted by SAT for all disk subsystems.

•

The SIZE keyword parameter is applicable only to files being created.

•

The BLKSIZE, IOAREA1, and the LBLK keyword parameters are also interrelated.

User-supplied options to the PCA macroinstruction keywords are as follows:
•

When specifying blocksize (BLKSIZE keyword parameter), also specify the size of the
I/O area. When using sectorized disk subsystems, specify this value in multiples of
256 because this is the size of the fixed sectors. The multiple buffer keyword
parameter (LBLK) specifies the number of blocks that can fit within this I/O area.

•

If specifying sequential file processing (SEQYES), inform the program at which point
file processing should terminate. This is done by specifying the end of data
(EODADDR) keyword parameter address. When the GET macroinstruction accesses
the block with the relative block number equal to the end of data ID for that partition,
SAT transfers control to the address specified by the EODADDR keyword parameter.

a

4-16
Update A

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

If loading your file on a device where the space allocated is not preformatted
(FORMAT=NO), a format write command is issued by SAT for each PUT
macroinstruction that references a relative block number equal to the end-of-data
address of the partition being accessed. A data write command is issued by SAT for
each PUT macroinstruction that references relative block numbers less than the
current end of data address.
This means that data written in the area outside the existing file partition area is
written as a new file, while those within the existing file partition are written as
update records.

a

The address of the input/output area needed to process records is specified by the
IOAREA keyword parameter. The length of this area is specified by the BLKSIZE
keyword parameter.

a

When you have interlaced creation or retrieval of sequential files, specify the LACE
keyword parameter to achieve most efficient processing. This value is computed by
SAT to make all disk subsystems conform to a similar access pattern. A thorough
discussion of interlace operation and computation is provided in 4.2.5.

a

Under certain circumstances, you may desire to retrieve more than one physical block
to construct one logical block. In this case, specify the block size through the BLKSIZE
keyword parameter. The LBLK keyword parameter would then specify the number of
physical blocks within the logical block. For example, assume that your physical
blocks are 256 bytes long and that you must have four of these to make up your
logical block.
PHYSICAL BLOCK

256

256

256

256

-

LOGICAL BLOCK
The following would be specified:
BLKSIZE=256
LBLK=4
a

When you wish to process a file sequentially, you can specify SEQ=YES. When the
OPEN macroinstruction is issued, the open transient routine sets the current ID field
to relative block 1 of the partition. Each subsequent GET or PUT macroinstruction that
is issued will transfer the next block in sequence to or from main storage. The current
ID is updated after each GET or PUT macroinstruction has been waited.
Random processing of the sequential file can be achieved as well as sequential
processing of random portions of the file by supplying the new value in the current ID
field before any GET or PUT macroinstruction is issued.

(

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-17

•

At the time that you are organizing your file, specify the space required for the
partition in the terms of a percentage of the overall file allocation. For example, if.
your file contained four partitions of equal size, you would specify SIZE25.

•

If you feel that additional space may be needed to expand your file partition, specify
this space in increments called units of store (UOS). A unit of store is a percentage of
secondary allocation.
Each time an attempt is made to write a block with a relative block number larger than the
current maximum for the partition, a unit of store is added to the partition. For example,
suppose that you had a secondary allocation of 10 cylinders and you wished to add 2
cylinders to your partition each time you needed more space. You would specify: U0S20
since 2 cylinders are 20 percent of your secondary allocation.
If the block chosen to be added to the partition exceeds the unit of store, an invalid ID
indication would be returned to the error field in your DTFPF table in main storage.

•

If writing records to disk and you want to be certain that the block written is complete
and accurate, use the VERIFY=YES option. The blocks are check-read for parity. An
additional disk rotation must be allowed for the verification process.

•

If blocks are to be addressed by key, use the KEYLEN parameter to specify the length
(3 to 255 bytes) of the key field in formatted records.

4.3.3.

Processing Partitioned SAT Files

Once you have established your file on disk (that is, you have issued DTFPF and PCA
macroinstructions to describe and name your file), use the imperative macroinstructions to
open, control, and close your file processing. These macroinstructions are universal, but
are normally grouped according to their use as follows:
•

Processing Blocks by Key

•

Processing Blocks by Relative Number

-

OPEN, PUT, WAITF, READE/READH, SEEK, CLOSE
—

OPEN, GET, PUT, WAITF, SEEK, CLOSE

The following subsections give a brief functional description of these imperative
macroinstructions. This description is followed by listing these macroinstructions in 4.4
and includes a detailed description of their parameters and characteristics.
4.3.3.1.

Processing Blocks by Key

Macroinstruction

Function

OPEN

Initiates the open transient routine and identifies the file (as
listed in the DTFPF macroinstruction) to be processed.

PUT

Identifies the file and partition to be accessed. Issues the
write for the indicated block.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-18

Macroinstruction

Function

WAITF

Identifies the file and ensures completion of the current I/O. If
the current I/O was a successful READE or READH, it places
the ID of the block accessed in the current ID field. Updates
the current ID by 1 if the SEQ=YES keyword parameter was
specified.

READE

Initiates the search for a block by key of a particular track. You
must place a relative block number, that is, on the track to be
searched, in the current ID field of the PCA table. You must
also place the key of the block to be accessed in first key
length bytes of the buffer area.

READ H

Same as for READE, except that the search is for a block that
is equal to the key specified or higher than the key.

SEEK

Initiates movement of the disk heads to a particular track or
disk. It is your responsibility to place the relative address of a
block on that track in the current ID field of the PCA table.

CLOSE

Identifies the file. After the file processing has been
completed or when the end of data ID has been detected, it
initiates the transient file close routine.

4.3.3.2.

Processing by Relative Block Number

Macroinstruction

Function

OPEN

Initiates the open transient routine and identifies the file (as
listed in the DTFPF macroinstruction) to be processed.
Initializes the start ID entry in the PCA tables of the file.

GET

Identifies the file and partition to be accessed. Issues the read
for the indicated block.

PUT

Identifies the file and partition to be accessed. Issues the
write for the indicated block.

WAITE

Identifies the file and assures completion of the current I/O.
Updates the current ID by 1 if the SEQ=YES keyword
parameter was specified.

SEEK

Initiates movement of the disk heads to a particular track on
disk. It is your responsibility to place the relative address of a
block on that track in the current ID field of the PCA table.

CLOSE

Identifies the file. After the file processing has been concluded
or when the end of data ID has been detected, it initiates the
transient file close routine.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4.4.

4-19

CONTROLLING YOUR DISK FILE PROCESSING

After you have specified the details of the file and partition you wish to access through the
declarative macroinstructions, the imperative macroinstructions described in the following
subsections actually control your file accessing. The sequence of these macroinstructions
for a particular type of processing is listed in 4.3.3.1 and 4.33.2, together with a brief
description of their function.

4.4.1.

Open a Disk File (OPEN)

Eu nction:
The OPEN macroinstruction opens a file defined by the DTFPF
macroinstructions so that it can be accessed by the logical IOCS.

and

PCA

Eormat:
LABEL
[symbol]

L2SOPERATIONA
OPEN

OPERAND
jf I Iename-1[

k(

filename-n]

1)

Positional Parameter 1
filename-i

Specifies the symbolic address of the DTFPF macroinstruction in the program
corresponding to the file to be opened.
(1)

Indicates that register 1 has been preloaded with the address of the DTFPF
macro instruction.
Positional Parameter n:
f i I ename-n

Successive entries specify the symbolic addresses of the DTFPF
macroinstructions in the program corresponding to the additional files to be
opened.
Use this form (for example, OPEN EILE1, FILE2) when more than one lockable file
is to be accessed by a single task. This opens all the files named and applies the
required read or write locks at the same time.
Multiple open should be used to open more than one file when filelock is
involved to prevent a lockout between two programs contending for the same
file. If any one file on an OPEN macroinstruction cannot be opened because of
lock, then none of the files will be opened. In such a case, if an error address
had been specified in the DTF of the first file that failed, control returns to that
error address. An 88 (lock failure) occurs in the DTF error code (byte 56 of the
DTF file table). If no error address was specified, all files specified by the OPEN
macroinstruction are deactivated pending the closing of those files by the locking
program. This also produces a DM88 (writing for lock) console message.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-20

After the file has been defined by the DTFPF and PCA macroinstructions, you must issue
an OPEN macroinstruction to initialize the file before any other access can be made. Use
the GET macroinstruction to access the first (or next) data block.
The transient routine called by the OPEN macroinstruction allocates disk space to each of
the partition control appendages from the VTOC file extents; these areas are then
preformatted if necessary. If too little disk space has been allocated to a fife to satisfy all
PCA requirements, partitions requiring space may be extended during processing.
4.4.2.

Retrieve Next Logical Block (GET)

Function:
The GET macroinstruction reads a logical block from disk into main storage and
makes it accessible for processing. The address into which the data is read is
specified in the associated PCA macroinstruction by the keyword parameter IOAREA1.
Format:
LABEL

[symbol]

L2OPERATIONL
GET

OPERAND
ffi Iename1jPCA-name
(ø)
(1)

Positional Parameter 1
f I I ename

Specifies the symbolic address of the DTFPF macroinstruction in the program
corresponding to the file being read.
(1)

Indicates that register 1 has been preloaded with the address of the DTFPF
macroinstruction.
Positional Parameter 2:
PCA- name

Specifies the symbolic address of the PCA macroinstruction associated with the
partition to be accessed.
(0)

Indicates that register 0 has been preloaded with the address of the PCA
macro instruction.

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-21

PCA Table Content:
The OPEN macroinstruction initializes the current ID field in the PCA table to the start
ID of the partition. If the SEQ keyword parameter in the PCA macroinstruction is
used, the current ID field will be updated after each GET macroinstruction has been
waited.
If the SEQ keyword is not used, or random access is desired, it is your responsibility
to preload the current ID field with the relative ID of the data block to be read. The
current ID field is located at the address (label) of the PCA being referenced. This is a
4-byte field and contains a right-justified hexadecimal number representing the
number of the block (relative to the first block in the partition) to be read.
When a GET macroinstruction is issued for a SAT file, the contents of registers 14, 13,
and 12 are saved in three consecutive full words whose address is in register 13.
4.4.3.

Output a Logical Block (PUT)

Eu nction:
The PUT macroinstruction writes a logical block from main storage to disk. The main
storage address from which the data is written is specified in the associated PCA
macroinstruction by the keyword parameter IOAREA1.
Format:
LABEL
[symbol]

AOPERATIONz
PUT

OPERAND

if ilenamel,JPCA-name
t 1(0)
1(1)

Positional Parameter 1
f i I ename

Specifies the symbolic address of the DTFPF macroinstruction in the program
corresponding to the file being written.
(1)

Indicates that register 1 has been preloaded with the address of the DTFPF
macroinstruction.
Positional Parameter 2:
PCA name
-

Specifies the symbolic address of the PCA macroinstruction associated with the
partition to be written.
(0)

Indicates that register 0 has been preloaded with the address of the PCA
macroinstruction.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-22

PCA Table Content:
The OPEN macroinstruction initializes the current ID field in the PCA table to the start
ID of the partition. If the SEQ keyword parameter in the PCA declarative
macroinstruction is used, the current ID field will be updated after each PUT
macroinstruction has been waited.
If the SEQ keyword is not used, or random access is desired, it is your responsibility
to pre load the current ID field with the relative ID of the data block to be written. The
current ID field is located at the address (label) of the PCA being referenced. This is a
4-byte field and contains a right-justified hexadecimal number representing the
number of the block (relative to the first block in the partition) to be written.
When a PUT macroinstruction is issued for a SAT file, the contents of registers 14, 13,
and 1 2 are saved in three consecutive full words whose address is in register 13.
4.4.4.

Wait for Block Transfer (WAITF)

Function:
The WAITF macroinstruction ensures that a command initiated by a preceding GET,
PUT, READE, or READH macroinstruction has been completed. When completed, the
error status field contains the error status information pertaining to the I/O request. It
is your responsibility to check these bits, which are in bytes 50 and 51 of the DTF
table.
If the keyword parameter WAIT=YES was not specified in the DTFPF
macroinstruction, the WAITE macroinstruction must be issued after a GET, PUT,
READE, or READH macroinstruction and before another imperative macroinstruction
is issued for that file.
Format:
LABEL
[symbol]

L\OPERATIONA
WA I T F

OPERAND
I ename

1(1)

Positional Parameter 1
f I I ename

Specifies the symbolic address of the DTFPF macroinstruction in the program
corresponding to the file being accessed.
(1)

Indicates that register 1 has been preloaded with the address of the DTFPF
macro instruction.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4.4.5.

4-23
Update A

Read by Key Equal/Read by Key Equal or Higher (READE/READH)

Function:
The READE and READH macroinstructions initiate a search by key for a block having
a key equal to the key specified (READE) or equal to or greater than the key specified
(READH).
Format:

LABEL

LSOPERATIONA

[symbol]

IREADEk
IREADHI

OPERAND

ff11 ename, JPCA-name
1(1)

j 1(0)

Positional Parameter 1:
f I I ename

Specifies the symbolic address of the DTFPF macroinstruction in the progra
m
corresponding to the file being processed.
(1)

Indicates that register 1 has been preloaded with the address of the DTFPF
macro instruction.
Positional Parameter 2:
PCA name
-

Specifies the symbolic address of the PCA macroinstruction associated with the
partition to be accessed.
(0

Indicates that register 0 has been preloaded with the address of the partitio
n to
be accessed.
PCA Table Content:
After a successful search, the current ID entry in the PCA table is updated
to reflect
the relative number of the record retrieved. However, if SEQ’YES has been
specified
in the PCA macroinstruction, the current ID field in the PCA table will be the
relative
block number plus 1.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-24

44.6. Access a Physical Block (SEEK)
Eu nction:
The SEEK macroinstruction initiates movement of the disk read/write head to the
position specified in the current ID field of the PCA. This is a 4-byte field which
contains a right-justified hexadecimal number representing any block number on the
track (relative to the first block in the partition) to which head movement will be
initiated. It is your responsibility to store the desired relative block number in this
field.
Format:
LABEL

AOPERATIONz

[symbol]

SEEK

OPERAND

ft

I len ame
1(1)

J PCA
J 1(0)

-

name

Positional Parameter 1
f i I ename

Specifies the symbolic address of the DTFPF macroinstruction in the program
corresponding to the file being accessed.
(1)

Indicates that register 1 has been preloaded with the address of the DTFPF
macroinstruction.
Positional Parameter 2:
PCA-name

Specifies the symbolic address of the PCA macroinstruction associated with the
partition to be accessed.
(0)

Indicates that register 0 has been preloaded with the address of the PCA
macroinstruction.
4.4.7.

Close a Disk File (CLOSE)

Function:
The CLOSE macroinstruction performs the required termination operations for a file.
Once the CLOSE macroinstruction has been issued for a file, only the OPEN
macroinstruction may reference that file.

()

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-25
Update B

Format

LABEL
[symbol]

L2OPERATIONL2
CLOSE

OPERAND
(f LI ename -1

i

[

I

I e name

-

n

(1)
‘ALL

Positional Parameter 1:
f ii ename -1

Specifies the symbolic address of the DTFPF macroinstruction in the program
corresponding to the file to be closed.
(1)

Indicates that register 1 has been preloaded with the address of the DTFPF
macroinstruction.
‘ALL

Specifies that all files currently open in the job step are to be closed.
Positional Parameter n:
f I I ename-n

Successive entries specify the symbolic addresses of the DTFPF
macroinstructions in the program corresponding to the additional files to be
closed.

4.5.

SAT FOR TAPE FILES

The OS/3 tape system access technique (TSAT) is a generalized input/output control
system that provides a standard interface to PIOCS for magnetic tape subsystems. It
performs the basic functions of a tape data management system and provides block level
I/O for sequential tape files.
Interface with TSAT files is through declarative and imperative macroinstructions. You use
the SAT and TCA declarative macroinstructions to define the characteristics of the file and
the data management technique to be used to process the file. The SAT macroinstruction
creates the DTF table for the file, and the TCA macroinstruction creates the appendage to
the table. These macroinstructions are described in 4.8. You use the OPEN, GET, PUT,
CNTRL, WAITF, and CLOSE imperative macroinstructions to control file processing. These
are described in 4.9.
All files processed by TSAT are written in a forward direction, and can be read forward
and backward. The CNTRL macroinstruction initiates nondata operations on the device and
can be issued whether or not the file is open.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-26

To use TSAT, you must observe tape label conventions (described in 4.6) and tape volume
and file organization conventions (described in 4.7).
If you are processing block numbered tapes, you must also observe the special
conventions applicable to these tapes. Requirements and processing for block numbered
tapes are summarized in 4.10.
4.6.

SYSTEM STANDARD TAPE LABELS

Magnetic tapes may be labeled or unlabeled, and a labeled tape may contain either
standard or nonstandard labels. You indicate this using the FILABL parameter in the TCA
macroinstruction. TSAT assumes that tapes have standard labels. If nonstandard labels
exist on input files, TSAT bypasses them.
All standard tape labels are in blocks of 80 bytes and are always recorded at the same
density as the data. The first three bytes of each label identify the type, and the fourth byte
indicates its position within the group. For example, VOL1 indicates this is the first volume
label for this file.
For block numbered tapes, each label includes a 3-byte block number field as the first
three bytes of the label, making the label 83 bytes long.
There are five tape label groups; three are required and two are optional. The tape label
groups are:
•

Volume label group

VOL

•

File header label group

HDR

•

User header label group (optional)

UHL

•

File trailer label group

EOF or EOV

•

User trailer label group (optional)

UTL

TSAT does not process user header (UHL) or user trailer (UTL) labels. No provision is made
for creating these labels on output files; if they exist on input files, TSAT bypasses them.
TSAT label processing is limited to one volume label (VOL1), two file header labels (HDR1
and HDR2), and two file trailer labels (EOF1 and EOF2 or EDV1 and EOV2). No provision is
made for creating additional labels on output files; if they exist on input files, TSAT
bypasses them.
Tape label formats for block numbered files are shown in Figures 4—17 through 4—21. Tape
label formats for files without block numbers are shown in Figures 4—6 through 4—10 and
are described in the following subsections.

0

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-27

4.6.1, Volume Label Group
A volume label group consists of a single volume label (VOL1). The VOL1 label identifies
the tape reel, and it is used to check that the proper reel is mounted. When a tape is first
used at an installation, its volume serial number (VSN) and other volume information, as
shown in Figure 4—6, are specified by parameter cards supplied to a standard utility
routine that writes the label. The serial number is also written on the exterior of the reel
for visual identification.
If you want logical IOCS to prep the volumes of a standard labeled file, lNlT must be
specified as a parameter of the LED job control statement associated with that file. Logical
IOCS will then prep the volumes from the information supplied on the associated VOL and
LBL job control statements.
When you issue an OPEN macroinstruction to an output tape, its open-and-rewind options
are executed first, and then the tape is checked to see if it is at the load point. If it is at
the load point, the VOL1 label is read (if in a nonprepping mode) and the volume serial
number is checked and saved for use in the file header labels (HDR1 and HDR2). The tape
is then positioned so that the volume labels are not destroyed, and no further volume label
processing is performed.
If the output tape is not at the load point after the open-and-rewind options are performed,
TSAT assumes that the tape is positioned between the two ending tape marks of the
previous file or just prior to the HDR1 label of an existing file. In either case, no volume
label checking or creation is performed.
For an input tape, the OPEN transient first executes the open-and-rewind options and then
checks to see whether the tape is at the load point. If it is, the VOL1 label is read and the
volume serial number is used to check the file serial number in the appropriate file header
or trailer label. The tape is then positioned to the proper file header or trailer label as
specified in the file sequence number field of the associated LBL job control statement,
and no further volume label processing is performed.
If the input tape is not at the load point after the open-and-rewind options are performed,
TSAT assumes that the tape is positioned between the two ending tape marks of a
previously created file or just prior to the HDR1 label of an existing file. In either case, no
further volume label processing is performed.
When any volume label is encountered during the processing of a CLOSE macroinstruction
for an input tape and you have specified READ=BACK in the TCA macroinstruction, the
label is bypassed without processing.
The format of the volume label is shown in Figure 4—6. The fields are described in Table 4—1.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

BYTES

LEGEND:
Generated by TSAT or reserved for system expansion.

Written by TSAT from user-supplied data.

Figure 4—6.

Tape Volume 1 (VOL 1) Label Format for an EBCDIC Volume

4-28

4-29

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Table 4—1.

Field

Tape Volume 1 (VOL 1) Label Format, Field Description for an EBCDIC Volume

Initialized By

Bytes

Code

Description

Label
identifier

Tape prep

0—2

EBCDIC

Contains VOL to indicate
that this is a volume label

Label number

Tape prep

3

EBCDIC

Always 1 for the initial
volume label

Volume serial
number

Tape prep

4—9

EBCDIC

Unique identification number
assigned to this volume by
your installation. TSAT
expects 1- to 6-alphanumeric
characters, the first of which
is alphabetic

Volume
security

TSAT

10

EBCDIC

Reserved for future use by
installations requiring
security at the reel level.
Currently blank

(Reserved)

11—20

EBCDIC

Contains blanks (4016)

(Reserved)

21—30

EBCDIC

Contains blanks (4016)

(Reserved)

31—40

EBCDIC

Contains blanks (4016)

Owner
identification

41—50

EBCDIC

Unique identification of the
owner of the reel: any
combination of alphanumerics

(Reserved)

51—79

EBCDIC

Contains blanks (4016)

NOTE:
For ASCII files, bytes 0—36 of a VOL1 label have the same significance as shown in the preceding
example. Bytes 37—50 indicate the owner identification field. Bytes 51—78 are blank and are
reserved for future standardization. Byte 79 indicates the label standard level, and when set to 1,
indicates formats on this volume meet the American National Standard, X3.27—1969.

4.6.2.

File Header Label Group

The file header label group
file header 2 label (HDR2).

4.6.2.1.

consists of two

labels: the file header 1 label (HDR1) and the

First File Header Label (HDR1)

The first file header label (HDR1), which identifies the file, is written at the beginning of
each file. The HDR1 label is required and has the fixed format shown in Figure 4—7; its
fields are described in Table 4—2. All fields in the HDR1 label may be specified in the job
control stream.
For input files, all fields up to and including the system code in the HDR1 label are
checked against values specified in the LBL job control statement. Only those fields for
which values have been supplied are checked. However, if you specified READBACK in
the TCA macroinstruction, the HDR1 label is bypassed without processing. For multifile
input volumes, you should specify the file sequence number in the LBL job control
statement to ensure proper tape positioning.

4-30

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

For output files, the tape must be positioned properly before the files can be opened. On
file open, the expiration date in the HDR1 label is checked against the current or actual
calendar date to determine if the associated file has expired. If the file has expired, the
tape is positioned so that the old HDR1 label is written over. The new HDR1 label is set up
from values specified by the LBL job control statement and is written on the tape.
BYTES
0

0

IH

D

2

3

R

1

4
8
file identifier

12
16
20
file serial number

.—...

24
28

volume sequence number

file sequence
number

file sequence number

generation number

—
.

32

.

volume sequence
number

.-

generation number

36

version number

version number

40

creation date

.i*I

44
expiration date

48
52

file

,sairity
unused

56
60

system code

64
68

\

72
reserved

I

76

LEGEND:

Generated by TSAT or reserved for system expansion.

El

Written by TSAT from user-supplied data.

Figure 4—7.

First File Header Label (HDR1) Format for an EBCDIC Tape Volume

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Table 4—2.

Field

First File Header Label (HDR1), Field Descr,otion

Description

Bytes

Label identifier

0—2

Contains HDR to indicate a file header label

Label number

3

Always 1

File identifier

4—20

A 1 7byte configuration that uniquely identifies
the file. It may contain embedded blanks and is
left-justified in the field if fewer than 17 bytes
are specified.

File serial number

21—26

The same as the VSN of the VOL1 label for the
first reel of a file or a group of multifile reels

Volume sequence
number

27—30

The position of the current reel with respect
to the first reel on which the file begins.
This number is used with multivolume files only.

File sequence number

31 —34

The position of this file with respect to the
first file in the group

Generation number

35—38

The generation number of the file (0000—9999)

Version number of
generation

39—40

The version number of a particular generation
of a file

Creation date

41 —46

The date on which the file was created, expressed
in the form YYDDD and right-justified. The
leftmost position is blank.

Expiration date

47—52

The date the file may be written over or used
as scratch, in the same form as the creation
date

File security indicator

53

Reserved for file security indicator. Indicates
whether additional qualifications must be met
before a user program may have access to the file.

0

=

No additional qualifications are required.

1

=

Additional qualifications are required.

(Unused)

54—59

Unused field, containing EBCDIC 0’s

System code

60—72

Reserved for system code, the unique identification
of the operating system that produced the file

(Reserved)

73—79

Reserved field, containing blanks (4016).

4-31

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4.6.2.2.

4-32

Second File Header Label (HDR2)

The second file header label (HDR2) acts as an extension of the HDR1 label and is a
required label. Unless the HDR2 label was created by the OS/3 operating system as
indicated in the system code field of the HDR1 label, the HDR2 label is ignored by TSAT.
Figure 4—8 shows the format of the HDR2 label; Table 4—3 describes its fields.
BYTES

0
4
8
12
16
20
24
28
32
36
40
44
48
52
56
60
64
68
72
76
LEGEND:

n

Generated by TSAT or reserved for system expansion.
Written by TSAT from user-supplied data.

Figure 4—8.

Second File Header Label (HDR2) Format for an EBCDIC Tape Volume

4-33

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Table 4—3.

Second File Header Label (HDR2), Field Description

Description

Field

Bytes

Label identifier

0—2

Contains HDR to indicate a file header label

Label number

3

Always 2

Record format character

4

Character
D
F
S
U
V

Block length

5—9

Meaning
Variable-length (ASCII), with length
fields specified in decimal
Fixed-length
Spanned
Undefined
Variable-length (EBCDIC), with length
fields specified in binary

Five EBCDIC characters specifying the maximum
number of characters per block

Record length

10—14

Five EBCDIC characters specifying the record length for
fixed-length records. For any other record format, this
field contains Os.

(Reserved)

15—35

Reserved for future system use

Printer control
character

36

One EBCDIC character indicating which control character
set was used to create the data set.
A=Special (ASA) control character present
D=Dev ice independent control character present
M=l BM control character present
USPERRY UNIVAC control character present

(Reserved)

37—79

Reserved for future system use

NOTE:
For ASCII files, bytes 0—14 of a HDR2 label have the same significance as shown in the preceding
example. Bytes 50 and 51 indicate the buffer offset field which must be included in the block
length. All other fields are recorded as ASCII spaces.

4.6.3.

File Trailer Label Group

The file trailer label group comprises either of two pairs of labels, depending on whether
the reel contains an end-of-file or an end-of-volume condition. In the first condition, the
first label of the pair is the EOF1 label, in a format identical to the HDR1 label; the second
label is the EOF2 label. Its format is identical to the HDR2 label. In the end-of-volume
condition, these labels are the EOV1 and EOV2 labels; again, the formats of these labels
are identical to their counterparts in the file header label group, HDR1 and HDR2.
The contents of the EOF1 and EOV1 labels are identical to the HDR1 label except for the
label identifier, label number, and block count fields. The contents of the EOF2 and EOV2
labels are identical to the HDR2 label except for the label identifier and label number
fields.
When you issue an OPEN macroinstruc-tion to an input tape file, with READ=BACK
specified in the TCA macroinstruction, the OPEN transient checks the fields in an EOF1 or
EOV1 label against the values you have specified in the LBL job control statement. This
processing is similar to that of the HDR1 label.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-34

Figure 4—9 illustrates the format of the EOF1 or EOV1 label; Table 4—4summarizes the contents
of its fields. Figure 4—10 illustrates the format of the EOF2 or EOV2 label; Table 4—5 presents
the contents of its fields.
BYTES

0
4
8
12
16
20
24
28
32
36
40
44
48
52
56
60
64
68
72
76
LEGEND:

Generated by TSAT or reserved for system expansion.
Written by TSAT from user-supplied data.

Figure 4—9.

Tape File EQF1 and EQV1 Label Formats for EBCDIC Tapes

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Table 4—4.

4-35

Tape File EOF1 and EQ Vi Labels, Field Description

Field

Bytes

Label identifier

0—2

Indicates that this is a file trailer label;
contains EOF for an end-of-file label,
or EOV for an end-of-volume label

Label number

3

Always 1

File identifier

4—20

A 17-byte configuration that uniquely identifies
the file. It may contain embedded blanks and is
left-justified in the field if fewer than 17
bytes are specified.

Description

File serial number

21 —26

The same as the VSN of the VOL1 label
for the first reel of a file or a group of
multifile reels

Volume sequence number

27—30

The position of the current reel with respect
to the first reel on which the file begins.
This number is used with multivolume files only.

File sequence number

31 —34

The posit’on ot this file with respect to the
first file in the group

Generation number

35—38

The generation number of the file (0000—9999)

Version number of
generation

39—40

The version number of a particular generation
of a file

Creation date

41 —46

The date on which the file was created, expressed
in the form YYDDD and right-justified. The left
most position is blank.

Expiration date

47—52

The date the file may be written over or used as
scratch, in the same form as the creation date

File security indicator

53

Reserved for file security indicator. Indicates
whether additional qualifications must be met before
a user program may have access to the file.
0

=

No additional qualifications are required.

1

=

Additional qualifications are required.

Block count

54—59

In the first file trailer label, indicates the
number of data blocks: either in this file of
a multifile reel, or on the current reel of a
multivolume file. TSAT checks the block
count for input files or writes the tourit for
output files.

System code

60—72

Reserved for system code, the unique identification
of the operating system that produced the file

(Reserved)

73—79

Reserved field, containing blanks (4016)

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

BYTES

0
4
8
12
16
20
24
28
32
36
40
44
48
52
56
60
64
68
72
76

LEGEND:

Generated by TSAT or reserved for system expansion.

E1

Written by TSAT from user-supplied data.

Figure 4—10.

Tape File EOF2 and EQV2 Label Formats for EBCDIC Tapes

4-36

4-37

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Table 4—5. Tape File EQF2 and EOV2 Labels, Field Description

Description

Field

Bytes

Label identifier

0—2

Indicates that this is a file trailer label; contains
EOF for an end-of-file label, or EOV for
an end-of-volume label

Label number

3

Always 2

Record format character

4

Character
D
F
S
U
V

Block length

5—9

Meaning
Variable-length (ASCII), with length
fields specified in decimal
Fixed-length
Spanned
Undefined
Variabe-length (EBCDIC), with
length fields specified in binary

Five EBCDIC characters specifying the maximum
number of characters per block

Record length

10—14

Five EBCDIC characters specifying the record length
for fixed-length records. For any other record
format, this field contains zeros.

(Reserved)

15—35

Reserved for future system use

Printer control
character

36

One EBCDIC character indicating which control
character set was used to create the data set.
A
D
M
U

(Reserved)

37—79

Special (ASA) control character present
Device independent control character present
= IBM control character present
= SPERRY UNIVAC control character present

=

Reserved for future system use

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4.7.

4-38

TAPE VOLUME AND FILE ORGANIZATION

As was stated earlier, magnetic tape files processed by TSAT must observe certain label
conventions. These were described in 4.6. Magnetic tape files must also observe
conventions as to volume and file organization. The following subsections and figures
describe the organization of files and volumes with respect to standard labeled,
nonstandard labeled, and unlabeled files used with OS/3 tape sequential access method
(SAM). Except where noted otherwise, these conventions also apply to tape files used with
TSAT.
Remember that TSAT assumes only standard labeled files. TSAT bypasses user header
labels, user trailer labels, and nonstandard labels. These labels are included in the
following figures and descriptions only to show their relative location within the various
volume organizations.

4.7.1.

Standard Tape Volume Organization

A standard volume has standard labels, required tape marks, and is capable of being
processed by the logical IOCS. Figures 4—i 1, 4—1 2, and 4—i 3 illustrate the reel
organization for standard volumes with either an end-of-file (EOF) or end-of-volume (EOV)
condition. The logical IOCS assumes that the labels appear in the order shown. A volume
processed by TSAT will end in either an end-of-file or end-of-volume label group (EOF1
and EOF2 or EOV1 and EOV2) followed by two tape marks. The second tape mark signifies
that no valid information follows.
User header (UHL) and user trailer (UTL) labels are optional. Tape SAM permits you to
specify a special label handling routine to process these labels. If you do not specify such
a routine, the optional labels are simply bypassed. However, with TSAT, you cannot specify
your own label handling routine for optional labels. TSAT always bypasses these labels,
and your program is not made aware of them.
On output operations, no provision is made in TSAT for the creation of additional volume
labels, file header labels, or file trailer labels. If these additional labels exist on input files,
TSAT bypasses them.

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

WITH END-OF-Fl LE CONDITION

4-39

WITH END-OF-VOLUME CONDITION

LEGEND:

LI

Contents supplied by user.

Required arid generated by TSAT.

LI

Generated by TSAT; user supplies content for certain fields.
Generated by user at his option. Content is at user’s option except for content of 4-byte label ID fields. User is
limited to eight UHLs and eight UTLs. Bypassed by TSAT.

Figure 4—li.

Reel Organization for EBCDIC Standard Labeled Tape Volumes Containing a Single File

4-40

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

VOL1 label

HDR1 label of file A

HDR2 label of file A
\

tape mark

data blocks
offileA

,
.
-.

i’

—

tape mark

EOF1 label of file A

EOF2 label of file A

tape mark

HDR1 label of file B

HDR2 label of file B

tape mark

,

‘

data blocks
offileB

tape mark

EOF1 label of file B
EOF2 label of file B

tape mark

II!

tape mark

LEGEND:

LI

Content supplied by user.

Required and generated by TSAT.

El

Generated by TSAT; user supplies content for certain fields.

NOTE:
Assume that file B completes on this volume.

Figure 4—12.

Reel Organization for EBCDIC Standard Labeled Tape Volume: Multifile Volume with End-of-File Condition

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

REEL 1

4-41

REEL 2

VOL1 label
HDR1 label of file B
HDR2 label of file B
\

tape mark
,

1’

data blocks
offileB
tape mark

EOF2 label of file B

EOF2 label of file B

tape mark
HDR1 label of file C

HDR2 label of file C

tape mark

I

Ii

data blocks
of file C
tape mark

:

EOV1 label of file C

EOV2 label of file C

tape mark

tape mark

LEGEND:
Content supplied by user.

Required and generated by TSAT.

Generated by TSAT; user supplies content for certain fields.
NOTE:
Assume that file C is not completed on reel 2, but carries over (like file B) onto another volume.
If file C were completed on reel 2, its EOV1 and EOV2 labels mown here would be replaced with
EOF1 and EOF2 labels.

Figure 4—13.

Reel Organization for EBCDIC Standard Labeled Tape Volumes: Multifile Volumes with End-of-Volume
Condition

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4.7.2.

4-42

Nonstandard Tape Volume Organization

A nonstandard volume is any volume that has nonstandard labels and is capable of being
processed by the logical IOCS. Figures 4—14 and 4—15 illustrate the reel organization for
nonstandard volumes.
Nonstandard user header and trailer labels (UHL and UTL) are optional. These may be of
any format, length, or number because they are handled by the user’s label routine. When
processing tapes using tape SAM, the address of the user’s label handling routine to
process nonstandard labels is usually specified, in which case the tape mark following the
UHL may be omitted. It is required only if label checking is to be omitted or a readbackward operation is specified. If nonstandard labels appear on an input file but are not
to be checked when the file is read, the user omits specifying the address of his label
but the tape mark must be present.
handling routine
—

The tape mark following the data blocks is required and is written by logical IOCS, which
also writes two required tape marks after the UTL, if they are present. If the optional UTL
are not present, logical IOCS writes only one additional tape mark after the one following
the data blocks. This second tape mark is always present when this file is the only file or
the last file on the reel. It is overwritten by the next file to be written on a multifile
volu me.
optional user
header labels
tape mark

LEG END:
Contents supplied by user.

Required and generated by TSAT; only two tape marks follow data blocks if UTLs are not
present.
Generated by TSAT unless user specifies TPMARK=NO; required only if label checking is omitted or
user specifies READ=BACK.
Presence, content, format, and number entirely at user’s option. Bypassed by TSAT.

Figure 4—14. Reel Organization for EBCDIC Nonstandard Volume Containing a Single File

(

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-43

optional user
header labels
tape mark

data blocks
offileA

1—
tape mark
optional user
trailer labels
tape mark
optional user
header labels
tape mark

data blocks
of file B

tape mark
optional user
trailer labels
tape mark
tape mark

Iii

LEGEND:

L1

Content supplied by user.

E,
LI

Required and generated by TSAT; only two tape marks follow data blocks of last file on
volume if UTLs are not present.
Generated by TSAT unless user specifies TPMARKNO; required only if label checking is omitted
or user specifies READBACK.

Presence, content, format, and number entirely at user’s option. Bypassed by TSAT.

Always present; written by TSAT

Figure 4—15.

Reel Organization for EBCD/C Nonstandard Muftifile Volume

4.7.3.

4-44

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Unlabeled Tape Volume Organization

An unlabeled volume is any volume that has no labels and is capable of being processed
by the logical IOCS. The user specifies FILABL=NO, or omits this parameter in the TCA
macroinstruction, to indicate an unlabeled volume or file. A tape mark is expected or
written by logical IOCS preceding the data blocks unless the user has specified
TPMARK=NO in the TCA macroinstruction.
Figure 4—16 illustrates the reel organization for unlabeled volumes. The tape mark
following the data blocks is required on both single-file and multifile volumes and is
supplied by TSAT on output operations. A second tape mark is always written by TSAT
following the last or only file on each volume and is overwritten by the next file to be
written on a multifile volume.

tape mark

tape mark

data blocks

L’

tape mark

,

/

data blocks
of file A

tape mark

\\\\\\
tape mark

SINGLE-FILE VOLUME

MULTIFILE VOLUME
LEGEND:

L1

Content supplied by user.
Required and generated by TSAT; two tape marks follow data blocks of last file on volume.

LI

Generated by TSAT unless user specifies TPMARKNO; required only when user specifies
READ=’BACK.

Figure 4—16.

Reel Organization for Unlabeled EBCDIC Volumes

h

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4.8.

4-45
Update A

TAPE SAT FILE INTERFACE

Each file to be
macroinstructions:
•

processed

TSAT

by

must

be

predefined

by

two

declarative

SAT
Defines a TSAT magnetic tape file.

•

TCA
Defines a tape control appendage.

The SAT macroinstruction describes the physical characteristics of the file, and the TCA
macroinstruction describes the logical attributes of the file.

4.8.1.

Define a Magnetic Tape File (SAT)

This is the DTF macroinstruction for TSAT files. The assembler also accepts the name
DTFPF; however, the name SAT is used here to avoid confusion between the DTF
macroinstruction for disk SAT files and tape SAT files.
Function:
The SAT macroinstruction defines a magnetic tape file to be processed by SAT. It
generates a DTF table in main storage containing the file name and operating and
physical characteristics of your file that can be referenced by the system.
This is a declarative macroinstruction and must not appear in a sequence of
executable codes.
Format:

LABEL

filename

z2OPERATIONL

SAT

OPERAND

TCA=TCA-name
[,ERRORz=error-addr]

[
[

FCB=YES]
,WAIT=YES]

Label:
f

I ename

Specifies the name used to identify the file. This is the same as the 8-character
name in the LED job control statement.
Keyword Parameter TCA:
TCA=TCA- name

Specifies the symbolic address of the TCA for the file. This name must be
entered in the label field of the corresponding TCA macroinstruction describing
the tape control appendage.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-46
Update A

Keyword Parameter ERROR:
ERROR=e rr or

-

add r

Specifies the symbolic address of your error routine that receives control if an
error occurs.
If omitted, the job is abnormally terminated if an error occurs.
Keyword Parameter FCB:
FCB=YE S

Specifies that before issuing the OPEN macroinstruction, you have placed the
FCB for this file in the I/O area specified by the IOAREA1 keyword parameter of
the TCA macroinstruction associated with this file, instead of in the transient
area where it is normally placed.
If omitted, the FCB, which controls file I/O, is placed into the transient area of main
storage during file-open operations.
Keyword Parameter WAIT:
WA 1 T=YES

Specifies that TSAT is to issue the required WAITF macroinstruction after each
I/O function (GET, PUT). This initiates a waiting period to assure completion of
the input or output operation and sets certain status bytes in the DTF table.
If omitted, you must issue a WAITE macroinstruction after each I/O operation.

4.8.2.

Define a Tape Control Appendage (TCA)

Function:
The TCA macroinstruction defines the logical attributes of a magnetic tape file to be
processed by TSAT. It generates a tape control appendage to the DTF table for the file.
This is a declarative macroinstruction and must not appear in a sequence of
executable code.
Format:

LABEL

TCA-name

AOPERATIONz

TCA

OPERAND

IOAREA1=area-name
BIKS I ZE=n

[ BKNO=YES]
[ CKPTRECz=YES

r
[

CLRW=JNORWD

1RWD

[,EOFADDRz=endofdataaddr]

(continued)

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

LABEL

LOPERATIONt\

4-47
Update A

OPERAND

r,FILABL=

I

(cant)

NSTD
ND

L

[ LBLK=nJ
[ ,OPRW=NORWD]
,

L READ=J FORWARD

[

kBACK

r REWI ND=JUN LOAD

L

1NORWD

[ ,TPMARK=NO]
[ ,TYPEFLE=OUTPIJT]
Label:
TCA-

name

Specifies the symbolic address of the TCA table generated by this
macroinstruction. This must be the same name specified in the TCA parameter of
the SAT macroinstruction for this file.
Keyword Parameter IQAREA1:
I OAREA1=a rea

-

name

Specifies the symbolic address of an input/output area in main storage where
the blocks are to be processed. The size of this area is specified in the BLKSIZE
keyword parameter.
When processing block numbered tapes (BKNOYES), you must reserve a 4-byte
storage area immediately preceding your input/output area for supervisor
processing of the block number. The 4-byte block number area and the
input/output area must be aligned on a full-word boundary. Do not include these
four bytes as part of the IOAREA1 specification.
Keyword Parameter BLKSIZE:
BLKS I ZE=n

Specifies the size in bytes of the area in main storage named by the IOAREA1
keyword parameter.
When processing block numbered tapes (BKNOYES), you must reserve a 4-byte
storage area immediately preceding your input/output area. Do not include these
four bytes as part of the BLKSIZE specification.
If you are reading input tapes backward (READBACK), your BLKSIZE
specification must accommodate the largest block on tape; otherwise the data at
the beginning of the block may be lost. If the data is truncated on a backward
read of a block numbered file, the block number field will be lost and incorrect
positioning of the tape may result.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-48
Update A

Keyword Parameter BKNO:
BKNO=YES

Specifies that you have reserved a 4-byte storage area, aligned on a full-word
boundary, immediately preceding your input/output area. Do not include these
four bytes as part of either the IOAREA1 specification or the BLKSIZE
specification. Processing of block-numbered tape files is described in 4.10.
Keyword Parameter CKPTREC:
CKPTREC=YES

Specifies that any checkpoint records occurring in an input tape file are to be
bypassed by TSAT. In this case, your BLKSIZE specification in the TCA
macroinstruction must equal or exceed the length of a header or trailer label of
the checkpoint set.
In OS/3 tape files, the first and last blocks of a checkpoint dump begin with the
following:
//ACH KPTA//nnttCsss
where:
nfl
Is the number, in binary, of image records plus control blocks, less 1,
not including the header or trailer labels.
tt

Is the total number, in EBCDIC, of checkpoint records following the
header label, including the trailer label; tt is 00 in a trailer label.
C
Is a constant, coded in EBCDIC as shown.
sss
Is the serial number of the checkpoint, in EBCDIC.
If omitted, any checkpoint records occurring are accepted as data by TSAT and your
program must include the coding to recognize them.
Keyword Parameter CLRW:
CLRW=NORWD

Specifies that a tape is not to be rewound when a file is closed.
CLRW=RWD

Specifies that a tape is to be rewound without interlock when a file is closed.

(

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-49

If omitted, the tape is rewound with interlock when a file is closed, which causes the
tape to be unloaded from the take-up reel.
Keyword Parameter EOFADDR:
EOFADDR=end

-

of

-

data

-

add

Specifies the symbolic address of your end-of-data routine to which TSAT
transfers control when the tape mark following the last block of input data is
sensed. This keyword parameter is required for all input files. The optional
spelling, EDDADDR, of this parameter is also acceptable.
Keyword Parameter FILABL:
F I LAB L=STD

Specifies that a tape contains standard labels.
Fl LABL=NSTD

Specifies that a tape contains nonstandard labels. These labels are not checked
by TSAT. No provision is made in TSAT to create this type of label.
Fl LABL=NO

Specifies that labels are undefined or absent.
Keyword Parameter LBLK:
LB I K=n

Specifies the number of physical blocks (of the length specified in the BLKSIZE
keyword parameter) comprising a logical block. The entry for n specifies the
number of contiguous buffers supplied at the address specified by the IOAREA1
keyword parameter. Use this parameter when you want to act upon more than
one physical block to construct one logical block.
If omitted, one physical block comprises one logical block (LBLK1).
Keyword Parameter OPRW:
OPRW=NORWD

Specifies that a tape is not to be rewound before labels are checked during the
processing of the OPEN macroinstruction. When read-backward processing is
specified, NORWD is assumed. This keyword parameter must not be used if the
REWIND keyword parameter is specified. If both are used, they are mutually
exclusive.
If omitted, the tapes are rewound at open time.
Keyword Parameter READ:
READ=FORWARD

Specifies that an input file is to be read forward.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-50

READ=BACK

Specifies that an input file is to be read backward. If this is specified, you are
limited to a single volume file. Also, your BLKSIZE specification must
accommodate the largest block on tape.
If omitted, read forward is assumed.
Keyword Parameter REWIND:
REWI ND=tlN LOAD

Specifies that a tape is to be rewound to load point at open time, and rewound
with interlock at close time or when an end-of-volume condition is encountered.
REWI ND=NORWD

Specifies that a tape is not to be rewound at open time, and is to be positioned
between the two file marks at close time.
If omitted, the OPRW or CLRW parameters are selected.
Keyword Parameter TPMARK:
TPMARK=NO

Specifies that, for output files with nonstandard labels or no labels, logical IOSC
is not to write the tape mark that normally separates header labels from data. In
this case, it is your responsibility to distinguish between header labels and data.
In a multifile reel environment, this keyword parameter should not be used for
files that are to be processed backward.
Keyword Parameter TYPEFLE:
TYPE F LE=OUTPUT

Specifies that this is an output file.
If omitted, an input file is assumed.

4.9.

CONTROLLING YOUR TAPE FILE PROCESSING

There are six imperative macroinstructions available for controlling your tape file
processing using TSAT:
•

OPEN
Opens a tape file.

•

GET
Gets the next logical block.

UP-8832

•

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-51

PUT
Outputs the next logical block.

•

WAITE
Waits for block transfer.

•

CNTRL
Controls tape unit functions.

•

CLOSE
Closes a tape file.

4.9.1. Open a Tape File (OPEN)
Function:
After the file has been defined by the SAT and TCA declarative macroinstructions, the
OPEN macroinstruction must be issued to initialize the file before any other access
can be made. This macroinstruction validates the DTF and TCA tables and performs
any required tape positioning functions.
Format:
LABEL
[symbol]

OPERATIONL
OPEN

OPERAND
fi lename-i[

filename-n]

1(1)

Positional Parameter 1
filename-i

Specifies the symbolic address of the SAT macroinstruction in the program
corresponding to the file to be opened.
(1)

Indicates that register 1 has been preloaded with the address of the SAT
macro instruction.
Positional Parameter n:
f i I ename-n

Successive entries specify the symbolic addresses of the SAT macroinstructions
in the program corresponding to the additional files to be opened.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4.9.2.

4-52

(

Get Next Logical Block (GET)

Fu nctio n:
The GET macroinstruction reads a logical block from tape into main storage and
makes it accessible for processing. The address into which the data is read is
specified in the associated TCA macroinstruction by the keyword parameter IOAREA1.
Format:
AOPERATIONL

LABEL

[symbol]

GET

OPERAND
ilenamel,ITCA-name

1(1)

Positional Parameter

I 1(e)

1

f i I ename

Specifies the symbolic address of the SAT macroinstruction in the program
corresponding to the file being read.

(1)

Indicates that register 1 has been preloaded with the address of the SAT
macroinstruction.
Positional Parameter 2:
TCA- name

Specifies the symbolic address of the TCA macroinstruction associated with the
partition to be accessed.
(0)

Indicates that register 0 has been preloaded with the address of the TCA
macroinstruction.

When a GET macroinstruction is issued for a SAT file, the contents of registers 1 4, 1 3,
and 12 are saved in three consecutive full words whose address is in register 13.

4.9.3.

Output Next Logical Block (PUT)

Function:
The PUT macroinstruction writes a logical block from main storage to tape. The main
storage address from which the data is written is specified in the associated TCA
macroinstruction by the keyword parameter IOAREA1.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-53

Format:
LABEL
[symbol]

LOPERATIONL
PUT

OPERAND

Jf

II ename1, ITCA-name
1(1)
1(ø)

1

Positional Parameter 1
f i I ename

Specifies the symbolic address of the SAT macroinstruction in the program
corresponding to the file being written.
(1)

Indicates that register 1 has been preloaded with the address of the SAT
macroinstruction.
Positional Parameter 2
TCA-name

Specifies the symbolic address of the TCA macroinstruction associated with the
partition to be written.
(0)

Indicates that register 0 has been preloaded with the address of the TCA
macroinstruction.
When a PUT macroinstruction is issued for a SAT file, the contents of registers 14, 13,
and 1 2 are saved in three consecutive full words whose address is in register 13.
4.9.4. Wait for Block Transfer (WAITF)
Function:
The WAITF macroinstruction ensures that a command initiated by a preceding GET or
PUT macroinstruction has been completed. When completed, the error status field
contains the error status information pertaining to the I/O request. It is your
responsibility to check these bits, which are in bytes 50 and 51 of the DTF table.
If the keyword parameter WAIT=YES was not specified in the SAT macroinstruction,
the WAITF macroinstruction must be issued after a GET or PUT macroinstruction and
before another imperative macroinstruction is issued for that file.
Format:
LABEL
[symbol]

z2OPERATIONtD
WA I T F

OPERAND

J filename
1(1)

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-54

Positional Parameter 1:
f i I ename

Specifies the symbolic address of the SAT macroinstruction in the program
corresponding to the file being accessed.
(1)

Indicates that register 1 has been preloaded with the address of the SAT
macro instruction.
4.9.5. Control Tape Unit Functions (CNTRL)
Function:
This macroinstruction initiates nondata operations on a tape unit. All tape control
functions may be issued whether or not the file is open. Do not issue a WAITF
macroinstruction following a CNTRL macroinstruction.
Format:

LABEL

LOPERATIONL
CNT RI

[symbol]

OPERAND

jf i I ename1, code

ki

J

Positional Parameter 1:
f

I ename

Specifies the symbolic address of the corresponding SAT macroinstruction in the
program.
(1)

Indicates that register 1
macroinstruction.

has been preloaded with the address of the SAT

Positional Parameter 2:
code

Is a mnemonic 3-character code specifying the tape unit function to be performed:
BSF

Backspace to tape mark*

BSR

Backspace to interrecord gap*

ERG

Erase gap (writes blank tape)

FSF

Forward space to tape mark*

FSR

Forward space to interrecord gap*

*Applies only to input files.

UP-8832

4-55

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

REW

Rewind tape

RUN

Rewind tape with interlock (unloads tape)

WTM

Write tape mark

4.9.6. Close a Tape File (CLOSE)
Function:
The CLOSE macroinstruction performs the required termination operations for a file,
for example, construction of the EOF label group. Once the CLOSE macroinstruction
has been issued for a file, only the OPEN macroinstruction may reference that file.
Format;
LABEL

L2SOPERATIONZ

[symbol]

CLOSE

OPERAND

filename-i
j(1)

[

filename n
-

Positional Parameter 1
filename-i

Specifies the symbolic address of the SAT macroinstruction in the program
corresponding to the file to be closed.
(1)

Indicates that register 1 has been preloaded with the address of the SAT
macro instruction.
Positional Parameter n
til ename

-

n

Successive entries specify the symbolic addresses of the SAT macroinstructions in
the program corresponding to the additional files to be closed.

4.10. BLOCK NUMBER PROCESSING
TSAT can process magnetic tapes with or without block numbers. The use of block numbers
reduces the possibility of incorrect tape positioning and, therefore, incorrect tape
processing. This is especially helpful for error recovery on read and write commands and for
restarting at a checkpoint.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-56
Update B

Processing of block numbered tapes for TSAT files is executed by PIOCS. Some of the
general requirements are noted here for convenience.

-*-

•

When the block numbering capability is being used, all blocks on tape except tape
marks will include a 3-byte block number field as the first 3 bytes of the block. This
24-bit block number field is composed of a 4-bit tape mark counter and a 20-bit block
number counter. PIOCS uses both of these counters when reading and writing block
numbered tapes.

•

The first block on tape that is not a tape mark will contain a block count of 1 plus the
number of tape marks preceding it.

•

Block numbers are incremented sequentially by 1. All label, data, and checkpoint blocks
are counted and numbered. Tape marks are counted, but no numberis written.

•

For both EBCDIC and ASCII tapes, the 3-byte block number field is added to a standard
label immediately preceding the label identifier (VOL1, HDR1, etc), making the label 83
bytes long. The 83-byte ASCII label is nonstandard for information interchange. Tape
label formats for block numbered EBCDIC tapes are shown in Figures 4—17 through
4-21.

•

Block number processing will be exactly the same for both EBCDIC and ASCII tape files.

•

Block numbers will be volume dependent and file independent. If a volume contains
more than one file, the block count is continued from the preceding file on the volume
and the blocks are consecutively numbered to the end of the tape.

•

Files on a volume and volumes in a multivolume file must be all numbered or all
unnumbered, not mixed.

•

The 7-track odd parity tapes operating in convert mode may be block numbered if the
block size is a multiple of 3.

The PUB trailer for a block numbered tape file will contain an expected block number. This
number will reflect the next block number anticipated in a forward read and will be
adjusted accordingly for backward reads. When the tape is read in either direction, the
block number read from tape is stored in the PUB trailer and compared with the expected
block number. If there is no discrepancy (and no other errors), control is returned to the
user program. If there is a discrepancy, PIOCS attempts to find the correct block by moving
the tape backward or forward the number of blocks implied by the discrepancy. If the
correct block is found, control is returned to the user. If the correct block cannot be found,
the tape is left positioned where it was on the last attempt and an error message is sent
to the console.

4.10.1.

Facilities Required for Block Number Processing

To process block numbered tape files, three conditions (called preliminary conditions) are
required.
1.

So that the generated supervisor can process both numbered and unnumbered tapes,
you must operate with a supervisor configured to process block numbered tapes.

(

( )

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-57

2.

You must reserve a full-word aligned, 4-byte storage area immediately preceding your
input/output area for supervisor processing of the block number. Do not include these
four bytes as part of either the address or the length specifications (IOAREA and
BLKSIZE keyword parameters of the TCA declarative macroinstruction).

3.

You must indicate to TSAT that you have reserved the 4-byte block number area by
specifying BKNO=YES in the TCA macroinstruction (4.8.2).

If these three preliminary conditions exist, you may then control block number processing
through either job control (JCL) or automatic volume recognition (AVR). This permits you to
leave the 4-byte storage area and the BKNO parameter in your program even though you
may at times be processing unnumbered tapes.
4.10.2. Specifications for Block Number Processing
Several factors determine when and how block number processing is employed. If a tape is
not at load point when the file is opened, the file will be handled according to the
specifications existing when the tape was opened at load point. Therefore, you cannot have
both numbered and unnumbered files on the same volume.
If a tape is at load point when it is opened, processing will proceed as described in the
following subsections.
The various methods of tape file processing can be divided into two categories: processing
with tape initialization, and processing without tape initialization. These will be referred to
simply as initialized or noninitialized processing.
4.10.2.1.

Initialized Processing

Initialized processing includes:
•

TPREP utility routine processing, described in the system service programs user guide,
UP-8841 (current version);

•

processing output files with standard labels (FILABLSTD specified in the TCA
macroinstruction) and PREP specified in the VOL job control statement; or

•

processing input or output files with nonstandard labels (FILABL=NSTD) or no labels
(FILABL=NO specified in the TCA macroinstruction).

4-58

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

For initialized processing, you control the presence or absence and the processing of block
numbers by the first parameter of the VOL job control statement as follows:
You Specify
Nothing

N

•

Preliminary Conditions

Result

All present

Block number processing

Some missing

No block number processing

Ignored

No block number processing

4.10.2.2. Noninitialized Processing
Noninitialized processing includes:
•

processing output files with standard labels (FILABLSTD specified in the TCA
macroinstruction), but without PREP specified in the VOL job control statement; or

•

processing input files with standard labels (FILABLSTD specified in the TCA
macroinst ructio n).

For noninitialized processing, TSAT ignores the first parameter of the VOL job control
statement. Instead, the specification is obtained from the tape content (which was detected
by AVR), as follows:
Tape Content
Block numbers

No block numbers

Preliminary Conditions

Result

All present

Block number processing

Some missing

No block number processing

Ignored

No block number processing

For processing of multivolume files, you must ensure that all volumes have (or do not have)
block numbers. You cannot mix numbered and unnumbered volumes within a file.

(

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4-59

BYTES

0
4
8
12
16
20
24
28
32
36
40
44
48
52
56
60
64
68
72
76
80
LEGEND:
Generated by TSAT or reserved for system expansion.
Written by TSAT from user-supplied data.
NOTE:
The first three bytes (bytes 0—2) of the tape file label contain a 24-bit block number field. The contents of the remainder of
the VOL1 label are the same as described in Table 4—1, except that each field is offset three bytes.
Figure 4—17.

Tape Volume 1 (VOL 1) Label Format for an EBCDIC Volume with Block Numbers

4-60

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

BYTES

I

0

2

1

H

block number

0
%

4

\\

1

R

D

8
12

file identifier

16
20
file serial number

24

volume sequence number

28
32

volume sequence number

file sequence number

36

file sequence number

generation number

40

generation number

version number
creation date

44

—r------------------

48

expiration date

52
56

file security
unused

.

60
64
68

\\

system code

72
76
reserved

I

80
LEGEND:
Generated by TSAT or reserved for system expansion.
Written by TSAT from user supplied data
NOTE:
The first three bytes (bytes 0—2) of the tape file label contain a 24-bit block number field. The contents of the remainder of
the HDR1 label are the same as described in Table 4—2, except that each field is offset three bytes.
Figure 4—18.

First File Header Label (HDR1) Format for an EBCDIC Tape Volume with Block Numbers

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-61

BYTES

0
4
8
12
16
20
24
28
32
36
40
44
48
52
56
60
64
68
72
76
80
LEGEND:
Generated by TSAT or reserved for system expansion.

El

Written by TSAT from user-supplied data.

NOTE:
The first three bytes (bytes 0—2) of the tape file label contain a 24-bit block number field. The contents of the remainder of
the HDR2 label are the same as described in Table 4—3, except that each field is offset three bytes.
Figure 4—19. Second File Header Label (HDR2) Format for an EBCDIC Tape Volume with Block Numbers

4-62

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

BYTES
3

2

0

block number

0

identifier

label identifier

4

nrr

8

12

file identifier

:::::

16

20
file serial number

:

24

volume sequence number

28

32

36

.•:

.

40

volume sequence number

file sequence number

file sequence number

generation number

generation number

version number

creation date

44

48
expiration date

52

.:

56

file security
._______________________

block count

]

60

64

system code

68

72

76

reserved
80
LEGEND:
Generated by TSAT or reserved for system expansion.
Written by TSAT from user-supplied data.
(\1

NOTE:
The first three bytes (bytes 0—2) of the tape file label contain a 24-bit block number field. The contents of the remainder of
the EOF1 and EOV1 labels are the same as described in Table 4—4, except that each field is offset three bytes.
Figure

4—20.

Tape

File EOF1

and

EOV1 Label

Formats for

Block

Numbered

EBCDIC

Files

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

4-63

BYTES

0

4
8
12
16
20
24
28
32
36
40
44
48
52
56
60
64
68
72
76
80
LEGEND:
Generated by TSAT or reserved for system expansion.

El

Written by TSAT from user-supplied data.

NOTE:
The first three bytes (bytes 0—2) of the tape file label contain a 24-bit block number field. The contents of the remainder of
the EOF2 and EOV2 labels are the same as described in Table 4—5, except that each field is offset three bytes.

Figure 4—21.

Tape File EQF2 and EQV2 Label Formats for Block Numbered EBCDIC Files

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

5-1

5. Multitasking Macros

5.1.
5.1 .1.

GENERAL
Multijobbing and Multitasking

The OS/3 data processing system can concurrently process from 1 to 14 jobs, each job
consisting of one or more job steps (programs) that are executed serially. A job step will
also have one or more tasks which may be executed concurrently. This capability allows
you greater flexibility in attaining maximum use of the system’s resources.
Multijobbing consists of scheduling multiple jobs (up to 14) for concurrent execution. The
allocation of processor time to these jobs is based on a system switch list that contains
information regarding task priorities, synchronization, and I/O utilization. While one job is
awaiting the completion of an external event (such as completion of an I/O request), the
operating system activates another job that is ready to ensure optimum utilization of the
processor’s capabilities. Since the majority of programs require support other than
processing instructions, multijobbing provides an effective method for you to reduce
processor idle time and increase system productivity (throughput).
Multitasking is the concurrent execution of multiple tasks. Because every job has at least
one task to which control of the processor is dispatched, the term multitasking is
sometimesapplied (from the point of view of the task switcher within the supervisor) to
the concurrent execution of several jobs each having one task. However, multitasking, as
used here, refers to the concurrent execution of several tasks asynchronously within a
given job step. Multitasking enables you to overlap processing with external occurrences
within a program to obtain maximum throughput in the same manner as the system
achieves optimum utilization using multijobbing.

5.1.1.1.

PrimaryTask

Every job step submitted to OS/3 is established as a primary task. A task is the lowest
viable entity that can compete for processor time. OS/3 permits up to 256 tasks per job. The
switch list has the capacity to allow you to specify up to 60 levels of processing priority for
tasks. The maximum number of task priority levels that the supervisor will recognize is
established at system generation time. The technical limit is 60; however, a more practical
limit of 3 to 1 5 is sufficient to achieve a high degree of processor utilization. When a task is
interrupted to perform external processing (external to the instruction processor), it frees the
processor and OS/3 searches the switch list for the highest priority task that is not waiting
for an external event to be completed. This task could be in the same job or it could be from
any other job currently being processed.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

5-2

5.1.1.2. Subtask
OS/3 has another level of multitasking which may occur within a job step. The primary task
is capable of initiating other tasks, called subtasks, within the job step. Primary tasks and
subtasks are simply two categories of tasks; each is processed in the same manner.
However, the primary task is automatically initiated into the multitasking environment by
OS/3 at job step initiation, while subtasks must be created by the program in the job step.
Subtasks can be given the same priority as the primary task or they can have a lower
priority. Thus, a job step may consist of a primary task and several subtasks, all of which
compete independently for processor time.

5.2. TASK MANAGEMENT
5.2.1. General
The supervisor is designed with multitasking capability which is utilized by the supervisor
and extended to the user through macroinstructions. In a multitasking environment, several
tasks may compete for control of the processor on a priority basis.
A task is defined as a point of control within an environment which is capable of utilizing
the processor asynchronously with other tasks. It refers to a level of control only and not the
physical code itself.
Every task, regardless of the code the task executes, will be identified to the supervisor by a
task control block (TCB). The TCB contains or points to all control information associated
with a task. This includes register/program status word save areas and other task-oriented
information.
Each job step has a task (and thus a TCB) inherited at job step initialization from job control
which is referred to as the primary task. Additional tasks may be attached as subtasks and
cause additional TCBs to be created to identify the new tasks to the supervisor. The primary
task is considered to represent the job step. As such, any termination, normal or abnormal,
of this task will cause the job step to terminate.
Additional tasks (subtasks, other than primary) are created by the ATTACH macroinstruction
which causes task management to create a TCB and initialize it with the attaching task’s
environment. Once a subtask has been created, it is entered on the switch list to compete
for the processor control on a priority basis. Each task competes independently for the
processor. When the switcher gains control, it selects the highest priority nonwaited task
and dispatches control. A task is nonwaited (active) if it can use the processor and waited
(not active) if some event must take place before the task can use the processor.
A subtask terminates when a DETACH macroinstruction is executed for that task or an error
occurs that prevents the task from successfully completing its work. A DETACH in behalf of
the primary task is interpreted as an end-of-job step. When a subtask terminates, the task’s
event control block (ECB) is reset to the idle/unused state and any task waiting for that task
is activated.
All tasks of a job have all the capabilities of the primary task; that is, a task can create
additional tasks of its own and perform all communication functions with these tasks. The
exception is that unsolicited operator messages can only be accepted at the job step level.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

5-3

5.2.2. Task Creation
Task creation is performed by the ATTACH macroinstruction, which causes entry into the
attach function to create a subtask. The code to be executed by the task specified on the
ATTACH macroinstruction call must be in main storage, within the user region, when the
ATTACH macroinstruction is issued.
The number of tasks which may be created by a user is limited to the number designated to
job control with a maximum of 255 subtasks. The space for creation of task control blocks is
reserved by job control when the job region is established. The number of possible
simultaneous tasks must be specified as a parameter on the JOB statement in the job
control stream.
Tasks may create other subtasks in a pyramidal fashion with a limit of four total or three
subtask levels. This hierarchical structure is not intended to provide a means of task
synchronization. This structure is composed of subtask families so that when a subtask
terminates, the family it has created is also terminated.
When a task is created, the originating task must pass the address of an area in the user
storage to be used as an event control block (ECB) for the newly created task. This ECB
address is placed in the newly created task’s TCB and may be considered as an extension to
the TCB for the purpose of task synchronization by user. The separation of the ECB and TCB
is a system requirement because a TCB cannot be addressed by the user programs.
5.2.3. Task Priority
When a primary task is created, job control assigns it a dispatching (switch list) priority as
requested on the job control EXEC statement. Any subtask created by the primary task or
other subtask can have a priority based on the primary task priority as specified on the
ATTACH call. The attaching task may request the same or a lower priority for the new
subtask.
5.2.4.

Task Termination

A task executes a DETACH macroinstruction to cause entry into the task termination
function for processing. The DETACH function determines whether the DETACH was
executed from abnormal termination island code to determine if termination was normal or
abnormal. For normal termination, the ECB for that task is posted by the termination
routines and all tasks in the subtask family of this task are terminated.
Task control notifies any other task awaiting the completion of the terminating task and
unlinks the TCB from the system. The task termination routines recognize the TCB for a
primary task and treat that as a job step termination (EOJ).
An abnormally terminating task is one that executed a CANCEL either intentionally or
imposed by the system. Task control, when processing an abnormally terminating task,
posts the task’s ECB, and activates abnormal termination island code on behalf of this task.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

5-4

5.2.5. Queue Driven Task
The AWAKE function is provided for queue driven tasks to allow for better synchronization
and less overhead. AWAKE can only be issued to a task which has been previously created
by ATTACH. If the AWAKE function is addressed to a nonexistent task (no ATTACH), an
abnormal termination is initiated. The AWAKE is utilized to activate an existing but idle task.
The queue driven task continues to process until it has exhausted all queue entries and then
can execute the TYIELD macroinstruction to mark itself nondispatchable until further queue
entries have been made. Each time an AWAKE macroinstruction is executed, the addressed
task will be removed from the idle state. This is accomplished whether the task is idle or
active and will permit a task to be dispatched.
5.2.6. Hierarchical Structure
Subtasks are attached as members of task families providing a hierarchical structure similar
to a pyramid. This structure provides the family naming conventions which allow a task to
terminate and have all its subtasks also terminated. The hierarchy is not imposed as a
restriction to task synchronization or control. Therefore, tasking functions may reference
across family lines. Additionally, this structure has no relationship to the dispatching
priority.
The internal subtask naming convention consists of a concatenation of the physical TCB
(within the job) and the attaching task’s name. The numbering of the subtasks should be
random rather than sequential. For example, if a task named X’Ol 02’ attaches two subtasks,
these might be named X’010205’ and X’010209’, or X’Ol 0203’ and X’010207’.

5.3. TASK MANAGEMENT MACROINSTRUCTIONS
Task management macros provide the interface by which jobs can create and control a
multitasking environment. Each job step by definition has at least one task, which is
referred to as the primary task. The following macros allow for the creation, activation,
deactivation and deletion of additional tasks within a job step.
The user must inform job control via job control statements of the maximum number of
tasks that can be created for a job step. This allows job control to reserve the main storage
required for TCB within the job’s prologue. Likewise, you must provide storage for and
control of the ECBs. These ECBs are 2-word (8 bytes) fields that task management utilizes to
communicate with the user to allow for task synchronization and to identify the task. You
can look at the information but should not write into these words which are unique to a
given task. The primary task doesn’t have an ECB and is identified by an ECS address of
zero.
The following macroinstructions are available for multitasking:
•

ECB
Generates an event control block for task identification and status.

(

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

•

5-5

AHACH
Creates and activates an additional task.

•

DETACH
Terminates a task normally.

•

/

TYIELD
Deactivates a task.

•

AWAKE
Reactivates an existing nonactive task.

•

CHAP
Changes the relative priority of a task.

5.3.1. Generate an Event Control Block (ECB)
Function:
The ECB macroinstruction generates and initializes an event control block. The event
control block is used by task management to identify a task and to indicate status to the
other tasks within a job step. The current status of the associated task is reflected by
bits within the ECB (Figure 5—1).
This is a declarative macroinstruction and must not appear in a sequence of executable
code.
Format:
LABEL
[symbol]

LOPERATIONI

OPERAND

ECB

There are no parameters for the ECB macroinstruction.
The ECB is utilized to communicate between task management and the job step. The
following programming considerations and conditions are set into the ECB.
1.

The ATTACH macro specifies an ECB when the task is created. The specified ECB is
linked to the TCB and is reserved for this task until this task is detached.

2.

As with I/O, only one task can wait for a given command control block (CCB) or ECB.
However, unlike I/O, which allows only the task that submitted the CCB to wait for it,
task management allows only one of the other tasks to wait for the task which is
identified by the ECB.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

3.

5-6

A primary task does not have an ECB associated with it; therefore, the primary task
cannot be waited. This task can synchronize with I/O by utilizing the WAIT and WAITM
macros and can synchronize with other tasks by the AWAKE and TYIELD macros.

Example:
10

1

16

PRIMTASK START

1.

ATTACH ECB1,START, ,2

2.

WAIT

ECB1

3.

ECBI

EOJ
ECB

4.

START

EQU

SUBTASK EXECUTION STARTS HERE

DETACH ECBI

SUBTASK EXECUTION ENDS HERE

5.

Expla nation:
1.

Line 1 attaches a subtask whose ECB name is ECB1. The subtask will begin
execution at the address of START. If the priority of PRIMTASK is two, the priority
of the subtask being attached is four.

2.

At line 2, the primary task gives up control until the subtask is completed.

3.

Line 3 generates the ECB called ECB1 associated with the subtask. Note that this
macro does not appear in a sequence of executable code.

4.&5.
Lines 4 and 5 represent the beginning and ending of the subtask execution.

(N

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

1

BYTE

0

0

control byte

attaching task’s I D

5-7

2

3

activity byte

unused

address of TCB waiting for this ECB

4

BYTE
0

Control Byte
1 =
Not
1 =
Not

Bit 0
1-4
5
6—7

This is an ECB.
used
This task completion is being waited.
used

Attaching Task’s ID
Task identification number of task with which this ECB is associated. This ID number is not related to subtask name.
It is the number of the TCB counting from the job step TCB which is number 0.
2

Activity Byte

o

Bit 0

= Task is active in that it has not executed either a TYIELD or DETACH macro.
1 = Task is idle in that it has executed a TYIELD or DETACH macro.
Not used
1 = Task has abnormally terminated and should be detached.

1-6
7
3

Unused

4—7

Address of TCB that is awaiting completion of the task with which this ECB is associated.
Figure 5—1. Event Control Block (ECB) Format

5.3.2. Create an Additional Task (ATTACH)
Function:
The ATTACH macroinstruction creates and activates a task desiring control of the
processor. It generates an additional task control block and enters the task onto the
switch list.
Format:
LOPERATIONz

LABEL

[s ymb

0

I]

ATTACH

OPERAND

I ECB-namel,jentry-point-name
1(1)

1(0)

[{er;oraddr)]

[,n]

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

5—B

Positional Parameter 1:
ECB- name

Specifies the symbolic address of the ECB used to identify and control this task.
(1)

Indicates that register 1 has been preloaded with the address of the event control
block.
Positional Parameter 2:
ent ry point
-

-

name

Specifies the symbolic address of the point in the program at which this task will
receive control. The coding to be executed for the task must be in main storage
when the ATTACH macroinstruction is issued.
(0)

Indicates that register 0 has been preloaded with the address of the entry point.
Positional Parameter 3:
er ror-addr

Specifies the symbolic address of an error routine to receive control if an error
occurs.
(r)

Indicates that the register designated (other than 0 or 1) has been preloaded with
the address of the error routine.
If omitted, the task will be abnormally terminated if an error occurs.
Positional Parameter 4:
n

Specifies a value to be added to the switch list priority of the originating task.
This raises the dispatching priority value resulting in a lesser priority for the task.
(The higher the priority number, the lower the priority.) The result is assigned as
the switch list priority of the new task unless it exceeds the limit of this system,
in which case the highest number (lowest priority) for this system is used.
The use of this parameter always results in a lesser priority. There is no way to
attach a task with a priority higher than that of the primary task.
If omitted, the new task will be created at the same priority as the originating task.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

5-9

Example:
10

16

ATTACH ECB1,ENTRYPT,ERROR,2

ECB1

ECB

ENTRYPT

EQU

SUBTASK EXECUTION BEGINS HERE

ERROR

EQIJ

CONTROL RETURNS HERE

IN CASE OF ERROR

Attach a task identified by the event control block named ECB1. The subtask will
receive control at the instruction whose address is labeled ENTRYPT. If an error is
encountered during the execution of the ATTACH macroinstruction, control will be
transferred to the error processing routine labeled ERROR. The dispatching priority of
the newly created task will be two greater than that of the originating task.

5.3.3. Terminate a Task (DETACH)
Function:
The DETACH macroinstruction terminates a task by delinking the TCB from the switch
list and returning the TCB to the job’s free TCB queue. If this macroinstruction is
executed by the primary task, it will be interpreted as an end-of-job step. All subtasks of
the task being detached will also be detached.
This macroinstruction also clears all locks for the task.
Format:

LABEL

zOPE RATIO NA

[symbol]

DETACH

OPERAND

rj E C B

-

n a me

r

Ierror-addr

Positional Parameter 1
ECB name
-

Specifies the symbolic address of the event control block of the task to be
detached.
(1)

Indicates that register 1 has been preloaded with the address of the ECB.
If omitted, indicates that the task issuing the DETACH instruction is terminating. No
task other than the primary can terminate the primary task.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

5-10

Positional Parameter 2:
error-addr

Specifies the symbolic address of an error routine to be executed if an error
occurs.
(r)

Indicates that the register designated (other than 0 or 1) has been pre loaded with
the address of the error routine.
If omitted, the executing task will be abnormally terminated if an error occurs.
Example:
16

10

1

DETACH

ECB1

ECB

ERROR

EQU

ECB1,ERROR

Detach the task identified by the event control block labeled ECR1. If an error occurs
during the DETACH macroinstruction, transfer control to error processing routine
labeled ERROR.
5.3.4. Yield Until Task Completion (TYIELD)
Function:
The TYIELD macroinstruction relinquishes control of the processor and sets the TCB in
a waiting state. The ECB is tested and if there is a task awaiting the yielding task, the
waiting task is activated.
The TYIELD macrinstruction is used in combination with the AWAKE macroinstruction
which reactivates a task made dormant by the TYIELD macroinstruction.
Format:
LABEL
[symbol]

OPERATIONz2

OPERAND

TYIELD

There are no parameters for the TYIELD macroinstruction.

U

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

5-1 1

5.3.5. Reactivate a Task (AWAKE)
Function:
The AWAKE macroinstruction reactivates a task made dormant by a TYIELD
macroinstruction. It clears the TYIELD bit within the wait bytes of the TCB regardless of
whether or not the task is idle, thereby activating the task to receive control of the
processor from the switcher.
Format:
LABEL

z2OPERATI0NA
AWAKE

[symbol]

OPERAND
{ECB.name)

Positional Parameter 1:
ECB- name

Specifies the symbolic address of the event control block of the task to be
reactivated.
(1)

Indicates that register 1 has been preloaded with the address of the ECB.
If omitted, or if this macroinstruction is executed with a zero address in register 1, the
primary task will be taken out of a TYIELD condition.
Exam pies:
1

10

16

1.

AWAKE

AWAKE PRIMARY TASK

2.

SR
R1,R1
AWAKE (1)

AWAKE PRIMARY TASK

AWAKE ECB1

AWAKE SUBTASK

3.

ECB1
4

ECB
LA
R1,ECB1
AWAKE (1)

AWAKE SUBTASK

Expla nations:
Examples 1 and 2 will take the primary task out of a TYIELD condition.
Examples 3 and 4 indicate that the task identified by the ECB named ECB1 will be
taken out of a TYIELD condition.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

5-12

C

5.3.6. Change a Priority (CHAP)
Function:
The CHAP macroinstruction changes the dispatching priority of the task issuing the
instruction. The number (either positive or negative) entered as the operand is added to
or subtracted from the current dispatching priority of the task (specified by the switchpriority parameter in the EXEC job control statement). This changes the dispatching
priority value, resulting in a lesser or greater priority for the task. A positive value will
lower the priority; a negative value will raise the priority. This macroinstruction does
not change the priority to a specific level; instead, it adjusts the priority relative to the
level under which it is executed.
The highest priority level to which you can change is to the original priority of the job
step.
The lowest priority level to which you can change depends upon the number of priority
levels specified by the SUPGEN keyword parameter PRIORITY. See the supervisor
concepts and facilities manual, UP-8831 (current version).
If you try to raise or lower the priority beyond the specified boundaries, the system will
automatically stop at the highest (or lowest) priority level with no error.
Format:
LABEL

AOPERATIONA

OPERAND

CHAP

[symbol]

1(1)
Positional Parameter 1
n

Specifies a value to be added to or subtracted from the dispatching priority for the
task in order to change its priority. To lower the priority, use a positive number; to
raise the priority, use a negative number.
(1)

Indicates register 1
increment.
Examples:
To lower priority:
1
1.

2.

10
CHAP

16
2

LA

R1,2

CHAP

(1)

has been preloaded with either a positive or negative

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

5-13

Change the dispatching priority of the task by two. This will raise the dispatching
priority value by two, which will result in a priority two less than the current priority.
Both examples perform the same function.
To raise priority:
1

2.

10

16

CHAP

—3

1
CHAP

R1,=A(—3)
(1)

Change the dispatching priority of the task by three. This will lower the dispatching
priority value in the negative direction by three, which will result in a priority three
more than the current priority. Both examples perform the same function.

5.4. TASK SYNCHRONIZATION
5.4.1. General
Task synchronization provides a task with a means of waiting for one or more other tasks.
The waiting task is awaiting the completion of the specified task or tasks which is signaled
by the deactivation of an awaited task or by the execution of the POST macroinstruction.
Tasks are waited by setting a unique wait bit within that TCB. These wait bits signal the
switcher that this task is nondispatchable and indicate the reason for the wait. Upon
clearing the wait bits, the task becomes dispatchable and can be activated.
The ECB address, which is specified as a parameter to task management macros, points to
an event control block which allows for task to task synchronization. The ECB format is
compatible with the first two words of I/O CCBs as far as the WAIT and WAITM
macroinstructions are concerned. These macros are utilized to synchronize tasks in a
manner similar to I/O synchronization.
When the performance of a task is dependent on any other task or tasks, the tasks involved
may synchronize themselves via the ECB associated with a task from the ATTACH
macroinstruction. The ECB is posted with a completion code when a task terminates or
executes the TYIELD macroinstruction. The ECB is specified on a WAIT and WAITM
instruction in order to hold processing of an issuing task until the awaited task either
terminates or issues a POST macroinstruction.
Several macroinstructions are available for task synchronization:
•

WAIT
Wait for a task request to complete.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

•

5-14

C

WAITM
Wait for one of several task requests to complete.

I

POST
Activate a waiting task.

•

TPAUSE
Deactivate a task.

•

TGO
Reactive a task.

A WAIT or WAITM macroinstruction suspends execution of the issuing task. A POST
macroinstruction reactivates the suspended task.
A TPAUSE macroinstruction deactivates a task other than the issuing task. A TGO
macroinstruction reactivates a task (other than the issuing task) deactivated by a TPAUSE
macroinstruct ion.
The WAIT and WAITM macroinstructions can also be used (with different parameters) to
synchronize a task with its I/O. For task synchronization, the macroinstruction references
an event control block; for I/O synchronization, the macroinstruction references a command
control block.
5.4.2. Wait for Task Completion (WAIT)
Function:
The WAIT macroinstruction temporarily suspends program execution until the specified
task is completed or executes a POST macroinstruction in behalf of the waiting task. If
the related task is completed, control is returned to the point immediately following the
WAIT macroinstruction. If the awaited task is not complete, the issuing task is placed in
a wait state and control is passed to another task.
The ECB indicates the status of the task. When a WAIT macroinstruction is issued, the
issuing task relinquishes control until the ECB is marked complete or until a POST
macroinstruction is executed by the awaited task in behalf of the waiting task.
Format:

LABEL

[symbol]

z2OPERATIONA
WA I T

OPERAND

ECB- name
(1)

j

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

5-15

Positional Parameter 1:
ECB

name

-

Specifies the symbolic address of the event control block to be tested for
corn pletion.
(1)

Indicates that register 1 has been preloaded with the address of the event control
block.
Examples:
1

10

16

WAIT
WAIT

ECB1
(1)

5.4.3. Multiple Task Wait (WAITM)
Function:
The WAITM macroinstruction temporarily suspends program execution until any one of
several tasks specified by the instruction is completed or executes a POST
macroinstruction on behalf of the waiting task. Upon completion of one of the tasks,
control is returned to the program at the point immediately following the WAITM
macroinstruction, with register 1 containing the address of the event control block
associated with the completed task.
Format:
LABEL

OPERATIONL

[symbol]

WAITM

OPERAND

ECB-name-1,ECB-name-2[
I i St name
(1)

...,

ECB-name-n]

-

Positional Parameter 1:
ECB-name-1,ECB-name-2

ECB-name-n

Specifies the symbolic addresses of the event control blocks to be tested that are
associated with the tasks to be awaited. At least two ECBs must be specified.
I I St

-

name

This is a single entry which specifies the symbolic address of a list containing full
word addresses of ECBs associated with the tasks to be awaited. The byte
following the last full word must be nonzero to indicate end of list.
(1)

Indicates that register 1 has been preloaded with the address of the list of ECB
addresses.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

5-16

C

NOTE:
The WA/TM macro instruction may a/so specify a combination of ECB and CCB
addresses as parameters.
When this macroinstruction is executed, each referenced ECB is marked as being awaited.
Upon completion of a marked ECB, the waiting task is activated, and the remaining ECBs
that are marked as being awaited are cleared.
The WAITM macroinstruction always requires more than one event to be tested. If only one
event is to be tested, use the WAIT macroinstruction.
5.4.4. Activate the Waiting Task (POST)
Eu nction:
The POST macroinstruction activates the waiting task without requiring the awaited
task to terminate. When the POST macroinstruction is issued by a task, the task
waiting on the event completion which was posted will be reactivated at the point
immediately following the WAIT or WAITM macroinstruction.
Eormat:
LABEL

AOPERATIONA

OPERAND

POST

[symbol]

The task being activated by the POST macroinstruction is the one waiting for the task
executing the POST macroinstruction; therefore, there are no parameters for this
macroinstruction.
Examples:
1

10

TASK

EQU
AWAKE
WAIT

16
TASK2ECB
TASK2ECB

TASK1ECB ECB
TASK2ECB ECB
TASK2
EQIJ
EXCP
WAIT
POST

T Y I E .1 D

INPUTCCB
INPUTCCB

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

5-17

5.4.5. Deactivate a Task (TPAUSE)
Function:
The TPAUSE macroinstruction causes a specified task to be deactivated until a
subsequent TGO macroinstruction is issued to reactivate that task. This permits better
control of task synchronization within a job. The TPAUSE macroinstruction can also be
used to deactivate all tasks of a job step other than the issuing task. When used, no
other task, even if it had a higher priority or pending island code activation, can possibly
interrupt the task and take control.
Format:
LABEL

[symbol]

AOPERATIONA

TPAIJSE

OPERAND

ECB-name

ALL

r,lerror-addr

L1r

(1)

Positional Parameter 1:
ECB name
-

Specifies the symbolic address of the event control block of the task to be
activated.
ALL

Specifies that all tasks of the job step are to be deactivated. Note that the calling
task is not acted upon in this case.
(1)

Specifies that register 1 has been preloaded with the address of one or more
addresses pointing to the ECBs controlling the task to be deactivated. The last
address in the list must have the X’80’ bit set in the high order byte to indicate the
termination of the list.
Positional Parameter 2:
error-addr

Specifies the symbolic address of an error routine to be executed if an error
occurs.
(r)

Specifies that the designated register (other than 0 or 1) has been preloaded with
the address of the error routine.
An error is returned to the user if the address or addresses passed do not point to a valid
ECB, the ECB does not point to an attached TCB, or the ECB points to the calling task.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

5-18

5.4.6. Reactivate a Task (TGO)
Function:
The TGO macroinstruction reactivates a specified task or tasks deactivated by a
previous TPAUSE macroinstruction. The TGO macroinstruction can also be used to
reactivate all tasks of a job step (other than the issuing task) previously deactivated by
TPAUSE. If the TYIELD parameter is specified, the issuing task also relinquishes control
of the processor.
Format:
LABEL

LSOPERATION

[symbol]

TGO

OPERAND
ECB-namel

ALL
(1)

fi

r

(error-addrf) [,TYI ELD]

JJ

Positional Parameter 1:
ECB

-

name

Specifies the symbolic address of the event control block of the task to be
activated.
ALL

Specifies that all tasks of the job step are to be reactivated. Note that the calling
task is not acted upon in this case.
(1)

Specifies that register 1 has been preloaded with the address of one or more
addresses pointing to the ECBs controlling the task to be activated. The last
address in the list must have the X’80’ bit set in the high order byte to indicate the
termination of the list.
Positional Parameter 2:
error

-

add r

Specifies the symbolic address of an error routine to be executed if an error
occurs.
(r)

Specifies that the designated register (other than 0 or 1) has been pre loaded with
the address of the error routine.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

5-19

An error is returned to the user if the address or addresses passed do not point to a valid
ECB, the ECB does not point to an attached TCB, or the ECB points to the calling task.
Positional Parameter 3:
TY I ELD

Specifies that the TYIELD function is to be performed on the issuing task at the
end of the TGO processing. If you use this parameter, the effect is exactly as if you
had coded a TGO followed immediately by a TYIELD. If you had done that,
however, your task could have been interrupted between the TGO and TYIELD
macroinstructions and possibly lost control to another task. This parameter
eliminates that possibility and the TYIELD takes effect immediately.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

6-1

6. Spooling Breakpoint
Macroinstruction
-

6.1. GENERAL
Spooling is the technique of buffering data files for lowspeed input and output devices to a high
speed storage device independently of the program that uses the input data or generates the
output data. Data from card readers or from remote sites is stored on disk for subsequent use by
the intended program. Data output by the program is stored on disk for subsequent punching or
printing. The spooling function also handles diskette files. It treats input from diskette as
though it were from a card reader, and output to a diskette as though it were to a card punch. In
this description of spooling, any reference to a card reader, card input, or card file also includes
diskette input; any reference to a card punch, card output, or card file also includes diskette
output. The consolidated data management concepts and facilities, UP-8825 (current version)
shows the formats for diskette records.
Spooling enhances system performance by releasing large production programs and system
software from the constraint of the slower speed devices, thereby freeing the main storage
occupied by these programs sooner, and by driving the slower speed devices at their rated
speed on a continuous basis, thereby making full use of the devices during the time that is
normally lost to systems overhead or to job steps not using printers.
The spooling function comprises five elements: initialization, input reader, spooler, output
writer, and special functions. These elements are described in the following subsections.
Figure 6—1 gives a simplified picture of the relationship between the input/output devices
and the software components of the spooling function.

6.1.1. Initialization
Spool initialization provides for the establishment, data recovery, or reestablishment of the
spoolfile at supervisor initialization. Based on system generation parameters or operator
specified options at supervisor initialization, it allocates the spoolfile and builds the system
spool control table, or it recovers an existing spoolfile. In the case of an existing spoolfile, it
clears the file, recovers closed subfiles, or recovers and closes all subfiles.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

6-2
Update B

MAIN STORAGE
Figure 6— 1. Relationship of Spooling Devices and User Programs

612. Input Reader
The input reader reads cards from a real card reader or records from a diskette and writes
these images to the spoolfile via a virtual card reader and the spooler. It closes the previous
subfile if one exists and opens a new subfile. A given input reader can handle only one card
reader or diskette at a time; however, any number of input readers can be active.

6.1.3.

—.

Spooler

The spooler is the hub of the spooling package and is linked as part of the resident
supervisor. It provides record level input and output to and from the spoolfile for each
element in the system needing access to that file. It intercepts all input/output commands
to virtual printer, punch, and card reader devices, and accesses the disk when necessary
using the system access technique (SAT) for accesses to the spoolfile. All input/output
requests addressing virtual devices are trapped and routed to the spooler for processing.
The spooler supports both reads and writes to virtual devices while simulating the action
of PIOCS as far as error handling, page spacing, and synchronization are concerned. It
allocates tracks to subfiles and maintains control of the user’s spool control tables. It can
handle any number of print, punch, and read files simultaneously, including multiple files
per job.

c,

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

6—3

6.1.4. Output Writer
The output writer reads data from the system spoolfile and prints or punches this data on
the physical devices. As an alternative, it can output this data to a tape, disk, or diskette so
that it may be reintroduced at a later time to the output writer as input, rather than using
the spool file as input, or for processing at a later time by the user.

PUNCH FILE

—PUNCH FILE OUTPUT

PRINT FILE

OUTPUT
WRITER

LOG FILE
OUTPUT WRITER TAPE,
DISK, OR DISKETTE

—b

—PRINTFILEOUTPUT
—LOG FILE OUTPUT
—REDIRECTED OUTPUT TO TAPE,DISK, OR DISKETTE

The output writer configures itself dynamically to the printer or punch assigned, thereby
keeping main storage requirements to a minimum. It is loaded automatically whenever
there are files to be printed or punched and there is a printer or punch available. As with the
input reader, a copy of the output writer can handle only one printer or punch. However, for
every printer or punch on a system, there can be a version of this element running that
device.
A number of capabilities and options are available:

a

Processing may be handled in either burst or nonburst mode.

•

The operator may define burst mode by selecting a subcriterion.

•

A maximum of 255 copies of a given file may be printed or punched.

•

Subfiles may be retained after they have been printed or punched.

•

Printer or punch output may be initially assigned, or redirected, to tape, disk, or
diskette.

The output writer determines which file to process based on criteria entered at system
generation, or later by an operator system command or function to the output writer by the
operator. For example, let us assume nonburst was specified at system generation. This
means an output subfile cannot be printed or punched until after the job has terminated and
the job log has been closed. Also, each job’s output is handled as a continuous entity. The
operator can change this to burst mode processing, which means that an output subfile can
be printed or punched after it has been closed, or after a breakpoint has been created, and
does not have to wait until the job has terminated. He can specify file selection by various
criteria such as first-in/first-out by device type, account number, job number, etc. Operator
commands and responses are described in the appropriate operations handbook for your
system.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

6-4

6.1.5. Breakpoint
There are a number of special functions, such as open, close, find, and delete, that can be used
by symbionts accessing the spoolfile but are not available for use by user programs. However,
the breakpoint function is available to user programs and to the operator. A breakpoint is the
closing and reopening of a spool subfile to permit output to the physical device to start before
the job step terminates. For example, if a spool subfile is getting full, a message to the operator
notifies him of this so that he can create a breakpoint to the output file. The user program can
also create a breakpoint by using the DMBRK macroinstruction.

6.2. TO USE SPOOLING
At system generation, you can select:
•

no spooling;

•

output spooling only;

•

input/output spooling; or

•

input/output and remote batch spooling.

Also, you can specify first-in/first-out processing in the nonburst mode, or accept the burst
mode, which is the default condition. This can be changed later or qualified by the operator.
Statements input to job control enable it to set up the files, buffers, linkages, and control
tables by which the spooling functions are performed. If the system does not have the
spooling function, these job control statements are ignored.
Job control options for spooling are entered using the JOB, SPL, DATA, and DST job control
statements. These are described in the job control user guide, UP-8065 (current version).
Initialization options are also entered by the system operator. These are described in the
appropriate operations handbook for your system.
There are no changes required to a user program to use spooling. You can define your files
using data management macroinstructions. A job that runs on a nonspooling system will also
run on a spooling system, and vice versa. If you use the DMBRK macroinstruction in your
program, it will be ignored if your job is run on a nonspooling system.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

6—5

6.3. CREATE A BREAKPOINT IN A SPOOL OUTPUT FILE (DMBRK)
Function:
The DMBRK macroinstruction creates a breakpoint in a printer or punch spoolfile. It closes
and reopens the subfile as it is being generated by the spooler. Each segment created at
this breakpoint is considered a logical subfile so that output to the physical device can be
started prior to job step termination.
If this macroinstruction is included in a program executing in a system that does not have
the spooling capability, the macroinstruction is ignored.
Format:
LABEL
[symbol]

ZOPERATIONA

DMBRK

OPERAND
Jfilename

t( 1)
Positional Parameter 1:
f I I ename

Specifies the symbolic address of the CDIB macroinstruction in the program which
defines the file in which a breakpoint is to be created.
(1)

Specifies that register 1 contains the address of the CDIB macroinstruction defining
the file in which a breakpoint is to be created.

(1

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-1

7. Diagnostic and Debugging Aids

7.1. STORAGE DISPLAYS
Most programs don’t run properly on the first try. Sometimes, there may only be minor
coding errors, but other times, there may be logic errors. Coding errors are relatively easy to
find, but logic errors tend to be elusive. This is why Sperry Univac has provided a method of
obtaining printouts of main storage areas. These printouts are commonly called dumps.
Dumps are most helpful when you, not the operating system, control when they occur. This
control is available through four macroinstructions: CANCEL, SNAP, SNAPF, and DUMP. For
any of these macros, however, a dump is not provided if:
•

a printer is not assigned to the job; or

•

an OPTION job control statement with the DUMP, JOBDUMP, or SYSDUMP parameter
is not present in the job to override the default NODUMP condition of job control.

7.1.1. Snapshot Dumps (SNAP/S NAPF)
A snapshot dump is, by definition, a selective dynamic dump performed at various times in a
run. The SNAP macroinstruction produces this type of dump. It gives you a picture of the
job’s 16 general registers as well as selected areas of main storage.
There are really two macroinstructions for obtaining snapshot dumps: SNAP and SNAPF.
Each macroinstruction performs the same function, except that the SNAPF macroinstruction
is used in the spooling environment. To simplify this discussion, whenever we mention the
SNAP macro, we also mean the SNAPF macroinstruction.
By using job control, you can initiate or suppress snapshot dumps at run time. You don’t
have to recompile a program in order to dump or not dump, since the SNAP
macroinstruction is only effective when combined with an OPTION job control statement
(using the DUMP, JOBDUMP, or SYSDUMP parameter) in the job step in which you want
the dump to occur. If the program is run without this OPTION job control statement, the
SNAP macroinstruction is bypassed.

7-2
Update B

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

A hexadecimal printout of the general registers and the job’s main storage area is always
given when the SNAP macroinstruction executes. Program-relative addresses are listed on
the left, and absolute addresses are listed on the right. After the SNAP macroinstruction
executes, normal processing of the program continues. Control is returned to the
instruction immediately following the SNAP macroinstruction.
The SNAPF macroinstruction works the same way as the SNAP macroinstruction, but it
allows you to direct the snapshot dump to a specified allocated printer or to a spool file via a
virtual printer. In a spooling environment, you can use the SNAPF macro to direct snapshot
dumps to a spool file other than the job log file. This enables you to obtain the printed output
prior to job termination by using the spool breakpoint feature or closing the file.
The formats of the SNAP and SNAPF macroinstructions are:
LOPERATIONA

LABEL
[symbol]

JSNAP

OPERAND

k

flstart-addr-1end-addr-1[

start-addr-n,end-addr-nJ

L1’

ISNAPFJ

.--

Either symbolic addresses or general register 1 can be used to indicate the areas to be
dumped. To use symbolic addresses, you code the starting address (start-addr parameter)
and the ending address (end-addr parameter) for each area you want dumped. Up to a
maximum of 50 separate areas per SNAP macroinstruction may be used.

.--

If you use the SNAPF macroinstruction, register 0 must be preloaded with the address of
either an allocated printer or a virtual printer physical unit block (PUB), as obtained from
execution of a data management OPEN macroinstruction.
Remember, when using symbolic addresses, an even number of parameters must be used
(start and end).
For example, if you coded the SNAP macroinstruction like this:
1

10

16

SNAP

TAG1,TAG2,TAG3,TAG4
First
Area

Second
Area

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-3

and placed it in your program like this:
LOC.

INJECT CODE

AIDRI AIDR2

LINE

SOURCE STATEMENT
POOl

START

000000

1

000000 0560

2

000002
000002 9700 6010

3
5 BRANCH

00012

0700
9510 6026
0000002E
00000038
00000060
80
000062

5
6
7
A

A.

CS

A
00028 A
A
A
A
*
A

98

DO.
1D
12’
13.
18.
15.

CNOP
SAL
DC
DC
DC
DC
DC

16.
000028 5111 0000
70000 A
A
D7.
CD012C 0*6*
[18 7*61
000020 0203 6008 60CC COCOA 00000
000036
000035
050034
000038
000039
C0003C
000030
000060
000082

LA
SAC
SOC

•.16
CLAABCD
CL9EFSH
TADI,T062,TAO3.TUNN
09
0,9
1.8889818.9

A4TA618
AN TABOO
ANTAUSI
0,80’
*0.380*000
1.0810
000
SRANCH.8ONI.RRANC88.12
80UTRC88
0
U

irs
rea
to Dump

A
21.0*12
22.
23.

EOU
SAL
DC
DC
DC
DC
SAC
HOC

1.0.12
0.81’
AL310008
8’AD’
AL3100081N8
38 ISSUE SOC
AUF8A0,RRANCI4.

30.7*03

DC

£5808

*
A

31’
32.
33’
34.

L
L
091
801

1,:58000T8 8
0,AIMUFO N
2011.8’ZO’ 0
0810.0 0

0
0

3A
39.

DC
DC

OLI8DNO
5L18418

A
0
0
A
A

ND.
NI.
42’
93’
89.

SOC
6000
SOC
ORG
SOC

25
0
28
0—2
133

5510 6030
00050 A
*
81
A
00006C
80
U
A
000098
0A26
0207 0000 600’ 00000 00016

000080
CDC0IB 5810 6006

0

26’

25.
26.
27.
28

I

70502
05003

000050 0*00
00005* 10
000050 20

0819
27CC
101C
0085

000062
000062 5810 6006

A

!

00008

I

TAO

——

00008 A
00000 A

0000SC 5800 608A
000USD 9220 1202
000056 9200 1003

01005C
0100SE
000000
000060
000060

6.0

USiNG ‘,0

B
DC
DC
SNAP

000006 CIC2COC 0506060
0000CC CSCNC7CR
000010
000012
COCOON
000018
C1001C
000020
000029
000025

SALT

TAGS

SET ALIGNMENT
LOAD RIG, COON ADDRESS
LOAD RON. AORK*REA ADDRESS
SET FUNCTION CODE
SET FUNCTION CONTROL ROTE I

Second Area
to D m

CLOSE 08!

66.7*00
47•

CC
L

-

I

09808
A.OAIOUTI LOAD RU AlTO F2LCN600 ADDRESS

000066 0827

A

98.

SRC

A
0

49
50.
51’

37 ISSUE 580

000060
000068 GAlA

EOJ
OS
SOC

50
26

you would get the following dump when you executed the program (provided you used an
OPTION DUMP job control statement):

(

General
Registers

SNAP

<0

1

0-?

330

0.90

03?03?..1d

7,C0.71,

0055

U-F

IJOL7000

I20200O

0CijO

SNAP

TAG1-TAG2

At 720’U2L

BY 5000001

0055

315020

TO

TAG3-TAG4

SNAP

IlSIoO

TI

‘LAJI’C,

,32IC32

L,...,C..

.JT.

?
2
J
0
.‘0

‘L’U’S

—

1)’,CJ

06

0I534

000228-0111203) 9*6*0273 .T,8&C.C

(

9)DI*J1

95

•

—715028

215062

C,oU-5019&926 S8’UBJCA

9:1’..2

90133

9ACF12F

2A1537,C

22655*

•..-F

015000

Notice that the SNAP macroinstruction is placed before the instruction areas to be dumped.
If you code a large number of addresses to be dumped, the processor time to access the
addresses for the dump will increase. But, it takes less time if you access these addresses
from a general register. You preload register 1 with the address of a predefined list of one or
more address pairs (full word) specifying the areas to be dumped. The leftmost bit of the last
ending address must be set to 1 (X’80’) to indicate the end of the list to the routine that
interprets the SNAP macroinstruction.
Borrowing from the example we just used, we’ll alter it to set TAG1 through TAG4 in a
predefined list, load the symbolic address of this list into general register 1, and instruct the
SNAP macroinstruction that this register contains the address by coding:
1

10

16

SNAP

(1)

7—4

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

and inserting it in your program.
LOC.

OBJECT CODE

BOORI

LINE
1
2

80002

COCUDI)
COIC000 0561
C0C002 N7FTI 62181
CICZC3CNATNONDR
CECOOA T
CECOOC C5C6CTCB
CCIC012 HilT 6062
CACOIA
CUCDIA ,AAA
C00811C 0203

6.2DB 6081C

“JTSA

buOL

8517

r00026 81
t0C529 SCL’TSC
COCO2C AC
COCA2I UC0088
00C036 0A26
CCCS32 0207

63*1 6i’ijN

(‘.J’A2

5810 6ACA
5800 6ACA
COCIIHO 9220 1202
COCONS 9200 IOflJ

13 TAS2
14•

SPIN
CNOP

lS.TAA

LOU

16.
17’

AAL
CC

8

18’

CC

1,*’12
061’
AL 3(0 UT

A
8
A

19*
200*
21.
22

CC
CC
ABC
MVC
SHOUT
DC
0.

AL.IIOUTPOR I
(8 ISSUE SAC
OAF (8 I .BOANCM*N
OUT, U OF
0I
1, :8 lOUT

23 TAIl
24.0803
25.
26*

A
A
A
A

27.

A
A

28.
29.

980
HAl
SCALL

6

30.

CS

31.

SAC

12•

SC

000050 BAIC

B
B
8
B
8
8

33.
28*
35.
36.

DC
SAC
NOPR
ABC

000050

A

37’

565

00C050 2885

A

38’
39 TAG’)
43.080’)

SAC
CLOSE

41’

L

00C048
COCONA LIBEF
COCO’*A it
C0C098 OF
CQCONC

JAA9

000091 0107

000052
COCAS2 5610 60C6

OOCUAO
CACOBO

o723
1
‘

A

‘TJOCA A

613

BLIP

AlA
615

LIST

LA

P

(1
1,.j) A)
106
ARANCH8 () ,BRASCN’ 12
GUT • I CUTRIA
L.A

.,,:A)BAF)
1) • B2C

H
*

3111,0

First Area
to Dump

j4

LIALJ 9(1. COlE ADDRESS
’l, WOPRAREA 8709155
1
LIAD R
ACT FUNCTION COIL
SET FUNCTION CONTROL BYTE 1

Second Area
to Dump

‘39
‘IL 0(16*
DLI (‘41*

.1
13,3
CUT
[TOT)
1,:A00001

LOAD RI

.0TH

FOLET1AHE

AODRLSS

L.1b

ICCI

COCOA. U0,JDUTTIC
CUCUB8 OCA3O2N
00005038
COCiTCO At
COCUCI ,TIuOS2

COCI1BC

000505C
8
0000CA I
COCOCC

‘UOL.2

CL 8’ A ICC’
CL4 •) FC,H’
l,LIST

MAC

“1036

“.JRC8
7.20CC

A

12 1051

A
A
A

E
8
‘TUfl,

00C038
000036
00t03C

BRANCH

AC
DC
LA
SNAP
85
LA
SAC

A
A
I’,3)’ 37- A
A

C0C022 070”
CECS2N

.

5
6
7
8
9.
10’
11*

D.jTO*

rfl5fl

CACASA Hill TOTS

8

“81”12

STATERENT
START
EALP
A,

USINI,

3

Cc,CO32

C0CS2R

SOURCE
PAlO

(3)7100182

I
I

616

AT 1831
8)1802
.1) 1803*

617
AL 1)1858 I
619
620
621

:8 (OAT I
:8 (AUF)

H

NOTES:

0

Designates the predefined list of areas to be dumped. The entire list is referenced as LIST. TAG1 through
TAG3 are defined as full-word address constants (DC A). The X80 sets the leftmost bit of TAG4 to 1 (80
1000 0000). The remaining three bytes of TAG4 are specified by AL3.

(

Loads, the address of LIST into general register 1
Is the SNAP macroinstruction, indicating that general register 1 contains the address of the list of the areas to
be dumped.

The dump obtained is identical, in desired content, to the dump that was obtained using
symbolic addresses. The execution time for the program using register 1 was reduced. The
only differences in the output listings are minor, and do not affect the use of the dump as a
debugging aid. They are:
‘

The program-relative and absolute addresses differ for each method used.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

•

7-5

The listing produced by either method aligns on a double-word boundary. Because
different inline expansion codes are generated by the different uses of the SNAP
macroinstruction, there is a difference in the addresses of the areas to be dumped. So,
the listings may be slightly different (as they are in our two examples). You will always
get the exact area you want, but you can also receive the generated code of the
instruction before or after the area to be dumped, depending on where the double-word
alignment begins.

TAG1

—

SNAP

(

General
Registers

A’ SUP€A82

k

PEGS

—

IJIjIC

*P

TAG2
TAG4

(

SNAP

c’:.

C’T,1T.
8-F

0
030u

11111C

IACOIB-J01JAAA

TAG3

AT

PLSS

015138

To

C.JO1JOU

Tu

110.

fl1JOO’)Al.

C.2üTiJC..

‘T.3

2O.31..

5j15’T28

0213A1j18
TO

L1O

...6

—015018

815152

Eo’oTsSBlTAqCb 580160C1 922’11l.2 91.13

381F1.2F

OOITj7.Q OA8,5

•..—F

—015038

Another benefit of using general register 1, rather than symbolic addresses, is when there
is a large string of addresses. If you wanted to remove one of the addresses, and it was not
at the end of the string, you would have to change the entire line that contains the address.
By using a predefined list, you only have to remove the DC instructions defining the
symbolic addresses.
If you code the SNAP macroinstruction without any parameters,
1

10

16

SNAP

only the contents of the 1 6 general registers are printed.
NO TE:
The contents of general register 1 are destroyed by the SNAP or SNAPF macroinstruction. If
you want to record the true contents of the register, store it in a field within the area of
main storage to be dumped. Also, if you do not specify full-word addresses, the nearest halfword location to the left of the specified address is used.
7.1.2.

Normal Termination Dumps (DUMP)

A normal termination dump of main storage differs from a snapshot dump in that it prints
out the entire contents of the job region or all main storage, not just selected areas. The
DUMP macroinstruction causes this, and it is inserted in place of and acts as an EOJ
macroinstruction. This means your job step runs to normal completion. Therefore, a DUMP
macroinstruction terminates a job step without canceling it, unless, of course, something is
wrong with your program.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-6

Just as with the SNAP macroinstruction, you can initiate or suppress the dump at run time
through the OPTION job control statement. However, with the DUMP macroinstruction,
there are three types of dump available: SYSDUMP, JOBDUMP, and DUMP. Only one
feature is functional per job step, and their hierarchy is in the order just stated. In other
words, if both SYSDUMP and JOBDUMP are specified, only SYSDUMP is effective.

C

The specific meaning of each type of dump is explained in the dump analysis user
guide/programmer reference, UP-8837 (current version). But briefly, they can be
summarized as follows:
The DUMP feature gives you:
the job’s last executed program status word (PSW) and an identification code indicating
the source of the dump;
•

the job’s 16 general registers;

•

the job’s prologue area with the preamble and task control blocks (TCB); and

•

the job’s program region.

The SYSDUMP feature provides a method of determining why the system terminated
abnormally, which entails:
•

a translation of the state of the entire operating system into charts and texts; and

•

a hexadecimal dump of all of main storage.

The JOBDUMP feature is basically the same as the DUMP feature, except that the dump
listing is also translated from hexadecimal to a more easily readable, English-language
version of the dump. Additionally, whenever you want to use the JOBDUMP feature, you
must place the following device assignment set in your job control stream:
1

10

20

II DVC 20
//

LFD

PRNTR

If this device assignment set is missing, the dump given is of the module (program) called
JOBDUMP, not of your module.
For DUMP and SYSDUMP, a printer must be assigned to the job, but the LED job control
statement does not have to have a file name of PRNTR; the file name is what you have
specified on your DTF macroinstruction for the job’s print file.
If an OPTION job control statement is not present in the control stream, the DUMP
macroinstruction acts as an EOJ macroinstruction. The OPTION job control statement must
appear in the job step in which you want the dump to occur.

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-7

For example, if you assemble, link edit, and execute your load module, and you want the
dump to occur when you execute your load module, you place the OPTION job control
statement in the job step that executes your load module, not in the one that assembles or
link edits.
The format of the DUMP macroinstruction is:

LABEL

LOPERATIONz

[symbol]

DUMP

OPERAND

ridentification-code

()

L

0

The identification-code parameter is a 1 to 4-byte hexadecimal code you assign within the
program to indicate the source of the dump. If you use all four bytes, it can consist of four
alphabetic characters, eight numeric characters, or, because each byte can hold one
alphabetic character or two numeric characters, any combination that equals four bytes.
Examples of this are:
-

‘

12345678

•

Al 23456

•

AB1234

•

ABC12

•

ABCD

One of the reasons for using an identification code is to uniquely identify the load module
producing the dump. This serves as an identifier, which can be used for easy reference
when several different dumps are involved.
If we used an identification code of ABCD in the DUMP macroinstruction, like this:
1

10

16

DUMP

ABCD

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-8

and used an OPTION JOBDUMP job control statement, the identification code would show
up here (note also the program status word):
TASK

TASK

CONTROL

CONTROL

SUB
SUB

AT

BLOCK

TASK KEY
NEXT TCB
BACKWARD

ADDRESS

006500

I
ADDRESS —
006500
LINK AVJDRESS •
006500
VERTICAL ID •
OIYUUOU
—

TASK
TASK

COUNT

AIT

EON

U

•

TRANSIENT

OUTSTANDING

I/O HEQUESTS •
TASK SWITCH PRIORITY •
PREANALE ADDRESS •
0(1690(1
TRANSIENT ID/SAC CODE —
III

ECu

•..

VALUE

TASK

PSW—C

0

OUTTOIIO

NUURLSS

TIMES

I

S

BLOCK

U:Ou:no

•

P5W

AM

STA

PROsRAM

SYSTEM

US

uORD
EEl •

•coTooia
•

WHICH

IS

7u0Oo4 PA]

jnB

DUMP

MODE

CHARACTER

44110K

RESISTER SET IS
PROCESSOR STATE

IS

EVVCDIr

PRO,VLKM
IS PROSiER

OPERATION RODE IS NATIVE
MONjTUR MODE IS DEE
INTERUPT CODE • IS
CONDITION CODE • 3
TNSIIVUCTION ADDRESS • UOIIRF*
NONDERO INSTRUCTION IENSTH I? ATTEST
UPEHATION:
SAC DUMP
INSTRUCTION:

Identification

RED U
0000AACCI
RED A
UUUIIIJ000

code

1

REV I
(lDljUOSUO
REV 9
IYOUUOTIIO

RE, 2
UDUJDUufl
NED A
lJUlIJUUijfl

OAIuu

lIEs

RED 3
uulIUIIOrlrl
lIED Ii
UIIITUIIOUI)

9

RE

003011 U 0 U

S

U 0 U U JR Ull
RE 0
UOUULI000

C
UYIIIUITOUU

lET, A
4 CU JR B 2
REV K
00UU C
E
9

BEG

7

00000 U TIC)
RED F
RUITCIR ‘If 6

here

•

TCB

r—_____—_
1

Identification

code

OUUUUO—I0006SOO

IJOUOO2UIT

100

SOT

OTT000UOO

OCTCTOTTUOO

00006900

IROu0000

0000000TJ

•. . .

000020

COI600I8

7UUUORFA

IIUOOABC0

0000ITNOO

000II0000

00200000

UI’IJuOOUO

U000UOOU

.. .

000090—90000982

UOU000UO

U000000CY

000UUuJOO

00000000

OUU00000

000120UOU

000000012

.

00U060—R0000IEC

‘IUuOOREA

000000011

00000300

Ofl000000

0000U000

00000000

0000LIOUU

-

0000dO—ITOUCJ000U

00000000

UU0000CTIT

011000.100

OOIIOTTUOO

0000U000

OT1C IOU

U0000IUU

S.

—006580

0000AO—00000HCC

0000000fl

UU0000I)T3

OIIUU(JIIOII

UI)1)OOUOTT

000110000

UOOU000U

II000000U

S.

—00650

QOUOCUOQIJ000UII

OUv00000

.

—uOosco

...

—006520
D065’40
006560

. .R

and here:

PHODLEM

Identification
-0
code
lEG

a

III lull LI 1111

2011

VEGINTEVS

ALL, I
‘lI)UIIIl’I(J(I
RCa 9
RLUUOUIIP

USEIT

CORE

RE, 2
IUUIJUUUTT
DE5 A
LIIJUUIIUIIIT

REX)
O0I?0000IJ
VIES B
UOUO)IJ’Jfl

RE
UUI)ULTUI)U
BED C
I1ITI)UIITJI)II

REV S
UOuj000Utj
REV I)

MET, 6
uC1110
9
B
2
MEl. F

U0UuI)000

Ec
4
‘Iu000’

RED?
0120001100
RED F
‘IOTIIIILREA

(

,

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-9

If we used the same DUMP macroinstruction (with identification code ABCD), but used an
OPTION SYSDUMP job control statement, the identification code and the PSW again appear
in the task control block (TCB) area and register 0 of the program registers of the portion of
the dump belonging to the particular program (job step) that issued the DUMP
macroi nstruction.
If an OPTION DUMP job control statement was used, it would appear as:
USER (nj UurIP
P AT INTLRRUPI 4fl(6Uflh(TUOUORFAI
ERROR rOOf
PRUALE 4 PROC.HAi
S
RE(S CT—i
000LIARLU
uUUu ‘,UU
0U(l000l)U
000CTOTCITu

1

Identification
Code

RESS
JQ44

IC ii

O(JU
O
4
uQ

ADL(R

•

UO6AOO

OuUuOOuO

‘(UOUU’*82

U0000tjflU

Onunnuu

uOflOUuOO

Ou000tJuO

‘(UOuu’tEL

‘(0000,ra

UUOU

oou

PRfAMbLE
FFF(JØ
ED4A7
4
C
4

‘(((‘(U

0’(Q

(JUflOUl)44’4

OflUO’0Ui

UUOU’(CflU

4
).JCIUUSL

UUOU6BCTU

UOUUUuOU

FFF(20

D
O
3
UZL,3

UAC’4

OFO

0305U203

DF.C’(Ft(FU

7601 (5110

)UUU7U’(’4

1)U0tJ7’(58

,jOUOUuLlU

0U6’(20

40

00UUOO,U

(JCT(JU

000

001)I)OOArI

OS’4u’OflO

OuL,JOOUO

UUOUUOUU

OOUOUuOU

UU6 ‘(‘I U
OU6’46U

sw
Identification
Code

44—F

TC4
ounounno

nuoouuuu

(,U6’(UU

FFFC6O

‘4U’(tJ
4
4
O1

U76U( (Sc

(JUUCUETuF

‘(T(F7F6PO

FIFStjOOU

(U’4UUUUU

UuF4O20ti

UOUU(jufltt

FFFCUU

O0UU8OO

0000UOUO

OUnflOtOt)

Ofl’(OLCOU

JAFUObMI

OUUUOU0I

uU
b
7
USU(

OAFOUuOU

FFFCAU

OUUUUOJI

U07,uAO0

(UCIC000U

UICUITUTOU

000UUCJOO

UuUUUUUO

UUOUuCJOU

UOOUU,JOU

11069 AU

FFFçCD

OuJU0I44

0000u000

()IJfl(UUUU

OflOflUflOu

0I(OUUOCTU

CU(ILJU(JUU

uuOUu I RU

Ut)UIJOuU I

t,06RCU

FFFcO

000UC(Uut(

UOOULJ000

000

1000

UflOOfloflu

0000UOOU

JUUUUOUU

UUOUUCTCTU

LI000UUOU

006 ‘4 5 U

FFFI,fl(l

I0t1J65u1)

UflOUU1UU

20111

S0&J

000T)000U

OU(JOUOCTU

Ou(1Uó’
U
4
0

I AOUU000

00000U0U

006500

rrrozo

coloQul”

ICTOUIJ4FA

000CTARCO

OnUOrISOTi

UUUUU000

oUnuuuuO

UUOUUL)OLI

U0000uOU

nUa 620

FFFD’40

‘40tJJ0%2

UOOULJ000

flLJOfl0OI)U

OflOOUCTOl)

0000U()Ofl

OuUOU(JUO

UUOUUI)OIJ

UOU(JOtjOU

0U6690

5

FFFO6Q

‘(UutjL1’iic

4flOuU’4E 6

00(1110000

onU00000

000UOC(flO

9uU000UO

UUOUUOCTU

LI0000UCTU

006660

FFF
,
1
,0

(JUUU0O(J

JflOUUflOlJ

(T(J(J000UU

Ufl,jflflflUU

UUIIUU(I00

‘(u(PUOUUU

UUBUIEOC)

OCBIOuOU

UU658U

FFF080

000liO’4Lc

UUULJU000

OU000000

OflUPfl(IOU

[JUflUOflOCT

fiUU000uC)

QUOUU0OU

U(JUUUuOU

FFFOCO

000UUUuO

UOOuu000

°U66A0
n06S CO

Just to see what an alphanumeric identification code printout looks like, here is an example
using an OPTION DUMP job control statement with an identification code of AB1234:

051.144 10J UURP
PS AT IuTERRUpT .ILOI&OCTIII1CTOUO9FAI 544(044 rOOF .10111441234]
P440441.4 p PROSRAR REAS
4413 U—?
Ouui (2J’(
U000 500
O1JflfliCUU
(fl,Jfl,(ltlt3
IUIlIIIIfln(I

Identification•
Code

Psw
Identification
Code

‘(LOS
.J00

P—F

uOUU

(IOU

flI)ClflflU(Jl

UflUPtUu

1J(111(IUIlflU

116

ADU4(

UtJbSi)U

)L,IJ000uU

2
‘4UCTUU’(t(

UIJUIJUuI1U

iLIUUUUCI

4UIIUIJ9EC

‘(UUUU”C o

P444
4 4PCI.t

CI (IF (#2

FIF 4

1141

OUI(rl(II!ts

flh1lIfl(
l
t
)b

I(’IJU4CflU

1,JLUIlS1.(

UUOU6AIIU

LIIIUUUuTU

FF4120

D3u602u3

u4(’4

jF(I

UiO0lUJ

)(‘4IlFIj

760118110

uU1,Ci7U9

JU(IU745b

U
0
0
00uIU

jUo’42U

4 fF(90

CTICIUUOU11

UI(OU

0(10

IIunu(Ist

F PSBT9E4

S404flflhJ

llulUt(UuU

uuouL,I)l(U

JII0110..,L)ii

utIa’490

nrC in

‘FIj’U9IIqrI

u7b

6C

009(01,111

4-F iF OFu

F IF.unF0

Ou4000uU

juF
u
2
I0U

U1(U(IUI,CU

nJ640(J

F FFI,()

000U8Uu(l

U’lOUUOUU

0,4C2IJI((iI

fli4r(’C1(t

JAFUU(,’41.

ULIIl1JOU

UU7.U3(II

uAFOUuLiiJ

otJb4SO

uI,14U0

4 FFCAII

U[ttIUCJUU I

00 7,I,aflU

00(1

100-i

OflUCJ(Ifl0II

UuI)UUUCTO

1100UOUuU

UUOUUtJflU

U1(L1fl((uCIJ

iIJA4AU

FF4110

OUuJuU I

111 (U u (IflI)

((III

0011

IiOUrIit(Il(,

OIJOULJIIIIO

(I00000LtU

UUOLIU i(4U

11(101 tI02

uU6’(CU

Fr Fl F I)

(ill 1 JO ((U Cl

U CT (I (JUt) Cl U

00(11

bOo

UflUflI111(,,

UOIlu,II(flO

‘(oLuIJUUU

UUIJUIJ(I(IU

UUJUUuCJU

JUO’(E0

UflOuj2II&J

2u(l

Sun

(ifl’(flr’flI

iUf(0i(flflO

‘(Ll,,Jo’(uU

I,,OuUIlOU

uUUtIUuO.,

1(U6SUO

I P.
4
IOIILII’

OUAAI2 34

11
unit

u’JflOiIllflI(

IbIOULJUU

UJ0uOtI0

UII000uUU

OIIOS2U

PSw
IL’S
Fir

1

((U

IUI.ItJhhoO

I FF11111

CU C bUO (P

FF040

(OhiIiU4o2

Jfl(t(UIIUiJ

I(JflIIOI(1lI

iflUO11(J,,

UlOTL,U00Il

()IJLIUUUuU

Ii0110,J000

U000UuItU

oU6b’4U

Fl F 780

400UU’4..C

41II,I114F6

ITUII(’IIIIl(I

(rnIlC1nflu

IIlJflhlUUI((I

OU(uOUuU

U(JOUUOCIU

,JUUUOu(,U

tiU6SbU

j

SI(ln

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-10
Update A

You can preload register 0 with the identification code in the same manner as you load
the list of symbolic addresses for the SNAP or SNAPF macroinstruction. By using register
0, you save on execution time and conserve main storage space.
If you don’t specify an identification code, either on the DUMP macroinstruction or by
preloading it in register 0, an identification code of binary zeros is supplied by the
operating system.

NOTE:
A main storage dump and normal termination can also be requested by the console
operator entering the DUMP command at the system console. The results are the same as
for a DUMP macroinstruction included within your program.

7.1 .3.

Abnormal Termination

A main storage dump can also be obtained by using the CANCEL macroinstruction.
However, in this case, the issuing program is terminated (and any subsequent programs in
the job). This macroinstruction terminates the issuing program when error conditions are
encountered that prevent further processing.
A main storage dump and abnormal termination can also occur when the operating
system performs abnormally. This is known as a system failure dump.
The functions of the CANCEL macroinstruction can also be obtained by the console
operator entering the CANCEL command at the system console.

7.2.

CHECKPOINT AND RESTART CAPABILITY

Hardware and software malfunctions can cause your job to terminate before its normal
completion. Another reason for termination could be that the operator canceled your job
because a high-priority job required all the facilities of the computer. If the job is small,
you can rerun it without any really great loss. But, what if it is a long or complex job,
where rerunning the job could increase both processing time and cost, thereby reducing
productivity? OS/3 has provided the checkpoint facility, which allows you to periodically
record the operational status of your job with checkpoints. You can then restart the job
from the point where a checkpoint was taken rather than start the entire job all over
again.
When a checkpoint is taken, a series of records are written to a SAT checkpoint file on
disk, format label diskette, or tape. These records contain the data needed to restart the
job, which includes:
I

the checkpoint header;

•

the job preamble;

•

the primary TCB (and any subtask TCBs);

‘jP-3832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-1 1
Update A

the remainder of the prologue;
•

a list of the files open when the checkpoint was taken; and

•

your program.

Each checkpoint is assigned a serial number, which is contained in a checkpoint header
record along with the checkpoint file name, job name, and job step number. This
information is displayed on the system console and written to the system log. When you
want to restart from a checkpoint, you enter this information as parameters on the RST job
control statement.
When you restart the job, it is reestablished to a condition functionally identical to the
condition at the time the checkpoint was reached. Tape files are repositioned to the point
at which they were, and control is returned to the program at the address specified by the
checkpoint. In this way, you do not have to rerun the entire job, just the part that was not
completed. (However, if the cause of the failure is in your program, the same error will
reoccur.)
You might want to create a checkpoint record at some specific occurrence, such as the
end of a magnetic tape reel in a multivolume input file or after processing a specific
number of records. Some people prefer to generate the checkpoint record at fixed time
intervals, say, every 15 minutes (by using the SETIME macroinstruction to set a timer
interrupt).
A user issuing checkpoints and using an open file with the FCB in main storage feature
may receive errors on attempting a restart, as the file is not guaranteed to be available.
It is not practical to try to reposition data cards in the card reader when restarting from a
checkpoint. However, if you want to use the checkpoint facility with card files, you can
enter the cards as embedded data in the job control stream and use the GETCS
macroinstruction to access the data.
The capability to generate checkpoint records is a function of the supervisor, and the
capability to use these checkpoint records to restart a job is a function of job control
(through the RST job control statement).
In order to restart a job, you must reenter the original control stream with an RST job
control statement, which must appear as the first job control statement of your job control
stream. Of course, all the files needed to complete the job must be available, along with
the file that contains the checkpoint records. For information on how to use the RST job
control statement, see the job control user guide, UP-8065 (current version).

NOTE:
The LFD job control statement in the device assignment set for the checkpoint file must
not contain the INIT parameter. This parameter causes the file to be written from the
beginning of the file. In other words, the checkpoint records already existing on the file
will be overwritten.

f

SPERRY UNiVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7.2.1.

—

7-12
Update A

How to Generate Checkpoint Records (CHKPT)

A series of checkpoint records is generated each time a CHKPT macroinstruction is
executed in a program. These records must be written to a SAT file (defined by a DDCPF
macroinstruction). The use of this macroinstruction and those needed to open and close
the file are discussed later in this section (along with how the CHKPT macroinstruction is
used in connection with these other macroinstructions). The format of the parameters of
the CHKPT macroinstruction is:

LABEL

[symbol]

LOPERATIONL\

CHKPT

OPERAND

filename

[,restart-addr][,,error-addr]

All the parameters of this macroinstruction are positional parameters.

—*

The filename parameter specifies the symbolic address of the macroinstruction that
defines the checkpoint record file. This macroinstruction is a DDCPF macroinstruction for a
SAT file. The value specified for this filename parameter is also the value you use for the
filename parameter of the LFD job control statement in the device assignment set that
defines the checkpoint file in the job control stream.
The restart -addr parameter is used to supply the symbolic address of an instruction in your
program that is to receive control when restarting the program from the series of records
taken by the execution of this CHKPT macroinstruction.
If an error occurs during the execution of the CHKPT macroinstruction, the job, by default,
is terminated abnormally. However, you can place an error routine in your program to
override this abnormal termination and continue processing without the checkpoint. The
error-addr parameter is used to specify the symbolic address of this error routine. In this
way, if an error does occur, the error routine receives control; no abnormal termination
occurs. After the execution of a CHKPT macro, the checkpoint routine checks register 0,
which contains the checkpoint status, and which is, in effect, an error code. If the error
code is equal to 0, it means the checkpoint completed successfully, and processing of the
job continues. If the code is other than 0, the error routine (or abnormal termination, if an
error-addr parameter is not used) receives control. The possible checkpoint error
conditions and error codes that may occur are listed in Table 7—i. Also listed are the
possible restart error conditions and codes that may occur when trying to restart the job.

NOTE:
If you use the error-addr parameter, you must code two commas preceding it.
Once again, if you do not provide a checkpoint error routine in your program and do not
supply its symbolic address with the error-addr parameter of the CHKPT macroinstruction,
the job terminates abnormally (if an error occurs), and the following message is displayed
at the system console:
JCO3 JOB jobname TERMINATED ABNORMALLY.ERR CODE number
where number corresponds to the error code listed in Table 7—i. These error codes are
also listed in the system messages programmer/operator reference manual, UP-8076
(current version).

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Table 7—1.

Error
Code
(in Hexadecimal)

7-13
Update A

Checkpoint/Restart Error Codes

Description

Checkpoint Error Codes
AO

Checkpoint file is not opened.

Al

Unrecoverable I/O error while writing a checkpoint record

A2

Checkpoint record cannot fit in checkpoint file.
NOTE:
If the checkpoint record cannot fit, an attempt is made to write it at the start of the
checkpoint file. If it still does not fit, this error code is returned.

A3

Illegal parameter specified on checkpoint macro
Restart Error Codes

A4

Unrecoverable I/O error while reading checkpoint file

A5

At restart, processor could not locate designated checkpoint.

A6

At restart, processor could not position data tape files; unrecoverable I/O error.

A7

At restart, processor determined that supervisor was not compatible with the supervisor at the time
of the checkpoint.

A8

At restart, processor determined that hardware incompatibilities existed between the system at
checkpoint time and the system at restart time.

7.2.2.

Using a SAT File as a Checkpoint File

When using a SAT disk as a checkpoint file, as many checkpoint records as will fit are
recorded in the disk space you allocate for the file (with an EXT job control statement).
When the space is exhausted, a wraparound, in effect, takes place: the checkpoint records
are written at the beginning of the file, over the existing records, thus losing those
checkpoint records taken earlier. For this reason, you cannot intersperse any of your data
with checkpoint records on disk, because you could lose data if wraparound occurs.
With tape or diskette SAT files, as with disk files, you cannot mix any of your data with
checkpoint records; data and checkpoint records must go to separate files.

7-14

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7.2.2.1. Estimate Space Requirements for a Disk Checkpoint File

(

Each checkpoint consists of a series of 256-byte records of the following type:

Data

Checkpoint
Records

Checkpoint header

1

Prologue
Preamble
TCB

1
n

Remainder of prologue

n

File list

n

Userprogram

n

File structures

n

(2 TCB records per task)
remaining size

(

=

/
In

=

)

256

number of open files

10
user program

/

256
(n

=

4 x number of open files)

Using this list, you can estimate the minimum disk space requirements. The total amount of
space required depends on the size of your program. For example, assume your program
consisting of one task occupies 8192 bytes of main storage plus a prologue of 1024 bytes,
and six files are open at the time the checkpoint macro is issued. The checkpoint records
would consist of the following:
Checkpoint
Records

Data

Bytes

1

256

Total prologue

5

1280

File list

1

256

User program

32

8192

File structures

24

6144

63

16128

Checkpoint header
Prologue
(1 record 256 bytes)
Preamble
(2 records 512 bytes)
TCB
Remainder of prologue (2 records 512 bytes)
—

—

—

Totals

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-15
Update A

Thus, a checkpoint for this program would consist of 63 records of 256 bytes each, or a
total of 16,128 bytes. It should be noted that the previous formula results in an estimate of
minimum space required. The actual space needed may be greater or less than the
estimate, depending on the specific program environment (for example, the number of files
open at the time of checkpoint).
If you allocate only two tracks, each checkpoint taken would overwrite the preceding
checkpoint. To avoid doing this, you must allocate at least twice the minimum space
required, which in this case is approximately four tracks. The current checkpoint would
then overwrite the records recorded from an earlier checkpoint, while the most recent
checkpoint would always be available.

7.2.2.2.

Define, Open, and Close a SAT Checkpoint File (DDCPF, DCPOPN,
DCPCLS)

When employing a SAT checkpoint file, a different group of macroinstructions are used to
define, open, and close the file. We will now explain each.
In order to define a SAT checkpoint file, use the DDCPF macroinstruction. As you can see
in the format, there are no parameters associated with this macroinstruction.
LABEL
filename

LOPERATION

OPERAND

DDCPF

There is only a filename in the label field. This filename is the symbolic address and is
used as positional parameter 1 (filename) of both the CHKPT macroinstruction and the LFD
job control statement.
Because the DDCPF macroinstruction does not generate executable code, it must be
placed separate from your BAL instructions and imperative macroinstructions.
Use the DCPOPN macroinstruction to open the SAT checkpoint file (before the execution of
the CHKPT macroinstruction). It has this format:
LABEL
[symbol]

L\OPERATIONLS
DCPOPN

OPERAND
ff11 ename

l( 1)
The filename parameter specifies the symbolic address of the DDCPF macroinstruction
that defines the checkpoint file. You can also preload this address in general register 1,
and you indicate this by coding (1) in place of the filename parameter.

C..

—-

7-16
Update A

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

To close a SAT checkpoint file, use the DCPCLS macroinstruction (after the last time the
CHKPT macroinstruction is executed). The format is:

LOPERATIONL

LABEL

ii ename

DCPCLS

[symbol]

OPERAND

1(1)
The two parameter choices, filename or (1), have the same meaning as the parameters of
the DCPOPN macroinstruction: filename is the symbolic address of the DDCPF
macroinstruction, and (1) indicates that the address is stored in general register 1.
Following is an example showing the relationship between the parameters of the CHKPT
macroinstruction and the new macroinstructions we just discussed.
1

10

16

DCPOPN CKDISK

CHKPT CKDISK,RESTART,,ERR1

error

recovery

routine)

ERR1

(your

RESTART

(instruction where program

DCPCLS CKDISK

EOJ

CKDISK

DDCPF

is

to begin

if

restarted)

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-17

7.3. MONITOR AND TRACE CAPABILITY
Another means of debugging a program is the monitor routine. It enables you to track (or
trace) the execution of a program (by using a hardware interrupt) so that errors can be found
and fixed. As input, you provide monitor statements that indicate the type of diagnostic
action to be performed at a specific point in the program.
The monitor routine interrupts each instruction after it is executed, and tests whether any of
the following test conditions are stated in the monitor statement input and have been met
by the instruction.
•

A specified storage location is referenced (or the data stored at that location is
changed).

•

A specified location in the program is reached.

•

A specific sequence of instruction occurs.

•

A specified register is changed.

If any of these conditions are met, you get a printout of various types of program
information, depending on which display option you chose. This is summarized in Table 7—1.
Then, you can:
•

continue executing the program under monitor control;

•

suspend program execution; or

•

continue the normal execution of the program without intervention from the monitor
routine.

Depending on how you call the monitor routine into main storage and the choice of actions
you select, an entire task or only part of a task can be monitored.
To activate the monitor routine, you must ensure that the following provisions are met:
•

The monitor routine must be in main storage.

•

The monitor bit in the PSW must be set.

•

The task to be monitored, location options, and actions must be specified to the monitor
routine.

•

A printer must be available.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-18

7.3.1. How to Call the Monitor Routine
There are two ways to call the monitor routine into main storage. Which one you use
depends on whether you want to trace instructions from the beginning of the job or wait
until after the job begins executing.
Whenever you use the monitor routine, keep this in mind: it occupies 3K bytes of main
storage. If you specify the minimum main storage as a parameter of the JOB control
statement, make sure you do not overestimate the storage size needed by your job, because
it is possible that there might not be enough main storage available for the monitor when
you combine your job needs plus the 3K bytes needed by the monitor.
Another point to remember: the monitor routine cannot be run in a strict spooling
environment, because the job being monitored always requires the sole use of a printer. You
can accomplish this through the addr parameter of the DVC job control statement which, in
effect, dedicates a printer strictly to this job. It’s coded immediately fo4lowing the logical unit
number (separated by a comma). Every device has a hardware address number associated
with it. Your site manager can provide you with the number you need. (In most cases,
however, this number can be physically found on the device itself, generally on some type of
label.) This number is then coded in the device assignment set for the print file in your job.
Assume the printer you want to dedicate has a hardware address number of 1 70. Using 20
as the logical unit number, the DVC job control statement would be:
1

10

20

II DVC 20,170

It is also recommended that the job be run as the first job immediately after the system is
initialized (initial program load) to ensure that the job is scheduled; otherwise, you might
have to wait for the job to be scheduled, depending on the work load.
7.3.1 .1. Monitoring from the Beginning of the Job
If you want to begin monitoring with the first instruction executed, you must call the
monitor routine into main storage before the job to be monitored is run. In this case, the
monitor input is entered as embedded data in the control stream. The following job control
statement must be inserted into the job you are monitoring:
II CC MO

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-19

If enough main storage is available at the time the job is scheduled, the monitor routine will
be loaded at the time the job is initiated. If enough main storage is not available, it is
possible that your job could be scheduled without the monitor routine. This could happen
because the // CC job control statement cannot guarantee immediate loading of the
monitor. If this happens and your job is scheduled without the monitor, you may select one
of two options as follows:
1.

Wait until more main storage is available before running your job.

2.

Load the monitor routine into main storage by using the MO console command. The
format of the command is:
MO

After typing in the command, you can verify that the monitor had been loaded by typing
in the following console command:
MI

DA

If the monitor routine has been successfully loaded, the symbiont SL$$MO will appear
among the jobs and symbionts listed. When you have verified that the monitor is
loaded, the job to be monitored should be run WITHOUT the // CC job control
statement.
If you want to use the monitor beginning with the first instruction of the program, you must
enter the monitor statements as embedded data in the job control stream. The job step that
contains the program to be monitored must include an OPTION job control statement with
the TRACE parameter specified. This parameter activates the monitor routine by setting the
monitor bit in the PSW and creates a link between this job step and the monitor statements.
If the OPTION job control statement is not present in the proper job step (the one with the
monitor statements the one you want to trace), it will not activate the monitor routine
because an OPTION job control statement is effective only in the job step in which it is
encountered. As soon as the program begins executing, monitoring begins, and it continues
until the program completes or until the monitor is deactivated by meeting the conditions
that accompany a Q action (7.3.5.3).
-

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-20

The control stream you submit when you want to monitor from the beginning of the job
would look something like this:
10

1
1.

/7 JOB

5.

6

jobname

device ass gnment sets
and any other necessary
job control statements

2.

3.
4.

20

II CC MO
II OPTION TRACE
II EXEC program-name
Is
monitor input-explained
in 7.3.2
7*
II PARAM operands
Is
any data cards
needed by the program

7.

8.

I,
/&
II FIN

1.

Is the JOB control statement, which must be present at the beginning of every job.

2.

Represents the device assignment sets and any other job control statements you
might need to define the requirements for the job.

3.

Is the OPTION job control statement indicating you want to monitor the job step. It
is placed before the EXEC job control statement for the job step.

4.

Calls the program from a library and initiates its execution.

5.

Shows where you place the monitor statements. They are enclosed by the /S and
/* job
control statements (start of data and end of data). The monitor statements,
in effect, are data for this job, but their presence does not affect processing of any
other data for this job.

6.

Indicates where you would place any PARAM job control statements that pertain
to this job step: after the monitor statements, but before any other card data files.

7.

Is the start of data, card data file, and end of data.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

8.

7-21

Ends the job and terminates the card reader operations. Of course, there could be
more job steps than this, but for the sake of brevity, we have shown only a singlejob-step job.

7.3.1.2. Monitoring after Execution Begins
It should be noted that, when the monitor is in use, it executes several instructions of its
own for every monitored instruction in the program. For a large program, this could require
excessive amounts of processor time, especially if the problem area is at the end of the
program. (If it is at the beginning of the program, a Q action can be used to deactivate the
monitor after the necessary data is obtained. The Q action is described in 7.3.5.3.) However,
once you determine the particular area in which the problem exists, you can limit the
monitor activities to this portion of the program. You do this by initiating the monitor routine
via a console type-in (7.3.1 .1) after the job begins execution, and then entering the monitor
statements through the card reader (or the system console if a card reader is not available).
This requires some form of communication between you and the console operator, either
oral or written.
The executing program must be temporarily suspended so the monitor can be activated
before the area of code to be monitored is passed. There are three different methods for
doing this.
First, if you have an instruction in the program that you do not need for this execution, you
can use the ALTER job control statement to change that instruction to a supervisor call
(SVC) for the YIELD routine. This changed instruction must be a point in the program before
the area to be monitored. The ALTER job control statement would look something like this:
1

10

20

30

I/ALTER phase-name,address,X’0A04’

The ALTER job control statement and its parameter are explained in the job control user
guide,UP-8O65 (current version). The X’0A04’ (positional parameter 3)is what replaces the
existing instruction and makes it an SVC instruction for the YIELD routine. It causes the
program to halt at the address on the ALTER job control statement. You tell the operator to
have the monitor statements ready in the card reader. When the program halts, the operator
types in 00 MO R, which activates the monitor routine. (This acts just like the TRACE
parameter of the OPTION job control statement.) The monitor statements are then read into
the system, and the program named on the monitor statement is matched against all the
programs currently executing, until it arrives at the proper program (this applies to all three
methods). In 7.3.2, we explain the format for the monitor statement input, which applies to
input entered after execution begins or as embedded data in the control stream. However, it
should be noted that when monitor statements are entered after execution begins, no /$ or
/*
job control statements are needed to enclose the monitor input. Since all the job control
statements are read before execution, an OPTION TRACE job control statement is not
included in that control stream to activate the monitor. If you examine the control stream
shown in 7.3.1.1 used to activate the monitor from the beginning of the job, you will see the
difference between it and thefollowing control stream used only to start the job and alter an
instruction in your program. (It does not activate the monitor; a console type-in does.)

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

1

10

20

30

7-22
Update B

40

50

necessary

job

II JOB jobname
II ALTER phase-name,address ,X0A04

device

ass

gnment

sets

and any other

control

statements

II EXEC program-name
II PARAM operands
Is
any data

cards

needed

by

the

program

/1 FIN

The explanation for each job control Statement IS the same as for the corresponding job
control statement in 7.3.1 .1.. Notice the absence of an OPTION job control statement and
the monitor statements and the presence of the ALTER job control statement.
After the monitor statements have been read, the operator must issue the GO command,
using the same job name as that on the JOB control statement. This resumes program
execution under monitor control.
The second method of suspending the executing program is the use of a DMDSP
macroinstruction with a REP parameter. By placing it in a location near the area you want to
monitor, you can use the halt when the program is suspended and the message it generates to
instruct the operator to activate the monitor. Once again, the operator must have the monitor
statements ready in the card reader (no /$ or /*). He then enters 00 MO R to activate the
monitor. After the monitor statements have been read, he enters the reply you requested with
the DMDSP macroinstruction to resume processing under monitor control. The monitor input is
exactly the same as when using the first method. That is, no /$ or /* encloses it, and an
OPTION TRACE job control statement is not submitted in the control stream. (And, in this case,
no ALTER job control statement is submitted.) For more information on the DMDSP
macroinstruction, refer to the consolidated data management macroinstructions user
guide/programmer reference, UP-8826 (current version).
The third method is to instruct the operator to type in the PAUSE command at some specific
place in the program execution. This could be after a certain time limit has expired, or when a
certain milestone is reached, such as the end of an input tape file. The operator places the
monitor statements in the card reader and, when the system halts, types 00 MO R to activate
the monitor routine. After the monitor statements are read, he finally types GO and the job
name from the JOB control statement to resume program execution under monitor control.
When activating the monitor in this way, the *pzphase..name entry cannot be used to specify
the type of task to be monitored. Use either the *Ujobname or *Szsymbiont..name entry in the
monitor input deck. These entries to the monitor input format are described in 7.3.3.

(

UP-8832

SPERRY UNIVAC 05/3
SUPERVISOR MACROINSTRUCTIONS

7-23

There might be a situation when there is no card reader available to read in the monitor
statement (or no keypunch readily available to prepare the monitor statements). If this is the
case, the operator can type in 00 MO C at the system console. The C indicates to the
system that the monitor statements are going to be input via the console, not via a card
reader. (This applies to entering the monitor statements during all three methods of
suspending program execution.) In this way the operator can enter the task, options, and
actions at the console. He enters one card at a time, a line on the screen corresponding to a
card in the monitor statement input, and indicates the end of each card by pressing the
TRANSMIT key. After all monitor statements are sent, he enters the GO command followed
by the job name.

7.3.2. Monitor Input Format
The monitor statements define what to monitor (task), when to monitor (option), and what to
do when you monitor (action). This applies to monitor statements submitted via the control
stream as embedded data before the job begins, and to the monitor statements used by the
operator after program execution was begun. (Remember, the /$ and /* job control
statements are only needed when the monitor statements are submitted as embedded data.)
For the program you want to monitor, only one task can be specified. It must be coded as the
first monitor statement of the input, and no options or actions can share this card with the
task. These tasks are explained in 7.3.3. For the task, however, you can specify up to 15
different options. (Each option must be on its own card; no two options can be present on
the same card.) Each option can specify as many actions as will fit on a single card. A space
must be used to separate the option from the first action on the card, and each succeeding
action is separated from the previous action by a semicolon (;).
So, if you want to specify one option and one action, it would be coded as:
1

10

20

option action

If you wanted three different options, each with two actions, it would be coded as:
opt ion-i act ion-1;act ion-2
opt ion-2 act ion-i;action-2
opt ion-3 act ion-i;act ion-2

The last card used in the monitor input stream is a $ card. (Do not confuse this with the /$
job control statement, which indicates start of data.)
So, the order of a monitor input stream is:
I

the task statement;

•

the first option statement with its actions;

•

any other option statements and their actions; and

•

the $ card.

7-24

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

C

The options are described in 7.3.4, and the actions are defined in 7.3.5.
Figure 7—1 shows the format of the monitor statements.

task

I

First

( *Ujobname
name
<
name
number)

Monitor
Statement

(

7
Succeeding
Monitor

S

((PR:xv)
(B/D:bddd)
((ABS:xv)

/

—

I

A(PR:xv) [Rnn]

Statements

DAR [n[_Rn]]

(

R(n)

-

)

1,

-

)

I

—

((PR:xv)
DS[Lnn] (B/D:bddd)}
(ABS:xv

;...;

I

(

Hccc

J

Hccc

/

\Q

1

DR [n[_Rn]]

I

)

((PR:xv)
DS[Lnn] (B/D:bddd)>(
(ABS:xv
‘

I

I(xmcd)

Nate2

succeeding
actions

first
action

option

I

Note 1

-

-

)

—

NOTES:
1.

If no option is specified, the monitor routine assumes a default option (7.3.4.5) and default display (7.3.5.1 .3).

2.

If no action is specified, the monitor routine produces a default display (7.3.5.1 .3). Also, remember that the first
action is separated from the option by a blank space, and any succeeding actions are separated from the previous
action by a semicolon.

Figure 7—1. Monitor Input Format

7.3.3. Defining What You Want to Monitor
The task you want to monitor can be one of four types:
1.

Your entire program

2.

A certain phase of your program

3.

A symbiont, which is a system utility routine

4.

A transient, which is an
area when needed

OS/3

routine that is nonresident and is called into a transient

C;

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-25

In this format:
*Uj obname
P=phase

-

name

‘S=symb ont

-

• T=t ran s i en t

name
-

numb e

you can see that each type has its own specification, and each type is preceded by an
asterisk.
If you want to monitor all the phases of your program, use the *(J=jobname entry. The
jobname is the same as the jobname parameter on the JOB control statement. (Remember,
if you have the operator enter the monitor statements after the program has started, you
can limit monitoring to a part of the job step; otherwise, the job step is monitored from the
beginning.)
For example, if the JOB control statement is:
1

10

20

II JOB POCO

the monitor task statement would be:
1J=POCO

Because a program can consist of more than one phase, it can be useful to use the
specific phase name with the *pphasename entry. (A program can also have more than
one phase.) If you want to monitor a phase, you have to know its name. The names of the
phases used in a program are listed on the allocation map provided by the linkage editor.
(Remember, operator input can limit the monitor to a portion of a phase.)
If the phase name you want is this:
MA

ALLOCATI’’I
LOAD

KODUL A

NOON
LAF.LODLJU
START
—

NOOC.
ALJIO.
76110/U,

AlA

no y
hdCLhlt)LD
US.69 —

LNLUL,

-

FLAb

LAL

1T1

—

flhADUDOLL
1510

LA UA
(IUUUUUUU

HIAUIhR
OUTBJ(ThCR

LLN..TP
000005CC

UI
il
UI
UI
UI
il
UI
(ii

000UUUUU
L)ULJOUAIUU
UU000IJUU
0bu
00
OUIJ
IIUIJIJUUUU
OIIUIW000
OOUUUUj
hlUuULh(IUU

(IUOJUNAF

000UUb0

01

)UUUOUuU

—

ELEhAhiS

flf$J

ORE.

—

PhAllI
-PANIYI
l)PNCJIYT
IWA.OPihh
UPAOYl
UPICONA
UPACOAS
)PACOhS
OP%COY4
Oh’RCORj

the monitor task statement is:
P=I.NK 10000

SI LA

OAJ
CSECT
ENTRY
Ei,AAY
EitRY
ENTRY
ENTRY
ENTRY
ENTRY
ENtRY

(hflhJ000Uhh
00000IIUII
0000000()
00000UUO
oOuthi000
110000000
OOUOIJ000
00000000
OUu000hill

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-26
Update A

To monitor a symbiont, you have to obtain its name from the system load library file
(SYSLOD), and use the *S=symbiont..name entry. For example, the name of the system
utility symbiont (SU) is SL$$SU. To monitor it, you would code
1
*

10

20

s=s i.$ $U0ø

as the monitor task statement.
Every transient has a decimal number associated with it. A list of these decimal numbers
is maintained by the supervisor. If you want to monitor a supervisor transient your
program is using, your Sperry Univac systems analyst can help you in determining the
*
number of the transient you need. Once you have obtained it, you use it in the
T=transient-number entry. If, for example, the transient number is 24, you would code the
monitor task statement as:
‘T=24

NOTE:
If the job or symbiont you want to monitor has one primary task and one or more subtasks,
you can monitor only the primary task.
Specifying Options

7.3.4.

The second and succeeding cards used for monitor statements specify options and actions,
that is, points in the program where one or more actions are to be taken by the monitor
routine, and what is to occur.
The first entry in each of these cards specifies the option. This may be followed by one or
more actions to be performed at the specified location (or else a default action applies).
These actions are described in 7.3.5. In this discussion, all the options are discussed first
and then the actions. You can tie the appropriate options and actions to a task to obtain
your desired result.
If there are duplicate or overlapping options, only the first one specified is processed at
execution time. For example, if the same instruction location is specified by two separate
cards, the monitor routine performs the actions requested on the first card for that location
and then executes the instruction. The second card is never considered for that location,
even if the actions are totally different.
Options may be specified in any sequence; there is no need to list them according to any
pattern. Remember, in the case of duplicate or overlapping options, only the first option is
‘)rocessed.
There are four types of options you can specify, using the following format:
S

(PR:xv)
(BID: bddd

(ABS : xv)
A(PR : xv)
I ( xmcd
R( n)

[ Rnn ]

(.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-27

The S option is used for storage reference, the A option for instruction location, the I option
for instruction sequence, and the R option for register change. Each, along with its
associated parameters, is discussed in the following subsections.
7.3.4.1. Storage Reference Option (S)
This option requests the monitor routine to take action when the specified storage location
is referenced or the data at that location is changed. There are three ways to express the
location in a storage reference option:
1.

Program relative (PR)

2.

Base/displacement (B/D)

3.

Absolute (ABS)

7.3.4.1.1.

Program Relative Address (PR)

The format for the storage reference option using a program relative address is:
S(PR: xv)

The xv is the address, and can consist of from one to six hexadecimal characters, in the
. Notice that it is separated from the PR by a colon. For example:
16
range 016 to FFFFFF
1

10

20

S( PR: 43C)

Because this format is shown with an underline under the P, you could also code it as:
S( P : 43C)

This is explained in the statement conventions.
In this example, this option is selected if program execution reaches an instruction that
references storage at program relative address 43C. The location specified need not be the
first byte of a field. For example, a move instruction from location 42E for 18 bytes would be
detected because the specified program relative address 43C falls within the field moved
(42E to 43F).
For your program, a phase of your program, or a symbiont, a program-relative address is
relative to the start of the load module. In other words, the address in the assembly listing
must be added to the link origin (LNK ORG) address for the control section (CSECT) of your
program. This shows up in the allocation map produced by the linkage editor.

7-28

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

For example, if you wanted to monitor from address 32 in this program listing:
LCC.

label for the phase

OBJECT

CODE

ADDR1

00012
00084

000DB

000028 81
000029 0000SC

YOU

A
A
A

Oo’)OE
A
A
00033 A
A
A

000024 ‘451) 602E
00002C 80

A

COCO2D 000088
C0003O 0826
0207 60A3 6004

A
A
OuOA2

BRANCH
5
6
7
A
9+
10.
11+
12 TAGI
13 TAG2
4

00000

000022 0700
00C024

address—..—..——..-—————.——*

SCUACE

2
3

000006 C1C2C3CN4TUO4O’40
COCODE C5C6C7CA
00C012 ‘4110 6382
00C016
00C016 4111 0000
COCOAA QAbA
COCOIC 0203 6008 600C

LINE

ADOR2

COC000 3560
00C002
00C002 ‘43RD 631U

DLICL6

114+

15.TAG2
16’
17.
18’

19.
20.
21+
22
1A13

GTATLMLNT
START
LALR
A,
USING 4,6
9.16
6
CL&ABCD
CC
C14’LFGH
CC
1,LIST
LA
(1)
SNAP
OH
OS
1,0(11
LA
106
SYC
ERANCH+8(4(,BRANCH.10
PVC
CUT,(CUTROA)
OPEN
,4
CNOP
LII
j,s.12
AOL
0,81,
LC
AL3OIJT(
c
DC
X’BC’
AL3(OLTRIB)
DC
38 ISSUE SOC
SVC
DOUT

would have to look at the allocation map for the LNK ORG of the CSECT (4B0):
4*

LOAD

4001(11

ALLOCATION PAP
SIZE

.NloLOC

-

LABEL
FLAG
TRANS ADDR
PHASE NAME
ROOT
NODE
LNRL0000
*4* START OF AUTO—INCLUDED ELEMENTS
Sa. END OF AUTO—INCLUDED ELEMENTS
P800
80/02/22 04.35
P801.
OUT
OUTRIb

TYPE

*4

-

ESIC

LNK ORG
CL7JO

11
31
01

CC07JT1.

—

HIDDOR
‘JTC
O
0
CF

LENGTH
70707000

OBJ ORG

737070CR

JOOCG
7
TC

TOC0700U
TOT C “ 05 C
70000088

—

-

—

—

012
CSECT
ENTRY
ENTRY

CDOCJSC

I

CC 7 0000

and add them together, producing 4E2 as the program relative address. This applies to
both single-phase and multiphase load modules. However, with the mu[tiphase modules,
additional considerations are necessary. One phase can overlay another phase, so the
same program relative address can be used in more than one phase. In order to monitor
the correct phase, you should use the *pphase..name entry discussed in 7.3.3.

C

If you want to monitor a transient routine, the address is relative to the start of the
tra nsient.
Another important point to note is that when using the storage reference option for a
program relative address, you frequently will obtain two groups of monitor output for a given
option. The first printout is produced just before the execution of the instruction that
references the location. This may be either a read or write type of reference. The second
printout is produced on the next instruction, but only if the data at that location has been
changed. This may appear to be superfluous and even confusing (the second instruction
shown will probably not even reference the area), so this printout should be considered as
only a changed data confirmation.
The real value of this second printout comes in those cases where the data is not changed
directly, so no reference (first printout) occurs at all. This includes cases of areas changed
by execute instructions (EX), supervisor call instructions (SVC), I/O operations, and
occasionally even supervisor or symbiont routines running concurrently. So, in any case
where a storage reference option printout seems invalid (the instruction printed does not
reference the data location), check the preceding instruction in your program for an EX or
SVC instruction or an I/O operation.

C)

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7.3.4.1 .2.

7-29

Base/Displacement Address (B/D)

To use the base/displacement address method for the storage reference option, you need
this format:
S(B/D: bddd)

Here, the b is the base register, and the ddd is the displacement; b can range from
,
1
F
6 and ddd can range from 00016 to FEE
. For example, if you used:
16
1

10

016

to

20

S( B/D : 4B29)

an instruction that contains a storage reference of 4829 must occur to make the monitor
take action. In other words, for this option to be effective, your program must have a storage
reference using base register 4 and a displacement of 829. Notice the colon separating the
B/D from 4B29.

7.3.4.1.3.

Absolute Address (ABS)

You use this type of option primarily when you are using system symbiont or transient
routines that can refer to locations that are outside of their area. But you might also find it
applicable to your program as well. It uses this format:
S (ABS : xv)

The xv is the absolute address, and can consist of one to six hexadecimal characters, in
.
16
the range of 016 to FFFEFF
For example, if you want the monitor routine to take action when the program reaches an
instruction that references storage at absolute address 34AE, you would code:
S(ABS : 35AE)

7.3.4.2.

Instruction Location Option (A)

This option requests the monitor routine to take action when the specified instruction
location is reached. Just as with the storage reference option, it uses the program relative
address. However, you can also add a range to continue this monitor action for a specific
number of bytes. It has only one format:
A(PR : xv)

[

Rnn

The xv is the 1 to 6-hexadecimal-character program relative address (016 to FEFFEF
). If the
16
program reaches an instruction at this location (program relative), monitor action begins.
You can also continue monitor action for this option for a length of up to 255 bytes by
specifying a range (Ann). The allowable values for this range field are 0216 to FE
.
16
-

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-30

For example, if you coded either:
10

1

20

A( PR: C02)

or
A( P : C02)

the monitor takes action for this option if the instruction at program relative address is
reached.
If you coded (notice the convenient form P instead of PR):
A(P:C02)RØE

monitor action begins when the instruction at program relative address C02 is reached, and
continues for 14 bytes (OE). This means the monitor action is to continue until program
relative address Cl 0 is reached. Note that you must use two hexadecimal characters for the
range even when it can be expressed in one. In the last example, if the leading 0 of OE was
omitted, and it was coded as this:
A( P : C02 ) RE

monitoring would continue for 224 bytes to program relative address CE2.

7.3.4.3.

Instruction Sequence Option (I)

This option requests the monitor routine to taken action when the exact instruction
sequence specified is reached. The monitor routine compares the machine code specified in
the option entry to the actual instruction sequence of each instruction to be executed in the
program being monitored, and takes action when an exact match occurs. The format for the
instruction sequence option is:
I

(

xmcd

)

The xmcd stands for hexadecimal machine code. It may consist of from 2 to 64 hexadecimal
characters (1 to 32 bytes). This is the value you want compared to the actual machine code
being processed.
There are three different types of machine code sequences you can select:
•

A single instruction

•

Just the operation code of an instruction

•

A string of instructions

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-31

For example, if you want monitor action to start when a supervisor call instruction for
supervisor routine 31 occurs (SVC 31 in machine code = CAlF), code it as:
1

10

20

I (OA1F)

If you want monitor action whenever any branch on condition instruction is reached
(hexadecimal code = 47), you would code:
1(47)

But, if you want monitor action to occur whenever the following sequence of instructions
occurs (even though we are showing a series of inline expansion codes):
0CC.
CO CA 00
COC000
COCOO2
00C002
CCCOO6
COCOOC
80C012

OBJECT CODE

ADDRI 8DDRO

0561*
47*13 6010
CIC2C3C040404040
C5C6COC8
4100 6082

‘30002

SOURCE
LINE
1 P600
2
3
4 BRANCH
S
6

0.4004
B

A
COCO3D 0826
C0C032 D2E7 6080 60144 00002 00006
C00038
COCO3A
OBCO3C
COC000
COCOON

5810
5800
9220
9200

60C6
6QCA
1002
1003

COCON8
CBCOO8 0AEF
000000 SC

A
0.40CR A
000CC A
A
A
A
B
B
B

20*
22
23 1053
2HT8G2
25.
26.
27*
28•
29.
30.
31.
32•

STATEMENT
START
EALA
6.0
USING 0,6
•16
b
CLB’ABCD
DC
CLR’EFSH’
DC
LA
0,L151
(0*
SNAP

SAC
MAC
DROUT
DC
0
L
091
MAO
SCALL
05
SAC
DC

38 ISSUE SAC
BUF(B).8BANCHN
OUT,AUF
0040* *
1,:A(OUT)
L,:ALALJF
S
2111,X’214’
3(01,0 S
47

SET ALIGNMENT
LOAD RiB, COOS ADDRESS
LOAD BIOS, 000RAREA ADDRESS
SET FUNCTION CODE
SET FUNCTION CONTROL BATE 0

.H

239
VLI(0A)

you would code it as:
I(581060C6580060CA922010029200 1003)

7.3.4.4.

Register Change Option (R)

This option requests the monitor routine to take action whenever a specified register is
changed. It has only one format:
R(n)

The n is the hexadecimal number of the registers to be checked. Because this monitor
action is triggered by the comparison of the current register contents to its previous
contents, the instruction displayed when the change occurs will be the instruction
following the instruction that caused the change. This is similar to the storage reference
option for a program relative address (7.3.4.1.1.), which also occurs after the storage
location changes. (Remember, it is possible to get two displays from a single storage
reference option: one before and one after the area changes.)
For example, if you want monitor action to take place whenever the contents of register 10
change, you would code:
R(A)

Because the contents of registers are changed frequently during the course of most
programs, the register change option may produce a large amount of display printout.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-32

No Option Specified? You Get a Default

7.3.4.5.

*,
or
If you omit the option specifications (if your monitor input consists only of the *U,
*T card, and the $ card), the monitor routine interrupts each instruction in the task before its
execution and prints out pertinent information at that point in the program. The processor
then executes the interrupted instruction (identified on the printout as the NEXT INST). The
succeeding instruction is then interrupted, the printout produced, and the instruction
executed. This interrupt, printout, and execution pattern is performed for each instruction
processed. This could require excessive processor time and could produce a huge printout of
unneeded information. Therefore, you would use the default option only for special cases.

The program information printed is the same as for the default display described in
7.3.5.1.3, except that there is no option mentioned on the printout because one is not
specified.
7.3.5. Specifying Actions
Action entries follow the option entry on the monitor statements. They share the same card;
option is specified first, then any actions. Actions for an option must be completely specified
on one card; no continuation to the next card is permitted. If there are duplicate or
overlapping options, only the first one specified is processed, and any action specified on
this second card for the same option is never considered.
There are four different types of actions: D, DAS, H or Q (plus a default), as shown in this
format:
DL\R

[

n [—Rn]]

DAS[Lnn]

(PR: xv)
(B/D:bdd
(ABS: xv)

Hccc

Q
NO TE:
If no action is specified, the monitor routine produces a default display (7.3.5.1.3).
The DAR and DAS actions (for display register or display storage) print out program
information, including specified registers (DAR) or storage (DAS), and continue monitor
processing.
The H action (for halt) prints out the program information and suspends the job until it is told
to continue.
The Q action (for quit) prints out the program information, then deactivates the monitor
routine so that processing can return to normal.
If you omit an action entry, the monitor routine produces a default printout of program
information (including changed registers and storage) and continues monitor processing
until the end of the program.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-33

7.3.5.1. Display Actions
There are two types of display specifications: register display (DAR) and storage display
(DAS). But the addition of a default display provides you with the capability of having three
types.
The three display actions have similar functions; that is, program information is printed,
then the instruction causing the printout is executed, and program processing continues
under monitor control. The printouts are basically the same, except for a few minor
differences, depending upon the type of display action requested.
7.3.5.1.1.

Register Display (OAR)

If you select this type of action, you get the following items:
1.

The jobname, TCB address, and program base address. Because this information does
not change during the course of program execution, it is given only for the first option
that causes a printout. Remember, you can have up to 1 5 different options; it would
be senseless to print any information about the program that does not change.

2.

PSW contents

3.

Next instruction to execute (which is the instruction causing the printout)

4.

Option causing this printout

5.

The Contents of the specified general registers (four bytes)

After this printout is given, the instruction executes and the program continues processing
under monitor control (that is, all remaining instructions are traced to see if they match
any other options that might have been specified).
You can cause one or more general registers to print by selecting one of three ways to
display a register. The format shows the three different types (combined into one format):
DAR

[ n [—Rn]]

•

DAR, which prints the contents of all 1 6 general registers

•

DARn, which prints a specific register, with n being the hexadecimal number (0—F) of
the register you want

•

DARn—Rn, which allows you to print a consecutive number of registers. The first n
indicates the first register (0—F), and the second n indicates the last register (0—F).

7-34

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

For example, if you wanted to display register 1 5 when the program reaches a program
relative address based on the instruction at assembly address 32 in this listing (remember,
the assembly address (32) must be added to the LNK ORG address, which in this case is 0,
to obtain the program relative address 32):
—

SOURCE STATEMENT
LINE
START
1 PADS
BALR
6.0
USING
6 BRANCH
*‘lN
00012
47F0 6010
CLRABCD’
DC
CZC2C3CNNONOAONO
CL8’EPGH
DC
CSC6C7CR
LA
“LIST
7
03084
4110 6082
SNAP
(1)
*
Dl
9.
LA
5,0(1)
00000 A
10+
6111 0000
A
106
SAC
11’
086*
MAC
BRANCH•B IN) .BRANCH+ 12
12 9*61
0203 6008 600C 0000* 00000
OPEN
OUT, I OUTRIA
13 9652
A
CNOP
14.
0700
A
LOU
15.9*62
BAL
1, .+1 2
16’
00030 A
8510 602E
A
DC
6•81’
17’
11
A
AL 3 (0 UT
DC
18’
00005C
A
0’RD’
DC
39.
#0
A
DC
ALl (003618)
20.
000088
38 ISSUE SAC
A
SAC
21•
MAC
ReF (8 ),BRANCH’N
22
60*0 6006 000*2 000061
OMOUT OUT , B UP
23 7*63
A
DC
ET(0) •
34.3*13
1,A(OUT) A
000C8 A 25.
1810 60C6.
E,:A(BUF) A
26’
000CC A
1800 IOCA

(.00.
OBJECT CODE
000000

ADDRS ADDR2

000000 0560
000002
000002
000006
00000E
000012
000016

000016
00001A
00001C
000022
000026
000026
000028
00002M
0000ZC
000020

address
000038
000038
000030

SET ALIGNMENT
LOAD 611, CDII ADDRESS
LOAD ROB, WORRARCA ADDRESS

you would code:
1

10

A(PR:32)

D

20
RF

and your monitor printout would look like this:
Job Name

Option
Causing
Printout’N.

TCB Address

\

TCb—’CJ76GC

CG030032

NEXT INST

MONITOR USLR— LOAMPLE1
OPTION *.A9 I.LOC(.OOO32)

PSA=E0161T26

o rogram

Status
Word

=

Program Base Address

P.UASE.

—

CTCTP]JC

b2O76TACbOCL

This is also the instruction
causing the printout.

register 1 5

If, for the same program, you coded:
A(PR:32)

D R

the contents of all 1 6 registers (plus items 1 through 4) are displayed, like this:
MONITOR

USER—

PLE3
T
EXA

TCA—C”CC7DCC

P.AASE,

—

OPTION ‘‘AT I.LOC(003032)
D2C760AO6I4
00000132
NEXT INST
PSwO161O26
P2— 2OiU0C0C
63— :10000cc
Ri— *00014pE
Rf— O0OC261
0*— OQ0’
6*— 00001010
Ec— .0000000
RE— 03000000

T4— ‘O0O0G0
EL— “3DOC3

*3— 0003100fl
RD
OCOOJ030

MA— 60000332
RE— 00000032

A?—
RF—

C0CC00J

0C030000

C

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-35

Both of these examples would have continued monitoring for the option until the end of the
job. However, if you add a quit action (Q, which will be explained in 7.3.5.3) you would have
obtained the same printout and discontinued monitor control. This holds true for all options.
If you want to monitor only a specific area or instruction, it is advisable to end the option
with a quit action, so additional processor time is not wasted by having the monitor search
when there is nothing left to find. Coded with a quit action ending the option in the last
example, it would have looked like:
1

10

A(PR:32)

0 R;Q

20

Notice that a semicolon is used to separate the actions.

7.3.5.1.2. Storage Display (DAS)
Most of the information provided by a storage display type of action is similar to that of a
register display (7.3.5.1 .1): you get items 1, 2, 3, and 4. However, item 5 is different; the
storage display action prints out the contents of specified storage locations.
After the printout is given, the instruction executes and program processing continues
under monitor control.
You can specify up to 256 consecutive bytes of main storage with a length option, or the
monitor prints (by default) 8 consecutive bytes starting at the specified storage location.
Just as in displaying registers, the storage display action has three different types, but each
is shown in its own format, because of their diverse range of actions:
DLS [Inn

I (PR: xv)

DAS [Inn] (BID: b ccc)
DAS [Inn] (ABS : xv)

Each one has a length option, shown as Lnn, which allows you to specify how many
consecutive bytes of main storage you want displayed. L indicates that this is a length
specification, with nn as the length, in the range of 0116 to FF
16 (allowing you to display 256
bytes).
The item after each length expresses the method in which you want to display a specified
location in main storage. They have the same format and meaning as the storage reference
options explained in 7.3.4.1, but are not to be confused as to function (action versus option):
•

(PR:xv) is used to display a main storage area starting at a program relative address.

•

(B/D:bddd) displays a main storage area using base/displacement.

•

(ABS:xv) displays storage starting at an absolute address.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-36

The xv is the address for program relative and absolute addressing locations, in the range of
. The bddd is for the base displacement method, where b indicates the
16
016 to FFFFFF
16 and ddd is the displacement (in the
F
number of the base register (the range is 016 to ),
).
16
range of 00016 to FFF
For an example of the option, we will use an instruction sequence (I) to prevent any
confusion that might initially arise by seeing similar codes (such as a program relative
option (PR) and a storage display action starting at a program relative address) on the same
line:
10

1
1(47)

20

DSL14(PR:3C)

This displays 20 bytes (1416) starting at program relative address 3C. This happens
whenever any branch condition is reached in the program (hexadecimal code 47).
If you want to display eight bytes (default) starting at the address using base register 1 and a
displacement of B29 whenever any branch condition is reached, you would code:
1(47)

DS(B/D:1B29)

If you want to display the default eight bytes starting at absolute address 35AE whenever
any branch condition is reached, code:
1(47)

DS(ABS:35AE)

If you wanted only four bytes at absolute address 35AE whenever any branch condition is
reached, code:
1(47)

DSLO4(ABS:35AE)

Notice that you must use two hexadecimal characters for the length even when it can be
expressed in one.
The following example uses a program relative option and a program relative address for the
action:
A(PR:2A)

D S(PR:3C)

When the instruction at program relative address 2A is reached, a storage display of eight
bytes starting at program relative address 3C is produced.

C

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-37

7.3.5.1.3. Default Display
You can omit the action specification; that is, you can enter an option without specifying any
particular action you want taken when the monitor option becomes effective. In this case,
the monitor routine prints out items 1, 2, 3, and 4 listed in 7.3.5.1.1, and (items 5 and 6):
5.

The contents of any general registers that were changed since the last printout was
given. If this is the first action taken by the monitor routine for this program, the
present contents of all the general registers is printed.

6.

The contents of the storage locations referenced by the instruction causing the
printout.

The instruction causing the printout is then executed, and program processing continues
under monitor control.
For example, assume that the following option statement was the only input to the monitor
routine (and the task statement):
10

1

20

S( BID: 4B29

When the program reaches an instruction that references an address using base register 4
and a displacement of B29, a default display is given.
Remember, you can also get a default by omitting the option statement (7.3.4.5). The only
difference between the default display caused by omitting the option and the default display
caused by omitting the action is that the option causing the display is not printed.
7.3.5.2. Halt Action (H)
This action, like the other actions, prints out items 1, 2, 3, and 4 (detailed in 7.3.5.1.1). It
then prints a halt message on the system console and suspends program execution until a
reply from the console operator allows execution to continue.
The halt message sent to the system console has the following format:
HALT

ccc.

TYPE- IN GO

jobname

TO RESUME

Program execution is then suspended until the operator issues the GO command followed
by the job name (same as that on the JOB control statement). You can then provide the
operator with special instructions about what to do before entering the GO command, such
as taking a main storage dump. After he completes these special instructions, and enters
the GO command, the instruction causing the halt is executed, and program processing
continues under monitor control.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-38

The format for the halt action is:
Hc cc

The ccc is a 3-character EBCDIC code that you specify to identify the halt, and corresponds
to the ccc in the halt message displayed to the operator.
For example, assume that your JOB control statement has a job name of TWESTMON, and
uses the following monitor statement:
20

10

1
A(PR:1B4)

HOMP

r
When the program reaches the instruction at program relative address 1B4, the monito
routine prints out the program information and displays the following message on the
system console:
HALT DMP TYPE-IN GO TWESTMON TO RESUME

e. In
You would instruct the operator to take your desired action when he sees this messag
this case, assume it is a dump. After issuing the DUMP command (and a dump of main
storage is given), the operator would then type:
GO TWESTMON

to reactivate the interrupted job. The instruction at program relative address 1 B4 is then
executed, and program processing continues under monitor control.
7.3.5.3. Quit Action (Q)
The quit action (Q) prints out items 1 through 4 and nothing else. The instruction causing
the printout is then executed, and program processing continues without any further
monitor intervention (pertaining to the option to which this action applies).
This action is useful when you want to monitor a problem area in the beginning of your
ing
program, and then exit from the monitor routine without tracing all the remain
instructions in the program (thus not wasting execution time).
The format for the quit action is:
Q
For example, if you coded:
A(PR:F18)

Q

the monitor routine would print out the program information when program execution
reaches the instruction at program relative address Fl 8. This instruction is then executed,
and program processing continues without monitor intervention.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-39

When the quit action is not used as one of the actions for an option, monitor processing
continues until the end of the job step.
Table 7-2 summarizes the program information that is displayed by each action.
Table 7—2. Summary of Actions and Program Information Printed

Action
Program Information Printed

Display
Register
(DR)

Display
Storage
(DS)

Default
Display

Halt
(H)

Quit
(0)

Jobname*

x

x

x

x

x

TCB address*

x

x

x

x

x

Program base address*

x

x

x

x

X

PSW contents

x

x

x

x

x

Next instruction to execute

x

x

x

x

x

Option causing this printout

x

x

x

x

x

Contents of specified registers

x

Contents of specified storage

x

Contents of changed registers

x

Contents of referenced storage

x

HALT message

x

*These items are included for only the first option that causes a printout.

7.3.6. Cancel of Monitor
If the monitor routine is terminated abnormally, either by a CANCEL command or by a
program exception within the monitor routine, all programs requesting the monitor routine
will continue normal program processing without any type of monitor intervention. The
monitor routine itself will dump and leave the system. A CANCEL command should not be
issued while monitoring is in progress.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7—40
Update E

7.4. SYSTEM DEBUGGING AIDS
Several debugging aids are built into the OS/3 supervisor to aid in solving system
problems which cannot be identified through a normal SYSDUMP. These aids are useful
only with some knowledge of the internal supervisor structure and are therefore not
intended for general use. This section is provided for informational purposes only.
Table 7—3 summarizes the debugging aids described in the following subsections.
Table 7—3. Summary of System Debugging Aids (Part 1 of 2)

Function

Console Command

Results

Pseudo monitor’

To identify the routine
changing a particular
byte

SE HA,PM,address
[,job-namel

HPR 99130202 (Press
START to continue)

Resident monitor’

To identify the instruction
changing a particular
byte

SE HA,RM,
address[,job-name]

HPR 991304 (Press
START to continue)

Verify bytes 0-B’

To identify the routine
destroying low-order
storage

Included in supervisor
debug option

HPR 99130303 (Take
SYSDUMP to find
problem)

History tables’

To provide some recent
history in SYSDUMPs

Included in supervisor
debug option

Continuous updating
of tables

Halt on transient load

To halt if and when
a particular transient
is loaded

SE HA,TL,hex-id

HPR 990C0C (Press
START to continue)

Halt on transient call’

To halt if and when a
particular transient
is called

SE HA,TC,hex-id

HPR 990C0D (Press
START to continue)

Halt on transient exit’

To halt if and when a
particular transient
exits

SE HA,TEhex-id

HPR 990C0E (Press
START to continue)

Halt on symbiont load

To halt if and when a
particular symbiont phase
is loaded

SE HA,SY,idnn

HPR 997C (Press
START to continue)

Halt on shared code
call’

To halt if and when certain
(or all) shared code modules
are called

SE HA,SCflmodule-namefl

jj

HPR 991D01 (Press
START to continue)

Halt on shared code
return’

To halt if and when certain
(or all) shared code modules
return

SE HA,SRflmodule-namefl
[prefix.

HPR 991D02 (Press
START to continue)

Halt on shared code
return with error’

To halt if and when certain
(or all) shared code modules
return with error

SE HA,SEflmodule-name).1

HPR 991D03 (Press
START to continue)

Pause on shared code
call*

To pause a task if and when
certain (or all) shared code
modules are called

SE PA,SCI(module-namefl
prefix.

4,
4

Use

*

Supervisor debug option required at IPL

Llprx

fj

Liprefix
LI

fJ
fJ

SE25 console message
(Enter C to continue.)

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Table 7—3.

Function

7—40a
Update E

Summary of System Debugging Aids (Part 2 of 2)

Use

Console Command

To pause a task if and when
certain (or all) shared code
modules return

SE PA,SRflmodule-namefl
[j prefix.
jj

SE25 console message
(Enter C to continue)

Pause on shared code
return with error*

To pause a task if and when
certain (or all) shared code
modules return with error

SE PA,SErjmodule-namefl
prefix.

SE25 console message
(Enter C to continue)

PIOCS debug option

To identify checksum
errors or internal
PIOCS problems

SE DE,IO

HPR 990F

Transient debug option

To halt on transient
errors (100
1FF)

SE DE,TR

HPR 99080800

Loader debug option

To halt on loader errors
(52-5F)

SE DE,LD

HPR code 991500 (Press
RUN to continue)

Shared code debug
option

To halt on shared
code errors

SE DE,SC

HPR code 990809 (Press
RESTART to take a
SYSDUMP and continue.)
HPR 99130A when dynamic
buffer pooi links are
destroyed

Dynamic buffer
debug option*

To halt on dynamic
buffer overflow

SET DE,DB

HPR code 991300

Screen format
coordinator input/
output debug
option

To take a snapshot dump
of all input and output
buffer blocks when using
the screen format
coordinator

SET DEINO

Writes snapshot dump
to job log

Screen format
coordinator format/
input/output debug
option

To take a snapshot dump
of the format block; the
input buffer (on input
operations); the output
buffer (on output
operations); and, if errors
occur, the screen format
coordinator blocks

SET DE,FS

Writes snapshot dump
to job log or printer
system

Reset pause options

Resets all SE PA commands

SE PA,OFF

None

Reset halts

Resets all SE HA
commands

SE HA,OFF

None

Reset debug options

Resets all SE DE
corn mands

SE DE,OFF

None

Data management debug
option

To produce an automatic
system dump when
specified error occurs

SE DE, DM, eess
where:
ee is DM error code
ss is DM subcode

Error code 3DE and
an automatic system dump.
(See Consolidated
Data Management Concepts
and Facilities, UP—8825
(current version) for
details)

Pause on shared code
return*

Results

-

Li

—

*

Supervisor debug option required at IPL

+

0

C

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7.4.1.

7-41
Update A

Supervisor Debug Option

The supervisor debug option is set at initial program load (IPL) time by entering D as the
option of the initial IPL message. This is described in the operations handbook. Use of this
D option causes the supervisor being loaded to be expanded in size (by over 2K) to support
the supervisor debug option.
The following functions are provided:
•

A normal halt (HPR code 99130101) between IPL and supervisor initialization. This
indicates the supervisor has been successfully loaded by the IPL and also allows
changes to be made to the supervisor prior to loading the supervisor initialization load
module. Normally, however, you should simply press the START key to continue.

•

A pseudo monitor to detect when any byte within the supervisor has been changed.
This function is activated via the SE HA,PM console command (Table 7-3). The byte
specified is checked on every interrupt and on every pass through the switcher. When
changed, the supervisor halts (HPR code 99130202) without restoring the original
contents. If you want to continue, simply press START. The new value becomes the
original value and the supervisor will halt if the byte is changed again.

•

A resident supervisor monitor to detect when any byte in main storage has been
changed. This function is activated by the SE HA,RM console command (Table 7—3).
The specified address (either absolute or relative to the preamble of a currently active
job) is monitored on every instruction executed by the operating system, including
interrupt processing, transients, symbionts, shared code, and job control. The only
code not monitored is nonkey 0 code (user jobs) because the hardware storage
protection feature prevents such code from destroying any part of the supervisor.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

LJP-8832

7—42
Update A

When the specified byte is changed, the resident monitor halts (HPR code 991304)
without restoring the original contents. The double word at absolute location 8016
contains the PSW at the time the byte was changed. If you want to continue, press
START. The new value then becomes the original value, and the supervisor will halt if
the byte is changed again.
When using the resident monitor, you may notice that the operating system is
performing much more slowly than it normally would. This is because every
instruction executed now requires about 10 additional instructions to verify the byte
being monitored. For this reason, you should only use the resident monitor for short
periods of time.
To turn off the resident monitor, use the SE HA,OFF console command. The resident
monitor must not be used when the normal monitor (7.3) is active.
•

Verification of the 12 low order bytes of main storage (locations 0—B) on every
interrupt and every pass through the switcher. When changed, the supervisor saves
the incorrect setting, restores the correct setting, and halts (99130303). Although you
may continue past this HPR by pressing START, you should take a SYSDUMP here to
determine why these bytes are being altered.

•

History tables that provide the following information:
—

Critical event history table. This shows the last 1 6 critical events that occurred in
the supervisor and the value in the interval timer register (ITR) at the time they
occurred. These are listed in 4-byte entries as follows:
Byte 0

EBCDIC event code:

=

I (X’C9’)

Byte 1

=

Interrupt

S (X’E2’)

=

Switcher call

T (X’E3’)

=

Task given control by switcher

L (X’D3’)

=

Transient load

0 (X’D6’)

=

Transient issued a call for an overlay

R (X’D9’)

=

Transient release

Interrupt type (if event code

=

0= 1/0
1

=

Exigent machine check

I)

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

2

=

7-43

Program exception

3=SVC
4

=

External interrupt (timer or interrupt key)

5

=

Repressible machine check

Bytes 2—3 = Value in ITR when event occurred. The ITR decrements once
every millisecond.
—

Dynamic buffer management history table. This shows the last 16 requests to
either obtain a buffer (GETBUF) from a dynamic buffer pool (DBP) or release a
buffer (FREEBUF). These are listed in 8-byte entries as follows:
Byte 0

=

EBCDIC G (X’C7’) if GETBUF
EBCDIC F (X’C6’) if FREEBUF

Bytes 1—3

=

Buffer address

Byte 4

=

Buffer characteristics:

=

Bits 0—i

=

0

Bit 2

=

1 indicates buffer is allocated, and
bits 5—7 indicate the software
using the buffer.

Bit3

=

0

Bit 4

=

1 if buffer
protection

=

5
4
3
2
1
0

Bits 5—7

=
=
=
=
=

Bytes 5—7

if
if
if
if
if
if

is

under

storage

shared code local storage
data management buffer
external TCB
stack frame
shared code
none of the above

=

Buffer size, in bytes, if GETBUF

=

TCB address if FREEBUF

TCB history table. This shows the absolute addresses of the last 6 TCBs given
control by the switcher. The address of the last active TCB is found in the system
information block (relative location X’94’), not in this table.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-44

of the last 8
Interrupt history table. This shows the PSW (8 bytes) at the time
s:
follow
as
ID,
pt
interrupts. Bits 4—7 of each PSW are set to an interru

—

—

—

0

=

I/O interrupt

1

=

Exigent machine check interrupt

2

=

Program exception interrupt

3

=

SVC interrupt

4

=

External interrupt (timer or interrupt key)

5

=

Repressible machine check

last 12
Alternate transient history table. This shows the transient IDs of the
would
table
).
This
transients loaded from the alternate transient file ($Y$TRANA
normally be all zeros.
32
Transient history table. This shows the transient lDs (12 bits) of the last
,
entries
2-byte
in
listed
are
transients loaded by transient management. These
means
r
(0
numbe
with the high order 4 bits containing the transient area
supervisor overlay area (SOA).) Reused transients are not included.

They can be
The history tables previously described reside near the end of the supervisor.
s:
easily identified in a SYSDUMP by the CSECT names, as follow
ENTRYTIM
DYNBUFFR
LOWCORE

LASTTCBS
OLDPSWS
ALTTRANS
TRANIDS

—

—

—

-

—

—

—

Critical event history table
Dynamic buffer management history table
Correct and altered contents of the low order 12 bytes in main
storage
TCB history table
Interrupt history table
Alternate transient history table
Transient history table

ses) to the
The entries in each table are always arranged from the oldest (lower addres
ined by the
newest (higher addresses). Following is an example of a history table mainta
supervisor debug option.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-45

Critical event
E’.TPYTIN

CSECT,

ST S 0 S

3

C

C

P H I

S 0

*

. •

000760—C9C30185 E2000182 C9001A2 020101*0

0300019F C903019F [2000190 09000182 *I...S...T...5...T...T......7...—012240

000780—E2C00180

03010174 09000171 [2000170 [300016F *S..1...S...T...L...P...S...T..?—012260

[2100175 03000175

Timer value
Interrupt type (if event typel; I/O interrupt)
Event type (l=interrupt)
OTNIUFFR

CSOCT,

ST 40S!C

Dynamic buffer management
history table

I

PHASE

C0C7A0—C7215QC 240002CP C7’21700 24000108

C70219C

24000198 C702188C 240000FC *6

116

6

07C—C6’Z13DC 25017200 C6C2C670 25017200

C7O21PAB

241’011A8 C6O1FE9O 250172CC *F

F

6

F
1

0122*0

0007[o—C6r19360 250172D 06016680 25017200

C70186AC 25000028 C7022810 2100C268 *F..— .....F

C

C

—0122C0

(22800 l2SP000j C622A00 25017200 1C6188.*tI2SI0172001C703C61C 2109t8C *6

-

size (for GETBUF)
Buffer type (shared code
local storage)
Buffer address
DD80\uffer
‘G”=GETBUF
ICUCORE

CSECT,

ST 4 0 S

000szD_Issr’0057C U7FOO3CO 2D72P6à 0000*000

Correct contents
1.

*

S 1 1 C B S

F

F

012280

F

—012206

“F”=FREEBUF

3 C C

15800087c

P

H

A

S

F

•

.

Current contents of low order main
storage bytes 0—B (example
shows no change)

*

C7F003C0 207iiT00DEA0CC *...1

A

—012300

Altered contents (if different)

C S F C 7

S V 4 0 S

3 1 C

P 11 A S F

TCB history table

• q
•

000841—OOCEA000

•**

00008028 00006028 00J08fl28

OIOPSUS

CSECT,

0008028 00C8028 0000ADCO

00008029

ST%0S3 C

H A 5

S

*

—012320

*

Interrupt history table
(interrupt IDs in PSW
/‘are circled)

••

000660—C3ON0000 41008882 C3090001 4300888C

C010000C (0012056 C3040000 60000040 SC

C

000480—CO D0C0D 00002080 C30*C111 40010058

coococoo

C

CC012C56[Cfl0t000r C0’12C56j*

C

—a12!4C
—012360

Most recent interrupt

•

A

1 1’ 7

P

A N S

C

‘

F C I

0 S

,

0008A0—ODrEA000 0000000,0. 00000000 00000000

3

0

0

P H A

S

0

•

*

Alternate transient
history table

•

3000000C 00000000 00000000 0000*000

-012380

*

table (example
shows activity in transient areas
#0(SOA), #1, and #2)

Transient history

/
*5*

TCANIO1S

CSFCT,

SVSOS3O t

P H A

S 0

C00CC—2S627D9 25842218

269C2603 21422212

213728CC 24*C276F 208*1019

cc’u*cr—i&ii&os

16071119

16CDI6D1

05F305E1

C00910—330EA000

0000ADCD 00’EAOCO 0000*1700

16050614

area

/

*

Transient

*

ID

Table entry

110 1 CC *...R
Transient
5F3423 LF607G4 06141607 *.J..P
.J.N.,.3...T...6

100EADCC C000A000 3’JDFA0fl 00,00*000

*

—0123*0
P—0123C0
.—012300

In addition to the history tables at the end of the supervisor, the supervisor debug option
causes a shared code history table to be added to the end of all task control blocks. The
EBCDIC names of the last eight shared code modules called on behalf of this task are listed,
with the most recent eight-byte load module name always last (i.e., highest address).

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-46

74.2. Console Debug Options
le for supervisor
A number of debug options that can be set by console commands are availab
debugging:
checksum error
PIOCS debug option. Causes system halt (HPR code 990F) on any CCB
or program check during PIOCS. The console command is:

•

SET DE,IO

transient error
Transient debug option. Causes system halt (HPR code 9908) on any
e normal
becaus
useful
is
This
(i.e., error normally producing an lxx error code).
d by
overlai
be
to
nt
recovery from an lxx error code often causes the offending transie
other transients. The console command is:

•

SET DETR

loader detects
Loader debug option. Causes system halt (HPR code 9915) whenever the
will provide
halt
this
at
taken
any error other than 51 (module not found). A SYSDUMP
F) which
(52—5
useful information in determining the exact cause of any loader error
cannot otherwise be diagnosed. The console command is:

•

SET DE,LD

on any error
Shared code debug option. Causes system halt (HPR code 990809)
The console
detected by the system during execution of dynamic shared code.
command is:

•

SE DE,SC

D) whenever the
Dynamic buffer debug option. Causes system halt (HPR code 99130
bytes of any
supervisor debug option detects the alteration of any of the last 32
e command is:
dynamic buffer, usually caused by dynamic buffer overflow. The consol

•

SE DE,DB

To turn off all debug options, the console command is:
SE DEOFF

7.4.3. Transient Management Halts
sor whenever a
When trapping a system problem, it is often desirable to halt the proces
transient is
Every
.
storage
main
into
particular transient or supervisor overlay is loaded
cause the
can
you
,
cimal)
uniquely identified with a transient ID. By using this ID (in hexade
system to halt in any of three ways:
1.

HPR 990C0C
Halt on transient load. The SE HA,TL console command causes an
into a
overlay
or
nt
transie
ed
specifi
whenever transient management loads the
given
is
nt
transie
the
before
transient area. The halt occurs less than 10 instructions

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-47
Update B

control, and you can continue normally by pressing START. Note that this halt occurs
only when a transient has just been loaded from SYSRES. A few transients can be
reused; the halt will, therefore, occur only when the transient is initially loaded.
2.

Halt on transient call. The SE HA,TC console command causes an HPR 990C0D whenever
a transient or overlay calls the specified transient as an overlay. For example, if transient
200 processes errors by overlaying transient 204, the SE HA,TC,204 command causes a
halt before transient 204 is loaded on top of transient 200.

3.

Halt on transient exit. The SE HA,TE console command causes an HPR 990C0E
whenever a specified transient or overlay exits, either by releasing the transient area or
by calling an overlay.

All three halts described can be set simultaneously, if desired, but only the last SET
command of each type is recognized. When the halts occur, problem register 15 can be used
to find the address of the transient area involved. Refer to the operations handbook for
instructions on reading problem registers.
The halt on transient load is available on all supervisors. Halt on transient call and exit
require use of the supervisor debug option at IPL.
7.4.4. Symbiont Halt
The SE HA,SY console command causes an HPR 997C whenever a particular symbiont or
phase of a symbiont is loaded. This could be useful when debugging a particular symbiont.
To halt whenever a specific symbiont is loaded, simply key in SE HA,SY,id where id is the 2character symbiont id (e.g., RU,FI,PR,SU). To halt when a phase other than the root phase is
loaded, key in SE HA,SY,idnn where nn is the decimal EBCDIC phase number (00—99).
The HPR occurs less than 10 instructions prior to the symbiont phase being given control.
To continue normally, press START.
7.4.5.

Shared Code Halts and Pauses

SET console commands are available to interrupt or halt processing when shared code
modules are called or when they return. These commands allow the operator to request
an interrupt or halt on the call or return for:
a specific module;
•

a specific group of modules, which have a common prefix; or

•

all modules.

The format of these commands is:
SEfHA(.(SC

IPAJ SR
LSE

1,Iprefix.

L

Iname

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-48
Update B

The first and second parameters form individual commands, which are discussed in the
following paragraphs. The third parameter determines what modules these commands
affect. You specify an individual module by its full name, a module group by its prefix
followed immediately by a period, or all modules by omitting the parameter completely. For
example, the command SE HA,SC,DM. causes an HPR upon a call to any module whose
name begins with DM.

(

You can continue past any HPR resulting from these commands by pressing RUN. The
supervisor debug option is required at IPL time for all of these functions. The individual
commands are:
•

Halt on shared code call. The SE HA,SC command causes an HPR of 991 DOl when a
module is called.

•

Halt on shared code return. The SE HA,SR command causes an HPR of 991 D02 when
control returns from a module.

•

Halt on shared code return with error. The SE HA,SE command causes an HPR of
991 D03 when control returns from a module with an error condition.

•

Pause on shared code call. The SE PA,SC command interrupts processing and
displays the following message when a module is called:
SE25 SC PAUSE ON shared-code-name. CONTINUE? (Y, HELP)
This message shows which shared code module has been called. A reply of Y causes
processing to resume. A reply of HELP displays the following information: the job or
symbiont name, the name of the calling module, the TCB address, the base address of
the calling module, and the local store address.

•

Pause on shared code return. The SE PA,SR command interrupts processing and
displays the SE25 message when control returns from a module by execution of the
SRETURN macroinstruction. If requested to, this command displays the same shared
code information as SE PA,SC does, except that it shows what module is being
returned to rather than what module called the shared code.

•

Pause on shared code return with error. The SE PA,SE command interrupts
processing and displays the SE25 message when control returns from a module in
which an error has occurred. If requested to, this command displays the same shared
code information as SE PA,SR does.

7.4.6.

Soft-Patch Symbiont (PT)

The PT symbiont is used to temporarily patch transients (transient overlays), load modules,
and shared code modules at the time they are loaded in main storage (soft patch), instead
of permanently patching the disk (hard patch). This is useful if you want to test a patch to
see if it is effective before hard-patching or if you want to trap a problem by temporarily
applying a patch. To use the PT symbiont, you must have included the supervisor debug
option at IPL time.

(

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

7-49
Update C

When initiated, the PT symbiont builds a patch table from input keyed in from the
workstation console or read from cards. The PT symbiont then locks itself into the
supervisor so it can scan this table on every load of a transient, load module, or shared
code module. During the scan, if the module name matches an entry on the patch table,
the specified patches are applied. These patches are temporary. Patches to transients
remain in effect until the PT symbiont is cancelled. Load and shared code modules that are
loaded in main storage while the PT symbiont is active remain patched until reloaded.
The PT symbiont is also used to apply patches to the resident supervisor; however, these
patches remain in effect until you IPL the system again.

7.4.6.1. Soft-Patching Using the Workstation Console
To apply a soft patch from the workstation console, you must initiate the PT symbiont by
keying in a console command:
PT C

Once initiated, the PT symbiont solicits input from the workstation console. The entries
you make identify the modules to be patched and the patches to be applied. The input is
entered in card-image format. Four types of input entries are solicited by the PT symbiont:
1.

The first entry is for compatibility purposes. It is necessary when using the
transient patch (TRNPAT) program, which applies corrections to transients.
Format:
1

D==R

A 1 must be keyed in first, followed by a blank, and then D=R.
2.

The second entry defines the type and the id (or name) of the module to be patched.
The form of this entry depends upon the module type.
Formats:
2

T=d e c I ma I

2

S=modu I e-name

(for shared code modules)

2

L=modu I e

(for load modules

2 O=mo d u I e

-

-

-

I d

name

name

(for transients)
the load modules can be the resident
supervisor, a symbiont, or a module loaded from a user
library)
—

(for resident supervisor modules specifying the csect
or object module name)

In all formats, a 2 must be keyed in first, followed by a blank. Each module to be
patched must be defined with one of these entries.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

+

3.

7-50
Update B

The third entry defines the patch. Only one patch can be entered at a time, and the
patch is applied only to the module specified in the preceding 2 entry.
Format:
P addr,patch

A P is entered first, followed by a blank. Then, the hexadecimal address (relative to
the start of the transient or module phase to be patched) is entered. The address must
be within the module specified or the entry will be ignored. The adress is followed by
a comma and then the patch. (The patch is also given in hexadecimal, and embedded
blanks are not permitted.) The patch character string can be any length, though the
entire P entry must fit on one line of the console (or on one card, if using card input).
More than one patch can be made to a module by keying in more than one P entry.
All patches to be applied to a given module should be specified in succesive P entries,
following the 2 entry that defines the module.
4.

The last entry signifies the end of the patches.
Format:
I.

Examples:
PT C

Initiates the PT symbiont

1 D=R
L=MYSAL
1A,47000000
2 T=1539
P 94,Cø
P 12A.478øF2E49966

Can be eliminated if not using TRNPAT
Defines the load module MYSAL

2
P

2
P
2
P

Defines a patch to be applied to MYSAL
Defines a transient
Defines two patches to be applied to the

J

transient

S=MYSHRCOD
24,07C0

Defines a shared code module MYSHRCOD

O=SM$DEBLJG
27,FF

Defines an object module SM$DEBUG

Defines a patch to be applied to MYSHRCOD
Defines a patch to be applied to SM$DEBUG
Indicates the end of the patches

I.

There are some optional features available to you when soft-patching directly from the
console. For example, you can enter all the information for a single patch on one line from
the workstation console. The following is the format of this option:
,addr ,patch
PT T,transient-id
S s ha r e d code mod u I e n ame}
L,load-module-name
0, object-module-name
,

+

-

-

-

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-51
Update B

Although this form eliminates the need of separate entries for 2 and P type card-image
inputs, it can only be used to make a patch at one location (module address). To patch
more than one location, use one of the other forms of the command, or key in this form
one time for each location to be patched.
Examples:
PT L,MYSAL, 1A,47000000
PT T ,440 Fø 45A0F220
PT S ,MYSHRCOD, 24, 07C0
PT O,SM$DEBLJG,27,FF
,

If your system has card input/output capabilities, you can key in the following console
command to initiate the PT symbiont:
PT[dev-addr]

C

This form of the command not only solicits patch input from the workstation console, but
also punches that input on the device specified. The card deck produced contains the
patches that you can reuse at some later time.

74.6.2.

Soft-Patching Using Card Input

If your system has card input capabilities, you can use a card deck as input for a soft
patch. The input deck is comprised of cards containing the same four types of input entries
described in 7.4.6.1. The sequence and formats for the cards are the same as previously
described for the input entries made via the workstation console. After you produce the
card deck, it must be placed in the system reader prior to initiating the PT symbiont. Once
the card deck is in place, the PT symbiont can be initiated via the following console
command:
PT

This form of the command causes the PT symbiont to accept the patches on the card deck
from the system reader device.

7.4.6.3.

Using the PT Command

Whether you use console input or card input, you can enter the PT symbiont command
more than once, and the input is simply added to the end of the patch table. In addition,
any combination of the various forms can be used. For example, you can key in PT and a
patch table will be built from card input. Later in the same session, you can key in PT C
and enter additional patches. These additional patches will be added to the existing patch
table.

+

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

+

7.4.6.4.

7-52
Update B

Cancelling the PT Symbiont

Regardless of how the input is entered, the PT symbiont can be cancelled at any time by
keying in the following console command:
CA PT,S,N

Cancelling the PT symbiont eliminates all the patches entered, except those that changed
the resident supervisor. (These will remain in effect until you IPL the system again.)
Shared code and load modules that were loaded while the PT symbiont was active will
remain patched until reloaded. Subsequent loads of modules, however, will not be
patched.

7.4.6.5.

PT Symbiont Error Messages

Error messages are produced by the PT symbiont and appear on the workstation console
screen. The following is a list of the error messages that might occur, the condition that
caused the error, and the corrective action to take:
PTO1 TWO 2 IMAGES IN A ROW
Two 2 entries have been made in a row. This is invalid because a module has been
specified to be patched, but no patches have been entered. The first 2 entry is
ignored, and the PT symbiont continues. This could result in incorrectly applied
patches. To avoid this, cancel the PT symbiont, correct the input deck, and begin a
new PT symbiont session.
PTO2 INVALID CHARACTER STRING, CHARACTER ON CARD
A nonhexadecimal digit (other than 0—9 and A—F) was entered in a field requiring a
hexadecimal digit. This message is also produced if an odd number of characters was
entered for a patch (patches cannot be half bytes in length). Cancel the PT symbiont,
correct the input deck, and begin a new PT symbiont session.
PTO3 PATCH TABLE OVERFLOW

-

SOME PATCHES LOST

Too many patches have been entered. There is a limited amount of space that can be
allotted to the patch table, and the PT symbiont will stop accepting input when this
limit is exceeded. This could result in a patch table that contains only part of the
patches you intended to apply. To avoid this, cancel the PT symbiont, limit the number
of soft patches you enter, and begin a new PT symbiont session.
PTO4 INVALID PT

+

-

NEEDS SUPV DEBUG OPTION SET AT IPL

The supervisor debug option, which is required if the PT symbiont is to be used, was
not specified at IPL time. The PT command is ignored, and the symbiont cannot be
initiated. You must IPL the supervisor again, specifying the debug option; then begin a
new PT symbiont session.

()

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-53
Update E

PTO5 PUNCH SPECIFIED BUT NO CONSOLE INPUT
The form of the PT command specifying a punch device was used, but the input was
not specified as coming from the workstation console. This will occur if the C
following the device address was not entered. The PT command is ignored under this
condition. Reenter the command, including the final C.
PTO6 csect-name NOT FOUND
The object module or csect name specified on the 2 0= entry was not found on the
supervisor currently loaded. The 2 0= entry and all the P entries until the next 2
entry are ignored. If an incorrect object module or csect name was entered, you can
enter the correct name later in the session, and the input will be added to the patch
table.
PTO7 SYSRDR NOT AVAILABLE
The form of the PT command used requires the system reader device, but in this case
it is unavailable. The PT command is ignored. When the system reader becomes
available, reenter the command.
PTO8 INVALID INPUT FORMAT
An error was made in entering the information for a patch on a single line from the
workstation console. The PT command is ignored under this condition. Check to make
sure that all commas are in the right place, and reenter the command.

7.4.7. I/O TRACE Facility
The OS/3 I/O TRACE Facility is an I/O debugging tool that runs on System 80 as a
symboint. It maintains a histroy of I/O events including start I/O, start device, normal
interrupts, and error interrupts.
The I/O TRACE Facility records data in a wraparound table that is maintained in main
stroage. By analyzing this data, you can determine the cause of specific problems such
as hangs, console lockout, and lost I/Os.
Only use I/O TRACE through an explicit request from a support diagnostician. Include
with your request the options that you want to specify and a dump of the output.
You can use I/O TRACE in non—debug mode on System 80 when you apply these
patches:
R8..2
R9.O

:
:

C822541
C090823

t

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

7-54
Update E

The support diagnostician may request that you use I/O TRACE in debug mode so that
both the TRACE and debug mode data are used to analyze the problem.
To activate I/O TRACE, key in:
JO optionlE,option2,....]

Table 7—4. Available Options for I/O TRACE
Option

Explanation

HELP

Display all TRACE options

DMP

Take snap dump of TRACE table

END

Terminate I/O TRACE

ALL

Trace all events for all devices (default)

ElO

Trace enqueue I/O events

SlO

Trace start I/O events

SDV

Trace start device events

lOST

Trace lOST table events

INTN

Trace normal interrupts

INTA

Trace attention interrupts

CHNn

Trace events only on channel n

CHSnn

Trace events only on control unit nn

DEVnnn

Trace events only on device nnn

You can specify multiple options separated by commas or a single call.
Once you activate I/O TRACE, precede any sucessive calls with 00. For example:
0OLJO END

To exclude a channel, control unit, or device from a trace, precede the corresponding

option with an x. For example:
10 SIO,xCHNI

Traces all start I/Os except for those on channel 1.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Glossary 1

Glossary

A
alias phase name
A 1- to 6-character phase name supplied by the user to the linkage editor, which can
be used in place of the linkage editor-generated name for the phase.
alternate load library
A library other than the run library or load library from which you may call a load
module and which you must specify on the EXEC job control statement for that
program.
alternate transient file
A duplicate of the transient file, from which the supervisor calls transients if it cannot
get them from the transient file.

B
block number processing
A technique to ensure correct tape positioning whereby a block sequence number is
written on output tape files and checked on input tape files. This block count is
recorded on tape in the first three bytes of the block, and consists of a 4-bit tape mark
count and a 20-bit block number count.
breakpoint
A point in a spool subfile where the subfile is closed, then reopened so that the
contents of the subfile can be output to the physical device before the job step
terminates.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Glossary 2

C
CDIB (common data interface block)
A control block that exists for each MIRAM file on disk as well as for files on all other
OS/3 devices. It contains the file name and serves as the primary interface of the file
to consolidated data management.

checkpoint
A point in a program or routine where a recording of the contents of main storage and
the state of peripheral units is made so that, in the event of machine failure or some
other interruption, a job can be restarted at an intermediate point rather than from the
beginning.
communication region
A 1 2-byte field in the job preamble used to pass information from one job step to the
next.
control stream
A sequence of control statements that define one or more jobs to the operating
system and may include source code or data as required by the jobs.

current ID
A field in the PCA table that contains the starting address of the logical partition or
the address of the current record being processed.

D
DTF (define the file) table
A control block that contains the file name and operating and physical characteristics
of a file used by the SAT routines.
dump
To copy the contents of all or part of main storage. Also, the data resulting from the
process.

E
ECB (event control block)
A control block that identifies a subtask and indicates status to the other tasks within
a job step. An ECB is created for each subtask.
embedded data set
Data in the form of card images entered into the system with the job control stream.

end of data ID
A field in the PCA table that contains the address of the last logical record of the
partition.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Glossary 3

F
FCB (file control block)
File and device information compiled by job control and stored by the supervisor in
the PIOCB.
file identifier
The physical label of a file. It is specified in the LBL job control statement and, for a
disk file, may have up to 44 bytes. It is used to locate the VTOC entry that contains
control information for this disk file.
filelock
A lock to prevent unauthorized access to a file. This lock is set at the logical level.
Only macroinstructions specifying a required password prefixed to the file name can
access the file.
file name
The name of the logical file. It is specified in the LFD job control statement and may
have up to eight alphanumeric characters. It is the logical file name used to access a
file and to locate the FCB block for a file.

H
HPR (HALT AND PROCEED)
A privileged machine instruction that halts the processor when an error occurs.
Depending on the HPR, you may or may not be able to continue. If you can resume
processing, correct the problem, then press the START key.

interlace
A technique whereby blocks on a partitioned file are spaced on the track so that more
than one I/O operation may be performed per disk revolution. The interlace factor is
specified by the LACE keyword parameter of the PCA macroinstruction.
interrupt
An external event which the supervisor must handle in some way to permit
processing to continue.
IPL (initial program load)
The procedure by which the operator loads into main storage and initializes the
resident portion of the supervisor.

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Glossary 4

island code
Closed routines by which you may handle interrupts, contingencies, or events not
normally processed by the supervisor. These island code routines are activated when
your program is interrupted for:
•

Abnormal termination
An error occurs, making continuation of the program impossible.

•

Interval timer
The time interval previously specified by a SETIME macroinstruction elapses.

•

Operator communications
An unsolicited message is entered at the system console by the operator.

•

Program check
An operation in the problem program causes a hardware program check
interrupt, such as an addressing violation, an arithmetic overflow, or an
operation exception.

J
job
A total processing application comprising one or more processing steps. Each job is
divided into job steps (programs) that are executed serially.
job region
An area in main storage reserved for each job containing the control information
(prologue) and the program code for the job step being executed.
job step
The unit of work associated with one processing program. A job step is an executable
program consisting of one or more tasks and requiring a specific amount of the
hardware resources of the system.

L
library search order
The default order of search employed by the loader is:
1.

Load library file ($Y$LOD)

2.

Job run library file ($Y$RUN)

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Glossary 5

If the job run library file ($Y$RUN) is specified on the EXEC job control card, the order
of search is:
1.

Job run library file ($Y$RUN)

2.

Load library file ($Y$LOD)

If an alternate library is specified on the EXEC job control card, the order of search is:
1.

Alternate load library

2.

Load library file ($Y$LOD)

3.

Job run library file ($Y$RUN)

To minimize search time, the loader always begins searching a library at the last root
phase loaded from that library for that job. This means it is generally more efficient to
link modules together than to create a series of smaller, separately linked load
modules.
load library
The system file containing all system-supplied load modules used
processing; its file identifier is $Y$LOD.

in normal

load module
A single-phase, multiphase, or multiregion program produced by the linkage editor
and loaded into main storage for execution.
loader
The supervisor routine that brings a program, in load module form, from disk to main
storage and optionally gives control to the newly-loaded program.

M
machine check
An interrupt that notifies the operating system of hardware failure.
main storage consolidation
The repositioning of jobs in main storage in order to run a job requiring more
contiguous space than is currently available.

MIRAM (multiple indexed random access method)
A data management access method that can read and write records sequentially,
randomly by relative record number, or randomly by key (up to five separate keys).
module
A program element existing in either source, proc, object, or loadable program format
and serving as input or output to various system functions.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Glossary 6
Update B

monitor
A supervisor routine that interrupts each instruction in a program, or a part of a
program, so that a trace of program execution can be made.
multijobbi ng
The concurrent scheduling, loading, and execution of more than one job at a time. Up
to seven jobs can be processed concurrently, with each job consisting of one or more
job steps.
multitasking
The concurrent processing of many tasks asynchronously. Multitasking applies to the
switching of processor control among two or more tasks on a priority or rotational
basis. Job steps with more than one task are capable of using multitasking.

P
PCA (partition control appendage)
A control block that contains the characteristics of a partition within a file used by the
SAT routines.
PIOCS (physical input/output control system)
A set of resident routines that controls the activity between the processor and all
peripheral devices connected to the multiplexer, selector, and integrated channels.
preamble
The fixed portion of the job region prologue at the beginning of the prologue.
primary task
A task that represents a job step and is capable of creating subtasks of equal or lower
priority.
priority
One of several levels within the supervisor switch list, each of which may be
assigned one or more tasks.
processor
A unit of the computer that includes the circuits controlling the interpretation and
execution of instructions. Synonymous with central processing unit.
program exception
An interrupt generated by hardware when it detects the improper specification or use
of machine instructions or data.
program phase (load module phase)
A program segment that can perform one or more specific processing operations. A
program phase is output by the linkage editor and stored in a load library, then
located and read into main storage by the program loader routine.
prologue
The portion of the job region containing the preamble, TCBs, and disk storage extent
control information for a job.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Glossary 7
Update B

PSW (program status word)
A hardware structure that contains an instruction address and control information for
the program currently being executed. When an interrupt occurs, the supervisor
stores the PSW in a PSW save area, suspends the task, processes the interrupt, and
then uses the stored PSW to resume the interrupted task.

PUB (physical unit block)
A control block in main storage for each I/O device containing the physical address,
characteristics, status, and other control information for the device.

R
relocation register
A hardware register, one of which exists for each job in main storage. Whenever a
program within a job addresses main storage, the address, which is job-relative, is
added to the job base address contained in its corresponding relocation register to get
the absolute address the hardware needs. The process is invisible to user programs.
repressible machine check
An interrupt generated by a hardware malfunction from which the supervisor may
recover, but which may indicate a potentially serious hardware problem.
restart
To resume processing a job from some intermediate point (called a checkpoint)
following an interruption.
rollout/rollin
The temporary transfer of jobs from main storage to disk to make room for a job with
a preemptive scheduling priority (rollout) and the transfer of those jobs back into main
storage when the preemptive job has finished (rollin).
run library
The file that most system programs use by default for input/output storage; its file
identifier is $Y$RUN.

S
SAT (system access technique)
An input/output control system that provides a standard interface for tape and disk
subsystems between OS/3 data management and the PIOCS.
shared code
Executable code that does not write to
simultaneously by more than one program.

itself and, therefore,

can

be

used

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Glossary 8

SIB (system information block)
An area in main storage, which is part of the resident supervisor, containing system
control information.
spooling (simultaneous peripheral operation on line)
A technique that increases the throughput of a system by buffering data files for low
speed input and output devices to a high-speed storage device independently of the
program that uses the input data or generates the output data. Data from card
readers or from remote sites is stored on disk for subsequent use by the intended
program. Data output by the program is stored on disk for subsequent punching or
printing.
subtask
A task that is created by a user ATTACH macroinstruction and executes concurrently
with the parent task.
supervisor
The set of programs that forms the central control of OS/3 and coordinates tasks
within OS/3 with each other and with external events such as interrupts.
SVC (SUPERVISOR CALL)
A machine instruction that acts as a user program’s only interface to the supervisor.
switch list
A supervisor table divided into priorities; each priority may specify one or more tasks.
The switcher uses the switch list to coordinate all the tasks currently in a system.
switcher
A supervisor routine that maintains the switch list, selecting one task among all those
on the list to get processor control.
symbiont
A system utility routine that operates concurrently with other system programs and
with user programs and is executed in the same manner as a job step.

T
task
A unit of work capable of competing with other tasks for control of the central
processor. A task is a logical point of control rather than a physical set of instructions.
Each job step has at least one task (the primary task) and may have additional tasks
(subtasks), all of which compete independently for processor time. There may be a
maximum of 256 tasks per job.
TCA (tape control appendage)
A control block that contains the characteristics of a magnetic tape file used by the
SAT routines.

(

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Glossary 9

TCB (task control block)
A control table generated for each task and stored in the job region prologue. A TCB
is constructed for each job step submitted by job control for execution. Additional
TCBs are constructed for each subtask created by the ATTACH supervisor
macroinstruction.
trace
A diagnostic technique in the monitor routine that prints program information (PSW
and register contents, etc) at specified points in a program executing in the monitor
mode so that errors can be located and corrected.
transient
A supervisor routine that resides in the transient file on disk and is called into main
storage for execution only when needed; after execution is finished, the transient may
be executed again or overlaid by other transients.

V
VTOC (volume table of contents)
A directory on a disk volume that defines the files contained in that volume.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Index 1

Index

Term

Reference

Page

A
Abnormal termination
descripton
dumps

Term

Reference

Page

AWAKE macroinstruction
function
multitasking
queue driven task

5.3.5
53
5.2.5

5—11
5—5
5—4

2.2.2
7.1.2
7.1.3

2—12
7—6
7—10

Abnormal termination island code
attaching
description
example using symbolic addresses
exiting
multitasking

2.5.1.1
2.5.6
Fig. 2—6
2.5.4.3
2.5.9.2

2—35
2—45
2—46
2—42
2—53

Base displacement address (B/D)

7.3.4.1.2

7—29

Block addressing
by key
by relative block number

4.2.2
4.2.3

4—3
4—3

Absolute address (ABS)

7.3.4.1.3

7—29

Block level device handler

4.1

4—1

Actions, monitor statements
description
display (D)
halt (H)
quit (Q)
summary

Block loader

2.1.1

2—2

7.3.5
7.3.5.1
7.3.5.2
7.3.5.3
Table 7—2

7—32

Block modules

2.1

2—1

7—37
7—38
7—39

Activate waiting task (POST)

5.4.4

5—16

Block number processing, TSAT
description
facilities required
initialized
noninitialized

4.10
4.10.1
4.10.2.1
4.10.2.2

4—55
4—56
4—57
4—58

ALTER statement

7.3.1.2

7—21

ARGLST macroinstruction

2.4.5

2—30

Assembler coding form
comments field
continuation column
description
label field
operand field
operation field
sequence field
ATTACH macroinstruction
function
multitasking
task creation

1.3.4
1.3.5
1.3
Fig. 1—1
1.3.1
1.3.3
1.3.2
1.3.6

1—7
1—7
1—5
1—6
1—5
1—7
1—6
1—7

5.3.2
5.3
5.2.2

5_7
5—5

s..—.

B

Block numbers, relative

See relative
block numbers.

Block transfer, wait

4.4.4
4.9.4

4—22
453

Blocks
accessing multiple
accessing physical
logical
output logical
retrieve next logical
wait for transfer

4.2.6
4—8
4.4.6
4—24
See logical blocks.
4—21
4.4.3
4.4.2
4—20
4.4.4
4—22

Branch, FETCH macroinstruction

2.1.9

2—9

Breakpoint function

6.1.5

6—4

Buffering data files, spooling

6.1

6—1

Index 2
Update A

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

.

Reference

Term

2.4

2—24

CANCEL macroinstruction
abnormal termination
function

2.2.2
2.2

2—12
2—11

Cancel of monitor

7.3.6

7—39

Cancel processing

2.5.6

2—45

5.3.6
5.3

5—12
5—5

7.2
Table 7—i

7—10
7—13

7.2.1

7—12

7.2.2

7—13

Checkpoint dump

4.8.1

Checkpoint file
define, open, and close SAT
SAT
space requirements, disk

records
using SAT tile as a
checkpoint file

2.7
2.7.1
2.7.2
2.7.4
2.7.3
2.7.6
2.7.5

2—57
2—58
2—58
2—61
2—59
2—63
2—61

Control tape unit functions (CNTRL)

4.9.5

4—54

Current date
description
get (GETIME)

2.3.1.1
2.3.1.3

2—15
2—16

Control stream reader
description
embedded data

CALL macroinstruction

Checkpoint and restart capability
description
error codes
generating checkpoint

Page

Term

C

CHAP macroinstruction
function
multitasking

Reference

Page

get tile
minimizing disk accesses
reset

D
Data, embedded

See embedded
data.

4—46

Date, current

See current
date.

7.2.2.2
7.2.2
72.2.1

7—15
7—13
7—14

Date and time facilities

See timer
services.

Checkpoint records, generating

7.2.1

7—12

CHKPT macroinstruction

7.2.1

7—12

Day clock
description
time of day

2.3
2.3.1.2

2—15
2—15

DCPCLS macroinstruction

7.2.2.2

7—15

DCPOPN macroinstruction.

7.2.2.2

7—15

DDCPF macroinstruction

7.2.2.2

7—15

Debugging aids

See diagnostic
and debugging
aids.

CLOSE macroinstruction
disk processing
magnetic tape processing

4.4.7
4.9.6

4—24
4—55

CNIRL macroinstruction

4.9.5

4—54

Coding form, assembler

See assembler
coding form.

Comments field

1.3.4

1—7

Declarative macroinstructions

1.4.1

1—7

Communication region
get data (GETCOM)
put data (PUTCOM)

2.6.1
2.6.2

2—54
2—55

Defaults, monitor routine
display action
options

7.3.5.1.3
7.3.4.5

7—37
7—32

Continuation column

1.3.5

1—7

Define the file (DTF)

Fig. 4—5

4—9

UP8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Index 3
Update A

Term

Reference

Page

Term

Reference

Page

DETACH macroinstruction
function
multitasking

5.3.3
5.3

5—9
5—4

Display actions
default
description

7.3.5.1.3
7.3.5.1

program termination
task termination

2.2
5.2.4

2—12
5—3

7—37
7—33
7—33
7—35

Diagnostic and debugging aids
checkpoint/restart
monitor and trace
normal termination dumps
snapshot dumps
storage displays

7.2
7.3
7.1.2
7.1.1
7.1

7—10
7—17
7—5
7—1
7—1

Disk accesses, minimizing

2.7.6

2—63

4.4
4.1
4.3

4—19
4—1
4—10

4.2

4—1

Disk SAT
controlling disk file processing
description
disk file interface
disk file organization and
addressing methods

4.4.6
4.4.7
4.4
4.3.1
4.3.2
4.3
4.4,1
4.2
4.4.3
4.3.3
4.3.3

4—24
4—24
4—19
4—10
4—14
4—10
4—19
4—1
4—21
4—17
4—17

4.4.5
4.4.2
7.2.2
4.4.4

4—23
4—20
7—13
4—22

Disk space control

4.2.4

4—4

Disk system access technique

Diskette space management
description
error codes
obtain routine

7.3.5.1.1
7.3.5.1.2

Displays, storage

See storage
displays.

DMBRK macroinstruction

6.3

6—5

DTF

Fig. 4—5

4—9

DTFPF macroinstruction

4.3.1

4—10

2.2
2.2.1
7.1.2

2—11
2—12
7—5

7.1.3
7.1.2

7—10
7—5

DVC job control statement

7.3.1

7—18

Dynamic allocation

4.2.4

4—4

ECB macroinstruction
format
function
general
multitasking

Fig. 5—1
5.3.1
5.2.1
5.3

5—7
5—5
5—2
5—4

Embedded data
description
reading
rereading

2.7.1
2.7.2
2.7.4

2—57
2—58
2—61

2.7.3
7.3.1.1
7.3.1.2

2—59
7—20
7—21

4.6.3
Table 4—4
Table 4—5
Fig. 4—9
Fig. 4—10
Fig. 4—12

4—33
4—35
4—37
4—34
4—36
4—40

DUMP macroinstruction
description
normal termination

Dumps
abnormal termination
normal termination

Disk SAT files
access a physical block (SEEK)
close (CLOSE)
controlling processing
defining new
defining partition
interface
opening (OPEN)
organization and addressing
output a logical block (PUT)
processing
processing partitioned
read by key equal or higher
(READE/READH)
retrieve next logical block (GET)
using as checkpoint file
wait for block transfer (WAITF)

Disk space management
description
error codes
obtain routine

register
storage

3.1
3.4
3.2

3—1
3—5
3—2

See disk
SAT.

3.1
3.4
3.2
3.3

Diskette system access technique

See disk SAT.

Displacement address

7.3.4.1.2

3—1
3—5
3—2
3—4

7—29

E

End-of-data (/*) job control statement
control stream embedded data
monitor input
End-of-file (EOF)
description
field description
label format

UP-8832

Term

Reference

Page

End-of-job step

2.2.4

2—12

End-of-volume (EOV)
description
field description
label formats

Entry point address
abnormal termination island code
interval timer island code
operator communication island code
program check island code
EOF1 and EOF2 labels

EOJ macroinstruction
function
general
normal termination
EOV1 and EOV2 labels

Index 4

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

4—33
4.6.3
Table 44
Table 45
Fig.
Fig. 4—10 4—36
Fig. 4—13 4—41
2.5.1.1
2.5.1.1
2.5.1.2
2.5.1.1

2—35
2—35
2—37
2—35

See file
trailer
labels.
2.2.4
2.2
2.2.1

2—12
2—11
2—12

See file
trailer
labels.

Reference

Page

2.1.9

2—9

4.6.2.1
Fig. 4—7
Fig. 4—18
4.6.2.2
Fig. 4—8
Fig. 4—19

4—27
4—30
4—60
4—29
4—32
4—61

File organization
disk SAT
tape SAT

4.2
4.7

4—1
4—38

File termination operations

4.4.7

4—24

4.6.3
Table 4—4
Fig 4—9
Fig. 4—20
Table 4—5
Fig. 4—10
Fig. 4—21

4—33
4—35
4—34
4—62
4—37
4—36
4—63

4.3.1.1

4—12

Term

F
FETCH macroinstruction
File header labels
first (HDR1)
second (HDR2)

File trailer labels
description
EOF1 and EOV1 field descriptions
EOF1 and EOV1 formats
EOF2 and EOV2 field descriptions
EOF2 and EOV2 formats
Filelocks

Error codes
checkpoint/restart
disk space management
program loader

Table 7—1 7—13
3.4
2.4
2.1.5

Event control block
format
generating
program check

Fig. 5—1
5.3.1
2.5.5

57

EXEC job control statement

7.3.1.1

7—20

First file header label

EXIT macroinstruction

2.5.4.1
2.5.4.2

2—41
2—41

See HDR1
label.

Format illustrations

1.2

1—1

Format write option

4.2.6

4—8

2—42

Files
checkpoint
defining new
disk SAT
spooling
tape SAT

See checkpoint
file.
4.3.1
4—10
See disk
SAT files.
6.1
6—1
See tape
SAT files.

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Term

Reference

Page

G
GET macroinstruction
disk processing
magnetic tape processing

4.4.2
4.9.2

4—20
4—52

GETCOM macroinstruction

2.6.1

2—54

GETCS macroinstruction

2.7.3

2—59

GETIME macroinstruction
example
function
timer services

Fig. 2—1
2.3.1.3
2.3

2—18
2—16
2—15

GETINF macroinstruction

2.6.3

2—55

GETLDA macroinstruction

2.6.4

2—56a

H
Halt action (H)

7.3.5.2

7—35

Hardware program check interrupt

2.5.5

2—42

HOR1 label
description
field descriptions
formats

HDR2 label
description
field descriptions
formats

4.6.2.1
Table 4—2
Fig. 4—7
Fig. 4—18

4—29
4—31
4—30
4—60

4.6.2.2
Table 43
Fig. 4—8
Fig. 4—19

4—32
433
4—32
4—61

Header, program phase
format
locate

2.1.8.1
2.1.8

2—9
2—8

Hierarchical structure, tasks

5.2.6

54

Term

Reference

Page

Initialized block number processing

4.10.2.1

4—57

Input format, monitor

7.3.2
Fig. 7—1

7—23
7—24

Input/output buffer

4.4.3

4—21

I/O TRACE Facility

7.4.7.

7.53

Instruction location option (A)

7.3.4.2

7—29

Instruction sequence option (I)

7.3.4.3

7—30

Interfaces
disk SAT files
tape SAT files

4.3
4.8

4—10
4—45

Interlacing
accessing
definition of variables
lace factor calculation
operation
record

Fig. 4—4
Fig. 4—3
4.2.5.2
4.2.5.1
4.2.5

4—7
4—6
4—8
4—6
4-5

Interrupt levels

2.5

2—34

Interrupts, timer

2.3.2

2—19

Interval timer island code
attaching
description
example
exiting from

2.5.1.1
2.5.7
Fig. 2—7
2.5.4.2

2—35
2—47
2-47
2—41

2.5.6
Fig. 2—6
2.5.1
2.5.1.1
2.5.1.2
2.5
2.5.2
2.5.3
2.5.4
2.5.4.1
2.5.4.2
2.5.4.3
2.5.7
Fig. 2—7
2.5.9
2.5.8
Fig. 2—8
Fig. 2—9
2.5.5
Fig. 2-4
Fig. 2-5

2—45
2-46
2—35
2—35
2—37
2—34
2—38
2—39
2—40
2—41
2-41
2—42
2—47
2—47
2—51
2—48
2—49
2—50
2—42
2—43
2—44

Island code linkage
abnormal termination
attaching to a task

description
detaching from a task
entrance
exit

interval timer

Imperative macroinstructions

1.4.2

Information control

See system
information
control.

Initial space allocation formula

4.2.4

1—8

multitasking
operator communication

program check

4—4

Index 5
Update E

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Term

Reference

Page

J

Index 6
Update A

Term

Reference

Loader, program

See program
loader.

Loader error processing

2.1.5

2—4

218

2—7

LOADR macroinstruction

2.1.7

2—6

Lockable file

4.3.1.1

4—12

4.4.3
4.9.3
4.4.2
4.9.2

4—21
4—52
4—20
4—52

1.3

1—5

12

1—1

7.2.1
2.7
4.9
2.3.1
1.4.1
3.2
1.4.2
2.5
4.3.3.1

7—12
2—57
4—50
2—15
1—7
3—2
1—8
2—34
4—17

43.3.2
2.4
2.1
2.2
1.5
7.1
1.4.3
2.6
4.8
5.3
5.4.1
2.3.2

4—18
2—24
2—1
2—11
1—10
7—1
1—8
2—53
4—45
5—4
5—13
2—19

7.1
7.2.2.1
7.1.1

71
7—14
71

Page

Job
cancel
end-of-job step

2.2.5
2.2.4

2—13
2—12

Job control statement

7.3.1.2

7—21

Job preamble

2.5

2—34

Job prologue

2.6

2—53

LOADI macroinstruction

-.

Logical blocks
output
retrieve next

K
Keys
block addressing
processng blocks
READE/READH macroinstructions

4.2.2
4.3.3.1
4.4.5

4—3
4—17
4—23

L
Label field, coding form

1.3.1

Labels, tape

See tape labels,
system standard.

1—6

Lace factor
calculation
description

4.2.5.2
4.2.5

4—8
4—5

LBL job control statement

4.6.1

4—27

LFD job control statement

4.6.1

4—27

Library search order

2.1.3

2—3

Linkage
island code
program

See island
code linkage,
See program linkage,

M
Macroinstruction conventions
coding form
format illustration and
statement conventions
Macroinstructions
checkpoint/restart
control stream reader
controlling tape file processing
date and time facilities
declarative
disk space management
imperative
island code linkage
processing blocks by key
processing blocks by relative
block number
program linkage
program loader
program termination
programming considerations
storage display
summary
system information control
tape SAT file interface
task management
task synchronization
timer interrupt facilities

Linkage procedure

2.4.2

2—26

Linkage register conventions

2.4.1

2—25

LOAD macroinstruction

2.1.6

2—4

Main storage
dumps
SAT checkpoint files
snapshot display

‘

ç

Index 7

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Term
Monitor and trace capability
absolute address (ABS)
base displacement address (BID)
calling a monitor routine
cancel of monitor
display actions
instruction location option (A)
instruction sequence option (I)
monitor input format
monitoring after execution begins
monitoring from beginning of job
no option specified
program relative address (PR)
register change option (R)
specifying actions
specifying options
storage reference option (S)
See also system debugging aids.

Reference

Page

7.3.4.1.3
7.3.4.1.2
7.3.1
7.3.6
7.3.5.1
7.3.4.2
7.3.4.3
7.3.2
Fig. 71
7.3.1.2
7.3.1.1
7.3.4.5
7.3.4.1.1
7.3.4.4
7.3.5
7.3.4
7.3.4.1

7—29
7—29
7—18
7—39
7—29
7—30
7—23
7—13
7—21
7—18
7—32
7—27
7—31
7—32
7—26
7—27

Monitor routine

7.3.1

7—18

Multifile input volumes

4.6.2.1
4.7.2

4—29
4—42

Multifile volumes
nonstandard
standard tape

Fig. 4—15
Fig. 4—12
Fig. 4—13

443
4—40
4—41

Multijobbing
description
See also multitasking.

5.1.1

5—1

Multiple blocks, accessing

4.2.6

4—8

4.2.6

4—8

5.4.3

5—15

Multiple buffer, accessing

:

Multiple task wait (WAITM)
Multitasking
abnormal termination
description
environment
island code
macroinstructions
operator communication
primary task
program check and interval timer
subtask
See also task management and
task synchronization.
.

2.5.9.2
5.1.1
2.5.2
.2.5.9
5.3
2.5.9.3
5.1.1.1
2.5.9.1
5.1.1.2

2—53
51
2—38
2—51
2—53
51
2—5
5—2
.

Term

Reference

Page

4.10.2.2

4—58

4.7.2

4—42

Fig. 4—15

4—43

Fig. 4—14

4—42

2.2.1
7.1.2

2—12
7—5

3.2
3.3
3.2

3—2
3—4
3—2

4.4.1
4.2.1
4.2.5
4.2.5.1
4.9.1

4—19
4—1
4—5
4—6
4—51

Operand field

1.3.3

1—7

Operation field

1.3.2

1—6

2.5.1.2
2.5.8
Fig. 2—8
Fig. 2—9
2.5.4.1
2.5.9.3

2—37
2—48
2—49
2—50
2—41
2—53

7.3.1.1
7.3.1.2

7—18
7—21

7.3.4.2
7.3.4.3
7.3.4.5
7.3.4.4
7.3.4
7.3.4.1

7—29
7—30
7—32
7—31
7—26
7—27

Output, logical block (PUT)

4.4.3
4.9.3

4—21
4—52

Output writers

6.1.4

6—3

N
Noninitialized block number
processing
Nonstandard tape volumes
organization
reel organization, multifile
volume
reel organization, volume
containing a single file
Normal termination dumps

0
OBTAIN macroinstruction
disk
diskette, data set label
diskette, format label
OPEN macroinstruction
disk file
general
lace factor
tape file

Operator communication island code
attaching
description
examples
exiting
multitasking
OPTION job control statement
Options, monitor routine
instruction location (A)
instruction sequence (I)
none specified
register change (R)
specifying
storage reference (S)

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Term

Reference

Page

p

Index 8
Update D

Jerm
Program loader
block loader

PARAM job control statement

2.7.3
7.3.1.1

2—59
7—18

Partition control appendage (PCA)

4.2.1
Fig. 4—1

4—1
4—2

Partitioned SAT files, processing

4.3.3

4—17

Partitions

4.3.2

4—14

:

description
error processing
library search order
load a program phase (LOAD)
locate a program phase header
(LOADI)
load a program phase and relocate
(LOADR)
read pointer, repetitive loads
relocation
.

PAUSE console command

7.3.1.2

7—21

PCA

Fig. 4—1

4—2

4.2
4.3.2
Fig. 4—1

4—1
4—14
4—2

Phase header format

2.1.8.1

2—9

Physical block, accessing

4.4.6

4—24

POST macroinstruction

5.4.4

5—16

Primary task

5.1.1.1

5—1

Printout, program termination

2.2.3

2—15

Priority, task

5.2.3
5.3.6

5—3
5—12

2.5.1.1
Fig. 2—11
2.5.5
Fig. 2—10
Fig. 2—4
Fig. 2—5
2.5.4.1
2.5.9.1

2—35
2—52
2—42
2—51
2—43
2—44
2—41
2—51

2.1.1

2—1

PCA macroinstruction
description
function

Program check island code
attaching
common, all tasks in a job step
description
discrete, each task in a job step
examples
exiting from
multitasking
Program initiation and loading
Program linkage
call a program
description
procedure
register conventions
register save area

restore registers and return
save register contents

‘:

2.4.4
2.4
2.4.2
2.4.1
2.4.3
Fig. 2—3
Table 2—1
2.4.7
2.4.6

2—28
2—24
2—26
2—25
2—27
2—27
2—28
2—32
2—30

Program management
control stream reader
initiation and loading
island code linkage
linkage
loader
system intormation control
termination
timer services

.

Reference

Page

2.1.1
2.1
2.1.5
2.1.3
2.1.6

2—2
2—1
2—4
2—3
2—4

2.1.8

2—7

2.1.7
2.1.4
2.1.2.2

2—6
2—3
2—2

2.7
2.1
2.5
2.4
2.1
2.6
2.2
2.3

2—57
2—1
2—34
2—24
2—1
2—53
2—11
2—15

..

Program phase
header
load
load and branch
load and relocate
locate header

2.1.8.1
2.1.6
2.1.9
2.1.7
2.1.8

2—9
2—4
2—9
2—6
2—7

Program relative address (PR)

7.3.4.1.1

7—27

Program termination
abnormal
cancel a job
description
endof-ob step
normal
printout

2.2.2
2.2.5
2.2
2.2.4
2.2.1
2.2.3

2—12
2—13
2—11
2—12
2—12
2—12

PT symbiont

7.4.6

7—48

PUT macroinstruction
disk processing
magnetic tape processing

4.4.3
4.9.3

4—21
4—52

PUTCOM macroinstruction

2.6.2

2-55

PUTLDA macroinstrction

2.6.5

2-56b

5.2.5

5—4

7.3.5.3

7—37

‘

0
Queue driven task
Quit action

(Q)

Index 9

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Term

Reference

Page

Term

Reference

Page

4.10
4.4
4.9
4.1
4.3

4—55
4—19
4—50
4—1
4—10

4.2
4.6
4.8
4.5
4.7

4—1
4—26
4—45
4—25
4—38

SAT macroinstruction

4.8.1

4—45

Save area, register

2.4.3
2—27
Fig. 2—3
2—27
Table 2—1 2—28

R

S

Reactivate a task

5.3.5

5—11

Read by key equal

4.4.5

4—-23

Read pointer, repetitive loads

2.1.4

2—3

READE macroinstruction

4.2.1
4.4.5

4—1
4—23

4.2.1
4.4.5

4—1
4—23

Record interlace
description
interlace operation
lace factor calculation

4.2.5
4.2.5.1
4.2.5.2

4—5
4—6
4—8

Register addresses
operator communication island code
program check island code

Fig. 2—9
Fig. 2—5

2—50
2—44

Register change option (R)

7.3.4.4

7—31

Save area address

2.5.8

2—48

Register display action

7.3.5.1.1

7—33

SAVE macroinstruction
function
program linkage

2.4.6
2.4

2—30
2—24

Search order, library

2.1.3

2—3

Second file header label

See HDR2
label.

READH macroinstruction

SAT
block number processing
controlling disk file processing
controlling tape file processing
description
disk file interface
disk file organization and
addressing methods
system standard tape labels
tape file interface
tape files
tape volume and file organization
See also disk SAT files
and tape SAT files.

Registers, program linkage
conventions
restore and return
save area
save contents

2.4.1
2.4.7
2.4.3
2.4.6

2—25
2—32
2—27
2—30

Relative block number
block addressing
processing blocks

4.2.3
4.3.3.2

4—3
4—18

SEEK macroinstruction

4.2.1
4.4.6

4—1
4—24

Relocation

2.1.2
2.1.7

2—2
2—6

Selective dynamic dump

7.1.1

7—1

Sequence field

1.3.6

1—7

Relocation list dictionary (RLD)

2.1.2

2—2
SETCS macroinstruction

2.7.5

2.61

Repetitive loads

2.1.4

2—3

Restart facility

See checkpoint
and restart capability.

SETIME macroinstruction
continue processing until
interrupt
example
function
interval timer
timer services

2.3.2.2
Fig. 2—2
2.3.2.1
2.5.7
2.3

2—22
2—23
2—20
2—47
2—15

Restore registers and return

2.4.7

2—32

RETURN macroinstruction
function
program linkage

2.4.7
2.4

2—32
2—24

Shared filelock capability

4.3.1.2

4—13

Rewind to load point

4.8.2

4—47

SIB

2.3.1.1

2—15

Rewind with interlock

4.8.2

4—47

SNAP macroinstruction

7.1.1

7—1

RLD

2.1.2

2—2

SNAPF macroinstruction

7.1.1

7—1

UP-8832

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

Index 10
Update B

Term

Reference

Page

Term

Reference

Page

Snapshot dumps

7.1.1

7—1

Storage reference option (S)

7.3.4.1

7—27

STXIT macroinstruction
7.4.6.4
7.4.6
7.4.6.5

7—52
7—48
7—52

2.5
2.5.1

2—34
2—35

Subtask

5.1.1.2

5—2

7.4.6.1

7—49

Supervisor
diagnostic and debugging aids
disk and diskette space management
macroinstructions
multijobbing and multitasking
spooling
system access technique

Section
Section
Section
Section
Section
Section
Fig.
Fig.
Fig.
Fig.

Soft-patch symbiont
cancelling the symbiont
description
error messages
patching from a single entry
on the console
producing a card deck from
the console
using card input
using console input
using multiple forms of
the command

7.4.6.1
7.4.6.2
7.4.6.1

7—49
7—51
7—49

7.4.6.3

7—51

Space control, disk

4.2.4

4—4

Spooler

6.1.3

6—2

Symbolic addresses
abnormal termination island code
interval timer island code
operator communication island code
program check island code
System access technique

See SAT.

System control tables

2.6.3

2—55

System debugging aids
history tables
mini monitor
pseudo monitor
resident supervisor monitor
summary

7.4.1
7.4.2
7.4.1
7.4.1
Table 7—3

7—42
7—46
7—41
7—41
7—40

System information block (SIB)

2.3.1.1

2—15

System information control
description
get data from communication region
get data from system control tables
put data into communication region

2.6
2.6.1
2.6.3
2.6.2

2—53
2—54
2—55
2—55

System library file

4.3.1

4—10

System standard tape labels

See tape
labels, system
standard.

Spooling
breakpoint in output file
initialization
input reader
output writer
relationship of devices and
programs
special functions
spooler
use

6.3
6.1.1
6.1.2
6.1.4

6—5
6—1
6—2
6—3

Fig. 6—1
6.1.5
6.1.3
6.2

6—2
6—4
6—2
6—4

Standard load modules

2.1

2—1

Standard tape labels
system
tape volume organization

4.6
4.7.1

4—26
4—38

Standard tape volume organization
description
multifile volume with end-of-file
multifile volumes with
end-of-volume
volumes containing a single file
Start-of-data (1$) job control statement
control stream embedded data
monitor input

4.7.1
Fig. 4—12

4—38
4—40

Fig. 4—13
Fig. 4—11

4—41
4—39

2.7.3
7.3.1.1
7.3.1.2

2—59
7—18
7—21

Statement conventions

1.2

1—1

Storage display action

7.3.5.1.2

7—35

Storage displays
abnormal termination
checkpoint and restart
description
monitor and trace
normal termination dumps
snapshot dumps

7.1.3
7.2
7.1
7.3
7.1.2
7.1.1

7—10
7—10
7—1
7—17
7—5
7—1

7
3
1
5
6
4

2—6
2—7
2—8
2—4

2—46
2—47
2—49
2—43

0

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Term

Reference

Page

Term

Reference

Page

5.2.4
5.3.3
5.3.4

5—3
5—9
5—10

2.5.3

2—39

multiple task wait
reactivate task
wait for task completion

5.4.4
5.4.5
5.4
5.4.1
5.4.3
5.4.6
5.4.2

5—16
5—17
5—13
5—13
5—15
5—18
5—14

attaching island code
detaching island code

2.5.1
2.5.2

2—35
2—38

TCA macroinstruction

4.8.1
4.8.2

4—45
4—47

TCB

5.2.1

5—2

Termination, program

See program
termination.

termination

T
Tape control appendage (TCA)
Tape data management system
Tape labels, system standard
description
file header
file trailer
nonstandard
standard tape volumes
unlabeled
volume

See TCA
macroinstruction.
4.5
4.6
4.6.2
4.6.3
4.7.2
4.7.1
4.7.3
4.6.1

4—25
4—26
4—29
4—33
4—42
4—38
444
4—27

Tape SAT files
block number processing
close
control tape unit functions
defining
description
get next logical block
interface
open
output next logical block
processing
system standard labels
tape control appendage
volume and file organization
wait for block transfer

4.10
4.9.6
4.9.5
4.8.1
4.5
4.9.2
4.8
4.9.1
4.9.3
4.9
4.6
4.8.2
4.7
4.9.4

Tape system access technique

See TSAT.

Tape unit functions

4.9.5

454

Tape volume and file organization
description
nonstandard
standard
unlabeled

4,7
4.7.2
4.7.1
4.7.3

4—38
4—42
4—38
444

Tape volume label group

4.6.1

4—27

Task control block (TCB)

5.2.1

5—2

5.2.2
5.3.2
5.2
5.2.1
5.3.1
5.2.6
5.3
5.2.3
5.3.6
5.2.5
5.3.5

5—2
57
5—2
5—2
55
5—4

Task management
creation
description
generate event control block
hierarchical structure
macroinstructions
priority
queue driven task
reactivate a task

455
4—55
445
4—25
4—52
4—45
4—51
4—52
4—50
4—26
447
4—38
4—53

5—3
5—12
54
5—11

Index 11

yield until task completion
Task switches
Task synchronization
activate waiting task
deactivate task
description

Tasks

Termination dumps
abnormal
normal

7.1.3
7.1.2

7—10
7—5

TGO macroinstruction

5.4.6

5—18

Time of day

2.3.1.2
2.3.1.3

2—16
2—16

2.3.2.4
2.3.2.2
2.3.2
2.3.2.1
2.3.2.3

2—24
2—22
2—19
2—20
2—24

2.3.1.1
2.3
2.3.1.3
Fig. 2—1
See timer
interrupt
facilities.
2.3.1.2

2—15
2—15
2—16
2—18

2—15

TPAUSE macroinstruction

5.4.5

5—17

Trace

See monitor
and trace.

Timer interrupt facilities
cancel previous request
continue processing until interrupt
description
set (SETIME)
wait for interrupt
Timer services
current date
description
get current date and time (GETIME)
interrupt facilities
time of day

Index 12

SPERRY UNIVAC OS/3
SUPERVISOR MACROINSTRUCTIONS

UP-8832

Term

Reference

Page

Term

Reference

Page

Trace job control option

7.3.1.1

7—18

Volume serial number (VSN)

4.6.1

4—27

Volume table of contents (VTOC)

3.1

3—1

4.10
4.9
4.5
4.6
4.8
4.7

4—55
4—50
4—25
4—26
4—45
4—38

5.3.4
5.3

5—10
5—4

Unit of store

4.3.2

4—14

Unlabeled tape volume organization

4.7.3

4—44

User program switch indicator (UPSI)

2.6

2—53

TSAT
block number processing
controlling tape file processing
description
system standard tape labels
tape file interface
tape volume and file organization
TYIELD macroinstruction
function
multitasking

Volumes
nonstandard tape

See nonstandard
tape volumes.
See standard
tape volumes.

standard tape
VOL1 label
description
field description
formats

4.6.1
Table 4—1
Fig. 4—6
Fig. 4—17

4—27
4—29
4—28
4—59

3.1

3—1

5.4.2

5—14

2.3.2.2
2.3.2.3

2—22
2—24

WAITF macroinstruction
disk processing
magnetic tape processing

4.4.4
4.9.4

4—22
4—53

WAITM macroinstruction, task
synchronization

5.4.3

5—15

U
VTOC, disk space management

V

W
WAIT macroinstruction, task
synchronization
WAIT parameter, SETIME macroinstruction

VCALL macroinstruction
function
program linkage

2.4.4
2.4

2—28
2—24

VOL job control statement

4.6.1

4—27

Volume labels, description

4.6.1

4—27

UNISYS
USER COMMENTS
We will use your comments to improve subsequent editions.
NOTE:

Please do not use this form as an order blank.

(Document Title)

(Document No.)

(Revision No.)

(Update Level)

Comments:

From:

(Name of User)

(Business Address)

Fold on dotted lines, and mail. (No postage is necessary if mailed in the U.S.A.)
Thank you for your cooperation

__________

_____

FOLD

N N
BUSINESS

REPLY

FIRST CLASS PERMIT NO. 21 BLUE BELL, PA.

MAIL

POSTAGE WILL BE PAID BY ADDRESSEE

Unisys Corporation
E/MSG Product Information Development
PC Box 500 C1-NE6
Blue Bell, PA 19422-9990
I
FOLD

NOPOSTAGE
NECESSARY
IF MAILED IN THE
UNITED STATES

—



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.4
Linearized                      : Yes
XMP Toolkit                     : 3.1-701
Create Date                     : 2012:07:02 16:04:39+01:00
Creator Tool                    : Xerox WorkCentre 7535
Modify Date                     : 2012:07:03 08:26:26+02:00
Metadata Date                   : 2012:07:03 08:26:26+02:00
Producer                        : Xerox WorkCentre 7535
Format                          : application/pdf
Document ID                     : uuid:ffa12e3b-c97d-46a7-bdf8-b90311b1b48f
Instance ID                     : uuid:185d43a2-6daa-422d-8980-99ae9cfdadf1
Page Count                      : 292
Creator                         : Xerox WorkCentre 7535
EXIF Metadata provided by EXIF.tools

Navigation menu