*copyc osd$default_pragmats
MODULE iim$xlate_local_file_to_session;

?? PUSH (LISTEXT := ON) ??
*copyc amt$local_file_name
*copyc fmp$get_cycle_description
*copyc fmp$unlock_path_table
*copyc cle$ecc_lexical
*copyc clp$get_ultimate_connection
*copyc clp$validate_name
*copyc oss$task_private
*copyc osp$set_status_abnormal
*copyc osc$timesharing_terminal_file
?? POP ??


  PROCEDURE [XDCL, #GATE] iip$xlate_local_file_to_session (file_name: amt$local_file_name;
    VAR terminal_file_name: amt$local_file_name;
    VAR status: ost$status);

    VAR
      cycle_description: ^fmt$cycle_description,
      ultimate_name: amt$local_file_name,
      valid_name: boolean,
      validated_name: ost$name;


    terminal_file_name := osc$null_name;

    clp$validate_name (file_name, validated_name, valid_name);
    IF NOT valid_name THEN
      osp$set_status_abnormal ('CL', cle$improper_name, file_name, status);
      RETURN;
    IFEND;

    clp$get_ultimate_connection (validated_name, ultimate_name, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    fmp$get_cycle_description (ultimate_name, cycle_description, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;
    IF cycle_description^.attached_file AND (cycle_description^.device_class = rmc$terminal_device) THEN
      terminal_file_name := cycle_description^.terminal_file_name;
    IFEND;
    fmp$unlock_path_table;

    IF terminal_file_name = osc$null_name THEN
      terminal_file_name := osc$timesharing_terminal_file;
    IFEND;

  PROCEND iip$xlate_local_file_to_session;

MODEND iim$xlate_local_file_to_session;
