{
{   The purpose of this request is to provide a condition handling mechanism for
{ unexpected statuses during task_services File Server and then call a procedure
{ to initiate the process by which the client mainframe calls a request on the
{ server mainframe.
{
{ NOTE: This is the preferred method of beginning remote procedure calls on the
{ client mainframe.  The original procedure dfp$begin_remote_procedure_call can
{ still be used, but the application using the interfacee MUST be 'well-behaved',
{ i.e. must not encounter any unexpected conditions.
{
{    DFP$BEGIN_CH_REMOTE_PROCEDURE_CALL (SERVER_LOCATION,
{        ALLOWED_WHEN_SERVER_DEACTIVATED, QUEUE_ENTRY_LOCATION,
{        P_SEND_TO_SERVER_PARAMS, P_SEND_DATA_AREA, STATUS)
{
{ server_location: dft$server_location
{   family_name XOR mainframe_id  XOR served_family_table_index
{      This parameter identifies the  server mainframe to send the request to.
{      If the family_name is specified then the family must be a server
{      family, or an error will be returned.  If the mainframe_id is specified
{      it must be a mainframe already established with a DEFINE_SERVER
{      subcommand of the MANAGE_FILE_SERVER utility.
{      Usage of served_family_table_index is not allowed by applications.
{
{ allowed_when_server_deactivated
{      This parameter indicates whether the request should be honored even
{      when the server is in a deactivated state.  The server is in a deactivated
{      state as a result of a DEACTIVATE_SERVER request on the client, or a
{      DEACTIVATE_CLIENT request on the server.   The only requests that
{      should specify this as TRUE, are those requests involved with the orderly
{      deactivation of the server.  This request will always return an error when
{      the server is in a inactivate, deleted, or terminated state.
{
{      Callers may desire to wait in a higher ring using the procedure
{      osp$wait_on_condition if the server is unavailable.  They may
{      also need to establish a condition handler to allow user to terminate or
{      pause break out of a request waiting for a down server.  If the server
{      becomes deactivated after this request is complete, the subsequent
{      dfp$send_remote_procedure_call request will be allowed to complete.
{      If the server is in an inactive state, or in an awaiting_recovery state
{      the status condition of dfe$server_not_active is returned. If the caller
{      needs to send requests in the recovering state, then the variable
{      dfv$recovery_task must be set to true.  For applications the
{      applications state change procedure is allowed to send requests in the
{      recovering state without setting the variable dfv$recovery_task.
{
{ VAR queue_entry_location: dft$rpc_queue_entry_location
{      This returns the identifier that may be passed to
{      dfp$send_remote_procedure_call and dfp$end_remote_procedure_call to
{      identify the request.  This identifier may not be passed to another job or
{      another task within the same job.
{
{ VAR p_send_to_server_params:   dft$p_user_command_buffer
{     Parameters sent to server
{     Caller responsible for NEXTing in any parameters sent to server.
{
{ VAR p_send_data_area: dft$p_data_area
{     This parameter returns a pointer to a data area that may be used to send
{     data that is too large to fit into the areas provided by the send parameter
{     area.  If the data is to large to fit into this area, the caller must use a
{     served permanent file.
{
{ VAR status: ost$status
{     Conditions
{         dfe$mainframe_not_server
{         dfe$family_not_served
{         dfe$invalid_served_family_index
{         dfe$server_has_terminated
{         dfe$server_not_active
{         dfe$server_has_terminated
