PSBGEN statement

The PSBGEN statement specifies characteristics of the application program.

The following syntax diagram shows the format for the PSBGEN statement.

Read syntax diagramSkip visual syntax diagramPSBGENPSBNAME= nameDBLEVEL=CURRBASE,LANG=COBOLPL/IASSEMPASCALJAVAblank ,MAXQ=0nr ,CMPAT=NOYES ,IOASIZE= value,SSASIZE= value ,IOEROPN=n( n,WTOR) ,OLIC=NOYES GSROLBOK=NOYES ,LOCKMAX=0n ,REMARKS= comments
PSBNAME=
Specifies the parameter for the alphanumeric name of this PSB. The PSBNAME name must be an alphanumeric, 8-byte character string that follows standard naming conventions. This name becomes the load module name for the PSB in the library IMS.PSBLIB. If the program is to run in a message processing region, this name must be the same as the program load module name in the program library called IMS.PGMLIB No special characters can be used in the name.

Do not give a DBD the same name as an existing PSB. Using an existing name can cause unpredictable results: an error will occur at ACB generation time.

DBLEVEL=
When database versioning is enabled, specifies the version of the DBD that is used to return data to application programs that do not request a specific database version. For all application programs that use this PSB, the value specified here overrides the system default for DBLEVEL that is specified in the DFSDFxxx member of the IMS.PROCLIB data set.
The valid values for DBLEVEL are:
CURR

When DBLEVEL=CURR and an application program does not specify a version number on a call to access the database, IMS returns data to the application program by using the database structure that is defined by the active members in the ACB library. Usually, the active ACB members define the actual current structure of the physical database.

BASE

When DBLEVEL=BASE and an application program does not specify a database version number, IMS returns data to the application program by using the database structure that is defined by the DBD record in the IMS catalog that contains DBVER=0. DBVER=0 is the default version of a DBD before a DBVER value is specified explicitly on a subsequent version of a DBD. If multiple instances of a version-0 DBD exist in the IMS catalog, IMS uses the instance that has the most recent timestamp.

Individual application programs can request DBD version numbers other than the one that is indicated by the DBLEVEL value by either specifying the DBD version number on the DBVER keyword of the PCB statement or on an INIT VERSION call.

When database versioning is disabled, the DBLEVEL parameter is ignored.

LANG=
An optional keyword that indicates the compiler language in which the message processing or batch processing program is written. If you specify OLICYES, LANGPLI is invalid. If your application program is written in C language, specify LANGASSEM.

CICS® and the Language Environment for z/OS® do not support LANGPASCAL.

You must specify LANGJAVA if the application is using the Java™ class libraries for IMS in a JMP region.

If you are using IMS PL/I applications that run in a compatibility mode using the PLICALLA entry point, you must specify LANGPLI.

MAXQ=
Is the maximum number of database calls with Qx command codes that can be issued between synchronization points. The maximum number is 32,767. The default value is zero.
CMPAT=
Provides compatibility between BMP or MSG and Batch-DL/I parameter lists. If set to YES, this PSB is always treated as if there were an I/O PCB, no matter how it is used. If set to NO, the PSB has an I/O PCB added only for BMP or MSG regions. The default is NO.
IOASIZE=
Specifies the size (in bytes) of the largest I/O area used by the application program. The size specification is used to determine the amount of main storage reserved in the PSB pool to hold the control region copy of the user I/O area data during scheduling of this application program. If you do not specify this value, the IMS calculates a maximum default I/O area size. The default size is the total length of all of the sensitive segments in the longest possible path call. (The total length of the segment must be used, even if the application program is not sensitive to all fields in a segment.) The value specified is in bytes, with a maximum of 256000. However, the combined length of all concatenated segments to be returned to the application on a single path call must not exceed 65535 bytes.

If the PSB contains any field-sensitive segments, and IOASIZE is specified, the specified value is used only if it is larger than the IOASIZE calculated by the ACBGEN utility. The value of the IOASIZE that will be used is indicated. The major components of this pool requirement are IOASIZE and SSASIZE.

If STAT calls or the test program (DFSDDLT0) are used with this PSB, IOASIZE must be greater than 600 bytes.

If CMD or GCMD calls (from automated operator interface application programs) are used with this PSB, IOASIZE must be at least 132 bytes.

If extended checkpoint/restart is used, IOASIZE must be set to a value equal to or greater than the larger of the following:

  • I/O area needed to receive data from a GU call issued during restart, while repositioning DL/I databases that have a previous checkpoint (if this PSB contains any).
  • Largest LRECL used in a GSAM data set that has a previous checkpoint.

Either the value pointed to by the third parameter (I/O AREA LEN) of the XRST CALL or the value of this parameter will be used, depending on which value is larger.

SSASIZE=
Specifies the maximum total length of all SSAs used by the application program. IMS uses the size specification to determine the amount of main storage reserved in the PSB work pool to hold a copy of the user's SSA strings during execution of this application program. If you do not specify this value, the ACB utility program calculates a maximum SSA size to be used as a default. The size calculated is the maximum number of levels in any PCB within this PSB multiplied by 280. The value specified is in bytes, with a maximum of 256000.
Restriction: When you run IMS under CICS without DBCTL, the PSB work pool requirement cannot exceed 64KB.

The major components of this pool requirement are IOASIZE and SSASIZE. When the PSB is built into ACBLIB, ACB generation message DFS0589I indicates the PSB's total work pool space requirement.

Important: For Fast Path secondary index calls, an SSASIZE workarea holds the converted SSAs that accommodate the additional storage from SUBSEQ fields and number of qualifications. When a DL/I call is initiated, the converted SSAs are passed into the full-function database.

The default SSASIZE is specified as the default SSA size defined during ACBGEN plus 840 bytes.

If you specify an SSASIZE or if you use the default and the SSASIZE is not large enough, an AU status code is issued. To correct this problem, specify a larger SSASIZE in the PSB and rerun PSBGEN and ACBGEN to resolve the problem.

IOEROPN n
Is applicable only in batch-type regions (DLI or DBB). This parameter is not valid for CICS. The n subparameter is the condition code returned to the operating system when IMS terminates normally and one or more input or output errors occurred on any database during the application program execution. The n subparameter is a number from 0 to 4095.

If n=451, IMS terminates with a U451 abend instead of passing a condition code to the operating system. If n=451 and the IMS or the application program abends with an abend other than U451, and an I/O error has also occurred, a write-to-programmer of message DFS0426I is issued. This message indicates that an I/O error has occurred during execution and that a U451 abend has occurred if the actual abend has not.

If n=451, IMS terminates with abend U0451, even if the operator responds CONT to the DFS0451A message.

By using the IOEROPN parameter, you can set a unique JCL condition code when an I/O error occurs and test the condition code in subsequent job steps. If you do not specify this parameter, the return code passed from the application program is passed to the operating system and status codes and console messages are the only indications of database I/O errors.

OLIC=
Indicates whether the user of this PSB is authorized to execute the Online Database Image Copy utility or the Surveyor utility feature that runs as a BMP against a database named in this PSB. YES allows the Online Image Copy and the Surveyor utility feature; NO prohibits the Online Image Copy and the Surveyor utility feature. NO is the default. This parameter is invalid if any database PCB (a PCB with DB specified for the TYPE parameter) in the PSB specifies the L or LS processing options.
Exception: This parameter is not applicable to CICS, GSAM, HSAM, MSDB, or DEDB databases.
GSROLBOK=
Controls whether an internal ROLB call should be done to roll back non-GSAM database updates when:
  • The application is a non-message-driven BMP.
  • The PSB contains a PCB for a GSAM database.
  • Db2 for z/OS reports a deadlock either on a thread create or on an SQL call.

YES means that the internal ROLB call is done and that the SQL code regarding the deadlock is returned to the application program. NO means that a user abend 777 occurs instead of the ROLB call. The default is NO.

LOCKMAX=
Indicates the maximum number of locks an application program can get at one time. n is a numeric value between 0 and 255. n is specified in units of 1000. For example, a specification of LOCKMAX=5 indicates a maximum of 5000 locks at one time.

The default value is 0. This indicates that there is no maximum number of locks that are allowed at one time.

If an application program runs for an extended time without committing, the locking done by IMS of database records and changes can accumulate. You can use the LOCKMAX parameter to prevent a single application program from consuming all locking storage and thereby causing other programs to abend.

You can override the LOCKMAX value specified on the PSBGEN statement at program execution by specifying LOCKMAX=0 (to turn off limit completely) or by specifying LOCKMAX=1 to 32767 on the dependent region (BMP, MPP, or IFP) or Batch (DBB or DLI). The value is in units of 1000. You can use this method to exceed the maximum value of 255 that can be specified on the PSBGEN statement LOCKMAX parameter.

REMARKS=
Optional user comments. A 1- to 256-character field.

If your comments contain special characters, such as commas or blank spaces, enclose the full comment string in single quotation marks.

The value specified on the REMARKS keyword cannot contain the following characters:
  • Single quotation marks, except when they are used to enclose the full comment string. If a single quotation mark is entered before the end of the full comment string, the remainder of the comment string is truncated. The following examples show correct and incorrect usages of single quotation marks on the REMARKS keyword:
    CORRECT
    REMARKS='These remarks apply to the XYZ application'
    INCORRECT
    REMARKS='These remarks apply to the 'XYZ' application'
  • Double quotation marks.
  • Less than (< ) symbols.
  • Greater than ( >) symbols.
  • Ampersands (&).

There can be several PCB statements for message output and several PCB statements for databases, but only one PSBGEN in a PSB generation PCB statement deck. The PSBGEN statement must be the last statement in the deck preceding the END statement.