COMPILATION LISTING OF SEGMENT xmail_print_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/28/88 1319.3 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(86-02-27,Blair), approve(86-02-27,MCR7358), 16* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 17* 85-03-22 Joanne Backs: Modified to add 3 new entrypoints to $get_ and 18* $set_: copies, left_margin, and notify. Added the conversion and size 19* conditions and the CONVERT internal procedure to support these new 20* printing options which can be set in the Personalize Exec Mail menu. 21* 22* 85-04-01 Joanne Backs: Added a short CONFIRM_FIRST internal procedure to 23* display a prompt for changing the printing options before actually doing 24* printing, but if the answer to the prompt is yes, just inform the user the 25* option is not implemented yet. 26* 27* 85-04-02 Joanne Backs: Added calls to ioa_ to display a message to the user 28* if the dprint was sucessfully submitted. A short message will be seen if 29* the confirm option is set and the printing options have already been 30* displayed, but the longer message at all other times. These messages were 31* extracted from xmail_dprint_msgs_ and xmail_dprint_mlist_ to be consistant. 32* 33* 85-04-25 Joanne Backs: Added new internal procedures TEMP_CHANGE and 34* PERFORM_CHANGE to allow the user to temporarily change any of the print 35* options via a lower window dynamic menu. PERFORM_CHANGE will call the 36* respective entrypoint in xmail_Review_Defaults_ to get the new value 37* but will not permanently change the value in the value segment. 38* 39* 85-04-26 JG Backs: Modified CONFIRM_FIRST to output one prompt the first 40* time the printing options are listed and output a different prompt after 41* changes are made. 42* 2) change(87-05-10,Gilcrease), approve(87-05-14,MCR7686), 43* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 44* Update to version 9 dprint_arg. 45* END HISTORY COMMENTS */ 46 47 48 xmail_print_: proc; 49 return; 50 51 /* BEGIN DESCRIPTION 52* 53*function: 54* xmail_print_ 55* 56* The xmail_print_ subroutine is a utility for requesting hard 57* copy output in the xmail environment. It has entrypoints for 58* creating a segment to contain the output until it is printed, 59* submitting the segment to be printed, and for deleting a segment 60* if the need to print it goes away before it is printed. Entries 61* are also provided for manipulation of the stored attributes used 62* to route output. 63* 64* Once a segment is submitted for printing it becomes the 65* responsibility of xmail_print_. It determines the method of 66* output delivery most suitable for the current user, delivers the 67* output, and deletes the segment when delivery is known to have 68* been accomplished. Future versions will actually interogate the 69* user as to the delivery status of requested output and re-issue 70* requests for lost output. The initial version will deliver 71* output via dprint_ and depend upon the daemon to delete segments 72* when they have been printed. 73* 74*history: 75* Written 7/8/81 by Paul Kyzivat 76* 77* 81-07-20 Paul Kyzivat: Add the get/set entries. 78* 79* 82-10-11 Dave Schimke: Modified to use dp_args version 7. 80* 81* 84-09-27 Joanne Backs: Modified to use dp_args version 8. 82* 83*END DESCRIPTION 84**/ 85 86 /* PARAMETERS */ 87 88 dcl id char (*) parameter, 89 dir char (*) parameter, 90 ent char (*) parameter, 91 description char (*) parameter, 92 value char (*) parameter, 93 seg_ptr ptr parameter, 94 dprint_arg_ptr ptr parameter, 95 code fixed bin (35); 96 97 /* AUTOMATIC */ 98 99 dcl bc fixed bin (24), 100 local_ent char (32), 101 local_dir char (168), 102 name_len fixed bin, 103 suffix char (32), 104 type fixed bin (2), 105 yes_sw bit (1) aligned; 106 107 /* CONSTANTS */ 108 109 dcl CHASE init (1) fixed bin (1) static options (constant); 110 dcl 1 CREATED_FILE_FORMAT static options (constant), 111 2 PREFIX char (3) init ("dp."), 112 2 UNIQUE char (15) init ("!??????????????"), 113 2 SUFFIX char (3) init (".**"); 114 dcl DELETE_SEG init ("000100"b) bit (6) static options (constant); 115 dcl NAME init ("xmail_print_") char (12) static options (constant); 116 dcl NO char (2) init ("no") static options (constant); 117 dcl RW_MODE fixed bin (5) init (01010b) static options (constant); 118 dcl RW_MODE_INIT_FILE bit (3) init ("101"b) static options (constant); 119 dcl YES char (3) init ("yes") static options (constant); 120 121 /* EXTERNAL STATIC */ 122 123 dcl error_table_$oldnamerr fixed bin (35) ext static, 124 error_table_$bad_conversion fixed bin (35) ext static, 125 error_table_$smallarg fixed bin (35) ext static; 126 127 /* ENTRIES */ 128 129 dcl delete_$path entry (char (*), char (*), bit (6), char (*), fixed bin (35)), 130 delete_$ptr entry (ptr, bit (6), char (*), fixed bin (35)), 131 hcs_$append_branch entry (char (*), char (*), fixed bin (5), fixed bin (35)), 132 hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)), 133 hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), fixed bin (35)), 134 hcs_$status_mins entry (ptr, fixed bin (2), fixed bin (24), fixed bin (35)), 135 hcs_$terminate_noname entry (ptr, fixed bin (35)), 136 ioa_ entry() options(variable), 137 initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)), 138 unique_chars_ entry (bit (*)) returns (char (15)), 139 xmail_get_str_$yes_no entry (char (*) var, bit (1) aligned); 140 141 /* CONDITIONS */ 142 143 dcl cleanup condition; 144 145 /* BUILTINS */ 146 147 dcl (convert, length, min, null, rtrim, substr) builtin; 148 149 /* INCLUDE FILES */ 150 1 1 /* BEGIN INCLUDE FILE ... dprint_arg.incl.pl1 */ 1 2 /* Modified 11/13/74 by Noel I. Morris */ 1 3 /* Modified: 10 April 1981 by G. Palter for version 6 structure -- longer request type names */ 1 4 /* Modified: 30 April 1982 by R. Kovalcik for version 7 structure -- defer_until_process_terminataion */ 1 5 /* Modified: November 1983 by C. Marker for version 8 structure -- no_separator */ 1 6 1 7 /****^ HISTORY COMMENTS: 1 8* 1) change(87-05-10,Gilcrease), approve(87-05-13,MCR7686), 1 9* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 1 10* Add line_nbrs bit for line-numbered printouts, version 9. 1 11* 2) change(88-02-05,Farley), approve(88-02-05,PBF7686), audit(88-02-05,GWMay), 1 12* install(88-02-05,MR12.2-1022): 1 13* Corrected alignment of line_nbrs, was aligned s/b unaligned.. 1 14* 3) change(88-08-29,Farley), approve(88-09-16,MCR7911), 1 15* audit(88-09-29,Wallman), install(88-10-28,MR12.2-1199): 1 16* Created a new 64 character forms_name variable, which supersedes the old 1 17* char 24 form_name variable, version 10. 1 18* END HISTORY COMMENTS */ 1 19 1 20 1 21 dcl dpap ptr; /* ptr to argument structure */ 1 22 dcl 1 dprint_arg_buf aligned like dprint_arg; /* Automatic storage for arg. */ 1 23 1 24 dcl 1 dprint_arg based (dpap) aligned, /* argument structure */ 1 25 2 version fixed bin, /* version number of dcl - current version is 9 */ 1 26 2 copies fixed bin, /* number of copies wanted */ 1 27 2 delete fixed bin, /* 1=delete after print */ 1 28 2 queue fixed bin, /* print queue */ 1 29 2 pt_pch fixed bin, /* 1=print, 2=punch */ 1 30 2 notify fixed bin, /* 1 = notify user when done */ 1 31 2 heading char (64), /* first page heading */ 1 32 2 output_module fixed bin, /* 1=print, 2=7punch, 3=mcc, 4=raw, 5=plotter */ 1 33 2 dest char (12), /* version 5 made this a pad - see destination below */ 1 34 /* limit of version 1 structure */ 1 35 2 carriage_control, /* Carriage control flags. */ 1 36 3 nep bit (1) unal, /* TRUE if print trhu perf. */ 1 37 3 single bit (1) unal, /* TRUE if ignore FF and VT */ 1 38 3 non_edited bit (1) unal, /* TRUE if printing in non-edited mode */ 1 39 3 truncate bit (1) unal, /* TRUE if truncating lines at line length */ 1 40 3 center_top_label bit (1) unal, /* TRUE if top label to be centered */ 1 41 3 center_bottom_label bit (1) unal, /* TRUE if bottom label to be centered */ 1 42 3 esc bit (1) unal, /* version 5 TRUE if text escapes are to be processed */ 1 43 3 no_separator bit (1) unal, /* version 8 TRUE if the inner head and tail sheets are to be suppressed. */ 1 44 3 line_nbrs bit (1) unal, /* version 9, line numbers */ 1 45 3 padding bit (27) unal, 1 46 2 pad (30) fixed bin, 1 47 2 forms char (8), /* version 5 made this a pad - see form_name below */ 1 48 2 lmargin fixed bin, /* left margin */ 1 49 2 line_lth fixed bin, /* max line lth */ 1 50 /* limit of version 2 structure */ 1 51 2 class char (8), /* version 6 made this a pad - see request_type below */ 1 52 2 page_lth fixed bin, /* Paper length arg */ 1 53 /* limit of version 3 structure */ 1 54 2 top_label char (136), /* top-of-page label */ 1 55 2 bottom_label char (136), /* bottom-of-page label */ 1 56 /* limit of version 4 structure */ 1 57 2 bit_count fixed bin (35), /* segment bit count */ 1 58 2 form_name char (24), /* name of special forms needed - moved from forms */ 1 59 /* version 10 made this a pad - see forms_name below */ 1 60 2 destination char (24), /* the long destination - moved from dest */ 1 61 2 chan_stop_path char (168), /* path of user channel stops - future */ 1 62 /* limit of version 5 structure */ 1 63 2 request_type character (24) unaligned, /* request type for the request */ 1 64 /* limit of version 6 structure */ 1 65 2 defer_until_process_termination fixed bin, /* 1 = don't process request until requesting process terminates */ 1 66 2 forms_name char (64) unal; /* name of special forms needed - moved from form_name */ 1 67 /* limit of version 10 structure */ 1 68 1 69 dcl dprint_arg_version_1 fixed bin int static options (constant) init (1); 1 70 dcl dprint_arg_version_2 fixed bin int static options (constant) init (2); 1 71 dcl dprint_arg_version_3 fixed bin int static options (constant) init (3); 1 72 dcl dprint_arg_version_4 fixed bin int static options (constant) init (4); 1 73 dcl dprint_arg_version_5 fixed bin int static options (constant) init (5); 1 74 dcl dprint_arg_version_6 fixed bin int static options (constant) init (6); 1 75 dcl dprint_arg_version_7 fixed bin int static options (constant) init (7); 1 76 dcl dprint_arg_version_8 fixed bin int static options (constant) init (8); 1 77 dcl dprint_arg_version_9 fixed bin int static options (constant) init (9); 1 78 dcl dprint_arg_version_10 fixed bin int static options (constant) init (10); 1 79 /* current version */ 1 80 1 81 dcl ( 1 82 DP_PRINT init (1), 1 83 DP_PUNCH init (2), 1 84 DP_PLOT init (3) 1 85 ) fixed bin static options (constant); /* for dprint_arg.pt_pch */ 1 86 1 87 /* END INCLUDE FILE ... dprint_arg.incl.pl1 */ 151 152 2 1 /* begin include fine window_dcls.incl.pl1 BIM June 1981 */ 2 2 /* Modified 9 October 1983 by Jon A. Rochlis to add window_$edit_line. */ 2 3 2 4 /* format: style3 */ 2 5 2 6 declare window_$bell entry (pointer, fixed binary (35)); 2 7 declare window_$clear_region 2 8 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary, fixed binary (35)); 2 9 declare window_$clear_to_end_of_line 2 10 entry (pointer, fixed binary (35)); 2 11 declare window_$clear_to_end_of_window 2 12 entry (pointer, fixed binary (35)); 2 13 declare window_$clear_window 2 14 entry (pointer, fixed binary (35)); 2 15 declare window_$delete_chars 2 16 entry (pointer, fixed binary, fixed binary (35)); 2 17 declare window_$get_cursor_position 2 18 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 2 19 2 20 /* Call window_$get_echoed_chars (iocb_ptr, n_to_read, read_buffer, n_read, read_break, code); */ 2 21 2 22 declare window_$get_echoed_chars 2 23 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 2 24 fixed binary (35)); 2 25 declare window_$get_unechoed_chars 2 26 entry (pointer, fixed binary (21), character (*), fixed binary (21), character (1) var, 2 27 fixed binary (35)); 2 28 declare window_$insert_text entry (pointer, character (*), fixed binary (35)); 2 29 declare window_$overwrite_text 2 30 entry (pointer, character (*), fixed binary (35)); 2 31 declare window_$position_cursor 2 32 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 2 33 2 34 /* Call window_$position_cursor_rel (iocb_ptr, delta_line, delta_column, code); */ 2 35 2 36 declare window_$position_cursor_rel 2 37 entry (pointer, fixed binary, fixed binary, fixed binary (35)); 2 38 2 39 /* Call window_$scroll_region (iocb_ptr, first_line_of_region, n_lines_of_region, distance_to_scroll_region_negative_is_up, 2 40* code); */ 2 41 2 42 declare window_$scroll_region 2 43 entry (pointer, fixed binary, fixed binary, fixed binary, fixed binary (35)); 2 44 declare window_$sync entry (pointer, fixed binary (35)); 2 45 2 46 /* Call window_$write_raw_text (iocb_ptr, text_string, code); */ 2 47 2 48 declare window_$write_raw_text 2 49 entry (pointer, character (*), fixed binary (35)); 2 50 2 51 /* Call window_$write_sync_read (iocb_ptr, prompt_string, n_to_read, read_buffer, n_read, break_char, code); */ 2 52 2 53 declare window_$write_sync_read 2 54 entry (pointer, character (*), fixed bin (21), character (*), fixed binary (21), 2 55 character (1) var, fixed binary (35)); 2 56 2 57 /* Call window_$change_line (iocb_ptr, new_line, code); */ 2 58 2 59 declare window_$change_line entry (pointer, fixed binary, fixed binary (35)); 2 60 2 61 /* Call window_$change_column (iocb_ptr, new_column, code); */ 2 62 2 63 declare window_$change_column 2 64 entry (pointer, fixed binary, fixed binary (35)); 2 65 2 66 /* Call window_$get_one_unechoed (iocb_ptr, char_or_len_0, block_flag, code); */ 2 67 declare ( 2 68 window_$get_one_unechoed, 2 69 window_$get_one_unechoed_char 2 70 ) entry (pointer, character (1) var, bit (1) aligned, fixed binary (35)); 2 71 2 72 declare window_$create entry (pointer, pointer, pointer, fixed binary (35)); 2 73 2 74 declare window_$destroy entry (pointer, fixed binary (35)); 2 75 2 76 declare window_$edit_line entry (pointer, pointer, pointer, fixed bin(21), fixed bin(21), fixed bin(35)); 2 77 2 78 /* call window_$edit_line (iocb_ptr, window_edit_line_info_ptr, buffer_ptr, 2 79* buffer_len, n_returned, code); */ 2 80 2 81 2 82 /* end include file window_dcls.incl.pl1 */ 153 154 3 1 /* BEGIN INCLUDE FILE: xmail_data.incl.pl1 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(85-12-20,Blair), approve(86-03-06,MCR7358), 3 6* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 7* Modified 03/15/85 by Joanne Backs adding confirm_print flag. 3 8* 2) change(85-12-20,LJAdams), approve(86-03-06,MCR7358), 3 9* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 10* Adding switch to indicate request for menu display came from general help. 3 11* This is so general help menu will be displayed in top screen. 3 12* 3) change(86-01-10,Blair), approve(86-03-06,MCR7358), 3 13* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 14* Add switch to indicate whether or not it is permissible to process mail 3 15* in other users' mailboxes (foreign_mailbox). 3 16* 4) change(86-01-13,Blair), approve(86-03-06,MCR7358), 3 17* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 18* Add bit to indicate whether or not this is a true cleanup condition. 3 19* 5) change(86-02-06,Blair), approve(86-03-06,MCR7358), 3 20* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 21* Rearrange to group all the bit flags together in one word with a pad. 3 22* 6) change(86-03-05,Blair), approve(86-03-05,MCR7358), 3 23* audit(86-04-21,RBarstad), install(86-05-28,MR12.0-1062): 3 24* Change value_seg ptr to value_seg_pathname to avoid the situation where 3 25* you keep around a pointer to a structure which no longer exists. 3 26* 7) change(87-01-16,Blair), approve(87-02-05,MCR7618), 3 27* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 3 28* Add a field to indicate whether or not we should process interactive msgs. 3 29* Increment version to 4.1 so default value will get set. 3 30* 8) change(87-02-13,Blair), approve(87-02-13,MCR7618), 3 31* audit(87-04-15,RBarstad), install(87-04-26,MR12.1-1025): 3 32* Add a field to indicate whether or not we're processing a reply so that we 3 33* will be able to rebuild the screens properly after a disconnect occurs. 3 34* Error_list #114. 3 35* 9) change(88-07-26,Blair), approve(88-07-26,MCR7959), 3 36* audit(88-08-25,RBarstad), install(88-09-02,MR12.2-1098): 3 37* Add a bit to indicate whether or not the error segment had to be created 3 38* in the pdir (because we didn't have sma access to the mlsys_dir). 3 39* END HISTORY COMMENTS */ 3 40 3 41 3 42 /* Written 5/13/81 by Paul H. Kyzivat */ 3 43 /* Modified 12/16/81 by S. Krupp to delete unused parts of structure 3 44* and to add n_fkeys_used */ 3 45 /* Modified 12/14/82 by Dave Schimke to make the xmail version a 10 character 3 46* varying string. */ 3 47 /* Modified 09/12/83 by Dave Schimke adding interactive_msgs flag */ 3 48 /* Modified 09/14/83 by Dave Schimke adding moved_user_io */ 3 49 /* Modified 09/06/84 by Joanne Backs adding lists_as_menus flag */ 3 50 /* Modified 09/21/84 by Joanne Backs adding remove_menus flag */ 3 51 3 52 dcl xmail_data_ptr external static ptr init (null); 3 53 3 54 dcl 1 xmail_data aligned based (xmail_data_ptr), 3 55 2 mail_dir char (168) varying, 3 56 2 first_label label, 3 57 2 quit_label label, 3 58 2 value_seg_pathname char (168) varying, 3 59 2 moved_user_io ptr, 3 60 2 normal_usage char (80) unal, 3 61 2 function_key_info, 3 62 3 function_key_data_ptr ptr, 3 63 3 n_fkeys_used fixed bin, 3 64 2 actee, 3 65 3 person char(32) varying, 3 66 3 project char(32) varying, 3 67 2 flags aligned, 3 68 3 mail_in_incoming bit (1) unal, 3 69 3 lists_as_menus bit (1) unal, /* personalization */ 3 70 3 remove_menus bit (1) unal, /* personalization */ 3 71 3 confirm_print bit (1) unal, /* personalization */ 3 72 3 multics_mode bit (1) unal, /* personalization */ 3 73 3 interactive_msgs bit (1) unal, /* personalization */ 3 74 3 foreign_mailbox bit (1) unal, /* read others' mailboxes */ 3 75 3 general_help bit (1) unal, /* indicated requesting gen help*/ 3 76 3 cleanup_signalled bit (1) unal, /* on when true cleanup condition */ 3 77 3 msgs_as_mail bit (1) unal, /* on for include_msgs */ 3 78 3 reply_request bit (1) unal, /* on if we're doing a reply */ 3 79 3 error_seg_in_pdir bit (1) unal, /* on if the error_seg is in the pdir */ 3 80 3 pad bit (24) unal; 3 81 3 82 3 83 3 84 dcl xmail_version char(10) var static options(constant) init("4.1"); 3 85 3 86 /* END INCLUDE FILE: xmail_data.incl.pl1 */ 155 156 157 /* ENTRYPOINTS */ 158 159 /* 160* xmail_print_$create_file 161* 162* This entry creates a file to be used for generation of hardcopy 163* output. The directory is chosen automatically, and the 164* entryname is generated uniquely but containing a caller 165* specified identification. The directory and entrynames are 166* returned to the caller. It is the responsibility of the caller 167* to either request printing of the file or request its deletion. 168* 169* id 170* is a brief (16 characters or less) identification of file 171* contents. It will become part of the file name. 172* 173* dir 174* (OUTPUT) is the directory containing the file. 175* 176* ent 177* (OUTPUT) is the entryname of the created file. 178* 179* code 180* (OUTPUT) is a system status code. 181**/ 182 183 create_file: entry (id, dir, ent, code); 184 185 if id ^= "" then suffix = 186 "." || substr (id, 1, min (length (id), 16)); 187 else suffix = ""; 188 189 ent = CREATED_FILE_FORMAT.PREFIX || unique_chars_ (""b) || suffix; 190 dir = xmail_data.mail_dir; 191 192 call hcs_$append_branch (dir, ent, RW_MODE, code); 193 return; 194 195 /* 196* xmail_print_$create_seg 197* 198* This entry creates a segment to be used for generation of 199* hardcopy output. The directory is chosen automatically, and the 200* entryname is generated uniquely but containing a caller 201* specified identification. The segment is initiated with a null 202* reference name and a pointer returned to the caller. It is the 203* responsibility of the caller to either request printing of the 204* segment or request its deletion. 205* 206* id 207* is a brief (16 characters or less) identification of 208* segment contents. It will become part of the file name. 209* 210* seg_ptr 211* (OUTPUT) is a pointer to the created segment. 212* 213* code 214* See above. 215**/ 216 217 create_seg: entry (id, seg_ptr, code); 218 219 seg_ptr = null; 220 local_dir, local_ent = ""; 221 222 on condition (cleanup) call delete_file (local_dir, local_ent, (0)); 223 224 call create_file (id, local_dir, local_ent, code); 225 if code = 0 then call initiate_file_ (local_dir, local_ent, RW_MODE_INIT_FILE, seg_ptr, bc, code); 226 return; 227 228 /* 229* xmail_print_$submit_file 230* 231* This entry point requests that a file (identified by pathname) 232* be printed. The file need not have been created by 233* xmail_print_$create_file. Options controlling the printing are 234* specified via a dprint_arg structure identical to that used in 235* calling dprint_. A text description of the file or its contents 236* is required, for use in conversing with the user about the file. 237* This will be necessary in order to determine whether a file has 238* been received by the user. 239* 240* dir 241* (INPUT) is the directory containing the file to be printed. 242* 243* ent 244* (INPUT) is the entryname of the file to be printed. 245* 246* description 247* (INPUT) is a short (one line) description of the contents of the 248* file, for purposes of communication with the user about it. 249* 250* dprint_arg_ptr 251* (INPUT) 252* is a pointer to a standard dprint arg structure. The following 253* fields are ignored because they are determined internally: queue, 254* pt_pch, heading, output_module, bit_count, destination, request_type, 255* copies, lmargin, and notify. In addition, delete is assumed if 256* the file being printed was created by xmail_print_$create_file or 257* xmail_print_$create_seg. A null pointer may be passed, in which 258* case defaults are used for all fields. 259* 260* code 261* See above. 262**/ 263 264 submit_file: entry (dir, ent, description, dprint_arg_ptr, code); 265 266 call hcs_$status_minf (dir, ent, CHASE, type, bc, code); 267 if code = 0 then call SUBMIT 268 (dir, ent, bc, description, dprint_arg_ptr, code); 269 return; 270 271 /* 272* xmail_print_$submit_seg 273* 274* This entry point requests that a segment (identified by pointer) 275* be printed. The segment need not have been created by 276* xmail_print_$create_seg. Options controlling the printing are 277* specified via a dprint_arg structure identical to that used in 278* calling dprint_. A text description of the segment or its 279* contents is required, for use in conversing with the user about 280* the segment. This will be necessary in order to determine 281* whether a segment has been received by the user. The segment 282* will be terminated and seg_ptr set to null if and only if a zero 283* is returned in code. 284* 285* seg_ptr 286* is a pointer to the file to be printed. 287* 288* description 289* See above. 290* 291* dprint_arg_ptr 292* See above. 293* 294* code 295* See above. 296**/ 297 298 submit_seg: entry (seg_ptr, description, dprint_arg_ptr, code); 299 300 call hcs_$fs_get_path_name (seg_ptr, local_dir, name_len, local_ent, code); 301 if code = 0 then call hcs_$status_mins (seg_ptr, type, bc, code); 302 if code = 0 then call SUBMIT 303 (local_dir, local_ent, bc, description, dprint_arg_ptr, code); 304 if code = 0 then do; 305 call hcs_$terminate_noname (seg_ptr, (0)); /* ignore error code */ 306 seg_ptr = null; 307 end; 308 return; 309 310 /* 311* xmail_print_$delete_file 312* 313* This entry point is used to delete a file created by 314* xmail_print_$create_file when it is determined that the file is 315* not needed and will not be printed. This entry would normally 316* be called from the cleanup condition handler of the procedure 317* which requests the file. 318* 319* dir 320* is the directory containing the file to be deleted, as 321* returned by xmail_print_$create_file. 322* 323* ent 324* is the entry name of the file to be deleted, as returned by 325* xmail_print_$create_file. 326* 327* code 328* See above. 329**/ 330 331 delete_file: entry (dir, ent, code); 332 333 call delete_$path (dir, ent, DELETE_SEG, "", code); 334 return; 335 336 /* 337* xmail_print_$delete_seg 338* 339* This entry point is used to delete a segment created by 340* xmail_print_$create_seg when it is determined that the segment 341* is not needed and will not be printed. This entry would 342* normally be called from the cleanup condition handler of the 343* procedure which requests the segment. 344* 345* seg_ptr 346* is a pointer to the segment to be deleted, as returned by 347* xmail_print_$create_seg. 348* 349* code 350* See above. 351**/ 352 353 delete_seg: entry (seg_ptr, code); 354 355 call delete_$ptr (seg_ptr, DELETE_SEG, "", code); 356 if code = 0 then seg_ptr = null; 357 return; 358 359 /* 360* xmail_print_$get_{heading destination request_type 361* copies left_margin notify} 362* 363* These entries return the identified piece of information. 364* They look for it in the value segment, and if not found they 365* supply a default (if appropriate.) 366**/ 367 368 dcl ( 369 DP_HEAD_VAR init ("dprint_heading"), 370 DP_DEST_VAR init ("dprint_destination"), 371 DP_RQT_VAR init ("dprint_request_type"), 372 DP_COPIES_VAR init ("dprint_copies"), 373 DP_LMARGIN_VAR init ("dprint_left_margin"), 374 DP_NOTIFY_VAR init ("dprint_notify") 375 ) char (20) static options (constant); 376 377 get_heading: entry (value, code); 378 379 call GET (DP_HEAD_VAR); 380 if code = error_table_$oldnamerr 381 then do; 382 if length (value) >= length (xmail_data.actee.person) 383 then do; 384 value = xmail_data.actee.person; 385 code = 0; 386 end; 387 else do; 388 value = ""; 389 code = error_table_$smallarg; 390 end; 391 end; 392 return; 393 394 get_destination: entry (value, code); 395 396 call GET (DP_DEST_VAR); 397 if code = error_table_$oldnamerr 398 then do; 399 value = ""; 400 code = 0; 401 end; 402 return; 403 404 get_request_type: entry (value, code); 405 406 call GET (DP_RQT_VAR); 407 if code = error_table_$oldnamerr 408 then do; 409 value = ""; 410 code = 0; 411 end; 412 return; 413 414 get_copies: entry (value, code); 415 416 call GET (DP_COPIES_VAR); 417 418 if code = error_table_$oldnamerr 419 then do; 420 value = "1"; /* default = 1 */ 421 code = 0; 422 end; 423 return; 424 425 get_left_margin: entry (value, code); 426 427 call GET (DP_LMARGIN_VAR); 428 429 if code = error_table_$oldnamerr 430 then do; 431 value = "0"; /* default = 0 */ 432 code = 0; 433 end; 434 return; 435 436 get_notify: entry (value, code); 437 438 call GET (DP_NOTIFY_VAR); 439 440 if code = error_table_$oldnamerr 441 then do; 442 value = NO; /* default = no */ 443 code = 0; 444 end; 445 446 return; 447 448 /* 449* xmail_print_$set_{heading destination request_type 450* copies left_margin notify} 451* 452* These entries redefine the identified piece of information in the 453* value seg. 454**/ 455 456 set_heading: entry (value, code); 457 458 call SET (DP_HEAD_VAR); 459 return; 460 461 set_destination: entry (value, code); 462 463 call SET (DP_DEST_VAR); 464 return; 465 466 set_request_type: entry (value, code); 467 468 call SET (DP_RQT_VAR); 469 return; 470 471 set_copies: entry (value, code); 472 473 call SET (DP_COPIES_VAR); 474 return; 475 476 set_left_margin: entry (value, code); 477 478 call SET (DP_LMARGIN_VAR); 479 return; 480 481 set_notify: entry (value, code); 482 483 call SET (DP_NOTIFY_VAR); 484 return; 485 486 SUBMIT: proc (print_dir, print_file, bitcount, desc, dp_args_param, status); 487 488 /* PARAMETERS */ 489 490 dcl print_dir char (*), 491 print_file char (*), 492 bitcount fixed bin (24), 493 desc char (*), 494 dp_args_param ptr, 495 status fixed bin (35); 496 497 /* AUTOMATIC */ 498 499 dcl user_heading char (64), 500 user_destination char (24), 501 user_request_type char (24), 502 user_copies char (2), 503 user_copies_bin fixed bin, 504 user_lmargin char (2), 505 user_lmargin_bin fixed bin, 506 user_notify char (3), 507 user_notify_bin fixed bin, 508 matched fixed bin (35), 509 dp_args_p ptr, 510 1 dp_args aligned like dprint_arg based (dp_args_p), 511 1 default_dp_args aligned like dprint_arg; 512 513 /* CONSTANTS */ 514 515 dcl COPIES_LIMIT fixed bin static options (constant) init (30); 516 dcl LEFT_MARGIN_LIMIT fixed bin static options (constant) init (20); 517 518 /* EXTERNAL STATIC */ 519 520 dcl error_table_$unimplemented_version fixed bin (35) ext static; 521 522 /* ENTRIES */ 523 524 dcl match_star_name_ entry (char (*), char (*), fixed bin (35)), 525 dprint_ entry (char (*), char (*), ptr, fixed bin (35)); 526 527 /* BUILTINS */ 528 529 dcl (addr, null, string, unspec) builtin; 530 531 /* BEGIN */ 532 533 call get_heading (user_heading, status); 534 if status = 0 then call get_destination (user_destination, status); 535 if status = 0 then call get_request_type (user_request_type, status); 536 if status = 0 then call get_copies (user_copies, status); 537 if status = 0 then call get_left_margin (user_lmargin, status); 538 if status = 0 then call get_notify (user_notify, status); 539 540 if status ^= 0 then return; 541 542 /* Convert and check values of copies, lmargin, and notify */ 543 544 call CONVERT (user_copies, user_copies_bin, status); 545 if status ^= 0 then return; 546 if user_copies_bin > COPIES_LIMIT 547 then do; 548 user_copies = "1"; /* use default */ 549 user_copies_bin = 1; 550 end; 551 552 call CONVERT (user_lmargin, user_lmargin_bin, status); 553 if status ^= 0 then return; 554 if user_lmargin_bin > LEFT_MARGIN_LIMIT 555 then do; 556 user_lmargin = "0"; /* use default */ 557 user_lmargin_bin = 0; 558 end; 559 560 if user_notify = YES 561 then user_notify_bin = 1; 562 else user_notify_bin = 0; /* use default */ 563 564 if dp_args_param = null then do; 565 dp_args_p = addr (default_dp_args); 566 unspec (dp_args) = ""b; 567 dp_args.version = dprint_arg_version_9; 568 dp_args.delete = 0; 569 string (dp_args.carriage_control) = ""b; 570 dp_args.line_lth = -1; 571 dp_args.page_lth = -1; 572 dp_args.top_label = ""; 573 dp_args.bottom_label = ""; 574 dp_args.form_name = ""; 575 dp_args.chan_stop_path = ""; 576 end; 577 else do; 578 dp_args_p = dp_args_param; 579 if dp_args.version ^= dprint_arg_version_9 then do; 580 status = error_table_$unimplemented_version; 581 return; 582 end; 583 end; 584 585 if xmail_data.confirm_print 586 then call CONFIRM_FIRST; 587 588 dp_args.queue = 0; /* default */ 589 dp_args.pt_pch = 1; /* print */ 590 dp_args.output_module = 1; /* print */ 591 dp_args.bit_count = bitcount; 592 dp_args.heading = user_heading; 593 dp_args.destination = user_destination; 594 dp_args.request_type = user_request_type; 595 dp_args.defer_until_process_termination = 0; 596 dp_args.copies = user_copies_bin; 597 dp_args.lmargin = user_lmargin_bin; 598 dp_args.notify = user_notify_bin; 599 600 call match_star_name_ (print_file, string (CREATED_FILE_FORMAT), matched); 601 if matched = 0 then dp_args.delete = 1; 602 603 call dprint_ (print_dir, print_file, dp_args_p, status); 604 605 if xmail_data.confirm_print 606 then call ioa_ ("Print request has been submitted."); 607 else do; 608 if user_request_type = "" then user_request_type = "system default printer"; 609 if user_destination = "" then user_destination = "not specified"; 610 call ioa_ ("Request for printed copy has been submitted to printer: ^a^/Printed copy to be delivered to: ""^a"". Location: ""^a""", user_request_type, user_heading, user_destination); 611 end; 612 613 SUBMIT_EXIT: 614 return; 615 616 CONFIRM_FIRST: proc; /* within SUBMIT */ 617 618 /* AUTOMATIC */ 619 620 dcl cf_first_time bit (1) aligned; /*first time flag*/ 621 622 /* BEGIN */ 623 624 cf_first_time = "1"b; 625 626 do while ("1"b); 627 call ioa_ (" Header: ^a", user_heading); 628 call ioa_ (" Destination: ^[not specified^;^a^]", user_destination = "", user_destination); 629 call ioa_ (" Station: ^[system default printer^;^a^]", user_request_type= "", user_request_type); 630 call ioa_ (" Left Margin: ^a", user_lmargin); 631 call ioa_ (" Copies: ^a", user_copies); 632 call ioa_ (" Notify: ^a^/", user_notify); 633 if cf_first_time 634 then do; 635 call xmail_get_str_$yes_no ("Do you wish to temporarily change any options before printing?", yes_sw); 636 cf_first_time = "0"b; 637 end; 638 else call xmail_get_str_$yes_no ("Do you wish to make any more changes?", yes_sw); 639 if ^yes_sw then go to CONFIRM_EXIT; 640 call TEMP_CHANGE; 641 end; 642 643 CONFIRM_EXIT: 644 return; 645 646 end CONFIRM_FIRST; 647 648 TEMP_CHANGE: proc (); 649 650 /* 651* Produces a dynamic menu in the lower window providing options to 652* temporarily change the printing options from the personalization 653* menu 654**/ 655 656 /* CONSTANTS */ 657 658 dcl TEMP_CHANGE_CHOICES dim (6) char (26) int static options (constant)init 659 ("Set Header", 660 "Set Destination", 661 "Set Station", 662 "Set Left Margin", 663 "Set Number of Copies", 664 "Notify After Printing") aligned var; 665 666 /* AUTOMATIC */ 667 668 dcl tc_choice fixed bin; 669 dcl tc_code fixed bin (35); 670 dcl tc_selected_done bit (1) aligned; 671 dcl temp_change_menup ptr init (null) int static; 672 673 /* ENTRIES */ 674 675 dcl get_system_free_area_ entry () returns (ptr); 676 dcl xmail_dyn_menu_$create_w_trailer entry ((*) char (*) aligned, char (*), ptr, ptr, ptr, fixed bin (35)); 677 dcl xmail_error_$no_code entry () options (variable); 678 dcl xmail_get_dyn_choice_$trailer entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 679 dcl xmail_get_str_$yes_no entry (char (*) var, bit (1) aligned); 680 dcl xmail_sw_$update_usage entry (char (*)); 681 dcl xmail_sw_$redisplay entry (); 682 683 /* EXTERNAL STATIC */ 684 685 dcl iox_$user_output ptr ext static; 686 687 /* BEGIN */ 688 689 if temp_change_menup = null 690 then do; 691 call xmail_dyn_menu_$create_w_trailer ((TEMP_CHANGE_CHOICES), "", temp_change_menup, null, get_system_free_area_ (), tc_code); 692 if tc_code ^= 0 693 then call xmail_error_$no_code (tc_code, NAME, "q", "Unable to create temporary print change menu.^/ This is an internal programming error."); 694 end; 695 696 do while ("1"b); 697 call xmail_sw_$update_usage (""); 698 call xmail_sw_$redisplay (); 699 call window_$clear_window (iox_$user_output, (0)); 700 call xmail_get_dyn_choice_$trailer (temp_change_menup, tc_choice, tc_selected_done, tc_code); 701 702 if tc_selected_done then go to TEMP_CHANGE_EXIT; 703 if tc_code ^= 0 704 then call xmail_error_$no_code (tc_code, NAME, "q", "Unable to display temporary print change menu.^/ This is an internal programming error."); 705 call window_$clear_window (iox_$user_output, (0)); 706 call PERFORM_CHANGE (tc_choice); 707 708 call xmail_get_str_$yes_no ("More changes?", yes_sw); 709 if ^yes_sw then go to TEMP_CHANGE_EXIT; 710 end; 711 712 TEMP_CHANGE_EXIT: 713 call window_$clear_window (iox_$user_output, (0)); 714 return; 715 716 717 PERFORM_CHANGE: proc (opt); 718 719 /* PARAMETERS */ 720 721 dcl opt fixed bin parameter;/* input */ 722 723 /* AUTOMATIC */ 724 725 dcl name char (26) varying; 726 dcl new_value char (200) varying; 727 dcl new_value_bin fixed bin; 728 729 /* ENTRIES */ 730 731 dcl xmail_Review_Defaults_$get_new_copies entry (char (*), char (*) var, fixed bin); 732 dcl xmail_Review_Defaults_$get_new_destination entry (char (*), char (*) var); 733 dcl xmail_Review_Defaults_$get_new_header entry (char (*), char (*) var); 734 dcl xmail_Review_Defaults_$get_new_margin entry (char (*), char (*) var, fixed bin); 735 dcl xmail_Review_Defaults_$get_new_notify entry (char (*), char (*), char(*) var); 736 dcl xmail_Review_Defaults_$get_new_station entry (char (*), char (*) var); 737 738 /* BEGIN PERFORM_CHANGE */ 739 740 name = TEMP_CHANGE_CHOICES (opt); /* include name of option*/ 741 go to OPT (opt); 742 743 OPT (1): 744 call xmail_Review_Defaults_$get_new_header (user_heading, new_value); 745 if length (new_value) ^= 0 746 then user_heading = new_value; 747 go to OPT_EXIT; 748 749 OPT (2): 750 call xmail_Review_Defaults_$get_new_destination (user_destination, new_value); 751 if length (new_value) ^= 0 752 then user_destination = new_value; 753 go to OPT_EXIT; 754 755 OPT (3): 756 call xmail_Review_Defaults_$get_new_station (user_request_type, new_value); 757 if new_value = "default" 758 then user_request_type = ""; /* null for default*/ 759 else if length (new_value) ^= 0 760 then user_request_type = new_value; 761 go to OPT_EXIT; 762 763 OPT (4): 764 call xmail_Review_Defaults_$get_new_margin (user_lmargin, new_value, new_value_bin); 765 if length (new_value) ^= 0 766 then do; 767 user_lmargin = new_value; /* for message */ 768 user_lmargin_bin = new_value_bin; /* for dprint_ */ 769 end; 770 go to OPT_EXIT; 771 772 OPT (5): 773 call xmail_Review_Defaults_$get_new_copies (user_copies, new_value, new_value_bin); 774 if length (new_value) ^= 0 775 then do; 776 user_copies = new_value; /* for message */ 777 user_copies_bin = new_value_bin; /* for dprint_ */ 778 end; 779 go to OPT_EXIT; 780 781 OPT (6): 782 call xmail_Review_Defaults_$get_new_notify ((name), user_notify, new_value); 783 if length (new_value) ^= 0 784 then do; 785 user_notify = new_value; /* for message */ 786 if new_value = YES 787 then user_notify_bin = 1; /* for dprint_ */ 788 else user_notify_bin = 0; 789 end; 790 go to OPT_EXIT; 791 792 OPT_EXIT: return; 793 end PERFORM_CHANGE; 794 795 end TEMP_CHANGE; 796 797 end SUBMIT; 798 799 CONVERT: proc (c_value_char, c_value_bin, c_status); 800 801 /* 802* Converts a character value to a binary value so it can be tested 803* against limits and inserted in the dprint_ structure. 804**/ 805 806 /* PARAMETERS */ 807 808 dcl c_value_char char (*); /* input */ 809 dcl c_value_bin fixed bin; /* output */ 810 dcl c_status fixed bin (35); /* output */ 811 812 /* CONDITIONS */ 813 814 dcl (conversion, size) condition; 815 816 /* BEGIN */ 817 818 c_status = 0; 819 820 on conversion, size 821 c_status = error_table_$bad_conversion; 822 823 c_value_bin = convert (c_value_bin, c_value_char); 824 825 revert conversion, size; 826 return; 827 828 end CONVERT; 829 830 GET: proc (name); 831 832 dcl name char (20); 833 dcl result char (64) varying; 834 dcl xmail_value_$get entry (char (*), char (*) var, fixed bin (35)), 835 xmail_value_$set entry (char (*), char (*) var, char (*) var, fixed bin (35)); 836 837 call xmail_value_$get (name, result, code); 838 if code = 0 then do; 839 if length (value) >= length (result) 840 then value = result; 841 else do; 842 value = ""; 843 code = error_table_$smallarg; 844 end; 845 end; 846 return; 847 848 SET: entry (name); 849 850 call xmail_value_$set (name, rtrim (value), result, code); 851 return; 852 853 end GET; 854 855 end xmail_print_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/28/88 1302.1 xmail_print_.pl1 >special_ldd>install>MR12.2-1199>xmail_print_.pl1 151 1 10/28/88 1227.7 dprint_arg.incl.pl1 >special_ldd>install>MR12.2-1199>dprint_arg.incl.pl1 153 2 09/12/84 0916.7 window_dcls.incl.pl1 >ldd>include>window_dcls.incl.pl1 155 3 09/08/88 2010.9 xmail_data.incl.pl1 >ldd>include>xmail_data.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. CHASE 000210 constant fixed bin(1,0) initial dcl 109 set ref 266* COPIES_LIMIT constant fixed bin(17,0) initial dcl 515 ref 546 CREATED_FILE_FORMAT 000000 constant structure level 1 packed packed unaligned dcl 110 ref 600 600 DELETE_SEG 000141 constant bit(6) initial packed unaligned dcl 114 set ref 333* 355* DP_COPIES_VAR 000106 constant char(20) initial packed unaligned dcl 368 set ref 416* 473* DP_DEST_VAR 000120 constant char(20) initial packed unaligned dcl 368 set ref 396* 463* DP_HEAD_VAR 000125 constant char(20) initial packed unaligned dcl 368 set ref 379* 458* DP_LMARGIN_VAR 000101 constant char(20) initial packed unaligned dcl 368 set ref 427* 478* DP_NOTIFY_VAR 000074 constant char(20) initial packed unaligned dcl 368 set ref 438* 483* DP_RQT_VAR 000113 constant char(20) initial packed unaligned dcl 368 set ref 406* 468* LEFT_MARGIN_LIMIT constant fixed bin(17,0) initial dcl 516 ref 554 NAME 000135 constant char(12) initial packed unaligned dcl 115 set ref 692* 703* NO 004256 constant char(2) initial packed unaligned dcl 116 ref 442 PREFIX 000000 constant char(3) initial level 2 packed packed unaligned dcl 110 ref 189 RW_MODE 000134 constant fixed bin(5,0) initial dcl 117 set ref 192* RW_MODE_INIT_FILE 000133 constant bit(3) initial packed unaligned dcl 118 set ref 225* TEMP_CHANGE_CHOICES 000014 constant varying char(26) initial array dcl 658 ref 691 740 YES 000132 constant char(3) initial packed unaligned dcl 119 ref 560 786 actee 171 based structure level 2 dcl 3-54 addr builtin function dcl 529 ref 565 bc 000100 automatic fixed bin(24,0) dcl 99 set ref 225* 266* 267* 301* 302* bit_count 204 based fixed bin(35,0) level 2 dcl 499 set ref 591* bitcount parameter fixed bin(24,0) dcl 490 ref 486 591 bottom_label 142 based char(136) level 2 dcl 499 set ref 573* c_status parameter fixed bin(35,0) dcl 810 set ref 799 818* 820* c_value_bin parameter fixed bin(17,0) dcl 809 set ref 799 823* 823 c_value_char parameter char packed unaligned dcl 808 ref 799 823 carriage_control 32 based structure level 2 dcl 499 set ref 569* cf_first_time 000632 automatic bit(1) dcl 620 set ref 624* 633 636* chan_stop_path 221 based char(168) level 2 dcl 499 set ref 575* cleanup 000176 stack reference condition dcl 143 ref 222 code parameter fixed bin(35,0) dcl 88 set ref 183 192* 217 224* 225 225* 264 266* 267 267* 298 300* 301 301* 302 302* 304 331 333* 353 355* 356 377 380 385* 389* 394 397 400* 404 407 410* 414 418 421* 425 429 432* 436 440 443* 456 461 466 471 476 481 837* 838 843* 850* confirm_print 213(03) based bit(1) level 3 packed packed unaligned dcl 3-54 ref 585 605 conversion 000100 stack reference condition dcl 814 ref 820 825 convert builtin function dcl 147 ref 823 copies 1 based fixed bin(17,0) level 2 dcl 499 set ref 596* default_dp_args 000302 automatic structure level 1 dcl 499 set ref 565 defer_until_process_termination 301 based fixed bin(17,0) level 2 dcl 499 set ref 595* delete 2 based fixed bin(17,0) level 2 dcl 499 set ref 568* 601* delete_$path 000020 constant entry external dcl 129 ref 333 delete_$ptr 000022 constant entry external dcl 129 ref 355 desc parameter char packed unaligned dcl 490 ref 486 description parameter char packed unaligned dcl 88 set ref 264 267* 298 302* destination 213 based char(24) level 2 dcl 499 set ref 593* dir parameter char packed unaligned dcl 88 set ref 183 190* 192* 264 266* 267* 331 333* dp_args based structure level 1 dcl 499 set ref 566* dp_args_p 000300 automatic pointer dcl 499 set ref 565* 566 567 568 569 570 571 572 573 574 575 578* 579 588 589 590 591 592 593 594 595 596 597 598 601 603* dp_args_param parameter pointer dcl 490 ref 486 564 578 dprint_ 000056 constant entry external dcl 524 ref 603 dprint_arg based structure level 1 dcl 1-24 dprint_arg_ptr parameter pointer dcl 88 set ref 264 267* 298 302* dprint_arg_version_9 constant fixed bin(17,0) initial dcl 1-77 ref 567 579 ent parameter char packed unaligned dcl 88 set ref 183 189* 192* 264 266* 267* 331 333* error_table_$bad_conversion 000014 external static fixed bin(35,0) dcl 123 ref 820 error_table_$oldnamerr 000012 external static fixed bin(35,0) dcl 123 ref 380 397 407 418 429 440 error_table_$smallarg 000016 external static fixed bin(35,0) dcl 123 ref 389 843 error_table_$unimplemented_version 000052 external static fixed bin(35,0) dcl 520 ref 580 flags 213 based structure level 2 dcl 3-54 form_name 205 based char(24) level 2 dcl 499 set ref 574* get_system_free_area_ 000060 constant entry external dcl 675 ref 691 691 hcs_$append_branch 000024 constant entry external dcl 129 ref 192 hcs_$fs_get_path_name 000026 constant entry external dcl 129 ref 300 hcs_$status_minf 000030 constant entry external dcl 129 ref 266 hcs_$status_mins 000032 constant entry external dcl 129 ref 301 hcs_$terminate_noname 000034 constant entry external dcl 129 ref 305 heading 6 based char(64) level 2 dcl 499 set ref 592* id parameter char packed unaligned dcl 88 set ref 183 185 185 185 217 224* initiate_file_ 000040 constant entry external dcl 129 ref 225 ioa_ 000036 constant entry external dcl 129 ref 605 610 627 628 629 630 631 632 iox_$user_output 000076 external static pointer dcl 685 set ref 699* 705* 712* length builtin function dcl 147 ref 185 382 382 745 751 759 765 774 783 839 839 line_lth 74 based fixed bin(17,0) level 2 dcl 499 set ref 570* lmargin 73 based fixed bin(17,0) level 2 dcl 499 set ref 597* local_dir 000111 automatic char(168) packed unaligned dcl 99 set ref 220* 222* 224* 225* 300* 302* local_ent 000101 automatic char(32) packed unaligned dcl 99 set ref 220* 222* 224* 225* 300* 302* mail_dir based varying char(168) level 2 dcl 3-54 ref 190 match_star_name_ 000054 constant entry external dcl 524 ref 600 matched 000276 automatic fixed bin(35,0) dcl 499 set ref 600* 601 min builtin function dcl 147 ref 185 name 000654 automatic varying char(26) dcl 725 in procedure "PERFORM_CHANGE" set ref 740* 781 name parameter char(20) packed unaligned dcl 832 in procedure "GET" set ref 830 837* 848 850* name_len 000163 automatic fixed bin(17,0) dcl 99 set ref 300* new_value 000664 automatic varying char(200) dcl 726 set ref 743* 745 745 749* 751 751 755* 757 759 759 763* 765 767 772* 774 776 781* 783 785 786 new_value_bin 000747 automatic fixed bin(17,0) dcl 727 set ref 763* 768 772* 777 notify 5 based fixed bin(17,0) level 2 dcl 499 set ref 598* null builtin function dcl 147 in procedure "xmail_print_" ref 219 306 356 null builtin function dcl 529 in procedure "SUBMIT" ref 564 689 691 691 opt parameter fixed bin(17,0) dcl 721 ref 717 740 741 output_module 26 based fixed bin(17,0) level 2 dcl 499 set ref 590* page_lth 77 based fixed bin(17,0) level 2 dcl 499 set ref 571* person 171 based varying char(32) level 3 dcl 3-54 ref 382 384 print_dir parameter char packed unaligned dcl 490 set ref 486 603* print_file parameter char packed unaligned dcl 490 set ref 486 600* 603* pt_pch 4 based fixed bin(17,0) level 2 dcl 499 set ref 589* queue 3 based fixed bin(17,0) level 2 dcl 499 set ref 588* request_type 273 based char(24) level 2 packed packed unaligned dcl 499 set ref 594* result 000756 automatic varying char(64) dcl 833 set ref 837* 839 839 850* rtrim builtin function dcl 147 ref 850 850 seg_ptr parameter pointer dcl 88 set ref 217 219* 225* 298 300* 301* 305* 306* 353 355* 356* size 000106 stack reference condition dcl 814 ref 820 825 status parameter fixed bin(35,0) dcl 490 set ref 486 533* 534 534* 535 535* 536 536* 537 537* 538 538* 540 544* 545 552* 553 580* 603* string builtin function dcl 529 set ref 569* 600 600 substr builtin function dcl 147 ref 185 suffix 000164 automatic char(32) packed unaligned dcl 99 set ref 185* 187* 189 tc_choice 000642 automatic fixed bin(17,0) dcl 668 set ref 700* 706* tc_code 000643 automatic fixed bin(35,0) dcl 669 set ref 691* 692 692* 700* 703 703* tc_selected_done 000644 automatic bit(1) dcl 670 set ref 700* 702 temp_change_menup 000010 internal static pointer initial dcl 671 set ref 689 691* 700* top_label 100 based char(136) level 2 dcl 499 set ref 572* type 000174 automatic fixed bin(2,0) dcl 99 set ref 266* 301* unique_chars_ 000042 constant entry external dcl 129 ref 189 unspec builtin function dcl 529 set ref 566* user_copies 000270 automatic char(2) packed unaligned dcl 499 set ref 536* 544* 548* 631* 772* 776* user_copies_bin 000271 automatic fixed bin(17,0) dcl 499 set ref 544* 546 549* 596 777* user_destination 000254 automatic char(24) packed unaligned dcl 499 set ref 534* 593 609 609* 610* 628 628* 749* 751* user_heading 000234 automatic char(64) packed unaligned dcl 499 set ref 533* 592 610* 627* 743* 745* user_lmargin 000272 automatic char(2) packed unaligned dcl 499 set ref 537* 552* 556* 630* 763* 767* user_lmargin_bin 000273 automatic fixed bin(17,0) dcl 499 set ref 552* 554 557* 597 768* user_notify 000274 automatic char(3) packed unaligned dcl 499 set ref 538* 560 632* 781* 785* user_notify_bin 000275 automatic fixed bin(17,0) dcl 499 set ref 560* 562* 598 786* 788* user_request_type 000262 automatic char(24) packed unaligned dcl 499 set ref 535* 594 608 608* 610* 629 629* 755* 757* 759* value parameter char packed unaligned dcl 88 set ref 377 382 384* 388* 394 399* 404 409* 414 420* 425 431* 436 442* 456 461 466 471 476 481 839 839* 842* 850 850 version based fixed bin(17,0) level 2 dcl 499 set ref 567* 579 window_$clear_window 000046 constant entry external dcl 2-13 ref 699 705 712 xmail_Review_Defaults_$get_new_copies 000100 constant entry external dcl 731 ref 772 xmail_Review_Defaults_$get_new_destination 000102 constant entry external dcl 732 ref 749 xmail_Review_Defaults_$get_new_header 000104 constant entry external dcl 733 ref 743 xmail_Review_Defaults_$get_new_margin 000106 constant entry external dcl 734 ref 763 xmail_Review_Defaults_$get_new_notify 000110 constant entry external dcl 735 ref 781 xmail_Review_Defaults_$get_new_station 000112 constant entry external dcl 736 ref 755 xmail_data based structure level 1 dcl 3-54 xmail_data_ptr 000050 external static pointer initial dcl 3-52 ref 190 382 384 585 605 xmail_dyn_menu_$create_w_trailer 000062 constant entry external dcl 676 ref 691 xmail_error_$no_code 000064 constant entry external dcl 677 ref 692 703 xmail_get_dyn_choice_$trailer 000066 constant entry external dcl 678 ref 700 xmail_get_str_$yes_no 000070 constant entry external dcl 679 in procedure "TEMP_CHANGE" ref 708 xmail_get_str_$yes_no 000044 constant entry external dcl 129 in procedure "xmail_print_" ref 635 638 xmail_sw_$redisplay 000074 constant entry external dcl 681 ref 698 xmail_sw_$update_usage 000072 constant entry external dcl 680 ref 697 xmail_value_$get 000114 constant entry external dcl 834 ref 837 xmail_value_$set 000116 constant entry external dcl 834 ref 850 yes_sw 000175 automatic bit(1) dcl 99 set ref 635* 638* 639 708* 709 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DP_PLOT internal static fixed bin(17,0) initial dcl 1-81 DP_PRINT internal static fixed bin(17,0) initial dcl 1-81 DP_PUNCH internal static fixed bin(17,0) initial dcl 1-81 dpap automatic pointer dcl 1-21 dprint_arg_buf automatic structure level 1 dcl 1-22 dprint_arg_version_1 internal static fixed bin(17,0) initial dcl 1-69 dprint_arg_version_10 internal static fixed bin(17,0) initial dcl 1-78 dprint_arg_version_2 internal static fixed bin(17,0) initial dcl 1-70 dprint_arg_version_3 internal static fixed bin(17,0) initial dcl 1-71 dprint_arg_version_4 internal static fixed bin(17,0) initial dcl 1-72 dprint_arg_version_5 internal static fixed bin(17,0) initial dcl 1-73 dprint_arg_version_6 internal static fixed bin(17,0) initial dcl 1-74 dprint_arg_version_7 internal static fixed bin(17,0) initial dcl 1-75 dprint_arg_version_8 internal static fixed bin(17,0) initial dcl 1-76 window_$bell 000000 constant entry external dcl 2-6 window_$change_column 000000 constant entry external dcl 2-63 window_$change_line 000000 constant entry external dcl 2-59 window_$clear_region 000000 constant entry external dcl 2-7 window_$clear_to_end_of_line 000000 constant entry external dcl 2-9 window_$clear_to_end_of_window 000000 constant entry external dcl 2-11 window_$create 000000 constant entry external dcl 2-72 window_$delete_chars 000000 constant entry external dcl 2-15 window_$destroy 000000 constant entry external dcl 2-74 window_$edit_line 000000 constant entry external dcl 2-76 window_$get_cursor_position 000000 constant entry external dcl 2-17 window_$get_echoed_chars 000000 constant entry external dcl 2-22 window_$get_one_unechoed 000000 constant entry external dcl 2-67 window_$get_one_unechoed_char 000000 constant entry external dcl 2-67 window_$get_unechoed_chars 000000 constant entry external dcl 2-25 window_$insert_text 000000 constant entry external dcl 2-28 window_$overwrite_text 000000 constant entry external dcl 2-29 window_$position_cursor 000000 constant entry external dcl 2-31 window_$position_cursor_rel 000000 constant entry external dcl 2-36 window_$scroll_region 000000 constant entry external dcl 2-42 window_$sync 000000 constant entry external dcl 2-44 window_$write_raw_text 000000 constant entry external dcl 2-48 window_$write_sync_read 000000 constant entry external dcl 2-53 xmail_version internal static varying char(10) initial dcl 3-84 NAMES DECLARED BY EXPLICIT CONTEXT. CONFIRM_EXIT 003213 constant label dcl 643 ref 639 CONFIRM_FIRST 002743 constant entry internal dcl 616 ref 585 CONVERT 004015 constant entry internal dcl 799 ref 544 552 GET 004074 constant entry internal dcl 830 ref 379 396 406 416 427 438 OPT 000006 constant label array(6) dcl 743 ref 741 OPT_EXIT 004013 constant label dcl 792 ref 747 753 761 770 779 790 PERFORM_CHANGE 003533 constant entry internal dcl 717 ref 706 SET 004144 constant entry internal dcl 848 ref 458 463 468 473 478 483 SUBMIT 002206 constant entry internal dcl 486 ref 267 302 SUBMIT_EXIT 002742 constant label dcl 613 TEMP_CHANGE 003214 constant entry internal dcl 648 ref 640 TEMP_CHANGE_EXIT 003520 constant label dcl 712 ref 702 709 create_file 000514 constant entry external dcl 183 ref 224 create_seg 000711 constant entry external dcl 217 delete_file 001376 constant entry external dcl 331 ref 222 delete_seg 001455 constant entry external dcl 353 get_copies 001674 constant entry external dcl 414 ref 536 get_destination 001600 constant entry external dcl 394 ref 534 get_heading 001525 constant entry external dcl 377 ref 533 get_left_margin 001732 constant entry external dcl 425 ref 537 get_notify 001770 constant entry external dcl 436 ref 538 get_request_type 001636 constant entry external dcl 404 ref 535 set_copies 002117 constant entry external dcl 471 set_destination 002051 constant entry external dcl 461 set_heading 002026 constant entry external dcl 456 set_left_margin 002142 constant entry external dcl 476 set_notify 002165 constant entry external dcl 481 set_request_type 002074 constant entry external dcl 466 submit_file 001073 constant entry external dcl 264 submit_seg 001224 constant entry external dcl 298 xmail_print_ 000501 constant entry external dcl 48 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5132 5252 4262 5142 Length 5644 4262 120 356 650 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME xmail_print_ 884 external procedure is an external procedure. on unit on line 222 80 on unit SUBMIT internal procedure shares stack frame of external procedure xmail_print_. CONFIRM_FIRST internal procedure shares stack frame of external procedure xmail_print_. TEMP_CHANGE internal procedure shares stack frame of external procedure xmail_print_. PERFORM_CHANGE internal procedure shares stack frame of external procedure xmail_print_. CONVERT 236 internal procedure enables or reverts conditions. on unit on line 820 64 on unit GET internal procedure shares stack frame of external procedure xmail_print_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 temp_change_menup TEMP_CHANGE STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME xmail_print_ 000100 bc xmail_print_ 000101 local_ent xmail_print_ 000111 local_dir xmail_print_ 000163 name_len xmail_print_ 000164 suffix xmail_print_ 000174 type xmail_print_ 000175 yes_sw xmail_print_ 000234 user_heading SUBMIT 000254 user_destination SUBMIT 000262 user_request_type SUBMIT 000270 user_copies SUBMIT 000271 user_copies_bin SUBMIT 000272 user_lmargin SUBMIT 000273 user_lmargin_bin SUBMIT 000274 user_notify SUBMIT 000275 user_notify_bin SUBMIT 000276 matched SUBMIT 000300 dp_args_p SUBMIT 000302 default_dp_args SUBMIT 000632 cf_first_time CONFIRM_FIRST 000642 tc_choice TEMP_CHANGE 000643 tc_code TEMP_CHANGE 000644 tc_selected_done TEMP_CHANGE 000654 name PERFORM_CHANGE 000664 new_value PERFORM_CHANGE 000747 new_value_bin PERFORM_CHANGE 000756 result GET THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars call_ext_in_desc call_ext_out_desc call_ext_out call_int_this_desc return_mac enable_op shorten_stack ext_entry ext_entry_desc int_entry int_entry_desc any_to_any_truncate_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. delete_$path delete_$ptr dprint_ get_system_free_area_ hcs_$append_branch hcs_$fs_get_path_name hcs_$status_minf hcs_$status_mins hcs_$terminate_noname initiate_file_ ioa_ match_star_name_ unique_chars_ window_$clear_window xmail_Review_Defaults_$get_new_copies xmail_Review_Defaults_$get_new_destination xmail_Review_Defaults_$get_new_header xmail_Review_Defaults_$get_new_margin xmail_Review_Defaults_$get_new_notify xmail_Review_Defaults_$get_new_station xmail_dyn_menu_$create_w_trailer xmail_error_$no_code xmail_get_dyn_choice_$trailer xmail_get_str_$yes_no xmail_get_str_$yes_no xmail_sw_$redisplay xmail_sw_$update_usage xmail_value_$get xmail_value_$set THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$oldnamerr error_table_$smallarg error_table_$unimplemented_version iox_$user_output xmail_data_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 48 000500 49 000506 183 000507 185 000542 187 000573 189 000577 190 000643 192 000660 193 000704 217 000705 219 000731 220 000733 222 000741 224 001000 225 001026 226 001065 264 001066 266 001123 267 001160 269 001216 298 001217 300 001245 301 001276 302 001315 304 001353 305 001355 306 001367 308 001371 331 001372 333 001417 334 001450 353 001451 355 001467 356 001514 357 001520 377 001521 379 001543 380 001545 382 001551 384 001556 385 001564 386 001565 388 001566 389 001573 392 001575 394 001576 396 001616 397 001620 399 001624 400 001632 402 001633 404 001634 406 001654 407 001656 409 001662 410 001670 412 001671 414 001672 416 001712 418 001714 420 001720 421 001726 423 001727 425 001730 427 001750 429 001752 431 001756 432 001764 434 001765 436 001766 438 002006 440 002010 442 002014 443 002022 446 002023 456 002024 458 002044 459 002046 461 002047 463 002067 464 002071 466 002072 468 002112 469 002114 471 002115 473 002135 474 002137 476 002140 478 002160 479 002162 481 002163 483 002203 484 002205 486 002206 533 002231 534 002246 535 002265 536 002304 537 002323 538 002342 540 002361 544 002365 545 002405 546 002411 548 002414 549 002416 552 002420 553 002440 554 002444 556 002447 557 002451 560 002452 562 002461 564 002462 565 002466 566 002470 567 002473 568 002475 569 002476 570 002477 571 002501 572 002502 573 002505 574 002510 575 002513 576 002516 578 002517 579 002522 580 002525 581 002530 585 002531 588 002540 589 002542 590 002544 591 002545 592 002550 593 002553 594 002556 595 002561 596 002562 597 002564 598 002566 600 002570 601 002620 603 002625 605 002654 608 002676 609 002705 610 002714 613 002742 616 002743 624 002744 627 002746 628 002766 629 003017 630 003050 631 003073 632 003113 633 003136 635 003140 636 003162 637 003163 638 003164 639 003206 640 003211 641 003212 643 003213 648 003214 689 003215 691 003222 692 003315 696 003351 697 003352 698 003363 699 003370 700 003402 702 003417 703 003422 705 003456 706 003470 708 003472 709 003514 710 003517 712 003520 714 003532 717 003533 740 003535 741 003546 743 003550 745 003565 747 003573 749 003574 751 003611 753 003617 755 003620 757 003635 759 003646 761 003654 763 003655 765 003676 767 003700 768 003704 770 003706 772 003707 774 003730 776 003732 777 003736 779 003740 781 003741 783 003772 785 003775 786 004001 788 004011 790 004012 792 004013 799 004014 818 004030 820 004032 823 004060 825 004071 826 004073 830 004074 837 004076 838 004117 839 004121 842 004133 843 004140 846 004143 848 004144 850 004146 851 004217 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved