C20 1663 0_System_360_Operating_System_User_Libraries_Feb67 0 System 360 Operating User Libraries Feb67

C20-1663-0_System_360_Operating_System_User_Libraries_Feb67 C20-1663-0_System_360_Operating_System_User_Libraries_Feb67

User Manual: C20-1663-0_System_360_Operating_System_User_Libraries_Feb67

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

DownloadC20-1663-0_System_360_Operating_System_User_Libraries_Feb67 C20-1663-0 System 360 Operating User Libraries Feb67
Open PDF In BrowserView PDF
C20-1663-0

IBM System/360 Operating System User Libraries

The purpose of this document is to illustrate, by means of a
program testing application, the creation, use, and maintenance
of user program libraries operating under the IBM System/360
Operating System. The program testing application was chosen
for illustrative purposes only and should not be construed as a
workable system as it stands. The information in this text is
based on information and components available at the time of the
initial release of Operating System/360. The use of Assembler E,
COBOL E, FORTRAN E, and Linkage Editor E is assumed. The
user should therefore refer to the following texts and their most
recent technical newsletters for the most complete, accurate,
and up-to-date information:
IBM System/360 Operating System: Utilities (C28-6586)
IBM System/360 Operating System: System Generation (C28-6554)
IBM System/360 Operating System: Linkage Editor (C28-6538)
IBM System/360 Operating System: Job Control Language (C28-6539)
IBM System/360 Operating System: System Programmer's Guide
(C28-6550)

Programming

This text is a major revision of, and obsoletes IBM Operating System/360 User
Libraries, Preliminary Edition (Y20-0008). The major changes are on pages 12, 14,
22, 32, 34, and 37.

Copies of this and other IBM publications can be obtained through IBM branch
offices. Address comments concerning the contents of this publication to
IBM, Technical Publications Department, 112 East Post Road, White Plains, N. Y.

©

International Business Machines Corporation, 1966

10601

Technical Newsletter

Re: Form No.

C20-1663-0

This Newsletter No.
Date

N20-1010-0

February 15, 1967

Previous Newsletter Nos.

None

IBM SYSTEM/360 OPERATING SYSTEM USER I.JBRARIES
This technical newsletter amends the publication IBM System/360 Operating System User Libraries
(C20-1663-0). Make the corrections and additions listed below in existing copies of the publication.
Cover and Preface Pages
Add the following to the list of reference texts on both pages:
IBM System/360 Operating System: System Control Blocks (C28-6628)
Page 12
In the drawing at top of page, change the word above the volume containing the SYSl. PROCLIB
from "TESTVL" to "SYSRES".
In the program listing below this drawing, add a comma at the end of the second line of item 4:
"DISP=(NEW, KEEP), ". Similarly, add a comma at the end of the second line of item 5. The
commas indicate continuation of the data definitions.
Page 32
In the Note at bottom of page, change the next to last line from:
require an additional parameter, that is VOLUME=SER-TESTVL.
to the following:
require two additional parameters, that is, VOLUME=SER=TESTVL and UNIT-2311.
Page 37
Add "( see C28-6628)" to the end of the next to last paragraph.
Note: File this newsletter at the back of the publication. It will provide a reference to changes,
a method of determining that all amendments have been received, and a check that the publication
contains the proper page s.

IBM Corporation, Technical Publications Dept., 112 E. Post Road, White Plains, N. Y. 10601
Printed in U.S.A.

N20-1010-0 (C20-1663-0) Page 1 of 1

PREFACE
The purpose of this document is to illustrate the creation, use, and
maintenance of user program libraries operating under OS/360. To
facilitate the explanation of interplay and control among the various
components of OS/360, the application of program testing has been
chosen as a vehicle to demonstrate:
Library creation and use
Cataloged procedure creation and use
Library maintenance
Backup procedures
The program testing application, hereafter referred to as TESTS, was
chosen for illustrative purposes only and should not be construed as a
workable system as it stands. The information in this manual is based
on the information and components available at the time of the initial
release of OS/360. The use of Assembler E, COBOL E, FORTRAN E,
and Linkage Editor E is assumed.
The user should therefore refer to the following texts and their most
recent technical newsletters for the most complete, accurate, and
up-to-date information:
IBM System/360
IBMSystem/360
IBM System/360
IBM System/360
IBM System/360

Operating
Operating
Operating
Operating
Operating

System
System
System
System
System

Utilities (C28-6586)
System Generation (C28-6554)
Linkage Editor (C28-6538)
Job Control Language (C28-6539)
System Programmer's Guide (C28-6550)

CONTENTS
Definition of a Library. . . . . . . .
Overall Example - Program Testing The Test Cycle. . . . . .
Overall Flow. . . . . . . . . . .
Creation of TES TS Libraries .
Volume Initialization . . . . . . .
Library Naming and Creation.
Utilization of TESTS. . . . .
Source Library. . . . . . . . . .
Source Module Creation. . .
Source Module Correction.
Obj ect Module Creation . .
Load Module Creation. . .
Execution of Load Modules.
Library Maintenance. . . . . . . . .
Reducing Extent Requirements .
Purging Unused Members . . . . .
Completed Programs . . .
Library Backup - Audit Trail . . . .
Backup Copy . . . . . . . . . . .
Reinitialize TESTS . . . . . . . .
Multiple Job Flow in TESTS . . . .

. . . .
"TESTS" .
.

1
2
2
4
9
9
9

.

14
14
14
14
14
19
26

29
29
30
30
37
37

40
43

LIST OF ILLUSTRATIONS
Figure 1.
Figure 2.
Figure 3.
Figure 4.
Figure 5.
Figure
FigUre
Figure
Figure
Figure
Figure
Figure
Figure

6.
7.
8.
9.
10.
1I.
12.
13.

Figure
Figure
Figure
Figure
Figure
Figure
Figure
Figure
Figure

14.
15.
16.
17.
18.
19.
20.
21.
22.

Figure
Figure
Figure
Figure
Figure
Figure

23.
24.
25.
26.
27.
28.

Figure 29.

Libraries in TES TS system
Job flow of one program from source to execution: source program to
source library
Job flow of one program from source to execution: source program in
source library assembled into object library
Job flow of one program from source to execution: object module is linkedited and becomes a load module in the load library (TEST. LOAD)
Job flow of one program from source to execution: execution of
program A13
To initialize the TESTS volume
To create the TESTS libraries and add a procedure that will add procedures
To add a procedure to SYS1. PROCLIB with ADDPROCS
To enter symbolic (source) module into the source library
Form fOl entering changes into the source library
To make corrections to the source library
Results of source correction
To compile or assemble a source module from the source library into the
obj ect library
To create object modules using TESTS cataloged procedure for FORTRAN
To create object modules using TESTS cataloged procedure for COBOL
To linkage-edit multiple load modules in one Linkage Editor run
To test programs from the load library
Generalized compile-Linkage-Edit - Execute procedure
Increasing the available space in a PDS
To list TESTS system control data
To reduce extent requirements on a volume
To print and punch a source program and delete it from the source, object
and load libraries
PRINT, PUNCH, and DELETE
To concatenate utility control statements
To obtain a backup copy of the TESTS volume
Document received from BACKUP procedure
To reinitialize the TESTS volume
Document received from reinitializing the TESTS volume (see Figure 27
for execution)
Job flow of multiple programs from source to execution

DEFINITION OF A LIBRARY
A 'library' is a partitioned data set (PDS), which is a data set with one or
more sequentially organized members, residing on and not exceeding in
space one direct access volume. OS/360 libraries may be categorized as
follows:
1.

Libraries required by OS/360 for its operation, and residing on either
the system residence volume or some other direct access volume.

2. Libraries required when using certain processors or features of
08/360 (for example, the COBOL and FORTRAN libraries), but not
required for the system to function.
3. Libraries defined, organized, and named by the user to best
accommodate the installation's requirements.
The libraries falling in category 1 and referred to in this document are:
SYSI. LINKLIB (Link library)
SYSI. PROCLIB (Procedure library)
Those falling in category 2 and referred to here are:
SYSl.MACLIB (Macro library)
SYSI. COB LIB (COBOL library)
SYSl. FORTLIB (FORTRAN library)
Full descriptions of these two categories may be found in C28-6554.
Libraries in category 3 may be given simple or qualified names. Since a
library is nothing more than a data set, it may be created during execution
of any job step by defining the library name, allocating space on a volume,
etc. (see "Library Naming and Creation"). While libraries in categories
1 and 2 are neither created nor named by the user, they may be accessed
and used as in category 3.
User programs may be located in the Link library. To execute such a
program, the user merely specifies the name of this program in the EXEC
statement.
User programs may also be located in a library createdby the user
(category 3). To execute a program in a user-created library, the user
must define this library by inserting a data definition (DD) statement
(with a ddname of JOBLIB) prior to the EXEC statement or statements
requiring the use of this library. This DD statement causes OS/360 to
search the identified user's library for the program to be executed before
searching the Link library.

1

OVERALL EXAMPLE - PROGRAM TESTING -

"TESTS"

In many installations the development and testing of applications
consumes a great deal of effort and time. While testing systems vary
from installation to installation, certain library maintenance methods
should be followed to take full advantage of the computing system.

The Test Cycle
The sample testing system example, TESTS, is based on the concept of
using a separate disk-pack exclusively for all program testing within an
installation. The basic reason for this approach is to isolate undebugged
programs and to ensure that they do not contaminate space on other
packs or the system residence volume.
TESTS is further thought of as a "stacked testing" procedure in which
it is desirable to perform testing at convenient intervals during a shift
and thus stack all tests to be performed, mount the TESTS pack, and
perform the tests required. This approach will probably be valid for
most OS/360 installations, at least in the early phases of their
development.
From an operations point of view, TESTS is thought of as an application
in which the user may specify certain standard procedures to be
performed in this test environment.
From a programmer's point of view the tests performed on his program
are done on a remote basis. The programmer must request the type of
test he wishes.
The TESTS system consists of three libraries, or PDS's. As shown in
Figure 1, a library is available for each of the following:
Source modules - programs in source language
Object modules - compiled programs or subroutines
Load modules - Linkage Editor output (executable programs)
The programmer's first action is to request that his source module be
entered into the source library. Once this is done, he may request one
or more of the following:
1.
2.
3.
4.
5.
6.

Compilation
Modification of his source program
Linkage editing
Execution
Linkage editing to combine additional object or load modules
Compile - linkage edit - execute

Each of the modules (source, object, load) is retained in the appropriate
library until the test cycle has been completed and the programmer
wishes to remove it.

2

TESTVL

1.
2.
3.
4.

Source code and modifications entered
Compilations
Link-edit runs
Program executions

Figure 1. Libraries in TESTS system
3

Thus the programmer debugs his program using computer output. He
then updates and retests his program by requesting the appropriate
phases mentioned above, without having to continually maintain a source
deck throughout the complete compilation and testing cycle.
Once his program has been thoroughly tested, he may request (among
other things) the updated source deck, a listing, and the deletion of his
program from the three TEST libraries.

Overall Flow
To illustrate the flow of operations that occur in the TESTS application
environment, two examples have been given. Both consist of a diagrammatic representation of the job stream, the processing to occur, and the
libraries used, as well as a description of the function of each statement
in the job stream. The statements in the job stream are illustrative
rather than actual. The actual job control language and control statements are specified in the detailed illustrations of each phase of the
TEST application.
The first example (Figures 2-5) illustrates the processing of A13, a
source program that is to be placed in the source module library
(TEST. SOURCE), assembled into an object module library
(TEST. OBJEC T), link-edited into a load module library (TEST. LOAD)
and executed from TEST. LOAD.
The second example (see "Multiple Job Flow in TESTS") illustrates the
flow of multiple programs operating in the TESTS environment and is
more meaningful as a summary of the contents of this document.

4

SYSRES

I EBUPDAT
AI

TESTVL

A2
OS/360

A3
SOURCE DECK

./ ADD AI3
PROC= NEWSORC

Job Stream

Processing Incurred

AI. EXEC PROC=NEWSORC

Invokes cataloged procedure to place source
program on source library (see Figure 9).

A2. ADD Al3

Indicates the name of the source program, A13.

A3. Source Deck

The source statements that are entered into
TEST.SOURCE as A13.

Figure 2. Job flow of one program from source to execution: source program to
source library

5

SYSRES

TESTVL
LI NKEDIT
COBOL
FORTRAN

83

OS/360

II SYSPUNCH DO AI3
I I SYSIN DO AI3
81

II EXEC PROC=TESTASSM

Job Stream

Processing Incurred

Bl. EXEC PROC=TESTASSEM

Invokes the cataloged procedure to assemble
the source module A13 (see Figure 13).

B2. SYSIN DD A13 (Input)

Represents the DD statement indicating the
name of the source module to be assembled.

B3. SYSPUNCH DD A13 (Output)

Represents the DD statement indicating
that the member name A13 be assigned to the
output object module to go into TEST. OBJECT.

Figure 3. Job flow of one program from source to execution: source program in source
library assembled into object library

6

SYSRES

TESTVL
LINKEDIT
COBOL
FORTRAN

TEST. LOAD

OS/360

NAME AI3
INCLUDE AI3
CI

II EXEC PROC=TESTLINK

Job Stream

Processing Incurred

Cl. EXEC PROC=TESTLINK

Invokes the cataloged procedure to link-edit the
object module (see Figure 16).

C2. INCLUDE A13

Represents the Linkage Editor statement that
speCifies the name of the object module to be
link-edited, A13.

C3. NAME A13

Represents the Linkage Editor statement that
specifies the name to be assigned to the output
load module going into the load library.

Figure 4. Job flow of one program from source to execution: object module is linkedited and becomes a load module in the load library (TEST. LOAD)

7

TESTVL

360

II EXEC PGM=AI3

Job Stream

Processing Incurred

DI. JOBLIB TEST. LOAD

Specifies to the control program that the
program to be executed resides in the library
named TEST. LOAD.

D2. EXEC PGM=AI3

Specifies the member name, A13, of the
program in the library to be executed.

*D3. OUTPUT Al3

Symbolically represents one or more DD
statements required to specify the devices and
data sets required for the output results of A13.

*D4. INPUT Al3

Symbolically represents one or more DD
statements required to specify the sources of
input data for A13.

*Must be specified by the programmer or set up as standard DD statements for input and
output at the user's descretion. Note: It is not the intent of this document to stress test
data set manipulation and control-.-Figure 5. Job flow of one program from source to execution: execution of program Al3

8

CREATION OF TESTS LIBRARIES
Two phases are required before TESTS may be put into operation:
(1) initialization and (2) library naming and creation.

Volume Initialization
In this phase the Independent utility DASDI (see C28-65.86) is used to
create a volume label and to allocate space for the Volume Table of
Contents (VTOC). Figure 6 shows the control statements required for
this phase. The volume serial number to be placed in the volume label
is TESTVL.

Library Naming and Creation
Three libraries (partitioned data sets) are required in the TESTS
environment (see note at end of this section). They will be named:
TEST. SOURCE - for source modules
TEST. OBJECT - for object modules
TEST. LOAD
- for load modules
Although the three libraries in the TESTS example are not cataloged,
each library is assigned a two-element name. The reason for this is
that someone else may wish to refer to a data set called SOURCE. To
avoid duplication, the second person could call his library MY. SOURCE
instead of TEST. SOURCE.
It is apparent that all users of a test volume could have unique names

for their libraries. However, if this were the case, each user would
have to develop his own procedure or use the TESTS procedures and
override certain DD cards.
The approach taken in the TESTS example is a more standardized one
permitting more accurate control, easier procedure specification, and
more convenient maintenance of the TESTS volume. This standardization,
however, requires the programmer to name his program according to
some convention.
A member (module) or program may have a name as large as eight
characters. Without some type of naming convention, two independent
programmers could name their programs by the same name - say,
MATRIX. This would be intolerable, especially if both programs were
expected to be in TESTS at the same time. Therefore, a naming convention must be established. For our example we will assign a two-digit
code to individuals or departments. Thus department 23 will submit a
program named MATRIX23 to TESTS. It must retain this name at least
for the life of this program within TESTS.

9

Figure 7 shows the job control statements required to allocate space for
and create the three libraries as well as to enter a standard procedure,
described in the following paragraphs, into SYS1. PROCLIB. It is
desirable to develop standard procedures for the testing environment
such as those for updating source modules, linkage editing, compiling,
etc., and to place these procedures in the procedure library
(SYS1. PROCLIB). This document describes several of the procedures
used in TESTS.
Since the entering of a procedure into the SYS1. PROC LIB is a procedure
itself, it will also be convenient to place that procedure in
SYSl. PROCLIB. This procedure (called ADDPROCS) was initially put
into the SYS1.PROCLIB via the UPDATE utility, as seen in Figure 7.
The use of ADDPROCS for adding a procedure to SYSl. PROCLIB is
illustrated in Figure 8.
It is possible to add to or delete from a procedure in SYS1.PROCLIB
through the UPDATE utility program. However, since a TESTS
procedure would represent relatively few cards, a change to the procedure could also be accomplished by updating the original card deck. The
updated procedure deck would then be added to SYSl.PROCLIB using the
ADDPROCS procedure (Figure 8). Although the original procedure has
the same name as the new one, the ADDPROCS will remove the pointers
in SYS1.PROCLIB to the old one and point to the new procedure.
Although not illustrated, all procedures for TESTS have been entered
into SYS1.PROCLIB. Further references to these TESTS procedures
will assume their residence in SYSl. PROCLIB.
Note: Although not implemented in the TESTS examples, it would be
advantageous to preallocate space for all utility (work) data sets - for
example, SYSUT1 and SYSUT2 - at the same time that the TESTS
libraries are created (see Figure 7). If this were done, space allocation
for the utility (work) data sets would be avoided in subsequent procedures.

10

CC2

i

1. JOB 'INITIALIZE DISK ON 191 TO VOLIO=TESTVL'
2. MSG TOOEV=1403,TOADDR=OOE
3. CADEf TOOEV=2311,TOAOOR=191,VOlID=SCRATCH
~ VlD
NEWVOlIO=TESTVl,OWNERID=INSTlWORK
5. VTGCD STRTADR=OOOl,EXTENT=0009
6. Et'lD

Card

Narrative

1.

JOB with comments.
Messages will be printed on the printer.
The specific pack to be initialized.
The volume will be called TESTVL and owner is INSTLWORK.
The VTOC will span nine tracks starting in cylinder 0, track 1.
END card indicating end of JOB to the DASDI utility.

2.
3.
4.
5.
6.

Figure 6;. To initialize the TESTS volume

11

TESTVL

~IIINITAL

EXEC
2. I ISY SUT2 DO
3. IISYSPRINT DO
4. 11001
DO
1.

I I'

JOB
007,INSTLWORK,MSGLEVEL=1
PGM=IEBUPDAT,PARM=NEW
OSNAME=SYS1.PROCLIB,DISP=OLO
SYSOUT=A
DSNAME=TE~T.SOURCE~VOLUME=SER=TESTVL,UNIT=2311,

II

SPACE=(TRK,(SO,lO,lO»,DISP=(NEW,KEEP),
OCB=(,RECFM=F,BLKSIZE=80)
5. 11002
DO
DSNAME=TEST.OBJECT,VOLUME=SER=TESTVL,UNIT=2311,
II
SPACE=(TRK,(400,20,10»,DISP=(NEW,KEEP).
II
OCB=(,RECFM=F,BLKSIZE=80)
6. 11003
DO
DSNAME=TEST.LOAO,VOLUME=SER=TESTVL,UNIT=2311,
II
SPACE=(TRK,400,20,10»,DISP=(NEW,KEEP)
IISYSIN DO DATA
7. • I
ADD
ADOPROCS,Ol ,0,1
, {IIPROC
EXEC PGM=IEBUPDAT,PARM=NEW
8. IISYSUT2
DO OSNAME=SYS1.PROCLIBioISP=MOO
.
IISYSPRINT DO SYSOUT=A

II

9.

*
*

*
*
*

1*

1.

2.
3.
4,5,6.

7.

8.
9.

Execute the utility UPDATE program (see C28-6586) in order to enter into
SYS1. PROCLIB a standard procedure for entering procedures into SYS1.
PROCLIB.
The data to follow will be put into SYSl. PROCLIB (SYSIN DD DATA).
Required by the utility.
DD cards which allocate space on TESTVL. Note that each library directory
will handle 10x(4 to 7) members. Therefore, at anyone time, a library
directory can handle 10x6 (on the average) = 60 members. Note also that the
actual number of modules that can be stored in a library depends on the size of
the modules and the total space allocated to the data set.
Control statement for IE BUPDAT • It names the member to be added. In this
case it will be named ADDPROCS.
The job control language for the procedure called ADDPROCS.
Required by the utility and the control program.

Figure 7. To create the TESTS libraries and add a procedure that will add procedures
12

ACOPROCS
DATA
~.,.'b... NEWSORCE,Ol,Ot 1
IINEWSORCE lXEC PGM=IEBUPOAT,PARM=NEw
IISYSPRINT 00 SYSOuT=A
4 { IISYSUT2 00 DSNAME=TEST.SOURCE,VOlUME=SER=TESTVl,
II
UNIT=2311,DISP=OlD
i.

IISTEP

EXEC

2. IIPROC.SYSIN
3. • 1
e~'o""""'ADO

5.

1*

-

CO

.

1. Executes the ADDPROCS procedure (see Figure 7) for entering a procedure into the
SYSl. PROCLIB.
2. DD * statement for the ADDPROCS procedure - that is, the member(s) follows.
Note: the DD name must be qualified with the step name of the procedure. The step
name is PROC (see Figure 7).
3. Required by the utility UPDATE (see C28-6586). The NEWSORCE name will be the
name of the member (procedure) that will be added.
4. The job control cards that will be entered as a procedure.
5. Required by the utility and the control program.
Note: Any procedure may be added in this manner. If multiple procedures are to be
added with one EXEC ADDPROCS, the ADD cards (with the procedure names and
associated job control statements to be entered) must be in binary collating
sequence.

Figure 8.

To add a procedure to SYSl. PROCLIB with ADDPROCS

13

UTILIZATION OF TESTS
Source Library
The library called TEST •SOURCE contains source modules. Each
module is in source code (Assembler, FORTRAN, COBOL, PL/I).
The original source code is entered into the TEST. SOURCE PDS once.
After errors are detected via the debugging cycle; the programmer
requests changes to his source code. This method eliminates
voluminous card and tape handling since the source code is always on
disk.
SOURCE MODULE CREATION
By executing the NEWSORCE procedure, any set of symbolic coding may
be entered into the TEST. SOURCE library. This source coding then
becomes a member of the source library, with a program name specified
by the programmer. Figure 9 illustrates this method. Note that
NEWSORCE assigns a sequence number to each source statement. This
sequence number can be referenced by the programmer when making
changes to the source module.
SOURCE MODULE CORRECTION
After a debugging run, changes to the original source code may be
needed. The procedure CHGSORCE allows the programmer to specify
which original source statement(s) he desires to have deleted (if any)
and whether he wishes new source statements added to the original source.
A standard TESTS form is illustrated to allow the subsequent additions
and deletions of source code (see Figure 10). The implementation of
these changes is shown in Figure 11, and the listed results indicating
what took place is shown in Figure 12.

Obj ect Module Creation
Once the source modules have been entered on TEST .SOURCE, they are
processed by one of the language translators (Assembler,. FORTRAN, PL/I,
or COBOL). The output of a language translator is defined as an object
module, which in this application becomes a member in the object
library (TEST. OBJECT).

14

SOURCE CODE MODULE

./

•./

NUMBR

. ------ADD

I

III

t:l:3~

III

01 ~ 0, 1

I

·. · . ··"is:nS!]R(~. S'y':? L·I Dtl

I

OOOOOOOO~OOOOOOOO~00000010~00000010

DAT1~

I II III
PR~OC=NE[·fst!f<:CE

G

11000

I

III I

I

.

II
II

00 olooooooooooolluuuooooooooooooooooooooooooooOOOOOOOOO

l234517

9W"nU~ft~Dq~~nn~u~a~aa~~nUM~.n • • g~ua~a~~~U~~~~MH~~~9H~a

11

111111111111111111111111111111111111111111111111111111

1111

2222222222222222122222222222222222222222222222222222222

"NE~SORCE EXEC PGM=IEBUPOAT,PARM=NEW
IISYSPRINT 00 SYSOUT=A
2. IISYSUT2 DO OSNAME=TEST.SOURCE,VOlUME=SER=TESTVl,
II
UNIT=2311,OISP=OlD

I

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

CC7:2.

~

*

Execute the NEWSORCE procedure.
NEWSORCE procedure in SYS1.PROCLIB.
Name the added member B13.
Sequence-number the source code, starting at 10 and incrementing by 10.
Symbolic code to be entered into TEST. SOURCE.
Required by IEBUPDAT (C28-6586) and reader-interpreter. ~ote: Source code
for multiple members may be entered with one EXEC NEWSORCE; however, the
ADD card with the member name and associated source code must be in collating
sequence by me~ber name.)

Figure 9. To enter symbolic (source) module into the source library

15

/;

GENERAL PURPOSE CARD PUNCH LAYOUT
DEPT.

NAME

BLDG.

PHONE

DATE
SHEET

I{

~checksquareiftobepunched
I

2

3

4

5

6

II
III CH G~

7

8

9

10 "

12 13 14 15 16 17 18 19 20121 22

2425 26 27 28 29 30131 3213< 3'

EIx EC Ie HG so RC E
aiR CE sly SI N DD bA TA o~

~v. I

napE

IP:
CIH NlQrn

%
· I
II'" · I

V · I
I
I
~ S)l ~F~C ES I,<~r ~EllV ENT~

~rp ¢lrJ

p2.

II

4E 474849 50 51 52 53/

, 9 7;

J 73 74 7576

7

'8

9 80

/1
III
I

0

I

1

"/
I

ILA ST

S--'I

,

01t ¢,'J 19 8~

¢Itf !~rJ 211 50

¢Ift (11¢ Z{i S'~

\

,

\ l

,
'C~L LP, ~

"7 )

J/

4~

•

S~, o{.ll~ 1\Ji'--' ~l\T ,TUfl Rl=i t"h

GO 'TO 6 (;:;
'fiR. IT Ei( b ~ 'I~ IS-) No '\ r. Y'R. ... P AY Pi.
IUJ ~ IT rt: ( 6 ,"Ib

?"

3637 38 3940 41 4243 44

p

n

lB' 3
R

3~

~.~

~f

0 ~ra

FI
Ir.::E LET
IDE LEIT
IDE LEIT
IDE LEIT
IDE LET

~

2~

OF

I Nc .

7~

1\ '
\\

EO

~

NI ....
I"

PII YI Wr. To D4

r~

!:1M

()()

"

S

,

e qn o

lDl¢

N7\ \
\

~~~ J

n.,,;,

y ttl
~ld ~ rJ I

,
J

I~ I
I

1/ /

*
2

3

4

5

6

7

8

9

10 /I 12 13 14 15 16 17 18 19 20 21 22 2324 2526 2728 2930 31 32 333

35 36 3738 3940 4142 4344

4~

4E 4748 4950

511 i
J

Figure 10. Form for entering changes into the source library

L

7273

4

5

6f'?

890

DELET

OOOO~~50~o~bb2050

11_1 __

~

II

DELET

I

I

I

I I

II I I

00001370~00001380

U I
I
(H:"hJEJ::13

~ 02;O~

1--

II II I
III

III

I

I II

G

II II I

D~EC-- F'Rt1C~(f-l!~:~:O~~:E··""

I III
III

II
II

1100000 001 00000000000100000000000000000000000000000000
123458789WI

111111

111

a~M~~"n~~~un~~~n~~~~~~M~~~~H~~~~~~~O~~~~~~~~~

111111111111111111111111111111111111111111111

000000000
n 787980
111111111

7273747576

222222222

TE5TVL

MERGE

05/360

!

5Y51 PROCLIB

I

~

CHG-ORCE

111

~

IICHGSORCc EXEC PGM=IEBUPDAT,PARM=MOO
IISYSPRINT DO SYSOUT=A

IISY5UTl

2.

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

II
IISYSUT2
II

OD OSNAME=TEST.SOURCE.VUlUME=SER=TESTVL.

UNIT=2311,DISP=OLD
DO

DSNAME=TEST.SOURCE,VOlUM~=SER=TESTVl,

UNIT=2311,DISP=OLD

Invoke the CHGSORCE procedure.
CHGSORCE JCL in SYS1.PROCLIB.
Name of the program (member) to be changed - in this case B13.
Specified deletions of 80-character records and source code to be added.
Required by IEBUPDAT (C28-6586) and the Interpreter.
This DELET card is not required since both the old 1970 and 1980
would be automatically deleted and replaced by the new 1970 and 1980
source statements.

Figure 11. To make corrections to the source library

17

*
*

604 WK t",

SOURCE

Ll~E

C\ 0 , ~"'.......... ~ • _ "

605 fORMAT(2I3,4FI0.2)
IYK=IYR+l
1=1
GO TO 603

lN~tRTED

C
C
C

BALANCE DUE IS LESS THAN MUNTHLY PAYMENT
PAYPRN=AMOUNT+PAYPRN

606

AMOUNT=O.

SUURCE LiNE DELETtD
SOURCf LINt DELETED
SOURCE LINt INSERTtD
SOURCE LINE INSERTED

.

DELET 00001970,00001980
WR1rE(S,60QlMO,IYR,PAYPRN,PAYINT,TODATE,AMOUNT

.1

wRITE(5,602)

WRITEt6,60S)MO,IYR,PAVPRN,PAYINT,TODATE,AMOUNT
WRITE(6,6071
607 fDRMAT('O'/'O***** LOAN AMORTIZED *****'/'0'/'0'/'0')
CALL CLDCK(ITIME)
IDELTA~{lrlMES-lTIME)/76800

IF (IOELTA) 710,720,710
WRITE (6,999) IDELTA
FORMAT (. TOTAL TIME = ',110,' SECONDS')
DELET 00002050,00002050
PAuSE 99999

110

999
.1
SOURCE LINE DELETED

720

GO TO 1
END

ABOVE NAMEUH3

jfDUNU IN

NM DJRECTORV,TTR IS NUW ALTERED

ENU Of J08, ./ ENDUP READ
HIGHEST CONCODt: iN PROGRAM WAS 00

********

Figure 12. Results of source correction

A cataloged procedure named TESTASSM, using the assembler as the
language translator, compiles a source module from TEST. SOURCE
into an object module. The name of each of the input source modules
from the source library, and the names of each of the output modules
to be entered in the object library (TEST. OBJECT), are specified in
the job stream for each language translator job step. This procedure
and the required DD statements specifying input and output are
illustrated in Figure 13. Similar procedures may be executed for
FOR TRAN and COBOL (see Figures 14 and 15).

Load Module Creation
Object module output from language translators is in relocatable, but
not executable, format. Therefore, before execution, the object
modules must be processed by Linkage Editor so that they may become
executable load modules. In addition, adhering to OS/360's basic
concept of modularity, modules that have been separately tested may
be combined by the Linkage Editor. Also, any editing or overlay
structuring of existing object or load modules is done at this time.
Because in this application all object modules are in TEST. OBJECT and
all load modules are in TEST. LOAD, each has access to the others in
the TESTS environment, easing conSiderably the difficulties in locating
modules.
While the linkage editing can be done on a compile-linkage edit-execute
basis for each program to be tested within the TEST environment (see
Figure 18), the procedure to be discussed here addresses itself to a
single Linkage Editor run during which multiple load modules are
created, thereby reducing the number of times the processor is brought
into core storage.
Once the programs to be tested are in the TEST. OBJECT library as
object modules, they will be link-edited via the cataloged procedure
TESTLINK, onto the load module library (TEST. LOAD). This, then,
allows the programmer to reference these libraries for any additional
modules he may require by use of the Linkage Editor INCLUDE statement.
As illustrated below, the job stream for the Linkage Editor run, contains
(1) an EXEC statement calling for execution of the cataloged procedure
TESTLINK, (2) a DD * statement named TESTLINK. SYSLIN, which
indicates that the input specifications to Linkage Editor will follow in
the job stream, and (3) a set of Linkage Editor control statements
specifying the names of the input and output modules of each load module
to be created.
/ / EXEC PROC=TESTLINK
/ / TESTLINK. SYSLIN DD *
INCLUDE OBJPDS (object module name 1)
NAME load module name 1 (R)
INCLUDE OBJPDS (object module name 2)
NAME load module name 2 (R)

19

JOB STREAM

9.

IITESIASSM.SYSPUNCH

DO

DSNAME=TEST~OBJECT(A13)

DO
PROC=TESTASSM

EXEC

OS/360
ASSEMBLER

TES T. OBJECT
AI3

SYS1.

PROCLI B

I lIES IA.SSM

IISYSUTI

DO

EXEC
..f?GM: I E lASM. .
C.C..71 ~
OSNAME=UTX,UNIT=2311,SPACE=(TRK,(SO,lO»,.
VOlUME=SER=TESTVl

//

IISYSUT2

DO

DSNAME=UTY,UNIT=2311,SPACE=(IRK,(SO,lO),+
VOLUME=SER=TESTVl

DD

DSNAME=UTl,UNIT=2311,SPACE=(TRK,(50,lO)),~

/1

IISYSL13
/1

IISYSPRINI DO
IISYSllB

DO

II
./ /SYSIN

DD

/1

IISYSPUNCH
,II

DP

VOlUME=SER=TESTVl
SYSOlJT=A
DSNAME=SYSl.MACLIB,UNIT:2311,DISP=OlO,
YOLUME=SER=llllll
DSNAME=TEST.SOURCE,UNIT=2311,OISP=OLD,
VOlUME=SER=TESTVl
DSNAME=TEST.OBJECT,UNIT=2311,DISP=OlO,
VOlUME=SER=TESTVl

Underlined parameters are not necessary.

Figure 13. To compile or assemble a source module from the source library into the
object library
20

1. This EXEC statement in the job stream invokes the cataloged.
procedure TESTASSM.

2. This EXEC statement invokes the assembler IETASM.
3. Three DD statements defining the space and volume (TESTVL) on
which the three utility data sets required by the assembler should
be allocated.
4. SYSPRINT specifies that the assembly listing should be printed.
5. This SYSLIB DD statement specifies that SYS1. MAC LIB, which is
required for the assembler, resides on the system residence volume,
111111.
6. SYSIN specifies the name of the library (TEST. SOURCE) containing
the input source modules, which will be used as input to the
assembler or compiler, and indicates that this library resides on
TESTVL.
7. TESTASSM. SYSIN specifies the name of the source module (A13) to be
assembled from the library and overrides the parameter in 6.
8. SYSPUNCH specifies that the library named (TEST. OBJECT) reSiding
on TESTVL is the library in which the object modules are to be
placed.
9. TESTASSM. SYSPUNCH specifies that the name of the object module
to be placed in TEST. OBJECT is A13 and overrides the DSNAME
parameter in 8.

Figure 13 (continued).

21

CC72
SYS1. PROCLI B

IITESTFORT
IISYSPRINT
IISYSUTI
II
IISYSUT2
II
I/SYSIN
II

EXEC
PGM=IEJFAAAO,PARM~'SIZ~=50000'
SYSOUT=A
00 OSNAME=UTl,UNIT=2311,SPACE=(TRK,(30,lO»,
VGlUME=SER=TESTVl
DD DSNAME=UT2,UNIT=2311,SPACE=(TRK,(30,lO»,
VGlUME=StR=TESTVL
CD U5NAME=TEST.SOURCE,UNIT=2311,DISP=OLD,
VOlUME=SER=TESTVL
00

*
*
*

Job stream to execute FORTRAN procedure

//TESTFORT.SYSLIN
IITESTFORT.SYSIN
EXEC

DO

DSNAME=TEST.OBJECT(B13)
DSNAME=TEST.SDURCEtB13)

00

PROC=IESTFORr
SPECI FY THE NAMES
OF THE INPUT AND OUTPUT
MODULES FOR FORTRAN

Figure 14. To create object modules using TESTS cataloged procedure for FORTRAN

CC72
SYS1. PROCLIB

EXEC
PGM=IEPCBlOO
IITESTCOBL
IISYSUTI
DO USNAME=UTA,UNIT=2311,SPACE=(TRK,(40,lO»,
VOLUME=SEK=TESTVL
II
IlSYSUT2
CD OSNAME=UTb,UNIT=2311,SPACE={TRK,(40,lO»,
VOlUME=SER=TESTVL
II
IISYSUT3
DO DSNAME=UTC,UNIT=2311,SPACE=(TRK,(40,lO),
VClUME=SER=TESTVl
II
IISYSPRINT 00 SYSOUT=A
IISYSIN
CD OSNAME=TEST.SUURCE,UNIT=2311,OISP=OlO,
VULUME=SER=TESTVl
II
/ISYSPUNCH DO DSNAMf=TEST.OBJECT,UNIT=2311,DISP=OlD,
II
VOlUME=SER=TESTVL

*

*'
*
*

Job stream to execute COBOL procedure

IITESTCOBl.SYSPUNCH
'/TESTCOBl.SYSIN
II

EXEC

00

00

DSNAME=lEST.OBJECT(CD13)
OSNAME=TEST.SOURCECCD13.

PROC=TESTCUBl

Underlined parameters are not necessary •

SPECIFY THE NAMES
OF THE INPUT AND OUTPUT
MODULES FOR COBOL

Figure 15. To create object modules using TESTS cataloged procedure for COBOL
22

To combine additional object modules in a load module, their names may
be specified in one INCLUDE statement (see item 1 below), or additional
INCLUDE statements may be inserted (see items2 and 3 below).
1. INCLUDE OBJPDS (name 1, name 2, name 3)
2. INCLUDE OBJPDS (name 2)
3. INCLUDE OBJPDS (name 3)
Load modules from the load library may be combined with other modules
as follows:
INCLUDE SYSLMOD (load module name or names)
Additional specifications for each load module may be inserted between
the INCLUDE and NAME statements. If more than one module is to
comprise the load module, an ENTRY statement specifying the entry
point to be assigned to the load module should immediately precede the
NAME statement.
Any Linkage Editor control statements to create an overlay structure or
to edit the modules should be placed in the job stream preceding the
NAME statement as specified in the Linkage Editor manual (C28-6538).
The Linkage Editor procedure in Figure 16 (TESTLINK) produces a
module map and a list of all Linkage Editor control statements. If
additional or different processing options are desired, all parameters
required should be specified in the EXEC card, as shown in Figure 16.
FOR TRAN and COBOL object modules require that SYSl. FOR TLIB
and SYSI. COBLIB respectively be specified as the Linkage Editor
automatic call library (SYSLIB) (see C28-6538). Therefore, they have
been concatenated in the TESTLINK procedure.

23

NAME C013(R)
f::NTRY START
INClUUt SYSlMOo(C13)
lKCLUDE OBJPCS(D13)
NAME BI3(R)
INCLUDE OBJPOS(B13)
NAMf:: ASUB13(R)
INClUDf:: OBJPOS(A13,SUBAI3)
DO

*
TESTVL

05/360

SYS1.PROCLIB
IITESTlINK
IISYSl18
II
II
II
IISYSUTl
00
II
IISYSPtUNT 00
IIOBJPDS
CD
.II

IISYSLMOo
II

DO

EXEC
PGM=lINKEDIT,PARM='MAP,lIST'
DSNAME=SYS1.FORTlIB,UNIT=2311,PISP=Olo,
vel tlME= SER= 111111
DO OSNAME=SYSl.COBlIB,UNIT=2311,DISP=OLD,
YOlUME=SER-llll11
oSNAME=LTl,UNIT=2311,SPACE=(TRK,(60,lO»,
VOlUME=SER=TESTVL
SYSOUT=A
DSNAME=TEST.ObJECT,UNIT=2311,OISP=OlD,
VOlUME=SER=TESTVl
DSNAME=TEST.lOAD,UNIT=2311,OISP=OlD,
VOlUME=SER=TESTVl

*
*
*

*
*

1. The EXEC statement in the job stream invokes the cataloged
procedure TESTLINK. PARM. TESTLINK='XREF, LIST, LET'
overrides the PARM field in the EXEC statement of the cataloged
procedure and will cause a cross-reference listing to be produced
instead of a memory map and put into effect the processing option
LET.
2. The EXEC statement invokes Linkage Editor and specifies processing
optioris MAP and LIST (in this example they were overridden).
Figure 16. To linkage-edit multiple load modules in one Linkage Editor run
24

3. SYSLIB defines the automatic call library to Linkage Editor and concatenates SYS1. FORTLIB and SYS1. COBLIB. This allows any
object modules to be processed, whether compiled by COBOL or
FORTRAN.
4. SYSUT1 specifies that the Linkage Editor's utility (work) data set be
allocated space on the volume TESTVL.
5. SYSPRINT specifies that the diagnostic messages, memory map, and
a list of Linkage Editor control statements processed should be
written on the printer.
6. This DD statement indicates that any reference to OBJPDS in Linkage
Editor control statements will refer to the obj ect library (TEST.
OBJECT), which resides on volume TESTVL.
7.

The SYSLMOD DD statement specifies that all load modules created
by Linkage Editor in this run will be placed in the load library
(TEST. LOAD), which resides on the volume TESTVL.

8.

This specifies that the primary input data (SYSLIN) follows
immediately in the job stream.

9.

This Linkage Editor control statElment specifies that there are two
members, A13 and SUBA13, in the library specified by the DD
statement named OBJPDS that will be the input to this load module.

10. This control statement specifies that the name of the first load module
to be placed in TEST. LOAD is ASUB13.
11. This control statement specifies that the input to the second load
module is the member named B13 on TEST. OBJECT.
12. This control statement specifies that the name of the second load
module to be entered in the load library is B13.
13. This statement specifies that member D13 on TEST. OBJECT will be
part of the third load module.
14. This specifies that C13, previously link-edited and on TEST. LOAD
(indicated by the SYSLMOD DD statement, which points to that library)
is to be combined with D13 as input to the third load module.
15. This ENTRY statement assigns an entry point named START to the
load module.
16. This NAME statement assigns the module name CD13 to the load
module containing C13 and D13 on TEST. LOAD.
17.

/* denotes the end of the Linkage Editor input.

Figure 16 (continued).
25

Execution of Load Modules
Because all of the load modules now ready for execution are in the library
named TEST. LOAD, the JOBLIB DD statement required for execution
of each of the load modules to be tested is the same (see "Definition of a
Library") . Therefore, the job stream required to execute any load
module will contain a JOB card, a JOBLIB DD statement pointing to
TEST. LOAD, an EXEC statement where PGM='member name to be
tested', followed by the appropriate DD statements for that particular
program. (See Figure 17 for an illustration of a job stream to test
programs in TEST. LOAD). While it is possible to test multiple load
modules in one JOB, each as a separate job step, all using only one
JOB LIB statement, it should be noted that once an abnormal end of one
execution is encountered, the ensuing job steps will be bypassed.
00

IIOUT

14

SYSOUT=A
VOlU~E=SER=TESTVl

13

1~___________O_b___D_S_N_A_M_E_=_O_A_i_A_{_O_N_E_)_'U_N__
IT_=_2_3_1_1_'_0_1_S_P_=_O_l_0_'___ ~

12

EXEC

PGM=F13

.C.C.72

DO

II

0~NAME=INPGT,UNIT=(2400,~OEFER),lABEl=(,Nl)

DO

10

,

TESTVL

PGM=C013

t:XEC

9

DATA

8
7

IIFT03FOOl DO
PGM=B13

6

DATA

5

DO

4

DO

3

f:Xf:C

*
SYSOUT=A

813

PGM=ASUB13
VOlUME=SER~TESTVL

DO

2

Joe
Figure 17.

OSNAME=TEST.lOAD,UNIT=2311,OISP=COlD.PASS),
C07.TESTf:XEC,MSGlEVEl=1

To test programs from the load library

26

C.C.72

1. The JOB statement indicates that a new job, JOBD, follows.
2. JOB LIB indicates that before searching the Link library for the
programs to be executed, the library TEST. LOAD on volume TESTVL
should be searched.
3. The EXEC statement causes the program ASUB13 to be executed.
4.

This DD statement indicates that the output (assigned the ddname
OUTPUT by the programmer) of ASUB13 is to go on the printer.

5. This DD statement specifies that the input data (INPUT) for ASUB13
follows in the job stream.
6.

The second job step indicated by this EXEC statement causes program
B13 to be read into core from TEST. LOAD and executed.

7. FT03F001 is the ddname assigned by FORTRAN to the output data
set for B13, the printer.
8. FT01F001 is the ddname assigned by FORTRAN to the DD statement
that specifies that B13 f S input data follows in the job stream.
9.

The third job step causes program CD13 to be executed.

10. INFILE specifies that the input data set for CD13, INPUT, is on tape.
11. OUTFILE specifies that the results of CD13 are to be printed.
12. The fourth job step causes program F13 to be executed from
TEST. LOAD.
13. IN, the ddname defining the input data set for F13, indicates that it
is a member named ONE in the PDS named DATA.
14. OUT specifies that the results of F13 are to be printed.

Figure 17 (continued).
27

Job Stream

IITESTPROC JOB
II
EXEC

007, INSTLTEST, MSGLEVEL=1
PROC =@
I I@AA.SYSINDDDSNAME=TEST.SOURCE(@)
II
DDDSNAME=TEST.OBJECT (@)

COMPILE

®.@

II

EXEC PROC=TESTLINK, PARM. TESTLINK='@'
IITESTLINK. SYSLIN DD*
INCLUDE OBJPDS (@)
NAME
(R)

LINKEDIT

®

1*
IITEST B
IIJOBLIB

EXECUTE

II
II
II

1*

®

®

007, INSTLEXEC, MSGLEVEL=1
DSNAME=TEST. LOAD, DISP=(OLD, PASS).
VOLUME=SER=TESTVL
EXEC PGM=@
DD
DD

JOB
DD

@

Language Procedure Name
FORTRAN
PROC=TESTFORT
COBOL
PROC=TESTCOBL
ASSEMBLER
PROC=TESTASSM
®C = Member name, that is, name of program to be compiled
= Compiler Qutput
ddname
FOR TRAN
SYSLIN (See Figure 14)
COBOL
SYSPUNCH
ASSEMBLER
SYSPUNCH
= Optional Linkage Editor parameters
= Member name to be assigned to load module. E may equal B
= DD statements required to specify input and output data sets for
execution of the program.

©

i~

Figure 18. Generalized compile- Linkage-Edit - Execute procedure

28

LIBRARY MAINTENANCE
Three types of maintenance are required to keep the three libraries
(source, object, load) to a manageable size:
Reducing the PDS's extent requirements
2. Purging unused members
3. Punching, listing, and deleting completed programs

1.

Reducing Extent Requirements
The frequency with which the installation would wish to reduce the
extents of a PDS depends on the volume of testing being performed and
the original size of the PDS. Additional extents may be required, as
new members (programs) are added or updated in a library. As an
example, if a source program named MA TRIX13 were originally put
into the source library and subsequently changed through the CHGSORCE
procedure, the original space for the MATRIX13 module would be
unavailable for use.
Probably on a shift basis or daily basis, the installation would want to
obtain a picture of the situation. In order to do this, a procedure is
included here called TESTPEEK. This procedure allows the printing
of the TESTVL Volume Table of Contents, and the contents of each
library. Figure 20 illustrates the TESTPEEK procedure~ Note that
only one card is required in the job stream to obtain the listings,
because the control statements for the utility IEHLIST are located in
SYS1. PROCLIB, cataloged under the name CNLPEEK2. The control
statements are called by the SYSIN DD statement in TESTPEEK, which,
of course, is also in SYS1. PROCLIB. An examination of the output,
with particular attention to the number of extents in each library, may
lead to the decision to reorganize the libraries if they contain much
space that is unavailable for use.
To perform this function, we MOVE (see C28-6586) the TESTVL
volume to itself. This particular utility program for each PDS specified,
examines the directory and moves it to the new PDS. It also places the
members in the top of the new PDS as illustrated in Figure 19.
To perform this for all the partitioned data sets on the entire TESTS
volume, a procedure called CLEAN can be used, which is illustrated
in Figure 21. Note that again only one card is required in the job stream
to perform the CLEAN procedure, because both the CLEAN procedure
and the IEHMOVE control statement required by it are on SYS1. PROCLIB.
The SYSIN DD in C LEAN calls the control statement which is cataloged
under the name C LEAN1.

29

---

OLOPOS~
I

A
C

B

I

F

A

}

01 RECTORY

l

IB

pos
B

C
F
{ t------'------I
B

1

A

MOVEO

UNAVAILABLE
SPACE

IF
C

AVAILABLE
SPACE
__________

_ _- -_ _ _ _ _ _ _- . . . J

Figure 19. Increasing the available space in a PDS

Purging Unused Members
From the listing received from the TESTPEEK procedure, it will be
desirable to audit the usefulness and timeliness of the va.rious modules
(programs) •
If it is determined, for instance, that a particular module is no longer

useful, the installation may run the utility IEHPROGM and scratch a
particular member from all libraries. A procedure for this has not been
included in this document, but it could be similar to the last three steps
in the SORCEDOC procedure (see Figure 22).

Completed Programs
After a program has completed its required testing and is performing
satisfactorily, it can be (1) moved to LINKLIB or a specific JOB LIB ;
(2) used to obtain a copy on tape or cards, or to obtain a listing; etc.
One of the most common joint functions performed on a completed
program would be to (1) list the source code, (2) punch a source deck,
and (3) delete the program member from the source, object, and load
libraries. The SORCEDOC procedure, (see Figure 22) together with
the cataloged control statements that are also in SYSl. PROCLIB (see

30

Figure 23) will perform all these functions. To reduce the number of
cards required in the job stream (only four are required to print and
punch a program while deleting it from three libraries), the SORCEDOC
procedure uses several features of OS/360:
1. The ability to execute a multiple-step procedure. (SORCEDOC
contains a number of EXEC statements.)
2. The ability to call utility control statements from a library rather
than placing them in the job stream.
3. The ability to specify that a sequential data set is to be concatenated
with a PDS member, and the ability to continue a utility control
statement. (See "Data Set Utilities" in C28-6586 for concatenation
restrictions. )
In this case (Figure 22) the name of the program to be printed, punched,
and scratched (entered in the job stream) is recorded in a newly created
temporary data set called TEMP (see point 1 in Figure 22) by the utility
IEBGENER. This temporary data set then supplies the name of the
program to the other utility programs in SORCEDOC. Note that the
SYSIN DD statements in steps 2-6 of SORCEDOC call a utility control
statement (a member of a PDS) from SYSIN. PROCLIB. The following
DD statement, since it has no ddname, concatenated this temporary
data set with the control statement. Also note that each utility control
statement is prepared with an = sign in cc 71 (following ME MBER or
MEMBER NAME) and a continuation indicator in cc 72. Therefore, each
utility in steps 2-6 of SORCEDOC looks for the member name in TEMP
after reading the = sign of the control statement. (See Figure 24 for a
detailed illustration of the concatenation of the data sets and continuation
of the utility control statement.)
Further, it is important to observe that to print/punch a member using
the utility Print/Punch program, the detailed statement must be written
MEMBER NAME = XXXX. In the IEHPROGM utility, to scratch a
member, it must be specified as ••• , MEMBER = XXXX.
One of the most important features of the SORCEDOC approach is that
it protects the user from inadvertently scratching a library. If, for
example, a nonexistent member is speCified or a member specification
was omitted from the job stream, the utility will not scratch the library,
since no member name was specified for the MEMBER or MEMBER
NAME parameter.

31

II EXEC TESTPEEK

SYSl. PROCL I B

2

CNLPEEK2

TESTPEEK

'/PEEK2 EXEC
/ISVSPRINT DD

PGM=IEHLISI
SYSOUT=A

1/001

{ IISYSIN

~

llSrVTOC
lISTVTOC
3.~ l I STPOS
llSTPDS
llSTPDS

DO
DO

VOLUME=SER=TESTVL,UNIT=2311,OISP=OLO
OSNAME=SYS1.PROCLIB(CNLPEEK2),OISP=OLD

VDL=2Jll=T.ESTVL
DUMP,VOl=2311=TESTVl
VGl=2311=TESTVL,OSNAME=lEST.SOURCE
VOl=2311=TESTVl,DSNAME=TEST.OBJECT
VOl=2311=TESTVl,OSNAME=TEST.lOAD

IITEST"
SYSTEM
CONTROL

1. Only one card required to obtain listings.
2. The procedure TESTPEEK located in SYSl. PROCLIB.
3. The control statements for the utility IEHLIST to list the desired data.
Note that these five statements are located in SYSl. PROCLIB under
the name CNLPEEK2. These statements are called by the DD Statement in TESTPEEK. A SYSIN DD * cannot reside in a cataloged
procedure.
4. Output results.
Note: In the TESTs environment it would be desirable to have the
SYSl. PROCLIB on the TESTVL volume. This would allow the
procedures for TESTs to be mounted only when the testing is in
process and would leave system residence SYSl. PROCLIB space
open for more universal procedures. It should be noted, however,
that if the SYSl. PROCLIB were on TESTVL and pOinted to at IPL
time, DD eards in this writeup that reference SYSI. PROCLIB would.
requireT: : additional parameter~ that is, VOLUME=SER..TESTVL. f
This would eliminate a catalog search.
Figure 20. To list TESTS system control data

32

II EXEC CLEAN

I.

/IClEAN EXEC PGM=IEHMUVE
IISYSPRINT DO SYSOUT=A
IISYSUTI DO
UNIT=2311,VOlUME=SER=111111,OISP=OlD
/1002
DO
DNIT=2311,VOlUME=SER=TESTVl,DISP=OlD
//SYSIN DD DSNAME=SYSl.PRGClIB(ClEANl),OlSP=OlD

VOlUME=2311=TESTVl.TO=2311=TESTVl
NOT C.C.!

1. One card required to invoke the C LEAN procedure.
2. The CLEAN procedure is located in SYSl. PROCLIB.
3. Control statement for the utility IEHMOVE located in SYSl. PROCLIB under the name
CLEAN1. This single statement moves TESTS volume to itself.
4. Conceptually, the action that takes place. The running time depends on the number of
data sets and members within the data sets. The old data sets are deleted.

Figure 21. To reduce extent requirements on a volume
33

I

*
TESTVL

CC16

AI3

II SORCE DOC. SYSUT 1 DO

*

PROGRAM
LISTING

PROGRAM
PUNCHED
SYS1.PROCLIB
II~URCEOOC
EXEC PGM=IEBGENER
IISYSPRINT DO SYSOUT=A
n
1.
IISYSUI2 00 OSNAME=TEMP,UNtT=2311,VOlUME=SER=TESTVl,OISP=(NEW,KEEP),
II
DeB= ( ,RECFM=F t. 61-KS ILE:=8Q ._, Sf:lACE::;(TRK, (2) )
IISYSIN DO CUMMY
IISI
EXEC PGM=lERPTPCH
IISYSPRINT 00 SYSOUT=A
IISYSUTI DO OSNAME=TEST.SOURCE,VOlUME=SER=TESTVl,
2.( II
UNIT=2311,0ISP=OlD
IISYSUT2 DO
SYSOUT=A
IISYSIN 00 DSNAME=SYSl.PROClIB(PRTSORC1),OISP=OlO
-II
DO OSNAME=TEMP,VOlUME=SER=TESTVl,UNIT=2311,0ISP=OlO
IIS2- - -EXEC PGM=IEBPTPCH
IISYSPRINT DO SVSOUT=A
IISYSUTI 00 OSNAME=TEST.SOURCE,VOLUME=SER=TESTVl,
3.
1/
UNIT=2311,0ISP=(lLO
I/SYSUT2 00
UNIT=OOO
~
/ISVSIN DO OSNAME=SYSl.PROCLIB(PCHSORCl),OlSP=Ol~v
II
00 OSNAME=TEMP~VOLUME=SER=TESTVL,UNIT=2311,0ISP=OlO
I/scm EXEC PGM=IEHPROGM
11001
DO VOlUME=SER=TESTVl,UNIT=2311,0ISP=OLO
4
/ISYSPRINT DO SYSOUT=A
/ISYSIN DO OSNAME=SVSl.PROCLIB(SCHSORCE),DISP=OlO ____~
_IL~D---PSNAME=TEMP, VOLUME=SER=TES TVL, UN I T=2311, ° I SP=OlO
I I SCH2
EXEC PGM= I EHPROGM
11001
00 VOlUME=SER=TESTVL,UNIT=2311,0ISP=OlD
~.
IISYSPRINT 00 SYSOUT=A
IISVSIN DD OSNAME=SYSl.PROClIB1SCHOBJCT),0(SP=OlO
-L/__ ~ ___OSNAME=TEMP,VOLUME=SER=TESTVL,UNIT=2311,OISP=Ol°
IISCH3
EXEC PGM=IEHPROGM
11001
DO VOLUME=SER=TESTVl,UNIT=2311,DISP=OlO
~
IISYSPRINT DO SVSOUT=A
/ISYSIN DO OSNAME=SYSl.PROClIB(SCHlOAOT),OISP=OlO
_-L1_ ....QO_DSNAME=TEMP, VOLUME=SER=TES TVL, UN I T=2311, DI SP=( OLD, DEL ETE)

~

~

*
*

*

1

~

~
~

A.
1.
2.
3.
4,5,6.

JCL required to execute procedure SORCEDOC.
Brings program name (in this example, A13) from card reader and stores it in a
newly created sequential data set called TEMP.
Prints program - A13 (source).
Punches program - A13 (source).
Scratches member A13 from TEST. SOURCE, TEST. OBJECT, TEST. LOAD,
respectively.

Figure 22. To print and punch a source program and delete it from the source, object
and load libraries
34

r,:PROCLIBI \

---

PCH SORCi I~I

PRTSORCl

It I SCH LOADT I I
6.

112" PRINl-rVPGRG=PO,MAXNAME= 1 ,MAXFLDS= 1

\

if

SCHOBJCT I I SCHSORCE I I
5./f
4./1
CC71

. TITLE ITEM=('PRINT OF SOURCE PROGRAM',48)
~31:PUNCH

TVPO~G=POtMAXNAME=l.CDSEQ=OOOOOOOO,MAXFLDS=l

MEMBER NAMF.!*
MEMBER NAME=*

~C1
4.

SCHSGRCE
jC1

SCRATCH DSNAME=TEST.SGURCE.VOl=2311=TESTVl,MEMBER=*

6. SCHlOADT

SCRATCH

DSNAME=TEST.LOAU~VOL=l311=TESTVL,MEMBER=*

CL

5.

I

SCH08JCT

SCRATCH DSNAME=TEST.OBJECT,VOL=2311=TESTVl.MEMBER=*

Figure 23. PRINT, PUNCH, and DELETE

35

SORCE DOC

SYSLPROCLIB

EXEC P~M=iEHPRUGM
1:)0 VULUME=SER=TlSIVL,UNII=2311,DISP=OLD
I~SYSPRINT
OD
5YSUUT=A
IISYSIN 00 OSNAME=SYS1.PkGCLld(SCHSORCt),QISP=OLO
II
00 O~NAM£=TEMP,VOLUM~=SER=TESJVL,UNIT=2311,DISP=OLO_

IISCHl
/1001

~

TESTVL

OUTPUT DOCUMENT
S¥SIEjloj SUPPUAT UTiLITIES ----

lEHPkUGM

CGI6

o. GCHSGRCt:
b. L _ _

_

-=-_ ~_ -=ll.lW-=-L _ _ _ _ _ -..!

NCHMAL tND

SCRATCH DSNAI"lt:=TES T • SOURCE, VOL=2Jll=TESTVl

CC71

I

'MEM8ER~

uf TASK RtTURNEO FKOM SCRATCH

UTILIT¥ END

4. See Figures 22 and 23, the fourth step.
a. utility control statement to scratch an unnamed member. The named member is
found on TEMP, which is concatenated with the control statement.
b. The concatenated sequential data set containing the member name.

Figure 24. To concatenate utility control statements

36

LIBRARY BACKUP - AUDIT TRAIL
It is apparent that with such a system as described in this example, a

means of protection against unforeseen circumstances is mandatory.

Backup Copy
It will be desirable to obtain a "backup" of the TESTS volume as well as

a listing of its condition at the time a copy is made. The frequency with
which a backup copy should be made will depend upon the volume of
testing, but presumably a copy would be made at least once per shift or
at the end of a large test run where multiple tests were performed.
The overall procedure for obtaining a backup copy of the TESTS volume
is shown in Figure 25. Before executing the BACKUP procedure, a
standard volume label of "BACKUP" must be written on a tape reel, with
the eleventh byte an EBCDIC zero. Is., ( J & , , ~ II )
Excluding the listing received from TESTPEEK, Figure 26 illustrates
the document received when the BACKUP procedure is executed.

37

G

/1 EXEC TESTPEEK

II EXEC BACKUP

BACKUP!

IIBACKUP EXEC
I/SYSPRINT DO
IISYSllTl DO
IIDOI
00
11002
DO
I/SYSIN DO

PGM.= I EHMOVE
SYSOUT=A

UNIT=2311,VOLUME=SER=111111,OlSP=OlO
UNIJ=2400,VOlUME=SER=BACKUP,DISP=OlO
UNIT=2311,VOlUME=SER=TESTVl,OISP=OlD
DSNAME=SYSl.PROClIBfBACKUPl),OISP=OlO

VOlUME=2311=TEST~l,TO=2400~BACKUP

TE5TVL

05/360

DOCUMENT
SEE FIG.

26

1.
2.
3.
4.
A.

Invokes the BACKUP procedure.
JCL for the BACKUP procedure.
Utility control statement for IEHMOVE.
Invokes the TESTPEEK procedure (see Figure 20).
Overall flow.

Figure 25. To obtain a backup copy of the TESTS volume
38

S't'.').J!:M SUPPORT UTILiTiES ---- IEHMOVE
COpy
VOLUME=2311=TESTVL,TO=2400=bACKUP
ThE FOLLOWING DATA SET IS BEING MUVED. TEST.DBJECT
H4111 DATA SET TEST .OBJE(.T UNLOADED BECAUSE ACCESS METHOD NOT COMPATIBLt:
A _
DATA SET TEST.ObJECT HAS BEEN CUPtED TO VOLUMEtS)
.
>- BACKUP, 000 1
ThE FOLLGWl~b DAIA SET IS BEING MOVED. TEST.LOAD
lEH411I DATA SET fEST.LOAD UNLOADED BECAUSE ACCESS METHOD NOT COMPATIBLE
MEMB~ ASUb13
HAS dEEN UNLOADED
M- b~ TEMPNAME HAS BEEN UNLOADED
A
DATA SET TEST.LOAD HAS BEEN COPIED TO VOLUME(S)
.
8ACKUP,0002
Tht FOLLOWING DATA SET IS BEING MUVED. TEST.SOURCE
lEH4111 DATA SET JEST.SOURCE UNLOADED BECAUSE ACCESS METHOD NOT COMPATIBLE
MtMb~ 813
HAS BEEN UNLOADED
MEMB~ TEMP
HAS BEEN UNLOADED
f:\
DATA SET lEST.SOURCE HAS BEEN COPIED TO VOLUMElS)
> i3ACKUP t 0003

8

0..J

A. Note: These are sequence numbers assigned to the data sets on tape. These numbers
will be used to retrieve the libraries (see Figure 28).
Note also that all data sets have been put on tape in an "unloaded" version (C28-6586).
This is perfectly all right, because, when they are returned to disk, they are returned
as they were originally.

Figure 26. Document received from BACKUP procedure
39

Reinitialize TESTS
If the TESTS volume should be damaged, it must be reinstated to its

condition at the time the last BACKUP procedure was executed. Since
this reinitializing will be performed infrequently, the job control statements to accomplish this are maintained in a card deck rather than in
SYS1. PROC LIB.
After a volume has been initialized using DASDI (see Figure 6), the
MOVE/COPY utility for data sets will copy the three data sets (source,
object, load) onto the disk volume (see Figure 27). If additional data
sets were on the original volume, these could be retrieved at this time
by reviewing the listing from the BACKUP procedure and observing the
sequence number of the data set (Figure 26). Figure 28 shows the
results of this copy of data sets from tape to TESTVL.
Note: The MOVE/COPY volume utility will MOVE/COPY with direct
~ss as the FROM device only. Since FROM (in the MOVE/COPY
volume utility) may not refer to a non-direct access device such as tape,
we must use the MOVE/COPY for data sets rather than volume in order
to retrieve the data sets from tape.

40

I

l. .

."" .·....:;:·lS I r'~

lJD

I

II

····lJD2

TID

II

II
DD

UNIT -2:311, I.... OLUNC::::::.ER=TE:~TVL, DISP-']LII

I

II

I
I

I

IU

I

I

I III

II

I

I

UNIT=2:311,VOLUME-SER-l11111,DISP=QLD

II

.····.··'S··t::::F'~~H-n

. liD

I

I

I

II

I

S'lSDUT=A

"I

. '.~>::EC:II P!~l'l- I Ef-U"1DVE

..........

II

I

.......... REI~11 T

J'JB

II I
I

I

I

urUT=240Q, l,l8UJME-SER-BACKUP, II I SP=QLD

I

I III

007, I~ETu.m~:K, !'EGLE'·lEL=l

I

I

II

\

I I I
I

I

III I I

•

110000010000000110100110100010100010000000000000000000000000000000000000000000]0
1234567'9ronttnM~nundM~~~~~ava~~~~~~~~».H~~U~~~~U~U~~~~~~~~~9M~uaM~M~upMnnnU~NnnNM

11111111111111111111111111111111111111111111111111111111111111111111111111111 n 1
22222222222212222222212222212212222222222222222222222222222222222222222122222212
33333331333333333313331133331333133313333333333333333333333333333333333333333313
444444444444444444444444444441444444444444444444444444444444444444444444444444~4

555151555555555555551555555555555111555555555555555555555555555555555555555555t5
66666666666166666666666611666666666661666666666666666666666666666666666666666l6B

77777777777777777177777777777771777777777777777777777777777777777777777777777777

a8 a8888 a8 a8 8 aaaaaala a8 aaaaaala 8 8 a8 a8 al8 8a8 a8 8 8 a8 8 8 8 8 8 8a8 a8 8a 8 8 aaa8 88 a8 8 aaaa8 a8 8 8
9919191999999999999199999S19J9999999J9999999999999999999999999999999999999999999

-

123456789wnnnM~nunaM~u~~~~~n~~~~~~~~D~~~~U~~~~UUU~~~~~~~~g"~~U~M~M~""MnnnU~nnnn~
I IBM SDB1]

A.

Three COpy utility statements to retrieve the three TESTS libraries. Notice that the
sequence number (BACKUP, 0001) specification corresponds to the sequence number
assigned when BACKUP was executed (see Figure 26).

Figure 27. To reinitialize the TESTS volume

41

SYSTEM

~UPPURT

UTILITL~S

---- IEHMOVE

U~NAME=TtST.UBJECTtTO=23tl=TESTVl.FROM=2400=(BACKUP,0Q01)

DATA

S~f

TtST.OBJECT HAS BEEN COPIED TO VOLUME(S)
TESTVL

LOPY
OSNAMt=TEST.LUAD,TO=2311=TESTVL,fRUM=2400={BACKUP.0002)
MEMBER ASU813
hAS BEEN MOVED/COPIED~
MtMBER TEMPNAME HAS uEEN MUVED,COpIED.
DATA SET TEST.LUAD HAS BEEN COPltD TO VOLUME{S)
TESTVL
CUPY
DSNAME=TEST.~UURCl,TO=2311=TESTVL,FROM=2400=(BACKUPtOO03)
MEMBER B13
HAS BEEN MUVED/COPIED.
MtMeER TEMP
HAS BEEN MOVED/COPIED.
DATA SET TEST.SOURCE HAS BEEN COPIED TO VOLUME(S)
TESJVl

1. Note: Although there were no members in this library, the data set still exists, and
the original space that had been allocated is still in effect.
Figure 28. Document received from reinitializing the TESTS volume (see Figure 27
for execution)
42

MULTIPLE JOB FLOW IN "TESTS"
Figure 29 illustrates the processing of multiple programs through the
TESTS environment. The purpose of this figure is to illustrate the
logical flow, rather than the actual format of the statements. The
operations involve programs Al3, SUBAl3, Bl3, Cl3, and Dl3.
Al3.

To be modified and reassembled.

SUBAl3. To be entered as a new source module and link edited with
Al3 to form the new executable module ASUBl3.
Bl3. Entered as a new source module to be compiled by COBOL and
executed.
Cl3 and Dl3. Both have individually completed the test cycle and are
to be combined into a new load module (CDl3) for execution. Both
are members of the object and load module libraries and could be
combined in either format. This example combines the object
modules.
The processing illustrated in Figure 29 has been separated into four jobs:
JOBA enters the source decks into the source library or modifies a
module already there.
JOBB assembles or compiles the source modules onto the object
library.
JOBC link-edits the object modules into the load library.
JOBD executes the programs from the JOBLIB (TEST. LOAD) in
. successive job steps.

43

04 II EXEC PGM= BI3
II EXEC PGM=ASUBI3
02 /1 JOBLI B DO TEST. LOAD
03

OS/360

II JOBO JOB

01

O.

COl3
013

C2
CI

/1 EXEC PROC=TESTLINK ~--==--t;---r--l
II JOBC JOB

C.
/1 SYSIN DO BI3

B9

B8 II EXEC PROC=TESTCOBL

B3
B2
BI

II SYSIN DO SUB AI3

II EX EC PROC=TESTASSM
~--I I JOBB JOB

B.

/1 EXEC PROC=NEWSORCE

05/360

SOURCE DECK

A.

A3 .I CHNGE AI3
A2
AI

II EXEC PROC=CHGSORCE
II JOBA JOB

Figure 29. Job flow of multiple programs from source to execution

44

Job Stream A

Processing Incurred

A 1. / /JOBA JOB

Job statement indicating start of JOBA.

A2.

/ /EXEC PROC=CHGSORCE

Invokes the cataloged procedure to update programs already on the source library.

A3.

• / CHNGE A13

Indicates the name of the program (A13) to be updated in the soUrce library.

A4.

SOURCE for A13

The source statements which will update A13.

AS.

/ /EXEC PROC=NEWSORCE

Invokes the cataloged procedure to enter new programs in the source library.

A6.

• / ADD B13

Indicates the name of the program (B13) to be added to TEST. SOURCE •

A7.

B13

The deck of source statements comprising B13.

A8.

. / ADD SUBA13

(See A6.) In this case SUBA13 is the new subroutine to be added to TEST. SOURCE .

A9.

SUBA13

Source statements for SUBA13.

Job Stream B
B1.

//JOBB JOB

Specifies JOBB, in this application the language translation.

B2.

/ /EXEC PROC=TEST ASSM

Invokes the cataloged procedure for Assembler.

B3.

/ /SYSIN DD SUBA13

Represents the DD statement which specifies the name of the module (SUBA13) to be assembled.

B4.

/ /SYSPUNCH DD SUBA13

Specifies to the assembler the name (SUBA13) to be given the output module on the object library.

BS.

/ /EXEC PROC=TESTASSM

(See line B2.) Second job step.

B6.

/ /SYSIN DD A13

(See B3.) In this case, program A13 which has just been modified is to be recompiled.

B7.

/ /SYSPUNCH DD A13

(See B4.) The new object module will replace the one named A13 previpusly placed in the
object library.

B8.

/ /EXEC PROC=TESTCOBL

Invokes the cataloged procedure for COBOL.

B9.

/ /SYSIN DD B13

Specifies that the name of the COBOL source module to be compiled is B13.

B1D. / /SYSPUNCH DD B13

Specifies that B13 is the name to be assigned to the compiled object module.

Job Stream C

Processing Incurred

C 1. / /JOBC JOB

Job statement-start of JOBC.

C2. / /EXEC PROC=TESTLINK

Invokes the cataloged procedure to link-edit object modules into load modules.

C3.

Linkage Editor control statement indicating that the name of the first object module to be link
edited is B13.

INCLUDE B13

In this case, only one job step occurs.

C4. NAME B13

Specifies that the resultant new load module which becomes a member of TEST. LOAD is to be
named B13.

CS.

INCLUDE A13

Linkage Editor control statement indicating that the second object module to be link-edited is
called A13.

C6.

INCLUDE SUBA13

(See CS.) Indicates that SUBA13 is to be link-edited with A13.

C7. NAME ASUB13 (R)

C8.

INCLUDE (C13, D13)
(performs same function
as CS and C6)

C9. NAME CD13(R)

Specifies that the resultant load module consisting of A13 and SUBA13 is to be entered into
TEST. LOAD and ASUB13.

Linkage Editor control statement indicating that the input for this load module will be object
modules C13 and D13.
Linkage Editor control statement specifying the resultant load module consisting of C13 and D13
should be entered on TEST. LOAD as CD13.

Job Stream D
D1.

/ /JOBD JOB

Job statement indicating start of JOBD.

D2. / /JOBLm DD TEST. LOAD

JOBLm pOints to the library, TEST. LOAD, containing the programs to be executed in this job step.

D3.

/ /EXEC PGM=ASUB13
(DD statements for ASUB13
not shown)

SpeCifies that the first job step will execute program ASUB13, followed by the appropriate DD
statements defining the input and output data sets for this program.

D4.

l/EXEC PGM=B13
(DD statements for B13 not shown)

The second job step will execute program B13.

(See line 3. )

The third job step will execute program CD13.

(See line 3, )

DS. / /EXEC PGM=CD13
(DD statements for CD13
not shown)

Figure 29 (continued).

45

C20-1663-0

()
N

l'
......
0'\
0'\
W

I

o

llrn~

®

International Business Machines Corporation
Data Processing Division
112 East Post Road, White Plains, N. Y. 10601
(USA Only)
IBM World Trade Corporation
821 United Nations Plaza, New York, New York 10017
(International)

READER'S COMMENTS

IBM System/360 Operating System
User Libraries (C20-1663-0)

Your comments regarding this pubhcation will help us improve future editions. Please comment on the
usefulness and readability of the publication, suggest additions and deletions, and list specific errors and
omissions.

I
I
I USEFUlNESS AND READABILITY
I
I
I
I
I
I
I

I
I
I
I
I

I

I SUGGESTED ADDITIONS AND DELETIONS

I
I
I
I

.I
I

I
I
I
I
: ERRORS AND OMISSIONS (give page numbers)

I
I
I
I
I

I
I
I
I
I
I
I
I

I

Name______________________________
Title or Position~_ _ _ _ _ _ _ _ _ __
Address'---__________________

FOLD ON TWO LINES, STAPLE AND MAIL
No Postage Necessary if Mailed in U. S. A.

C20-1663-0

fold

fold

....................................................................................................................... :
FIRST CLASS
PERMIT NO. 13.59
WHITE PLAINS, N.Y.

BUSINESS

REPLY

MAIL

NO POSTAGE NECESSARY IF MAILED IN THE UNITED STATES

POSTAGE Will BE PAID BY . . .

IBM Corporation
112 East Post Road
White Plains, N. Y. 10601

Attention: Technical Publications

fold

fold
()
N

oI

......

0\
0\

w
I

o

~rnllir
®

International Business Machines Corporation
Data Processing Division
112 East Post Road, White Plains, N. Y. 10601
(USA Only)
IBM World Trade Corporation
821 United Nations Plaza, New York, New York 10017
(International)



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
XMP Toolkit                     : Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:56:37
Create Date                     : 2012:06:01 18:37:11-08:00
Modify Date                     : 2012:06:02 07:17:20-07:00
Metadata Date                   : 2012:06:02 07:17:20-07:00
Producer                        : Adobe Acrobat 9.51 Paper Capture Plug-in
Format                          : application/pdf
Document ID                     : uuid:4284d307-1277-4961-82aa-03cdb0664df1
Instance ID                     : uuid:78b49912-4110-49b8-949a-503b4efb861a
Page Layout                     : SinglePage
Page Mode                       : UseNone
Page Count                      : 54
EXIF Metadata provided by EXIF.tools

Navigation menu