CVAF debug trap options

The CVAF table contains a debug trap area. The address of the CVAF table is in field CVTCVAF at offset 12 (X'0C') in the VS1/VS2 common extension to the communication vector table (CVT). The debug trap area can be used to acquire additional information for diagnosing a problem in CVAF.

At offset 12 (X'0C') into the CVAF table is the flag byte, CVFDTFG, which contains the bits that can be set to invoke debugging options of CVAF. The bits and their names are:
Bit 0
CVFSVWA
Bit 1
CVFENT
Bit 2
CVFEXIT
Bit 3
CVFJOB
Bit 4
CVFLOOP
Bit 5-7
Reserved

At offset 15 (X'0F') into the CVAF table is the 5-byte field CVFSTPNM. This field can be set to the last 5 bytes of a CVAF module name for which a debug trap is to be set. (The first 3 bytes of the module name are implicitly ICV.)

At offset 20 (X'14') into the CVAF table is the 8-byte field CVFJOBNM. This field can be set to the name of a job for which a debug trap is to be set. The job name must be padded on the right with blanks if the job name is less than 8 characters.

You can modify the CVAF table using the CVAFGTF program that follows.

There are two debug trap options:

  1. Save CVAF module work areas

    As each module in CVAF gains control, a module work area is allocated for its use. The module work area is released when the module exits. That module work area may be allocated to a subsequent module that gains control. A few CVAF modules ICVCMW00 (and entry point ICVCMG00), ICVCMW01 (and entry point ICVCMG01), and ICVLSN00 do not obtain module work areas. The work area used by CVAF module CVAFGTF cannot be saved.

    It is desirable to make available for inspection a dump of all CVAF module work areas for all CVAF modules that gain control. Set the CVFSVWA flag bit to 1 to prevent release of a CVAF module work area when a module returns control to its caller. Subsequent module work areas will be allocated so as not to overlay work areas of modules previously in control.

    Note: All of the saved module work areas will be released when CVAF returns to its caller.

    If the CVFJOB flag bit is set to 0, the facility that saves CVAF module work areas is active for all CVAF calls. If the CVFJOB bit is set to 1 and CVFJOBNM is set to a job name, the CVAF module work area is saved only when the job name is the same as that stored in CVFJOBNM.

  2. Trap module entry/exit

    You might want to stop processing either when a specific CVAF module is given control (entry) or when it returns control to its caller (exit). Set the CVFENT bit to 1 to set such a trap on entry to a module. set the CVFEXIT bit to 1 to set a trap on exit from a module. The last 5 bytes of the module name for which a trap is set are stored in the CVFSTPNM field of the CVAF table.

    The entry trap logic is contained in module ICVCMW00 when that module is called to allocate a module work area. The exit trap logic is contained in module ICVCMW01 when that module is called to release a module work area.

    Modules ICVCMW00 (and entry point ICVCMG00), ICVCMW01 (and entry point ICVCMG01), ICVLSN00, and CVAFGTF cannot be trapped this way.

    The trap can be either a program check or a write-to-operator-with-reply (WTOR) followed by a loop that waits for a reply.

    If the CVFLOOP bit is set to 0, the trap is a program check (0C1). If the CVFLOOP bit is set to 1, the trap is a write-to-operator (CVAF LOOP - jobname, modulename. Reply to continue.) followed by a loop until the reply is received. Before the reply is received, you can alter the CVFSTPNM field from the operator's console to identify another module. Reply xx,y to continue. (xx is the reply number.)

    The trap can be for all CVAF calls or for only the CVAF calls issued by a job with a specified job name. Set the CVFJOB bit to 0 to set the trap for all jobs. Set the CVFJOB bit to 1 to set the trap for only the job whose name is stored in the CVFJOBNM field of the CVAF table.

To invoke the CVAF debug trap options (program CVAFGTF), do the following procedure:

  1. Enter the following command from the operator's console:
         START CVAFTR
  2. CVAFGTF issues a command message prompting the operator to supply a specific trace command. The message is:
         CVGTF01  ENTER CVAF TRACE COMMAND ENDT, OR DBUG
  3. Enter command DBUG.
  4. CVAFGTF then issues a command message prompting the operator to supply the debug trap options:
         CVGTF04 ENTER CVAF DEBUG PARAMETERS
  5. Reply to this message, using the following format:
         SET/RESET,SAVE/NOSAVE,jobname,modname,ENTRY,EXIT,LOOP/PGMCHK
    The first positional parameter must be:
    SET
    All previously set options are disabled, and the following parameters are inspected to determine the options desired.
    RESET
    Subsequent parameters are ignored, and all debug trap options are removed.
    The second positional parameter must be:
    SAVE
    The save CVAF module work-area option is enabled. If jobname is not supplied as the third parameter, SAVE is active for all jobs. If jobname is supplied as the third parameter, SAVE is active only for that job.
    NOSAVE
    The save CVAF module work-area option is disabled or not enabled.
    omitted
    Indicated by a comma or by the first parameter being the end of the reply to CVGTF04. Operation is the same as if NOSAVE were specified.
    The third positional parameter must be:
    jobname
    Specifies a 1- to 8-character job name. This job name will be used to qualify the save CVAF module work area option, if SAVE is specified as the second parameter. The job name will also be used to qualify the module entry/exit trap if ENTRY is specified as the fifth parameter and EXIT is specified as the sixth parameter.
    omitted
    Indicated by a comma, or by the first or second parameter being the end of the reply to CVGTF04.
    The fourth positional parameter must be:
    modname
    Specifies the last 5 characters of a CVAF module name. The first 3 characters of the module name are assumed to be ICV. For example, if DSD01 is supplied as the fourth parameter, the CVAF module will be ICVDSD01. This module will be used for the module entry/exit trap. If modname is supplied, ENTRY must be supplied as the fifth parameter, or EXIT must be supplied as the sixth parameter, or both.
    omitted
    Indicated by a comma or by the third or earlier parameter being the end of the reply to CVGTF04. The module entry/exit trap option is not enabled.
    The fifth positional parameter must be:
    ENTRY
    Specifies that the module entry trap option is to be enabled. A module name must be specified as the fourth parameter, or ENTRY will be ignored. If jobname is supplied as the third parameter, the module entry trap is enabled only for the specified job. If PGMCHK is specified as the seventh parameter (or the seventh parameter is omitted), the module entry trap results in a 0C1 program check. If LOOP is specified as the seventh parameter, the module entry trap results in an enabled loop.
    omitted
    Indicated by a comma or by the fourth or earlier parameter being the end of the reply to CVGTF04. The module entry/exit trap option is not enabled.
    The sixth positional parameter must be:
    EXIT
    Specifies that the module exit trap option is to be enabled. A module name must be specified as the fourth parameter, or EXIT will be ignored. If jobname is supplied as the third parameter, the module exit trap is enabled only for the specified job. If PGMCHK is specified as the seventh parameter (or the seventh parameter is omitted), the module exit trap results in a 0C1 program check. If LOOP is specified as the seventh parameter, the module exit trap results in an enabled loop.
    omitted
    Indicated by a comma or by the fifth or earlier parameter being the end of the reply to CVGTF04. The module entry/exit trap option is not enabled.
    The seventh positional parameter must be:
    PGMCHK
    The module entry/exit trap results in a 0C1 program check when the specified module gains control. ENTRY must be specified as the fifth parameter, and EXIT must be specified as the sixth parameter.
    LOOP
    The module entry/exit trap results in an enabled loop. The loop continues until the job time limit is reached or the job is canceled, or until CVAFGTF is invoked to change or remove the module entry/exit trap.
    omitted
    Indicated by a comma or by the sixth or earlier parameter being the end of the reply to CVGTF04. Operation is the same as if PGMCHK had been supplied.
  6. CVAFGTF then issues the following message to inform the operator of the debug trap options that are in effect:
         CVGTF05 CVAF DEBUG PARAMETERS ARE p1,p2,...,p7
    Parameters p1 through p7 have the same format as the preceding positional parameters 1 through 7. Parameters are the same as the reply to CVGTF04 if all requirements for invoking the options have been met.
  7. CVAFGTF then reissues message CVGTF01 as in step 2. If ENDT is supplied in response to CVGTF01, the CVAFGTF program terminates, but leaves any selected options set until a reset parameter is issued.