?? RIGHT := 110 ??                                                                                            
?? NEWTITLE := 'NOS/VE Dump Analyzer : Display Interfaces' ??                                                 
MODULE dum$display_interfaces;                                                                                
                                                                                                              
{ PURPOSE:                                                                                                    
{   This module contains routines used to display data to an output file.                                     
                                                                                                              
?? NEWTITLE := 'Global Declarations Referenced by This Module', EJECT ??                                      
?? PUSH (LISTEXT := ON) ??                                                                                    
*copyc clc$page_widths                                                                                        
*copyc duc$dump_analyzer_constants                                                                            
*copyc dut$title_data                                                                                         
?? POP ??                                                                                                     
*copyc clp$convert_integer_to_string                                                                          
*copyc clp$new_display_line                                                                                   
*copyc clp$put_display                                                                                        
*copyc clp$reset_for_next_display_page                                                                        
*copyc pmp$get_legible_date_time                                                                              
?? OLDTITLE ??                                                                                                
?? NEWTITLE := 'Global Declarations Declared by This Module', EJECT ??                                        
                                                                                                              
  VAR                                                                                                         
    duv$title_data: [XDCL] dut$title_data := [TRUE, duc$version, ' ', 'UNKNOWN', 'UNKNOWN', 'UNKNOWN'],       
                                                                                                              
    v$narrow_os_info_title_1: string (clc$narrow_page_width),                                                 
    v$narrow_os_info_title_2: string (clc$narrow_page_width),                                                 
    v$narrow_title_1: string (clc$narrow_page_width),                                                         
    v$narrow_title_2: string (clc$narrow_page_width),                                                         
    v$wide_os_info_title: string (clc$wide_page_width),                                                       
    v$wide_title: string (clc$wide_page_width);                                                               
                                                                                                              
?? OLDTITLE ??                                                                                                
?? NEWTITLE := 'dup$new_page_procedure', EJECT ??                                                             
                                                                                                              
{ PURPOSE:                                                                                                    
{   This procedure builds the title information for the display file.                                         
                                                                                                              
  PROCEDURE [XDCL] dup$new_page_procedure                                                                     
    (VAR display_control: clt$display_control;                                                                
         new_page_number: integer;                                                                            
     VAR status: ost$status);                                                                                 
                                                                                                              
    CONST                                                                                                     
      c$max_date_time_length = 18;                                                                            
                                                                                                              
    VAR                                                                                                       
      date: ost$date,                                                                                         
      date_substring: string (c$max_date_time_length),                                                        
      ignore_status: ost$status,                                                                              
      page_number_string: ost$string,                                                                         
      time: ost$time,                                                                                         
      time_substring: string (c$max_date_time_length),                                                        
      wide_title_used: boolean;                                                                               
                                                                                                              
    status.normal := TRUE;                                                                                    
                                                                                                              
    clp$reset_for_next_display_page (display_control, status);                                                
    IF NOT status.normal THEN                                                                                 
      RETURN;  {---->                                                                                         
    IFEND;                                                                                                    
                                                                                                              
    wide_title_used := (display_control.page_width >= clc$wide_page_width);                                   
                                                                                                              
    IF duv$title_data.build_title THEN                                                                        
      pmp$get_legible_date_time (osc$default_date, date, osc$default_time, time, status);                     
      IF NOT status.normal THEN                                                                               
        RETURN;  {---->                                                                                       
      IFEND;                                                                                                  
                                                                                                              
      date_substring := ' ';                                                                                  
      CASE date.date_format OF                                                                                
      = osc$month_date =                                                                                      
        date_substring := date.month;                                                                         
      = osc$mdy_date =                                                                                        
        date_substring := date.mdy;                                                                           
      = osc$iso_date =                                                                                        
        date_substring := date.iso;                                                                           
      = osc$ordinal_date =                                                                                    
        date_substring := date.ordinal;                                                                       
      = osc$dmy_date =                                                                                        
        date_substring := date.dmy;                                                                           
      ELSE                                                                                                    
      CASEND;                                                                                                 
                                                                                                              
      time_substring := ' ';                                                                                  
      CASE time.time_format OF                                                                                
      = osc$ampm_time =                                                                                       
        time_substring := time.ampm;                                                                          
      = osc$hms_time =                                                                                        
        time_substring := time.hms;                                                                           
      = osc$millisecond_time =                                                                                
        time_substring := time.millisecond;                                                                   
      ELSE                                                                                                    
      CASEND;                                                                                                 
                                                                                                              
      IF wide_title_used THEN                                                                                 
        v$wide_title := '';                                                                                   
        v$wide_title (1, 25) := duv$title_data.main_title;                                                    
        v$wide_title (41, 31) := duv$title_data.command_name;                                                 
        v$wide_title (90, 18) := date_substring;                                                              
        v$wide_title (109, 12) := time_substring;                                                             
        v$wide_title (122, 5) := 'PAGE ';                                                                     
        v$wide_os_info_title := '';                                                                           
        v$wide_os_info_title (1, 3) := 'OS=';                                                                 
        v$wide_os_info_title (4, 31) := duv$title_data.system_level;                                          
        v$wide_os_info_title (35, 19) := '  Base System Time=';                                               
        v$wide_os_info_title (54, 20) := duv$title_data.base_system_time;                                     
        v$wide_os_info_title (74, 19) := '  Termination Time=';                                               
        v$wide_os_info_title (93, 20) := duv$title_data.termination_time;                                     
      ELSE                                                                                                    
        v$narrow_title_1 := '';                                                                               
        v$narrow_title_1 (1, 25) := duv$title_data.main_title;                                                
        v$narrow_title_1 (28, 31) := duv$title_data.command_name;                                             
        v$narrow_title_1 (62, 5) := 'PAGE ';                                                                  
        v$narrow_title_2 := '';                                                                               
        v$narrow_title_2 (1, 18) := date_substring;                                                           
        v$narrow_title_2 (21, 12) := time_substring;                                                          
        v$narrow_os_info_title_1 := '';                                                                       
        v$narrow_os_info_title_1 (1, 3) := 'OS=';                                                             
        v$narrow_os_info_title_1 (4, 31) := duv$title_data.system_level;                                      
        v$narrow_os_info_title_2 := '';                                                                       
        v$narrow_os_info_title_2 (1, 17) := 'Base System Time=';                                              
        v$narrow_os_info_title_2 (18, 20) := duv$title_data.base_system_time;                                 
        v$narrow_os_info_title_2 (38, 19) := '  Termination Time=';                                           
        v$narrow_os_info_title_2 (57, 20) := duv$title_data.termination_time;                                 
      IFEND;                                                                                                  
      duv$title_data.build_title := FALSE;                                                                    
    IFEND;                                                                                                    
                                                                                                              
    clp$convert_integer_to_string (new_page_number, 10, FALSE, page_number_string, ignore_status);            
                                                                                                              
    IF wide_title_used THEN                                                                                   
      v$wide_title (127, * ) := page_number_string.value (1, page_number_string.size);                        
      clp$put_display (display_control, v$wide_title, clc$trim, ignore_status);                               
      clp$put_display (display_control, v$wide_os_info_title, clc$trim, ignore_status);                       
    ELSE                                                                                                      
      v$narrow_title_1 (70, * ) := page_number_string.value;                                                  
      clp$put_display (display_control, v$narrow_title_1, clc$trim, ignore_status);                           
      clp$put_display (display_control, v$narrow_title_2, clc$trim, ignore_status);                           
      clp$put_display (display_control, v$narrow_os_info_title_1, clc$trim, ignore_status);                   
      clp$put_display (display_control, v$narrow_os_info_title_2, clc$trim, ignore_status);                   
    IFEND;                                                                                                    
                                                                                                              
    clp$new_display_line (display_control, 1, ignore_status);                                                 
                                                                                                              
  PROCEND dup$new_page_procedure;                                                                             
MODEND dum$display_interfaces;                                                                                
