The fix is shipped as file IBM.HHOP750.UK43840
Steps required to install the fix:
A sequential data set must be allocated on the z/OS system to receive the fix that you will upload from your workstation. You can do this by submitting the job below. Add a job card and modify the parameters to meet your site's requirements before submitting.
//ALLOC EXEC PGM=IEFBR14 //* //UK43840 DD DSN=hlq.IBM.HHOP750.UK43840, // DISP=(NEW,CATLG,DELETE), // DSORG=PS, // RECFM=FB, // LRECL=80, // UNIT=SYSALLDA, //* VOL=SER=volser, //* BLKSIZE=6160, // SPACE=(TRK,(50,5)) //*
Upload the file in binary format from your workstation to the z/OS data set. On a Windows system, you can use FTP from a command prompt to upload the file. In the sample dialog shown below, commands or other information entered by the user are in bold, and the following values are assumed:
| User enters: | Values |
|---|---|
| mvsaddr | TC P/IP address of the z/OS system |
| tsouid | Your TSO user ID |
| tsopw | Your TSO password |
| d: | Your drive containing the fix files |
| hlq | High-level qualifier that you used for the data set that you allocated in the job above |
C:\>ftp mvsaddr Connected to mvsaddr. 220-FTPD1 IBM FTP CS %version% at mvsaddr, %time% on %date%. 220 Connection will close if idle for more than 60 minutes. User (mvsaddr:(none)): tsouid 331 Send password please. Password: tsopw 230 tsouid is logged on. Working directory is "tsouid.". ftp> cd .. 250 "" is the working directory name prefix. ftp> cd hlq 250 "hlq." is the working directory name prefix. ftp> binary 200 Representation type is Image ftp> put d:\IBM.HHOP750.UK43840 200 Port request OK. 125 Storing data set hlq.IBM.HHOP750.UK43840 250 Transfer completed successfully ftp: 2769040 bytes sent in 0.23Seconds ftp> quit 221 Quit command received. Goodbye.
++ HOLD(UK43840) SYS FMID(HHOP750) REASON(DOC) DATE(09037)
COMMENT
(****************************************************************
* Affected function: ISPF *
****************************************************************
* Description: important ISPF maintenance *
****************************************************************
* Timing: n/a *
****************************************************************
* Part: n/a *
****************************************************************
The fix for ISPF APAR OA27174 is important for RDz, as it
resolves a problem that can abend the RSE server.
This APAR pre-req's ISPF APAR OA27190.
These ISPF APAR's are not listed in the current program
directory for RDz (GI11-8298-01).
APAR OA27174 - ABEND U4093 OR U4087 RUNNING TSO COMMANDS VIA THE
ISPF CLIENT GATEWAY
PTF
z/OS 1.8 UA45242
z/OS 1.9 UA45332
z/OS 1.10 UA45333
APAR OA27190 - IMW0229E MESSAGE OCCURS WHEN SEARCHING FOR
IVP.HTML/CGI PROGRAMS.
PTF
z/OS 1.8 UA45030
z/OS 1.9 UA45031
z/OS 1.10 UA45032
****************************************************************
* Affected function: File Manager Integration (FMI) *
****************************************************************
* Description: FMIEXT.properties update *
****************************************************************
* Timing: post-APPLY *
****************************************************************
* Part: /usr/lpp/rdz/samples/FMIEXT.properties *
****************************************************************
The sample FMIEXT.properties properties file has been updated
to change the default port numbers used.
Customers who use both the FM listener and FM batch method to
access IBM File Manager can run into a port conflict using the
original default port numbers.
1960: default FM listener port
1961: default FM batch start port
).
++ HOLD(UK43840) SYS FMID(HHOP750) REASON(ACTION) DATE(09037)
COMMENT
(****************************************************************
* Affected function: JES Job Monitor *
****************************************************************
* Description: embedded LE options *
****************************************************************
* Timing: post-APPLY *
****************************************************************
* Part: SFEKSAMP(FEJJJCL) *
****************************************************************
This maintenance adds embedded LE options to the JES Job
Monitor load module;
POSIX(ON),ALL31(ON),STACK(,,ANY),THREADSTACK(,,,ANY)
If need be, these options can be changed by providing alternate
values in the startup JCL, as shown in the updated sample JCL,
FEK.SFEKSAMP(FEJJJCL).
//*
//* JES JOB MONITOR
//*
//JMON PROC PRM=, * PRM='-TV' TO START TRACING
// LEPRM='RPTOPTS(ON)',
// HLQ=FEK,
// CFG=FEK.#CUST.PARMLIB(FEJJCNFG)
//*
//JMON EXEC PGM=FEJJMON,REGION=0M,TIME=NOLIMIT,
// PARM=('&LEPRM,ENVAR("_CEE_ENVFILE=DD:ENVIRON")/&PRM')
//STEPLIB DD DISP=SHR,DSN=&HLQ..SFEKAUTH
//ENVIRON DD DISP=SHR,DSN=&CFG
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
// PEND
//*
****************************************************************
* Affected function: lock daemon *
****************************************************************
* Description: new started task, LOCKD *
****************************************************************
* Timing: post-APPLY *
****************************************************************
* Part: new SFEKSAMP(FEKSET01) *
* new #CUST.PROCLIB(LOCKD) *
* update /etc/rdz/rsed.envvars *
****************************************************************
By switching to a single server setup, where multiple users are
assigned to a single thread pool server, RSE lost the ability to
track who owns a lock on a dataset or member. System commands
stop at address space level, which is the thread pool server.
To address this problem, a new server has been created, the lock
daemon. It can track all dataset/member locks done by RSE users,
as well as locks done by other products, like ISPF.
Note that the RDz client will display the lock information where
needed if the client is at a matching service level.
(1) Setup
(1a) Customize and submit FEK.SFEKSAMP(FEKSET01)
This job will create a sample lock daemon started task JCL in
FEK.#CUST.PROCLIB(LOCKD) for customization purposes. The
original version is available as FEK.SFEKSAMP(FEKLOCKD).
//*
//* RSE LOCK DAEMON
//*
//LOCKD PROC HOME='/usr/lpp/rdz',
// CNFG='/etc/rdz',
// LOG=1
//*
//LOCKD EXEC PGM=BPXBATSL,REGION=0M,TIME=NOLIMIT,
// PARM='PGM &HOME./bin/lockd.sh &CNFG &LOG'
//STDOUT DD SYSOUT=*
//STDERR DD SYSOUT=*
// PEND
//*
This job also updates the active /etc/rsed.envvars and adds
the following lock daemon related statements to the end of the
file:
_RSE_LOCKD_PORT=4036
_RSE_JAVAOPTS="$_RSE_JAVAOPTS -Dlock.daemon.port=$_RSE_LOCKD_P
ORT"
_RSE_JAVAOPTS="$_RSE_JAVAOPTS -Dlock.daemon.cleanup.interval=1
440"
_RSE_LOCKD_CLASS=com.ibm.ftt.rse.mvs.server.miners.MVSLockDaem
on
_RSE_LOCKD_PORT Specifies the port used by the lock daemon.
The default port is 4036. Communication on this port is
confined to the host.
The remaining variables should not be modified.
(1b) Customize FEK.#CUST.PROCLIB(LOCKD) and copy to SYS1.PROCLIB
(1c) Add started task startup to SYS1.PARMLIB(COMMNDxx)
The lock daemon must be started before users log on to the RSE
daemon so it can track the lock requests by these users.
Therefore it is advised to start the lock daemon at system
startup.
(1d) Security settings
The lock daemon does not require any special security permits.
For restricted environments, the server needs:
- read/execute permission to Java libraries
- read/execute permission to /usr/lpp/rdz/*
- read permission to /etc/rdz/*
- read permission to any data set in the rsed.envvars STEPLIB
concatenation
- read permission to the PROGRAM class profile protecting
SYS1.LINKLIB (RDz documentation uses profile **)
When used as started task, the server must also be defined to
your security software.
LISTUSER STCLOCK OMVS
ADDUSER STCLOCK NOPASSWORD DFLTGRP(STCGROUP) -
OMVS(UID(9) HOME(/tmp) PROGRAM(/bin/sh))
NAME('RDZ LOCK DAEMON')
DATA('RATIONAL DEVELOPER FOR SYSTEM Z')
RLIST STARTED LOCKD.* ALL STDATA
RDEFINE STARTED LOCKD.* -
STDATA(USER(STCLOCK) GROUP(STCGROUP) TRUSTED(NO))
DATA('RDZ LOCK DAEMON')
SETROPTS RACLIST(STARTED) REFRESH
(2) Usage
(2a) How it works
RSE server registers a newly connected user with the lock
daemon. The registration info contains the Address Space
Identifier (which is the ASID of the thread pool server), the
Task Control Block (TCB) ID (user specific) and the user ID.
Note that registration is done at connect time only, so all
RSE users active before the lock daemon was (re)started will not
be registered.
When the lock daemon receives a dataset query, it scans the
system's Global Resource Serialization (GRS) queues. If the ASID
and TCB match that of a registered user, the user ID is returned
as lock owner. Otherwise the jobname/user ID related to the ASID
is returned as lock owner.
A console message with the registration info is displayed if the
registration fails, so that an operator can manually match the
ASID and TCB values with those reported by the system as lock
owner; D GRS,RES=(*,dataset[(member)]).
Note: Successful registrations are also listed in DD STDOUT of
the server if log_level is set to 2. This is useful to
do the manual mapping for successful registrations that
were removed after a restart of the lock daemon.
(2b) Operator commands
>>-+-START -+--procname--+---------------------------+--------><
+-S -----+ | +-'usr/lpp/rdz'--+ |
+-,HOME=-+-'install_path'-+-|
| |
| +-'etc/rdz'-----+ |
+-,CNFG=-+-'config_path'-+--|
| |
| +-1---------+ |
+-,LOG=-+-log_level-+-------|
| |
+-<-------------------------+
procname
The name of the member in a procedure library that is used to
start the server. The default name used during the host
configuration is LOCKD.
HOME='install_path'
Path prefix and the mandatory /usr/lpp/rdz used to install
Developer for System z. The default is '/usr/lpp/rdz'. Note
that the z/OS UNIX path is case sensitive and that it must be
enclosed in single quotes (') to preserve lowercase characters.
CNFG='config_path'
Absolute location of the configuration files stored in z/OS
UNIX. The default is '/etc/rdz'. Note that the z/OS UNIX path
is case sensitive and that it must be enclosed in single quotes
(') to preserve lowercase characters.
LOG=log_level
The detail level of output in DD STDOUT.
0 : Log error messages only.
1 : Log error and warning messages (default).
2 : Log error, warning and informational messages.
>>-+-MODIFY -+--procname--------------------------------------->
+-F ------+
>--,APPL=-+-QUERY -+--+-dataset---------+---------------------><
+-Q -----+ +-dataset(member)-+
procname
The name of the member in a procedure library that is used to
start the server. The default name used during the host
configuration is LOCKD.
QUERY dataset[(member)]
Query the lock status of the listed dataset/member. The server
will reply with one of the following messages:
BPXM023I (stclock) dataset[(member)] NOT LOCKED
BPXM023I (stclock) dataset[(member)] LOCKED BY userid
Notes:
* The server will also report locks held by other products, like
ISPF.
* Locks held by RSE clients started before the lock daemon will
result in the thread pool server address space (RSEDx) being
reported as lock owner.
>>-+-STOP -+--procname----------------------------------------><
+-P ----+
procname
The name of the member in a procedure library that is used to
start the server. The default name used during the host
configuration is LOCKD.
(2c) Console messages
The following list of new console messages can be generated by
the lock daemon or RSE server:
FEK501I = Lock daemon started, port={0}, cleanup interval={1},
log level={2}
FEK502I = Lock daemon terminating
FEK510E = Lock daemon, missing port
FEK511E = Lock daemon, wrong port, port={0}
FEK512E = Lock daemon, socket error, port={0}
FEK513W = Lock daemon, registration failed, ASID={0}, TCB={1},
USER={2}
FEK514W = Lock daemon, wrong log level, log level={0}
BPXM023I (stclock) dataset[(member)] NOT LOCKED
BPXM023I (stclock) dataset[(member)] LOCKED BY userid
BPXM023I (stclock) command, WRONG COMMAND
BPXM023I (stclock) command, MISSING ARGUMENT
BPXM023I (stclock) argument, WRONG ARGUMENT
****************************************************************
* Affected function: RSE console messages *
****************************************************************
* Description: new console message *
****************************************************************
* Timing: n/a *
****************************************************************
* Part: n/a *
****************************************************************
This service introduces a new RSE console message.
FEK209I = No Process to be displayed
The message can occur after issuing the DISPLAY PROCESS
operator command.
****************************************************************
* Affected function: JES Job Monitor *
****************************************************************
* Description: add APPLID support *
****************************************************************
* Timing: post-APPLY *
****************************************************************
* Part: FEJJCNFG *
****************************************************************
This maintenance introduces a new control directive for JES Job
Monitor, APPLID.
APPLID = application_id (default is FEKAPPL)
APPLID specifies the application identifier used for
identifying JES Job Monitor to your security software.
It is advised to have the APPLID of JES Job Monitor (default
FEKAPPL) match the APPLID of your RSE daemon. RSE's APPLID is
also FEKAPPL by default, but can be changed to OMVSAPPL by
uncommenting the related variable in rsed.envvars.
When the APPLID of RSE daemon and JES Job Monitor match, and
the user ID assigned to JES Job Monitor is allowed by your
security software, both servers have access to the same
PassTicket key in your security software. This allows the client
to log on using a PassTicket created by a third-party generator
that has access to the same key.
Note that with the current RD/z service level, the application
identifier must be OMVSAPPL for both RSE and JES Job Monitor
to allow client log on using a PassTicket with the same key as
the server.
If used, this directive must be added to the FEJJCNFG
configuration file, by default located in
FEK.#CUST.PARMLIB(FEJJCNFG).
****************************************************************
* Affected function: JES Job Monitor *
****************************************************************
* Description: add CONSOLE_NAME support *
****************************************************************
* Timing: post-APPLY *
****************************************************************
* Part: FEJJCNFG *
****************************************************************
This maintenance introduces new control directives for JES Job
Monitor, CONSOLE_NAME and GEN_CONSOLE_NAME.
CONSOLE_NAME = {consolename | &SYSUID} (default is JMON)
GEN_CONSOLE_NAME = {ON | OFF} (default is OFF)
CONSOLE_NAME specifies the name of the EMCS console to be used
for issuing generated commands against jobs (CANCEL, PURGE,
HOLD, and RELEASE).
CONSOLE_NAME must be either a console name consisting of 2 to 8
alphanumeric characters, or '&SYSUID' (without quotes).
If a console name is specified, a single console by that name
is used for all users.
If &SYSUID is specified, the userid is used as the console name.
Thus a different console is used for each user. If the console
by that name happens to be in use (which may be the case if, for
example, the user is using the SDSF ULOG, or is using a TSO
console), then if GEN_CONSOLE_NAME=ON an alternative console
name is generated by appending a single numeric digit to the
userid. The digits 0 through 9 are attempted. If no available
console is found, then the command fails.
If GEN_CONSOLE_NAME=OFF and the userid is not available as
the console name, the command fails.
No matter which console name is used, the user ID of the client
requesting the command is used as the LU of the console, leaving
a trace in syslog messages IEA630I and IEA631.
IEA630I OPERATOR console NOW ACTIVE, SYSTEM=sysname , LU=id
IEA631I OPERATOR console NOW INACTIVE, SYSTEM=sysname , LU=id
If no value is specified for CONSOLE_NAME, the default is JMON.
Thus existing installations will not be affected unless
CONSOLE_NAME is introduced to the configuration file.
If used, these directives must be added to the FEJJCNFG
configuration file, by default located in
FEK.#CUST.PARMLIB(FEJJCNFG).
).
SMP/E RECEIVE and APPLY the fix.