0% found this document useful (0 votes)
91 views

Batch Processing Using SAS Under Zos

Batch processing using sas under zos

Uploaded by

Sesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
91 views

Batch Processing Using SAS Under Zos

Batch processing using sas under zos

Uploaded by

Sesh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 78

Batch Processing Using

®
SAS under z/OS

Course Notes
For Your Information ii

Batch Processing Using SAS® under z/OS Course Notes was developed by Travis Masters and Mark
Jordan. Editing and production support was provided by the Curriculum Development and Support
Department.
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of
SAS Institute Inc. in the USA and other countries. ® indicates USA registration. Other brand and product
names are trademarks of their respective companies.

Batch Processing Using SAS® under z/OS Course Notes


Copyright © 2006 by SAS Institute Inc., Cary, NC 27513, USA. All rights reserved. Printed in the
United States of America. No part of this publication may be reproduced, stored in a retrieval system,
or transmitted, in any form or by any means, electronic, mechanical, photocopying, or otherwise, without
the prior written permission of the publisher, SAS Institute Inc.

Book code E70238, course code MVSB9, prepared date 16Oct06 MVSB9_002
For Your Information iii

Table of Contents

Course Description ...................................................................................................................... iv

Prerequisites ................................................................................................................................. v

General Conventions ................................................................................................................... vi

Chapter 1 Getting Started with SAS Software under z/OS ................................. 1-1

1.1 Fundamental Concepts.....................................................................................................1-3

1.2 Combining and Editing SAS Programs .........................................................................1-25

1.3 Common Programming Errors.......................................................................................1-36

1.4 SAS Windowing Environment (Optional) .....................................................................1-43

1.5 Additional JCL (Optional) .............................................................................................1-52

1.6 Chapter Summary ..........................................................................................................1-69


iv For Your Information

Course Description
Batch Processing Using SAS® under z/OS Course Notes teaches you how to use ISPF under z/OS to
create and submit SAS programs in batch mode and to view resulting output. You also learn basic Job
Control Language (JCL) related to batch processing. This course is designed to be taught in
approximately one hour. It is not offered publicly; it is available for on-site presentation only.

To learn more…

A full curriculum of general and statistical instructor-based training is available


at any of the Institute’s training facilities. Institute instructors can also provide
on-site training.
For information on other courses in the curriculum, contact the SAS Education
Division at 1-800-333-7660, or send e-mail to training@sas.com. You can also
find this information on the Web at support.sas.com/training/ as well as in the
Training Course Catalog.

For a list of other SAS books that relate to the topics covered in this
Course Notes, USA customers can contact our SAS Publishing Department at
1-800-727-3228 or send e-mail to sasbook@sas.com. Customers outside the
USA, please contact your local SAS office.
Also, see the Publications Catalog on the Web at support.sas.com/pubs for a
complete list of books and a convenient order form.
For Your Information v

Prerequisites
Prior experience with the Interactive System Production Facility (ISPF)/Program Development Facility
(PDF) under z/OS is recommended. Some experience with SAS software will enhance your
understanding of the ‘‘Common Programming Errors’’ section of the course.
vi For Your Information

General Conventions
This section explains the various conventions that may be used in presenting text, SAS language syntax,
and examples in this book.

Typographical Conventions
You will see several type styles in this book. This list explains the meaning of each style:
UPPERCASE ROMAN is used for SAS statements and other SAS language elements when they
appear in the text.
italic identifies terms or concepts that are defined in text. Italic is also used for
book titles when they are referenced in text, as well as for various syntax
and mathematical elements.
bold is used for emphasis within text.
monospace is used for examples of SAS programming statements and for SAS character
strings. Monospace is also used to refer to variable and data set names, field
names in windows, information in fields, and user-supplied information.
select indicates selectable items in windows and menus. This book also uses icons
to represent selectable items.
Syntax Conventions
The general forms of SAS statements and commands shown in this book include only that part of the
syntax actually taught in the course. For complete syntax, see the appropriate SAS reference guide.

PROC CHART DATA = SAS-data-set;


HBAR | VBAR chart-variables </ options>;
RUN;

This is an example of how SAS syntax is shown in text:


• PROC and CHART are in uppercase bold because they are SAS keywords.
• DATA= is in uppercase to indicate that it must be spelled as shown.
• SAS-data-set is in italic because it represents a value that you supply. In this case, the value must be
the name of a SAS data set.
• HBAR and VBAR are in uppercase bold because they are SAS keywords. They are separated by a
vertical bar to indicate they are mutually exclusive; you can choose one or the other.
• chart-variables is in italic because it represents a value or values that you supply.
• </ options> represents optional syntax specific to the HBAR and VBAR statements. The angle
brackets enclose the slash as well as options because if no options are specified you do not include
the slash.
• RUN is in uppercase bold because it is a SAS keyword.
Chapter 1 Getting Started with
SAS Software under z/OS

1.1 Fundamental Concepts ..................................................................................................1-3

1.2 Combining and Editing SAS Programs ......................................................................1-25

1.3 Common Programming Errors....................................................................................1-36

1.4 SAS Windowing Environment (Optional) ...................................................................1-43

1.5 Additional JCL (Optional) ............................................................................................1-52

1.6 Chapter Summary.........................................................................................................1-69


1-2 Chapter 1 Getting Started with SAS Software under z/OS
1.1 Fundamental Concepts 1-3

1.1 Fundamental Concepts

Objectives
After completing this section you will know how to do the
following:
„ Enter and submit SAS programs in the Interactive
System Production Facility (ISPF)/Program
Development Facility (PDF).
„ Save SAS programs.

„ Use basic Job Control Language (JCL) statements.

„ Copy JCL into your SAS programs.

continued...

Objectives
„ Use the Spooled Data Set Facility (SDSF) or
Interactive Output Facility (IOF) to view your SAS log
and SAS output.
„ Purge (release) held output files.

4
1-4 Chapter 1 Getting Started with SAS Software under z/OS

Program Development Facility


z/OS TSO has many facilities for developing and
submitting SAS programs in batch mode. This course
uses the Program Development Facility of the Interactive
System Production Facility (ISPF/PDF).

Even if you use ISPF, the commands issued to submit batch jobs can differ from the commands in this
course. Record your location-specific information in the spaces provided throughout the course notes.

At my location, the development facility I use is


_________________________________________________________________
At my location, to access ISPF or our development facility, I
_________________________________________________________________
1.1 Fundamental Concepts 1-5

Program Development Facility


After you log on to z/OS, you can go to one of these
locations:
„ The READY prompt

„ Your development facility menu

„ An alternative menu that enables you to access your


development facility
In this example, when you log on to z/OS, you go to the
READY prompt. At the READY prompt, you enter SPF to
access the ISPF Primary Option Menu.

05_READY_Prompt.gif

ISPF Main Menu


Enter a number on the Option line and press ENTER to
select a menu item.

06_ISPF_Main_Menu.gif

7
1-6 Chapter 1 Getting Started with SAS Software under z/OS

Function Keys
Type KEYS on the Option line and press ENTER to see
function key definitions in an editable panel. Return to the
ISPF Primary Option Menu by issuing the END command.

07_Keylist.gif

Entering SAS Programs


To enter a SAS program as a member of a partitioned
data set (PDS), access the Edit Panel by typing 2 on the
Option line and pressing ENTER.

08_Selecting_EDIT.gif

At my location, to access an Edit Entry Panel, I

_________________________________________________________________
1.1 Fundamental Concepts 1-7

Saving the Program


Enter the SAS program, then issue the END command to
save the program and return to the Edit Entry Panel.

10_Batch1_Code.gif

11

At my location, to save a SAS program and return to the previous panel, I

________________________________________________________________

Basic Job Control Language


To submit a SAS program in batch mode, just add Job
Control Language (JCL). The specific JCL statements
needed will depend on your location. This section
explains the following JCL statements:
„ JOB

„ EXEC

„ SYSIN

12
1-8 Chapter 1 Getting Started with SAS Software under z/OS

Basic Job Control Language


General form of the JOB statement:

//job-name JOB (acct-info),‘Programmer Name’

job-name: Unique name for this job. Usually your user


ID plus one character (a -z). Use up to eight alpha-
numeric or national (@ $ #) characters. Jobs with the
same name will not run concurrently.
acct-info: Optional. Indicates who to charge for the
computer time used. Use a comma to skip.
Programmer Name: Maximum of 20 characters,
enclosed in quotes. Printed on banners for this job.

13

Basic Job Control Language


General form of the EXEC statement:

//step-name EXEC procedure-name

step-name: A unique name for this step (optional).


procedure-name: The procedure name used at your
location to invoke the SAS System (for example, SAS9).

14
1.1 Fundamental Concepts 1-9

Basic Job Control Language


General form of the SYSIN statement:

//SYSIN DD DSN=

or

//SYSIN DD *

DD indicates a Data Definition statement.


DSN= points to the partitioned data set member or
other z/OS file that contains your SAS program.
* indicates program code will follow in same file

15

 For more complete JOB, DD, and EXEC statement syntax, see the optional Advanced JCL
section.

Basic Job Control Language


You can store JCL as a member of the same partitioned
data set in which you store your SAS programs.
To access your JCL, enter the necessary information.

16_Edit_JCL.gif

16
1-10 Chapter 1 Getting Started with SAS Software under z/OS

Basic Job Control Language


This example uses only the most basic JCL statements,
making it easy to re-use. Issue the END command to
return to the ISPF menu.

17_Basic_JCL.gif

17

This file will serve as your JCL template. Copy it into your SAS program so that the SAS statements
come after the SYSIN DD* statement prior to submitting your code in batch.

SYSIN Statement
There are three ways to use the SYSIN statement to
identify the SAS program to process:
1. Use DSN= to point to the file that contains your
program.

18_JCL_with_DSN.gif

continued...

18
1.1 Fundamental Concepts 1-11

SYSIN Statement
2. Use the SAS mMacro statement %INCLUDE to bring
SAS code into the SAS session from a file or PDS
member.

19_JCL_with_INCLUDE.gif

continued...

19

If your stored program contains JCL (or if you do not know whether the program contains JCL), use the
JCLEXCL option in the %INCLUDE statement. For example:

%include 'userid.PROG1.SAScode(mypgm)'/ jclexcl;

SYSIN Statement
3. Use DD * to indicate that SAS code follows the JCL
statements in the same file.

20_JCL_with_INLINE_CODE.gif

20
1-12 Chapter 1 Getting Started with SAS Software under z/OS

Copying JCL
If your basic JCL file uses //SYSIN DD * and is stored in
the same partitioned data set (PDS) as your SAS
programs, you can easily copy the JCL into SAS
programs for batch submission.

21
1.1 Fundamental Concepts 1-13

Copying JCL
Access the SAS program.
Place the line command B (Before) on the line number of
program line 000001.
Type COPY on the command line with the member name
where the JCL is saved and press ENTER.

22_Copy_in_JCL.gif

22

At my location, to access a SAS program, I

_________________________________________________________________
At my location, to copy one file to another, I
_________________________________________________________________
1-14 Chapter 1 Getting Started with SAS Software under z/OS

Submitting the Program


Regardless of the SYSIN statement you use to identify
the SAS program, issue the SUBMIT command to submit
the program for execution in batch.

23_Submit_from_Editor.gif

23
1.1 Fundamental Concepts 1-15

Submitting the Program


ISPF acknowledges your submission by displaying a
message like this near the bottom of the screen:
24_Job_Submitted.gif

In this example, EDU000A is the name of the job and


JOB06461 is the unique job identifier. It’s a good idea to
write down the job identifier, as you might need to refer to
it later when accessing the job output files.
Three asterisks indicates “press ENTER to continue.”
Return to the ISPF menu by issuing the END command.

24

At my location, to submit a SAS program, I

_________________________________________________________________
After submitting the program, to return to the main ISPF menu, I
_________________________________________________________________
1-16 Chapter 1 Getting Started with SAS Software under z/OS

Viewing the Log and Output - SDSF


The Spooled Data Set Facility (SDSF) is one way to view
your log and output on a z/OS system. To access SDSF,
issue the ISPF M.Q command.

25_Selecting_SDSF.gif

25

At my location, to view the log and output, I

_________________________________________________________________
To access that output facility, I
_________________________________________________________________
1.1 Fundamental Concepts 1-17

Viewing the Log and Output - SDSF


To display held SAS jobs, enter H in the
SDSF PRIMARY OPTION MENU.

26_SDSF_QUEUE.gif

26

At my location, to display held SAS jobs, I

_________________________________________________________________

Viewing the Log and Output - SDSF


To view the log and output, enter ? in the selection
column beside the JobName.

27_SDSF_Select_Job.gif

27
1-18 Chapter 1 Getting Started with SAS Software under z/OS

Viewing the Log and Output - SDSF


To view the log, enter S in the selection column beside
SASLOG.

28_SDSF_Select_SASLOG.gif

28

At my location, the SAS log is named

_________________________________________________________________
At my location, the SAS output is named
_________________________________________________________________
At my location, to view the log and output, I
_________________________________________________________________
1.1 Fundamental Concepts 1-19

Viewing the Log and Output - SDSF


The SAS log indicates that
„ the SAS LIBREF IA was assigned successfully

„ the MEANS procedure created a report.

29_SDSF_Viewing_SASLOG.gif

29

Viewing the Log and Output - SDSF


To view the output, enter S in the selection column beside
SASLIST.

30_SDSF_Select_OUTPUT.gif

continued...

30
1-20 Chapter 1 Getting Started with SAS Software under z/OS

Viewing the Log and Output - SDSF


If necessary, scroll forward to view the entire output. Issue
the END command to return to the SDSF menu.

31_SDSF_View_OUTPUT.gif

31

 Continue to issue the END command to return to the ISPF Primary Option Menu.

Submitting Another Program


To write a PROC step to generate a tabular report:
1. Access an Edit Entry Panel (using ISPF 2).

32_Edit_Panel.gif

continued...

32
1.1 Fundamental Concepts 1-21

Submitting Another Program


2. Enter the SAS program.

33_BATCH2_SASCODE.gif

continued...

33

Submitting Another Program


3. Copy the JCL before the SAS program.

34_BATCH2_Copy_JCL.gif

continued...

34
1-22 Chapter 1 Getting Started with SAS Software under z/OS

Submitting Another Program


4. Issue the SUBMIT command.

35_BATCH2_Submit.gif

35

Viewing the Log and Output - IOF


The IOF facility is another way to view your log and
output. To access IOF, type I on the command line and
press ENTER. In the IOF Job List Menu, type an S
(Select) next to the output file you want to view.

36_IOF_Selecting_Job.gif

Useful IOF commands include:


B - Browse entire job as a single file
C - Cancel (deletes the file, similar to Purge in SDSF)
PC - Show why job will not print
S - Select for review

36
1.1 Fundamental Concepts 1-23

Viewing the Log and Output - IOF


Use the IOF Job Summary menu to select individual files
for viewing.

37_IOF_Selecting_SASLOG.gif

37

Viewing the Log and Output - IOF


Review the SASLOG for errors, then type END on the
command line to return to the IOF Job Summary Menu.

38_IOF_View_SASLOG.gif

38
1-24 Chapter 1 Getting Started with SAS Software under z/OS

Viewing the Log and Output - IOF


Select and view the SASLIST (SAS Output) file.

39_IOF_View_SASLIST.gif

When finished, issue the END command until you get to


39
the ISPF Primary Option Menu.

At my location, the SAS log is named


_________________________________________________________________
At my location, the SAS output is named
_________________________________________________________________
At my location, to view the log and output, I
_________________________________________________________________
1.2 Combining and Editing SAS Programs 1-25

1.2 Combining and Editing SAS Programs

Combining SAS Programs


„ You can use one of the following three methods to
combine SAS programs to submit as one job:
– Use multiple DSN= parameters.
– Use multiple %INCLUDE statements.
– Copy the steps into one file and edit it.
„ You will accomplish this using the ISPF Editor.

41

Multiple DSN= Parameters


Access the JCL that contains the DSN= parameter.

18_JCL_with_DSN.gif

42
1-26 Chapter 1 Getting Started with SAS Software under z/OS

Multiple DSN= Parameters


Add a DSN= parameter for each of the individual
SAS programs you want to add and submit.

43_Multiple_DSNs.gif

43

Multiple %INCLUDE Statements


Access the JCL that contains a %INCLUDE statement.

19_JCL_with_INCLUDE.gif

44
1.2 Combining and Editing SAS Programs 1-27

Multiple %INCLUDE Statements


Add a %INCLUDE statement for each SAS program you
want to include and submit.

45_Multiple_INCLUDES.gif

 If your stored program contains JCL (or if you do not


know if the program contains JCL), use the JCLEXCL
option in the %INCLUDE statement.

45

Copying Steps
Access the Edit Entry Panel for your new program.
Copy in the first step using the COPY command.

46_Copy_Multiple_Programs.gif

continued...

46
1-28 Chapter 1 Getting Started with SAS Software under z/OS

Copying Steps
Repeat for the second program. Use the A line command
to specify where the new text should start.

47_Copy_Multiple_Programs.gif

47

Text Editor Line Commands


Text editor line commands are used to modify program
lines, and are typed over the text editor line numbers.
Line commands include:

In Insert n lines
Dn Delete n lines
Cn Copy n lines
Mn Move n lines
Rn Repeat n lines

A After (designates C, I, and M text destination)


B Before (designates C, I, and M text destination)

48
1.2 Combining and Editing SAS Programs 1-29

Text Editor Block Commands


Text editor block commands modify several contiguous
program lines all at once. Block commands are also typed
over the text editor line numbers and include these:

DD Delete block start / end


CC Copy block start / end
MM Move block start / end
RR Repeat block start / end

A After (designates CC and MM text destination)


B Before (designates CC and MM text destination)

49

Copying Steps
Delete any duplicate steps and the duplicate JCL. (Use a
block delete (DD) command.)

50_Copy_Multiple_Programs2.gif

50
1-30 Chapter 1 Getting Started with SAS Software under z/OS

Editing Your Program


Insert a blank line in the PROC TABULATE step using the
Insert (I) command.

51_Modify_Program_2.gif

51

Editing Your Program


In the blank line inserted, add a TITLE2 statement.

52_Modify_Program_3.gif

52
1.2 Combining and Editing SAS Programs 1-31

Editing Your Program


Move PROC MEANS and its TITLE after the PROC
TABULATE statement with block move (MM) and After
(A) commands.

53_Modify_Program_4.gif

...

53

Editing Your Program


PROC MEANS is now after PROC TABULATE.

54_Modify_Program_5.gif

54
1-32 Chapter 1 Getting Started with SAS Software under z/OS

Submit the Combined SAS Program


Submit the program.

55_Submit_Copied_Programs.gif

55

View the Results


View the SAS log for the combined program in SDSF or
IOF. Scroll forward to see the entire log.

56_View_Log.gif

56
1.2 Combining and Editing SAS Programs 1-33

Viewing the Results


View the SAS output in SDSF or IOF. Scroll forward and
side-to-side to see the output from all the steps.

57_View_Output.gif

57

Releasing Held Files


After you view the output, you should purge it.
For SDSF, enter P in the selection field beside the file.
For IOF, enter C in the selection field beside the file.

58_Purge_SDSF_Queue.gif

58_Purge_IOF_Queue.gif

58

At my location, to purge or release held file, I

________________________________________________________________
1-34 Chapter 1 Getting Started with SAS Software under z/OS

Exercises

The files containing the programs are stored as members of a partitioned data set (PDS) named
userid.PROG1.SASCODE. In the partitioned data set are several SAS programs and a member called
JCL, which contains basic JCL statements.
1. Submitting Your First Program
a. Access the JCL. Supply your name and user ID. Return to the main menu.
b. Access the program named C02EX1. The program contains a DATA step that creates a SAS data
set named AIRPORTS and a PRINT procedure step that prints the data set.
c. Place an asterisk before the INFILE statement on line 2
d. Delete the asterisk before the INFILE statement on line 3
e. Copy the JCL before the SAS program.
f. Submit the program.
g. Save your changes and return to the main menu.
h. Using IOF, SDSF, or your output facility, view the SAS log and SAS output.
2. Submitting a Second Program
a. Access the file named C02EX2. The file contains a PROC CHART step that produces a vertical
bar chart of flight departure delays.
b. Copy the JCL before the SAS program and submit it.
c. Save your changes and return to the main menu.
d. Using IOF, SDSF, or your output facility, view the SAS log and SAS output.
1.2 Combining and Editing SAS Programs 1-35

3. Combining the Programs


a. Open an Edit Entry Panel for a new member in the PDS. Name the new member C02MYEX3.
b. Copy in the C02EX1 file.
c. Copy in the C02EX2 file after the C02EX1 program steps.
d. Delete any duplicate JCL and redundant SAS code (LIBNAME statement).
e. Submit the C02MYEX3 program.
f. Save the program and exit the editor.

 Don’t forget to save! You will use this program in a future exercise.

g. Using IOF, SDSF, or your output facility, view the SAS log and SAS output.
h. Release all held files.
4. Editing an Existing Program
The program C02EX4 contains a DATA step and both PRINT and MEANS procedure steps. The
DATA step creates a SAS data set named DFWLAX. The PROC MEANS step produces a report with
minimum, average, and maximum number of First Class and Economy passengers on the flights. The
PROC PRINT step produces a listing report of the DFWLAX data set.
Make the following modifications:
a. Add this TITLE statement to the PROC MEANS step after the VAR statement. Be sure to enter
both quotation marks.
title 'Average, Minimum, & Maximum Passenger Loads';
b. Move the PROC MEANS step after the PROC PRINT step.
c. Add the following TITLE statement to the PROC PRINT step. Be sure to enter both quotation
marks.
title 'Passenger Data for DFW/LAX Flights';
d. Submit the program and view the SAS log and SAS output. The program should first produce the
listing report, which contains all variables and all observations in the DFWLAX data set, and
second the basic statistical report, which shows the average, minimum, and maximum number of
passengers in First Class and Economy. Each report should have a different, appropriate title.
1-36 Chapter 1 Getting Started with SAS Software under z/OS

1.3 Common Programming Errors

Objectives
After completing this section, you will be able to
„ recognize SAS error and warning messages

„ identify

– missing semicolons
– unbalanced quotation marks
„ use the ISPF text editor to correct errors.

61

Syntax Errors
When you make errors such as misspelling SAS
keywords, forgetting semicolons, or specifying invalid
options, the SAS System prints the following in the SAS
log:
„ the word ERROR or WARNING

„ the location of the error

„ a message explaining the error.

62
1.3 Common Programming Errors 1-37

Syntax Errors
Example:
Submit the BATERROR program, read the messages in
the SAS log, and correct any errors.

63_Batch_Error.gif

63

Interpreting Messages
View the SAS log.

64_Batch_Error1.gif

64

At my location, to view the SAS log, I


________________________________________________________________
1-38 Chapter 1 Getting Started with SAS Software under z/OS

Interpreting Messages
Scroll forward to view the entire SAS log.

65_Batch_Error2.gif

65

At my location, to scroll forward, I

________________________________________________________________

Interpreting Messages
Analysis of the log indicates:
„ The data set IA.FLIGHT114 was sorted successfully
into the output data set WORK.FLIGHT.
„ the TABULATE procedure failed:
“Error 73-322 – Expecting an =.”
– SAS expected to find ‘=‘ after the DATA key word
in the PROC TABULATE statement.
– The statement must be corrected and the job re-
submitted.

66
1.3 Common Programming Errors 1-39

Correcting the Program


Open the BATERROR program for editing.
„ Edit line 10 to read:
PROC TABULATE DATA=FLIGHT FORMAT=10.;
„ Resubmit the code and recheck the results.

67

Omitting a Semicolon
Another very common programming error is omitting a
semicolon at the end of a statement.
Example: In the BATSEMI program, Line 6 does not end
with a semicolon.

68_Missing_Semicolon.gif

68
1-40 Chapter 1 Getting Started with SAS Software under z/OS

Omitting a Semicolon
The error messages in the SAS log may not appear
germane to the actual programming error.

69_Missing_Semicolon_Log.gif

 Check the statements above the error message for a


69
missing semicolon.

Unbalanced Quotation Marks


Some syntax errors can cause SAS to misinterpret SAS
statements in your program.
Example: In program BATQUOTE, Line 9 has unbalanced
quotation marks (opened with “, but closed with ‘).

70_Unbalanced_Quotes.gif

70
1.3 Common Programming Errors 1-41

Unbalanced Quotation Marks


SAS log warnings about quoted strings (such as “quoted
string too long” or “meaning of an identifier after a quoted
string”) usually result from unbalanced quotes.

71_Unbalanced_Quotes_Log.gif

71

Unbalanced Quotation Marks


Output titles not as expected may indicate that the
unbalanced quotes are in a TITLE statement.

72_Unbalanced_Quotes_Output.gif

72

 To resolve the problem in batch mode, find the missing quotation mark and insert one in the
proper location in your code, then resubmit the program.
1-42 Chapter 1 Getting Started with SAS Software under z/OS

Exercises

The files containing the programs are stored as members of a PDS named userid.PROG1.SASCODE.
5. Correcting Errors
a. Submit the file named C02EX5. The file contains a DATA step, a PRINT procedure step, and a
MEANS procedure step. The DATA step creates a SAS data set named DFW, the PROC PRINT
step prints the data set, and the PROC MEANS step requests the average, minimum, and
maximum pounds of mail on these flights.
b. View the SAS log and determine the error(s).
c. Correct the errors in the program and submit the corrected version.
d. View the SAS log and SAS output.
1.4 SAS Windowing Environment (Optional) 1-43

1.4 SAS Windowing Environment (Optional)

Objectives
After completing this section, you should be able to
„ use the SAS Windowing Environment to write,
edit, and submit programs
„ view your output in the SAS Windowing Environment

„ recall and save your programs from within the


SAS Windowing Environment.

75
1-44 Chapter 1 Getting Started with SAS Software under z/OS

Starting SAS in Interactive Mode


At the READY prompt, enter the name of the SAS
cataloged procedure (usually the same one used to
invoke SAS in a JCL EXEC statement):

75_Starting_Interactive_SAS.gif

SAS starts using the interactive Windowing Environment

76

To access the SAS windowing environment at my location, I

___________________________________________________________

Introduction to SAS Windowing Environment


The SAS Windowing Environment is a valuable tool for
developing programs to be submitted in batch. There are
three primary windows:
„ the Program Editor window

„ the Log window

„ the Output window.

77
1.4 SAS Windowing Environment (Optional) 1-45

Introduction to SAS Windowing Environment


The Program Editor window corresponds to the Edit Entry
Panel in your development facility. You can use the
Program Editor window to
„ write programs

„ include programs from an external file

„ edit programs

„ submit programs.

 The Log and Output windows correspond to


SASLOG and SASLIST in batch mode.
You can issue commands in Windowing Environment
windows to accomplish tasks.

78

Introduction to SAS Windowing Environment


„ The Log window corresponds to the SASLOG file in
batch mode.
„ The Output window corresponds to the SASLIST file in
batch mode.
„ You can issue commands on the Windowing
Environment command line to accomplish tasks.
„ Programmable, context-sensitive function keys can be
used to issue commands to the command line of the
active window. Use the KEYS command to view and
edit the function executed by each key.

79
1-46 Chapter 1 Getting Started with SAS Software under z/OS

Including a SAS Program


If you have stored a SAS program in an external file, bring
the program into the Program Editor window by issuing
the INCLUDE command.

78_Include_a_Program.gif

80

Preparing the Program for Submission


Add a RUN statement at the end of the program, if
required. If the program contains JCL, delete it using the
block delete (DD) command.

79_Delete_JCL.gif

81

 All of the text editor line commands that you learned for batch mode are available in the Program
Editor window. Just as in ISPF, some commands can be submitted quickly and easily using
function keys. To review and / or modify function key definitions, issue the KEYS command.
1.4 SAS Windowing Environment (Optional) 1-47

Submitting the SAS Program


When you have completed any necessary editing in
Windowing Environment, submit the program with the
SUBMIT command.

80_Submit.gif

82

When developing SAS programs with very large data sets, system options can make the use of the SAS
windowing environment more effective. For example, the OBS=5 system option stops each SAS process
at the fifth observation in the referenced data sets.

Furthermore, if your DATA step works properly, you do not have to resubmit the DATA step to test your
procedures on a temporary data set because the data remains available until the SAS session terminates.
1-48 Chapter 1 Getting Started with SAS Software under z/OS

Viewing the Output


The results of the PRINT procedure are displayed in the
Output window. Issue the END command to return to the
Program Editor window.

81_Output.gif

83

Viewing the Log


Issue the LOG command to make the Log window active.

82_Get_LOG.gif

84
1.4 SAS Windowing Environment (Optional) 1-49

Viewing the Log


Issue the END command to return to the Program Editor
window.

83_View_LOG.gif

85

Recalling the Program


In the Program Editor window, issue the RECALL
command to recall the program.

84_Recall.gif

86
1-50 Chapter 1 Getting Started with SAS Software under z/OS

Saving the Program


After making changes to the program and removing any
options that are not needed, save the program to an
external file by issuing the FILE command.

85_Save_Program.gif

The saved SAS program can be submitted in batch, using


one of the methods discussed earlier.

87

Exiting the SAS Windowing Environment


To exit the SAS Windowing Environment and terminate
your interactive SAS session, use the command
ENDSAS. The command BYE is an alias for ENDSAS.

86_endsas.gif
SAS terminates and returns you to the READY prompt.

88
1.4 SAS Windowing Environment (Optional) 1-51

Exercises

The files containing the programs are stored as members of a PDS named userid.PROG1.SASCODE.
6. Using the SAS Windowing Environment.
a. Include the file C02MYEX3.
b. Delete the JCL. Add this statement at the beginning of the program:
OPTIONS OBS=10;

Add a RUN statement at the end of the program, if required.


c. Submit the SAS program.
d. Recall the program.
e. Save the program to a new PDS member named C02MYEX6.
7. Batch Submitting Programs Created in the SAS DMS
a. Exit SAS DMS.
b. Return to your text editor.
c. Access the PDS member C02MYEX6.
d. Copy your JCL before the SAS program.
e. Delete the OPTIONS statement.
f. Submit the job in batch.
g. View your SAS log and SAS output.
h. Release all held files.
1-52 Chapter 1 Getting Started with SAS Software under z/OS

1.5 Additional JCL (Optional)

Objectives
After completing this section, you should be able to
„ write more complex JCL statements

„ better understand JCL syntax.

91

JCL Syntax
JCL involves a complex, rigidly applied set of rules.
A subset of the rules includes:
„ Record length for JCL files must be 80 characters

„ JCL statements

– Must begin in column 1


– Must be written completely in uppercase
– Cannot extend past column 71
– Usually begin with two slashes (//) except:
ƒ JOBPARM and Delimiter statements, which
begin with a slash and an asterisk (/*)
ƒ Comments, which begin with two slashes and
an asterisk (//*) continued...

92
1.5 Additional JCL (Optional) 1-53

JCL Syntax
„ Continue a JCL statement by ending the first line with
a comma after a complete parameter.
„ The continuation line must:
– Begin with two slashes in columns 1-2
– The first parameter must begin in column 4-16.
– The line must end on or before column 71.

continued...

93

JCL Syntax
„ Enclose lists of sub-parameters in parentheses,
separated by commas.
„ Omit a positional parameter or sub-parameter in a list
by marking its place with a comma. If the last
parameter is omitted, no comma is necessary.
„ Omit the parentheses when using a single (first
parameter or a keyword) sub-parameter from the list

94
1-54 Chapter 1 Getting Started with SAS Software under z/OS

JOB Statement
General form of the JOB statement:
//jobname JOB (acctg info),'name',CLASS=a,
// NOTIFY=userid,MSGCLASS=b,
// MSGLEVEL=(n,d),REGION=k,TIME=(m,s)

jobname: A name for this job. Typically your user ID + one


character (A-Z). Can be any combination of 8 or fewer
alpha-numeric and @ $ # characters.
acctg info: Information to identify the person or group to
be charged for the computer resources used by this job.

continued...

95

JOB Statement
//jobname JOB (acctg info),'name',CLASS=a,
// NOTIFY=userid,MSGCLASS=b,
// MSGLEVEL=(n,d),REGION=k,TIME=(m,s)

name: A name (1-20 characters) that will be printed on


the banner of the job's output. Enclose the text in single
quotes.
a: The queue for this job, as defined by your System
Administrator. Some queues run jobs at specified times,
others may cancel jobs that use too many CPU seconds.

continued...

96
1.5 Additional JCL (Optional) 1-55

JOB Statement
//jobname JOB (acctg info),'name',CLASS=a,
// NOTIFY=userid,MSGCLASS=b,
// MSGLEVEL=(n,d),REGION=k,TIME=(m,s)

userid: This user will be notified via broadcast message


when the job finishes. The symbolic parameter &SYSUID
may be substituted here.
b: designates the output queue (site specific)
n: controls printing of JCL:
0 – No JCL messages
1 – All JCL messages
2 – All JCL messages, except from cataloged
continued...
procedures
97

JOB Statement
//jobname JOB (acctg info),'name',CLASS=a,
// NOTIFY=userid,MSGCLASS=b,
// MSGLEVEL=(n,d),REGION=k,TIME=(m,s)

d: Controls data set allocation / disposition messages:


0 – No allocation messages unless the job abends
1 – All allocation messages
k: Specifies amount of storage a job can use in kilobytes
or megabytes (Example: 2K or 5M)

continued...

98
1-56 Chapter 1 Getting Started with SAS Software under z/OS

JOB Statement
//jobname JOB (acctg info),'name',CLASS=a,
// NOTIFY=userid,MSGCLASS=b,
// MSGLEVEL=(n,d),REGION=k,TIME=(m,s)

M: Total CPU minutes the job is allowed to run


S: Total CPU seconds the job is allowed to run

99
1.5 Additional JCL (Optional) 1-57

OUTPUT and JOBPARM Statements


Here you learn two ways to explicitly manage output:
„ JCL OUTPUT statement

„ JES2 JOBPARM statement

Consult the SAS Software Consultant or System


Administrator at your site for the preferable method and
parameter values for your system.

100

OUTPUT Statements
OUTPUT statement with selected parameters:
//formname OUTPUT DEST=destid,
// COPIES=x,DEFAULT=yn

formname: A maximum of eight alphanumeric and


national (@ $ #) characters. Must start with a letter or
national character.
destid: The destination printer ID.

continued...

101
1-58 Chapter 1 Getting Started with SAS Software under z/OS

OUTPUT Statements
//formname OUTPUT DEST=destid,
// COPIES=x,DEFAULT=yn

x: Number of copies of the output to print.


yn: Valid values are YES or NO. Determines if the
OUTPUT statement parameters are applied by default to
ALL SYSOUT DD statements.

102
1.5 Additional JCL (Optional) 1-59

JOBPARM Statements
General form of the JOBPARM statement to control
output:

/*JOBPARM DEST=dest,NAME='formname',COPIES=x

formname: A maximum of eight alphanumeric and


national characters (@ $ #); cannot start with a number
destid: Destination printer ID
x: Number of copies of the OUTPUT to print

continued...

103

JOBPARM Statements
Special form of the JOBPARM statement to hold output:

/*JOBPARM FETCH

FETCH: Holds the job output in an output queue.

This JOBPARM statement is used in a JES2 environment

104
1-60 Chapter 1 Getting Started with SAS Software under z/OS

EXEC Statement
General form of the EXEC statement:

//stepname EXEC proc|PGM=prog,


// REGION=k,TIME=s

stepname: Identifier name for this step (optional)


proc: A cataloged procedure (Example: SAS9)
prog: An application program name

continued...

105

EXEC Statement
//stepname EXEC proc|PGM=prog,
// REGION=k,TIME=s

k: Amount of storage THIS STEP can use in Kbytes or


Mbytes (Example: 2K or 5M)
S: Total CPU seconds THIS STEP is allowed to run

106
1.5 Additional JCL (Optional) 1-61

DD Statements
General form of the Data Definition (DD) statement for
accessing existing data sets:

// ddname DD DSN=project.group.type,
// DISP=disp

ddname: Alias for the file specified in this DD statement


project.group.type: Indicates the data set to use,
such as a sequential file, PDS, or PDS member
(member name in parentheses).

continued...

107

DD Statements

// ddname DD DSN=project.group.type,
// DISP=disp

disp: Disposition for the file:


ƒ SHR (share - multiple users, read-only)
ƒ OLD (single user, write access)

continued...

108
1-62 Chapter 1 Getting Started with SAS Software under z/OS

DD Statements
General form of the Data Definition (DD) statement for
creating new data sets:

//ddname DD DSN=project.group.type,
// DISP=disp

disp: Disposition for the file:


„ To create new files:
– NEW (DEFAULT– create a new file)
– MOD (if file exists, write over it; if not, create it)

continued...

109

DD Statements
General form of the Data Definition (DD) statement for
creating new data sets:

// ddname DD DSN=project.group.type,
// DISP=(d,n,a),SPACE=(t,(p,s),r),
// UNIT=u,VOL=SER=v

project.group.type: A data set name.


d: The disposition for this data set. Valid values:
NEW (default), MOD (write over existing file).
n: Action if job finishes normally.
Some valid values: CATLG and DELETE.
a: Action if job abends. Valid values as for n.
continued...

110
1.5 Additional JCL (Optional) 1-63

DD Statements
// ddname DD DSN=project.group.type,
// DISP=(d,n,a),SPACE=(t,(p,s),r),
// UNIT=u,VOL=SER=v

t: Units for space allocation: TRK, CYL, or blocksize.


p: Number of units needed for primary extent.
s: Number of units for each secondary extent.
r: Optional. If coded (RLSE), unused space is released
to the system at the end of the job.

continued...

111

DD Statements
// ddname DD DSN=project.group.type,
// DISP=(d,n,a),SPACE=(t,(p,s),r),
// UNIT=u,VOL=SER=v

u: Device type or group.


Examples:
„ 380 (device type)

„ SYSDA (group)
v: Volume to which the data set is written. If not
specified, the system chooses a volume with space
available.

112
1-64 Chapter 1 Getting Started with SAS Software under z/OS

DD Example: Creating a File


//NEWFILE DD DSN=USERID.NEW.FILE,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(5,2),RLSE),
// UNIT=SYSDA,VOL=SER=SAS900

The above DD statement accomplishes these tasks:


„ Assigns the alias NEWFILE to USERID.NEW.FILE

„ Creates a new data set, which will be cataloged if the


job finishes normally or deleted if the job abends

continued...

113

DD Example: Creating a File


//NEWFILE DD DSN=USERID.NEW.FILE,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(5,2),RLSE),
// UNIT=SYSDA,VOL=SER=SAS900

In addition:
„ The file allocates five cylinders initially, and two
cylinders for each subsequent extent.
„ Unused space is released at the end of the job.

„ The file will be written to the SYSDA group, on a


volume labeled SAS900.

114
1.5 Additional JCL (Optional) 1-65

DD Example: Concatenating Files


When your data are contained in more than one file or
more than one member of a PDS, you can treat them all
as one contiguous file by concatenating DD statements.
For example:
//FLATFILE DD DSN=USERID.FILE1.DATA,DISP=SHR
// DD DSN=USERID.FILE2.DATA,DISP=SHR
// DD DSN=USERID.FILE3.DATA,DISP=SHR

In this example, the three files can be used as if they


were actually one single, large file. Records from each
file will be encountered in the order that the data sets
were listed.

115

DD Example: Rerouting SAS Log and Output


DD statements can be used to route the SAS log and
SAS output to a location other than the default.

//SASLOG DD DSN=USERID.FILE.LOG,DISP=OLD
//SASLIST DD DSN=USERID.FILE.LIST,DISP=OLD

116
1-66 Chapter 1 Getting Started with SAS Software under z/OS

DD Example: SYSIN
When used with the special label SYSIN, a DD statement
indicates which file(s) contains SAS code to be executed.
//SYSIN DD DSN=EDU000.PROG1.SASCODE(C02S2D1),
// DISP=SHR
// DD DSN=EDU000.PROG1.SASCODE(C02S2D2),
// DISP=SHR

117

DD Example: Creating a Libref in JCL


A JCL DD statement can be used instead of a SAS
LIBNAME statement to allocate a SAS data library.
//IA DD DSN=&SYSUID..PROG1.SASDATA,DISP=SHR

„ The libref IA is assigned to a file using the submitting


user’s USERID for the first node and
PROG1.SASDATA for the remainder of the filename.
„ A DD statement causes the job to wait for the file to
become available before executing.
„ When using a SAS LIBNAME statement to allocate the
file, an error is generated if the file is not available
when executed and the LIBREF assignment fails.

118
1.5 Additional JCL (Optional) 1-67

DD Example: Creating a Fileref in JCL


You can also use JCL DD statements to assign filerefs to
flat files, in lieu of a SAS FILENAME statement.
//MYRAW DD DSN=EDU000.PROG1.RAWDATA,DISP=SHR

„ The fileref MYRAW is assigned to the file


EDU000.PROG1.RAWDATA.
„ Again, the DD statement causes the job to wait for the
file to become available before executing.
„ When using a SAS FILENAME statement to allocate
the file, an error is generated if the file is not available
when executed and the fileref assignment fails.

119
1-68 Chapter 1 Getting Started with SAS Software under z/OS
1.6 Chapter Summary 1-69

1.6 Chapter Summary


Commands to use:

Function In these examples At my location

Access the development facility (ISPF) SPF

View the function key definitions ISPF KEYS

Access an EDIT -ENTRY panel ISPF =2

Save a SAS program END

Access a saved SAS program ISPF =2

Copy COPY (with A or B)

Submit a SAS program SUBMIT

IOF

View the output queue ISPF =I

Release the held files C in the selection field

View the log and output S in the selection field

SAS log filename SASLOG

SAS output filename SASLIST

SDSF

View the held output queue ISPF =M.Q.H

Release the held files P in the selection field

View the log and output S in the selection field

SAS log filename SASLOG

SAS output filename SASLIST


1-70 Chapter 1 Getting Started with SAS Software under z/OS

General form of the JOB statement:

// job-name JOB (accounting-information)

General form of the EXEC statement:

// step-name EXEC procedure-name

General form of the SYSIN statement:

// SYSIN DD DSN=

or

// SYSIN DD *

General form of the JOB statement with selected parameters:

// jobname JOB (acctg info),'name',CLASS=a,NOTIFY=userid,MSGCLASS=b,


// MSGLEVEL=(n,d),REGION=k,TIME=(m,s)

General form of the EXEC statement with selected parameters:

// step-name EXEC procedure | PGM=program,REGION=k,TIME=s

General form of the DD, or Data Definition, statement for using existing files:

// ddname DD DSN=userid.data.set,DISP=disp

General form of the DD statement for creating files:

// ddname DD DSN=userid.data.set DISP=(d,n,a),SPACE=(t,(p,s),r), UNIT=u,


// VOL=SER=v

General form of the OUTPUT statement with selected parameters:

// formname OUTPUT DEST=dest,DEPT='dept',NAME='name'

General form of the JOBPARM statement to route output to HOLD queue:

/* JOBPARM FETCH

General form of the JOBPARM statement with selected parameters:

/* JOBPARM DEST=dest DEPT='dept',NAME='form-name'


1.6 Chapter Summary 1-71

Resources for Further Study


„ SAS OnlineDoc, SAS 9.1.3 Companion for z/OS on
the Web at http://support.sas.com/onlinedoc/913/
„ Introduction to the New Mainframe: z/OS Basics,
Chapter 6, “Using JCL and SDSF”, on the Web at
http://publibz.boulder.ibm.com/zoslib/pdf/zosbasic.pdf
„ z/OS JCL Fifth Edition - Gary Deward Brown

121
1-72 Chapter 1 Getting Started with SAS Software under z/OS

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy