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

{ PURPOSE:
{   This module contains the interface that records the task and task
{   status.
{
{ DESIGN:
{   The compiled module resides in RAF$LIBRARY.
{
{ NOTES:
{

?? NEWTITLE := 'Global Declarations Referenced by This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc ost$status
*copyc ost$string
*copyc rat$installation_control_record
?? POP ??
*copyc clp$trimmed_string_size
*copyc pmp$log_ascii
*copyc rav$task_status
*copyc rav$task_title

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

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

{ PURPOSE:
{   This interface records the task and task status in the subproduct
{   processing record and then displays a subproduct processing status
{   message to the job log.  If the task status is RAC$COMPLETED, the
{   subproduct completed count in the job status record is incremented.
{
{ DESIGN:
{
{ NOTES:
{

  PROCEDURE [XDCL] rap$record_subproduct_status
    (    task: rat$tasks;
         task_status: rat$task_status;
         subproduct_index: rat$subproduct_count;
     VAR icr {input} : rat$installation_control_record;
     VAR status: ost$status);


    status.normal := TRUE;

    icr.subproduct_processing_records_p^ [subproduct_index].task := task;
    icr.subproduct_processing_records_p^ [subproduct_index].task_status := task_status;

    IF icr.subproduct_processing_records_p^ [subproduct_index].task_status = rac$task_started THEN
      icr.job_status_record_p^.started_subproduct_count :=
            icr.job_status_record_p^.started_subproduct_count + 1;
    ELSEIF icr.subproduct_processing_records_p^ [subproduct_index].task_status = rac$task_completed THEN
      icr.job_status_record_p^.completed_subproduct_count :=
            icr.job_status_record_p^.completed_subproduct_count + 1;
    IFEND;

    display_subproduct_status (icr.subproduct_processing_records_p^ [subproduct_index], status);

  PROCEND rap$record_subproduct_status;

?? TITLE := 'display_subproduct_status', EJECT ??

{ PURPOSE:
{   This procedure displays the job status record to $JOB_LOG.
{
{ DESIGN:
{   The record is first converted to string values for displaying.
{
{   The job status line to be displayed is formatted as follows:
{
{     Subproduct <a> <b> <c>.
{
{   where:
{     <a> is the subproduct name.
{     <b> is the task status.
{     <c> is the task.
{
{   As an example the following status line could be created:
{
{    "Subproduct CDCNET started loading."
{
{ NOTES:
{

  PROCEDURE display_subproduct_status
    (    subproduct_processing_record: rat$subp_processing_record;
     VAR status: ost$status);


    VAR
      length: integer,
      line: string (osc$max_string_size),
      subproduct: ost$name,
      task: string (osc$max_string_size),
      task_status: string (osc$max_name_size);


    status.normal := TRUE;

    task_status := rav$task_status [subproduct_processing_record.task_status];
    task := rav$task_title [subproduct_processing_record.task];
    subproduct := subproduct_processing_record.subproduct_info_pointers.attributes_p^.name;

    STRINGREP (line, length, '  Subproduct ', subproduct (1, clp$trimmed_string_size (subproduct)),
          ' ', task_status (1, clp$trimmed_string_size (task_status)),
          ' ', task (1, clp$trimmed_string_size (task)), '.');

    pmp$log_ascii (line (1, length), $pmt$ascii_logset [pmc$job_log], pmc$msg_origin_program, status);

  PROCEND display_subproduct_status;
MODEND ram$record_subproduct_status;
