DEFCMD

Read syntax diagramSkip visual syntax diagram>>-DEFCMD--+-etarget--ecmdnm-+--+-itarget--icmdnm-+------------->
           '-etarget--*------'  +-itarget--*------+
                                '-=--=------------'
 
>--+-pgmname------+--(--+-CICSLINK-+--+------+-----------------><
   +-CICS_loadmod-+     +-CICSLOAD-+  '-AUTH-'
   +-execname-----+     '-REXX-----'
   '-(--CLEAR-----'
 

DEFCMD defines (or redefines) REXX user commands.

Operands

etarget
is the 1 to 8 character name of the external target environment you used in a REXX exec issuing this command. This is the external environment name that you directed the command string to. This environment name is looked up in a table and together with the command name determines which REXX program the command string is directed to for processing.
Note:
The external target can match the environment name on the ADDRESS keyword instruction or, if REXXCICS is the current environment (the default condition), can be specified as the first token of the command string.
ecmdnm
is the first command name token that you used issuing this command. This is the first word of the command name as it is known to you. If a special value of asterisk (*) is specified (as part of this definition), then all commands that you issued with an environment name of etarget and that are not more explicitly defined elsewhere, are covered by this command definition. Command names may be up to 16 characters long.
itarget
specifies an internal environment name that this command definition passes to the agent that processes the command string. This is needed so that the external environment names known to you can be redefined without breakage of the agents that process these commands. If the internal and external names are identical, then there is no need for you to specify the internal name. A special value of "=" indicates that itarget is the same as etarget.
icmdnm
is the first word of the internal command name. This is the first part of the command name that is passed to the REXX command agent to specify what command is processed. This is specified only if it is different from ecmdnm. A special value of "=" indicates that icmdnm is the same as ecmdnm.
pgmname
specifies the CICS program that is called by an EXEC CICS LINK to process the command.
CICS_loadmod
specifies the name of the CICS program called because the CICSLOAD option was specified.
Note:
The program is only loaded on the first instance of a command and its address is remembered for subsequent commands.
execname
specifies the exec called as a REXX command server processing this command (or commands). If this server exec is already running then this command is routed to the executing server. If a REXX server by this name is not running, then Automatic Server Initiation (ASI) is used to start the server automatically. The execname can be either a file name (where the file type defaults to EXEC) or it can be in the form filename.filetype.
CICSLINK
is a keyword indicating that the processing agent for the defined REXX command is a standard CICS program that is called by an EXEC CICS LINK.
CICSLOAD
is a keyword indicating that the processing agent is a CICS program that is loaded by an EXEC CICSLOAD.
REXX
is a keyword indicating that the processing agent for this REXX command is a REXX exec that operates as a command server.
AUTH
Note: This is an authorized option.

is a keyword indicating that this is an authorized REXX/CICS command. It is a command that can only be executed by an authorized REXX/CICS user (specified on AUTHUSER command) or from within an exec loaded from an authorized library.

CLEAR
is a keyword indicating that the purpose of this DEFCMD is to clear any previous definitions for the specified external target environment and command names.

Return Codes

0
Normal return
1001
Invalid command
1021
Cannot load program
1023
Entry not found
1048
No client available
1099
Internal error

Example

'DEFCMD CICS SEND = = SENDPGM (CICSLINK'

This example defines a command called SEND for this user only. The user can issue this command, under the default command environment of REXXCICS, by entering:

'CICS SEND arg1 arg2 ... argn'

This example shows program SENDPGM being called by an EXEC CICS LINK command to process this command.

Notes

  1. When the REXX/CICS environment name is REXXCICS (which is the default when all execs or macros are called), then the first token of the command string is the environment name that could have been used with an ADDRESS environment REXX instruction. This provides a more integrated command environment and removes the need for constant environment switching by ADDRESS instructions.
  2. The calling and parameter passing sequences for command programs receiving control by an EXEC CICS LINK and an Assembler BASSM instruction (the CICSLOAD option) are similar. Refer to REXX/CICS Command Definition for more information on writing command programs.
  3. You can use DEFCMD to dynamically tailor a user's command set on a user by user, or application by application basis. DEFCMD commands can be placed in the user's PROFILE EXEC or in application execs. DEFCMD can also be used to override system command definitions.
  4. DEFCMD REXXCICS * is not allowed.
  5. User command definitions are searched before system command definitions (except for DEFCMD, which cannot be overridden).
  6. REXX commands can be written in REXX. These REXX commands in turn call other REXX commands which are written in REXX, in a building block fashion. Since DEFCMD hides the implementation detail from the REXX user (programmer), a command can be quickly written in REXX and later transparently rewritten in another language, if it becomes performance critical.