PROCEDURE  get_physical_information (
  physical_array  : (var) array of string = $required
  number_found    : (var) integer = $required
  status          : (var) status = $optional
  )

  VAR
    channel_column              : integer;
    channel_column_offset       : integer;
    channel_connections_length  : integer = 20;
    channel_found               : boolean = false;
    channel_name                : string;
    channel_name_column         : integer;
    count                       : integer;
    device_class                : string;
    element_column              : integer;
    element_id                  : string;
    element_name                : string;
    element_number              : integer = 0;
    element_off_set             : integer = 9;
    ignore_status               : status;
    lcu_line                    : string;
    lcu_output_file             : string = '$local.'//$unique;
    local_status                : status;
    serial_number               : string;
    serial_number_blanks        : string = '      ';
    type_of_device              : string;
  VAREND

  set_file_attributes file = lcu_output_file page_format = continuous

  execute_task sp=logical_configuration_utility

    display_mainframe_configuration e=$channel_adapter do=pc o=$fname(lcu_output_file) status=ignore_status
    display_mainframe_configuration e=$communications_element do=pc o=$fname(lcu_output_file//'.$eoi') status=ignore_status
    rewind_file file = $fname(lcu_output_file)

    REPEAT

      accept_line variable = lcu_line input = $fname(lcu_output_file//'.$asis') line_count=count
      element_column = $scan_string('ELEMENT:', lcu_line)

      IF (element_column > 0) THEN
        element_name_column = element_column + element_off_set
        element_name = $substring(lcu_line, element_name_column, 31)
        device_class = $string($element($name(element_name),DEVICE_CLASS))

        IF device_class ='NETWORK_DEVICE' THEN
           element_id = $string($element($name(element_name),element_identification))

           IF $substring(element_id,2,6) = '$2620_' THEN
             type_of_device = 'MTI  '
           ELSEIF $substring(element_id,2,6) = '$2621_' THEN
             type_of_device = 'MDI  '
           ELSEIF $substring(element_id,2,7) = '$2629_2' THEN
             type_of_device = 'ICA2 '
           ELSEIF $substring(element_id,2,6) = '$4000_' THEN
             type_of_device = '4000 '
           ELSE
             CYCLE
           IFEND

           number_found = number_found + 1
           EXIT_PROC WITH $status(false, 'RA', 0, 'too many elements') WHEN number_found > $upper_bound(physical_array)

           serial_number = $string($element($name(element_name),serial_number))
           serial_number_length = $strlen(serial_number)
           serial_number_length = 6 - serial_number_length
           serial_number = $substr(serial_number_blanks, 1, serial_number_length) // serial_number

           channel_found = false

           REPEAT

             accept_line variable = lcu_line input = $fname(lcu_output_file//'.$asis') line_count=count
             channel_column = $scan_string('CHANNEL CONNECTIONS:', lcu_line)

             IF (channel_column > 0) THEN
               channel_column_offset = channel_column + channel_connections_length
               channel_name_column = $scan_string('CH', $substr(lcu_line, channel_column_offset, ..
                   ($strlen(lcu_line)-channel_column_offset))) + channel_column_offset - 1
               IF channel_name_column = 0 THEN
                 put_line ' Unable to find Channel number.'
                 QUIT
                 EXIT_PROC with $status(false, 'RA', 0, ' Unable to find channel number.')
               IFEND
               channel_name = $substr(lcu_line, channel_name_column, 5)
               channel_found = true
             IFEND

           UNTIL channel_found = true


           physical_array(number_found) = ' ' // $strrep(number_found) // '. ' // type_of_device // ' ' // ..
                element_name // '  ' // channel_name // '  ' // serial_number
         IFEND

      IFEND

    UNTIL count = 0

  QUIT

  delete_file file=$fname(lcu_output_file) status=ignore_status

PROCEND get_physical_information
