Calling FOCUS Under TSO

In this section:

You can allocate the file names required by FOCUS:

A common practice is to allocate all commonly used files in the logon procedure, and the remainder from a TSO CLIST.

Batch Operation

You can process FOCUS jobs in z/OS batch mode. The z/OS operator can initiate the jobs directly, or you can enter them in z/OS using the TSO SUBMIT or DYNAM SUBMIT command (see DYNAM Command for DYNAM commands).

Note: When you design FOCUS applications for execution both online and in batch, it is important to remember that in z/OS batch mode, FOCUS ignores embedded TSO commands in FOCUS procedures. You must, therefore, supply DD statements to replace any TSO ALLOCATE commands or use the DYNAM ALLOCATE command.

Example: Processing FOCUS Jobs in z/OS Batch Mode

The following is a sample job stream of z/OS batch JCL:

//FOCUS EXEC PGM=FOCUS
//STEPLIB  DD DSN=FOCUS.FOCLIB.LOAD,DISP=SHR
//ERRORS   DD DSN=FOCUS.ERRORS.DATA,DISP=SHR
//SYSPRINT DD SYSOUT=A
//OFFLINE  DD SYSOUT=A
//MASTER   DD DSN=MASTER.DATA,DISP=SHR
//FOCEXEC  DD DSN=FOCEXEC.DATA,DISP=SHR
//* FOCUS FILE CAR
//CAR      DD DSN=CAR.FOCUS,DISP=SHR
//SYSIN    DD *
 .
 . FOCUS commands
 .
FIN
//*

Each time you enter FOCUS, it automatically opens and executes the procedure PROFILE if it is present before opening SYSIN. If you operate FOCUS in batch mode, you should include a FIN statement in the PROFILE or in the SYSIN jobstream. Otherwise, FOCUS will terminate with completion code 8.

Note that outside of a request or FOCEXEC, you can insert a comment line in SYSIN by starting the line with an asterisk (*).

To use an alternative PROFILE member in place of the usual one, specify the following values for the PARM parameter:

//FOCUS EXEC PGM=FOCUS,PARM='NOPROF'

or

//FOCUS EXEC PGM=FOCUS,PARM='PROFILE member'

where:

NOPROF

Is an optional parameter. Enables you to bypass or ignore your usual PROFILE member of the FOCEXEC data set when you enter your FOCUS session.

member

Is an optional parameter. Names an alternative PROFILE to execute instead of the usual PROFILE member.

Direct Entry

The FOCUS load module that controls the FOCUS environment resides in the partitioned data set FOCLIB.LOAD, member name FOCUS. The data set name may vary due to local data set naming conventions.

You can enter FOCUS either by having a logon procedure in which the load library is allocated to DDNAME STEPLIB, by issuing the CALL command directly, or through a CLIST.

Example: Entering FOCUS

A logon procedure is a convenient way of allocating frequently used data sets.

The following is a sample TSO logon procedure:

//TSOLOGON EXEC PGM=IKJEFT01,DYNAMNBR=50
//*
//STEPLIB DD DSN=FOCUS.FOCLIB.LOAD,DISP=SHR
//ERRORS  DD DSN=FOCUS.ERRORS.DATA,DISP=SHR
//OFFLINE DD SYSOUT=A
//* USUAL TSO LOGON DATASETS FOLLOW

If you have a logon procedure with FOCLIB.LOAD allocated to DDNAME STEPLIB, to invoke FOCUS, simply issue:

FOCUS

This places you in the FOCUS environment.

To use an alternative PROFILE member in place of the usual one, specify:

FOCUS {NOPROF|'PROFILE member'}

where:

NOPROF

Is an optional parameter. Enables you to bypass or ignore your usual PROFILE member of the FOCEXEC data set when you enter your FOCUS session.

member

Is an optional parameter. Names an alternative PROFILE to execute instead of the usual PROFILE member.

You can also enter the CALL command directly:

CALL 'FOCUS.FOCLIB.LOAD(FOCUS)'

Example: Using CLISTs

The following is a typical FOCUS CLIST procedure that allocates files:

ALLOC F(MASTER)   DA(MASTER.DATA)
ALLOC F(FOCEXEC)  DA(FOCEXEC.DATA)
ALLOC F(CAR)      DA(CAR.FOCUS) SHR
ALLOC F(HOLD1)    SP(5,5) TRACKS
CALL 'FOCUS.FOCLIB.LOAD(FOCUS)'

Note: SYSIN and SYSPRINT do not have to be allocated and will default to the terminal.

The following is an example of a more comprehensive CLIST used in a typical FOCUS production environment:

PROC  0
/*                                                              */
CONTROL NOMSG
FREE  F(MASTER CCARS CAR FOCEXEC ERRORS USERLIB FMU)
FREE  F(SYSIN SYSPRINT OFFLINE)
FREE  F(ISHFALOC PROFILE)
FREE  F(HOLD HOLDMAST SAVE REBUILD FOCSML FOCUS FOCSTACK)
FREE  F(FOCSORT HOLDACC TRF)
/*                                                              */
CONTROL MSG
/*                                                              */
ALLOC F(PROFILE)   DA('user.FOCEXEC.DATA(PROFILE)')       SHR REUS
ALLOC F(FOCEXEC)   DA('user.FOCEXEC.DATA'              -
                      'prefix.FOCEXEC.DATA')              SHR REUS
ALLOC F(MASTER)    DA('user.MASTER.DATA'               -
                      'prefix.MASTER.DATA')               SHR REUS
/*                                                              */
ALLOC F(FMU)       DA('prefix.FMU.DATA')                  SHR REUS
ALLOC F(TRF)       DA('user.TRF.DATA')                    SHR REUS
/*                                                              */
ALLOC F(CCARS)     DA('prefix.MASTER.DATA(CCARS)')        SHR REUS
ALLOC F(CAR)       DA('user.CAR.FOCUS')                   SHR REUS
/*                                                              */
ALLOC F(ERRORS)    DA('prefix.ERRORS.DATA')               SHR REUS
ALLOC F(USERLIB)   DA('prefix.FUSELIB.LOAD')              SHR REUS
/*                                                              */
ALLOC F(OFFLINE)   SYSOUT(A)
ALLOC F(SYSIN)     DA(*)
ALLOC F(SYSPRINT)  DA(*)
/*                                                              */
CALL 'prefix.FOCLIB.LOAD(FOCUS)'
/*                                                              */
CONTROL NOMSG
FREE  F(MASTER CCARS CAR FOCEXEC ERRORS USERLIB FMU)
FREE  F(SYSIN SYSPRINT OFFLINE)
FREE  F(ISHFALOC PROFILE)
FREE  F(HOLD HOLDMAST SAVE REBUILD FOCSML FOCUS FOCSTACK)
FREE  F(FOCSORT HOLDACC TRF)

where:

user

Is the high-level qualifier for a user's version of a data set.

prefix

Is the high-level qualifier for the FOCUS production data sets.

Note: The allocation for DDNAME CCARS is needed for running the CARTEST FOCEXEC.


Information Builders