## Installation instructions for fix UK43840 for IBM Rational Developer for System z v75 (FMID HHOP750)

The fix is shipped as file IBM.HHOP750.UK43840

### Overview of the installation steps

Steps required to install the fix:

1. Allocate host data sets for the fix.
2. Upload the fix from your workstation to z/OS.
3. SMP/E hold information for the fix.
4. Perform SMP/E RECEIVE and APPLY for the fix.

### Allocate host data sets for 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 fix from your workstation to z/OS

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.

### SMP/E hold information for the fix

    ++ 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).
        ).

### Perform SMP/E RECEIVE and APPLY for the fix

SMP/E RECEIVE and APPLY the fix.