COMPILATION LISTING OF SEGMENT micro_transfer Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/17/88 1037.2 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 7 /* ************************************************************************** 8* * * 9* * Name: micro_transfer, mt * 10* * * 11* * This program acts as an interface between the Multics file system * 12* * and I/O modules (protocols), when transferring files between Multics * 13* * and a microcomputer. * 14* * * 15* * Status: * 16* * * 17* * 0) 24 August 1984: Initial coding, M. Mallmes. * 18* * * 19* * 1) 31 January 1985: Modified, M.Mallmes * 20* * Changed the iocb-pointer passed to iox_$modes and * 21* * iox_$control to use the user-supplied field and to * 22* * default to the user_i/o switch iocb-pointer. * 23* * Previous version always used the user_i/o switch * 24* * iocb-pointer even when the user supplied a different * 25* * switch. In summary, iox_$user_io has been replaced * 26* * with mt_options.ts_iocbp. * 27* * * 28* * mt_options.new_modes now contains 'force'. * 29* * deletes file if modes can't be set. * 30* * * 31* * * 32* ************************************************************************* */ 33 34 35 micro_transfer: 36 mt: 37 procedure () options (variable); 38 39 40 /* Automatic */ 41 42 43 dcl absolute_path char (168); 44 dcl active_protocol fixed bin; 45 dcl argument_count fixed bin; 46 dcl arg_idx fixed bin; 47 dcl argument_lth fixed bin (21); 48 dcl argument_ptr ptr; 49 dcl bit_count fixed bin (24); 50 dcl buff char (256) aligned; 51 dcl buf_ptr ptr; 52 dcl call_com_err bit (1); 53 dcl chars_written fixed bin (35); 54 dcl code fixed bin (35); 55 dcl default_modes bit (1); 56 dcl dl_file bit (1); 57 dcl message char (200); 58 dcl modes_set bit (1) init ("0"b); 59 dcl 01 mt_options unal, 60 02 ts_iocbp ptr aligned, 61 02 atd char (512), 62 02 eof_char char (256) var, 63 02 eol_str char (256) var, 64 02 io_switch char (32) var, 65 02 new_modes char (512), 66 02 path char (200), 67 02 protocol char (32), 68 02 sending bit (1), 69 02 receiving bit (1); 70 dcl my_cl_intermediary entry variable; 71 dcl n_read fixed bin (21); 72 dcl new_delay_ptr ptr; 73 dcl 01 new_delay_struc like delay_struc; 74 dcl old_delay_ptr ptr; 75 dcl 01 old_delay_struc like delay_struc; 76 dcl old_modes char (256); 77 dcl protocol_iocb_ptr ptr; 78 dcl protocol_mode fixed bin; 79 dcl protocol_swn char (32); 80 dcl reset_cl_intermediary bit (1); 81 dcl saved_cl_intermediary entry variable; 82 dcl seg_iocb_ptr ptr; 83 dcl seg_mode fixed bin; 84 dcl seg_ptr ptr; 85 dcl seg_swn char (32); 86 dcl source_dir character (168); 87 dcl source_ename character (32); 88 dcl start_of_eol char (32) var; 89 dcl 01 ti like terminal_info; 90 dcl ti_ptr ptr; 91 dcl transmission_time fixed bin (35); 92 dcl whoami char (32); 93 94 /* Based */ 95 96 dcl argument character (argument_lth) based (argument_ptr); 97 98 /* Constants */ 99 100 dcl Buf_Size fixed bin (21) internal static options (constant) init (256); 101 dcl Del_Switches bit (6) internal static options (constant) init ("100100"b) aligned; 102 dcl IBM_PC fixed bin internal static options (constant) init (1); 103 dcl MT_VERSION char (3) internal static options (constant) init ("1.0"); 104 dcl NL char (1) internal static options (constant) init (" 105 "); 106 dcl OTHER fixed bin internal static options (constant) init (2); 107 dcl XMODEM fixed bin internal static options (constant) init (0); 108 109 /* Builtin */ 110 111 dcl (abs, addr, after, before, ceil, index, length, mod, reverse, rtrim, null, substr, trunc) 112 builtin; 113 114 /* Conditions */ 115 dcl cleanup condition; 116 117 /* External */ 118 119 dcl error_table_$action_not_performed 120 fixed bin (35) ext static; 121 dcl error_table_$badopt fixed bin (35) ext static; 122 dcl error_table_$empty_file fixed bin (35) ext static; 123 dcl error_table_$long_record fixed bin (35) ext static; 124 dcl error_table_$noentry fixed bin (35) ext static; 125 dcl error_table_$regexp_too_long fixed bin (35) ext static; 126 dcl error_table_$noarg fixed bin (35) ext static; 127 dcl error_table_$end_of_info fixed bin (35) ext static; 128 dcl error_table_$short_record fixed bin (35) ext static; 129 130 /* Procedures */ 131 132 dcl com_err_ entry options (variable); 133 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 134 dcl cu_$arg_list_ptr entry returns (ptr); 135 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 136 dcl cu_$cl entry (1 aligned, 2 bit (1) unal, 2 bit (35) unal); 137 dcl cu_$generate_call entry (entry, ptr); 138 dcl cu_$get_cl_intermediary entry (entry); 139 dcl cu_$set_cl_intermediary entry (entry); 140 dcl delete_$path entry (char (*), char (*), bit (6) aligned, char (*), fixed bin (35)); 141 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 142 dcl hcs_$set_bc_seg entry (ptr, fixed bin (24), fixed bin (35)); 143 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 144 dcl ioa_ entry () options (variable); 145 dcl iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)); 146 dcl iox_$close entry (ptr, fixed bin (35)); 147 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 148 dcl iox_$detach_iocb entry (ptr, fixed (35)); 149 dcl iox_$get_chars entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 150 dcl iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 151 dcl iox_$look_iocb entry (char (*), ptr, fixed bin (35)); 152 dcl iox_$modes entry (ptr, char (*), char (*), fixed bin (35)); 153 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 154 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 155 dcl nd_handler_ entry (char (*), char (*), char (*), fixed bin (35)); 156 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 157 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 158 dcl unique_chars_ entry (bit (*)) returns (char (15)); 159 160 /* Include */ 161 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 162 163 2 1 /* Begin include file ..... iox_modes.incl.pl1 */ 2 2 2 3 /* Written by C. D. Tavares, 03/17/75 */ 2 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 2 5 2 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 2 7 ("stream_input", "stream_output", "stream_input_output", 2 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 2 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 2 10 "direct_input", "direct_output", "direct_update"); 2 11 2 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 2 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 2 14 2 15 dcl (Stream_input initial (1), 2 16 Stream_output initial (2), 2 17 Stream_input_output initial (3), 2 18 Sequential_input initial (4), 2 19 Sequential_output initial (5), 2 20 Sequential_input_output initial (6), 2 21 Sequential_update initial (7), 2 22 Keyed_sequential_input initial (8), 2 23 Keyed_sequential_output initial (9), 2 24 Keyed_sequential_update initial (10), 2 25 Direct_input initial (11), 2 26 Direct_output initial (12), 2 27 Direct_update initial (13)) fixed bin int static options (constant); 2 28 2 29 /* End include file ..... iox_modes.incl.pl1 */ 164 165 3 1 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 3 2 3 3 /* Created 5/25/77 by J. Stern */ 3 4 3 5 3 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 3 7 2 version fixed bin, /* version number of this sturcture */ 3 8 2 id char (4) unaligned, /* terminal id from answerback */ 3 9 2 term_type char (32) unaligned, /* terminal type name */ 3 10 2 line_type fixed bin, /* line type number */ 3 11 2 baud_rate fixed bin, 3 12 2 reserved (4) fixed bin; /* reserved for future use */ 3 13 3 14 3 15 dcl terminal_info_ptr ptr; 3 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 3 17 3 18 3 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 166 167 4 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 4 2 /* format: style2,^inddcls,idind32 */ 4 3 4 4 declare 1 terminate_file_switches based, 4 5 2 truncate bit (1) unaligned, 4 6 2 set_bc bit (1) unaligned, 4 7 2 terminate bit (1) unaligned, 4 8 2 force_write bit (1) unaligned, 4 9 2 delete bit (1) unaligned; 4 10 4 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 4 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 4 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 4 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 4 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 4 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 4 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 4 18 4 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 168 169 5 1 /* BEGIN INCLUDE FILE ... tty_convert.incl.pl1 */ 5 2 5 3 /* tty_ conversion tables */ 5 4 /* Created 11/3/75 by Robert S. Coren */ 5 5 /* Info structures added 5/19/77 by Robert S. Coren */ 5 6 /* Length of cv_trans changed from 128 to 256 05/03/78 by Robert Coren */ 5 7 /* conversion table mnemonics added JRDavis 21 Aug 80 */ 5 8 /* fix special_chars_struc to have good refers Fri 13 Feb 81 JRDavis */ 5 9 5 10 5 11 /****^ HISTORY COMMENTS: 5 12* 1) change(85-12-01,Negaret), approve(87-07-23,MCR7742), 5 13* audit(87-07-23,GDixon), install(87-08-04,MR12.1-1056): 5 14* Added INPUT_CONVERT_DSA_CR_PROCESSING constant. 5 15* 2) change(88-01-22,Brunelle), approve(88-01-22,MCR7813), 5 16* audit(88-10-05,Blair), install(88-10-17,MR12.2-1171): 5 17* Expand c_chars definition from 3 chars to 15. Change SPECIAL_VERSION 5 18* from 1 to 2. Add version variable to get_special_info_struc and define 5 19* SPECIAL_INFO_STRUCT_VERSION_1. 5 20* END HISTORY COMMENTS */ 5 21 5 22 5 23 /* format: style2,linecom,^indnoniterdo,indcomtxt,^inditerdo,dclind5,idind25 */ 5 24 5 25 5 26 dcl 1 special_chars aligned based, /* table of special character sequences */ 5 27 2 nl_seq aligned like c_chars, /* new-line sequence */ 5 28 2 cr_seq aligned like c_chars, /* carriage-return sequence */ 5 29 2 bs_seq aligned like c_chars, /* backspace sequence */ 5 30 2 tab_seq aligned like c_chars, /* horizontal tab sequence */ 5 31 2 vt_seq aligned like c_chars, /* vertical tab sequence */ 5 32 2 ff_seq aligned like c_chars, /* form-feed sequence */ 5 33 2 printer_on aligned like c_chars, /* printer-on sequence */ 5 34 2 printer_off aligned like c_chars, /* printer_off sequence */ 5 35 2 red_ribbon_shift aligned like c_chars, /* red ribbon shift sequence */ 5 36 2 black_ribbon_shift aligned like c_chars, /* black ribbon shift sequence */ 5 37 2 end_of_page aligned like c_chars, /* end-of-page warning sequence */ 5 38 2 escape_length fixed bin, /* number of escape sequences */ 5 39 2 not_edited_escapes (sc_escape_len refer (special_chars.escape_length)) like c_chars, 5 40 /* use in ^edited mode */ 5 41 2 edited_escapes (sc_escape_len refer (special_chars.escape_length)) like c_chars, 5 42 /* use in edited mode */ 5 43 2 input_escapes aligned, 5 44 3 len fixed bin (8) unaligned, /* length of string */ 5 45 3 str char (sc_input_escape_len refer (special_chars.input_escapes.len)) unaligned, 5 46 /* escape sequence characters */ 5 47 2 input_results aligned, 5 48 3 pad bit (9) unaligned, /* so that strings will look the same */ 5 49 3 str char (sc_input_escape_len refer (special_chars.input_escapes.len)) unaligned; 5 50 /* results of escape sequences */ 5 51 5 52 5 53 dcl c_chars_ptr ptr; 5 54 dcl 1 c_chars based (c_chars_ptr) aligned, 5 55 2 count fixed bin (8) unaligned, 5 56 2 chars (15) char (1) unaligned; 5 57 5 58 dcl sc_escape_len fixed bin; /* count of output escapes to allocate in special_chars */ 5 59 dcl sc_input_escape_len fixed bin; /* count of input escapes to allocate in special_chars */ 5 60 5 61 5 62 dcl 1 cv_trans based aligned, /* conversion/translation table format */ 5 63 2 value (0:255) fixed bin (8) unal; 5 64 5 65 5 66 dcl 1 delay based aligned, /* delay counts for output */ 5 67 2 vert_nl fixed bin, 5 68 2 horz_nl float bin, 5 69 2 const_tab fixed bin, 5 70 2 var_tab float bin, 5 71 2 backspace fixed bin, 5 72 2 vt_ff fixed bin; 5 73 5 74 /* info structures used with orders */ 5 75 5 76 dcl 1 special_chars_struc aligned based, 5 77 2 version fixed bin, 5 78 2 default fixed bin, /* non-zero indicates use default */ 5 79 2 special_chars, /* same as level-1 above */ 5 80 /* has to be spelled out instead of using like */ 5 81 /* because of refer options */ 5 82 3 nl_seq aligned like c_chars, /* new-line sequence */ 5 83 3 cr_seq aligned like c_chars, /* carriage-return sequence */ 5 84 3 bs_seq aligned like c_chars, /* backspace sequence */ 5 85 3 tab_seq aligned like c_chars, /* horizontal tab sequence */ 5 86 3 vt_seq aligned like c_chars, /* vertical tab sequence */ 5 87 3 ff_seq aligned like c_chars, /* form-feed sequence */ 5 88 3 printer_on aligned like c_chars, /* printer-on sequence */ 5 89 3 printer_off aligned like c_chars, /* printer_off sequence */ 5 90 3 red_ribbon_shift aligned like c_chars, /* red ribbon shift sequence */ 5 91 3 black_ribbon_shift aligned like c_chars, /* black ribbon shift sequence */ 5 92 3 end_of_page aligned like c_chars, /* end-of-page warning sequence */ 5 93 3 escape_length fixed bin, /* number of escape sequences */ 5 94 3 not_edited_escapes (sc_escape_len refer (special_chars_struc.escape_length)) like c_chars, 5 95 /* use in ^edited mode */ 5 96 3 edited_escapes (sc_escape_len refer (special_chars_struc.escape_length)) like c_chars, 5 97 /* use in edited mode */ 5 98 3 input_escapes aligned, 5 99 4 len fixed bin (8) unaligned, /* length of string */ 5 100 4 str char (sc_input_escape_len refer (special_chars_struc.input_escapes.len)) unaligned, 5 101 /* escape sequence characters */ 5 102 3 input_results aligned, 5 103 4 pad bit (9) unaligned, /* so that strings will look the same */ 5 104 4 str char (sc_input_escape_len refer (special_chars_struc.input_escapes.len)) unaligned; 5 105 /* results of escape sequences */ 5 106 5 107 dcl 1 cv_trans_struc aligned based, /* all conversion/translation tables */ 5 108 2 version fixed bin, 5 109 2 default fixed bin, /* as above */ 5 110 2 cv_trans like cv_trans; 5 111 5 112 dcl 1 delay_struc aligned based, 5 113 2 version fixed bin, 5 114 2 default fixed bin, /* as above */ 5 115 2 delay like delay; 5 116 5 117 dcl 1 get_special_info_struc based aligned, /* get_special order */ 5 118 2 version char (8), 5 119 2 area_ptr pointer, 5 120 2 table_ptr pointer; 5 121 5 122 dcl SPECIAL_INFO_STRUCT_VERSION_1 5 123 char (8) int static options (constant) init ("sisv1000"); 5 124 dcl SPECIAL_VERSION fixed bin int static options (constant) init (1); 5 125 dcl SPECIAL_VERSION_2 fixed bin int static options (constant) init (2); 5 126 dcl DELAY_VERSION fixed bin int static options (constant) init (1); 5 127 dcl CV_TRANS_VERSION fixed bin int static options (constant) init (2); 5 128 5 129 dcl CV_TRANS_SIZE (2) fixed bin int static options (constant) init (127, 255); 5 130 /* indexed by version number */ 5 131 5 132 5 133 /* values for input and output conversion tables */ 5 134 5 135 dcl ( 5 136 INPUT_CONVERT_ORDINARY init (0), 5 137 INPUT_CONVERT_BREAK init (1), 5 138 INPUT_CONVERT_ESCAPE init (2), 5 139 INPUT_CONVERT_DISCARD init (3), 5 140 INPUT_CONVERT_FORMFEED init (4), 5 141 INPUT_CONVERT_PRECEDENCE_DISCARD 5 142 init (5), 5 143 INPUT_CONVERT_DSA_CR_PROCESSING 5 144 init (6) 5 145 ) fixed bin (8) unaligned internal static options (constant); 5 146 5 147 dcl ( 5 148 OUTPUT_CONVERT_ORDINARY init (0), 5 149 OUTPUT_CONVERT_NEWLINE init (1), 5 150 OUTPUT_CONVERT_CR init (2), 5 151 OUTPUT_CONVERT_HT init (3), 5 152 OUTPUT_CONVERT_BS init (4), 5 153 OUTPUT_CONVERT_VT init (5), 5 154 OUTPUT_CONVERT_FF init (6), 5 155 OUTPUT_CONVERT_OCTAL init (7), 5 156 OUTPUT_CONVERT_RRS init (8), 5 157 OUTPUT_CONVERT_BRS init (9), 5 158 OUTPUT_CONVERT_NO_MOTION init (10), 5 159 OUTPUT_CONVERT_PRECEDENCE_NO_MOTION 5 160 init (11), 5 161 OUTPUT_CONVERT_DONT_SEND init (12), 5 162 OUTPUT_CONVERT_NOT_USED_13 5 163 init (13), 5 164 OUTPUT_CONVERT_NOT_USED_14 5 165 init (14), 5 166 OUTPUT_CONVERT_NOT_USED_15 5 167 init (15), 5 168 OUTPUT_CONVERT_NOT_USED_16 5 169 init (16), 5 170 OUTPUT_CONVERT_FIRST_SPECIAL 5 171 init (17) 5 172 ) fixed bin (8) unaligned internal static options (constant); 5 173 5 174 /* END INCLUDE FILE ... tty_convert.incl.pl1 */ 170 171 172 173 /* micro_transfer: mt: procedure () options (variable); */ 174 175 old_delay_ptr = null (); 176 new_delay_ptr = null (); 177 protocol_iocb_ptr = null (); 178 seg_iocb_ptr = null (); 179 seg_ptr = null (); 180 old_modes = ""; 181 whoami = "micro_transfer"; 182 reset_cl_intermediary = "0"b; 183 dl_file = "0"b; 184 ti_ptr = addr (ti); 185 ti.version = terminal_info_version; 186 old_delay_struc.version = DELAY_VERSION; 187 new_delay_struc.version = DELAY_VERSION; 188 189 on cleanup call clean_up (0); 190 191 192 /* Initialize control arguments, setting defaults where applicable */ 193 194 mt_options.receiving = "0"b; 195 mt_options.sending = "0"b; 196 mt_options.eof_char = ""; 197 mt_options.eol_str = ""; 198 mt_options.protocol = " "; 199 mt_options.io_switch = " "; 200 mt_options.atd = "xmodem_io_ user_i/o"; 201 mt_options.new_modes = " "; 202 default_modes = "1"b; 203 204 205 call cu_$arg_count (argument_count, code); 206 if code ^= 0 207 then do; 208 call com_err_ (code, whoami); 209 return; 210 end; 211 212 if argument_count = 0 213 then do; 214 USAGE: 215 call com_err_ (error_table_$noarg, whoami, "^/Usage: ^a path {-control_args}", whoami); 216 return; 217 end; 218 219 220 call cu_$arg_ptr (1, argument_ptr, argument_lth, code); 221 /* get path */ 222 if code ^= 0 223 then do; 224 call com_err_ (error_table_$noarg, whoami, "^/Usage: ^a path {-control_args}", whoami); 225 return; 226 end; 227 228 if index (argument, "-") ^= 1 229 then path = argument; 230 231 else do; 232 call com_err_ (error_table_$noarg, whoami, "^/Usage: ^a path {-control_args}", whoami); 233 return; 234 end; 235 236 237 /* Scan for control arguments */ 238 239 arg_idx = 2; 240 do while (arg_idx <= argument_count); 241 call cu_$arg_ptr (arg_idx, argument_ptr, argument_lth, code); 242 if code ^= 0 243 then do; 244 call com_err_ (code, argument, "Fetching argument #^d.", arg_idx); 245 return; 246 end; 247 248 else if argument = "-send" 249 then do; 250 mt_options.sending = "1"b; 251 mt_options.receiving = "0"b; 252 end; 253 254 255 else if argument = "-receive" 256 then do; 257 mt_options.receiving = "1"b; 258 mt_options.sending = "0"b; 259 end; 260 261 else if argument = "-modes" 262 then do; 263 arg_idx = arg_idx + 1; 264 call get_sub_arg; 265 mt_options.new_modes = argument; 266 default_modes = "0"b; 267 end; 268 269 else if argument = "-attach_description" | argument = "-atd" 270 then do; 271 arg_idx = arg_idx + 1; 272 call get_sub_arg; 273 mt_options.atd = argument; 274 end; 275 276 else if argument = "-eof" 277 then do; 278 arg_idx = arg_idx + 1; 279 call get_sub_arg; 280 mt_options.eof_char = argument; 281 end; 282 283 else if argument = "-eol" 284 then do; 285 arg_idx = arg_idx + 1; 286 call get_sub_arg; 287 mt_options.eol_str = argument; 288 end; 289 290 else do; 291 BADOPT: 292 call com_err_ (error_table_$badopt, whoami, "^a", argument); 293 return; 294 end; 295 arg_idx = arg_idx + 1; 296 end; 297 298 299 /* Check arguments */ 300 301 if ^mt_options.sending & ^mt_options.receiving 302 then do; /* User didn't specify direction */ 303 call com_err_ (error_table_$noarg, whoami, "^a ^a", "-send", "-receive"); 304 return; 305 end; 306 307 if length (mt_options.eol_str) > 32 308 then do; 309 call com_err_ (error_table_$regexp_too_long, whoami, "^a", mt_options.eol_str); 310 return; 311 end; 312 313 if length (mt_options.eof_char) > 1 314 then do; 315 call com_err_ (error_table_$regexp_too_long, whoami, "^a", mt_options.eof_char); 316 return; 317 end; 318 319 call set_implicit_args; 320 321 call expand_pathname_ (path, source_dir, source_ename, code); 322 if code ^= 0 323 then do; 324 call com_err_ (code, whoami, "^a", path); 325 return; 326 end; 327 328 absolute_path = pathname_ (rtrim (source_dir), rtrim (source_ename)); 329 330 if mt_options.receiving 331 then do; /* Check file on Multics side */ 332 call check_target_file (call_com_err, code); 333 if code ^= 0 334 then do; 335 if code = error_table_$action_not_performed 336 then call clean_up (0); 337 else if call_com_err 338 then call com_err_ (code, whoami, "^a", rtrim (absolute_path)); 339 return; 340 end; 341 seg_mode = Stream_output; 342 protocol_mode = Stream_input; 343 end; 344 345 else do; /* Check file on Multics side */ 346 call check_source_file (code, bit_count); 347 if code ^= 0 348 then do; 349 call com_err_ (code, whoami, "^a", rtrim (absolute_path)); 350 return; 351 end; 352 seg_mode = Stream_input; 353 protocol_mode = Stream_output; 354 end; 355 356 357 seg_swn = unique_chars_ (""b) || "." || rtrim (source_ename); 358 protocol_swn = unique_chars_ (""b) || "." || rtrim (mt_options.protocol); 359 360 /* Attach vfile_ */ 361 call iox_$attach_name (seg_swn, seg_iocb_ptr, "vfile_ " || rtrim (absolute_path), null, code); 362 if code ^= 0 363 then do; 364 call clean_up (0); 365 call com_err_ (code, whoami, "^a", rtrim (absolute_path)); 366 return; 367 end; 368 369 call iox_$open (seg_iocb_ptr, seg_mode, "0"b, code); 370 if code ^= 0 371 then do; 372 call clean_up (0); 373 call com_err_ (code, whoami, "^a", rtrim (absolute_path)); 374 return; 375 end; 376 377 if mt_options.receiving then dl_file = "1"b; 378 379 call iox_$look_iocb ((mt_options.io_switch), mt_options.ts_iocbp, code); 380 if code ^= 0 381 then do; 382 call com_err_ (code, whoami, "^a", mt_options.io_switch); 383 return; 384 end; 385 386 /* Multics side okay, greet user */ 387 388 call ioa_ ("Micro Transfer^xVersion^x^a", MT_VERSION); 389 390 if mt_options.receiving 391 then call ioa_ ("Receiving file ^a", rtrim (absolute_path)); 392 else call display_send_info (bit_count); 393 394 395 /* setup line modes */ 396 /* Delays */ 397 old_delay_ptr = addr (old_delay_struc); 398 new_delay_ptr = addr (new_delay_struc); 399 400 new_delay_struc.default = 0; 401 new_delay_struc.delay.vert_nl = 0; 402 new_delay_struc.delay.horz_nl = 0; 403 new_delay_struc.delay.const_tab = 0; 404 new_delay_struc.delay.var_tab = 0; 405 new_delay_struc.delay.backspace = 0; 406 new_delay_struc.delay.vt_ff = 0; 407 408 call iox_$control (mt_options.ts_iocbp, "get_delay", old_delay_ptr, code); 409 if code ^= 0 410 then do; 411 call com_err_ (code, whoami); 412 call clean_up (0); 413 return; 414 end; 415 416 call iox_$control (mt_options.ts_iocbp, "set_delay", new_delay_ptr, code); 417 if code ^= 0 418 then do; 419 call com_err_ (code, whoami); 420 call clean_up (0); 421 return; 422 end; 423 424 /* Modes and cl_intermediary */ 425 call cu_$get_cl_intermediary (saved_cl_intermediary); 426 my_cl_intermediary = do_cl_intermediary; 427 call cu_$set_cl_intermediary (my_cl_intermediary); 428 reset_cl_intermediary = "1"b; 429 430 call iox_$modes (mt_options.ts_iocbp, mt_options.new_modes, old_modes, code); 431 432 if code ^= 0 433 then do; 434 call com_err_ (code, whoami, "^a", mt_options.new_modes); 435 call clean_up (0); 436 return; 437 end; 438 modes_set = "1"b; 439 440 441 /* Attach the I/O module */ 442 call iox_$attach_name (protocol_swn, protocol_iocb_ptr, rtrim (mt_options.atd), null, code); 443 444 if code ^= 0 445 then do; 446 call clean_up (0); 447 call com_err_ (code, whoami, "^a", mt_options.protocol); 448 return; 449 end; 450 451 452 call iox_$open (protocol_iocb_ptr, protocol_mode, "0"b, code); 453 if code ^= 0 454 then do; 455 call clean_up (0); 456 call com_err_ (code, whoami, "^a", mt_options.protocol); 457 return; 458 end; 459 460 461 /* Do i/o */ 462 463 dl_file = "0"b; 464 buf_ptr = addr (buff); 465 466 if protocol_mode = Stream_output 467 then call send_data (code, message); 468 469 else call get_data (code, message); 470 471 if code ^= 0 472 then do; 473 call clean_up (0); 474 call com_err_ (code, whoami, "^a", rtrim (message)); 475 return; 476 end; 477 478 call clean_up (code); /* Care about the close here */ 479 480 if code ^= 0 481 then do; 482 call com_err_ (code, whoami, "^a", mt_options.protocol); 483 return; 484 end; 485 486 if mt_options.eof_char ^= "" & seg_mode = Stream_output 487 then call strip_remote_eof (code); 488 489 if code ^= 0 490 then call com_err_ (code, whoami, "^/a, ^a", "Unable to translate end-of-file character ", 491 rtrim (absolute_path)); 492 493 494 495 /* This procedure returns the STR portion of a control argument */ 496 497 get_sub_arg: 498 proc; 499 500 if arg_idx > argument_count 501 then do; 502 call com_err_ (error_table_$noarg, whoami); 503 goto EXIT; 504 end; 505 call cu_$arg_ptr (arg_idx, argument_ptr, argument_lth, code); 506 if code ^= 0 507 then do; 508 call com_err_ (code, argument, "Fetching argument #^d.", arg_idx); 509 goto EXIT; 510 end; 511 end get_sub_arg; 512 513 514 /* This procedure sets variables based on the command line input */ 515 516 set_implicit_args: 517 proc; 518 519 mt_options.protocol = before (mt_options.atd, " "); 520 mt_options.io_switch = before (after (mt_options.atd, " "), " "); 521 522 if rtrim (mt_options.protocol) = "xmodem_io_" 523 then do; 524 active_protocol = XMODEM; 525 if default_modes 526 then mt_options.new_modes = 527 "force,no_outp,8bit,breakall,^echoplex,rawi,^crecho,^lfecho,^tabecho,rawo"; 528 end; 529 else if rtrim (mt_options.protocol) = "ibm_pc_io_" 530 then do; 531 active_protocol = IBM_PC; 532 if default_modes 533 then mt_options.new_modes = "force,^8bit,breakall,^echoplex,rawi,^crecho,^lfecho,^tabecho,rawo"; 534 end; 535 536 else do; 537 active_protocol = OTHER; 538 if default_modes 539 then mt_options.new_modes = "force,no_outp,8bit,breakall,^echoplex,rawi,^crecho,^lfecho,^tabecho,rawo"; 540 end; 541 return; 542 end set_implicit_args; 543 544 545 546 /* This procedure checks out the integrity of the file to be received */ 547 548 check_target_file: 549 proc (call_com_err, ec); 550 551 dcl bit_count fixed bin (24); 552 dcl call_com_err bit (1); 553 dcl ec fixed bin (35); 554 555 call_com_err = "1"b; 556 557 call initiate_file_ (source_dir, source_ename, N_ACCESS, seg_ptr, bit_count, ec); 558 if ec = error_table_$noentry 559 then ec = 0; 560 561 if seg_ptr ^= null 562 then do; 563 call nd_handler_ (whoami, source_dir, source_ename, ec); 564 call_com_err = "0"b; 565 end; 566 return; 567 end check_target_file; 568 569 570 571 /* This procedure checks out the integrity of the file to be sent */ 572 573 check_source_file: 574 proc (ec, bit_count); 575 576 dcl bit_count fixed bin (24); 577 dcl ec fixed bin (35); 578 579 580 call initiate_file_ (source_dir, source_ename, R_ACCESS, seg_ptr, bit_count, ec); 581 if ec ^= 0 582 then return; 583 584 if bit_count = 0 585 then do; 586 ec = error_table_$empty_file; 587 return; 588 end; 589 590 end check_source_file; 591 592 593 /* This procedure displays file information before sending a Multics file */ 594 595 display_send_info: 596 proc (bit_count); 597 598 dcl bit_count fixed bin (24); 599 dcl char_length fixed bin; 600 dcl char_count fixed bin (35); 601 dcl ec fixed bin (35); 602 dcl packet_length fixed bin; 603 dcl packet_overhead fixed bin; 604 605 char_count = bit_count / 9; 606 call ioa_ ("Sending file ^a:^x^d^xcharacters", rtrim (absolute_path), char_count); 607 608 call iox_$control (mt_options.ts_iocbp, "terminal_info", ti_ptr, ec); 609 610 if ec = 0 611 then do; 612 goto init_info (active_protocol); 613 614 init_info (0): /* XMODEM */ 615 packet_overhead = 4; 616 packet_length = 128; 617 char_length = 8; 618 goto end_init_info; 619 620 init_info (1): /* IBM_PC */ 621 packet_overhead = 1; 622 packet_length = 1; /* Variable length packets */ 623 char_length = 7; 624 goto end_init_info; 625 626 627 init_info (2): /* OTHER */ 628 packet_overhead = 1; 629 packet_length = 1; 630 char_length = 8; 631 632 end_init_info: 633 bit_count = 634 (char_count * char_length) 635 + (abs (packet_length - mod (char_count, packet_length)) * char_length) 636 + (ceil (char_count / packet_length) * packet_overhead); 637 /* Real bit transmission count */ 638 639 transmission_time = ceil (bit_count / ti.baud_rate); 640 call ioa_ ("Approximate Send Time: ^d minutes, ^d seconds at ^d baud", trunc (transmission_time / 60), 641 mod (transmission_time, 60), ti.baud_rate); 642 end; 643 return; 644 end display_send_info; 645 646 647 /* mt's cl intermediary */ 648 649 do_cl_intermediary: 650 procedure; 651 652 call mt_call_out (cu_$cl, cu_$arg_list_ptr ()); 653 return; 654 end do_cl_intermediary; 655 656 657 658 /* This procedure handles modes setting in the event of a quit */ 659 660 mt_call_out: 661 procedure (Entry, Arg_list); 662 663 dcl Entry variable entry parameter; 664 dcl Arg_list ptr parameter; 665 666 call iox_$modes (mt_options.ts_iocbp, old_modes, (""), 0); 667 call cu_$set_cl_intermediary (saved_cl_intermediary); 668 call cu_$generate_call (Entry, Arg_list); 669 call iox_$modes (mt_options.ts_iocbp, mt_options.new_modes, old_modes, 0); 670 call cu_$set_cl_intermediary (my_cl_intermediary); 671 return; 672 end mt_call_out; 673 674 675 676 /* This procedure reads from the protocol I/O module and writes the data 677* to the Multics segment performing end-of-line and translations 678* as necessary. */ 679 680 get_data: 681 proc (ec, message); 682 683 dcl ec fixed bin (35); 684 dcl eof bit (1); 685 dcl message char (200); 686 687 eof = "0"b; 688 ec = 0; 689 start_of_eol = ""; 690 691 call iox_$get_chars (protocol_iocb_ptr, buf_ptr, Buf_Size - length (mt_options.eol_str), n_read, ec); 692 693 694 do while (^eof); 695 if ec = error_table_$end_of_info 696 then do; 697 eof = "1"b; 698 end; 699 700 else if ec ^= 0 701 then goto error_protocol_in; 702 703 if mt_options.eol_str ^= "" 704 then call translate_remote_eol (n_read, eof); 705 706 call iox_$put_chars (seg_iocb_ptr, buf_ptr, n_read, ec); 707 if ec ^= 0 708 then goto error_file_out; 709 710 if ^eof 711 then call iox_$get_chars (protocol_iocb_ptr, buf_ptr, Buf_Size - length (mt_options.eol_str), n_read, ec); 712 end; 713 ec = 0; 714 return; 715 716 error_protocol_in: 717 message = mt_options.protocol; 718 return; 719 error_file_out: 720 message = absolute_path; 721 return; 722 end get_data; 723 724 725 /* This procedure reads from the Multics segment and writes to the protocol 726* I/O module performing end-of-line and end-of-file conversions as necessary */ 727 728 send_data: 729 proc (ec, message); 730 731 dcl ec fixed bin (35); 732 dcl eof_set bit (1); 733 dcl message char (200); 734 735 chars_written = 0; 736 if mt_options.eol_str ^= "" 737 then call iox_$get_line (seg_iocb_ptr, buf_ptr, Buf_Size - length (mt_options.eol_str), n_read, ec); 738 else call iox_$get_chars (seg_iocb_ptr, buf_ptr, Buf_Size, n_read, ec); 739 740 do while (ec ^= error_table_$end_of_info); 741 if mt_options.eol_str ^= "" & n_read ^= 0 742 then call translate_mu_eol (n_read); 743 744 chars_written = chars_written + n_read; /* need for xmodem */ 745 746 if ec = error_table_$short_record 747 then do; 748 if mt_options.eof_char ^= "" 749 then do; 750 call add_remote_eof (n_read); 751 eof_set = "1"b; 752 end; 753 end; 754 755 else if ec = error_table_$long_record 756 then ; 757 else if ec ^= 0 758 then goto error_file_in; 759 760 call iox_$put_chars (protocol_iocb_ptr, buf_ptr, n_read, ec); 761 if ec ^= 0 762 then goto error_protocol_out; 763 764 if mt_options.eol_str ^= "" 765 then call iox_$get_line (seg_iocb_ptr, buf_ptr, Buf_Size - length (mt_options.eol_str), n_read, ec); 766 else call iox_$get_chars (seg_iocb_ptr, buf_ptr, Buf_Size, n_read, ec); 767 end; 768 769 if ^eof_set & mt_options.eof_char ^= "" 770 then do; 771 call add_remote_eof (n_read); 772 call iox_$put_chars (protocol_iocb_ptr, buf_ptr, n_read, ec); 773 if ec ^= 0 774 then goto error_protocol_out; 775 end; 776 777 ec = 0; 778 return; 779 780 error_protocol_out: 781 message = mt_options.protocol; 782 return; 783 error_file_in: 784 message = absolute_path; 785 return; 786 end send_data; 787 788 789 790 /* This procedure adds the remote's eof character(s) */ 791 792 add_remote_eof: 793 proc (n_read); 794 795 dcl i fixed bin; 796 dcl n_pad fixed bin; 797 dcl n_read fixed bin (21); 798 799 goto case (active_protocol); 800 801 case (0): /* XMODEM */ 802 n_pad = Buf_Size / 2 - mod (chars_written, 128); 803 do i = n_read + 1 to n_read + n_pad; 804 substr (buff, i, 1) = mt_options.eof_char; 805 end; 806 n_read = n_read + n_pad; 807 goto end_case; 808 809 case (1): /* IBM_PC */ 810 case (2): /* OTHER */ 811 substr (buff, n_read + 1, 1) = mt_options.eof_char; 812 n_read = n_read + 1; 813 end_case: 814 return; 815 816 end add_remote_eof; 817 818 819 820 /* This procedure strips the remote eof character (s) */ 821 822 strip_remote_eof: 823 proc (ec); 824 825 dcl char_count fixed bin (35); 826 dcl done_searching bit (1); 827 dcl ec fixed bin (35); 828 dcl i fixed bin; 829 dcl seg_ptr ptr; 830 dcl overlay char (char_count) based (seg_ptr); 831 832 call initiate_file_ (source_dir, source_ename, N_ACCESS, seg_ptr, bit_count, ec); 833 if seg_ptr ^= null & ec = 0 834 then do; 835 char_count = bit_count / 9; 836 done_searching = "0"b; 837 i = char_count; 838 839 do while (i >= 1 & ^done_searching); 840 if substr (seg_ptr -> overlay, i, 1) ^= mt_options.eof_char 841 then i = i - 1; 842 else do; 843 do while (i >= 1 & ^done_searching); 844 if substr (seg_ptr -> overlay, i, 1) = mt_options.eof_char 845 then i = i - 1; 846 else done_searching = "1"b; 847 end; 848 end; 849 end; 850 851 if i ^= char_count & done_searching 852 then do; /* Have to reset the bit count */ 853 bit_count = i * 9; 854 call hcs_$set_bc_seg (seg_ptr, bit_count, ec); 855 end; 856 end; 857 858 if seg_ptr ^= null 859 then call terminate_file_ (seg_ptr, 0, TERM_FILE_TERM, 0); 860 861 return; 862 end strip_remote_eof; 863 864 865 866 867 /* This procedure translates a Multics NL to the remote eol character (s) */ 868 869 translate_mu_eol: 870 proc (n_read); 871 872 dcl n_read fixed bin (21); 873 874 if substr (buff, n_read, 1) = NL 875 then do; 876 substr (buff, n_read, length (mt_options.eol_str)) = mt_options.eol_str; 877 n_read = n_read + length (mt_options.eol_str) - 1; 878 end; 879 end translate_mu_eol; 880 881 882 /* This procedure translates the remote eol character (s) to a Multics NL. */ 883 884 translate_remote_eol: 885 proc (n_read, eof); 886 887 dcl buf_pos fixed bin; 888 dcl eof bit (1); 889 dcl i fixed bin; 890 dcl n_read fixed bin (21); 891 dcl out_buf char (288) var; 892 893 894 buf_pos = 0; 895 out_buf = ""; 896 897 /* See if we've got the last half of the end-of-line sequence */ 898 if start_of_eol || substr (buff, 1, length (mt_options.eol_str) - length (start_of_eol)) = mt_options.eol_str 899 then do; /* yes */ 900 buf_pos = length (mt_options.eol_str) - length (start_of_eol); 901 out_buf = NL; 902 end; 903 904 else out_buf = start_of_eol; /* No */ 905 906 start_of_eol = ""; 907 908 /* Now convert all full end-of-line sequences to a NL */ 909 i = index (substr (buff, buf_pos + 1, n_read - buf_pos), mt_options.eol_str); 910 911 do while (i ^= 0); 912 out_buf = out_buf || substr (buff, buf_pos + 1, i - 1) || NL; 913 buf_pos = buf_pos + i + length (mt_options.eol_str) - 1; 914 i = index (substr (buff, buf_pos + 1, n_read - buf_pos), mt_options.eol_str); 915 end; 916 917 out_buf = out_buf || substr (buff, buf_pos + 1, n_read - buf_pos); 918 n_read = length (out_buf); 919 920 /* See if we still might have an end-of-line sequence beginning at the 921* end of the buffer. i.e. split across two buffers */ 922 923 if ^eof 924 then do; 925 i = index (reverse (out_buf), substr (mt_options.eol_str, 1, 1)); 926 927 if i ^= 0 928 then do; 929 buf_pos = length (out_buf) + 1 - i; 930 if i < length (mt_options.eol_str) 931 then do; 932 if substr (out_buf, buf_pos, i) = substr (mt_options.eol_str, 1, i) 933 then n_read = buf_pos - 1; 934 end; 935 end; 936 937 /* There was a split, so save the first portion of the end-of-line sequence */ 938 if n_read < length (out_buf) 939 then start_of_eol = substr (out_buf, n_read + 1, i); 940 end; 941 942 943 substr (buff, 1, n_read) = substr (out_buf, 1, n_read); 944 return; 945 end translate_remote_eol; 946 947 948 949 /* This procedure restores the environment */ 950 951 clean_up: 952 proc (ec); 953 954 dcl ec fixed bin (35); 955 956 ec = 0; 957 958 if protocol_iocb_ptr ^= null () 959 then do; 960 call iox_$close (protocol_iocb_ptr, ec); 961 call iox_$detach_iocb (protocol_iocb_ptr, 0); 962 end; 963 964 if seg_iocb_ptr ^= null () 965 then do; 966 call iox_$close (seg_iocb_ptr, 0); 967 call iox_$detach_iocb (seg_iocb_ptr, 0); 968 end; 969 970 if reset_cl_intermediary 971 then call cu_$set_cl_intermediary (saved_cl_intermediary); 972 973 if modes_set 974 then call iox_$modes (mt_options.ts_iocbp, old_modes, "", 0); 975 976 if old_delay_ptr ^= null 977 then call iox_$control (mt_options.ts_iocbp, "set_delay", old_delay_ptr, 0); 978 979 if seg_ptr ^= null 980 then call terminate_file_ (seg_ptr, 0, TERM_FILE_TERM, 0); 981 982 if dl_file then call delete_$path (source_dir, source_ename, Del_Switches, whoami, 0); 983 984 return; 985 end clean_up; 986 987 EXIT: 988 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/17/88 1034.1 micro_transfer.pl1 >spec>install>MR12.2-1171>micro_transfer.pl1 162 1 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 164 2 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 166 3 06/29/77 1624.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 168 4 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.incl.pl1 170 5 10/17/88 1024.1 tty_convert.incl.pl1 >spec>install>MR12.2-1171>tty_convert.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. Arg_list parameter pointer dcl 664 set ref 660 668* Buf_Size 000011 constant fixed bin(21,0) initial dcl 100 set ref 691 710 736 738* 764 766* 801 DELAY_VERSION constant fixed bin(17,0) initial dcl 5-126 ref 186 187 Del_Switches 000010 constant bit(6) initial dcl 101 set ref 982* Entry parameter entry variable dcl 663 set ref 660 668* IBM_PC constant fixed bin(17,0) initial dcl 102 ref 531 MT_VERSION 000007 constant char(3) initial packed unaligned dcl 103 set ref 388* NL 005742 constant char(1) initial packed unaligned dcl 104 ref 874 901 912 N_ACCESS 000056 constant bit(3) initial packed unaligned dcl 1-11 set ref 557* 832* OTHER constant fixed bin(17,0) initial dcl 106 ref 537 R_ACCESS 000055 constant bit(3) initial packed unaligned dcl 1-11 set ref 580* Stream_input constant fixed bin(17,0) initial dcl 2-15 ref 342 352 Stream_output constant fixed bin(17,0) initial dcl 2-15 ref 341 353 466 486 TERM_FILE_TERM 000006 constant bit(3) initial packed unaligned dcl 4-14 set ref 858* 979* XMODEM constant fixed bin(17,0) initial dcl 107 ref 524 abs builtin function dcl 111 ref 632 absolute_path 000100 automatic char(168) packed unaligned dcl 43 set ref 328* 337 337 349 349 361 365 365 373 373 390 390 489 489 606 606 719 783 active_protocol 000152 automatic fixed bin(17,0) dcl 44 set ref 524* 531* 537* 612 799 addr builtin function dcl 111 ref 184 397 398 464 after builtin function dcl 111 ref 520 arg_idx 000154 automatic fixed bin(17,0) dcl 46 set ref 239* 240 241* 244* 263* 263 271* 271 278* 278 285* 285 295* 295 500 505* 508* argument based char packed unaligned dcl 96 set ref 228 228 244* 248 255 261 265 269 269 273 276 280 283 287 291* 508* argument_count 000153 automatic fixed bin(17,0) dcl 45 set ref 205* 212 240 500 argument_lth 000155 automatic fixed bin(21,0) dcl 47 set ref 220* 228 228 241* 244 244 248 255 261 265 269 269 273 276 280 283 287 291 291 505* 508 508 argument_ptr 000156 automatic pointer dcl 48 set ref 220* 228 228 241* 244 248 255 261 265 269 269 273 276 280 283 287 291 505* 508 atd 2 000354 automatic char(512) level 2 packed packed unaligned dcl 59 set ref 200* 273* 442 442 519 520 backspace 6 001274 automatic fixed bin(17,0) level 3 dcl 73 set ref 405* baud_rate 13 001547 automatic fixed bin(17,0) level 2 dcl 89 set ref 639 640* before builtin function dcl 111 ref 519 520 bit_count 000160 automatic fixed bin(24,0) dcl 49 in procedure "mt" set ref 346* 392* 832* 835 853* 854* bit_count parameter fixed bin(24,0) dcl 576 in procedure "check_source_file" set ref 573 580* 584 bit_count parameter fixed bin(24,0) dcl 598 in procedure "display_send_info" set ref 595 605 632* 639 bit_count 001634 automatic fixed bin(24,0) dcl 551 in procedure "check_target_file" set ref 557* buf_pos 001742 automatic fixed bin(17,0) dcl 887 set ref 894* 900* 909 909 912 913* 913 914 914 917 917 929* 932 932 buf_ptr 000262 automatic pointer dcl 51 set ref 464* 691* 706* 710* 736* 738* 760* 764* 766* 772* buff 000161 automatic char(256) dcl 50 set ref 464 804* 809* 874 876* 898 909 912 914 917 943* c_chars based structure level 1 dcl 5-54 call_com_err 000264 automatic bit(1) packed unaligned dcl 52 in procedure "mt" set ref 332* 337 call_com_err parameter bit(1) packed unaligned dcl 552 in procedure "check_target_file" set ref 548 555* 564* ceil builtin function dcl 111 ref 632 639 char_count 001653 automatic fixed bin(35,0) dcl 600 in procedure "display_send_info" set ref 605* 606* 632 632 632 char_count 001720 automatic fixed bin(35,0) dcl 825 in procedure "strip_remote_eof" set ref 835* 837 840 844 851 char_length 001652 automatic fixed bin(17,0) dcl 599 set ref 617* 623* 630* 632 632 chars_written 000265 automatic fixed bin(35,0) dcl 53 set ref 735* 744* 744 801 cleanup 001604 stack reference condition dcl 115 ref 189 code 000266 automatic fixed bin(35,0) dcl 54 set ref 205* 206 208* 220* 222 241* 242 244* 321* 322 324* 332* 333 335 337* 346* 347 349* 361* 362 365* 369* 370 373* 379* 380 382* 408* 409 411* 416* 417 419* 430* 432 434* 442* 444 447* 452* 453 456* 466* 469* 471 474* 478* 480 482* 486* 489 489* 505* 506 508* com_err_ 000032 constant entry external dcl 132 ref 208 214 224 232 244 291 303 309 315 324 337 349 365 373 382 411 419 434 447 456 474 482 489 502 508 const_tab 4 001274 automatic fixed bin(17,0) level 3 dcl 73 set ref 403* cu_$arg_count 000034 constant entry external dcl 133 ref 205 cu_$arg_list_ptr 000036 constant entry external dcl 134 ref 652 652 cu_$arg_ptr 000040 constant entry external dcl 135 ref 220 241 505 cu_$cl 000042 constant entry external dcl 136 ref 652 652 cu_$generate_call 000044 constant entry external dcl 137 ref 668 cu_$get_cl_intermediary 000046 constant entry external dcl 138 ref 425 cu_$set_cl_intermediary 000050 constant entry external dcl 139 ref 427 667 670 970 cv_trans based structure level 1 dcl 5-62 default 1 001274 automatic fixed bin(17,0) level 2 dcl 73 set ref 400* default_modes 000267 automatic bit(1) packed unaligned dcl 55 set ref 202* 266* 525 532 538 delay based structure level 1 dcl 5-66 in procedure "mt" delay 2 001274 automatic structure level 2 in structure "new_delay_struc" unaligned dcl 73 in procedure "mt" delay_struc based structure level 1 dcl 5-112 delete_$path 000052 constant entry external dcl 140 ref 982 dl_file 000270 automatic bit(1) packed unaligned dcl 56 set ref 183* 377* 463* 982 done_searching 001721 automatic bit(1) packed unaligned dcl 826 set ref 836* 839 843 846* 851 ec parameter fixed bin(35,0) dcl 683 in procedure "get_data" set ref 680 688* 691* 695 700 706* 707 710* 713* ec parameter fixed bin(35,0) dcl 954 in procedure "clean_up" set ref 951 956* 960* ec parameter fixed bin(35,0) dcl 577 in procedure "check_source_file" set ref 573 580* 581 586* ec parameter fixed bin(35,0) dcl 731 in procedure "send_data" set ref 728 736* 738* 740 746 755 757 760* 761 764* 766* 772* 773 777* ec 001654 automatic fixed bin(35,0) dcl 601 in procedure "display_send_info" set ref 608* 610 ec parameter fixed bin(35,0) dcl 553 in procedure "check_target_file" set ref 548 557* 558 558* 563* ec parameter fixed bin(35,0) dcl 827 in procedure "strip_remote_eof" set ref 822 832* 833 854* eof 001666 automatic bit(1) packed unaligned dcl 684 in procedure "get_data" set ref 687* 694 697* 703* 710 eof parameter bit(1) packed unaligned dcl 888 in procedure "translate_remote_eol" ref 884 923 eof_char 202 000354 automatic varying char(256) level 2 dcl 59 set ref 196* 280* 313 315* 486 748 769 804 809 840 844 eof_set 001676 automatic bit(1) packed unaligned dcl 732 set ref 751* 769 eol_str 303 000354 automatic varying char(256) level 2 dcl 59 set ref 197* 287* 307 309* 691 703 710 736 736 741 764 764 876 876 877 898 898 900 909 913 914 925 930 932 error_table_$action_not_performed 000010 external static fixed bin(35,0) dcl 119 ref 335 error_table_$badopt 000012 external static fixed bin(35,0) dcl 121 set ref 291* error_table_$empty_file 000014 external static fixed bin(35,0) dcl 122 ref 586 error_table_$end_of_info 000026 external static fixed bin(35,0) dcl 127 ref 695 740 error_table_$long_record 000016 external static fixed bin(35,0) dcl 123 ref 755 error_table_$noarg 000024 external static fixed bin(35,0) dcl 126 set ref 214* 224* 232* 303* 502* error_table_$noentry 000020 external static fixed bin(35,0) dcl 124 ref 558 error_table_$regexp_too_long 000022 external static fixed bin(35,0) dcl 125 set ref 309* 315* error_table_$short_record 000030 external static fixed bin(35,0) dcl 128 ref 746 expand_pathname_ 000054 constant entry external dcl 141 ref 321 hcs_$set_bc_seg 000056 constant entry external dcl 142 ref 854 horz_nl 3 001274 automatic float bin(27) level 3 dcl 73 set ref 402* i 001743 automatic fixed bin(17,0) dcl 889 in procedure "translate_remote_eol" set ref 909* 911 912 913 914* 925* 927 929 930 932 932 938 i 001706 automatic fixed bin(17,0) dcl 795 in procedure "add_remote_eof" set ref 803* 804* i 001722 automatic fixed bin(17,0) dcl 828 in procedure "strip_remote_eof" set ref 837* 839 840 840* 840 843 844 844* 844 851 853 index builtin function dcl 111 ref 228 909 914 925 initiate_file_ 000060 constant entry external dcl 143 ref 557 580 832 io_switch 404 000354 automatic varying char(32) level 2 dcl 59 set ref 199* 379 382* 520* ioa_ 000062 constant entry external dcl 144 ref 388 390 606 640 iox_$attach_name 000064 constant entry external dcl 145 ref 361 442 iox_$close 000066 constant entry external dcl 146 ref 960 966 iox_$control 000070 constant entry external dcl 147 ref 408 416 608 976 iox_$detach_iocb 000072 constant entry external dcl 148 ref 961 967 iox_$get_chars 000074 constant entry external dcl 149 ref 691 710 738 766 iox_$get_line 000076 constant entry external dcl 150 ref 736 764 iox_$look_iocb 000100 constant entry external dcl 151 ref 379 iox_$modes 000102 constant entry external dcl 152 ref 430 666 669 973 iox_$open 000104 constant entry external dcl 153 ref 369 452 iox_$put_chars 000106 constant entry external dcl 154 ref 706 760 772 length builtin function dcl 111 ref 307 313 691 710 736 764 876 877 898 898 900 900 913 918 929 930 938 message parameter char(200) packed unaligned dcl 685 in procedure "get_data" set ref 680 716* 719* message 000271 automatic char(200) packed unaligned dcl 57 in procedure "mt" set ref 466* 469* 474 474 message parameter char(200) packed unaligned dcl 733 in procedure "send_data" set ref 728 780* 783* mod builtin function dcl 111 ref 632 640 640 801 modes_set 000353 automatic bit(1) initial packed unaligned dcl 58 set ref 58* 438* 973 mt_options 000354 automatic structure level 1 unaligned dcl 59 my_cl_intermediary 001264 automatic entry variable dcl 70 set ref 426* 427* 670* n_pad 001707 automatic fixed bin(17,0) dcl 796 set ref 801* 803 806 n_read 001270 automatic fixed bin(21,0) dcl 71 in procedure "mt" set ref 691* 703* 706* 710* 736* 738* 741 741* 744 750* 760* 764* 766* 771* 772* n_read parameter fixed bin(21,0) dcl 797 in procedure "add_remote_eof" set ref 792 803 803 806* 806 809 812* 812 n_read parameter fixed bin(21,0) dcl 872 in procedure "translate_mu_eol" set ref 869 874 876 877* 877 n_read parameter fixed bin(21,0) dcl 890 in procedure "translate_remote_eol" set ref 884 909 914 917 918* 932* 938 938 943 943 nd_handler_ 000110 constant entry external dcl 155 ref 563 new_delay_ptr 001272 automatic pointer dcl 72 set ref 176* 398* 416* new_delay_struc 001274 automatic structure level 1 unaligned dcl 73 set ref 398 new_modes 415 000354 automatic char(512) level 2 packed packed unaligned dcl 59 set ref 201* 265* 430* 434* 525* 532* 538* 669* null builtin function dcl 111 ref 175 176 177 178 179 361 361 442 442 561 833 858 958 964 976 979 old_delay_ptr 001304 automatic pointer dcl 74 set ref 175* 397* 408* 976 976* old_delay_struc 001306 automatic structure level 1 unaligned dcl 75 set ref 397 old_modes 001316 automatic char(256) packed unaligned dcl 76 set ref 180* 430* 666* 669* 973* out_buf 001744 automatic varying char(288) dcl 891 set ref 895* 901* 904* 912* 912 917* 917 918 925 929 932 938 938 943 overlay based char packed unaligned dcl 830 ref 840 844 packet_length 001655 automatic fixed bin(17,0) dcl 602 set ref 616* 622* 629* 632 632 632 packet_overhead 001656 automatic fixed bin(17,0) dcl 603 set ref 614* 620* 627* 632 path 615 000354 automatic char(200) level 2 packed packed unaligned dcl 59 set ref 228* 321* 324* pathname_ 000114 constant entry external dcl 157 ref 328 protocol 677 000354 automatic char(32) level 2 packed packed unaligned dcl 59 set ref 198* 358 447* 456* 482* 519* 522 529 716 780 protocol_iocb_ptr 001416 automatic pointer dcl 77 set ref 177* 442* 452* 691* 710* 760* 772* 958 960* 961* protocol_mode 001420 automatic fixed bin(17,0) dcl 78 set ref 342* 353* 452* 466 protocol_swn 001421 automatic char(32) packed unaligned dcl 79 set ref 358* 442* receiving 707(01) 000354 automatic bit(1) level 2 packed packed unaligned dcl 59 set ref 194* 251* 257* 301 330 377 390 reset_cl_intermediary 001431 automatic bit(1) packed unaligned dcl 80 set ref 182* 428* 970 reverse builtin function dcl 111 ref 925 rtrim builtin function dcl 111 ref 328 328 328 328 337 337 349 349 357 358 361 365 365 373 373 390 390 442 442 474 474 489 489 522 529 606 606 saved_cl_intermediary 001432 automatic entry variable dcl 81 set ref 425* 667* 970* seg_iocb_ptr 001436 automatic pointer dcl 82 set ref 178* 361* 369* 706* 736* 738* 764* 766* 964 966* 967* seg_mode 001440 automatic fixed bin(17,0) dcl 83 set ref 341* 352* 369* 486 seg_ptr 001442 automatic pointer dcl 84 in procedure "mt" set ref 179* 557* 561 580* 979 979* seg_ptr 001724 automatic pointer dcl 829 in procedure "strip_remote_eof" set ref 832* 833 840 844 854* 858 858* seg_swn 001444 automatic char(32) packed unaligned dcl 85 set ref 357* 361* sending 707 000354 automatic bit(1) level 2 packed packed unaligned dcl 59 set ref 195* 250* 258* 301 source_dir 001454 automatic char(168) packed unaligned dcl 86 set ref 321* 328 328 557* 563* 580* 832* 982* source_ename 001526 automatic char(32) packed unaligned dcl 87 set ref 321* 328 328 357 557* 563* 580* 832* 982* start_of_eol 001536 automatic varying char(32) dcl 88 set ref 689* 898 898 900 904 906* 938* substr builtin function dcl 111 set ref 804* 809* 840 844 874 876* 898 909 912 914 917 925 932 932 938 943* 943 terminal_info based structure level 1 dcl 3-6 terminal_info_version constant fixed bin(17,0) initial dcl 3-16 ref 185 terminate_file_ 000112 constant entry external dcl 156 ref 858 979 ti 001547 automatic structure level 1 unaligned dcl 89 set ref 184 ti_ptr 001570 automatic pointer dcl 90 set ref 184* 608* transmission_time 001572 automatic fixed bin(35,0) dcl 91 set ref 639* 640 640 640 640 trunc builtin function dcl 111 ref 640 640 ts_iocbp 000354 automatic pointer level 2 dcl 59 set ref 379* 408* 416* 430* 608* 666* 669* 973* 976* unique_chars_ 000116 constant entry external dcl 158 ref 357 358 var_tab 5 001274 automatic float bin(27) level 3 dcl 73 set ref 404* version 001274 automatic fixed bin(17,0) level 2 in structure "new_delay_struc" dcl 73 in procedure "mt" set ref 187* version 001306 automatic fixed bin(17,0) level 2 in structure "old_delay_struc" dcl 75 in procedure "mt" set ref 186* version 001547 automatic fixed bin(17,0) level 2 in structure "ti" dcl 89 in procedure "mt" set ref 185* vert_nl 2 001274 automatic fixed bin(17,0) level 3 dcl 73 set ref 401* vt_ff 7 001274 automatic fixed bin(17,0) level 3 dcl 73 set ref 406* whoami 001573 automatic char(32) packed unaligned dcl 92 set ref 181* 208* 214* 214* 224* 224* 232* 232* 291* 303* 309* 315* 324* 337* 349* 365* 373* 382* 411* 419* 434* 447* 456* 474* 482* 489* 502* 563* 982* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 CV_TRANS_SIZE internal static fixed bin(17,0) initial array dcl 5-129 CV_TRANS_VERSION internal static fixed bin(17,0) initial dcl 5-127 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 Direct_input internal static fixed bin(17,0) initial dcl 2-15 Direct_output internal static fixed bin(17,0) initial dcl 2-15 Direct_update internal static fixed bin(17,0) initial dcl 2-15 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 INPUT_CONVERT_BREAK internal static fixed bin(8,0) initial packed unaligned dcl 5-135 INPUT_CONVERT_DISCARD internal static fixed bin(8,0) initial packed unaligned dcl 5-135 INPUT_CONVERT_DSA_CR_PROCESSING internal static fixed bin(8,0) initial packed unaligned dcl 5-135 INPUT_CONVERT_ESCAPE internal static fixed bin(8,0) initial packed unaligned dcl 5-135 INPUT_CONVERT_FORMFEED internal static fixed bin(8,0) initial packed unaligned dcl 5-135 INPUT_CONVERT_ORDINARY internal static fixed bin(8,0) initial packed unaligned dcl 5-135 INPUT_CONVERT_PRECEDENCE_DISCARD internal static fixed bin(8,0) initial packed unaligned dcl 5-135 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 2-15 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 OUTPUT_CONVERT_BRS internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_BS internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_CR internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_DONT_SEND internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_FF internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_FIRST_SPECIAL internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_HT internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_NEWLINE internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_NOT_USED_13 internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_NOT_USED_14 internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_NOT_USED_15 internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_NOT_USED_16 internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_NO_MOTION internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_OCTAL internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_ORDINARY internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_PRECEDENCE_NO_MOTION internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_RRS internal static fixed bin(8,0) initial packed unaligned dcl 5-147 OUTPUT_CONVERT_VT internal static fixed bin(8,0) initial packed unaligned dcl 5-147 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SPECIAL_INFO_STRUCT_VERSION_1 internal static char(8) initial packed unaligned dcl 5-122 SPECIAL_VERSION internal static fixed bin(17,0) initial dcl 5-124 SPECIAL_VERSION_2 internal static fixed bin(17,0) initial dcl 5-125 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Sequential_input internal static fixed bin(17,0) initial dcl 2-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_update internal static fixed bin(17,0) initial dcl 2-15 Stream_input_output internal static fixed bin(17,0) initial dcl 2-15 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 4-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 4-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 4-16 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 4-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 4-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial packed unaligned dcl 4-15 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 c_chars_ptr automatic pointer dcl 5-53 cv_trans_struc based structure level 1 dcl 5-107 get_special_info_struc based structure level 1 dcl 5-117 iox_modes internal static char(24) initial array dcl 2-6 sc_escape_len automatic fixed bin(17,0) dcl 5-58 sc_input_escape_len automatic fixed bin(17,0) dcl 5-59 short_iox_modes internal static char(4) initial array dcl 2-12 special_chars based structure level 1 dcl 5-26 special_chars_struc based structure level 1 dcl 5-76 terminal_info_ptr automatic pointer dcl 3-15 terminate_file_switches based structure level 1 packed packed unaligned dcl 4-4 NAMES DECLARED BY EXPLICIT CONTEXT. BADOPT 001025 constant label dcl 291 EXIT 003225 constant label dcl 987 ref 503 509 USAGE 000453 constant label dcl 214 add_remote_eof 004643 constant entry internal dcl 792 ref 750 771 case 000003 constant label array(0:2) dcl 801 ref 799 check_source_file 003546 constant entry internal dcl 573 ref 346 check_target_file 003437 constant entry internal dcl 548 ref 332 clean_up 005401 constant entry internal dcl 951 ref 189 335 364 372 412 420 435 446 455 473 478 display_send_info 003621 constant entry internal dcl 595 ref 392 do_cl_intermediary 004064 constant entry internal dcl 649 ref 426 end_case 004715 constant label dcl 813 ref 807 end_init_info 003755 constant label dcl 632 set ref 618 624 error_file_in 004636 constant label dcl 783 ref 757 error_file_out 004355 constant label dcl 719 ref 707 error_protocol_in 004350 constant label dcl 716 ref 700 error_protocol_out 004631 constant label dcl 780 ref 761 773 get_data 004221 constant entry internal dcl 680 ref 469 get_sub_arg 003227 constant entry internal dcl 497 ref 264 272 279 286 init_info 000000 constant label array(0:2) dcl 614 ref 612 micro_transfer 000313 constant entry external dcl 35 mt 000303 constant entry external dcl 35 mt_call_out 004106 constant entry internal dcl 660 ref 652 send_data 004362 constant entry internal dcl 728 ref 466 set_implicit_args 003325 constant entry internal dcl 516 ref 319 strip_remote_eof 004716 constant entry internal dcl 822 ref 486 translate_mu_eol 005114 constant entry internal dcl 869 ref 741 translate_remote_eol 005135 constant entry internal dcl 884 ref 703 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6374 6514 5750 6404 Length 7122 5750 120 371 424 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mt 1326 external procedure is an external procedure. on unit on line 189 72 on unit get_sub_arg internal procedure shares stack frame of external procedure mt. set_implicit_args internal procedure shares stack frame of external procedure mt. check_target_file internal procedure shares stack frame of external procedure mt. check_source_file internal procedure shares stack frame of external procedure mt. display_send_info internal procedure shares stack frame of external procedure mt. do_cl_intermediary 100 internal procedure is assigned to an entry variable. mt_call_out internal procedure shares stack frame of internal procedure do_cl_intermediary. get_data internal procedure shares stack frame of external procedure mt. send_data internal procedure shares stack frame of external procedure mt. add_remote_eof internal procedure shares stack frame of external procedure mt. strip_remote_eof internal procedure shares stack frame of external procedure mt. translate_mu_eol internal procedure shares stack frame of external procedure mt. translate_remote_eol internal procedure shares stack frame of external procedure mt. clean_up 112 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mt 000100 absolute_path mt 000152 active_protocol mt 000153 argument_count mt 000154 arg_idx mt 000155 argument_lth mt 000156 argument_ptr mt 000160 bit_count mt 000161 buff mt 000262 buf_ptr mt 000264 call_com_err mt 000265 chars_written mt 000266 code mt 000267 default_modes mt 000270 dl_file mt 000271 message mt 000353 modes_set mt 000354 mt_options mt 001264 my_cl_intermediary mt 001270 n_read mt 001272 new_delay_ptr mt 001274 new_delay_struc mt 001304 old_delay_ptr mt 001306 old_delay_struc mt 001316 old_modes mt 001416 protocol_iocb_ptr mt 001420 protocol_mode mt 001421 protocol_swn mt 001431 reset_cl_intermediary mt 001432 saved_cl_intermediary mt 001436 seg_iocb_ptr mt 001440 seg_mode mt 001442 seg_ptr mt 001444 seg_swn mt 001454 source_dir mt 001526 source_ename mt 001536 start_of_eol mt 001547 ti mt 001570 ti_ptr mt 001572 transmission_time mt 001573 whoami mt 001634 bit_count check_target_file 001652 char_length display_send_info 001653 char_count display_send_info 001654 ec display_send_info 001655 packet_length display_send_info 001656 packet_overhead display_send_info 001666 eof get_data 001676 eof_set send_data 001706 i add_remote_eof 001707 n_pad add_remote_eof 001720 char_count strip_remote_eof 001721 done_searching strip_remote_eof 001722 i strip_remote_eof 001724 seg_ptr strip_remote_eof 001742 buf_pos translate_remote_eol 001743 i translate_remote_eol 001744 out_buf translate_remote_eol THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac mpfx2 mdfx1 enable_op shorten_stack ext_entry int_entry trunc_fx2 ceil_fx2 set_chars_eis index_chars_eis divide_fx1 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr cu_$cl cu_$generate_call cu_$get_cl_intermediary cu_$set_cl_intermediary delete_$path expand_pathname_ hcs_$set_bc_seg initiate_file_ ioa_ iox_$attach_name iox_$close iox_$control iox_$detach_iocb iox_$get_chars iox_$get_line iox_$look_iocb iox_$modes iox_$open iox_$put_chars nd_handler_ pathname_ terminate_file_ unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$badopt error_table_$empty_file error_table_$end_of_info error_table_$long_record error_table_$noarg error_table_$noentry error_table_$regexp_too_long error_table_$short_record LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 58 000277 35 000302 175 000321 176 000323 177 000324 178 000325 179 000326 180 000327 181 000332 182 000335 183 000336 184 000337 185 000341 186 000343 187 000345 189 000346 194 000373 195 000375 196 000377 197 000400 198 000401 199 000404 200 000410 201 000413 202 000416 205 000420 206 000431 208 000433 209 000450 212 000451 214 000453 216 000502 220 000503 222 000522 224 000524 225 000553 228 000554 232 000574 233 000623 239 000624 240 000626 241 000631 242 000646 244 000650 245 000703 248 000704 250 000712 251 000714 252 000716 255 000717 257 000723 258 000725 259 000727 261 000730 263 000734 264 000735 265 000736 266 000743 267 000744 269 000745 271 000755 272 000756 273 000757 274 000764 276 000765 278 000771 279 000772 280 000773 281 001004 283 001005 285 001011 286 001012 287 001013 288 001024 291 001025 293 001057 295 001060 296 001061 301 001062 303 001070 304 001126 307 001127 309 001132 310 001161 313 001162 315 001165 316 001214 319 001215 321 001216 322 001243 324 001245 325 001274 328 001275 330 001356 332 001362 333 001364 335 001366 337 001401 339 001452 341 001454 342 001456 343 001460 346 001461 347 001463 349 001465 350 001534 352 001536 353 001540 357 001542 358 001614 361 001667 362 001750 364 001753 365 001762 366 002031 369 002033 370 002052 372 002054 373 002063 374 002132 377 002134 379 002141 380 002172 382 002175 383 002224 388 002225 390 002245 392 002314 397 002317 398 002321 400 002323 401 002324 402 002325 403 002327 404 002330 405 002331 406 002332 408 002333 409 002364 411 002366 412 002403 413 002412 416 002413 417 002443 419 002445 420 002462 421 002471 425 002472 426 002501 427 002504 428 002513 430 002515 432 002542 434 002544 435 002573 436 002602 438 002603 442 002605 444 002657 446 002662 447 002671 448 002717 452 002720 453 002737 455 002741 456 002750 457 002776 463 002777 464 003000 466 003002 469 003010 471 003012 473 003014 474 003023 475 003072 478 003074 480 003102 482 003104 483 003132 486 003133 489 003145 987 003225 497 003227 500 003230 502 003233 503 003250 505 003251 506 003266 508 003270 509 003323 511 003324 516 003325 519 003326 520 003336 522 003365 524 003403 525 003405 528 003412 529 003413 531 003417 532 003421 534 003426 537 003427 538 003431 541 003436 548 003437 555 003441 557 003445 558 003503 561 003511 563 003515 564 003540 566 003545 573 003546 580 003550 581 003606 584 003612 586 003614 587 003617 590 003620 595 003621 605 003623 606 003632 608 003676 610 003727 612 003731 614 003733 616 003735 617 003737 618 003741 620 003742 622 003744 623 003745 624 003747 627 003750 629 003752 630 003753 632 003755 639 004012 640 004021 643 004062 649 004063 652 004071 653 004105 660 004106 666 004110 667 004137 668 004147 669 004161 670 004210 671 004220 680 004221 687 004223 688 004224 689 004225 691 004226 694 004251 695 004255 697 004262 698 004264 700 004265 703 004267 706 004276 707 004314 710 004317 712 004344 713 004345 714 004347 716 004350 718 004354 719 004355 721 004361 728 004362 735 004364 736 004365 738 004416 740 004436 741 004443 744 004454 746 004460 748 004465 750 004472 751 004474 753 004476 755 004477 757 004502 760 004504 761 004522 764 004525 766 004555 767 004574 769 004575 771 004604 772 004606 773 004624 777 004627 778 004630 780 004631 782 004635 783 004636 785 004642 792 004643 799 004645 801 004647 803 004664 804 004675 805 004701 806 004703 807 004706 809 004707 812 004714 813 004715 822 004716 832 004720 833 004756 835 004765 836 004774 837 004775 839 004776 840 005003 843 005014 844 005021 846 005032 847 005034 849 005035 851 005036 853 005042 854 005044 858 005060 861 005113 869 005114 874 005116 876 005123 877 005130 879 005134 884 005135 894 005137 895 005140 898 005141 900 005163 901 005167 902 005173 904 005174 906 005201 909 005202 911 005215 912 005220 913 005255 914 005263 915 005276 917 005277 918 005316 923 005320 925 005325 927 005337 929 005340 930 005344 932 005347 938 005357 943 005373 944 005377 951 005400 956 005406 958 005410 960 005415 961 005425 964 005440 966 005445 967 005457 970 005472 973 005504 976 005535 979 005573 982 005627 984 005663 ----------------------------------------------------------- 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