?? RIGHT := 110 ??
?? NEWTITLE := 'INSTALL_SOFTWARE Utility: RAP$GET_CYCLE_DATA Interface.' ??
MODULE ram$get_cycle_data;

{ PURPOSE:
{   This module contains the interface that returns cycle data for
{   any file.
{
{ DESIGN:
{   The compiled module resides in RAF$LIBRARY.
{
{ NOTES:
{

?? NEWTITLE := 'Global Declarations Referenced by This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
?? POP ??
*copyc pfp$find_cycle_array
*copyc pfp$find_direct_info_record
*copyc pfp$find_directory_array
*copyc pfp$find_next_info_record
*copyc pfp$get_item_info

?? TITLE := 'Global Declarations Declared by This Module', EJECT ??


?? TITLE := '[XDCL] rap$get_cycle_data', EJECT ??

{ PURPOSE:
{   This interface gets the cycle data for any file.
{
{ DESIGN:
{
{ NOTES:
{   When the file path describes a catalog the condition
{   PFE$NAME_NOT_PERMANENT_FILE will be returned by PFP$GET_ITEM_INFO.
{

  PROCEDURE [XDCL] rap$get_cycle_data
    (    file_path: pft$path;
     VAR info_p {input} : pft$p_info;
     VAR cycles_p : pft$p_cycle_array;
     VAR status: ost$status);


    VAR
      directory_p: pft$p_directory_array,
      group: pft$group,
      info_record_p: pft$p_info_record;


    status.normal := TRUE;

    group.group_type := pfc$member;
    group.member_description.family := osc$null_name;
    group.member_description.account := osc$null_name;
    group.member_description.project := osc$null_name;
    group.member_description.user := osc$null_name;

    RESET info_p;

    pfp$get_item_info (file_path, group, $pft$catalog_info_selections [],
          $pft$file_info_selections [pfc$file_directory, pfc$file_description, pfc$file_cycles], info_p,
          status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    RESET info_p;

    pfp$find_next_info_record (info_p, info_record_p, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    pfp$find_directory_array (info_record_p, directory_p, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    pfp$find_direct_info_record (^info_record_p^.body, directory_p^ [1].info_offset, info_record_p, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    pfp$find_cycle_array (info_record_p, cycles_p, status);

  PROCEND rap$get_cycle_data;
MODEND ram$get_cycle_data;
