Installing Adabas Components for EntireX under z/OS

This document describes the steps necessary for installing the Adabas components for EntireX. These steps are necessary if you do not already have Adabas installed at your site and you want to use SVC communication.


Initializing the Adabas Communication Environment

This section describes the installation of the Adabas router (ADASVC). The router uses cross-memory services for communication between the Adabas nucleus and the Adabas users.

The Adabas z/OS cross-memory communications service comprises two modules:

  • the Adabas router (ADASVC); and

  • the Adabas subsystem initialization routine (ADASIR).

ADASIR, executed either during IPL or by the Adabas SVC installation program (ADASIP), initializes the router's operating environment, particularly the ID table.

ADASVC installation can be either temporary or permanent:

  • The Adabas SVC can be installed temporarily by executing ADASIP. The SVC is then available only until the next IPL.

    Note:
    Once installed, the Adabas SVC can be reinstalled temporarily using the ADASIP REPLACE option. However, no Adabas nucleus can be active during this procedure.

    Note:
    It is necessary to cycle CICS after executing ADASIP to initialize the SVC.

  • The Adabas SVC is installed permanently using regular operating systems procedures. The SVC then requires an IPL to become active.

Typically, the Adabas SVC is first installed temporarily using ADASIP. This makes Adabas available immediately without the need to wait for an IPL. Meanwhile, preparations are usually made for permanent installation at the next IPL.

SVC Compatibility Issues Between Adabas Releases

Adabas 8 includes a new Adabas SVC. This SVC is fully backward compatible. In other words, you can use the new Adabas 8 SVC with Adabas 7 (or earlier) databases.

However, you cannot use the Adabas SVC from previous Adabas releases with Adabas 8 databases. If you attempt to do this, the Adabas 8 database will not initialize successfully.

The Adabas 8 SVC includes performance improvements and improved error recovery routines. Note that the new SVC uses more efficient operating system interfaces, in particular when posting the user at command completion. This shifts work from SRB-mode routines to TCB-mode routines and also between the user's program and the Adabas nucleus. Take this into account when analyzing Adabas 8 SVC performance. With the new SVC, SRB-mode overhead is largely eliminated and TCB-mode overhead is somewhat increased, but the net result is an overall improvement in SVC performance.

APF Authorization Requirement

The Adabas 8 SVC requires that the Adabas nucleus, as well as other MPM servers (such as Entire Net-Work and the Natural Global Buffer Pool), be APF-authorized. This APF authorization prevents unauthorized use of the ADASVC 0-call. Software AG recommends strongly that you run APF-authorized because of the security risks you can incur if you do not. However, upon request, Software AG does have a zap (AY811031) you can apply that eliminates this requirement.

Note:
Some add-on products require APF authorization to use restricted z/OS services. APF authorization is still required in these cases.

Allocating an SVC Table Entry

Regardless of the installation procedure selected, an available SVC table entry must be allocated to the Adabas router (ADASVC). SVC table entries are defined in the member IEASVCxx of SYS1.PARMLIB.

The SVC table entry in the operating system for an ADASVC must contain the following information:

Offset Label Description
0 SVCEP SVC entry point address.
4 SVCATTR1

Must indicate type 2 SVC (flag bit SVCTP2 set-X'80') or type 3 or 4 SVC (flag bits SVCTP34 set-X'C0'): ADASIR changes a type 1, 5, or 6 SVC to type 2.

May indicate that APF-authorization is needed for this SVC (flag bit SVCAPF set-X'08'): if set, all targets and users must be APF-authorized.

6 SVCLOCKS Must contain all zeros. ADASIR sets SVCLOCKS to zeros.

Subsystem Name Requirements

The subsystem name contained in the four-character field SUBSYS at ADASVC offset X'28' (the default is "ADAB") must be the same as that specified in the IEFSSNxx member of SYS1.PARMLIB. If the name is not the same, ADASIR ends with an ADAS12 message and condition code 2, and Adabas is not usable.

Page-Fixing the Adabas SVC

If the Adabas SVC is to reside in the fixed LPA, add an entry to an IEAFIXxx member of SYS1.PARMLIB.

Initializing the Adabas SVC

The Adabas SVC should be initialized with ADASIP/ADASIR in order to guarantee full functioning of all Adabas nuclei.

Router Installation Overview

Temporary Router Installation (SMA Job Number I011)

Once you have restored the Adabas installation medium, use a local editor to customize the job JCLLINK (used to link ADASIR, ADASIP, and ADASVC) as follows:

Start of instruction setTo perform temporary router installation

  1. Link ADASIP into an APF-authorized library as an authorized module.

  2. Link ADASIR and ADASVC into APF-authorized libraries:

    • Place ADASVC in an APF-authorized library in order to run ADASIP.

    • Place ADASIR in an APF-authorized library concatenated to SYS1.LINKLIB defined in source member LNKLSTxx located in SYS1.PARMLIB.

  3. Execute ADASIP to install the SVC.

    Customize and run the job ADASIP to dynamically add the Adabas SVC without an IPL.

Permanent Router Installation (SMA Job Number I010)

Start of instruction setTo perform permanent router installation

  1. Link the Adabas SVC (ADASVC) which has been renamed according to the SVC routine renaming rules (for example, type 3 SVCs must have names of IGC00nnn, where nnn is a signed decimal SVC number) into SYS1.LPALIB as a permanent step for ADASIR.

  2. Link ADASIR into SYS1.LINKLIB or into an APF-authorized library concatenated to SYS1.LINKLIB with the LNKLSTxx member of SYS1.PARMLIB.

    Note:
    ADASIR is not reentrant, and therefore should not be linked into SYS1.LPALIB.

  3. Customize and run the job JCLUPDT to add a new entry with the correct format.

  4. IPL z/OS with the CLPA option to install and initialize the Adabas communication environment.

Using ADASIP for Temporary Installations

ADASIP Functions

ADASIP performs the following functions:

  • acquires memory in the specified CSA subpool for the Adabas SVC and a subsystem communication vector table (SSCT)

  • loads the Adabas SVC into the acquired CSA space

  • modifies the SVC table entry as required by the Adabas SVC

  • optionally deletes an SSCT for the same subsystem name from the SSCT chain

  • adds the new SSCT to the SSCT chain

  • invokes the ADASIR program

  • releases CSA acquired by a previously installed SVC

If any error is detected, ADASIP backs out all completed activities and terminates operation with a user abend specifying the error.

When reinstalling an instance of ADASVC using an SVC number that is currently being used by ADASVC, the subsystem name must be the same as the one currently being used. This helps avoid a configuration that may not function correctly. For more information, read SVC Integrity Validation.

A Version 8 ADASIP/ADASIR can be used to install a Version 7 Adabas SVC, but the Version 8 SVC requires the Version 8 ADASIP/ADASIR. Software AG recommends using Version 8 to install all supported releases of the SVC. If an earlier version of ADASIP/ADASIR is used to replace an SVC installed with a later version, some areas of common storage may not be released.

The following JCL links ADASIP, located in ADABAS.Vvrs.LOAD, into an APF-authorized library as an authorized module:

//LNKSIP EXEC PGM=IEWL
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD SPACE=(CYL,(1,1)),UNIT=SYSDA
//ADALIB DD DSN=ADABAS.Vvrs.LOAD,DISP=SHR
//SYSLMOD DD DSN=apflibname,DISP=SHR
//SYSLIN DD *
INCLUDE ADALIB(ADASIP)
SETCODE AC(1)
NAME ADASIP(R)

ADASIP Parameters

ADASIP parameters have the following syntax:

CONSNAME=c,IDTSPL=i,LEAVE=l,NRIDTES=n,REPLACE=r,SUBSYS=su,
SVCNR=svcn,SVCSPL=svcs

-where

c is the console name to which operator messages are written. If omitted, messages are issued using ROUTCDE=2, master Console Information.
i is the ID table subpool: see the ADASIR IDTSPL parameter for details.
l indicates whether ADASIR should display message ADAS11 or ADAS12 on the operator console: see the ADASIR LEAVE parameter for details.
n is the number of ID table entries: see the ADASIR NRIDTES parameter for details.
r indicates whether or not an existing SSCT for the same subsystem name is to be replaced. Y for yes or N for no (N is the default). Use this option to replace any type of Adabas SVC (for example, when installing a new SVC version).
su is the subsystem name. This parameter is required. . Each instance of the Adabas SVC must have a unique subsystem name.
svcn is the Adabas SVC number: see the ADASIR SVCNR parameter for details.
svcs is the Adabas SVC and SSCT subpool: 228 for fixed CSA or 241 for pageable CSA (default: 241).

The following are valid ADASIP parameter abbreviations:

Parameter Abbreviation
CONSNAME= C=
IDTSPL= I=
LEAVE= L=
NRIDTES= N=
REPLACE= R=
SUBSYS= SU=
SVCNR= SVCN=
SVCSPL= SVCS=

All parameters are optional except SUBSYS and SVCNR. If specified, the parameters IDTSPL,LEAVE, NRIDTES, SUBSYS, and SVCNR are passed to ADASIR without being verified.

Executing ADASIP

JCL similar to the following should be used to execute ADASIP:

// EXEC PGM=ADASIP,PARM=parameters
//STEPLIB DD ...
//SVCLIB DD ...
//SIRLIB DD ...

The data set defined by the STEPLIB DD statement must be an APF-authorized library containing the APF-authorized program ADASIP. Since ADASIP is neither reentrant nor refreshable, the data set cannot be SYS1.LPALIB.

The data set defined by the SVCLIB DD statement must be an APF-authorized library containing the Adabas SVC with either the name or alias ADASVC.

The data set defined by the SIRLIB DD statement must contain the ADASIR program. Since ADASIR is neither reentrant nor refreshable, the data set may not be SYS1.LPALIB.

ADASIP terminates with a U0481 abend if the parameter input is incorrectly specified.

The IBM job control convention for continuing the PARM parameter is:

// EXEC PGM=ADASIP,PARM=('parameters ....', X
// 'parameters')

-where X in column 72 is a continuation character. The following restrictions also apply to JCL statements:

  • a comma is required after the end-quote on a line that is to be continued

  • a non-blank continuation character is required in column 72 of each line that is to be continued, and the continuation line must start within columns 4-16

  • a comma is not permitted between the last parameter and the end-quote on the line to be continued because JCL automatically inserts a comma between parameters when concatenating continuation strings:

    • // ...PARM=('CONSID=3', X
      // 'SUBSYS=ADAB', X
      // 'SVCNR=249')

      -results in an equivalent line of

      CONSID=3,SUBSYS=ADAB,SVCNR=249

Using ADASIR

ADASIR Functions

The ADASIR program is invoked

  • by the ADASIP program to install the Adabas SVC temporarily, or

  • by z/OS to install the Adabas SVC permanently.

ADASIR receives control during either master scheduler initialization or ADASIP execution. The operator is prompted for any value that has been incorrectly zapped or assembled (refer to the Adabas Messages and Codes for specific message descriptions). If an error is found during the processing of parameters specified in the IEFSSNxx member or passed by ADASIP, the operator is prompted for all of the values.

If the SVC table entry is incorrect, ADASIR prompts the operator for permission to change the entry (if SVCTAB=P, the default, is specified). If any errors are detected, they must be corrected and either another IPL must be done or ADASIP must be rerun before the Adabas SVC can be used.

Relinking ADASIR

The ADASIR module must be linked into an APF-authorized library.

The following JCL links ADASIR, located in ADABAS.Vvrs.LOAD, into SYS1.LINKLIB:

//LNKSIR EXEC PGM=IEWL
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD SPACE=(CYL,(1,1)),UNIT=3350
//ADALIB DD DSN=ADABAS.Vvrs.LOAD,DISP=SHR
//SYSLMOD DD DSN=SYS1.LINKLIB,DISP=SHR
//SYSLIN DD *
INCLUDE ADALIB(ADASIR)
NAME ADASIR(R)

ADASIR Parameters

ADASIR parameters have the following syntax:

IDTSPL=i,LEAVE=l,NRIDTES=n,SVCNR=svcn,SVCTAB=svct
Variable Description
i The ID table subpool: 228 for fixed CSA or 241 (the default) for pageable CSA.
l Indicates whether message ADAS11 or ADAS12 is to be displayed on the operator console: Y for yes or N (the default) for no.
n The ID table entry count, which can range from 1 to a maximum specified at offset X'146' in the CSECT IEAVESVT of the z/OS nucleus (see section Requirements for Cross-Memory Services).
svcn The Adabas SVC number (200-255).
svct Indicates whether or not the operator should be prompted for permission to update the SVC table entry. Enter P (the default) to receive a prompt, or N for no prompt. P is recommended if a possibility exists that the SVC table entry will not be what ADASIR expects.

The following are valid abbreviations for ADASIR parameters:

Parameter Abbreviation
IDTSPL= I=
LEAVE= L=
NRIDTES= N=
SVCNR= SVCN=
SVCSPL= SVCS=

Executing ADASIR

Note:
The ADASIR module must be linked into an APF-authorized library.

To prepare for permanent SVC installation, an entry must be made in either a new or existing member having the name IEFSSNxx in SYS1.PARMLIB. This entry is an 80-character record with the following format:

SUBSYS SUBNAME(cccc) CONSNAME(consname) INITRTN(ADASIR) INITPARM('parameters') comments

-where

cccc The 1- to 4-character subsystem name. This name and the name specified in the Adabas SVC at offset X'28' must be the same. The name provided in the SVC is ADAB; any other name must first be zapped into the SVC before being specified for cccc.
consname The name of the console to which ADASIR will direct any messages. If omitted messages will be issued with ROUTCDE=2, Master Console Information.
'parameters' ADASIR parameters. If there is more than one parameter, values must be enclosed in single quotation marks and a comma placed between the parameters.
comments Comments are optional and must be preceded by at least one space.

If the subsystem name does not match, ADASIR abends with an ADAS12 message and condition code 2; the Adabas z/OS communication environment is not initialized. Re-IPL z/OS, specifying SSN=xx if necessary. If this is the first IPL with a type 3 or 4 Adabas SVC, specify CLPA as one of the SET parameters.

If an error is encountered while processing any of the parameters obtained from the IEFSSNxx member or passed from ADASIP (message ADAS05), the operator is prompted to reenter all of the parameters. If the SVC table entry is not correct (message ADAS09) then, depending on the value of the SVCTAB parameter, either the operator is prompted (message ADAS10) for permission to change the SVCTAB parameter, or it is simply changed (message ADAS15).

A Version 8 ADASIR can be used to install a Version 7 Adabas SVC, but the Version 8 SVC requires the Version 8 ADASIR. Software AG recommends using Version 8 to install all supported releases of the SVC.

Relinking the SVC for Temporary Installation

Link the Adabas SVC with the name or alias ADASVC into an APF-authorized library. ADASVC must be linked with AMODE=31 and RMODE=24, the default.

The following example shows how to link the SVC:

// (job card)
//LKED EXEC PGM=IEWL,
// PARM='XREF,LIST,NCAL,LET,MAP,RENT,REFR,REUS'
//SYSPRINT DD SYSOUT=X
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSLMOD DD DSN=SYS1.LINKLIB,DISP=SHR <--Target loadlib
//ADALIB DD DSN=user.loadlib,DISP=SHR <--ADASVC loadlib
//SYSLIN DD *
MODE AMODE(31),RMODE(24)
INCLUDE ADALIB(ADASVC)
NAME ADASVC(R)
/*

Note:
If the SVC is linked with a name other than ADASVC when preparing to upgrade to a permanent installation, the SVC must have an alias of ADASVC. When dynamically loading the Adabas SVC, ADASIP searches for the module ADASVC in the library specified by the SVCLIB DD statement.

Relinking the SVC for Permanent Installation

Software AG recommends using a type 3 or 4 SVC for the Adabas SVC.

SVC types 1 and 6 are not supported.

Type 2 SVC

If the Adabas SVC is to be type 2, link it into SYS1.NUCLEUS as the system nucleus IEANUC0x.

This nucleus must contain an SVC table entry for an enabled type 2 SVC, which must be defined during SYSGEN.

Then include linkage editor control statements similar to the following with those needed to link a nucleus:

CHANGE ADASVC(IGCnnn) ---> nnn is the SVC number in decimal
INCLUDE ADALIB(ADASVC) ---> ADALIB contains the Adabas SVC

Type 3 or 4 SVC

To install the Adabas SVC as type 3 or 4, link the Adabas SVC with the appropriate name into SYS1.LPALIB. ADASVC must be linked with AMODE=31 and RMODE=24 (the default).

The following example shows how to relink the SVC:

// (job card)
//LKED EXEC PGM=IEWL,
// PARM='XREF,LIST,NCAL,LET,MAP,RENT,REFR,REUS'
//SYSPRINT DD SYSOUT=X
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1))
//SYSLMOD DD DSN=SYS1.LPALIB,DISP=SHR <--Target Loadlib
//ADALIB DD DSN=ADABAS.Vvrs.LOAD,DISP=SHR <--ADASVC loadlib
//SYSLIN DD *
MODE AMODE(31),RMODE(24)
CHANGE ADASVC(IGC00nnp) <- where nn are the first two digits of the SVC in decimal and
INCLUDE ADALIB(ADASVC) p is the character corresponding to the x'Cn'
NAME IGC00nnp(R) ----> (n is the last digit of the SVC number in decimal)
*
/*

SVC Integrity Validation

In the past, the presence of multiple SVCs with the same subsystem ID has resulted in a single ID table being used by different SVCs. This has caused problems, some of them serious (abnormal nucleus termination or corruption of the database).

To eliminate this danger, the Version 8 SVC checks to ensure that the SVC accessing the ID table is the same as the one that was used by ADASIP/ADASIR to initialize the table. If the SVCs are not the same, an abend 650 occurs.

Abend 650 occurs when an incorrect SVC number is specified in the ADARUN parameters for a nucleus. It can occur during Adabas initialization, during the first Adabas call from a user program, or when the ID table is queried by another Software AG server such as Entire Net-Work.

ADASIP has been enhanced to prevent this from arising. If you attempt to install an instance of ADASVC using an SVC number that is presently associated with another subsystem name, ADASIP will terminate with abend 435.

Requirements for Cross-Memory Services

Due to the implementation of cross-memory services in z/OS, the following points should be noted when running an Adabas nucleus in MULTI mode:

  • a maximum of one step of a job can establish the cross-memory environment. This means that a job can include at most one step that is a target (for example, an Adabas nucleus).

  • cross-memory accesses may not be made to a swapped-out address space. Therefore, the address space of an Adabas nucleus is set to "nonswappable" for the duration of the nucleus session. This can increase the installation's real storage requirements. This behavior is documented in the IBM manual Extended Addressability Guide, chapter Synchronous Cross-Memory Communication.

  • when a nucleus with an active cross-memory environment terminates either normally or abnormally, the entire address space including any initiator is also terminated.

The ASID representing this address space is not reassigned until the next IPL. Therefore, you should choose a sufficiently high value for the MAXUSERS parameter in the active IEASYSxx member of SYS1.PARMLIB or - if your system supports it - the RSVNONR parameter in the same member can be adjusted accordingly. Also, the Adabas nucleus should not be stopped and started without good reason.

This is described in the manuals referred to in the topics Recovery Considerations and Resource Management. Additional information can be found in IBM APARs OZ61154, OZ61741, and OZ67637.

To make its services available to all address spaces in the system, the Adabas nucleus must obtain a system linkage index (LX) from z/OS. The LX is a reserved slot in the linkage space of all address spaces, and permits system-wide linkage to all address spaces.

If your configuration is using z/OS 1.6 or later and your hardware supports the Address Space and LX Reuse Facility (ALRF), the version 8 ADASVC will make use of reusable system LXs. Otherwise, a non-reusable system LX will be used as in previous releases. Reusable system LXs resolve the constraints imposed by non-reusable LXs. The remainder of this section discusses these constraints.

The number of non-reusable LXs set aside by z/OS for system use is rather small (usually 165 out of a possible 2048).

Because of the way z/OS use cross-memory services, non-reusable system LXs obtained by Adabas cannot be returned to z/OS until the next IPL. However, the system that owns the LXs can reuse them, even for a different address space. Adabas makes use of this feature by identifying used LXs in a table in CSA, where they are available to future nuclei.

The number of non-reusable system LXs can be specified in the member IEASYSxx contained in SYS1.PARMLIB, using the NSYSLX parameter. If you change this value, you must perform an IPL to make the change effective.

To determine an appropriate NSYSLX value, consider the following points:

  • some LXs are probably already being used by other system functions. Therefore, the chances of creating an LX shortage for other users is small.

  • Adabas requires one system LX for each Adabas nucleus (or any other target) that will be active concurrently. A value of decimal 64 would allow concurrent execution of up to 64 Adabas nuclei or other targets with little chance of restricting other components using LXs.

  • Entire Net-Work Version 5 uses only one LX and one ID table entry, regardless of how many remote databases it must represent. This is unlike the pseudo-MPM concept of earlier Entire Net-Work versions.

  • whenever ADASIP is executed with the REPLACE option, all LXs saved in the current ID table are lost until the next IPL.

Likewise, if a session ends either normally with the FORCE operator command or abnormally during ESTAE processing (for example, by an S222 operator cancel or by a S722 spool limit exceeded abend during a snap dump), the LX also cannot be recovered until the next IPL.

Any commands sent to these targets receive an S0D6 abend. Any attempt to restart the nucleus results in an ADAM98 message DUP ID (LOCAL), followed by an abend. To resolve both of these problems, restart the nucleus with the ADARUN FORCE=YES and IGNDIB=YES parameters.

The first target that tries to obtain a system LX when none is available ends with an S053 abend code and reason code 0112. No additional targets can be started until the next IPL.

Applying Zaps

Use the z/OS AMASPZAP utility to apply zaps in the respective operating system; this method verifies (VER) and replaces (REP) data. The following sample JCL executes AMASPZAP:

//ADAZAP JOB
//STEP1 EXEC PGM=AMASPZAP
//SYSPRINT DD SYSOUT=X
//SYSLIB DD DSN=ADABAS.Vvrs.LOAD,DISP=SHR
//SYSIN DD *
(zap control statements)
/*
//

-where the following are examples of zap control statements:

NAME membername csectname
VER displacement data
REP displacement data
IDRDATA (up to eight bytes of user data)
* (comment)

Note:
In VER and REP statements, spaces must be used to separate command, displacement, and data. Commas are acceptable data separators; however, commas with spaces or spaces alone are not, and may cause errors.