Chapter 12: JCL Support

This chapter describes the support for JCL provided.

Introduction

This COBOL development system enables you to build an MVS mainframe application, deploy it to Enterprise Server, and run it in Enterprise Server. You can maintain JCL files either in the development or deployment system.

An important part of an MVS application is the JCL jobstream that controls its execution. MSS provides facilities to support the use of batch JCL jobstreams on the workstation. Within the integrated development environment (IDE) you can:

A major objective of the JCL support is to keep the operations in MSS as similar as possible to those done on the mainframe. Thus in MSS, you can:

Before you start to use the JCL support, you need to understand more about the following topics:

Each of these topics is discussed below.

JCL Jobstreams

You can run the same JCL jobstreams in MSS as you can on the mainframe. MSS checks the JCL statements for errors as far as possible. Several parameters, especially on DD statements, have no meaning in MSS and are ignored. This section describes the differences that apply when using JCL jobstreams in the MSS environment instead of the MVS mainframe environment.

MSS supports both MVS JCL and VSE JCL. The following sections describe the levels of support for MVS JCL and VSE JCL.

MVS JCL Support

The following sections outline the features and statements in MVS JCL that are supported.

MVS JCL Features

The following MVS JCL features are supported:

The following MVS JCL features are not supported:

More information about the MVS JCL statements supported by MSS is given later in this section.

MSS supports the running of MVS JCL jobstreams either directly or via the TSO SUBMIT command and the Micro Focus extension ASUBMIT. You can run these TSO commands with the IKJEFT01 utility.

Files containing MVS JCL jobstreams and cataloged procedures can be created on the PC. Cataloged procedures should be stored as members of partitioned data sets, known as procedure libraries. The procedure libraries are defined to MSS in two different ways:

MSS searches these libraries in the order specified above.

When the job is submitted for running to an enterprise server, the effect depends on the setting of the TYPRUN parameter to the JOB statement as shown below:

TYPRUN=SCAN   The syntax is scanned
TYPRUN=COPYThe job stream is copied to a SYSOUT data set
TYPRUN=HOLDHolding of the job until explicitly released for execution
No TYPRUNThe job is executed immediately, assuming resources are available

MVS JCL Statements

For a full description of MVS JCL statements, please refer to your IBM OS/390 MVS JCL Reference manual.

The following MVS JCL statements are supported:

Statement Description
DD Defines the allocation and disposition of a data set
EXEC Defines a job step, including the program or cataloged procedure to be run
  • IF
  • THEN
  • ELSE
  • ENDIF
Specifies conditional execution of MVS JCL statements
INCLUDE Specifies where pre-defined MVS JCL statements are to be included in the jobstream
JCLLIB Specifies procedure libraries and their search order
JOB Defines a job. MSS supports only one job per jobstream
JOBLIB Specifies private libraries to be searched for programs identified in EXEC statements
PROC Defines the start of an instream MVS JCL procedure
PEND Defines the end of an instream MVS JCL procedure
SET Defines the values to be assigned to symbolic parameters
STEPLIB Specifies private libraries to be searched for programs identified in EXEC statements
OUTPUT Specifies the processing options that the job entry subsystem is to use for printing a SYSOUT data set. MSS supports only the following parameters:
  • BURST
  • CHARS
  • COPIES
  • DEST
  • FLASH
  • FORMS
  • UCS

The following MVS JCL statements are not supported. They are checked only for correct syntax.

Statement Description
COMMAND Issues commands to MVS and JES2
CNTL Defines the start of a set of program control statements
ENDCNTL Defines the end of a set of program control statements
XMIT Transmits records from JES3

VSE JCL Support

The following sections outline the support for VSE JCL.

Restrictions

The following list describes some general restrictions that apply to the support for VSE JCL. For information on the support for individual statements, see the sections VSE JCL and POWER Statements and POWER Statements.

VSE JCL and POWER Statements

The following table shows the level of support available for VSE JCL and POWER statements. For each statement, the "Support Level" column indicates whether that statement is fully processed or only parsed to check for correct syntax. Any VSE JCL and POWER statement not listed in this table is not supported.

StatementParametersSupport Level
// ASSGN SYSxxxParse
 ",Device"Parse
 "[,TEMP|PERM]]"Parse
 "[,VOL-volser]"Parse
// ASSGN SYSxxxProcess
 ",Device"Process
 "[,TEMP|PERM]]"Process
// ASSGN SYSxxxParse
 ",Device"Parse
 "[,mode|ALT]"Parse
 "[,TEMP|PERM]]"Parse
 "[,VOL-volser]"Parse
// DATEmm/dd/yy or dd/mm/yy depending on system settingsParse
//DLBL filenameProcess
 ",’fileid’"Process
 "[,date]"Parse
 "[,code]"Parse
 "[,DSF]"Parse
 "[,BLKSIZE=n]"Process
 "[,CISIZE=n]"Parse
//DLBL filenameProcess
 ",’fileid’"Process
 "[,exp-date]"Parse
 "[,VSAM]"Process
 "[,DSF]"Parse
 "[,BUFSP=n]"Parse
 "[,BUFND=n]"Parse
 [BUFNI=n]Parse
 "[,CAT=catname]"Parse
 "[,DISP=(disp,disp,disp)]"Process
 "[,RECORDS=primary,secondary]"Parse
 "[,CISIZE=n]"Parse
// EXECPROC=procnameProcess
 "[,parms]"Process
// EXEC [PGM=]prognameProcess
 "[,REAL]"Parse
 "[,SIZE=size]"Parse
 "[,GO]"Parse
 "[,PARM=’value’]"Process
// EXTENT[logical-unit]Parse
 ",[volser]"Parse
 ",[type]"Parse
 ",[seqnumber]"Parse
 ",[location]"Parse
 ",[quantity]"Parse
 ",[split-cylinder-track]"Parse
// GOTO[label | $EOJ]Process
// IF{ $RC | $MRC | parameter-name }Process (except for parameter-name, which is parsed only)
 operatorProcess
 valueProcess
 [OR|AND]Process
 { $RC | $MRC | parameter-name }Process
 operatorProcess
 valueProcess
 THENProcess
// JOBjobnameProcess
 [accounting info]Process
// LIBDEFtypeProcess
 "[,SEARCH=(lib1,slib1,…lib15,slib15)]"Process
 "[,CATALOG=lib.slib]"Process
 "[,TEMP|PERM]"Parse
// LIBDEFtypeParse
 "[,SEARCH=(lib1,slib1,…lib15,slib15)]"Parse
 "[,CATALOG=lib.slib]"Parse
 "[,TEMP|PERM]"Parse
// LIBDROPtypeProcess
 "[,definition-type]"Process
 "[,TEMP|PERM]"Parse
// LIBDROPtypeParse
 "[,definition-type]"Parse
 "[,TEMP|PERM]"Parse
// LIBLISTtypeProcess
 "[,partition]"Parse
 "[,SYSxxxx]"Parse
// LISTIOtypeProcess
 "[,partition]"Parse
 "[,outdev]"Parse
// LIBSERVSend requests to tape library serverParse
// LOG and // NOLOG Parse
// MTC operationParse
 "[,device]"Parse
// ON{$RC operator n | $CANCEL |$ABEND }Process
 [{OR|AND} condition]Process
 {$RC operator n | $CANCEL |$ABEND }Process
 [GOTO label | CONTINUE]Process
// OPTIONparmParse
 "[,parm2,…….]"Parse
// PAUSEComment dataParse
// PROC[parm=value]Process
// PWRPRELEASE [operands] !] Process
 PHOLD[operandsParse
// RESETtypeProcess
// SETPARM Parm=valueProcess
 "[,parm=value,………]"Process
// SETPFIX Parse
// STDOPT"Option[,option2…]"Parse
// TLBLfilenameProcess
 ",’fileid’"Process
 "[,date]"Parse
 "[,volser]"Parse
 "[,volseq]"Parse
 "[,fileseq]"Parse
 "[,generation]"Parse
 "[,version]"Parse
// UPSInnnnnnnnProcess
// ZONEEAST/hh/mm or WEST/hh/mmParse
/. label Process
/* Process
./ Process
* Process
/+ Process

POWER Statements

The following table shows the level of support available for POWER statements. For each statement, the "Support Level" column indicates whether that statement is fully processed or only parsed to check for correct syntax. Any POWER statement not listed in this table is not supported.

StatementParametersSupport Level
* $$ JOBJNM=jobnameProcess
 [,DISP=disp]Parse
 [,PRI-pri]Parse
 [,CLASS=class]Parse
 [,NTFY=ntfy-option]Parse
 [,USER='user info'}Parse
 FROM=user_idParse
 LOG=xParse
 BRTNC=xxxParse
 DUETIME=optionsParse
 [,BLDG=x]Parse
 [,DEPT=x]Parse
 [,ROOM=x]Parse
 [,EOJMSG=YES]Parse
 [,PWD=x]Parse
 [,PROGR=x]Parse
 SYSID=(node_id,user_id)Parse
 NETACCT=account_noParse
 XDEST=(node_id,user_id)Parse
 LDEST=(node_id,user_id)Parse
 PDEST=(node_id,user_id)Parse
 SEC=(user_id,password)Parse
* $$ LST[,DISP=disp]Process
 [,PRI-pri]Process
 [,CLASS=class]Process
 [,UNIT=addr]Process
 [,LST=SYSxxx]Process
 [,FNO=xxx]Process
 [,FCB=xxxxxx]Process
 [,JSSEP=x]Process
 [,RBS=nnnn]Process
 RBM=(norbm1,norbm2)Process
 RBC=norbcProcess
 BRTNC=xxxProcess
 PURGE=nnnProcess
 DEST=(node_id,user_id,subsystem)Process
 PRMODE=valueProcess
 REMOTE=remote_idProcess
 CMPACT=nameProcess
 SYSID=nProcess
 DIST=distcodeProcess
 TADDR=(tapeaddr,mode)Process
 USER=user_infoProcess
 PWD=passwordProcess
 BURST=xProcess
 CHARS=tablenameProcess
 COPYG=(groupvalue)Process
 DLFT=xProcess
 FLASH=(overlayname,count)Process
 MODIFY=(copymodname,tablename)Process
 [,PAGEDEF=xxx]Process
 [,FORMDEF=xxxx]Process
* $$ PUN Process
 JNM=jobnameProcess
 CLASS=classProcess
 DISP=disposition | D | TProcess
 PRI=priorityProcess
 PUN=punchaddrProcess
 COPY=nProcess
 FNO=formnoProcess
 RBS=norbsProcess
 RBM=(norbm1,norbm2)Process
 RBC=norbcProcess
 JSEP=(n,option)Process
 BRTNC=YES | NOProcess
 PURGE=NO | nnnnProcess
 DEST=(node_id,user_id,subsystem)Process
 PRMODE==xProcess
 SYSID=nProcess
 DIST=distcodeProcess
 USER=userinfoProcess
 PWD=passwordProcess
* $$ SLI  
 MEM-membernameParse
 ,[.type]Parse
 ,S=lib1.sublib,lib2.sublib2]Parse
 Sublib.Parse
 booknameParse
* $$ SLI  
 ICCF=membername,Process
 LIB=(libnumber,password)Process
* $$ DATAnameParse
* $$ CTL CLASS=classParse
* $$ EOJ Process

VSE JCL Configuration Files

At system start-up, VSE can set a number of values that are available to any job run on the system until shut down. MSS emulates this behavior with the use of a configuraiton file. You can use the configuration file to specify information about the following:

MSS reads the configuration file at the start of each job, so if you run a job then modify the configuration file, running the job again will pick up the modified configuration file.

Structure of a VSE JCL Configuration File

A VSE JCL configuration file is a text file that contains a number of name-value pair entries, with each entry on a separate line. Blank lines or lines beginning with an asterisk (*) are treated as comment lines.

The format of the name-value pair entries are shown below.

For devices:

device_id      id
device_type    type

where:

idis a three-digit code specifying the device address
typeis one of PRINTER, READER, PUNCH, DISK or TAPE.

For logical units:

assgn_lu        lu
assgn_device    device

where:

luis the logical unit to use.
deviceis the device to assign to the logical unit lu.

For standard labels:

dlbl_dd         dd
dlbl_dsn        dsn

where:

ddis the label to use.
dsnis the data set name to assign to the label dd.

Note: There is an addtional name-value pair entry for defining partitions, but specifying it has no effect.

Specifying the Location of the VSE JCL Configuration File

To make a VSE JCL configuration file available to MSS you specify its location using the VSE_STARTUP_CFG environment variable. For example, if you create the configuration file in c:\setup\vseconfg.cfg, you would set VSE_STARTUP_CFG as follows:

SET VSE_STARTUP_CFG=c:\setup\vseconfg.cfg
Example VSE JCL Configuration File
* ==================================================================
* =     VSE SYSTEM START-UP                                        =
* ==================================================================
partition        BG
* ==================================================================
* =     devices                                                    =
* ==================================================================
device_id        02A
device_type      PRINTER 
* 
device_id        02B
device_type      PRINTER 
* 
device_id        02C
device_type      PRINTER 
* 
device_id        02D
device_type      PRINTER 
*
device_id        02E
device_type      PUNCH
*
device_id        02F
device_type      READER 
* 
device_id        42E
device_type      PRINTER 
* 
device_id        43E
device_type      PRINTER 
* 
device_id        44E
device_type      PRINTER 
* 
device_id        45E
device_type      PRINTER 
* 
device_id        46E
device_type      PRINTER 
* 
device_id        020
device_type      DISK 
* ==================================================================
* =     permanent assignments                                      =
* ==================================================================
*
assgn_lu         SYSIPT
assgn_device     02F
*
assgn_lu         SYSLST
assgn_device     02A
*
assgn_lu         SYS001 
assgn_device     02B    
*
assgn_lu         SYS002
assgn_lu_2       SYS001
*
assgn_lu         SYS002
assgn_lu_2       SYSLST
* ==================================================================
* =     standard labels                                            =
* ==================================================================
dlbl_dd          CMAST 
dlbl_dsn         CUSTOMER.MASTER.FILE

Special Characters in JCL Program-names

MSS validates JCL program-names using IBM's list of valid characters. Valid characters in this list are @ # and $, although in some codepages the conversion of these characters causes incompatibilities with the name validation. If you experience problems using any of these special characters in the name of a JCL program, you should report these to Micro Focus.

Character Sets

You can run JCL applications on Enterprise Server either in EBCDIC or ASCII. For more information, see the section Character Sets in the chapter Administering JCL-enabled Enterprise Servers in your Mainframe Subsystem Support Configuration and Administration Guide

Data Sets

Support is provided for most mainframe data set organizations and record formats, as described in the chapter Advanced Data Set Information.

Support is also provided for temporary data sets and in-stream data sets included in the jobstream.

Application Programs

MSS emulates the interface between application programs and MVS in order to allocate data sets and pass parameters. These facilities are described below.

Allocating Data Sets

MVS provides a direct connection between the filename used in the program and the corresponding data set name used in the JCL. For example, for SYSUT1 in a COBOL program:

SELECT INFILE ASSIGN TO UT-S-SYSUT1

connects to

//SYSUT1 DD DSN=DSNAME1,DISP=OLD

and allocates to the program the PC file representing the data set named DSNAME1.

And, for SYSUT2:

SELECT OUTFILE ASSIGN TO UT-S-SYSUT2

connects to

//SYSUT2 DD DSN=DSNAME2,DISP=(NEW,CATLG),...

and allocates to the program a PC file representing the data set named DSNAME2. The file is created and cataloged automatically when the jobstream is run.

Passing Parameters

Parameters specified in the JCL PARM parameter are passed to the program using the same rules as the mainframe. Options specified in the parameters string are separated from any application parameters by a slash (/) character. For example:

PARMS(application-parameters/run-time-options) 

The linkage area used when passing parameters is:

01 PARM.
     03 PARM-LENGTH    PIC 9(4)   COMP.
     03 PARM-DATA      PIC X OCCURS 100.

Printer Exit Modules

reUZE Server JCL support provides the capability to view and browse job and report output using a browser based SDSF-like spool viewer. It does not include any other output or document management software per se, but instead allows you to utilize printer exit modules to integrate its batch printing capabilities with other third-party or external print subsystems.

A printer exit module (often abbreviated as simply printer exit) is a program that you can associate with a batch printer Server Execution Process (SEP). Instead of the SEP writing the output directly to a printer, it passes the output to the specified printer exit module. The printer exit module can then process the output before printing it. You might, for example, write an exit to present figures using graphical elements such as pie charts.

You can specify a unique printer exit module for each batch printer SEP, which means that you can set up specialized output processing for each output class if you wish. Printer exit modules have full access to related OUTPUT statement information contained in the JCL including destination, copies, routing, and form definition.

Writing a Printer Exit

An example of a printer exit module, called sampprnx, is provided in install-dir\Examples\Net Express IDE\sampprnx\sampprnx.cbl. This example simply takes each line and calls the COBOL run-time system's print routines to print it.

Printer exits need not be written in COBOL, but they must handle parameters as illustrated in sampprnx. These parameters are defined and documented in the cascbprn.cpy copybook. COBOL printer exits must be compiled with the non-mainframe dialect, which implies CHARSET(ASCII). They must be also built as an .int, a .gnt, or a .dll.

The linkage section of sampprnx, and the cascbprn.cpy are shown below.

       linkage section.
       copy 'cascbprn.cpy' replacing ==(ws)== by ==lk==.
       01 lk-catalog-rec. 
       copy 'mvscatlg.cpy' replacing ==(TAG)== by ==lk==. 

       01 LK-OUTPUT.
       copy mvsdout  replacing ==()== by ==LK-OUTPUT==.
       01  (ws)-prn-exit-interface.
           *>  What is the format of the structure used to call the
           *>  printer exit.  Will change with major revisions to this
           *>  Data Structure.
           03  (ws)-prn-version                     pic x(4) comp-5.
               88  (ws)-prn-current-version-88      value 1.
           *>  The printer exit is driven once as the batch printer SEP
           *>  starts, once for every print job, and once when the batch
           *>  printer is shut down.
           03  (ws)-prn-command                     pic x    comp-5.
               88  (ws)-prn-exit-init-88            value 0.
               88  (ws)-prn-exit-print-88           value 1.
               88  (ws)-prn-exit-term-88            value 2.
           *>  For the requested print job.  (ws)-prn-exit-print-88
           *>  what is the character set of the data being printed.
           03  (ws)-prn-char                        pic x.
               88  (ws)-prn-char-ascii-88           value 'A'.
               88  (ws)-prn-char-ebcdic-88          value 'E'.
               88  (ws)-prn-char-unknown-88         value '?'.
           *>  This is the file status returned by driving the procedure
           *>  pointers:
           *>              (ws)-prn-sysout-open-pptr
           *>              (ws)-prn-sysout-read-next-pptr
           *>              (ws)-prn-sysout-close-pptr
           *>
           03  (ws)-prn-sysout-status               pic x(2).
               88  (ws)-prn-sysout-status-ok-88     value '00'.
               88  (ws)-prn-sysout-status-eof-88    value '10'.
      ***--------------------------------------------------------------*
           *>  Procedure pointer to drive the open of the sysout dataset
           *>    (ws)-prn-exit-print-88 only
           03  (ws)-prn-sysout-open-pptr            procedure-pointer.
           *>  Procedure pointer to a read of the sysout dataset
           *>    (ws)-prn-exit-print-88 only           
           03  (ws)-prn-sysout-read-next-pptr       procedure-pointer.
           *>  Procedure pointer to drive the close of the sysout dataset
           *>    (ws)-prn-exit-print-88 only           
           03  (ws)-prn-sysout-close-pptr           procedure-pointer.
           *>  Procedure pointer to allow a message to be driven to the 
           *>  console.  (all functions)
           03  (ws)-prn-message-pptr                procedure-pointer.
           *>  Procedure pointer to retrieve the next OUTPUT statement.
           *>  Returns a null (ws)-prn-output-record-ptr if none are 
           *>  available.
           *>    (ws)-prn-exit-print-88 only           
           03  (ws)-prn-output-read-next-pptr       procedure-pointer.
           03                                       procedure-pointer.
           03                                       procedure-pointer.
      ***--------------------------------------------------------------*
           *>  A pointer to the data structure contained in Spool.cpy
           *>    (ws)-prn-exit-print-88 only                 
           03  (ws)-prn-spool-record-ptr            pointer.
           *>  A pointer to the data structure contained in mvscatlg.cpy
           *>    (ws)-prn-exit-print-88 only                      
           03  (ws)-prn-catalog-record-ptr          pointer.
           *>  The printer handle for the printer assigned to the this SEP           
           03  (ws)-prn-printer-handle              pic x(4) comp-5.
           *>  The LRECL of the dataset being printed.
           *>    (ws)-prn-exit-print-88 only                                 
           03  (ws)-prn-lrecl                       pic x(4) comp-5.
           *>  The Maximum LRECL of the dataset being printed.
           *>  Same as ws-prn-lrecl.
           *>    (ws)-prn-exit-print-88 only                                            
           03  (ws)-prn-lrecl-max                   pic x(4) comp-5.
           *>  The Minimum LRECL of the dataset being printed. 
           *>  (Variable Length SYSOUT Datasets.           
           *>    (ws)-prn-exit-print-88 only                                                       
           03  (ws)-prn-lrecl-min                   pic x(4) comp-5.
           03                                       pic x(4).
           *>  The length of the buffer used to return data when driving 
           *>     (ws)-prn-sysout-read-next-pptr
           *>  (How much data was returned)
           *>    (ws)-prn-exit-print-88 only                                                                             
           03  (ws)-prn-buffer-len                  pic x(4) comp-5.
           03  (ws)-prn-buffer.
               05  (ws)-prn-buffer-byte occurs 384 times pic x comp-x.
           *>  The "MVS" Name of the document being printed.
           *>    (ws)-prn-exit-print-88 only                                                                             
           03  (ws)-prn-document.
               05  (ws)-prn-document-len            pic x(2) comp-5.
               05  (ws)-prn-document-title          pic x(128).
           *>  The name of the batch printer driving this print job.
           03  (ws)-prn-printer.
               05  (ws)-prn-printer-name-len        pic x(2) comp-5.
               05  (ws)-prn-printer-name            pic x(128).
           *>  The "physical" filename for the file being printed.
           *>  (eg.  Where does it reside on the disk pack)
           *>    (ws)-prn-exit-print-88 only                                                                  
           03  (ws)-prn-sysout-file-name            pic x(260).
           *>  A pointer to an OUTPUT Statement associated with this 
           *>  SYSOUT Dataset.  Points to the data structure contained
           *>  in IDADOUTP.CPY
           *>    (ws)-prn-exit-print-88 only                                                                  
           03  (ws)-prn-output-record-ptr           pointer.

Accessing OUTPUT Statement Information

The exit can access the OUTPUT statement associated with the dataset through a pointer, (ws)-prn-output-record-ptr, defined in the cascbprn.cpy copybook. This points to a structure defined in the IDADOUTP.cpy copybook. For an illustration of this, please refer to the process-output-statements section of sampprnx.

How the Exit is Called

A printer SEP that has been configured to use the printer exit module will call it as follows:

Using the Exit

You can associate a printer exit module with a batch printer SEP defined as a permanent feature of an Enterprise Server, or with a batch printer SEP created during a session, or both. A printer exit module can also be associated with more than one batch printer SEP.

To create a printer SEP with an exit as a permanent feature, you use the Enterprise Server Administration JES Printer Tab:

  1. In the table of servers on the Home page of Enterprise Server Administration , click Edit to the left of the row for the relevant server.
  2. Navigate to Server > Properties > MSS > JES > Printers.
  3. Click Add and specify the details for the printer, giving the name of the printer exit in the Exit Module field.
  4. Click Add.

The executable file of the printer exit module must be on either the MSS Transaction Path, the JES Program Path or the COBPATH. Alternatively, if the exit is a Windows dll, it must be in a directory specified in the PATH environment variable.

ACCEPT and DISPLAY Handling

You can run jobs on an enterprise server that include ACCEPT FROM CONSOLE and DISPLAY UPON CONSOLE statements. When execution reaches a DISPLAY statement, the display text is displayed in the console log and the job log. When execution reaches an ACCEPT FROM CONSOLE statement, the job pauses and asks for input using pages in ESMAC. For more information see the section Interacting with JCL Jobs in your reUZE Server Mainframe Subsystem Support Configuration and Administration Guide,

ASCII/EBCDIC

By default, reUZE Server uses the ASCII character set. If you wish to use EBCDIC, you can override this default for an individual enterprise server.

To select ASCII or EBCDIC for an enterprise server, you use the environment variable MF_CHARSET. You specify it via ES Admin. On the Edit page for the enterprise server, on the General tab, you make the following entry in the [ES-Environment] section of the Configuration Information field:

MF_CHARSET=E

or:

MF_CHARSET=A

You can enter these as:

MF_CHARSET=EBCDIC

or:

MF_CHARSET=ASCII

for clarity if you wish. However, only the first character (E or A) is significant.

Your programs should be compiled with the CHARSET compiler directive that matches the character set of the enterprise server. The system will handle user program data appropriately for programs invoked as a result of an EXEC PGM= JCL statement, the RUN subcommand of the DSN command, or the TSO CALL command.

You should not mix ASCII and EBCDIC programs. If you do so, you are responsible for any conversion required. The compiler directive is:

CHARSET(EBCDIC)

or:

CHARSET(ASCII)

The character set attribute of all datasets is set to the current system character set. Based on their file’s character set, LSEQ datasets and SYSIN in-stream datasets are automatically converted to suit the program.

Enabling JOBLIB DD and STEPLIB DD Processing

These statements specify directories that will be searched for the programs named in EXEC statements.

To enable JOBLIB/STEPLIB processing do the following:

  1. Create a dynamic PDS that represents each of the PC or UNIX subdirectories where your .gnt and .int files will reside. We recommend that you segregate .gnt and .int files into different subdirectories.
  2. Execute your JCL using JOBLIB and/or STEPLIB statements that reference the subdirectories you created in STEP1. The search order will be STEPLIB, JOBLIB, then the path specified in the JES Program Path field on the JCL > General tab in Enterprise Server.

If the partitioned data set referenced in a particular STEPLIB or JOBLIB statement exists as a catalog entry, the DD is allocated. Where there are multiple partitioned data sets referenced in a STEPLIB or JOBLIB concatenation, only those data sets that exist are mapped as part of the JOBLIB or STEPLIB concatenation.

Any job that has a STEPLIB and/or JOBLIB statement continues to run unmodified.


Copyright © 2008 Micro Focus (IP) Ltd. All rights reserved.