?? RIGHT := 110 ??
?? NEWTITLE := 'DEFINE_SUBPRODUCT Subutility: DISPLAY_SUBPRODUCT Subcommand.' ??
MODULE ram$display_subproduct;

{ PURPOSE:
{   This module displays the information for the subproduct that is
{   currently being defined.
{
{ DESIGN:
{   This module is an interface to the user inside DEFINE_SUBPRODUCT
{   and to the main display sequence module.
{   The compiled module resides in RAF$LIBRARY.
{
{ NOTES:
{
{

?? NEWTITLE := 'Global Declarations', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc ost$status
*copyc rat$subproduct_info_types
?? POP ??
*copyc clp$get_value
*copyc clp$scan_parameter_list
*copyc rap$display_sif
*copyc rav$defs_scratch_segment
*copyc rav$pacs_catalog_ref_p
*copyc rav$subproduct_info_pointers

?? TITLE := 'rap$display_subproduct', EJECT ??

{ PURPOSE:
{   This procedure displays the information for the subproduct that is
{   currently being defined.
{
{ DESIGN:
{   The SIF sequence in memory is passed to the main display sequence procedure.
{
{ NOTES:
{
{

  PROCEDURE [XDCL] rap$display_subproduct
    (    parameter_list: clt$parameter_list;
     VAR status: ost$status);

{ pdt display_subproduct (
{   display_options, display_option, do : list of key subproduct_attributes, sa, element_list, el, all, a = ..
{                                         subproduct_attributes
{   display_hidden_values               : boolean = false
{   output, o                           : file = $output
{   status                              : var of status = $optional
{   )

?? PUSH (LISTEXT := ON) ??

  VAR
    display_subproduct: [STATIC, READ, cls$pdt] clt$parameter_descriptor_table := [^display_subproduct_names,
      ^display_subproduct_params];

  VAR
    display_subproduct_names: [STATIC, READ, cls$pdt_names_and_defaults] array [1 .. 7] of
      clt$parameter_name_descriptor := [['DISPLAY_OPTIONS', 1], ['DISPLAY_OPTION', 1], ['DO', 1], [
      'DISPLAY_HIDDEN_VALUES', 2], ['OUTPUT', 3], ['O', 3], ['STATUS', 4]];

  VAR
    display_subproduct_params: [STATIC, READ, cls$pdt_parameters] array [1 .. 4] of clt$parameter_descriptor
      := [

{ DISPLAY_OPTIONS DISPLAY_OPTION DO }
    [[clc$optional_with_default, ^display_subproduct_dv1], 1, clc$max_value_sets,1, 1,
      clc$value_range_not_allowed, [^display_subproduct_kv1, clc$keyword_value]],

{ DISPLAY_HIDDEN_VALUES }
    [[clc$optional_with_default, ^display_subproduct_dv2], 1, 1, 1, 1, clc$value_range_not_allowed, [NIL,
      clc$boolean_value]],

{ OUTPUT O }
    [[clc$optional_with_default, ^display_subproduct_dv3], 1, 1, 1, 1, clc$value_range_not_allowed, [NIL,
      clc$file_value]],

{ STATUS }
    [[clc$optional], 1, 1, 1, 1, clc$value_range_not_allowed, [NIL, clc$variable_reference,
      clc$array_not_allowed, clc$status_value]]];

  VAR
    display_subproduct_kv1: [STATIC, READ, cls$pdt_names_and_defaults] array [1 .. 6] of ost$name := [
      'SUBPRODUCT_ATTRIBUTES','SA','ELEMENT_LIST','EL','ALL','A'];

  VAR
    display_subproduct_dv1: [STATIC, READ, cls$pdt_names_and_defaults] string (21) := 'subproduct_attributes';

  VAR
    display_subproduct_dv2: [STATIC, READ, cls$pdt_names_and_defaults] string (5) := 'false';

  VAR
    display_subproduct_dv3: [STATIC, READ, cls$pdt_names_and_defaults] string (7) := '$output';

?? POP ??


    clp$scan_parameter_list (parameter_list, display_subproduct, status);
    IF NOT status.normal THEN
      RETURN;
    IFEND;

    rap$display_sif (rav$subproduct_info_pointers, rav$pacs_catalog_ref_p,
          rav$defs_scratch_segment.sequence_p, status);

  PROCEND rap$display_subproduct;

MODEND ram$display_subproduct;
