?? NEWTITLE := 'NOS/VE File System : File Contents Conversion' ??
MODULE fsm$convert_file_contents;
?? RIGHT := 110 ??

?? NEWTITLE := 'Global Declarations Referenced by this Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc amc$condition_code_limits
*copyc amt$file_contents
*copyc amt$file_structure
*copyc fsc$file_contents
*copyc fse$get_info_validation_errors
*copyc ost$status

*copyc clp$trimmed_string_size
*copyc osp$append_status_parameter
*copyc osp$set_status_abnormal
?? POP ??
?? OLDTITLE ??

?? NEWTITLE := 'PROCEDURE [XDCL, #GATE] fsp$convert_file_contents', EJECT ??
*copy fsh$convert_file_contents

  PROCEDURE [XDCL, #GATE] fsp$convert_file_contents
    (    file_contents: amt$file_contents;
         file_structure: amt$file_structure;
     VAR converted_file_contents: amt$file_contents;
     VAR status: ost$status);

    VAR
      file_contents_size: 1 .. osc$max_name_size + 1,
      file_structure_size: 1 .. osc$max_name_size + 1,
      structure_ignored: boolean;

    status.normal := TRUE;
    structure_ignored := FALSE;

    converted_file_contents := file_contents;

    CASE file_contents (1) OF
    = 'A' =
      status.normal := file_contents = fsc$ascii_log;
      structure_ignored := file_structure <> 'DATA';

    = 'B' =
      status.normal := file_contents = fsc$binary_log;
      structure_ignored := file_structure <> 'DATA';

    = 'F' =
      status.normal := file_contents = fsc$file_backup;
      structure_ignored := file_structure <> 'DATA';

    = 'L' =
      IF file_contents = 'LIST' THEN
        structure_ignored := file_structure <> 'DATA';
      ELSEIF file_contents = 'LEGIBLE' THEN
        IF (file_structure = 'DATA') OR (file_structure = 'UNKNOWN') THEN
          converted_file_contents := fsc$legible_data;
        ELSEIF file_structure = 'LIBRARY' THEN
          converted_file_contents := fsc$legible_library;
        ELSEIF file_structure = 'SCL_PROCEDURE' THEN
          converted_file_contents := fsc$legible_scl_procedure;
        ELSEIF file_structure = 'SCL_INCLUDE' THEN
          converted_file_contents := fsc$legible_scl_include;
        ELSEIF file_structure = 'SCL_JOB' THEN
          converted_file_contents := fsc$legible_scl_job;
        ELSE
          structure_ignored := TRUE;
        IFEND;
      ELSE
        status.normal := (file_contents = fsc$legible_data) OR (file_contents = fsc$legible_library) OR
              (file_contents = fsc$legible_scl_procedure) OR (file_contents = fsc$legible_scl_include) OR
              (file_contents = fsc$legible_scl_job);
      IFEND;

    = 'O' =
      IF file_contents = 'OBJECT' THEN
        IF file_structure = 'LIBRARY' THEN
          converted_file_contents := fsc$object_library;
        ELSEIF file_structure = 'DATA' THEN
          converted_file_contents := fsc$object_data;
        ELSE
          structure_ignored := TRUE;
        IFEND;
      ELSE
        status.normal := (file_contents = fsc$object_library) OR (file_contents = fsc$object_data);
      IFEND;

    = 'S' =
      IF file_contents = 'SCREEN' THEN
        IF file_structure = 'FORM' THEN
          converted_file_contents := fsc$screen_form;
        ELSE
          structure_ignored := TRUE;
        IFEND;
      ELSE
        status.normal := file_contents = fsc$screen_form;
      IFEND;

    = 'U' =
      IF file_contents = 'UNKNOWN' THEN
        IF file_structure = 'UNKNOWN' THEN
          ;
        ELSEIF file_structure = 'DATA' THEN
          converted_file_contents := fsc$data;
        ELSE
          structure_ignored := TRUE;
        IFEND;
      ELSE
        status.normal := FALSE;
      IFEND;

    ELSE
      status.normal := FALSE;
    CASEND;

    IF NOT status.normal THEN
      IF file_structure = 'UNKNOWN' THEN
        structure_ignored := TRUE;
        status.normal := TRUE;
      ELSE
        osp$set_status_abnormal (amc$access_method_id, fse$file_contents_not_converted,
              file_contents (1, clp$trimmed_string_size (file_contents)), status);
        osp$append_status_parameter (osc$status_parameter_delimiter,
              file_structure (1, clp$trimmed_string_size (file_structure)), status);
        RETURN; {----->
      IFEND;
    IFEND;

    IF structure_ignored THEN
      osp$set_status_abnormal (amc$access_method_id, fse$file_structure_ignored, '', status);
      osp$append_status_parameter (osc$status_parameter_delimiter,
            file_structure (1, clp$trimmed_string_size (file_structure)), status);
    IFEND;

  PROCEND fsp$convert_file_contents;
MODEND fsm$convert_file_contents;
