The Easy Way to Faultless JCL

141
SmartJCL HORIZONT 1 The Easy Way to Faultless JCL Release Notes HORIZONT Software for Datacenters Garmischer Str. 8 D- 80339 München Tel ++49(0)89 / 540 162 - 0 www.horizont-it.com SmartJCL

description

SmartJCL. The Easy Way to Faultless JCL. Release Notes. H O RIZONT Software for Datacenters. Garmischer Str. 8 D- 80339 München Tel ++49(0)89 / 540 162 - 0 www.horizont-it.com. Release Notes. V3R2. Actual Release. V3R1. V3R0. V2R4. V2R3. V2R2. SmartJCL 3.2. - PowerPoint PPT Presentation

Transcript of The Easy Way to Faultless JCL

Page 1: The Easy Way to Faultless JCL

SmartJCLHORIZONT 1

The Easy Way to Faultless JCL

Release Notes

HORIZONTSoftware for Datacenters

Garmischer Str. 8 D- 80339 MünchenTel ++49(0)89 / 540 162 - 0www.horizont-it.com

SmartJCL

Page 2: The Easy Way to Faultless JCL

SmartJCLHORIZONT 2

Release Notes

Actual Release

V2R2

V2R3

V3R0

V2R4

V3R1

V3R2

Page 3: The Easy Way to Faultless JCL

SmartJCLHORIZONT 3

SmartJCL 3.2

• New Eclipse / RDz plug-in

- Uses Remote Check Server on z/OS for a complete JCL check on z/OS

• Enhanced support for condition code dependent steps

SmartJCL V3R2 is available since February 2014. SmartJCL V3R2 is available since February 2014. It offers following new functions:It offers following new functions:

Page 4: The Easy Way to Faultless JCL

SmartJCLHORIZONT 4

SmartJCL 3.2• Support System Symbols in PARM members

• New PARM member to exclude DSNs from catalog check

• REXX Interface supports compiled REXX pgms

• Support for - z/OS 1.13 Enhancements

• JOBRC parameter

• In-stream data in JES2 procedures

- z/OS 2.1 Enhancements

- TWS 9.1

Page 5: The Easy Way to Faultless JCL

SmartJCLHORIZONT 5

SmartJCL 3.2 – Edit Macro

Type JCK ...

Page 6: The Easy Way to Faultless JCL

SmartJCLHORIZONT 6

SmartJCL 3.2 – Edit Macro

3 Error message

1. Summary

2. Labels to locate the error

Page 7: The Easy Way to Faultless JCL

SmartJCLHORIZONT 7

SmartJCL 3.2 – eclipse plug-in

Edit JCL, click right mouse and select „Execute SmartJCL Remote Check“

The JCL is transferred to z/OS and checked there

Page 8: The Easy Way to Faultless JCL

SmartJCLHORIZONT 8

SmartJCL 3.2 – eclipse plug-in

Error messages are inserted below the associated statement in the edited JCL

(use right mouse to remove it)

Page 9: The Easy Way to Faultless JCL

SmartJCLHORIZONT 9

SmartJCL 3.2 – eclipse plug-in

Specify IP-address, port and member name of the

SmartJCL STC Procedure

The connection to z/OS is established

via the „HORIZONT

TCP/IP-Scheduler“.You can define several z/OS

systems

Page 10: The Easy Way to Faultless JCL

SmartJCLHORIZONT 10

SmartJCL 3.2 – RDz plug-in

It works identical in RDz, even if there is another

Editor

Page 11: The Easy Way to Faultless JCL

SmartJCLHORIZONT 11

SmartJCL 3.2 – Cond. Steps

Controls execution ofbelow steps ...

Page 12: The Easy Way to Faultless JCL

SmartJCLHORIZONT 12

SmartJCL 3.2 – Cond. Steps

Depends on step SETRCDepends on step SETRC ...

... but SmartJCL does not know the RC.

Page 13: The Easy Way to Faultless JCL

SmartJCLHORIZONT 13

SmartJCL 3.2 – Cond. StepsNew PARM member

Define RC for steps that are referenced in IF or COND.

Page 14: The Easy Way to Faultless JCL

SmartJCLHORIZONT 14

SmartJCL 3.2 – Cond. Steps

Condition codes are evaluated and job is checked correctly.

Page 15: The Easy Way to Faultless JCL

SmartJCLHORIZONT 15

SmartJCL 3.2 – System Symbols

PROCDS parameter allows &SYSNAME, &SYSPLEX and &LPAR

System symbols can be used for proclib specifications (JCKKPARM) and for message suppression (JCKKMSX).

Page 16: The Easy Way to Faultless JCL

SmartJCLHORIZONT 16

SmartJCL 3.2 – System Symbols

With parm WP=Y the parms can be checked in SYSPRINT.

Page 17: The Easy Way to Faultless JCL

SmartJCLHORIZONT 17

SmartJCL 3.2 – System Symbols

Further new parameters for message suppression.

System symbol can be used for message suppression.

Further new parameters for message suppression.

Page 18: The Easy Way to Faultless JCL

SmartJCLHORIZONT 18

SmartJCL 3.2 – JCK-ECAT

A new parm member to exclude DSNs from catalog check.

The only way in the past.

Page 19: The Easy Way to Faultless JCL

SmartJCLHORIZONT 19

SmartJCL 3.2 – JCK-ECAT

Excluded data sets from catalog check.

Page 20: The Easy Way to Faultless JCL

SmartJCLHORIZONT 20

Any Questions about SmartJCL [email protected]

Page 21: The Easy Way to Faultless JCL

SmartJCLHORIZONT 21

SmartJCL 3.1

•Many new parameters and options for JCL Check and Reformat

- Get DB2 subsystem from system control blocks

- Reformat only selected or changed JCL statements

- Control setting ISPF member statistics in output file JCKJCLO

- Check TSO program call

SmartJCL V3R1 will be available in September 2011. SmartJCL V3R1 will be available in September 2011. It will have following new functions:It will have following new functions:

Page 22: The Easy Way to Faultless JCL

SmartJCLHORIZONT 22

SmartJCL 3.1

•Support for z/OS 1.12 SORT enhancements- JOINKEYS Application- Date Field Conversions- MERGE Operator- MERGEIN Alternate ddnames- ...

•Support for TWS 8.6

Page 23: The Easy Way to Faultless JCL

SmartJCLHORIZONT 23

SmartJCL 3.1

•ISPF dialog supports administrators- Admins are defined during installation or in

JCKXPARM

- Admins have additional configuration options

- Users can only „use“ SmartJCL

Page 24: The Easy Way to Faultless JCL

SmartJCLHORIZONT 24

SmartJCL 3.1

Specify admin users here ...

ISPF dialog supports administrator:ISPF dialog supports administrator:

Page 25: The Easy Way to Faultless JCL

SmartJCLHORIZONT 25

SmartJCL 3.1

Available only for admin users.

Available for every user.

ISPF dialog supports administrator:ISPF dialog supports administrator:

Page 26: The Easy Way to Faultless JCL

SmartJCLHORIZONT 26

SmartJCL 3.1

Available for admin user only.

ISPF dialog supports administrator:ISPF dialog supports administrator:

Page 27: The Easy Way to Faultless JCL

SmartJCLHORIZONT 27

SmartJCL 3.1

Available for every user.

ISPF dialog supports administrator:ISPF dialog supports administrator:

Page 28: The Easy Way to Faultless JCL

SmartJCLHORIZONT 28

SmartJCL 3.1

•New SRI function "SriCatEntry" for catalog access and informations

- Returns• Entry name (= DSN)

• Catalog name

• Entry type

• Volser

- Easier than LISTCAT and scanning output

Page 29: The Easy Way to Faultless JCL

SmartJCLHORIZONT 29

SmartJCL 3.1

•Enhanced JCL Change Facility- new commands DELSTMT, DELSTEP, INSERTSTMT,

INSERTSTMT BEFORE FIRST (i.e. before first EXEC)

- DO/ENDDO block to summarize more actions for one condition

- RANGE (Column 1-72)

Page 30: The Easy Way to Faultless JCL

SmartJCLHORIZONT 30

SmartJCL 3.1

Insert FRIST, LAST, BEFORE, AFTER

... the statements to be inserted ...

... only if these criteria are fulfilled.

Enhanced JCL Change Facility: INSERTSTMTEnhanced JCL Change Facility: INSERTSTMT

Page 31: The Easy Way to Faultless JCL

SmartJCLHORIZONT 31

SmartJCL 3.1

Insert this JCLLIB statement after the JOB statement.

Enhanced JCL Change Facility: INSERTSTMTEnhanced JCL Change Facility: INSERTSTMT

Page 32: The Easy Way to Faultless JCL

SmartJCLHORIZONT 32

SmartJCL 3.1

Use multiple PARMn and VALUEn pairs for selection ...

DELSTMT and DELSTEP can be combined with parameter selection.

Enhanced JCL Change Facility:Enhanced JCL Change Facility:

Page 33: The Easy Way to Faultless JCL

SmartJCLHORIZONT 33

SmartJCL 3.1

Use multiple PARMn and VALUEn pairs for selection ...

... and PARM and VALUE for the change.

Use DO/ENDDO to group more changes for a selection.

Enhanced JCL Change Facility:Enhanced JCL Change Facility:PARMn, VALUEn combined with DO/ENDDO.PARMn, VALUEn combined with DO/ENDDO.

Page 34: The Easy Way to Faultless JCL

SmartJCLHORIZONT 34

SmartJCL 3.1

Contains the strings for the change III.JJJ as well the string AAAAA that excludes the change.

This JCL is modified:This JCL is modified:

Page 35: The Easy Way to Faultless JCL

SmartJCLHORIZONT 35

SmartJCL 3.1

Only changed JCL statements are reformatted:SJCREF=CHANGED

Resulting JCL:Resulting JCL:

Page 36: The Easy Way to Faultless JCL

SmartJCLHORIZONT 36

SmartJCL 3.1Enhanced JCL Change Facility: RANGEEnhanced JCL Change Facility: RANGE

Page 37: The Easy Way to Faultless JCL

SmartJCLHORIZONT 37

Any Questions about SmartJCL [email protected]

Page 38: The Easy Way to Faultless JCL

SmartJCLHORIZONT 38

SmartJCL 3.0

• ISPF Dialog to specify rules according to customer specific standards

- Every site has individual rules, e.g. „UNIT must be SYSDA in SORT step“

- Up to now such checks required usage of SmartJCL‘s REXX interface

- SmartJCL will enable non-programmers to specify complex rules by using a simple ISPF dialog

- See dialog on next slides

SmartJCL V3R0 is available since September 2009. SmartJCL V3R0 is available since September 2009.

It will have following major new functions:It will have following major new functions:

Page 39: The Easy Way to Faultless JCL

SmartJCLHORIZONT 39

Standard Check: Entry Panel

The entry panel offers: - to work with rules- to generate SRI code

Page 40: The Easy Way to Faultless JCL

SmartJCLHORIZONT 40

Standard Check: OptionsSpecify with which rules

you want to work ...

... and where the generated code is to be

stored.

Page 41: The Easy Way to Faultless JCL

SmartJCLHORIZONT 41

Standard Check: Entry Panel

Start working with rules ...

Page 42: The Easy Way to Faultless JCL

SmartJCLHORIZONT 42

List of Rules

Create a new rule or select an existing one

to modify it ...

Page 43: The Easy Way to Faultless JCL

SmartJCLHORIZONT 43

Modify Rule

If pos. 6 of jobname is R or E and DISP not equal SHR...

… or if pos. 3 of jobname is 3 and DISP not equal

SHR ...

… then issue message.

Page 44: The Easy Way to Faultless JCL

SmartJCLHORIZONT 44

Selection Criteria

All possible selection criteria can be picked

from a list…

Page 45: The Easy Way to Faultless JCL

SmartJCLHORIZONT 45

Selection Criteria

... the selection criteria provided by

Standard Check

Further down in the list ...

Page 46: The Easy Way to Faultless JCL

SmartJCLHORIZONT 46

Selection Criteria

JOB statement is selected …

… and all possible parameters and sub-parameters

are listed ….

Page 47: The Easy Way to Faultless JCL

SmartJCLHORIZONT 47

Comparison Operators

... as well as all comparison operators

Page 48: The Easy Way to Faultless JCL

SmartJCLHORIZONT 48

Specify Compare Values

Here you can enter a list of the values.

Values for substr

Page 49: The Easy Way to Faultless JCL

SmartJCLHORIZONT 49

Action for a Rule

What should happen, if a condition is true?

Page 50: The Easy Way to Faultless JCL

SmartJCLHORIZONT 50

Action for a Rule

A message can be issued or a REXX can

be called.

Page 51: The Easy Way to Faultless JCL

SmartJCLHORIZONT 51

Action for a Rule

Where will the message appear?

Page 52: The Easy Way to Faultless JCL

SmartJCLHORIZONT 52

Action for a Rule

The message has to be defined in a

message member.

Page 53: The Easy Way to Faultless JCL

SmartJCLHORIZONT 53

XML for a Rule

The rules created in the dialog are stored

as XML.

Page 54: The Easy Way to Faultless JCL

SmartJCLHORIZONT 54

Generate SRI Code

Option 2 creates SmartJCL REXX Inter-face Code from XML.

Page 55: The Easy Way to Faultless JCL

SmartJCLHORIZONT 55

Generate SRI Code

Page 56: The Easy Way to Faultless JCL

SmartJCLHORIZONT 56

Generate SRI Code

The created REXX code has to be

specified with para-meter SRI-PRG for Check or Reformat.

Page 57: The Easy Way to Faultless JCL

SmartJCLHORIZONT 57

SmartJCL 3.0

• Installation - Own PARM dataset- Strict separation of product libraries and parameter library (OPZXPARM

in CLIST caused problems).

- Easier distribution/maintenance of SmartJCL to multiple z/OS systems.

•Scheduler Interface for TWS- TWS 8.5 support

Other new functions and enhancements:Other new functions and enhancements:

Page 58: The Easy Way to Faultless JCL

SmartJCLHORIZONT 58

SmartJCL 3.0

•JCL Checker- z/OS 1.11 support

• DD EATTR parameter and SORT enhancements

- Check IEHPROGM control statements and consider them for catalog checks

- Issue warning for RACF unprotected datasets- Issue warning if no alias exists for first qualifier

• to avoid data sets in the master catalog

- Message suppression: allow wildcards for message number• to suppress all messages for particular members • Example for PARM(JCKKMSX): JCK* MEMBER=MEMNAME

Other new functions and enhancements (2):Other new functions and enhancements (2):

Page 59: The Easy Way to Faultless JCL

SmartJCLHORIZONT 59

SmartJCL 3.0

•JCL Reformat- Reformat writes directly to PO files

• In the past a PS dataset with IEBUPDTE format was used.

• ISPF member statistic is updated.

- Reformat COMMAND statement

Other new functions and enhancements (3):Other new functions and enhancements (3):

Page 60: The Easy Way to Faultless JCL

SmartJCLHORIZONT 60

SmartJCL 3.0

•SmartJCL REXX Interface (SRI)- New function %SRIInclude to avoid copies of same code

- New function SRIChangeRef to adapt references to changed stepnames

- Same line numbers in SRI messages as in trace.

Other new functions and enhancements (4):Other new functions and enhancements (4):

Page 61: The Easy Way to Faultless JCL

SmartJCLHORIZONT 61

Any Questions about [email protected]

Page 62: The Easy Way to Faultless JCL

SmartJCLHORIZONT 62

SmartJCL V2R4

•Support for z/OS 1.9- OS version/release can be set by parameter OSVER=- Checks new SORT parameters (from z/OS 1.4 to z/OS 1.9)

•DB2 Subsystem Check

- Check if specified DB2 subsystems are defined and active- New parameters:DB2-SUBSYS-CHECK DB2SC=Y/NDB2-GROUP=db2_group_nameDB2-SUBSYS=subsys_name

•Allow default load library for "exist program" check- New parameter:

DEFAULT-LOADLIB DLL=P390A.JCK.DEV.LOAD

SmartJCL V2R4 is available since Q3 2008. SmartJCL V2R4 is available since Q3 2008. It has following major new functions:It has following major new functions:

Page 63: The Easy Way to Faultless JCL

SmartJCLHORIZONT 63

SmartJCL V2R4•Read PROCLIBS directly from JES

- Instead of specifying PROCLIBS through installation, the needed information is taken directly from JES

- Only for JES2 and JES3 Global, not JES3 Local

- New parameter:READ-SYSTEM-PROCLIB RSP=Y/N

•Better adaption to customer environment- Set priority of parameters versus DD statements for further datasets (JCKMSGI,

JCKMSXI, PWDIN)

- New parameter:JCK-FILE JCK-FILE=PARM PARM OR DD

- Support concatenated parameter members and more call paramters for edit macros. Reduces the need to create more OPZXPARM members and edit macros.

Page 64: The Easy Way to Faultless JCL

SmartJCLHORIZONT 64

SmartJCL V2R4

•Better performance - JCK macro reacts faster

- Optimized catalog check under JES3 -> less CPU time

• Improved ISPF dialog- See next slides

Page 65: The Easy Way to Faultless JCL

SmartJCLHORIZONT 65

Improved ISPF Dialog

The main panel is an entry point to all other

dialogs ...

...and it informs about available edit macros.

Page 66: The Easy Way to Faultless JCL

SmartJCLHORIZONT 66

Specify Joblibs and Select Members

Specify joblibs and select members ...

Page 67: The Easy Way to Faultless JCL

SmartJCLHORIZONT 67

Select Members

Select members by typing ”S” in front of the member, or

specify a sequence of jobs by using numbers, e.g.

“1”, “2”, “3”

Type JCK to start the check…

Page 68: The Easy Way to Faultless JCL

SmartJCLHORIZONT 68

Check Members

…the selected members are checked sequentially, every

job that has an error is displayed in the editor…

Page 69: The Easy Way to Faultless JCL

SmartJCLHORIZONT 69

Display Results

...at the end the selection list shows you the resulting

return codes.

Page 70: The Easy Way to Faultless JCL

SmartJCLHORIZONT 70

Foreground Mode

Another option is to check the selected

members in FOREground...

Page 71: The Easy Way to Faultless JCL

SmartJCLHORIZONT 71

Foreground Mode - Summary

... the summary is displayed right

after the check…

..from here you can access directly

messages, details, and sysprint

Page 72: The Easy Way to Faultless JCL

SmartJCLHORIZONT 72

Batch Mode

BATch checks the selected members in

batch mode…

Page 73: The Easy Way to Faultless JCL

SmartJCLHORIZONT 73

Batch Mode – Generated Job

... simply submit the generated job

Page 74: The Easy Way to Faultless JCL

SmartJCLHORIZONT 74

You want to see a preview of V3R0?

Page 75: The Easy Way to Faultless JCL

SmartJCLHORIZONT 75

SmartJCL V2R3

•Easier installation- SVC is no longer necessary for third party RACF check - Firewall friendly Remote Check (no call back)

•TWS variable substitution- Use temporary TWS controller, no impact to production TWS controller- Support for TWS 8.3

•REXX interface: - Access to overriding parameters and utility statements

•New check parameters

SmartJCL V2R3 is available since June 2007. SmartJCL V2R3 is available since June 2007. It has following major new functions:It has following major new functions:

Page 76: The Easy Way to Faultless JCL

SmartJCLHORIZONT 76

SmartJCL – Easier Installation

• SVC installation required system programming - Assembler coding

- SVC has to be loaded

• Therefore SVC was not accepted at many sites

SmartJCL 2.2 used a SVC for authorization. SmartJCL 2.2 used a SVC for authorization. Disadvantages were:Disadvantages were:

Page 77: The Easy Way to Faultless JCL

SmartJCLHORIZONT 77

SmartJCL – Easier Installation

• Parmlib member IKJTSOnn has to be modified

AUTHTSF NAMES( /* PROGRAMS TO BE AUTHORIZED */ + /* WHEN CALLED THROUGH THE */ + /* TSO SERVICE FACILITY. */ + CSFDAUTH /* ICSF */ + IEBCOPY /* */ + ICQASLI0 /* */ + IKJEFF76 /* */ + EQQMINOR /* OPC DIALOG INTERFACE */ + JCKASA1 /* SMARTJCL ACCESS CHECK */ + JCKASU /* SMARTJCL SWITCH USER */)

• Parmlib member IKJTSOnn has to be activated

SET IKJTSO=nn

Now the TSO Service Facility is used.Now the TSO Service Facility is used.

Page 78: The Easy Way to Faultless JCL

SmartJCLHORIZONT 78

NEWOLD

New IP Communication

JCL inISPF Editor

Port 1

ROTJSHD TP Program

Port 2 JCL inISPF Editor

Port 1

ROTJSHD TP Program

Port 1 Server program

uses the original “line” to send data to the client. That avoids firewall problems

ROTJSHD

Page 79: The Easy Way to Faultless JCL

SmartJCLHORIZONT 79

SmartJCL – Simulation TWS

• Production controller is not influenced- No performance implications- No locks on JS file

• Highly automated- Necessary files are copied from production controller - Controller is started and stopped by SmartJCL jobs

• TWS 8.3 ready

An additional TWS controller is used for JCL An additional TWS controller is used for JCL tailoring (variable substitution). Advantages are:tailoring (variable substitution). Advantages are:

Page 80: The Easy Way to Faultless JCL

SmartJCLHORIZONT 80

SmartJCL – Simulation TWSSim TWSProd TWS

Work data sets

LTPCP

AD WS, OI, RD, SI

EQQJBLIBEQQSCLIB

LTPCP

Work data sets

PIF PIF

copy1 create data sets

2 copy data sets from Prod TWS

3 start Sim TWS

4 create LTP, CP

4 Simulation

5 simulate TWS vars

TWS/SimJCLS4 Simulation

AD, WS, OI, RD, SI

7 delete data sets

6 stop Sim TWS

Page 81: The Easy Way to Faultless JCL

SmartJCLHORIZONT 81

SmartJCL - TWS

Built and start Sim TWS.Create LTP, CP.

Select Jobs

Simulate JobsRemove Sim TWS

Start JCL Check

Page 82: The Easy Way to Faultless JCL

SmartJCLHORIZONT 82

SmartJCL – REXX interface

• Overriding JCL statements and parameters- Allows access to JCL statements used at a procedure call before replacing

the procedure call

• Utilities- Allows access to utility statements and parameters

• Reformat modified statements only- Avoids problems with undesired modifications in JCL statements that are

not modified

New REXX interface functions for ....New REXX interface functions for ....

Page 83: The Easy Way to Faultless JCL

SmartJCLHORIZONT 83

SmartJCL – New Parameter

• JCL Check- ACF2 //*LOGONID- Required parameters (JOB-ACCOUNTING and JOB-PGMRS-NAME)- Customer specific defaults (IDCAMS left and right margin)

• Output- Line number for SRI messages (SRI-MSGLNNUM)- Customer specific start/stop messages (STARTM= and STOPM=)- Output only jobs with messages (CORRECT_JOB_OUTPUT=)- Suppress messages (MEMBER=)

• Access Check- Customer specific profile name for access check (RACF-AUDIT-ENTITY)- Defaults for minimal access rights

New parameters for ....New parameters for ....

Page 84: The Easy Way to Faultless JCL

SmartJCLHORIZONT 84

Do you have any questions about SmartJCL 2.3?

[email protected]

Production

SmartJCL

Scheduler

Scheduler Interface

Plan Variable

REXX InterfaceReformat

JCL

Page 85: The Easy Way to Faultless JCL

SmartJCLHORIZONT 85

SmartJCL V2R2

• Improved performance (JCK edit macro)

•RACF Check with any userid under TSO

•Extended TWS variable substitution

•Dialog within OSJ edit macro can be adapted

•Read system configuration

•Migrate parameters while upgrading from previous SmartJCL release

SmartJCL V2R2 is available since SmartJCL V2R2 is available since July 2006July 2006. . It has following major new functions:It has following major new functions:

Page 86: The Easy Way to Faultless JCL

SmartJCLHORIZONT 86

SmartJCL - Performance

• New macros are 50-80% faster as old macros

• Dynamic instead of static allocation- Multiple allocations are avoided - new parameters in JCKKPARM are replacing DD statements

• Proclibs are allocated only if needed

The performance is drastically improved for edit The performance is drastically improved for edit macros JCK and OSJ JCK. macros JCK and OSJ JCK.

Page 87: The Easy Way to Faultless JCL

SmartJCLHORIZONT 87

SmartJCL - PerformanceNo procedure call  

New Macro JCK2,02 s 8,20 s

procedure call - member in the FIRST proclib  New Macro JCK2,18 s 8,20 s

procedure call - member in the LAST proclib  New Macro JCK4,93 s 8,19 s

Page 88: The Easy Way to Faultless JCL

SmartJCLHORIZONT 88

SmartJCL - Check with any user

•V2R1- Available only in In batch mode- In TSO mode the RACF check was only possible with the original userid

•V2R2- Now available in TSO mode- Security Exit to allow APF authorisation by SVC- requires system programming, we are still looking for alternatives

The "RACF Access Check" was introduced with The "RACF Access Check" was introduced with SmartJCL V2R1. It allows to check the JCL with SmartJCL V2R1. It allows to check the JCL with alternative users.alternative users.

Page 89: The Easy Way to Faultless JCL

SmartJCLHORIZONT 89

SmartJCL - Extended TWS Simulation

• Up to now SmartJCL offers two different ways to simulate variable substitution:- ACTION=SIMULATE, PIF Request JCLPREPA

• To slow for large job amounts ( > 5000)• Slows down controller performance, blocks JS file

- ACTION=SUBSTITUTE, HORIZONT's own substitution• very fast, needs no TWS resources (only AD VSAM read access)• cannot substitute all types of variables, e.g. SETVAR

Upshot: Variable substitution is complete (and slow), or fast (and incomplete)!

SmartJCl allows to simulate TWS variable SmartJCl allows to simulate TWS variable substitution.substitution.

Page 90: The Easy Way to Faultless JCL

SmartJCLHORIZONT 90

SmartJCL - Extended TWS Simulation

• Perform HORIZONT's substitution first

• Check if all variables are substituted?- Yes: Ok, JCL is done- No: Start second substitution with PIF request JCLPREPA

• Good compromis, but depends on customer#s environment:- Worst case: Second step is always required!

New solution in SmartJCL V2R2: New solution in SmartJCL V2R2: Combine both ways!Combine both ways!

Page 91: The Easy Way to Faultless JCL

SmartJCLHORIZONT 91

SmartJCL - Extended TWS Simulation

• ACTION=PIFSIM- Old: ACTION=SIMULATE

• ACTION=HORIZONTSIM- Old: ACTION=SUBSTITUTE

• ACTION=SIM- New: Combined Substitution- Only available in batch mode

New parameters (old parameters are still valid):New parameters (old parameters are still valid):

Page 92: The Easy Way to Faultless JCL

SmartJCLHORIZONT 92

SmartJCL - Extended TWS Simulation

Example: Example: &OADID is not replaced by &OADID is not replaced by HORIZONTSIM ...HORIZONTSIM ...

... but in the second step by ... but in the second step by JCLPREPAJCLPREPA

Page 93: The Easy Way to Faultless JCL

SmartJCLHORIZONT 93

SmartJCL - OSJ Edit MacroAn example:The user wants to check the JCL that is shown in the editor (and not the JCL from the JS file)

In this case the user must go through several panels.

Page 94: The Easy Way to Faultless JCL

SmartJCLHORIZONT 94

SmartJCL - OSJ Edit Macro

SP

...type "SP" to specify additional parameters...

Page 95: The Easy Way to Faultless JCL

SmartJCLHORIZONT 95

SmartJCL - OSJ Edit Macro

...change parameter!

Page 96: The Easy Way to Faultless JCL

SmartJCLHORIZONT 96

SmartJCL - OSJ Edit Macro

• Modify dialog defaults

• Specify default behave

The dialog can be tailored to the needs of the users The dialog can be tailored to the needs of the users by modifying a parameter file:by modifying a parameter file:

Page 97: The Easy Way to Faultless JCL

SmartJCLHORIZONT 97

SmartJCL - OSJ Edit Macro

New parameter file to contol behave of the dialog

Page 98: The Easy Way to Faultless JCL

SmartJCLHORIZONT 98

SmartJCL - Read System Configuration

• Up to now it was necessary to specify system specific parameters:

• Smart JCL 2.2 detects automatically- SMS class (up to now job JCKJSMS was needed)

- Master catalog

- MVS version

Page 99: The Easy Way to Faultless JCL

SmartJCLHORIZONT 99

SmartJCL - Parameter

• Old (migrated) and new (inserted) parameters are marked.

• Only new parameter have to be adapted.

The parameters in member JCKKPARM are The parameters in member JCKKPARM are migrated:migrated:

Page 100: The Easy Way to Faultless JCL

SmartJCLHORIZONT 100

SmartJCL - Parameter

Automatic migration during Installation

Page 101: The Easy Way to Faultless JCL

SmartJCLHORIZONT 101

Do you have any questions about SmartJCL 2.2?

[email protected]

Production

SmartJCL

Scheduler

Scheduler Interface

Plan Variable

REXX InterfaceReformat

JCL

Page 102: The Easy Way to Faultless JCL

SmartJCLHORIZONT 102

V2R1 – What’s New

V2R1 is available since May 2005. V2R1 is available since May 2005. Major enhancements are:Major enhancements are:

• "Remote Check"- Check JCL that is stored on Produkction directly in your test

environment

• "Change Facility"- Simply Statements to change JCL statements

• "Access Check" - Check file access authorisation

• ...and much more...

Page 103: The Easy Way to Faultless JCL

SmartJCLHORIZONT 103

V2R1 – Remote Check

• Simplifies checking JCL from the test system against the production libraries on the production system.

• Errors can be corrected easily because they are found before the JCL is transferred to the production system.

• It also avoids to transfer JCL manually to the remote system, logon to that system and check it locally at this system.

• Uses HORIZONT’s standard TCP/IP architecture- Simple TCP/IP protocol (no Framework, no APPC) - Easy to install

The Remote Check enables you to check JCL on The Remote Check enables you to check JCL on another system. Advantages are:another system. Advantages are:

Page 104: The Easy Way to Faultless JCL

SmartJCLHORIZONT 104

V2R1 – Remote Check

• The ISPF dialog - The ISPF dialog allows you to select jobs by name, by range or

by JOBLIST.

• Edit macro - This option is useful for checking new or modified jobs

immediately before a manual submit.

The Remote Check can be used in two ways:The Remote Check can be used in two ways:

Page 105: The Easy Way to Faultless JCL

SmartJCLHORIZONT 105

V2R1 – Remote Check -------------------------- SmartJCL Remote JCL Check -------------- Command ===> Primary commands (top): OPT Browse TCP/IP parameters JOBLIST Edit joblist JOBLIB Edit joblibraries Select one of the following options and press ENTER. Member ===> ________ - ________ Specify one member (left) to check a single job, or specify two members (from member-to member) to check a range of members. Joblist ===> P390G.JCK.JOBLIST___________________________ If you do not specify any member, the Joblist will be used for selection. Joblibs ===> P390A.OPG.CNTL______________________________ Submit ===> E S submit job, E edit before submit Seclect a valid server name with S _ CPU1 _ CPU2 ******************************* Bottom of data ********************************

Remote Check ISPF Dialog

Page 106: The Easy Way to Faultless JCL

SmartJCLHORIZONT 106

EDIT P390A.OPG.CNTL(TESTJCK) - 01.00Command ===> JCK SRV=CPU1 Scroll ===> CSR****** ********************* Top of Data ************************000001 //P390KX JOB 'SMARTJCL',000002 // MSGCLASS=T, 000002 // NOTIFY=&SYSUID,000004 // REGION=6M 000005 //* 000006 //ADUNL EXEC PGM=OPUIAD4, 000007 // PARM='/PW=RFKEFZR',000008 // REGION=4M 000009 //SYSPRINT DD SYSOUT=* 000010 //OPUTEXT DD DSN=&&OPUTEXT, 000011 // DISP=(NEW,PASS), 000012 // SPACE=(TRK,(1,1)),000013 // DCB=(RECFM=FB,LRECL=80,BLKSIZE=80),000014 // UNIT=SYSDA 000015 //OPUDAT DD DSN=&&OPUDAT1,000016 // DISP=(NEW,PASS), 000017 // SPACE=(CYL,(1,1)), 000018 // DCB=(RECFM=FB,LRECL=406,BLKSIZE=16240)

V2R1 – Remote Check

Specify Target CPU

------- SmartJCL - Remote check -------

Enter password: _________

Specify password

Page 107: The Easy Way to Faultless JCL

SmartJCLHORIZONT 107

EDIT P390A.OPG.CNTL(TESTJCK) - 01.00Command ===> JCK SRV=CPU1 Scroll ===> CSR****** ********************* Top of Data ************************=NOTE= MESSAGE SUMMARY AND COUNTS: E=00001, W=00000, I=00000=NOTE= LABEL MSG.NO. ERROR MESSAGE =NOTE= ------ -------- ------------------------------------------=NOTE= .HAAA JCK0440E PROGRAM OPUIAD4 NOT FOUND ON SEARCH PATH 000001 //P390KX JOB 'SMARTJCL',000002 // MSGCLASS=T, 000002 // NOTIFY=&SYSUID,000004 // REGION=6M 000005 //* 000006 //ADUNL EXEC PGM=OPUIAD4, 000007 // PARM='/PW=RFKEFZR',000008 // REGION=4M 000009 //SYSPRINT DD SYSOUT=* 000010 //OPUTEXT DD DSN=&&OPUTEXT, 000011 // DISP=(NEW,PASS), 000012 // SPACE=(TRK,(1,1)),000013 // DCB=(RECFM=FB,LRECL=80,BLKSIZE=80),000014 // UNIT=SYSDA

V2R1 – Remote Check

The JCL is physically validated at the production system, but the results are shown in the editor on the test system

Page 108: The Easy Way to Faultless JCL

SmartJCLHORIZONT 108

PRODTEST

V2R1 – Remote Check Overview

//DD SYSPRINT

SmartJCL

ProceduresDSN2

DSN3Catalog-Check

TCP/IP

TCP/IP

JCL Member

JCL (ISPF Editor)

Page 109: The Easy Way to Faultless JCL

SmartJCLHORIZONT 109

V2R1 – Change Facility

• No coding - In opposite to the REXX interface no coding is needed.- Simply use CHANGE, DELETE and INSERT commands in connection with wildcards.

• Applicable for - JCL statements and JCL parameter- Comments (//*)- In stream data

• More complexe logic requires REXX- The Change Facility is not a replacement for zthe REXX interface, but an addition.

In addition to the REXX interface SmartJCL has a In addition to the REXX interface SmartJCL has a comfortable new change function.comfortable new change function.

Page 110: The Easy Way to Faultless JCL

SmartJCLHORIZONT 110

V2R1 – Change Facility

• CHANGE PARM=DSN,VALUE=PROD*,NEWVAL=TEST*

• DELETE PARM=UNIT

• DELETE JOB=ABC%,PGM=IDCAMS,PARM=UNIT,VALUE=TAPE4

In addition to the REXX Interface SmartJCL has an In addition to the REXX Interface SmartJCL has an integrated change facility. It allows you to perform integrated change facility. It allows you to perform simple changes fast and easily. Some examples:simple changes fast and easily. Some examples:

Page 111: The Easy Way to Faultless JCL

SmartJCLHORIZONT 111

V2R1 – Access Check 1

• Check file access authorisation

- For all files that are used in DD statement and IDCAM commands the file access authorisation is checked.

- The needed rights (read, udate,alter) is taken from the DISP= parameter or IDCAMS command.

- The check can also be done for any other user.

Page 112: The Easy Way to Faultless JCL

SmartJCLHORIZONT 112

V2R1 – Access Check 2

• User sequence1. The JCL check is performed with the Userid that is

specified in the jobcard.2. If no Userid is specified in the jobcard, it is taken

from the ACUID= parameter.3. If the ACUID= parameter is missing, the Userid of

the job submitter is taken into account.

Page 113: The Easy Way to Faultless JCL

SmartJCLHORIZONT 113

V2R1 – Access Check 3

• RACF-Audit Profil- Since earlier versions SmartJCL has a parameter to specify if

access violations should be written to the SYSLOG (RA=Y|N)

- The parameter "RACF-AUDIT RA=N" is protected by profile 'HORIZONT.SMARTJCL.AUTHCHK.NOLOG' in class FACILITY. The user must have READ authorization for this profile to accept the RA=N setting. If the user has lower access rights than READ, the setting RA=N is ignored and changed to RA=Y

Page 114: The Easy Way to Faultless JCL

SmartJCLHORIZONT 114

V2R1 – More enhancements 1

• Validation of Catalog Entries- Checks if a dataset really exists

• ASA- ASA characters are written to file JCKDTLO (optional).

• SmartJCL messages can be replaced - The SmartJCL message number, return code and text can be

replaced.

Additional enhancements:Additional enhancements:

Page 115: The Easy Way to Faultless JCL

SmartJCLHORIZONT 115

V2R1 – More enhancements 2

• Procedures- Called procedures are inserted after the EXEC PROC statement as "=NOTE="

lines.

- The "=NOTE=" lines show JCL overrides and replaced symbolic parameters.

• Validate fields- Check the accounting information against a list of valid values.

- Check the SCHENV= parameter against a list of valid values.

• Limit error messages- Abort check of a JCL member if a limit of messages is reached.

Page 116: The Easy Way to Faultless JCL

SmartJCLHORIZONT 116

V2R1 – More enhancements 3 • New header and footer for JCKDTLO and JCKSUMO

- The header contains the program version and the start date and time of the check.

- The footer contains a statistic about JCL errors.

• Format of JCKSUMO- Format of the file JCKSUMO is now identical for JCKJCLI and

JUPJInnn.

• Suppress job output in JCKDTLO- Jobs without errors are not written to JCKDTLO (optional).

Page 117: The Easy Way to Faultless JCL

SmartJCLHORIZONT 117

Any Questions about SmartJCL 2.1?

File Edit Confirm Menu Utilities Compilers Test Help --------------------------------------------------------------------------- EDIT P390H.SPFTEMP1.CNTL Columns 00001 00072 Command ===> JCK Scroll ===> CSR ****** ***************************** Top of Data ************************** =NOTE= LABEL MSG.NO. ERROR MESSAGE =NOTE= ------ -------- ------------------------------------------------------ =NOTE= .HAAA JUP0008E 00, ,00009,INVALID JCL STATEMENT: ' =NOTE= .HAAB JCK0002E 00, ,00000,INVALID STMT ' IN ROUTINE JCKJOB =NOTE= .HAAC JCK0316E 00, ,00000,DATA SET NOT FOUND IN CATALOG =NOTE= .HAAD JCK0316E 00, ,00000,DATA SET NOT FOUND IN CATALOG =NOTE= .HAAE JCK0270E 00, ,00000,INVALID VALUE CATL FOR THE NORMAL 000001 //P390HX JOB ,'HORIZONT',MSGCLASS=T, 000002 // NOTIFY=&SYSUID,REGION=6M =NOTE= -- NOTIFY=P390H,REGION=6M 000003 //* 000004 //****************************************************************** 000005 //* UNLOAD OPC-VSAM DSN=P390A.OPCESA.V2R0M0.AD 000006 //****************************************************************** 000007 //ADUNL EXEC PGM=OPUIAD5, .HAAB // PARM=('DEP(0),ER(0)/' =NOTE= JUP0008E 00, ,00009,INVALID JCL STATEMENT: ' =NOTE= JCK0002E 00, ,00000,INVALID STMT ' IN ROUTINE JCKJOB 000009 // 'OI=N PC=OS2 OD=N EX=Y PW=RNCECLI')

File Edit Confirm Menu Utilities Compilers Test Help ---------------------------------------------------------------------- EDIT P390A.HUP.PLI.DEV($C1) - 01.02 Columns 000 Command ===> Scroll = ****** ***************************** Top of Data ********************* =NOTE> SmartJCL JCL XREF LISTING =NOTE> --------------------------------------------------------------- 000003 //JCLCHECK JOB ,'HORIZONT/DIRNBERGER',MSGCLASS=T,CLASS=A, 000004 // NOTIFY=&SYSUID =NOTE> +++ JCK1234I JOB FOUND IN APPLICATION STTMONTH01 =NOTE> +++ JCK1234I PREDECESSOR: STTMONTH00 JCLCHK01 =NOTE> +++ JCK1234I PREDECESSOR: STTMONTH00 JCLCHK02 =NOTE> +++ JCK1234I SUCCESSOR: - =NOTE> +++ JCK1234I SPECRES: INITA =NOTE> +++ JCK1234I SPECRES: STT 000011 //* 000012 //PROCS JCLLIB ORDER=(P390A.ROSE.PLI.CNTL) 000013 //* 000014 //DEL EXEC PGM=IDCAMS 000015 //SYSPRINT DD * 000016 DEL P390A.STT.DATA.VALCURVE 000017 //*

-------------------------------- SmartJCL ------------------------------- Command ===> ________________________________________________________ Command: ENTER Start RES Reset parameters

Selection Jobname ===> ________ Operation Number ===> ___ Application ID ===> MYAPP*_______ Workstation ID ===> ____ From ===> 20010601 0600 Group ===> ________ To ===> 20010701 0559 Owner ===> ____________ YYYYMMDD HHMM Simulation Simulation Type ===> FULL___ OPC Subsystem ===> OP6C Use JCL from a private JCL Library for Simulation ===> N (Y/N) Output Datasets SmartJCL Output DSN ===> P390G.HCLCHECK.HCL__________________________ SmartJCL Sysprint ===> P390G.HCLCHECK.SYSPRINT_____________________ EQQMLOG ===> P390G.HCLCHECK.EQQMLOG______________________

[email protected]

Page 118: The Easy Way to Faultless JCL

SmartJCLHORIZONT 118

V2R0 Release Notes

• REXX Interface - Check user standards- Perform mass updates

• Reformat as an Edit Macro

• Integration of Control-M Auto-Edit function

• Checking procedures

• Check for existing DB2/IMS programs

• Utilities (DD-Names)

• Generates commands to recall migrated datasets

V2R0 is available since April 2007. It has following V2R0 is available since April 2007. It has following major new functions:major new functions:

Page 119: The Easy Way to Faultless JCL

SmartJCLHORIZONT 119

V2R0 - REXX Interface

• All JCL statements can be accessed for verification and modification

• The Function Package contains special functions for JCL handling, e.g. Qualifier("USER.PROD.TYPE", LAST)="TYPE“

• The Function Package contains SET functions to delete, insert or modify all statements, even complete steps

REXX is flexible, available and well known. A REXX is flexible, available and well known. A “Function Package” allows to access JCL structures “Function Package” allows to access JCL structures from SmartJCL.from SmartJCL.

Page 120: The Easy Way to Faultless JCL

SmartJCLHORIZONT 120

File Edit Confirm Menu Utilities Compilers Test Help ----------------------------------------------------------------- EDIT P390A.JCK.SCL(XMP1) 01.02 COMMAND ===> 000001 /* Scan the Joblib, and delete all DSNs from the joblib, 000002 which are not in the linklist */ 000003 000004 Stmt = GetStmt("FIRST") 000005 Type = GetType(Stmt) 000006 while Type ^= "EXEC" do 000007 if Type = "DD" & Linklist (GetValue (Stmt, "DSN")) then 000008 Stmt = DelStmt("NEXT") 000009 else 000010 Stmt = GetStmt("NEXT") 000011 Type = GetType(Stmt) 000012 end ****** ************************ Top of Data *********************

V2R0 - REXX Interface

REXX with SmartJCL Function Package

Page 121: The Easy Way to Faultless JCL

SmartJCLHORIZONT 121

V2R0 - REXX Interface

Member1 REXX //DD SYSPRINT

Modification…

Verification

Member2 REXX

MemberX etc.

Page 122: The Easy Way to Faultless JCL

SmartJCLHORIZONT 122

EDIT P390A.OPG.CNTL(TESTJCK) - 01.00 Columns 00001 00072Command ===> Scroll ===> CSR****** ********************* Top of Data ************************000001 //P390KX JOB ,'SMARTJCL',MSGCLASS=T, 000002 // NOTIFY=&SYSUID,REGION=6M 000003 //* 000004 //ADUNL EXEC PGM=OPUIAD4, 000005 // PARM='/PW=RFKEFZR',REGION=4M 000006 //SYSPRINT DD SYSOUT=* 000007 //OPUTEXT DD DISP=(NEW,PASS),DSN=&&OPUTEXT,000008 // SPACE=(TRK,(1,1)),000009 // DCB=(RECFM=FB,LRECL=80,BLKSIZE=80),UNIT=SYSDA 000010 //OPUDAT DD DISP=(NEW,PASS),DSN=&&OPUDAT1, 000011 // UNIT=SYSDA,SPACE=(CYL,(1,1)), 000012 // DCB=(RECFM=FB,LRECL=406,BLKSIZE=16240)000013 //* ****** ********************* Bottom of Data *********************

V2R0 – Reformat Edit Macro

Type JREF…

JREF

Page 123: The Easy Way to Faultless JCL

SmartJCLHORIZONT 123

EDIT P390A.OPG.CNTL(TESTJCK) - 01.00 REFORMAT WAS SUCCESSFULCommand ===> Scroll ===> CSR****** ********************* Top of Data ************************000001 //P390KX JOB 'SMARTJCL',000002 // MSGCLASS=T, 000002 // NOTIFY=&SYSUID,000004 // REGION=6M 000005 //* 000006 //ADUNL EXEC PGM=OPUIAD4, 000007 // PARM='/PW=RFKEFZR',000008 // REGION=4M 000009 //SYSPRINT DD SYSOUT=* 000010 //OPUTEXT DD DSN=&&OPUTEXT, 000011 // DISP=(NEW,PASS), 000012 // SPACE=(TRK,(1,1)),000013 // DCB=(RECFM=FB,LRECL=80,BLKSIZE=80),000014 // UNIT=SYSDA 000015 //OPUDAT DD DSN=&&OPUDAT1,000016 // DISP=(NEW,PASS), 000017 // SPACE=(CYL,(1,1)), 000018 // DCB=(RECFM=FB,LRECL=406,BLKSIZE=16240)

V2R0 – Reformat Edit Macro

…to get reformatted JCL that is much more easy to read!

Page 124: The Easy Way to Faultless JCL

SmartJCLHORIZONT 124

File Edit Confirm Menu Utilities Compilers Test Help ------------------------------------------------------------------EDIT P390A.HUP.PLI.DEV($C1) - 01.02 COMMAND ===> ****** ********************* Top of Data *************************000001 //E5MS130S JOB (ACCOUNT),'HORIZONT',CLASS=3,MSGCLASS=T 000002 //* 000003 //DUMP EXEC PGM=ICEMAN,PARM='ABEND,HIPRMAX=0' 000004 //SORTIN DD DSN=P390C.TEMP.SMF2.$,DISP=SHR 000005 //SYSOUT DD SYSOUT=* 000006 //SYSIN DD * 000007 SORT FIELDS=COPY,SKIPREX=770000,STOPAFT=785000 =NOTE= JCKxxxxE 00,E5MS130S,SORTOUT DD STATEMENT MISSING ****** ***************** Bottom of Data **************************

V2R0 - Utilities

Check DD names and syntax of utility programs

•IEBGENER•IEBCOPY•IDCAMS •SORT

Page 125: The Easy Way to Faultless JCL

SmartJCLHORIZONT 125

File Edit Confirm Menu Utilities Compilers Test Help ------------------------------------------------------------- EDIT P390A.HUP.PLI.DEV($C1) - 01.02 COMMAND ===> ****** ********************** Top of Data ********************* =NOTE= P01//DB2TSO PROC =NOTE= P01//DB2TSO EXEC PGM=IKJEFT01,REGION=4000K =NOTE= P01//STEPLIB DD DSN=DSN510.SDSNLOAD, =NOTE= P01// DISP=SHR =NOTE= P01//SYSPRINT DD SYSOUT=* =NOTE= P01//SYSTSPRT DD SYSOUT=* =NOTE= P01//SYSUDUMP DD SYSOUT=* =NOTE= P01//SYSDBOUT DD SYSOUT=* =NOTE= P01//SYSOUT DD SYSOUT=* =NOTE= P01$/SYSTSIN DD * =NOTE= P01DSN SYSTEM(DSN1) =NOTE= P01RUN PROGRAM(XXRICPTS) PLAN(XXRICPTS) + =NOTE= P01PARM('DEP(0),ER(0)/DB2SSID=DSN1') + =NOTE= P01LIBRARY('P390A.XINFO.LOAD') =NOTE= JCKxxxxE 00,XXRJCPT1,00000,PROGRAM XXRICPTS NOT FOUND =NOTE= P01$/CPTTO DD DSN=P390A.XINFO.DATA.TABLES,

V2R0 - DB2 Programs

Check if DB2 Program exists

Page 126: The Easy Way to Faultless JCL

SmartJCLHORIZONT 126

File Edit Confirm Menu Utilities Compilers Test Help -------------------------------------------------------------EDIT P390A.HUP.PLI.DEV($C1) - 01.02 COMMAND ===> ****** ********************** Top of Data *********************000001 //#IMS JOB (BVAV90100000SAHG0N), 000002 // MSGCLASS=X,CLASS=R 000003 /*JOBPARM S=ANY,LINECT=0 000004 //****************************************************** 000005 //*+BAH04029 ---- JOBDOK --------------------------* 000006 //****************************************************** 000007 //G EXEC PGM=DFSRRC00,REGION=4200K, .HAAA // PARM='DLI,A387,BVAHLES,,0000,,0,,N,,,IMS1,,Y,N,IRLM' ==MSG> JCK0440E PROGRAM DFSRRC00 NOT FOUND ON SEARCH PATH 000009 //* ! ! !!!! ! !_______MONITOR 000010 //* PROGRAMM_! ! !!!! !__________SRCH 000011 //* PSBNAME_______! !!!!_____________RST 000012 //* SPIE_________________!!!______________EXCPVR 000013 //* TEST__________________! .HAAB //STEPLIB DD DSN=RZR.IMS.USERDC,DISP=SHR .HAAC // DD DSN=RZR.IMS.RESLIB,DISP=SHR

V2R0 – IMS Programs

Check if IMS program exists

Page 127: The Easy Way to Faultless JCL

SmartJCLHORIZONT 127

File Edit Confirm Menu Utilities Compilers Test Help ------------------------------------------------------------- EDIT P390A.JCK.JCKMIG0 - 01.00 COMMAND ===> ****** ********************** Top of Data ********************* HRECALL 'P390A.JCK.DATA.MIGGDG.G0001V00'/* MIGGDG00 MIGRAT */ HRECALL 'P390A.JCK.DATA.MIGGDG.G0002V00'/* MIGGDG00 MIGRAT */ HRECALL 'P390A.JCK.DATA.MIGGDG.G0003V00'/* MIGGDG00 MIGRAT */ HRECALL 'P390A.JCK.DATA.MIGGDG.G0004V00'/* MIGGDG00 MIGRAT */ HRECALL 'P390A.JCK.DATA.MIGGDG.G0005V00'/* MIGGDG00 MIGRAT */ HRECALL 'P390A.JCK.DATA.MIG.DS02' /* MIGGDG01 MIGRAT */ HRECALL 'P390A.JUP.DATA.KSDSTEST' /* MIGVSAM0 MIGRAT */ HRECALL 'P390A.JCK.DATA.MIG.DS04' /* MIG01 MIGRAT */ HRECALL 'P390A.JCK.DATA.MIG.DS05' /* MIG01 MIGRAT */ HRECALL 'P390A.JUP.DATA.KSDSTEST.DATA' /* MIG06 MIGRAT */

V2R0 – Recall Commands

The names of migrated data sets are written to file JCKMIGO

Page 128: The Easy Way to Faultless JCL

SmartJCLHORIZONT 128

Any Questions about SmartJCL 2.0?

File Edit Confirm Menu Utilities Compilers Test Help --------------------------------------------------------------------------- EDIT P390H.SPFTEMP1.CNTL Columns 00001 00072 Command ===> JCK Scroll ===> CSR ****** ***************************** Top of Data ************************** =NOTE= LABEL MSG.NO. ERROR MESSAGE =NOTE= ------ -------- ------------------------------------------------------ =NOTE= .HAAA JUP0008E 00, ,00009,INVALID JCL STATEMENT: ' =NOTE= .HAAB JCK0002E 00, ,00000,INVALID STMT ' IN ROUTINE JCKJOB =NOTE= .HAAC JCK0316E 00, ,00000,DATA SET NOT FOUND IN CATALOG =NOTE= .HAAD JCK0316E 00, ,00000,DATA SET NOT FOUND IN CATALOG =NOTE= .HAAE JCK0270E 00, ,00000,INVALID VALUE CATL FOR THE NORMAL 000001 //P390HX JOB ,'HORIZONT',MSGCLASS=T, 000002 // NOTIFY=&SYSUID,REGION=6M =NOTE= -- NOTIFY=P390H,REGION=6M 000003 //* 000004 //****************************************************************** 000005 //* UNLOAD OPC-VSAM DSN=P390A.OPCESA.V2R0M0.AD 000006 //****************************************************************** 000007 //ADUNL EXEC PGM=OPUIAD5, .HAAB // PARM=('DEP(0),ER(0)/' =NOTE= JUP0008E 00, ,00009,INVALID JCL STATEMENT: ' =NOTE= JCK0002E 00, ,00000,INVALID STMT ' IN ROUTINE JCKJOB 000009 // 'OI=N PC=OS2 OD=N EX=Y PW=RNCECLI')

File Edit Confirm Menu Utilities Compilers Test Help ---------------------------------------------------------------------- EDIT P390A.HUP.PLI.DEV($C1) - 01.02 Columns 000 Command ===> Scroll = ****** ***************************** Top of Data ********************* =NOTE> SmartJCL JCL XREF LISTING =NOTE> --------------------------------------------------------------- 000003 //JCLCHECK JOB ,'HORIZONT/DIRNBERGER',MSGCLASS=T,CLASS=A, 000004 // NOTIFY=&SYSUID =NOTE> +++ JCK1234I JOB FOUND IN APPLICATION STTMONTH01 =NOTE> +++ JCK1234I PREDECESSOR: STTMONTH00 JCLCHK01 =NOTE> +++ JCK1234I PREDECESSOR: STTMONTH00 JCLCHK02 =NOTE> +++ JCK1234I SUCCESSOR: - =NOTE> +++ JCK1234I SPECRES: INITA =NOTE> +++ JCK1234I SPECRES: STT 000011 //* 000012 //PROCS JCLLIB ORDER=(P390A.ROSE.PLI.CNTL) 000013 //* 000014 //DEL EXEC PGM=IDCAMS 000015 //SYSPRINT DD * 000016 DEL P390A.STT.DATA.VALCURVE 000017 //*

-------------------------------- SmartJCL ------------------------------- Command ===> ________________________________________________________ Command: ENTER Start RES Reset parameters

Selection Jobname ===> ________ Operation Number ===> ___ Application ID ===> MYAPP*_______ Workstation ID ===> ____ From ===> 20010601 0600 Group ===> ________ To ===> 20010701 0559 Owner ===> ____________ YYYYMMDD HHMM Simulation Simulation Type ===> FULL___ OPC Subsystem ===> OP6C Use JCL from a private JCL Library for Simulation ===> N (Y/N) Output Datasets SmartJCL Output DSN ===> P390G.HCLCHECK.HCL__________________________ SmartJCL Sysprint ===> P390G.HCLCHECK.SYSPRINT_____________________ EQQMLOG ===> P390G.HCLCHECK.EQQMLOG______________________

[email protected]

Page 129: The Easy Way to Faultless JCL

SmartJCLHORIZONT 129

V1R1 Release Notes

• Exclude datasets from catalog check

• Include/exclude list for jobs (Batch Mode)

• Individual control of each message

• Display TWS data

• Reformat (jobs and procedures)

• Control-M variable substitution

• Messages are written to several output files

SmartJCL V1R1 is available since June 2003. It has SmartJCL V1R1 is available since June 2003. It has following major new functions:following major new functions:

Page 130: The Easy Way to Faultless JCL

SmartJCLHORIZONT 130

EDIT P390A.OPG.CNTL(TESTJCK) - 01.00 Columns 00001 00072Command ===> Scroll ===> CSR****** ********************* Top of Data ************************000001 //P390KX JOB ,'SMARTJCL',MSGCLASS=T, 000002 // NOTIFY=&SYSUID,REGION=6M 000003 //* 000004 //ADUNL EXEC PGM=OPUIAD4, 000005 // PARM='/PW=RFKEFZR',REGION=4M 000006 //SYSPRINT DD SYSOUT=* 000007 //OPUTEXT DD DISP=(NEW,PASS),DSN=&&OPUTEXT,000008 // SPACE=(TRK,(1,1)),000009 // DCB=(RECFM=FB,LRECL=80,BLKSIZE=80),UNIT=SYSDA 000010 //OPUDAT DD DISP=(NEW,PASS),DSN=&&OPUDAT1, 000011 // UNIT=SYSDA,SPACE=(CYL,(1,1)), 000012 // DCB=(RECFM=FB,LRECL=406,BLKSIZE=16240)000013 //* ****** ********************* Bottom of Data *********************

V1R1 - Reformat

Unformatted JCL is difficult

to read

Page 131: The Easy Way to Faultless JCL

SmartJCLHORIZONT 131

EDIT P390A.OPG.CNTL(TESTJCK) - 01.00 Columns 00001 00072Command ===> Scroll ===> CSR****** ********************* Top of Data ************************000001 //P390KX JOB 'SMARTJCL',000002 // MSGCLASS=T, 000002 // NOTIFY=&SYSUID,000004 // REGION=6M 000005 //* 000006 //ADUNL EXEC PGM=OPUIAD4, 000007 // PARM='/PW=RFKEFZR',000008 // REGION=4M 000009 //SYSPRINT DD SYSOUT=* 000010 //OPUTEXT DD DSN=&&OPUTEXT, 000011 // DISP=(NEW,PASS), 000012 // SPACE=(TRK,(1,1)),000013 // DCB=(RECFM=FB,LRECL=80,BLKSIZE=80),000014 // UNIT=SYSDA 000015 //OPUDAT DD DSN=&&OPUDAT1,000016 // DISP=(NEW,PASS), 000017 // SPACE=(CYL,(1,1)), 000018 // DCB=(RECFM=FB,LRECL=406,BLKSIZE=16240)

V1R1 - Reformat

Reformatted JCL is• easier to read• helps to avoid

mistakes • reduces costs

Page 132: The Easy Way to Faultless JCL

SmartJCLHORIZONT 132

V1R1 - Reformat

• The positions of keyword, value and continuation line can be specified individually for each JCL parameter

• Flexible handling of comments

• Reformats IF/ELSE statements

The reformat function can be adapted to user’s The reformat function can be adapted to user’s requirements and standards, e.g. requirements and standards, e.g.

Page 133: The Easy Way to Faultless JCL

SmartJCLHORIZONT 133

-------------------------- SmartJCL Reformat--------------------- Command ===> Primary commands (top): REF Edit reformat parameters JOBLIST Edit joblist JOBLIB Edit joblibraries Select one of the following options and press ENTER. Member ===> RFMT#E1_ - ________ Specify one member (left) if you would like to check a a single job, or specify two members if you would like to check a range of members. Joblist ===> ____________________________________________ If you do not specify any member, the Joblist is used for selection. Joblibs ===> P390G.SMARTJCL.JOBLIBS______________________ Submit ===> E S submit job, E edit before submit

V1R1 - Reformat

The ISPF Dialog for

the reformat function

Page 134: The Easy Way to Faultless JCL

SmartJCLHORIZONT 134

File Edit Confirm Menu Utilities Compilers Test Help -----------------------------------------------------------------EDIT P390A.HUP.PLI.DEV($C1) - 01.02 COMMAND ===> ****** ************************ Top of Data *********************==MSG> PREDECESSORS: ==MSG> APPLICATION OPNO JOBNAME ==MSG> ------------------------------ ==MSG> XINFO22 61 XXRJCM2 ==MSG> XINFO22 60 XXRJCM1 ==MSG> XINFO22 1 ==MSG> SUCCESSORS: ==MSG> APPLICATION OPNO JOBNAME ==MSG> ------------------------------ ==MSG> XINFO22 64 XXRJDBLC ==MSG> SPECIAL RESOURCES: ==MSG> -------------------------------------------- ==MSG> DSN1 =NOTE= ******************* JCL PREPARED BY SMARTJCL/SIMJCL *******=NOTE= ************************** END OF PREPARED JCL ************000001 //XXRJCM3 JOB (ACCOUNT),'HORIZONT',MSGCLASS=T,CLASS=A,

V1R1 - TWS Information

Displaying TWS-

Information in the JCL!

Page 135: The Easy Way to Faultless JCL

SmartJCLHORIZONT 135

Display Filter View Print Options Help ----------------------------------------------------------------- SDSF OUTPUT DISPLAY JCKJPS2 JOB03904 DSID 105 LINE 0 CO COMMAND INPUT ===> SCR ********************************* TOP OF DATA ********************MSG.NO. ERROR MESSAGE -------- ---------------------------------------------------------JCK0402E MISPLACED DD STATEMENT JCK0400E JOB HAS NO STEPS JCK0416E JOB NAME HAS TO BE EQUAL WITH MEMBER NAME JCK0402E MISPLACED DD STATEMENT JCK0400E JOB HAS NO STEPS JCK0400E JOB HAS NO STEPS JCK0416E JOB NAME HAS TO BE EQUAL WITH MEMBER NAME JCK0440E PROGRAM ZVB245 NOT FOUND ON SEARCH PATH JCK0457W DATA SET SYS1.CEE.SCEERUN NOT IN CATALOG JCK0441E LIBRARY COULD NOT BE ALLOCATED TO SEARCH FOR PROGRAM, DSNJCK0515E DATA SET CANNOT BE FOUND/NOT IN CATALOG, DSN = "SYS1.CEE. JCK0457W DATA SET SSKM.SMART611.DCALOADP NOT IN CATALOG JCK0441E LIBRARY COULD NOT BE ALLOCATED TO SEARCH FOR PROGRAM, DSN

V1R1 – Separated Output

SUMMARY…scroll to the left…

The messages are written to separate files

• JCKSUMO (Summary)• JCKDTLO (Detailed)

Page 136: The Easy Way to Faultless JCL

SmartJCLHORIZONT 136

Display Filter View Print Options Help ----------------------------------------------------------------- SDSF OUTPUT DISPLAY JCKJPS2 JOB03904 DSID 105 LINE 0 CO COMMAND INPUT ===> SCR ********************************* TOP OF DATA ********************LIB MEMBER JOBNAME JSTEPNAME PSTEPNAME DD-NAME ---- -------- -------- --------- --------- --------J001 $$$CONT SYSIN J001 $$$CONT SYSIN J001 $C DDP4 J001 $DDTABLE SYSIN J001 $DDTABLE SYSIN J001 $PROLOG J001 $SIGNAL #ZVB245 J001 $SIGNAL #ZVB245 STEP1 STEP1 J001 $SIGNAL #ZVB245 STEP1 STEP1 STEPLIB J001 $SIGNAL #ZVB245 STEP1 STEP1 STEPLIB J001 $SIGNAL #ZVB245 STEP1 STEP1 STEPLIB J001 $SIGNAL #ZVB245 STEP1 STEP1 STEPLIB J001 $SIGNAL #ZVB245 STEP1 STEP1 STEPLIB

V1R1 - Output, e.g. Summary

…only most interesting information

Page 137: The Easy Way to Faultless JCL

SmartJCLHORIZONT 137

Display Filter View Print Options Help ----------------------------------------------------------------- SDSF OUTPUT DISPLAY JCKJPS2 JOB03904 DSID 105 LINE 0 CO COMMAND INPUT ===> SCR ********************************* TOP OF DATA ********************000100 .HAAA JCK0402E MISPLACED DD STATEMENT .HAAA JCK0400E JOB HAS NO STEPS P390A.JUP.DATA.JOBLIB($PROLOG): 000001 //* -------------------------------------------------------000002 //* JD021016, ........ 000003 //* -------------------------------------------------------000004 //* .HAAA JCK0400E JOB HAS NO STEPS P390A.JUP.DATA.JOBLIB($SIGNAL): 000001 //#ZVB245 JOB (OA-MF-NB),MSGLEVEL=(1,1),CLASS=P,MSGCLASS=T,000002 // TIME=1440,REGION=8M,TYPRUN=SCAN .HAAA JCK0416E JOB NAME HAS TO BE EQUAL WITH MEMBER NAME

V1R1 - Separate Output, e.g. Detaillied

All information, including the JCL

Page 138: The Easy Way to Faultless JCL

SmartJCLHORIZONT 138

---------------------- CTM/SimJCL Startpanel --------------------- Command ===> Select one of the following options and press ENTER 1 JOBLIST - Select jobs for simulation 2 SIMULATE - Start JCL simulation based on previous selection 3 CHECK - Start JCL check based on previous simulation 4 CHECK - Start JCL check without simulation 5 REFORMAT - Start JCL reformat (pre release) Note: Options 3, 4, 5 are only available, if a JCL checker is installed, for example SmartJCL

V1R1 - Control-M Interface

Control-M Interface Mainpanel

Page 139: The Easy Way to Faultless JCL

SmartJCLHORIZONT 139

------------------ CTM/SimJCL - Create Joblist ----------------- Command ===> top : RESET restore default values, JC change jobcards Selection Table ===> ____________________ Application ===> ____________________ Group ===> ____________________ Jobname ===> ________ Owner ===> ______________________________ Schedule Library DSN ===> DATA.CTM.MAN.SCHEDULE___________________ Output files Joblist ===> P390G.MJV.SELJOBS_______________________ Variablelist ===> P390G.MJV.SETVAR________________________ Submit ===> S S submit job, E edit before submit

V1R1 - Control-M Interface

Select Jobs by using Control-M

fields

Page 140: The Easy Way to Faultless JCL

SmartJCLHORIZONT 140

Any Questions about SmartJCL?

File Edit Confirm Menu Utilities Compilers Test Help --------------------------------------------------------------------------- EDIT P390H.SPFTEMP1.CNTL Columns 00001 00072 Command ===> JCK Scroll ===> CSR ****** ***************************** Top of Data ************************** =NOTE= LABEL MSG.NO. ERROR MESSAGE =NOTE= ------ -------- ------------------------------------------------------ =NOTE= .HAAA JUP0008E 00, ,00009,INVALID JCL STATEMENT: ' =NOTE= .HAAB JCK0002E 00, ,00000,INVALID STMT ' IN ROUTINE JCKJOB =NOTE= .HAAC JCK0316E 00, ,00000,DATA SET NOT FOUND IN CATALOG =NOTE= .HAAD JCK0316E 00, ,00000,DATA SET NOT FOUND IN CATALOG =NOTE= .HAAE JCK0270E 00, ,00000,INVALID VALUE CATL FOR THE NORMAL 000001 //P390HX JOB ,'HORIZONT',MSGCLASS=T, 000002 // NOTIFY=&SYSUID,REGION=6M =NOTE= -- NOTIFY=P390H,REGION=6M 000003 //* 000004 //****************************************************************** 000005 //* UNLOAD OPC-VSAM DSN=P390A.OPCESA.V2R0M0.AD 000006 //****************************************************************** 000007 //ADUNL EXEC PGM=OPUIAD5, .HAAB // PARM=('DEP(0),ER(0)/' =NOTE= JUP0008E 00, ,00009,INVALID JCL STATEMENT: ' =NOTE= JCK0002E 00, ,00000,INVALID STMT ' IN ROUTINE JCKJOB 000009 // 'OI=N PC=OS2 OD=N EX=Y PW=RNCECLI')

File Edit Confirm Menu Utilities Compilers Test Help ---------------------------------------------------------------------- EDIT P390A.HUP.PLI.DEV($C1) - 01.02 Columns 000 Command ===> Scroll = ****** ***************************** Top of Data ********************* =NOTE> SmartJCL JCL XREF LISTING =NOTE> --------------------------------------------------------------- 000003 //JCLCHECK JOB ,'HORIZONT/DIRNBERGER',MSGCLASS=T,CLASS=A, 000004 // NOTIFY=&SYSUID =NOTE> +++ JCK1234I JOB FOUND IN APPLICATION STTMONTH01 =NOTE> +++ JCK1234I PREDECESSOR: STTMONTH00 JCLCHK01 =NOTE> +++ JCK1234I PREDECESSOR: STTMONTH00 JCLCHK02 =NOTE> +++ JCK1234I SUCCESSOR: - =NOTE> +++ JCK1234I SPECRES: INITA =NOTE> +++ JCK1234I SPECRES: STT 000011 //* 000012 //PROCS JCLLIB ORDER=(P390A.ROSE.PLI.CNTL) 000013 //* 000014 //DEL EXEC PGM=IDCAMS 000015 //SYSPRINT DD * 000016 DEL P390A.STT.DATA.VALCURVE 000017 //*

-------------------------------- SmartJCL ------------------------------- Command ===> ________________________________________________________ Command: ENTER Start RES Reset parameters

Selection Jobname ===> ________ Operation Number ===> ___ Application ID ===> MYAPP*_______ Workstation ID ===> ____ From ===> 20010601 0600 Group ===> ________ To ===> 20010701 0559 Owner ===> ____________ YYYYMMDD HHMM Simulation Simulation Type ===> FULL___ OPC Subsystem ===> OP6C Use JCL from a private JCL Library for Simulation ===> N (Y/N) Output Datasets SmartJCL Output DSN ===> P390G.HCLCHECK.HCL__________________________ SmartJCL Sysprint ===> P390G.HCLCHECK.SYSPRINT_____________________ EQQMLOG ===> P390G.HCLCHECK.EQQMLOG______________________

[email protected]

Page 141: The Easy Way to Faultless JCL

SmartJCLHORIZONT 141

Many thanks for your attention

HORIZONTSoftware for Datacenters

Garmischer Str. 8 D- 80339 MünchenTel ++49(0)89 / 540 162 - 0www.horizont-it.com

The Easy Way to Faultless JCLSmartJCL