Consultor Eletrônico



Kbase 13179: Creating Special AS/400 Subsystem for Progress/400 Dsrv
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   10/15/2008
Status: Unverified

GOAL:

Guidelines to consider when configuring Progress/400 within it's own subsystem

FIX:

It is possible to configure an AS/400 to have the PROGRESS/400 Server Manager (PROSTRLFP) and the PROSERVER jobs running in their own subsystem. If faced with the prospect of doing this (either for tuning or a customer requirement) here are few guidelines to consider.

1. Create a new subsystem description (e.g. PROGRESS):

CRTSBSD SBSD(MYLIB/PROGRESS) ....

You'll have to consult with the local system administrator
for the appropriate values for the storage pools.

2. Create a new job queue (e.g. PROJOBQ)

CRTJOBQ JOBQ(MYLIB/PROJOBQ)

Use his job queue name when starting the Server Manager
(PROSTRLFP), "Server Manager submit queue".

3. Associate the job queue with the PROGRESS subsystem by adding a job queue entry:

ASDJOBQE SBSD(MYLIB/PROGRESS) JOBQ(MYLIB/PROJOBQ) MAXACT(*NOMAX)

4. Add the following Communication Entry:

ADDCMNE SBSD(MYLIB/PROGRESS) DEV(PROSERVER)

The device PROSERVER refers to the *INTRA device type. It is the device used my the Server Monitor to start and communicate the PROSERVER Job (It gets created the first time PROSTRLFP is run, so if you have NOT run PROSTRLFP prior to attempting this configuration, do so in another subsystem, then terminate it using the PROMNGLFP *END command). The system uses the communication entries to determine which subsystem a job gets started in. The algorithm used by the system is "first fit" by order of subsystem startup. This means that any other subsystem started before the PROGRESS subsystem which has a communications entry that "fits" the *INTRA device (e.g. DEV(*ALL), MODE(*ANY) ) will get the PROSERVER Job.

Failure to define the *INTRA device Communications Entry could result in a QSYSOPR message of:
"Program Start Request Rejected, reason code 401" when attempting a client connect.

This error indicates that the no active subsystems were configured to support the *INTRA device AND no subsystems were defined with the catch all communications entry device of *ALL.

5. Add the following Routing Entries to the subsystem:

ADDRTGE SBSD(MYLIB/PROGRESS) SEQNBR(100)
CMPVAL(PGMEVOKE 29) PGM(*RTGDTA)

ADDRTGE SBSD(MYLIB/PROGRESS) SEQNBR(9999)
CMPVAL(*ANY) PGM(QSYS/QCMD)

The first Routing Entry 'PGMEVOKE' allows the subsystem to support evoked jobs, which PROSERVER is. Failure to define this routing entry will result in a QSYSOPR message of:
"Program Start Request Rejected, reason code 801" when attempting a client connect.

The second Routing Entry '*ANY' allows the Jobs running in the subsystem to issue system commands. Failure to defined this routing entry will cause the Server Manager (PROSTRLFP) to fail. The job log of the failed Server Manager will show a CPC1117 message "Routing Data does not match Routing Entry".

It is necessary to associate a Class to a routing entry on the ADDRTGE command. You can either create a new class, e.g. CRTCLS CLS(MYLIB/PROGRESS) or use an existing one (QBATCH, QINTER, etc.). The default is the name of the subsystem where the routing entry is defined. Creating a new class is also a way to do subsystem tuning, you can increase the run priority of the jobs using this class.

Interactive run priority is normally a value of 20 and batch jobs run at priority 50. PROGRESS does provide the PRODFNRTG command to setup specific routing entries for the SNA servers, LFP monitor and LFP servers (batch and interactive). Using this command will automatically setup the correct routing entries and associate them with an appropriate job class.

6. Once all the subsystem definitions are complete, start the subsystem with the command STRSBS SBSD(MYLIB/PROGRESS).

7. Start the Server Manager, PROSTRLFP in the job queue associated with the PROGRESS subsystem (e.g. PROJOBQ).

8. Do a 4GL connect from a client. Use the WRKACTJOB command to view the list of active subsystems and jobs. You should see the PROSERVER Job running in the PROGRESS su.bsystem.

If the PROSERVER job is NOT in the PROGRESS subsystem but in another subsystem, say QCMN, this indicates that there was a communication entry in that subsystem that satisfied the PROSERVER *INTRA device. Most likely it is an entry that is a
catch all, DEV(*ALL), MODE(*ANY). To get the PROSERVER Jobs to route to the PROGRESS subsystem it maybe necessary to re-order the startup of subsystems. Remember, the subsystem chosen for a job is based on "first-fit" (not best-fit)

Communication Entries AND the order in which the subsystems were started. Therefore a subsystem with a Communications Device Entry of DEV(*ALL), MODE(*ANY) will alway be chosen if it is started (STRSBS) before the PROGRESS subsystem. The
most common culprit of this is the subsystem QCMN. It is a simply matter to make sure that the PROGRESS subsystem is started before QCMN (or whatever subsystem(s) have DEV(*ALL), and MODE(*ANY) ). You can modify the IPL startup program (SYSVAL *QSTRUPPGM) to start the PROGRESS subsystem ahead of ones, such as QCMN..