{ PURPOSE
{   This type serves two purposes.  It is used to define when a condition
{   handler should be called.  Then when the handler is called, it is used to
{   describe the specific condition that occurred.
{
{ DESIGN
{
{   When defining a condition:
{     SELECTOR:  Specifies the general kind of condition for which the handler
{       should be called.  Pmt$condition_combination should be used if all
{       errors of one or more kinds are to be trapped.  The more specific
{       conditions should be used if only a subset of that kind of condition
{       is to be selected.  If a selector with a case is selected, then the
{       case fields must be set to the specific condition or conditions to be
{       trapped.
{
{       The field UNTRANSLATABLE_POINTER is not used.
{
{   When a condition occurs:
{     SELECTOR:  Specifies the general class of the condition that occurred.
{       The selectors pmc$condition_combination and pmc$all_conditions are
{       not used.  The fields for the selector give more detail on the
{       specific condition that occured.  For sets, only one element will be
{       present.
{
{     UNTRANSLATABLE_POINTER:  If a system_condition occurred this gives the
{       value of the untranslatable pointer in the exchange package.

  TYPE
    pmt$condition = record
      case selector: pmt$condition_selector of
      = pmc$system_conditions =
        system_conditions: pmt$system_conditions,
        untranslatable_pointer: ost$pva,
      = pmc$block_exit_processing =
        reason: pmt$block_exit_reason,
      = jmc$job_resource_condition =
        job_resource_condition: jmt$job_resource_condition,
      = mmc$segment_access_condition =
        segment_access_condition: mmt$segment_access_condition,
      = ifc$interactive_condition =
        interactive_condition: ift$interactive_condition,
      = pmc$pit_condition =
        ,
      = pmc$user_defined_condition =
        user_condition_name: pmt$condition_name,
      = pmc$condition_combination =
        combination: pmt$condition_combination,
      casend,
    recend,

    pmt$condition_selector = (pmc$all_conditions, pmc$system_conditions,
      pmc$block_exit_processing, jmc$job_resource_condition,
      mmc$segment_access_condition, ifc$interactive_condition,
      pmc$pit_condition, pmc$user_defined_condition,
      pmc$condition_combination),

    pmt$block_exit_reason = set of (pmc$block_exit, pmc$program_termination,
      pmc$program_abort),

    pmt$condition_combination = set of pmc$system_conditions ..
      pmc$user_defined_condition;

*copyc ift$condition_codes
*copyc jmd$job_resource_condition
*copyc mmd$segment_access_condition
*copyc osd$virtual_address
*copyc pmt$condition_name
*copyc pmt$system_conditions

