UPDATE PGMDESC command

Use the UPDATE PGMDESC command to update program descriptors. A descriptor is a model that can be used to create descriptors or resources.

Updating a descriptor changes only the attributes explicitly specified on the UPDATE command. Attributes not specified retain their existing values. Any program resource or descriptor can be created using this descriptor as a model, by specifying the CREATE LIKE(DESC(descriptor_name)) command. Any descriptor or resource that was already created using this descriptor is not updated.

Subsections:

Environment

The following table lists the environments (DB/BC, DBCTL, and DCCTL) in which you can use the commands and keywords.

Table 1. Valid environments for the UPDATE PGMDESC command and keywords
Command / Keywords DB/DC DBCTL DCCTL
UPDATE PGMDESC X X X
NAME X X X
OPTION X X X
SET X X X

Syntax

Read syntax diagramSkip visual syntax diagram
                              .-,----.     
                              V      |     
>>-+-UPDATE-+--PGMDESC--NAME(---name-+-)------------------------>
   '-UPD----'                              

          .-,----------------------------.       
          V                              |       
>----SET(---+-BMPTYPE(-+-Y-+-)---------+-+-)-------------------->
            |          '-N-'           |         
            +-DEFAULT(Y)---------------+         
            +-DOPT(-+-N-+-)------------+         
            |       '-Y-'              |         
            +-FP(-+-E-+-)--------------+         
            |     '-N-'                |         
            +-GPSB(-+-N-+-)------------+         
            |       '-Y-'              |         
            +-LANG(-+-ASSEM--+-)-------+         
            |       +-COBOL--+         |         
            |       +-JAVA---+         |         
            |       +-PASCAL-+         |         
            |       '-PLI----'         |         
            +-RESIDENT(-+-N-+-)--------+         
            |           '-Y-'          |         
            +-SCHDTYPE(-+-PARALLEL-+-)-+         
            |           '-SERIAL---'   |         
            '-TRANSTAT(-+-N-+-)--------'         
                        '-Y-'                    

>--+----------------+------------------------------------------><
   '-OPTION(ALLRSP)-'   

Keywords

The following keywords are valid for the UPDATE PGMDESC command:

NAME
Specifies the 1-8 character name of the program descriptor. Wildcards can be specified in the name. The name is a repeatable parameter. If the NAME parameter specified is a specific or wildcard name, command responses are returned for all the descriptor names that are processed. For NAME(*), command responses are returned only for the descriptor names that resulted in an error. OPTION(ALLRSP) can be specified with NAME(*) to obtain the command responses for all the descriptor names that are processed.
OPTION
Specifies additional functions to be performed along with the command.
ALLRSP
Indicates that the response lines are to be returned for all descriptors that are processed on the command. The default action is to return response lines only for the descriptors that resulted in an error. It is only valid with NAME(*). ALLRSP is ignored for other NAME values.
SET
Specifies the attribute values to be changed.
BMPTYPE
BMP type option. Specifies whether the program executes in a BMP type region or not. A BMP type region can be a BMP region or a JBP region.

PSBs scheduled by DB2® stored procedures, by programs running under WebSphere® Application Server, and by other users of the ODBA interface may be defined with BMPTYPE Y or N.

Y
The program executes in a BMP type region. It can execute in an IMS™ BMP region or a JBP region. Any associated transactions are assigned normal and limit priority values of zero.
N
The program does not execute in a BMP type region. It may execute in an IMS TM MPP, JMP, or IFP region, or it may use either the ODBA or DRA interface. This specification should be used for programs running in IMS TM MPP, JMP, and IFP regions, or PSBs scheduled by CICS® programs using DBCTL and other users of the DRA interface. This is the default.

Keyword combination rules include the following:

  • BMPTYPE(Y) and FP(E) are mutually exclusive.
DEFAULT(Y)
Specifies this descriptor as the default, which resets the existing default descriptor to DEFAULT(N). When a descriptor or resource is created without the LIKE keyword, any attribute not specified on the CREATE command takes the value defined in the default descriptor. Only one descriptor can be defined as the default for a resource type. IMS defines a program descriptor called DFSDSPG1, where all attributes are defined with the default value. Defining a user-defined descriptor to be the default overrides the current default descriptor. Since only one program descriptor can be the default at one time, only one descriptor name can be specified with DEFAULT(Y).
DOPT
Specifies the dynamic option.
N
The PSB associated with this program is not located dynamically. The PSB must exist in ACBLIB, otherwise the program is set to a NOTINIT status, and cannot be scheduled.
Y
The PSB associated with this program is located dynamically. Each time the program associated with this PSB is scheduled, the latest copy of the PSB is loaded from ACBLIB. The PSB does not need to be in any data set defined for ACBLIB until it is actually required to process a transaction. A new version of the PSB can be genned in ACBLIB and is picked up the next time the PSB is scheduled. DOPT PSBs referencing DBDs that are missing from ACBLIB cannot be scheduled. When the program terminates, the PSB is deleted from the PSB pool.

Keyword combination rules include the following:

  • DOPT(Y) and GPSB(Y) are mutually exclusive.
  • DOPT(Y) and LANG(JAVA) is a valid combination.
  • LANG is invalid with GPSB(N), except if DOPT(Y) and LANG(JAVA).
  • LANG(JAVA), DOPT(Y), and GPSB(N) is a valid combination.
  • RESIDENT(Y) and DOPT(Y) are mutually exclusive.
  • SCHDTYPE(PARALLEL) and DOPT(Y) are mutually exclusive.
FP
Specifies the Fast Path option.
E
The program is a Fast Path-exclusive application program. This implicitly defines a wait-for-input (WFI) application program. Either a transaction or a routing code that can be assigned by the user Input Edit/Routing exit routine must be defined for the Fast Path-exclusive application, in order for this program to be usable.
N
The program is not a Fast Path-exclusive application program. When FP(N) is specified, any attempt to use Fast Path resources or commands will yield unpredictable results.

Keyword combination rules include the following:

  • FP(E) requires Fast Path to be defined.
  • LANG(JAVA) and FP(E) are mutually exclusive.
  • BMPTYPE(Y) and FP(E) are mutually exclusive.
GPSB
Specifies the generated PSB option.
N
The PSB associated with the program is not generated by IMS. The PSB must exist in ACBLIB; otherwise the program is set to a NOTINIT status and cannot be scheduled.
Y
The PSB associated with the program is generated by IMS. It is not loaded from ACBLIB. The scheduling process of all environments generates a PSB containing an I/O PCB and an alternate modifiable PCB. You do not need to perform the PSBGEN and ACBGEN, thus eliminating I/O to the ACBLIB.

The generated PSB contains an I/O PCB named IOPCBbbb and a modifiable, alternate PCB named TPPCB1bb. With an alternate modifiable PCB, an application can use the CHNG call to change the output destination and send output to a destination other than the input destination.

Keyword combination rules include the following:

  • DOPT(Y) and GPSB(Y) are mutually exclusive.
  • DOPT(Y) and LANG(JAVA) is a valid combination.
  • GPSB(Y) requires LANG.
  • LANG is invalid with GPSB(N), except if DOPT(Y) and LANG(JAVA).
  • LANG(JAVA), DOPT(Y), and GPSB(N) is a valid combination.
  • RESIDENT(Y) and GPSB(Y) are mutually exclusive.
LANG
Specifies the language interface of the application program for a GPSB.

The LANG parameters and their meanings are identified in the following table.

LANG parameter Meaning
ASSEM Assembler
COBOL COBOL
JAVA Java™
PASCAL Pascal
PLI PL/I

Keyword combination rules include the following:

  • LANG is invalid with GPSB(N), except if DOPT(Y) and LANG(JAVA).
  • DOPT(Y) and LANG(JAVA) is a valid combination.
  • LANG(JAVA), DOPT(Y), and GPSB(N) is a valid combination.
  • FP(E) and LANG(JAVA) are mutually exclusive.
RESIDENT
Specifies the resident option.
N
The PSB associated with the program is made to be not resident in storage. The PSB is loaded at scheduling time.
Y
The PSB associated with the program is made to be resident in storage immediately. IMS loads the PSB and initializes it. The PSB is removed from the PSB pool, if applicable. A resident PSB is accessed in local storage, which eliminates I/O to retrieve the ACB.

Keyword combination rules include the following:

  • DOPT(Y) and RESIDENT(Y) are mutually exclusive.
  • GPSB(Y) and RESIDENT(Y) are mutually exclusive.
SCHDTYPE

Specifies whether this application program can be scheduled into more than one message region or batch message region simultaneously.

PARALLEL
The application program can be scheduled in multiple regions simultaneously.
SERIAL
The application program can be scheduled in only one region at a time.

Updating this attribute to SCHDTYPE(SERIAL) is rejected if a transaction referencing this program is defined with a parallel limit count other than 65535.

Keyword combination rules include the following:

  • DOPT(Y) and SCHDTYPE(PARALLEL) are mutually exclusive.
TRANSTAT
Specifies whether transaction level statistics should be logged. The value specified has meaning only if the program is a JBP or a non-message driven BMP. If Y is specified, transaction level statistics are written to the log in a X'56FA' log record.
N
Transaction level statistics should not be logged.
Y
Transaction level statistics should be logged.
The TRANSTAT keyword on the UPDATE PGMDESC command gives the user the ability to override the system default or the current value of the TRANSTAT parameter. If the TRANSTAT keyword is omitted on the UPDATE PGMDESC command, the current transaction level statistics setting is unchanged for the program.

Usage notes

If all the attributes specified by the UPDATE command are already defined for the descriptor, no update is actually made, no descriptors are quiesced, no log record is created, and a completion code of zero is returned. This avoids unnecessary overhead when no action needs to be taken.

Descriptors exist for the life of the IMS unless they are deleted using a DELETE command. Descriptors are recoverable across an IMS warm start or emergency restart. Descriptors are lost if IMS is cold started, unless cold start imports definitions that were exported while IMS was up.

The UPDATE PGMDESC command can be issued only through the OM API. This command applies to DB/DC, DBCTL and DCCTL systems.

This command is not valid on the XRF alternate, RSR tracker, or FDBR region. The UPDATE PGMDESC commands are not valid if online change for MODBLKS is enabled (DFSDFxxx or DFSCGxxx defined with MODBLKS=OLC, or MODBLKS not defined).

This command is recoverable.

If the descriptor is the IMS-defined program descriptor (DFSDSPG1) the only attributes that can be updated are the DEFAULT (SET(DEFAULT(Y))) and the TRANSTAT (SET(TRANSTAT(Y|N|))) attributes.

Each descriptor is updated individually. Individual updating does not work like online change where either all descriptors are updated or no descriptors are updated.

Output fields

The following table shows the UPDATE PGMDESC output fields. The columns in the table are as follows:
Short label
Contains the short label generated in the XML output.
Keyword
Identifies keyword on the command that caused the field to be generated. N/A appears for output fields that are always returned. error appears for output fields that are returned only in case of an error.
Meaning
Provides a brief description of the output field.
Table 2. Output fields for the UPDATE PGMDESC command
Short label Keyword Meaning
CC N/A Completion code
CCTXT error Completion code text that briefly explains the nonzero completion code.
DESC PGMDESC Program descriptor name.
ERRT error Error text with diagnostic information. Error text can be returned for a nonzero completion code and contains information that further explains the completion code.
MBR N/A IMSplex member that built the output line.
OLDDEF PGMDESC Old default descriptor name, if this descriptor is updated to be the default by specifying DEFAULT(Y). The old default descriptor is no longer the default.

Return, reason, and completion codes

The following table includes the return and reason codes and a brief explanation of the codes. The return or reason code returned for the command might also indicate an error from a CSL request.

Table 3. Return and reason codes for the UPDATE PGMDESC command
Return code Reason code Meaning
X'00000000' X'00000000' Command completed successfully. The command output contains a line for each descriptor, accompanied by its completion code. If NAME(*) is specified without OPTION(ALLRSP), no output lines are returned. See the completion code table for details.
X'00000004' X'00002008' Invalid number of keywords. A SET keyword is required.
X'00000008' X'00002048' Invalid SET attribute.
X'00000008' X'00002106' DOPT(Y) mutually exclusive with RESIDENT(Y).
X'00000008' X'00002107' DOPT(Y) mutually exclusive with SCHDTYPE(PARALLEL).
X'00000008' X'0000210B' FP(E) mutually exclusive with BMPTYPE(Y).
X'00000008' X'0000210D' FP(E) mutually exclusive with LANG(JAVA).
X'00000008' X'00002113' GPSB(Y) mutually exclusive with DOPT(Y).
X'00000008' X'00002114' GPSB(N) is mutually exclusive with LANG.
X'00000008' X'00002115' GPSB(Y) mutually exclusive with RESIDENT(Y).
X'00000008' X'00002132' DOPT(Y) not supported with LANG except for LANG(JAVA).
X'00000008' X'00002133' Multiple name parameters were specified with DEFAULT(Y). Only one descriptor can be the default at a time.
X'0000000C' X'00003000' Command was successful for some descriptors but failed for others. The command output contains a line for each descriptor, accompanied by its completion code. If NAME(*) is specified without OPTION(ALLRSP), only descriptors with non-zero completion codes are returned. See the completion code table for details.
X'0000000C' X'00003004' Command was not successful for any of the descriptors. The command output contains a line for each descriptor, accompanied by its completion code. See the completion code table for details.
X'00000010' X'0000400C' Command is not valid on the XRF alternate.
X'00000010' X'00004014' Command is not valid on the RSR tracker.
X'00000010' X'00004024' No Fast Path defined, FP(E) is invalid.
X'00000010' X'00004120' Online change phase is in progress.
X'00000010' X'00004300' Command is not allowed because online change for MODBLKS is enabled (DFSDFxxx or DFSCGxxx defined with MODBLKS=OLC, or MODBLKS not defined).
X'00000014' X'00005004' DFSOCMD response buffer could not be obtained.
X'00000014' X'00005008' DFSPOOL storage could not be obtained.
X'00000014' X'0000500C' AWE could not be obtained.

Errors unique to the processing of this command are returned as completion codes. The following table includes an explanation of the completion codes.

Table 4. Completion codes for the UPDATE PGMDESC command
Completion code Completion code text Meaning
0   Command completed successfully for program descriptor.
10 NO RESOURCES FOUND Program descriptor name is invalid, or the wildcard parameter specified does not match any descriptor names.
17 ANOTHER CMD IN PROGRESS Another command (such as DELETE or UPDATE) is in progress for this program descriptor. This could also mean this command, if the descriptor is specified by more than one specific or wildcard parameter.
29 Start of changeDOPT=Y/RESIDENT=Y CONFLICTEnd of change Program descriptor update failed because dynamic DOPT(Y) option conflicts with resident RESIDENT(Y) option.
2A Start of changeDOPT=Y/PARALLEL CONFLICTEnd of change Program descriptor update failed because dynamic DOPT(Y) option conflicts with parallel schedule SCHDTYPE(PARALLEL) option.
2F Start of changeFP=E/BMPTYPE=Y CONFLICTEnd of change Program descriptor update failed because Fast Path exclusive FP(E) option conflicts with BMP type BMPTYPE(Y).
37 Start of changeFP=E/LANG=JAVA CONFLICTEnd of change Program descriptor update failed because Fast Path exclusive FP(E) option conflicts with Java language LANG(JAVA).
Start of change40End of change Start of changePARLIM/SCHDTYPE=SERIAL CONFLICTEnd of change Start of changeThe SCHDTYPE value cannot be changed to SERIAL because a transaction that references the program has a PARLIM value that is something other than 65535. The program definition is not updated.End of change
43 Start of changeGPSB=Y/DOPT=Y CONFLICTEnd of change Program descriptor updated failed because generated PSB GPSB(Y) option conflicts with dynamic DOPT(Y) option.
Start of change46End of change Start of changeGPSB=N/LANG CONFLICTEnd of change Start of changeGenerated PSB option N (GPSB(N)) conflicts with the language option (LANG()). The program definition is not updated. End of change
47 Start of changeGPSB=Y/RESIDENT=Y CONFLICTEnd of change Program descriptor update failed because generated PSB GPSB(Y) option conflicts with the resident RESIDENT(Y) option.
48 NOT ALLOWED FOR IMS RESOURCE The specified UPDATE command is not allowed for the IMS descriptor or resource. DFSDSPG1 is an example of an IMS descriptor. The only IMS descriptor attribute you can update is DEFAULT(Y).
8A WILDCARD PARAMETER NOT SUPPORTED A wildcard parameter was specified with DEFAULT(Y). Only one descriptor can be the default at a time.
97 Start of changeDOPT=Y/LANG CONFLICTEnd of change Program descriptor update failed because dynamic option DOPT(Y) conflicts with LANG specified. DOPT(Y) is only supported with LANG(JAVA).
Start of change1D7End of change Start of changeIMPORT CHANGE LIST ERROREnd of change Start of changeThe descriptor is in the process of being imported from the change list in the IMSRSC repository or was not successfully imported from the change list. The descriptor cannot be updated until it is successfully imported from the repository. End of change

Examples

The following are examples of the UPDATE PGMDESC command:

Example 1 for UPDATE PGMDESC command

TSO SPOC input:
UPDATE PGMDESC NAME(*) SET(BMPTYPE(Y)) OPTION(ALLRSP)
TSO SPOC output:
Response for: UPDATE PGMDESC NAME(*) SET(BMPTYPE(Y)) OPTION(ALLRSP)  
DescName MbrName    CC CCText                                       
DESC001  IMS1        0                                              
DESC002  IMS1        0                                              
DESC003  IMS1        0                                              
DESC004  IMS1        0                                              
DESC005  IMS1        0                                              
DFSDSPG1 IMS1       48 NOT ALLOWED FOR IMS RESOURCE                 
DOPTDESC IMS1        0                                              
FPEDESC  IMS1       2F Start of changeFP=E/BMPTYPE=Y CONFLICTEnd of change                    
GPSBDESC IMS1        0                                              
PARLDESC IMS1        0                                              
RESDESC  IMS1        0                                              
TLSDESC  IMS1        0       
OM API input:
CMD(UPDATE PGMDESC NAME(*) SET(BMPTYPE(Y)) OPTION(ALLRSP))
OM API output:
<imsout>                                     
<ctl>                                        
<omname>OM1OM   </omname>                    
<omvsn>1.3.0</omvsn>                         
<xmlvsn>20  </xmlvsn>                        
<statime>2006.312 23:30:46.559300</statime>  
<stotime>2006.312 23:30:46.559923</stotime>
<staseq>BFAD4FE141E44D08</staseq>                                    
<stoseq>BFAD4FE1420B3F48</stoseq>                                    
<rqsttkn1>USRT011 10153046</rqsttkn1>                                
<rc>0200000C</rc>                                                    
<rsn>00003008</rsn>                                                  
<rsnmsg>CSLN054I</rsnmsg>                                            
<rsntxt>None of the clients were successful.</rsntxt>                
</ctl>                                                               
<cmderr>                                                             
<mbr name="IMS1    ">                                                
<typ>IMS     </typ>                                                  
<styp>DBDC    </styp>                                                
<rc>0000000C</rc>                                                    
<rsn>00003000</rsn>                                                  
<rsntxt>At least one request successful</rsntxt>                     
</mbr>                                                               
</cmderr>                                                            
<cmd>                                                                
<master>IMS1    </master>                                            
<userid>USRT011 </userid>                                            
<verb>UPD </verb>                                                    
<kwd>PGMDESC         </kwd>                                          
<input>UPDATE PGMDESC NAME(*) SET(BMPTYPE(Y)) OPTION(ALLRSP) </input>
</cmd>                                                                 
<cmdrsphdr>                                                            
<hdr slbl="DESC" llbl="DescName" scope="LCL" sort="a" key="1"          
 scroll="no" len="8" dtype="CHAR" align="left" />                      
<hdr slbl="MBR" llbl="MbrName" scope="LCL" sort="a" key="2" scroll="no"
 len="8" dtype="CHAR" align="left" />                                  
<hdr slbl="CC" llbl="CC" scope="LCL" sort="n" key="0" scroll="yes"     
 len="4" dtype="INT" align="right" skipb="no" />                       
<hdr slbl="CCTXT" llbl="CCText" scope="LCL" sort="n" key="0"           
 scroll="yes" len="*" dtype="CHAR" skipb="yes" align="left" />         
<hdr slbl="ERRT" llbl="ErrorText" scope="LCL" sort="n" key="0"         
 scroll="yes" len="*" dtype="CHAR" skipb="yes" align="left" />         
</cmdrsphdr>                                                           
<cmdrspdata>                                                           
<rsp>DESC(DESC004 ) MBR(IMS1) CC(   0) </rsp>                          
<rsp>DESC(DESC005 ) MBR(IMS1) CC(   0) </rsp>                          
<rsp>DESC(DESC001 ) MBR(IMS1) CC(   0) </rsp>                          
<rsp>DESC(DOPTDESC) MBR(IMS1) CC(   0) </rsp>                          
<rsp>DESC(RESDESC ) MBR(IMS1) CC(   0) </rsp>                          
<rsp>DESC(DFSDSPG1) MBR(IMS1) CC(  48) CCTXT(NOT ALLOWED FOR IMS RESOURCE) </rsp>                                                      
<rsp>DESC(TLSDESC ) MBR(IMS1) CC(   0) </rsp>                        
<rsp>DESC(DESC002 ) MBR(IMS1) CC(   0) </rsp>                          
<rsp>DESC(PARLDESC) MBR(IMS1) CC(   0) </rsp>                            
<rsp>DESC(DESC003 ) MBR(IMS1) CC(   0) </rsp>                            
<rsp>DESC(FPEDESC ) MBR(IMS1) CC(  2F) Start of changeCCTXT(FP=E/BMPTYPE=Y CONFLICT)End of change  
 </rsp>                                                                  
<rsp>DESC(GPSBDESC) MBR(IMS1) CC(   0) </rsp>                            
</cmdrspdata>                                                            
</imsout>   

Explanation: Update all program descriptors to be BMPTYPE(Y). The update completed successfully for most program descriptors, as shown by completion code 0. The update failed for IMS-defined descriptor DFSDSPG1 with completion code 48, because the only attribute that can be updated for DFSDSPG1 is DEFAULT(Y). The update failed for program descriptor FPEDESC with completion code 2F, because the BMPTYPE(Y) attribute conflicts with the Fast Path exclusive FP(E) attribute already defined for program descriptor FPEDESC.