  TYPE
    ost$ecp_exception_context = record
      { Information contained in the following record is externalized to an
      { end-user's condition handler for user-defined conditions.
      externalized_info {input, output} : ost$condition_information,

      {The following information is private to the processing of conditions:
      {
      { CALLER_WILL_RETRIEVE_FILE is only set when fsp$open_file or pfp$attach
      { call osp$enforce_exception_policies because these are the only
      { interfaces that will retreive an archived file.  All other callers
      { must not be allowed to wait on a data_retrieval_required condition.
      {
      { CATALOG_MOVE_COUNT specifies the number of times that a space unavailable
      { condition on a catalog has caused the catalog to be moved.  When the count
      { reaches osc$max_catalog_moves, the catalog will no longer be moved and the
      { space must be made available on the catalog's current device.
      {
      { CATALOG_OBJECT is only set when we are attempting to create a catalog.
      { It is used to properly diagnose the mass_storage_class of a nonexistant
      { object.
      {
      { FORCE_WAIT is only set to FALSE when we are processing a segment fault
      { such as volume_unavailable or space_unavailable.  The installed
      { exception policies are ignored at this time.  By forcing a wait, we
      { raise the condition so the accessor may process it.  We do not support
      { an exit policy at this time to prevent recursion in ring 3 on setting
      { a lock.
      {
      { INITIAL_CALL is set to TRUE when the context is initialized and is
      { set to FALSE by OSP$ENFORCE_EXCEPTION_POLICIES each time this context
      { is processed.
      {
      { LOGGING_ALLOWED is only set to FALSE when we are processing a
      { segment fault such as volume_unavailable or space_unavailable.  This
      { prevents filling the log.  In other situations, we maintain this
      { context record throughout successive wait periods.  However for segment
      { faults, we cannot maintain a context; it is lost every time we exit
      { from wait.

      allowed_access_conditions {input} : fst$file_access_conditions,
      caller_will_retrieve_file {input} : boolean,
      file {input} : ost$ecp_file_identification,
      force_wait {input} : boolean,
      initial_call {input} : boolean,
      logging_allowed {input} : boolean,
      password {input} : pft$name,

      catalog_move_count {input, output} : 0 .. osc$ecp_max_catalog_moves,
      condition_status {input, output} : ost$status,
      raised_conditions {input, output} : fst$file_access_conditions,
      wait {input, output} : boolean,
      wait_time {input, output} : 0 .. fsc$longest_wait_time,

      catalog_object {input} : boolean,
      elapsed_wait_time {output} : 0 .. fsc$longest_wait_time,
    recend;

*copyc fsc$longest_wait_time
*copyc fst$file_access_conditions
*copyc osc$ecp_max_catalog_moves
*copyc ost$condition_information
*copyc ost$ecp_file_identification
*copyc ost$status
