COMPILATION LISTING OF SEGMENT kermit_send_ Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 10/14/90 0921.3 mdt Sun Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1988 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 8* * * 9* *********************************************************** */ 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(88-05-16,Huen), approve(88-05-16,MCR7841), audit(88-05-25,RWaters), 14* install(88-07-05,MR12.2-1054): 15* Fix kermit 15, 16, 17, and 18. 16* 2) change(89-01-02,Huen), approve(89-01-02,MCR8036), audit(89-01-25,Lee), 17* install(89-03-01,MR12.3-1020): 18* Fix kermit bug: PC_File_Transfer 24 - kermit is being changed to correctly 19* handle links to multisegment files. 20* 3) change(90-09-20,Huen), approve(90-09-20,MCR8203), audit(90-09-25,Gray), 21* install(90-10-14,MR12.4-1039): 22* phx21339 (pc_25): kermit is changed to ignore redundant ACKs. 23* END HISTORY COMMENTS */ 24 25 26 kermit_send_: proc; 27 28 /**********************************************************************/ 29 /* */ 30 /*n kermit_send_ */ 31 /* */ 32 /*d This routine is responsible for sending files to a */ 33 /*d remote kermit. */ 34 /* */ 35 /*l Written: 84-10-23 by Maureen Mallmes */ 36 /*l Modified: 84-11-05 by Dean Elhard to add archive support */ 37 /*l Modified: 87-07-22 by Don Kozlowski - Support msf file */ 38 /*l (kermit 17) */ 39 /* */ 40 /**********************************************************************/ 41 42 /* Not an entry */ 43 return; 44 45 46 47 /* parameters */ 48 49 dcl ec fixed bin (35); 50 dcl file_sw bit (1); 51 dcl filenames_areap ptr; 52 dcl files_sent fixed bin; 53 dcl first_filename char (*); 54 dcl infop ptr; 55 56 /* automatic */ 57 58 dcl ktip ptr; 59 dcl retry_max fixed bin (8) unal; 60 dcl retry_select (1) fixed bin; 61 dcl state fixed bin; 62 63 /* based */ 64 65 dcl 01 filenames like kermit_filenames based (filenames_areap); 66 dcl 01 kermit_stats aligned like kermit_stats_info; 67 dcl 01 kti like kermit_transfer_info; 68 69 /* labels */ 70 71 dcl send_state (0:6) label init (Send_Init, Send_File, Send_Data, Send_Eof, Send_Break, Send_Abort, Send_Complete); 72 73 /* constants */ 74 75 dcl Byte_length fixed bin internal static options (constant) init (9); 76 dcl Max_packet_size fixed bin (21) internal static options (constant) init (94); 77 dcl Max_remote_packet_size fixed bin (21) internal static options (constant) init (3000); 78 dcl Mod_64 fixed bin internal static options (constant) init (64); 79 dcl Whoami char (4) internal static options (constant) init ("send"); 80 81 /* builtin */ 82 83 dcl (addr, char, index, length, ltrim) builtin; 84 dcl (mod, rtrim, substr, null) builtin; 85 86 /* conditions */ 87 88 dcl cleanup condition; 89 90 91 /* constants */ 92 93 dcl False bit (1) internal static options (constant) init ("0"b); 94 dcl True bit (1) internal static options (constant) init ("1"b); 95 96 /* external */ 97 98 dcl error_table_$empty_file fixed bin (35) ext static; 99 dcl error_table_$dirseg fixed bin(35) ext static; 100 dcl kermit_et_$fatal_error fixed bin (35) ext static; 101 dcl kermit_et_$no_initialization fixed bin (35) ext static; 102 dcl kermit_et_$remote_file_abort fixed bin (35) ext static; 103 dcl kermit_et_$remote_group_abort fixed bin (35) ext static; 104 dcl kermit_et_$too_many_retries fixed bin (35) ext static; 105 106 /* procedures */ 107 108 dcl add_char_offset_ entry (ptr, fixed bin (21)) returns (ptr) reducible; 109 dcl clock_ entry () returns (fixed bin (71)); 110 dcl hcs_$status_minf entry (char (*), char (*), fixed bin (1), fixed bin (2), fixed bin (24), fixed bin (35)); 111 dcl iox_$close entry (ptr, fixed bin (35)); 112 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 113 dcl pathname_$component entry (char (*), char (*), char (*)) returns (char (194)); 114 dcl pathname_ entry (char(*), char(*)) returns(char(168)); 115 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 116 117 118 /* include files */ 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 */ 119 120 2 1 /* START OF: kermit_dcls.incl.pl1 * * * * * */ 2 2 2 3 /********************************************************************/ 2 4 /* */ 2 5 /*n kermit_dcls */ 2 6 /* */ 2 7 /*d This include file contains the declarations of the external */ 2 8 /*d kermit entrypoints that are called by other modules within */ 2 9 /*d kermit as well as an explanation of the parameters. */ 2 10 /* */ 2 11 /*l Written: 84-10-11 by Dean Elhard */ 2 12 /* */ 2 13 /********************************************************************/ 2 14 2 15 dcl kermit_comm_mgr_$flush_input 2 16 entry 2 17 (ptr, /* kermit info ptr */ 2 18 fixed bin(35)); /* error code */ 2 19 2 20 dcl kermit_comm_mgr_$reset_line_modes 2 21 entry 2 22 (ptr, /* kermit info ptr */ 2 23 fixed bin(35)); /* error code */ 2 24 2 25 dcl kermit_comm_mgr_$set_line_modes 2 26 entry 2 27 (ptr, /* kermit info ptr */ 2 28 fixed bin(35)); /* error code */ 2 29 2 30 dcl kermit_get_filenames_ entry 2 31 (ptr, /* kermit info ptr */ 2 32 char(*), /* argument */ 2 33 ptr, /* filename ptr */ 2 34 char(*), /* reason */ 2 35 fixed bin(35)); /* error code */ 2 36 2 37 dcl kermit_log_mgr_$close_log 2 38 entry 2 39 (ptr, /* kermit info ptr */ 2 40 fixed bin (35)); /* error code */ 2 41 2 42 dcl kermit_log_mgr_$disable entry 2 43 (ptr, /* kermit info ptr */ 2 44 fixed bin (35)); /* error code */ 2 45 2 46 dcl kermit_log_mgr_$display_stats 2 47 entry /* statistics command */ 2 48 (ptr, /* sci ptr */ 2 49 ptr); /* kermit info ptr */ 2 50 2 51 dcl kermit_log_mgr_$enable entry 2 52 (ptr, /* kermit info ptr */ 2 53 fixed bin (35)); /* error code */ 2 54 2 55 dcl kermit_log_mgr_$log_message 2 56 entry 2 57 (ptr, /* kermit info ptr */ 2 58 ptr); /* log info ptr */ 2 59 2 60 dcl kermit_log_mgr_$open_log 2 61 entry 2 62 (ptr, /* kermit info ptr */ 2 63 char (*) varying, /* log file name */ 2 64 fixed bin (35)); /* error code */ 2 65 2 66 dcl kermit_log_mgr_$start entry /* start log command */ 2 67 (ptr, /* sci ptr */ 2 68 ptr); /* kermit info ptr */ 2 69 2 70 dcl kermit_log_mgr_$stop entry /* stop log command */ 2 71 (ptr, /* sci ptr */ 2 72 ptr); /* kermit info ptr */ 2 73 2 74 dcl kermit_mode_mgr_$get entry /* get modes command */ 2 75 (ptr, /* sci ptr */ 2 76 ptr); /* kermit info ptr */ 2 77 2 78 dcl kermit_mode_mgr_$retrieve 2 79 entry 2 80 (ptr, /* kermit info ptr */ 2 81 fixed bin, /* permanent/temporary select */ 2 82 (*) fixed bin, /* mode selector array */ 2 83 ptr, /* mode value ptr */ 2 84 fixed bin (35)); /* error code */ 2 85 2 86 dcl kermit_mode_mgr_$set entry /* set modes command */ 2 87 (ptr, /* sci ptr */ 2 88 ptr); /* kermit info ptr */ 2 89 2 90 dcl kermit_mode_mgr_$store entry 2 91 (ptr, /* kermit info ptr */ 2 92 fixed bin, /* permanent/temporary select */ 2 93 (*) fixed bin, /* mode selector array */ 2 94 ptr, /* mode value ptr */ 2 95 fixed bin (35)); /* error code */ 2 96 2 97 dcl kermit_pad_$receive entry 2 98 (ptr, /* kermit info ptr */ 2 99 char (1), /* packet type */ 2 100 ptr, /* buffer pointer */ 2 101 fixed bin (21), /* buffer length */ 2 102 fixed bin, /* sequence number */ 2 103 fixed bin (21), /* chars received */ 2 104 fixed bin (21), /* packet size */ 2 105 bit (1), /* CR/NL split flag */ 2 106 fixed bin (35)); /* error code */ 2 107 2 108 dcl kermit_pad_$send entry 2 109 (ptr, /* kermit info ptr */ 2 110 char (1), /* packet type */ 2 111 ptr, /* data ptr */ 2 112 fixed bin (21), /* data length */ 2 113 fixed bin, /* sequence number */ 2 114 fixed bin (21), /* chars transmitted */ 2 115 fixed bin (21), /* packet length */ 2 116 fixed bin (35)); /* error code */ 2 117 2 118 dcl kermit_receive_$receive_from_remote 2 119 entry 2 120 (ptr, /* kermit info ptr */ 2 121 fixed bin, /* initial state */ 2 122 fixed bin, /* initial sequence number */ 2 123 char (*), /* user filename (first file) */ 2 124 bit (1), /* =1 if user gave filename */ 2 125 fixed bin, /* number of files received */ 2 126 fixed bin (35)); /* error code */ 2 127 2 128 dcl kermit_send_$send_to_remote 2 129 entry 2 130 (ptr, /* kermit info ptr */ 2 131 ptr, /* filenames area ptr */ 2 132 char (*), /* user filename (first file) */ 2 133 bit (1), /* =1 if user gave filename */ 2 134 fixed bin, /* number of files sent */ 2 135 fixed bin (35)); /* error code */ 2 136 2 137 2 138 dcl kermit_server_ 2 139 entry 2 140 (ptr, /* kermit info ptr */ 2 141 ptr); /* filenames area ptr */ 2 142 2 143 2 144 dcl kermit_xfer_modes_$check_params 2 145 entry 2 146 (ptr, /* kermit info ptr */ 2 147 ptr, /* remote parameters */ 2 148 fixed bin (21), /* remote parameters length */ 2 149 ptr, /* local parameters */ 2 150 fixed bin (35)); /* error code */ 2 151 2 152 dcl kermit_xfer_modes_$init 2 153 entry 2 154 (ptr, /* ptr to kermit info */ 2 155 fixed bin (35)); /* error code */ 2 156 2 157 dcl kermit_xfer_modes_$get_local_params 2 158 entry 2 159 (ptr, /* kermit info ptr */ 2 160 ptr, /* local parameters */ 2 161 fixed bin (21), /* local parameters length */ 2 162 ptr, /* encoded parameters */ 2 163 fixed bin (21), /* encoded parameters length */ 2 164 fixed bin (35)); /* error code */ 2 165 2 166 dcl kermit_xfer_modes_$process_params 2 167 entry 2 168 (ptr, /* kermit info ptr */ 2 169 ptr, /* remote parameters */ 2 170 fixed bin (21), /* remote parameters length */ 2 171 ptr, /* local parameters */ 2 172 fixed bin (35)); /* error code */ 2 173 2 174 /* END OF: kermit_dcls.incl.pl1 * * * * * */ 121 122 3 1 /* START OF: kermit_info.incl.pl1 * * * * * */ 3 2 3 3 3 4 3 5 3 6 /****^ HISTORY COMMENTS: 3 7* 1) change(88-05-16,Huen), approve(88-05-16,MCR7841), audit(88-05-25,RWaters), 3 8* install(88-07-05,MR12.2-1054): 3 9* Fix kermit 15, 16, 17, and 18. 3 10* END HISTORY COMMENTS */ 3 11 3 12 3 13 /********************************************************************/ 3 14 /* */ 3 15 /*n kermit_constants */ 3 16 /* */ 3 17 /*d This structure contains the constant definitions of CR, */ 3 18 /*d and NL characters which are coded as bit strings with */ 3 19 /*d overlays. */ 3 20 /* */ 3 21 /*l Written: 87-06-19 by Don Kozlowski */ 3 22 /*l Modified: 87-06-19 by Don Kozlowski - CR and NL are coded */ 3 23 /*l as bit strings with overlays (kermit 15)*/ 3 24 /* */ 3 25 /********************************************************************/ 3 26 3 27 dcl 01 kermit_bit_constants internal static options (constant), 3 28 02 CR_bit bit (9) unaligned init ("015"b3), 3 29 02 NL_bit bit (9) unaligned init ("012"b3); 3 30 3 31 dcl 01 kermit_char_constants based (addr (kermit_bit_constants)), 3 32 02 CR char (1) unaligned, 3 33 02 NL char (1) unaligned; 3 34 3 35 dcl 01 kermit_fixed_constants based (addr (kermit_bit_constants)), 3 36 02 CR_fixed fixed bin (9) unsigned unaligned, 3 37 02 NL_fixed fixed bin (9) unsigned unaligned; 3 38 3 39 3 40 /********************************************************************/ 3 41 /* */ 3 42 /*n kermit_info */ 3 43 /* */ 3 44 /*d This data structure is the subsystem info structure used */ 3 45 /*d when creating a kermit invocation. It is used to find the */ 3 46 /*d three kermit databases. */ 3 47 /* */ 3 48 /*l Written: 84-10-11 by Dean Elhard */ 3 49 /* */ 3 50 /********************************************************************/ 3 51 3 52 dcl 01 kermit_info aligned based (kermit_infop), 3 53 02 version char (8), 3 54 02 sci_ptr ptr, /* ssu_ sci_ptr */ 3 55 02 perm_modesp ptr, /* ptr to permanent modes db */ 3 56 02 temp_modesp ptr, /* ptr to temporary modes db */ 3 57 02 log_infop ptr, /* ptr to log info db */ 3 58 02 comm_infop ptr; /* ptr to comm info db */ 3 59 3 60 dcl kermit_infop ptr; 3 61 dcl kermit_info_version char (8) static options (constant) 3 62 init ("ki 1.0"); 3 63 3 64 /********************************************************************/ 3 65 /* */ 3 66 /*n kermit_perm_modes */ 3 67 /* */ 3 68 /*d This data structure contains the array of 9-bit values that */ 3 69 /*d represent the permanent kermit modes. */ 3 70 /* */ 3 71 /*l Written: 84-10-11 by Dean Elhard */ 3 72 /*l Modified: 87-06-12 by Don Kozlowski - Increase mode_counts */ 3 73 /*l (kermit 16) */ 3 74 /* */ 3 75 /********************************************************************/ 3 76 3 77 dcl 01 kermit_perm_modes aligned based (kermit_perm_modesp), 3 78 02 version char (8), 3 79 02 mode (1:kermit_perm_mode_count) 3 80 bit (9) unaligned; 3 81 3 82 dcl kermit_perm_modesp ptr; 3 83 dcl kermit_perm_mode_count fixed bin static options (constant) init (20); 3 84 dcl kermit_perm_modes_version 3 85 char (8) static options (constant) 3 86 init ("kpm 1.1"); 3 87 3 88 /********************************************************************/ 3 89 /* */ 3 90 /*n kermit_temp_modes */ 3 91 /* */ 3 92 /*d This data structure contains the array of 9-bit values that */ 3 93 /*d represent the temporary kermit modes. */ 3 94 /* */ 3 95 /*l Written: 84-10-11 by Dean Elhard */ 3 96 /* */ 3 97 /********************************************************************/ 3 98 3 99 dcl 01 kermit_temp_modes aligned based (kermit_temp_modesp), 3 100 02 version char (8), 3 101 02 mode (1:kermit_temp_mode_count) 3 102 bit (9) unaligned; 3 103 3 104 dcl kermit_temp_modesp ptr; 3 105 dcl kermit_temp_mode_count fixed bin static options (constant) init (23); 3 106 dcl kermit_temp_modes_version 3 107 char (8) static options (constant) 3 108 init ("ktm 1.1"); 3 109 3 110 /********************************************************************/ 3 111 /* */ 3 112 /*n kermit_log_info */ 3 113 /* */ 3 114 /*d This data structure contains 2 types of logging info: */ 3 115 /*d - data concerning the logging state and log_file */ 3 116 /*d - statistics on the last completed file-transfer */ 3 117 /* */ 3 118 /*l Written: 84-10-11 by Dean Elhard */ 3 119 /* */ 3 120 /********************************************************************/ 3 121 3 122 dcl 01 kermit_log_info aligned based (kermit_log_infop), 3 123 02 version char (8), 3 124 02 log_file aligned, /* log_file info */ 3 125 03 iocbp ptr, /* iocb ptr */ 3 126 03 flags aligned, 3 127 04 enabled bit (1) unaligned, /* enabled flag */ 3 128 04 stats_valid bit (1) unaligned, /* stats are set */ 3 129 04 mbz bit (34) unaligned, 3 130 02 statistics aligned like kermit_stats_info; 3 131 3 132 dcl kermit_log_infop ptr; 3 133 dcl kermit_log_info_version char (8) static options (constant) 3 134 init ("kli 1.0"); 3 135 3 136 /********************************************************************/ 3 137 /* */ 3 138 /*n kermit_stats_info */ 3 139 /* */ 3 140 /*d This structure is the statistics information passed to the */ 3 141 /*d log manager and stored as the statistics. */ 3 142 /* */ 3 143 /*l Written: 84-10-25 by Dean Elhard */ 3 144 /* */ 3 145 /********************************************************************/ 3 146 3 147 dcl 01 kermit_stats_info aligned based (kermit_stats_infop), 3 148 02 caller char (32), /* send or receive */ 3 149 02 status fixed bin (35), /* status of F-T */ 3 150 02 filename char (194) unal, /* name of file */ 3 151 02 file_len fixed bin (21), /* len in chars */ 3 152 02 char_count fixed bin (21), /* number sent */ 3 153 02 packet_chars fixed bin (21), /* after encoding */ 3 154 02 packet_count fixed bin (21), /* num of packets */ 3 155 02 packet_retries fixed bin (21), /* retries done */ 3 156 02 start_time fixed bin (71), /* time F-T started */ 3 157 02 end_time fixed bin (71), /* time F-T done */ 3 158 02 error_message char (94); /* rcvd error msg */ 3 159 3 160 dcl kermit_stats_infop ptr; 3 161 3 162 /********************************************************************/ 3 163 /* */ 3 164 /*n kermit_comm_info */ 3 165 /* */ 3 166 /*d This data structure contains information regarding the */ 3 167 /*d communications channel over which the file transfer takes */ 3 168 /*d place. */ 3 169 /* */ 3 170 /*l Written: 84-10-12 by Dean Elhard */ 3 171 /*l Modified: 86-10-09 by Don Kozlowski Add transfer_modes_set */ 3 172 /*l and server indicators. (kermit 13) */ 3 173 /* */ 3 174 /********************************************************************/ 3 175 3 176 dcl 01 kermit_comm_info aligned based (kermit_comm_infop), 3 177 02 version char (8), 3 178 02 ft_iocbp ptr, /* transfer iocbp */ 3 179 02 debug_segp ptr, /* debug segment */ 3 180 02 debug_segl fixed bin (21), 3 181 02 input_buffer aligned, /* input buffer */ 3 182 03 bufferp ptr, 3 183 03 bufferl fixed bin (21), 3 184 02 old_modes char (512) unal, /* ft switch modes */ 3 185 02 old_framing_chars aligned, /* saved frm chars */ 3 186 03 start_char char (1) unaligned, 3 187 03 end_char char (1) unaligned, 3 188 03 server bit (1) unaligned, /* In server mode */ 3 189 03 transfer_modes_set bit (1) unaligned, 3 190 03 pad bit (16) unaligned, 3 191 02 old_wake_table aligned, /* saved wake table */ 3 192 03 breaks (0:127) bit (1) unaligned, 3 193 03 mbz bit (16) unaligned, 3 194 02 old_delays aligned, /* saved delay info */ 3 195 03 version fixed bin, 3 196 03 default fixed bin, 3 197 03 delay, 3 198 04 vert_nl fixed bin, 3 199 04 horz_nl fixed bin, 3 200 04 const_tab float bin, 3 201 04 var_tab fixed bin, 3 202 04 backspace fixed bin, 3 203 04 vt_ff fixed bin; 3 204 3 205 dcl kermit_comm_infop ptr; 3 206 dcl kermit_comm_info_version 3 207 char (8) static options (constant) 3 208 init ("kci 1.0"); 3 209 3 210 /* END OF: kermit_info.incl.pl1 * * * * * */ 123 124 4 1 /* START OF: kermit_mode_info.incl.pl1 * * * * * */ 4 2 4 3 4 4 4 5 4 6 /****^ HISTORY COMMENTS: 4 7* 1) change(88-05-16,Huen), approve(88-05-16,MCR7841), audit(88-05-25,RWaters), 4 8* install(88-07-05,MR12.2-1054): 4 9* Fix kermit 15, 16, 17, and 18. 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 /************************************************************************/ 4 14 /* */ 4 15 /*l Modified: 87-06-19 by S. Huen - Add fields for capabilities, */ 4 16 /*l window_size, max_len_ext_1 and max_len_ext_2 based */ 4 17 /*l on D. Kozlowski's version. (kermit 16) */ 4 18 /* */ 4 19 /************************************************************************/ 4 20 4 21 dcl Permanent fixed bin static options (constant) init (1); 4 22 dcl Temporary fixed bin static options (constant) init (2); 4 23 4 24 dcl Store_all (1:1) fixed bin static options (constant) init (0); 4 25 dcl Retrieve_all (1:1) fixed bin static options (constant) init (0); 4 26 4 27 dcl Maxl fixed bin static options (constant) init (1); 4 28 dcl Timeout fixed bin static options (constant) init (2); 4 29 dcl N_pads fixed bin static options (constant) init (3); 4 30 dcl Pad_char fixed bin static options (constant) init (4); 4 31 dcl Eol_char fixed bin static options (constant) init (5); 4 32 dcl Quote_char fixed bin static options (constant) init (6); 4 33 dcl Eight_bit_char fixed bin static options (constant) init (7); 4 34 dcl Repeat_char fixed bin static options (constant) init (8); 4 35 dcl Start_char fixed bin static options (constant) init (9); 4 36 dcl Check_type fixed bin static options (constant) init (10); 4 37 dcl Parity fixed bin static options (constant) init (11); 4 38 dcl Incomplete fixed bin static options (constant) init (12); 4 39 dcl File_warning fixed bin static options (constant) init (13); 4 40 dcl File_type fixed bin static options (constant) init (14); 4 41 dcl Retry_threshold fixed bin static options (constant) init (15); 4 42 dcl Line_byte_size fixed bin static options (constant) init (16); 4 43 dcl Window_size fixed bin static options (constant) init (17); 4 44 dcl Max_len_ext_1 fixed bin static options (constant) init (18); 4 45 dcl Max_len_ext_2 fixed bin static options (constant) init (19); 4 46 dcl Capabilities fixed bin static options (constant) init (20); 4 47 4 48 dcl 01 Perm_defaults aligned static options (constant), 4 49 02 maxl fixed bin (8) unal init (80), 4 50 02 time fixed bin (8) unal init (15), 4 51 02 npad fixed bin (8) unal init (0), 4 52 02 padc char (1) unal init (""), 4 53 02 eol char (1) unal init (" "), 4 54 02 qctl char (1) unal init ("#"), 4 55 02 qbin char (1) unal init ("&"), 4 56 02 rept char (1) unal init ("~"), 4 57 02 start char (1) unal init (""), 4 58 02 chkt fixed bin (8) unal init (1), 4 59 02 parity char (1) unal init ("N"), 4 60 02 incomplete char (1) unal init ("K"), 4 61 02 file_warning char (1) unal init ("Y"), 4 62 02 file_type char (1) unal init ("A"), 4 63 02 retry_threshold fixed bin (8) unal init (5), 4 64 02 line_type fixed bin (8) unal init (7), 4 65 02 window_size fixed bin (8) unal init (0), 4 66 02 max_len_ext_1 fixed bin (8) unal init (5), 4 67 02 max_len_ext_2 fixed bin (8) unal init (25), 4 68 02 capabilities fixed bin (8) unal init (2); 4 69 4 70 4 71 dcl I_maxl fixed bin static options (constant) init (1); 4 72 dcl I_timeout fixed bin static options (constant) init (2); 4 73 dcl I_n_pads fixed bin static options (constant) init (3); 4 74 dcl I_pad_char fixed bin static options (constant) init (4); 4 75 dcl I_eol_char fixed bin static options (constant) init (5); 4 76 dcl I_quote_char fixed bin static options (constant) init (6); 4 77 dcl O_maxl fixed bin static options (constant) init (7); 4 78 dcl O_timeout fixed bin static options (constant) init (8); 4 79 dcl O_n_pads fixed bin static options (constant) init (9); 4 80 dcl O_pad_char fixed bin static options (constant) init (10); 4 81 dcl O_eol_char fixed bin static options (constant) init (11); 4 82 dcl O_quote_char fixed bin static options (constant) init (12); 4 83 dcl G_eight_bit_char fixed bin static options (constant) init (13); 4 84 dcl G_repeat_char fixed bin static options (constant) init (14); 4 85 dcl G_start_char fixed bin static options (constant) init (15); 4 86 dcl G_check_type fixed bin static options (constant) init (16); 4 87 dcl G_parity fixed bin static options (constant) init (17); 4 88 dcl G_window fixed bin static options (constant) init (18); 4 89 dcl I_max_lenx1 fixed bin static options (constant) init (19); 4 90 dcl I_max_lenx2 fixed bin static options (constant) init (20); 4 91 dcl O_max_lenx1 fixed bin static options (constant) init (21); 4 92 dcl O_max_lenx2 fixed bin static options (constant) init (22); 4 93 dcl G_capabilities fixed bin static options (constant) init (23); 4 94 4 95 dcl 01 Temp_defaults aligned static options (constant), 4 96 02 i_maxl fixed bin (8) unal init (80), 4 97 02 i_time fixed bin (8) unal init (15), 4 98 02 i_npad fixed bin (8) unal init (0), 4 99 02 i_padc char (1) unal init (""), 4 100 02 i_eol char (1) unal init (" "), 4 101 02 i_qctl char (1) unal init ("#"), 4 102 02 o_maxl fixed bin (8) unal init (80), 4 103 02 o_time fixed bin (8) unal init (15), 4 104 02 o_npad fixed bin (8) unal init (0), 4 105 02 o_padc char (1) unal init (""), 4 106 02 o_eol char (1) unal init (" "), 4 107 02 o_qctl char (1) unal init ("#"), 4 108 02 qbin char (1) unal init ("N"), 4 109 02 rept char (1) unal init (" "), 4 110 02 start char (1) unal init (""), 4 111 02 chkt fixed bin (8) unal init (1), 4 112 02 parity char (1) unal init ("N"), 4 113 02 window fixed bin (8) unal init (0), 4 114 02 i_maxlx1 fixed bin (8) unal init (5), 4 115 02 i_maxlx2 fixed bin (8) unal init (25), 4 116 02 o_maxlx1 fixed bin (8) unal init (5), 4 117 02 o_maxlx2 fixed bin (8) unal init (25), 4 118 02 capabilities fixed bin (8) unal init (2); 4 119 4 120 dcl Ext_Headers bit (9) static options (constant) init ("002"b3); 4 121 4 122 4 123 /* END OF: kermit_mode_info.incl.pl1 * * * * * */ 125 126 5 1 /* START OF: kermit_transfer_info.incl.pl1 * * * * * */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(88-05-16,Huen), approve(88-05-16,MCR7841), audit(88-05-25,RWaters), 5 7* install(88-07-05,MR12.2-1054): 5 8* Fix kermit 15, 16, 17, and 18. 5 9* END HISTORY COMMENTS */ 5 10 5 11 5 12 /********************************************************************/ 5 13 /* */ 5 14 /*n kermit_transfer_info */ 5 15 /* */ 5 16 /*d This data structure is the info structure used */ 5 17 /*d during file transfer. */ 5 18 /* */ 5 19 /*l Written: 84-10-11 by Maureen Mallmes */ 5 20 /*l Modified: 87-06-19 by Don Kozlowski - Add flags in kti */ 5 21 /*l structure. (kermit 15) */ 5 22 /*l Modified: 87-07-22 by Don Kozlowski - Add msf flag in */ 5 23 /*l kti structure. (kermit 17) */ 5 24 /* */ 5 25 /********************************************************************/ 5 26 5 27 dcl 01 kermit_transfer_info aligned based (transfer_infop), 5 28 02 retry_count fixed bin (21), /* for current packet */ 5 29 02 retry_threshold fixed bin (8) unal, /* maximum retries */ 5 30 02 sequence_n fixed bin, /* sequence number */ 5 31 02 filenamesp ptr, /* ptr to filenames */ 5 32 02 filenames_idx fixed bin, /* current filename */ 5 33 02 filep ptr, /* start of file ptr */ 5 34 02 buffp ptr, /* file data ptr */ 5 35 02 msf_count fixed bin (21), /* msf segments to send */ 5 36 02 msf_current fixed bin (21), /* current msf module */ 5 37 02 file_count fixed bin, /* per transaction */ 5 38 02 statisticsp ptr, /* statistics info ptr */ 5 39 02 flags, 5 40 03 msf bit (1), /* Is this an MSF */ 5 41 03 owe_a_cr bit (1), /* Holding back a CR */ 5 42 03 pad bit (34), 5 43 02 iocb_ptr ptr; /* for vfile_ */ 5 44 5 45 5 46 5 47 dcl transfer_infop ptr; 5 48 dcl kermit_transfer_info_version 5 49 char (9) static options (constant) 5 50 init ("kti 1.1"); 5 51 5 52 5 53 5 54 5 55 /********************************************************************/ 5 56 /* */ 5 57 /*n kermit_filenames */ 5 58 /* */ 5 59 /*d This data structure defines the overlay for the filenames. */ 5 60 /* */ 5 61 /*l Written: 84-10-11 by Maureen Mallmes */ 5 62 /*l Modified: 84-11-05 by Dean Elhard to add archive support */ 5 63 /* */ 5 64 /********************************************************************/ 5 65 5 66 dcl 01 kermit_filenames aligned based (kermit_transfer_info.filenamesp), 5 67 02 n_paths fixed bin, 5 68 02 pathname (0 refer (kermit_filenames.n_paths)) aligned, 5 69 03 directory char (168) unal, 5 70 03 entry_name char (32) unal, 5 71 03 component char (32) unal; 5 72 5 73 5 74 /********************************************************************/ 5 75 /* */ 5 76 /*n kermit_packets */ 5 77 /* */ 5 78 /*d This data defines the packet types. */ 5 79 /* */ 5 80 /*l Written: 84-10-11 by Maureen Mallmes */ 5 81 /* */ 5 82 /********************************************************************/ 5 83 5 84 5 85 dcl Data_packet char (1) internal static options (constant) init ("D"); 5 86 dcl Ack_packet char (1) internal static options (constant) init ("Y"); 5 87 dcl Nak_packet char (1) internal static options (constant) init ("N"); 5 88 dcl Send_init_packet char (1) internal static options (constant) init ("S"); 5 89 dcl Eot_packet char (1) internal static options (constant) init ("B"); 5 90 dcl File_header_packet char (1) internal static options (constant) init ("F"); 5 91 dcl Eof_packet char (1) internal static options (constant) init ("Z"); 5 92 dcl Error_packet char (1) internal static options (constant) init ("E"); 5 93 dcl Reserved_packet char (1) internal static options (constant) init ("T"); 5 94 5 95 5 96 /********************************************************************/ 5 97 /* */ 5 98 /*n kermit_states */ 5 99 /* */ 5 100 /*d This data defines the transfer states. */ 5 101 /* */ 5 102 /*l Written: 84-10-11 by Maureen Mallmes */ 5 103 /* */ 5 104 /********************************************************************/ 5 105 5 106 dcl Rec_init fixed bin internal static options (constant) init (0); 5 107 dcl Rec_file_header fixed bin internal static options (constant) init (1); 5 108 dcl Rec_data fixed bin internal static options (constant) init (2); 5 109 dcl Rec_file_abort fixed bin internal static options (constant) init (3); 5 110 dcl Rec_abort fixed bin internal static options (constant) init (4); 5 111 dcl Rec_complete fixed bin internal static options (constant) init (5); 5 112 5 113 dcl Send_init fixed bin internal static options (constant) init (0); 5 114 dcl Send_file_header fixed bin internal static options (constant) init (1); 5 115 dcl Send_data fixed bin internal static options (constant) init (2); 5 116 dcl Send_eof fixed bin internal static options (constant) init (3); 5 117 dcl Send_break fixed bin internal static options (constant) init (4); 5 118 dcl Send_abort fixed bin internal static options (constant) init (5); 5 119 dcl Send_complete fixed bin internal static options (constant) init (6); 5 120 5 121 5 122 /* END OF: kermit_transfer_info.incl.pl1 * * * * * */ 127 128 6 1 /* Begin include file ..... iox_modes.incl.pl1 */ 6 2 6 3 /* Written by C. D. Tavares, 03/17/75 */ 6 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 6 5 6 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 6 7 ("stream_input", "stream_output", "stream_input_output", 6 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 6 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 6 10 "direct_input", "direct_output", "direct_update"); 6 11 6 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 6 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 6 14 6 15 dcl (Stream_input initial (1), 6 16 Stream_output initial (2), 6 17 Stream_input_output initial (3), 6 18 Sequential_input initial (4), 6 19 Sequential_output initial (5), 6 20 Sequential_input_output initial (6), 6 21 Sequential_update initial (7), 6 22 Keyed_sequential_input initial (8), 6 23 Keyed_sequential_output initial (9), 6 24 Keyed_sequential_update initial (10), 6 25 Direct_input initial (11), 6 26 Direct_output initial (12), 6 27 Direct_update initial (13)) fixed bin int static options (constant); 6 28 6 29 /* End include file ..... iox_modes.incl.pl1 */ 129 130 7 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 7 2 /* format: style2,^inddcls,idind32 */ 7 3 7 4 declare 1 terminate_file_switches based, 7 5 2 truncate bit (1) unaligned, 7 6 2 set_bc bit (1) unaligned, 7 7 2 terminate bit (1) unaligned, 7 8 2 force_write bit (1) unaligned, 7 9 2 delete bit (1) unaligned; 7 10 7 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 7 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 7 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 7 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 7 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 7 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 7 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 7 18 7 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 131 132 133 send_to_remote: 134 entry (infop, filenames_areap, first_filename, file_sw, files_sent, ec); 135 136 /**********************************************************************/ 137 /* */ 138 /*n Name: kermit_send_$send_to_remote external */ 139 /*i Input: infop, filenames_areap, first_filename, file_sw */ 140 /*f Function: Sends the file or files specified to the */ 141 /*f microcomputer. */ 142 /*f Provides a state-switching mechanism and data */ 143 /*f interface via calls to send_init, send_filename, */ 144 /*f send_data, send_eof, send_eot and abort. */ 145 /*f Uses transfer_info to update log. */ 146 /*o Output: files_sent, ec */ 147 /* */ 148 /**********************************************************************/ 149 150 retry_select = Retry_threshold; 151 call kermit_mode_mgr_$retrieve (infop, Permanent, retry_select, addr (retry_max), ec); 152 153 ktip = addr (kti); 154 kti.retry_threshold = retry_max; 155 kti.retry_count = 0; 156 kti.sequence_n = 0; 157 kti.filenamesp = filenames_areap; 158 kti.filenames_idx = 0; 159 kti.filep = null; 160 kti.iocb_ptr = null; 161 kti.msf = False; 162 kti.buffp = null; 163 kti.file_count = 0; 164 kti.statisticsp = addr (kermit_stats); 165 166 kermit_stats.caller = Whoami; 167 kermit_stats.status = 0; 168 kermit_stats.filename = ""; 169 kermit_stats.file_len = 0; 170 kermit_stats.char_count = 0; 171 kermit_stats.packet_chars = 0; 172 kermit_stats.packet_count = 0; 173 kermit_stats.packet_retries = 0; 174 kermit_stats.start_time = 0; 175 kermit_stats.end_time = 0; 176 kermit_stats.error_message = ""; 177 178 on cleanup begin; 179 if kti.filep ^= null then 180 call terminate_file_ (kti.filep, 0, TERM_FILE_TERM, (0)); 181 kti.filep = null; 182 if kti.iocb_ptr ^= null then do; 183 call iox_$close (kti.iocb_ptr, ec); 184 call iox_$detach_iocb (kti.iocb_ptr, ec); 185 kti.iocb_ptr = null; 186 kti.msf = False; 187 end; 188 end; 189 190 state = Send_init; 191 192 193 194 /* State switcher */ 195 196 do while ("1"b); 197 198 goto send_state (state); 199 200 Send_Init: 201 call send_init (infop, ktip, state); 202 goto exit_state; 203 204 Send_File: 205 call send_filename (infop, ktip, first_filename, file_sw, state); 206 if kermit_stats.status ^= 0 then call update_log (infop, ktip); 207 goto exit_state; 208 Send_Data: 209 call send_data (infop, ktip, state); 210 goto exit_state; 211 212 Send_Eof: 213 call send_eof (infop, ktip, state); 214 if state ^= Send_eof then call update_log (infop, ktip); 215 goto exit_state; 216 217 Send_Break: 218 call send_break (infop, ktip, state); 219 goto exit_state; 220 221 Send_Abort: 222 call abort_group (infop, ktip); 223 ec = kermit_stats.status; 224 225 Send_Complete: 226 files_sent = kti.file_count; 227 return; 228 229 exit_state: end; 230 231 return; 232 233 send_break: proc (infop, ktip, state); 234 235 /**********************************************************************/ 236 /* */ 237 /*n Name: kermit_send_$send_break internal */ 238 /*i Input: infop, ktip */ 239 /*f Function: Transmits an End-of-Transmission (EOT) packet. */ 240 /*f Sets state according to acknowledgement from */ 241 /*f remote. */ 242 /*o Output: state */ 243 /* */ 244 /**********************************************************************/ 245 246 /* parameters */ 247 248 dcl infop ptr; 249 dcl ktip ptr; 250 dcl state fixed bin; 251 252 /* automatic */ 253 254 dcl chars_received fixed bin (21); 255 dcl chars_sent fixed bin (21); 256 dcl ec fixed bin (35); 257 dcl eol_split bit (1); 258 dcl idx fixed bin; 259 dcl packet_n fixed bin; 260 dcl packet_size fixed bin (21); 261 dcl packet_type char (1); 262 dcl remote_data char (Max_remote_packet_size); 263 dcl remote_datap ptr; 264 265 /* based */ 266 267 dcl 01 kermit_stats aligned like kermit_stats_info based (kti.statisticsp); 268 dcl 01 kti like kermit_transfer_info based (ktip); 269 270 /* labels */ 271 272 dcl packet (0:3) label init (Other, Nak, Ack, Error); 273 274 /* constants */ 275 276 dcl Packet_string char (3) internal static options (constant) init ("NYE"); 277 278 279 ec = 0; 280 packet_type = ""; 281 remote_datap = addr (remote_data); 282 kti.retry_count = kti.retry_count + 1; 283 284 /* Should we give up? */ 285 if kti.retry_count > kti.retry_threshold then do; 286 kermit_stats.status = kermit_et_$too_many_retries; 287 call kermit_pad_$send (infop, Error_packet, null, (0), kti.sequence_n, (0), (0), ec); 288 state = Send_abort; 289 return; 290 end; 291 292 call kermit_pad_$send (infop, Eot_packet, null, (0), kti.sequence_n, chars_sent, packet_size, ec); 293 if ec ^= 0 then goto Retry_packet; 294 295 Ignore_packet: 296 call kermit_pad_$receive (infop, packet_type, remote_datap, Max_remote_packet_size, packet_n, chars_received, packet_size, eol_split, ec); 297 if ec ^= 0 then goto Retry_packet; 298 299 idx = index (Packet_string, packet_type); 300 goto packet (idx); 301 302 303 Ack: /* Received an ACK packet */ 304 if mod (packet_n + 1, Mod_64) = kti.sequence_n 305 then goto Ignore_packet; /* Ignore redundant ACK */ 306 if kti.sequence_n ^= packet_n then goto Retry_packet; 307 kti.retry_count = 0; 308 kti.sequence_n = mod (kti.sequence_n + 1, Mod_64); 309 state = Send_complete; 310 return; 311 312 Error: /* Received an Error packet */ 313 kermit_stats.status = kermit_et_$fatal_error; 314 kermit_stats.error_message = substr (remote_data, 1, chars_received); 315 state = Send_abort; 316 return; 317 318 Nak: /* Received a Nak packet */ 319 Other: /* Got something other than the above */ 320 Retry_packet: 321 kermit_stats.packet_retries = kermit_stats.packet_retries + 1; 322 return; 323 end send_break; 324 325 326 send_data: proc (infop, ktip, state); 327 328 /**********************************************************************/ 329 /* */ 330 /*n Name: kermit_send_$send_data internal */ 331 /*i Input: infop, ktip */ 332 /*f Function: Transmits a Data (D) packet, which */ 333 /*f contains file data in the data field. */ 334 /*f Sets state according to acknowledgement from */ 335 /*f remote. */ 336 /*o Output: state */ 337 /* */ 338 /**********************************************************************/ 339 340 /* parameters */ 341 342 dcl infop ptr; 343 dcl ktip ptr; 344 dcl state fixed bin; 345 346 /* automatic */ 347 348 dcl bit_count fixed bin (24); 349 dcl chars_received fixed bin (21); 350 dcl chars_sent fixed bin (21); 351 dcl ec fixed bin (35); 352 dcl eol_split bit (1); 353 dcl idx fixed bin; 354 dcl packet_n fixed bin; 355 dcl packet_size fixed bin (21); 356 dcl packet_type char (1); 357 dcl r_packet_size fixed bin (21); 358 dcl remote_data char (Max_remote_packet_size); 359 dcl remote_datap ptr; 360 361 362 /* based */ 363 364 dcl 01 kermit_stats aligned like kermit_stats_info based (kti.statisticsp); 365 dcl 01 kti like kermit_transfer_info based (ktip); 366 367 /* labels */ 368 369 dcl packet (0:3) label init (Other, Nak, Ack, Error); 370 371 /* constants */ 372 373 dcl Packet_string char (3) internal static options (constant) init ("NYE"); 374 375 dcl initiate_file_$component 376 entry (char (*), char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 377 378 379 ec = 0; 380 remote_datap = addr (remote_data); 381 382 kti.retry_count = kti.retry_count + 1; 383 384 /* Should we give up? */ 385 if kti.retry_count > kti.retry_threshold then do; 386 kermit_stats.status = kermit_et_$too_many_retries; 387 call kermit_pad_$send (infop, Error_packet, null, (0), kti.sequence_n, (0), (0), ec); 388 state = Send_abort; 389 return; 390 end; 391 392 call kermit_pad_$send (infop, Data_packet, kti.buffp, kermit_stats.file_len - kermit_stats.char_count, kti.sequence_n, chars_sent, packet_size, ec); 393 if ec ^= 0 then goto Retry_packet; 394 395 Ignore_packet: 396 call kermit_pad_$receive (infop, packet_type, remote_datap, Max_remote_packet_size, packet_n, chars_received, r_packet_size, eol_split, ec); 397 if ec ^= 0 then goto Retry_packet; 398 399 idx = index (Packet_string, packet_type); 400 goto packet (idx); 401 402 Ack: /* Received an ACK packet */ 403 if mod (packet_n + 1, Mod_64) = kti.sequence_n 404 then goto Ignore_packet; /* Ignore redundant ACK */ 405 else if kti.sequence_n ^= packet_n then goto Retry_packet; 406 407 kti.retry_count = 0; 408 kti.sequence_n = mod (kti.sequence_n + 1, Mod_64); 409 kermit_stats.char_count = kermit_stats.char_count + chars_sent; 410 kti.buffp = add_char_offset_ (kti.buffp, chars_sent); 411 kermit_stats.packet_count = kermit_stats.packet_count + 1; 412 kermit_stats.packet_chars = kermit_stats.packet_chars + packet_size; 413 414 /* Check for remote file/group abort */ 415 if chars_received ^= 0 then do; 416 if substr (remote_data, 1, chars_received) = "X" then 417 kermit_stats.status = kermit_et_$remote_file_abort; 418 else if substr (remote_data, 1, chars_received) = "Z" then 419 kermit_stats.status = kermit_et_$remote_group_abort; 420 end; 421 422 423 if kermit_stats.char_count = kermit_stats.file_len 424 & kti.msf 425 & kti.msf_count > kti.msf_current 426 then do; 427 kti.msf_current = kti.msf_current + 1; 428 call terminate_file_ (kti.filep, 0, TERM_FILE_TERM, (0)); 429 call initiate_file_$component ( pathname_ ( 430 filenames.directory (kti.filenames_idx), 431 filenames.entry_name (kti.filenames_idx)), 432 ltrim (char (kti.msf_current)), 433 "",R_ACCESS, kti.filep, bit_count, ec); 434 kti.buffp = kti.filep; 435 kermit_stats.file_len = bit_count / Byte_length + kermit_stats.char_count; 436 end; 437 438 439 if kermit_stats.char_count = kermit_stats.file_len | kermit_stats.status ^= 0 then state = Send_eof; 440 return; 441 442 Error: /* Received an Error packet */ 443 kermit_stats.status = kermit_et_$fatal_error; 444 kermit_stats.error_message = substr (remote_data, 1, chars_received); 445 state = Send_abort; 446 return; 447 448 Nak: /* Received a Nak packet */ 449 Other: /* Got something other than the above */ 450 Retry_packet: 451 kermit_stats.packet_retries = kermit_stats.packet_retries + 1; 452 return; 453 454 end send_data; 455 456 send_eof: proc (infop, ktip, state); 457 458 /**********************************************************************/ 459 /* */ 460 /*n Name: kermit_send_$send_eof internal */ 461 /*i Input: infop, ktip */ 462 /*f Function: Sends an End-Of-File (Z) packet. */ 463 /*f If the eof packet is in response to an abort */ 464 /*f request received earlier from the remote then */ 465 /*f a "D" is placed in the data part of the packet. */ 466 /*f Sets state according to acknowledgement from */ 467 /*f remote. */ 468 /*o Output: state */ 469 /* */ 470 /**********************************************************************/ 471 472 /* parameters */ 473 474 dcl infop ptr; 475 dcl ktip ptr; 476 dcl state fixed bin; 477 478 /* automatic */ 479 480 dcl abort_char char (1); 481 dcl abort_char_lth fixed bin (21); 482 dcl chars_received fixed bin (21); 483 dcl chars_sent fixed bin (21); 484 dcl ec fixed bin (35); 485 dcl eol_split bit (1); 486 dcl idx fixed bin; 487 dcl packet_n fixed bin; 488 dcl packet_size fixed bin (21); 489 dcl packet_type char (1); 490 dcl remote_data char (Max_remote_packet_size); 491 dcl remote_datap ptr; 492 493 /* based */ 494 495 dcl 01 filenames like kermit_filenames based (kti.filenamesp); 496 dcl 01 kermit_stats aligned like kermit_stats_info based (kti.statisticsp); 497 dcl 01 kti like kermit_transfer_info based (ktip); 498 499 /* labels */ 500 501 dcl packet (0:3) label init (Other, Nak, Ack, Error); 502 503 /* constants */ 504 505 dcl Packet_string char (3) internal static options (constant) init ("NYE"); 506 507 ec = 0; 508 remote_datap = addr (remote_data); 509 kti.retry_count = kti.retry_count + 1; 510 511 /* Should we give up? */ 512 if kti.retry_count > kti.retry_threshold then do; 513 kermit_stats.status = kermit_et_$too_many_retries; 514 call kermit_pad_$send (infop, Error_packet, null, (0), kti.sequence_n, (0), (0), ec); 515 state = Send_abort; 516 return; 517 end; 518 519 if kermit_stats.status ^= 0 then do; /* responding to abort request */ 520 abort_char = "D"; 521 abort_char_lth = 1; 522 end; 523 524 else abort_char_lth = 0; /* no previous abort request */ 525 526 call kermit_pad_$send (infop, Eof_packet, addr (abort_char), abort_char_lth, kti.sequence_n, chars_sent, packet_size, ec); 527 if ec ^= 0 then goto Retry_packet; 528 529 Ignore_packet: 530 call kermit_pad_$receive (infop, packet_type, remote_datap, Max_remote_packet_size, packet_n, chars_received, packet_size, eol_split, ec); 531 if ec ^= 0 then goto Retry_packet; 532 533 idx = index (Packet_string, packet_type); 534 goto packet (idx); 535 536 Ack: /* Received an ACK packet */ 537 if mod (packet_n + 1, Mod_64) = kti.sequence_n 538 then goto Ignore_packet; /* Ignore redundant ACK */ 539 if kti.sequence_n ^= packet_n then goto Retry_packet; 540 541 kti.retry_count = 0; 542 kti.sequence_n = mod (kti.sequence_n + 1, Mod_64); 543 kermit_stats.end_time = clock_ (); 544 if kermit_stats.status = 0 then kti.file_count = kti.file_count + 1; 545 if kermit_stats.status = kermit_et_$remote_group_abort then state = Send_abort; 546 else if kti.filenames_idx = filenames.n_paths then state = Send_break; 547 else state = Send_file_header; 548 return; 549 550 Error: /* Received an Error packet */ 551 kermit_stats.status = kermit_et_$fatal_error; 552 kermit_stats.error_message = substr (remote_data, 1, chars_received); 553 state = Send_abort; 554 return; 555 556 Nak: /* Received a Nak packet */ 557 Other: /* Got something other than the above */ 558 Retry_packet: 559 kermit_stats.packet_retries = kermit_stats.packet_retries + 1; 560 return; 561 end send_eof; 562 563 send_filename: proc (infop, ktip, first_filename, file_sw, state); 564 565 /**********************************************************************/ 566 /* */ 567 /*n Name: kermit_send_$send_filename internal */ 568 /*i Input: infop, ktip */ 569 /*f Function: Transmits a File-Header (F) packet, which */ 570 /*f contains the file's name in the data field. */ 571 /*f Sets state according to acknowledgement from */ 572 /*f remote. */ 573 /*o Output: state */ 574 /*l Modified: 89-01-02 by S Huen - Handle links to Multisegment */ 575 /*l files correctly. (pc_24) */ 576 /* */ 577 /**********************************************************************/ 578 579 580 581 582 /* parameters */ 583 584 dcl file_sw bit (1); 585 dcl first_filename char (*); 586 dcl infop ptr; 587 dcl ktip ptr; 588 dcl state fixed bin; 589 590 /* automatic */ 591 592 dcl bit_count fixed bin (24); 593 dcl chars_received fixed bin (21); 594 dcl chars_sent fixed bin (21); 595 dcl ec fixed bin (35); 596 dcl eol_split bit (1); 597 dcl idx fixed bin; 598 dcl packet_n fixed bin; 599 dcl packet_size fixed bin (21); 600 dcl packet_type char (1); 601 dcl remote_data char (Max_remote_packet_size); 602 dcl remote_datap ptr; 603 dcl source_file char (32); 604 dcl source_filep ptr; 605 dcl source_file_lth fixed bin (21); 606 607 /* based */ 608 609 dcl 01 filenames like kermit_filenames based (kti.filenamesp); 610 dcl 01 kermit_stats aligned like kermit_stats_info based (kti.statisticsp); 611 dcl 01 kti like kermit_transfer_info based (ktip); 612 613 /* labels */ 614 615 dcl packet (0:3) label init (Other, Nak, Ack, Error); 616 617 /* constants */ 618 619 dcl Packet_string char (3) internal static options (constant) init ("NYE"); 620 621 622 /* procedures */ 623 624 dcl initiate_file_$component 625 entry (char (*), char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 626 627 ec = 0; 628 remote_datap = addr (remote_data); 629 kti.retry_count = kti.retry_count + 1; 630 631 /* Should we give up? */ 632 if kti.retry_count > kti.retry_threshold then do; 633 kermit_stats.status = kermit_et_$too_many_retries; 634 call kermit_pad_$send (infop, Error_packet, null, (0), kti.sequence_n, (0), (0), ec); 635 state = Send_abort; 636 return; 637 end; 638 639 /* Have we already set up the file */ 640 if (kti.filep = null) & (kti.iocb_ptr = null) then do; 641 kermit_stats.status = 0; 642 bit_count = 0; 643 kti.filenames_idx = kti.filenames_idx + 1; 644 645 /* make sure there's really another file */ 646 if kti.filenames_idx > filenames.n_paths then do; 647 state = Send_break; 648 return; 649 end; 650 651 call initiate_file_$component (filenames.directory (kti.filenames_idx), filenames.entry_name (kti.filenames_idx), filenames.component (kti.filenames_idx), R_ACCESS, kti.filep, bit_count, ec); 652 if ec = error_table_$dirseg 653 & (filenames.component (kti.filenames_idx) = "") 654 then do; 655 call hcs_$status_minf ( 656 filenames.directory (kti.filenames_idx), 657 filenames.entry_name (kti.filenames_idx), 658 (1), (0), bit_count , ec); 659 if bit_count > 0 then do; 660 kti.msf = True; 661 kti.msf_count = bit_count; 662 kti.msf_current = 0; 663 call initiate_file_$component ( pathname_ ( 664 filenames.directory (kti.filenames_idx), 665 filenames.entry_name (kti.filenames_idx)), 666 "0", "",R_ACCESS, kti.filep, bit_count, ec); 667 end; 668 else ec = error_table_$dirseg; 669 end; 670 kermit_stats.filename = pathname_$component (filenames.directory (kti.filenames_idx), filenames.entry_name (kti.filenames_idx), filenames.component (kti.filenames_idx)); 671 kermit_stats.start_time = clock_ (); 672 kermit_stats.file_len = bit_count / Byte_length; 673 if ec ^= 0 | bit_count = 0 then do; 674 if ec ^= 0 then kermit_stats.status = ec; 675 else kermit_stats.status = error_table_$empty_file; 676 kti.filep = null; 677 kermit_stats.end_time = kermit_stats.start_time; 678 if kti.msf then do; 679 call iox_$close (kti.iocb_ptr, ec); 680 call iox_$detach_iocb (kti.iocb_ptr, ec); 681 kti.msf = False; 682 kti.iocb_ptr = null; 683 end; 684 return; 685 end; 686 else kti.buffp = kti.filep; 687 end; 688 689 /* we have a user-specified destination path for the first file */ 690 if file_sw then do; 691 source_file = first_filename; 692 file_sw = False; 693 end; 694 695 else do; 696 if filenames.component (kti.filenames_idx) = "" then 697 source_file = filenames.entry_name (kti.filenames_idx); 698 else source_file = filenames.component (kti.filenames_idx); 699 end; 700 701 702 source_filep = addr (source_file); 703 source_file_lth = length (rtrim (source_file)); 704 705 call kermit_pad_$send (infop, File_header_packet, source_filep, source_file_lth, kti.sequence_n, chars_sent, packet_size, ec); 706 if ec ^= 0 then goto Retry_packet; 707 708 Ignore_packet: 709 call kermit_pad_$receive (infop, packet_type, remote_datap, Max_remote_packet_size, packet_n, chars_received, packet_size, eol_split, ec); 710 if ec ^= 0 then goto Retry_packet; 711 712 idx = index (Packet_string, packet_type); 713 goto packet (idx); 714 715 Ack: /* Received an ACK packet */ 716 if mod (packet_n + 1, Mod_64) = kti.sequence_n 717 then goto Ignore_packet; /* Ignore redundant ACK */ 718 if kti.sequence_n ^= packet_n then goto Retry_packet; 719 720 kti.retry_count = 0; 721 kti.sequence_n = mod (kti.sequence_n + 1, Mod_64); 722 state = Send_data; 723 return; 724 725 Error: /* Received an Error packet */ 726 kermit_stats.status = kermit_et_$fatal_error; 727 kermit_stats.error_message = substr (remote_data, 1, chars_received); 728 state = Send_abort; 729 return; 730 731 Nak: /* Received a Nak packet */ 732 Other: /* Got something other than the above */ 733 Retry_packet: 734 kermit_stats.packet_retries = kermit_stats.packet_retries + 1; 735 return; 736 end send_filename; 737 738 739 send_init: proc (infop, ktip, state); 740 741 /**********************************************************************/ 742 /* */ 743 /*n Name: kermit_send_$send_init internal */ 744 /*i Input: infop, ktip */ 745 /*f Function: Transmits a Send-Initiate (S) packet to specify */ 746 /*f local parameters (packet length, timeout, etc.) */ 747 /*f Waits for the remote's parameters via an ACK (Y) */ 748 /*f packet with the remote parameters in the data */ 749 /*f field. The results of this negotiation are */ 750 /*f recorded in New-Modes. */ 751 /*o Output: state */ 752 /* */ 753 /**********************************************************************/ 754 755 /* parameters */ 756 757 dcl infop ptr; 758 dcl ktip ptr; 759 dcl state fixed bin; 760 761 /* automatic */ 762 763 dcl chars_received fixed bin (21); 764 dcl chars_sent fixed bin (21); 765 dcl ec fixed bin (35); 766 dcl eol_split bit (1); 767 dcl idx fixed bin; 768 dcl packet_n fixed bin; 769 dcl packet_size fixed bin (21); 770 dcl packet_type char (1); 771 dcl remote_data char (Max_remote_packet_size); 772 dcl remote_datap ptr; 773 dcl send_init_data char (Max_packet_size); 774 dcl send_init_packet char (Max_packet_size); 775 dcl send_init_data_lth fixed bin (21); 776 dcl send_init_packet_lth fixed bin (21); 777 dcl send_init_datap ptr; 778 dcl send_init_packetp ptr; 779 780 /* based */ 781 782 dcl 01 kermit_stats aligned like kermit_stats_info based (kti.statisticsp); 783 dcl 01 kti like kermit_transfer_info based (ktip); 784 785 /* labels */ 786 787 dcl packet (0:3) label init (Other, Nak, Ack, Error); 788 789 /* constants */ 790 791 dcl Packet_string char (3) internal static options (constant) init ("NYE"); 792 793 ec = 0; 794 send_init_datap = addr (send_init_data); 795 send_init_packetp = addr (send_init_packet); 796 remote_datap = addr (remote_data); 797 kti.retry_count = kti.retry_count + 1; 798 799 /* Should we give up? */ 800 if kti.retry_count > kti.retry_threshold then do; 801 kermit_stats.status = kermit_et_$no_initialization; 802 call kermit_pad_$send (infop, Error_packet, null, (0), kti.sequence_n, (0), (0), ec); 803 state = Send_abort; 804 return; 805 end; 806 807 /* Clear the tty_ line (first time only) */ 808 if kti.retry_count = 1 then call kermit_comm_mgr_$flush_input (infop, ec); 809 810 /* Get local send-init data */ 811 call kermit_xfer_modes_$get_local_params (infop, send_init_datap, send_init_data_lth, send_init_packetp, send_init_packet_lth, ec); 812 if ec ^= 0 then goto Retry_packet; 813 814 call kermit_pad_$send (infop, Send_init_packet, send_init_packetp, send_init_packet_lth, kti.sequence_n, chars_sent, packet_size, ec); 815 if ec ^= 0 then goto Retry_packet; 816 817 Ignore_packet: 818 call kermit_pad_$receive (infop, packet_type, remote_datap, Max_remote_packet_size, packet_n, chars_received, packet_size, eol_split, ec); 819 if ec ^= 0 then goto Retry_packet; 820 821 idx = index (Packet_string, packet_type); 822 goto packet (idx); 823 824 825 Ack: /* Received an ACK packet */ 826 if mod (packet_n + 1, Mod_64) = kti.sequence_n 827 then goto Ignore_packet; /* Ignore redundant ACK */ 828 if packet_n ^= kti.sequence_n then goto Retry_packet; 829 /* Have the remote init data, so set the transfer modes */ 830 call kermit_xfer_modes_$process_params (infop, remote_datap, chars_received, send_init_datap, ec); 831 if ec ^= 0 then 832 goto Retry_packet; 833 834 /* And reset the tty_ line */ 835 call kermit_comm_mgr_$reset_line_modes (infop, ec); 836 call kermit_comm_mgr_$set_line_modes (infop, ec); 837 838 kti.retry_count = 0; 839 kti.sequence_n = mod (kti.sequence_n + 1, Mod_64); 840 state = Send_file_header; 841 return; 842 843 Error: /* Received an Error packet */ 844 kermit_stats.status = kermit_et_$fatal_error; 845 kermit_stats.error_message = substr (remote_data, 1, chars_received); 846 state = Send_abort; 847 return; 848 849 Nak: /* Received a Nak packet */ 850 Other: /* Got something other than the above */ 851 Retry_packet: 852 kermit_stats.packet_retries = kermit_stats.packet_retries + 1; 853 return; 854 end send_init; 855 856 update_log: 857 proc (infop, ktip); 858 859 /**********************************************************************/ 860 /* */ 861 /*n Name: kermit_send_$update_log internal */ 862 /*i Input: infop, ktip */ 863 /*f Function: Calls the log_mgr_ to updates the log-file and */ 864 /*f statistics database. Re-initializes all file */ 865 /*f associated variables. */ 866 /*o Output: none */ 867 /* */ 868 /**********************************************************************/ 869 870 /* parameters */ 871 872 dcl infop ptr; 873 dcl ktip ptr; 874 875 876 /* based */ 877 878 dcl 01 kermit_stats aligned like kermit_stats_info based (kti.statisticsp); 879 dcl 01 kti like kermit_transfer_info based (ktip); 880 881 call kermit_log_mgr_$log_message (infop, kti.statisticsp); 882 883 if kti.filep ^= null 884 then call terminate_file_ (kti.filep, 0, TERM_FILE_TERM, (0)); 885 if kti.iocb_ptr ^= null 886 then do; 887 call iox_$close (kti.iocb_ptr, ec); 888 call iox_$detach_iocb (kti.iocb_ptr, ec); 889 end; 890 kti.iocb_ptr = null; 891 kti.filep = null; 892 kti.buffp = null; 893 894 kermit_stats.filename, kermit_stats.error_message = ""; 895 if kermit_stats.status = kermit_et_$remote_file_abort then kermit_stats.status = 0; 896 897 kermit_stats.file_len, kermit_stats.char_count, 898 kermit_stats.packet_chars, kermit_stats.packet_count, 899 kermit_stats.packet_retries, kermit_stats.start_time, 900 kermit_stats.end_time = 0; 901 902 return; 903 end update_log; 904 905 abort_group: 906 proc (infop, ktip); 907 908 /**********************************************************************/ 909 /* */ 910 /*n Name: kermit_send_$abort internal */ 911 /*i Input: infop, ktip */ 912 /*f Function: Aborts transaction. Records aborted file and */ 913 /*f files that could not be sent. */ 914 /*o Output: none */ 915 /* */ 916 /**********************************************************************/ 917 918 /* parameters */ 919 920 dcl infop ptr; 921 dcl ktip ptr; 922 923 /* automatic */ 924 925 dcl idx fixed bin; 926 927 /* based */ 928 929 dcl 01 filenames like kermit_filenames based (kti.filenamesp); 930 dcl 01 kermit_stats aligned like kermit_stats_info based (kti.statisticsp); 931 dcl 01 kti like kermit_transfer_info based (ktip); 932 933 934 /* Were we in the middle of a file transfer? */ 935 if (kti.filep ^= null) | (kti.iocb_ptr ^= null) then 936 call update_log (infop, ktip); 937 938 /* Log all files that could not be sent in this transaction */ 939 do idx = kti.filenames_idx + 1 to filenames.n_paths; 940 kermit_stats.filename = pathname_$component (filenames.directory (idx), filenames.entry_name (idx), filenames.component (idx)); 941 call kermit_log_mgr_$log_message (infop, kti.statisticsp); 942 end; 943 944 return; 945 end abort_group; 946 947 end kermit_send_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/14/90 0915.0 kermit_send_.pl1 >spec>install>1039>kermit_send_.pl1 119 1 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 121 2 11/20/84 1451.4 kermit_dcls.incl.pl1 >ldd>include>kermit_dcls.incl.pl1 123 3 07/07/88 2141.4 kermit_info.incl.pl1 >ldd>include>kermit_info.incl.pl1 125 4 07/07/88 2141.4 kermit_mode_info.incl.pl1 >ldd>include>kermit_mode_info.incl.pl1 127 5 07/07/88 2141.4 kermit_transfer_info.incl.pl1 >ldd>include>kermit_transfer_info.incl.pl1 129 6 02/02/78 1329.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 131 7 04/06/83 1339.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. Byte_length 004062 constant fixed bin(17,0) initial dcl 75 ref 435 672 Data_packet 000013 constant char(1) initial packed unaligned dcl 5-85 set ref 392* Eof_packet 000017 constant char(1) initial packed unaligned dcl 5-91 set ref 526* Eot_packet 000004 constant char(1) initial packed unaligned dcl 5-89 set ref 292* Error_packet 000002 constant char(1) initial packed unaligned dcl 5-92 set ref 287* 387* 514* 634* 802* False constant bit(1) initial packed unaligned dcl 93 ref 161 186 681 692 File_header_packet 000003 constant char(1) initial packed unaligned dcl 5-90 set ref 705* Max_packet_size internal static fixed bin(21,0) initial dcl 76 ref 773 774 Max_remote_packet_size 000007 constant fixed bin(21,0) initial dcl 77 set ref 262 295* 358 395* 490 529* 601 708* 771 817* Mod_64 004061 constant fixed bin(17,0) initial dcl 78 ref 303 308 402 408 536 542 715 721 825 839 Packet_string 000000 constant char(3) initial packed unaligned dcl 505 in procedure "send_eof" ref 533 Packet_string 000000 constant char(3) initial packed unaligned dcl 619 in procedure "send_filename" ref 712 Packet_string 000000 constant char(3) initial packed unaligned dcl 791 in procedure "send_init" ref 821 Packet_string 000000 constant char(3) initial packed unaligned dcl 373 in procedure "send_data" ref 399 Packet_string 000000 constant char(3) initial packed unaligned dcl 276 in procedure "send_break" ref 299 Permanent 000026 constant fixed bin(17,0) initial dcl 4-21 set ref 151* R_ACCESS 000022 constant bit(3) initial packed unaligned dcl 1-11 set ref 429* 651* 663* Retry_threshold constant fixed bin(17,0) initial dcl 4-41 ref 150 Send_abort constant fixed bin(17,0) initial dcl 5-118 ref 288 315 388 445 515 545 553 635 728 803 846 Send_break constant fixed bin(17,0) initial dcl 5-117 ref 546 647 Send_complete constant fixed bin(17,0) initial dcl 5-119 ref 309 Send_data constant fixed bin(17,0) initial dcl 5-115 ref 722 Send_eof constant fixed bin(17,0) initial dcl 5-116 ref 214 439 Send_file_header constant fixed bin(17,0) initial dcl 5-114 ref 547 840 Send_init constant fixed bin(17,0) initial dcl 5-113 ref 190 Send_init_packet 000005 constant char(1) initial packed unaligned dcl 5-88 set ref 814* TERM_FILE_TERM 000001 constant bit(3) initial packed unaligned dcl 7-14 set ref 179* 428* 883* True constant bit(1) initial packed unaligned dcl 94 ref 660 Whoami 000006 constant char(4) initial packed unaligned dcl 79 ref 166 abort_char 003404 automatic char(1) packed unaligned dcl 480 set ref 520* 526 526 abort_char_lth 003405 automatic fixed bin(21,0) dcl 481 set ref 521* 524* 526* add_char_offset_ 000026 constant entry external dcl 108 ref 410 addr builtin function dcl 83 ref 151 151 153 164 281 380 508 526 526 628 702 794 795 796 bit_count 001762 automatic fixed bin(24,0) dcl 348 in procedure "send_data" set ref 429* 435 bit_count 005026 automatic fixed bin(24,0) dcl 592 in procedure "send_filename" set ref 642* 651* 655* 659 661 663* 672 673 buffp 12 based pointer level 2 in structure "kti" dcl 879 in procedure "update_log" set ref 892* buffp 12 000242 automatic pointer level 2 in structure "kti" dcl 67 in procedure "kermit_send_" set ref 162* buffp 12 based pointer level 2 in structure "kti" dcl 611 in procedure "send_filename" set ref 686* buffp 12 based pointer level 2 in structure "kti" dcl 365 in procedure "send_data" set ref 392* 410* 410* 434* caller 000106 automatic char(32) level 2 dcl 66 set ref 166* char builtin function dcl 83 ref 429 429 char_count 73 based fixed bin(21,0) level 2 in structure "kermit_stats" dcl 364 in procedure "send_data" set ref 392 409* 409 423 435 439 char_count 73 based fixed bin(21,0) level 2 in structure "kermit_stats" dcl 878 in procedure "update_log" set ref 897* char_count 73 000106 automatic fixed bin(21,0) level 2 in structure "kermit_stats" dcl 66 in procedure "kermit_send_" set ref 170* chars_received 000342 automatic fixed bin(21,0) dcl 254 in procedure "send_break" set ref 295* 314 chars_received 003406 automatic fixed bin(21,0) dcl 482 in procedure "send_eof" set ref 529* 552 chars_received 006464 automatic fixed bin(21,0) dcl 763 in procedure "send_init" set ref 817* 830* 845 chars_received 001763 automatic fixed bin(21,0) dcl 349 in procedure "send_data" set ref 395* 415 416 418 444 chars_received 005027 automatic fixed bin(21,0) dcl 593 in procedure "send_filename" set ref 708* 727 chars_sent 001764 automatic fixed bin(21,0) dcl 350 in procedure "send_data" set ref 392* 409 410* chars_sent 005030 automatic fixed bin(21,0) dcl 594 in procedure "send_filename" set ref 705* chars_sent 000343 automatic fixed bin(21,0) dcl 255 in procedure "send_break" set ref 292* chars_sent 003407 automatic fixed bin(21,0) dcl 483 in procedure "send_eof" set ref 526* chars_sent 006465 automatic fixed bin(21,0) dcl 764 in procedure "send_init" set ref 814* cleanup 000324 stack reference condition dcl 88 ref 178 clock_ 000030 constant entry external dcl 109 ref 543 671 component 63 based char(32) array level 3 in structure "filenames" packed packed unaligned dcl 609 in procedure "send_filename" set ref 651* 652 670* 696 698 component 63 based char(32) array level 3 in structure "filenames" packed packed unaligned dcl 929 in procedure "abort_group" set ref 940* directory 1 based char(168) array level 3 in structure "filenames" packed packed unaligned dcl 609 in procedure "send_filename" set ref 651* 655* 663* 663* 670* directory 1 based char(168) array level 3 in structure "filenames" packed packed unaligned dcl 929 in procedure "abort_group" set ref 940* directory 1 based char(168) array level 3 in structure "filenames" packed packed unaligned dcl 65 in procedure "kermit_send_" set ref 429* 429* ec 005031 automatic fixed bin(35,0) dcl 595 in procedure "send_filename" set ref 627* 634* 651* 652 655* 663* 668* 673 674 674 679* 680* 705* 706 708* 710 ec 001765 automatic fixed bin(35,0) dcl 351 in procedure "send_data" set ref 379* 387* 392* 393 395* 397 429* ec 003410 automatic fixed bin(35,0) dcl 484 in procedure "send_eof" set ref 507* 514* 526* 527 529* 531 ec parameter fixed bin(35,0) dcl 49 in procedure "kermit_send_" set ref 133 151* 183* 184* 223* 887* 888* ec 000344 automatic fixed bin(35,0) dcl 256 in procedure "send_break" set ref 279* 287* 292* 293 295* 297 ec 006466 automatic fixed bin(35,0) dcl 765 in procedure "send_init" set ref 793* 802* 808* 811* 812 814* 815 817* 819 830* 831 835* 836* end_time 102 000106 automatic fixed bin(71,0) level 2 in structure "kermit_stats" dcl 66 in procedure "kermit_send_" set ref 175* end_time 102 based fixed bin(71,0) level 2 in structure "kermit_stats" dcl 496 in procedure "send_eof" set ref 543* end_time 102 based fixed bin(71,0) level 2 in structure "kermit_stats" dcl 878 in procedure "update_log" set ref 897* end_time 102 based fixed bin(71,0) level 2 in structure "kermit_stats" dcl 610 in procedure "send_filename" set ref 677* entry_name 53 based char(32) array level 3 in structure "filenames" packed packed unaligned dcl 929 in procedure "abort_group" set ref 940* entry_name 53 based char(32) array level 3 in structure "filenames" packed packed unaligned dcl 609 in procedure "send_filename" set ref 651* 655* 663* 663* 670* 696 entry_name 53 based char(32) array level 3 in structure "filenames" packed packed unaligned dcl 65 in procedure "kermit_send_" set ref 429* 429* eol_split 000345 automatic bit(1) packed unaligned dcl 257 in procedure "send_break" set ref 295* eol_split 005032 automatic bit(1) packed unaligned dcl 596 in procedure "send_filename" set ref 708* eol_split 003411 automatic bit(1) packed unaligned dcl 485 in procedure "send_eof" set ref 529* eol_split 006467 automatic bit(1) packed unaligned dcl 766 in procedure "send_init" set ref 817* eol_split 001766 automatic bit(1) packed unaligned dcl 352 in procedure "send_data" set ref 395* error_message 104 based char(94) level 2 in structure "kermit_stats" dcl 878 in procedure "update_log" set ref 894* error_message 104 based char(94) level 2 in structure "kermit_stats" dcl 267 in procedure "send_break" set ref 314* error_message 104 based char(94) level 2 in structure "kermit_stats" dcl 610 in procedure "send_filename" set ref 727* error_message 104 000106 automatic char(94) level 2 in structure "kermit_stats" dcl 66 in procedure "kermit_send_" set ref 176* error_message 104 based char(94) level 2 in structure "kermit_stats" dcl 782 in procedure "send_init" set ref 845* error_message 104 based char(94) level 2 in structure "kermit_stats" dcl 496 in procedure "send_eof" set ref 552* error_message 104 based char(94) level 2 in structure "kermit_stats" dcl 364 in procedure "send_data" set ref 444* error_table_$dirseg 000012 external static fixed bin(35,0) dcl 99 ref 652 668 error_table_$empty_file 000010 external static fixed bin(35,0) dcl 98 ref 675 file_count 16 based fixed bin(17,0) level 2 in structure "kti" dcl 497 in procedure "send_eof" set ref 544* 544 file_count 16 000242 automatic fixed bin(17,0) level 2 in structure "kti" dcl 67 in procedure "kermit_send_" set ref 163* 225 file_len 72 000106 automatic fixed bin(21,0) level 2 in structure "kermit_stats" dcl 66 in procedure "kermit_send_" set ref 169* file_len 72 based fixed bin(21,0) level 2 in structure "kermit_stats" dcl 364 in procedure "send_data" set ref 392 423 435* 439 file_len 72 based fixed bin(21,0) level 2 in structure "kermit_stats" dcl 878 in procedure "update_log" set ref 897* file_len 72 based fixed bin(21,0) level 2 in structure "kermit_stats" dcl 610 in procedure "send_filename" set ref 672* file_sw parameter bit(1) packed unaligned dcl 50 in procedure "kermit_send_" set ref 133 204* file_sw parameter bit(1) packed unaligned dcl 584 in procedure "send_filename" set ref 563 690 692* filename 11 based char(194) level 2 in structure "kermit_stats" packed packed unaligned dcl 610 in procedure "send_filename" set ref 670* filename 11 000106 automatic char(194) level 2 in structure "kermit_stats" packed packed unaligned dcl 66 in procedure "kermit_send_" set ref 168* filename 11 based char(194) level 2 in structure "kermit_stats" packed packed unaligned dcl 878 in procedure "update_log" set ref 894* filename 11 based char(194) level 2 in structure "kermit_stats" packed packed unaligned dcl 930 in procedure "abort_group" set ref 940* filenames based structure level 1 unaligned dcl 495 in procedure "send_eof" filenames based structure level 1 unaligned dcl 609 in procedure "send_filename" filenames based structure level 1 unaligned dcl 65 in procedure "kermit_send_" filenames based structure level 1 unaligned dcl 929 in procedure "abort_group" filenames_areap parameter pointer dcl 51 ref 133 157 429 429 429 429 filenames_idx 6 based fixed bin(17,0) level 2 in structure "kti" dcl 365 in procedure "send_data" ref 429 429 429 429 filenames_idx 6 based fixed bin(17,0) level 2 in structure "kti" dcl 931 in procedure "abort_group" ref 939 filenames_idx 6 based fixed bin(17,0) level 2 in structure "kti" dcl 497 in procedure "send_eof" ref 546 filenames_idx 6 000242 automatic fixed bin(17,0) level 2 in structure "kti" dcl 67 in procedure "kermit_send_" set ref 158* filenames_idx 6 based fixed bin(17,0) level 2 in structure "kti" dcl 611 in procedure "send_filename" set ref 643* 643 646 651 651 651 652 655 655 663 663 663 663 670 670 670 696 696 698 filenamesp 4 000242 automatic pointer level 2 in structure "kti" dcl 67 in procedure "kermit_send_" set ref 157* filenamesp 4 based pointer level 2 in structure "kti" dcl 611 in procedure "send_filename" ref 646 651 651 651 652 655 655 663 663 663 663 670 670 670 696 696 698 filenamesp 4 based pointer level 2 in structure "kti" dcl 931 in procedure "abort_group" ref 939 940 940 940 filenamesp 4 based pointer level 2 in structure "kti" dcl 497 in procedure "send_eof" ref 546 filep 10 based pointer level 2 in structure "kti" dcl 879 in procedure "update_log" set ref 883 883* 891* filep 10 based pointer level 2 in structure "kti" dcl 611 in procedure "send_filename" set ref 640 651* 663* 676* 686 filep 10 based pointer level 2 in structure "kti" dcl 365 in procedure "send_data" set ref 428* 429* 434 filep 10 000242 automatic pointer level 2 in structure "kti" dcl 67 in procedure "kermit_send_" set ref 159* 179 179* 181* filep 10 based pointer level 2 in structure "kti" dcl 931 in procedure "abort_group" ref 935 files_sent parameter fixed bin(17,0) dcl 52 set ref 133 225* first_filename parameter char packed unaligned dcl 53 in procedure "kermit_send_" set ref 133 204* first_filename parameter char packed unaligned dcl 585 in procedure "send_filename" ref 563 691 flags 22 000242 automatic structure level 2 in structure "kti" packed packed unaligned dcl 67 in procedure "kermit_send_" flags 22 based structure level 2 in structure "kti" packed packed unaligned dcl 365 in procedure "send_data" flags 22 based structure level 2 in structure "kti" packed packed unaligned dcl 611 in procedure "send_filename" hcs_$status_minf 000032 constant entry external dcl 110 ref 655 idx 003412 automatic fixed bin(17,0) dcl 486 in procedure "send_eof" set ref 533* 534 idx 005033 automatic fixed bin(17,0) dcl 597 in procedure "send_filename" set ref 712* 713 idx 006470 automatic fixed bin(17,0) dcl 767 in procedure "send_init" set ref 821* 822 idx 010200 automatic fixed bin(17,0) dcl 925 in procedure "abort_group" set ref 939* 940 940 940* idx 001767 automatic fixed bin(17,0) dcl 353 in procedure "send_data" set ref 399* 400 idx 000346 automatic fixed bin(17,0) dcl 258 in procedure "send_break" set ref 299* 300 index builtin function dcl 83 ref 299 399 533 712 821 infop parameter pointer dcl 474 in procedure "send_eof" set ref 456 514* 526* 529* infop parameter pointer dcl 757 in procedure "send_init" set ref 739 802* 808* 811* 814* 817* 830* 835* 836* infop parameter pointer dcl 872 in procedure "update_log" set ref 856 881* infop parameter pointer dcl 586 in procedure "send_filename" set ref 563 634* 705* 708* infop parameter pointer dcl 342 in procedure "send_data" set ref 326 387* 392* 395* infop parameter pointer dcl 248 in procedure "send_break" set ref 233 287* 292* 295* infop parameter pointer dcl 920 in procedure "abort_group" set ref 905 935* 941* infop parameter pointer dcl 54 in procedure "kermit_send_" set ref 133 151* 200* 204* 206* 208* 212* 214* 217* 221* initiate_file_$component 000070 constant entry external dcl 375 in procedure "send_data" ref 429 initiate_file_$component 000072 constant entry external dcl 624 in procedure "send_filename" ref 651 663 iocb_ptr 24 based pointer level 2 in structure "kti" dcl 931 in procedure "abort_group" ref 935 iocb_ptr 24 based pointer level 2 in structure "kti" dcl 611 in procedure "send_filename" set ref 640 679* 680* 682* iocb_ptr 24 000242 automatic pointer level 2 in structure "kti" dcl 67 in procedure "kermit_send_" set ref 160* 182 183* 184* 185* iocb_ptr 24 based pointer level 2 in structure "kti" dcl 879 in procedure "update_log" set ref 885 887* 888* 890* iox_$close 000034 constant entry external dcl 111 ref 183 679 887 iox_$detach_iocb 000036 constant entry external dcl 112 ref 184 680 888 kermit_comm_mgr_$flush_input 000046 constant entry external dcl 2-15 ref 808 kermit_comm_mgr_$reset_line_modes 000050 constant entry external dcl 2-20 ref 835 kermit_comm_mgr_$set_line_modes 000052 constant entry external dcl 2-25 ref 836 kermit_et_$fatal_error 000014 external static fixed bin(35,0) dcl 100 ref 312 442 550 725 843 kermit_et_$no_initialization 000016 external static fixed bin(35,0) dcl 101 ref 801 kermit_et_$remote_file_abort 000020 external static fixed bin(35,0) dcl 102 ref 416 895 kermit_et_$remote_group_abort 000022 external static fixed bin(35,0) dcl 103 ref 418 545 kermit_et_$too_many_retries 000024 external static fixed bin(35,0) dcl 104 ref 286 386 513 633 kermit_filenames based structure level 1 dcl 5-66 kermit_log_mgr_$log_message 000054 constant entry external dcl 2-55 ref 881 941 kermit_mode_mgr_$retrieve 000056 constant entry external dcl 2-78 ref 151 kermit_pad_$receive 000060 constant entry external dcl 2-97 ref 295 395 529 708 817 kermit_pad_$send 000062 constant entry external dcl 2-108 ref 287 292 387 392 514 526 634 705 802 814 kermit_stats based structure level 1 dcl 782 in procedure "send_init" kermit_stats 000106 automatic structure level 1 dcl 66 in procedure "kermit_send_" set ref 164 kermit_stats based structure level 1 dcl 930 in procedure "abort_group" kermit_stats based structure level 1 dcl 364 in procedure "send_data" kermit_stats based structure level 1 dcl 878 in procedure "update_log" kermit_stats based structure level 1 dcl 610 in procedure "send_filename" kermit_stats based structure level 1 dcl 496 in procedure "send_eof" kermit_stats based structure level 1 dcl 267 in procedure "send_break" kermit_stats_info based structure level 1 dcl # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #d structure array level 2 in structure "filenames" dcl 65 in procedure "kermit_send_" pathname_ 000042 constant entry external dcl 114 ref 429 429 663 663 pathname_$component 000040 constant entry external dcl 113 ref 670 940 r_packet_size 001773 automatic fixed bin(21,0) dcl 357 set ref 395* remote_data 000352 automatic char(3000) packed unaligned dcl 262 in procedure "send_break" set ref 281 314 remote_data 003416 automatic char(3000) packed unaligned dcl 490 in procedure "send_eof" set ref 508 552 remote_data 006474 automatic char(3000) packed unaligned dcl 771 in procedure "send_init" set ref 796 845 remote_data 005037 automatic char(3000) packed unaligned dcl 601 in procedure "send_filename" set ref 628 727 remote_data 001774 automatic char(3000) packed unaligned dcl 358 in procedure "send_data" set ref 380 416 418 444 remote_datap 001730 automatic pointer dcl 263 in procedure "send_break" set ref 281* 295* remote_datap 004774 automatic pointer dcl 491 in procedure "send_eof" set ref 508* 529* remote_datap 003352 automatic pointer dcl 359 in procedure "send_data" set ref 380* 395* remote_datap 006416 automatic pointer dcl 602 in procedure "send_filename" set ref 628* 708* remote_datap 010052 automatic pointer dcl 772 in procedure "send_init" set ref 796* 817* 830* retry_count based fixed bin(21,0) level 2 in structure "kti" dcl 783 in procedure "send_init" set ref 797* 797 800 808 838* retry_count based fixed bin(21,0) level 2 in structure "kti" dcl 365 in procedure "send_data" set ref 382* 382 385 407* retry_count based fixed bin(21,0) level 2 in structure "kti" dcl 497 in procedure "send_eof" set ref 509* 509 512 541* retry_count 000242 automatic fixed bin(21,0) level 2 in structure "kti" dcl 67 in procedure "kermit_send_" set ref 155* retry_count based fixed bin(21,0) level 2 in structure "kti" dcl 268 in procedure "send_break" set ref 282* 282 285 307* retry_count based fixed bin(21,0) level 2 in structure "kti" dcl 611 in procedure "send_filename" set ref 629* 629 632 720* retry_max 000102 automatic fixed bin(8,0) packed unaligned dcl 59 set ref 151 151 154 retry_select 000103 automatic fixed bin(17,0) array dcl 60 set ref 150* 151* retry_threshold 1 000242 automatic fixed bin(8,0) level 2 in structure "kti" packed packed unaligned dcl 67 in procedure "kermit_send_" set ref 154* retry_threshold 1 based fixed bin(8,0) level 2 in structure "kti" packed packed unaligned dcl 783 in procedure "send_init" ref 800 retry_threshold 1 based fixed bin(8,0) level 2 in structure "kti" packed packed unaligned dcl 611 in procedure "send_filename" ref 632 retry_threshold 1 based fixed bin(8,0) level 2 in structure "kti" packed packed unaligned dcl 268 in procedure "send_break" ref 285 retry_threshold 1 based fixed bin(8,0) level 2 in structure "kti" packed packed unaligned dcl 365 in procedure "send_data" ref 385 retry_threshold 1 based fixed bin(8,0) level 2 in structure "kti" packed packed unaligned dcl 497 in procedure "send_eof" ref 512 rtrim builtin function dcl 84 ref 703 send_init_data 010054 automatic char(94) packed unaligned dcl 773 set ref 794 send_init_data_lth 010134 automatic fixed bin(21,0) dcl 775 set ref 811* send_init_datap 010136 automatic pointer dcl 777 set ref 794* 811* 830* send_init_packet 010104 automatic char(94) packed unaligned dcl 774 set ref 795 send_init_packet_lth 010135 automatic fixed bin(21,0) dcl 776 set ref 811* 814* send_init_packetp 010140 automatic pointer dcl 778 set ref 795* 811* 814* send_state 000270 automatic label variable initial array dcl 71 set ref 71* 71* 71* 71* 71* 71* 71* 198 sequence_n 2 based fixed bin(17,0) level 2 in structure "kti" dcl 611 in procedure "send_filename" set ref 634* 705* 715 718 721* 721 sequence_n 2 based fixed bin(17,0) level 2 in structure "kti" dcl 497 in procedure "send_eof" set ref 514* 526* 536 539 542* 542 sequence_n 2 000242 automatic fixed bin(17,0) level 2 in structure "kti" dcl 67 in procedure "kermit_send_" set ref 156* sequence_n 2 based fixed bin(17,0) level 2 in structure "kti" dcl 268 in procedure "send_break" set ref 287* 292* 303 306 308* 308 sequence_n 2 based fixed bin(17,0) level 2 in structure "kti" dcl 783 in procedure "send_init" set ref 802* 814* 825 828 839* 839 sequence_n 2 based fixed bin(17,0) level 2 in structure "kti" dcl 365 in procedure "send_data" set ref 387* 392* 402 405 408* 408 source_file 006420 automatic char(32) packed unaligned dcl 603 set ref 691* 696* 698* 702 703 source_file_lth 006432 automatic fixed bin(21,0) dcl 605 set ref 703* 705* source_filep 006430 automatic pointer dcl 604 set ref 702* 705* start_time 100 000106 automatic fixed bin(71,0) level 2 in structure "kermit_stats" dcl 66 in procedure "kermit_send_" set ref 174* start_time 100 based fixed bin(71,0) level 2 in structure "kermit_stats" dcl 878 in procedure "update_log" set ref 897* start_time 100 based fixed bin(71,0) level 2 in structure "kermit_stats" dcl 610 in procedure "send_filename" set ref 671* 677 state parameter fixed bin(17,0) dcl 344 in procedure "send_data" set ref 326 388* 439* 445* state parameter fixed bin(17,0) dcl 588 in procedure "send_filename" set ref 563 635* 647* 722* 728* state parameter fixed bin(17,0) dcl 476 in procedure "send_eof" set ref 456 515* 545* 546* 547* 553* state parameter fixed bin(17,0) dcl 759 in procedure "send_init" set ref 739 803* 840* 846* state parameter fixed bin(17,0) dcl 250 in procedure "send_break" set ref 233 288* 309* 315* state 000104 automatic fixed bin(17,0) dcl 61 in procedure "kermit_send_" set ref 190* 198 200* 204* 208* 212* 214 217* statisticsp 20 based pointer level 2 in structure "kti" dcl 879 in procedure "update_log" set ref 881* 894 894 895 895 897 897 897 897 897 897 897 statisticsp 20 000242 automatic pointer level 2 in structure "kti" dcl 67 in procedure "kermit_send_" set ref 164* statisticsp 20 based pointer level 2 in structure "kti" dcl 268 in procedure "send_break" ref 286 312 314 318 318 statisticsp 20 based pointer level 2 in structure "kti" dcl 783 in procedure "send_init" ref 801 843 845 849 849 statisticsp 20 based pointer level 2 in structure "kti" dcl 365 in procedure "send_data" ref 386 392 392 409 409 411 411 412 412 416 418 423 423 435 435 439 439 439 442 444 448 448 statisticsp 20 based pointer level 2 in structure "kti" dcl 611 in procedure "send_filename" ref 633 641 670 671 672 674 675 677 677 725 727 731 731 statisticsp 20 based pointer level 2 in structure "kti" dcl 931 in procedure "abort_group" set ref 940 941* statisticsp 20 based pointer level 2 in structure "kti" dcl 497 in procedure "send_eof" ref 513 519 543 544 545 550 552 556 556 status 10 based fixed bin(35,0) level 2 in structure "kermit_stats" dcl 878 in procedure "update_log" set ref 895 895* status 10 000106 automatic fixed bin(35,0) level 2 in structure "kermit_stats" dcl 66 in procedure "kermit_send_" set ref 167* 206 223 status 10 based fixed bin(35,0) level 2 in structure "kermit_stats" dcl 364 in procedure "send_data" set ref 386* 416* 418* 439 442* status 10 based fixed bin(35,0) level 2 in structure "kermit_stats" dcl 610 in procedure "send_filename" set ref 633* 641* 674* 675* 725* status 10 based fixed bin(35,0) level 2 in structure "kermit_stats" dcl 496 in procedure "send_eof" set ref 513* 519 544 545 550* status 10 based fixed bin(35,0) level 2 in structure "kermit_stats" dcl 782 in procedure "send_init" set ref 801* 843* status 10 based fixed bin(35,0) level 2 in structure "kermit_stats" dcl 267 in procedure "send_break" set ref 286* 312* substr builtin function dcl 84 ref 314 416 418 444 552 727 845 terminate_file_ 000044 constant entry external dcl 115 ref 179 428 883 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 Ack_packet internal static char(1) initial packed unaligned dcl 5-86 Capabilities internal static fixed bin(17,0) initial dcl 4-46 Check_type internal static fixed bin(17,0) initial dcl 4-36 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 6-15 Direct_output internal static fixed bin(17,0) initial dcl 6-15 Direct_update internal static fixed bin(17,0) initial dcl 6-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 Eight_bit_char internal static fixed bin(17,0) initial dcl 4-33 Eol_char internal static fixed bin(17,0) initial dcl 4-31 Ext_Headers internal static bit(9) initial packed unaligned dcl 4-120 File_type internal static fixed bin(17,0) initial dcl 4-40 File_warning internal static fixed bin(17,0) initial dcl 4-39 G_capabilities internal static fixed bin(17,0) initial dcl 4-93 G_check_type internal static fixed bin(17,0) initial dcl 4-86 G_eight_bit_char internal static fixed bin(17,0) initial dcl 4-83 G_parity internal static fixed bin(17,0) initial dcl 4-87 G_repeat_char internal static fixed bin(17,0) initial dcl 4-84 G_start_char internal static fixed bin(17,0) initial dcl 4-85 G_window internal static fixed bin(17,0) initial dcl 4-88 I_eol_char internal static fixed bin(17,0) initial dcl 4-75 I_max_lenx1 internal static fixed bin(17,0) initial dcl 4-89 I_max_lenx2 internal static fixed bin(17,0) initial dcl 4-90 I_maxl internal static fixed bin(17,0) initial dcl 4-71 I_n_pads internal static fixed bin(17,0) initial dcl 4-73 I_pad_char internal static fixed bin(17,0) initial dcl 4-74 I_quote_char internal static fixed bin(17,0) initial dcl 4-76 I_timeout internal static fixed bin(17,0) initial dcl 4-72 Incomplete internal static fixed bin(17,0) initial dcl 4-38 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 6-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 6-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 6-15 Line_byte_size internal static fixed bin(17,0) initial dcl 4-42 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 Max_len_ext_1 internal static fixed bin(17,0) initial dcl 4-44 Max_len_ext_2 internal static fixed bin(17,0) initial dcl 4-45 Maxl internal static fixed bin(17,0) initial dcl 4-27 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_pads internal static fixed bin(17,0) initial dcl 4-29 Nak_packet internal static char(1) initial packed unaligned dcl 5-87 O_eol_char internal static fixed bin(17,0) initial dcl 4-81 O_max_lenx1 internal static fixed bin(17,0) initial dcl 4-91 O_max_lenx2 internal static fixed bin(17,0) initial dcl 4-92 O_maxl internal static fixed bin(17,0) initial dcl 4-77 O_n_pads internal static fixed bin(17,0) initial dcl 4-79 O_pad_char internal static fixed bin(17,0) initial dcl 4-80 O_quote_char internal static fixed bin(17,0) initial dcl 4-82 O_timeout internal static fixed bin(17,0) initial dcl 4-78 Pad_char internal static fixed bin(17,0) initial dcl 4-30 Parity internal static fixed bin(17,0) initial dcl 4-37 Perm_defaults internal static structure level 1 dcl 4-48 Quote_char internal static fixed bin(17,0) initial dcl 4-32 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 Rec_abort internal static fixed bin(17,0) initial dcl 5-110 Rec_complete internal static fixed bin(17,0) initial dcl 5-111 Rec_data internal static fixed bin(17,0) initial dcl 5-108 Rec_file_abort internal static fixed bin(17,0) initial dcl 5-109 Rec_file_header internal static fixed bin(17,0) initial dcl 5-107 Rec_init internal static fixed bin(17,0) initial dcl 5-106 Repeat_char internal static fixed bin(17,0) initial dcl 4-34 Reserved_packet internal static char(1) initial packed unaligned dcl 5-93 Retrieve_all internal static fixed bin(17,0) initial array dcl 4-25 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 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 6-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 6-15 Sequential_output internal static fixed bin(17,0) initial dcl 6-15 Sequential_update internal static fixed bin(17,0) initial dcl 6-15 Start_char internal static fixed bin(17,0) initial dcl 4-35 Store_all internal static fixed bin(17,0) initial array dcl 4-24 Stream_input internal static fixed bin(17,0) initial dcl 6-15 Stream_input_output internal static fixed bin(17,0) initial dcl 6-15 Stream_output internal static fixed bin(17,0) initial dcl 6-15 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 7-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 7-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 7-16 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 7-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 7-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial packed unaligned dcl 7-15 Temp_defaults internal static structure level 1 dcl 4-95 Temporary internal static fixed bin(17,0) initial dcl 4-22 Timeout internal static fixed bin(17,0) initial dcl 4-28 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 Window_size internal static fixed bin(17,0) initial dcl 4-43 iox_modes internal static char(24) initial array dcl 6-6 kermit_bit_constants internal static structure level 1 packed packed unaligned dcl 3-27 kermit_char_constants based structure level 1 packed packed unaligned dcl 3-31 kermit_comm_info based structure level 1 dcl 3-176 kermit_comm_info_version internal static char(8) initial packed unaligned dcl 3-206 kermit_comm_infop automatic pointer dcl 3-205 kermit_fixed_constants based structure level 1 packed packed unaligned dcl 3-35 kermit_get_filenames_ 000000 constant entry external dcl 2-30 kermit_info based structure level 1 dcl 3-52 kermit_info_version internal static char(8) initial packed unaligned dcl 3-61 kermit_infop automatic pointer dcl 3-60 kermit_log_info based structure level 1 dcl 3-122 kermit_log_info_version internal static char(8) initial packed unaligned dcl 3-133 kermit_log_infop automatic pointer dcl 3-132 kermit_log_mgr_$close_log 000000 constant entry external dcl 2-37 kermit_log_mgr_$disable 000000 constant entry external dcl 2-42 kermit_log_mgr_$display_stats 000000 constant entry external dcl 2-46 kermit_log_mgr_$enable 000000 constant entry external dcl 2-51 kermit_log_mgr_$open_log 000000 constant entry external dcl 2-60 kermit_log_mgr_$start 000000 constant entry external dcl 2-66 kermit_log_mgr_$stop 000000 constant entry external dcl 2-70 kermit_mode_mgr_$get 000000 constant entry external dcl 2-74 kermit_mode_mgr_$set 000000 constant entry external dcl 2-86 kermit_mode_mgr_$store 000000 constant entry external dcl 2-90 kermit_perm_mode_count internal static fixed bin(17,0) initial dcl 3-83 kermit_perm_modes based structure level 1 dcl 3-77 kermit_perm_modes_version internal static char(8) initial packed unaligned dcl 3-84 kermit_perm_modesp automatic pointer dcl 3-82 kermit_receive_$receive_from_remote 000000 constant entry external dcl 2-118 kermit_send_$send_to_remote 000000 constant entry external dcl 2-128 kermit_server_ 000000 constant entry external dcl 2-138 kermit_stats_infop automatic pointer dcl 3-160 kermit_temp_mode_count internal static fixed bin(17,0) initial dcl 3-105 kermit_temp_modes based structure level 1 dcl 3-99 kermit_temp_modes_version internal static char(8) initial packed unaligned dcl 3-106 kermit_temp_modesp automatic pointer dcl 3-104 kermit_transfer_info_version internal static char(9) initial packed unaligned dcl 5-48 kermit_xfer_modes_$check_params 000000 constant entry external dcl 2-144 kermit_xfer_modes_$init 000000 constant entry external dcl 2-152 short_iox_modes internal static char(4) initial array dcl 6-12 terminate_file_switches based structure level 1 packed packed unaligned dcl 7-4 transfer_infop automatic pointer dcl 5-47 NAMES DECLARED BY EXPLICIT CONTEXT. Ack 003440 constant label dcl 825 in procedure "send_init" ref 787 Ack 001266 constant label dcl 402 in procedure "send_data" ref 369 Ack 003115 constant label dcl 715 in procedure "send_filename" ref 615 Ack 002051 constant label dcl 536 in procedure "send_eof" ref 501 Ack 001006 constant label dcl 303 in procedure "send_break" ref 272 Error 001031 constant label dcl 312 in procedure "send_break" ref 272 Error 002127 constant label dcl 550 in procedure "send_eof" ref 501 Error 003535 constant label dcl 843 in procedure "send_init" ref 787 Error 001605 constant label dcl 442 in procedure "send_data" ref 369 Error 003140 constant label dcl 725 in procedure "send_filename" ref 615 Ignore_packet 001220 constant label dcl 395 in procedure "send_data" ref 402 Ignore_packet 000740 constant label dcl 295 in procedure "send_break" ref 303 Ignore_packet 002003 constant label dcl 529 in procedure "send_eof" ref 536 Ignore_packet 003372 constant label dcl 817 in procedure "send_init" ref 825 Ignore_packet 003047 constant label dcl 708 in procedure "send_filename" ref 715 Nak 002145 constant label dcl 556 in procedure "send_eof" ref 501 Nak 001047 constant label dcl 318 in procedure "send_break" ref 272 Nak 003156 constant label dcl 731 in procedure "send_filename" ref 615 Nak 001623 constant label dcl 448 in procedure "send_data" ref 369 Nak 003553 constant label dcl 849 in procedure "send_init" ref 787 Other 003156 constant label dcl 731 in procedure "send_filename" ref 615 Other 001047 constant label dcl 318 in procedure "send_break" ref 272 Other 001623 constant label dcl 448 in procedure "send_data" ref 369 Other 002145 constant label dcl 556 in procedure "send_eof" ref 501 Other 003553 constant label dcl 849 in procedure "send_init" ref 787 Retry_packet 003156 constant label dcl 731 in procedure "send_filename" ref 706 710 718 Retry_packet 002145 constant label dcl 556 in procedure "send_eof" ref 527 531 539 Retry_packet 001047 constant label dcl 318 in procedure "send_break" ref 293 297 306 Retry_packet 003553 constant label dcl 849 in procedure "send_init" ref 812 815 819 828 831 Retry_packet 001623 constant label dcl 448 in procedure "send_data" ref 393 397 405 Send_Abort 000553 constant label dcl 221 ref 71 Send_Break 000537 constant label dcl 217 ref 71 Send_Complete 000567 constant label dcl 225 ref 71 Send_Data 000473 constant label dcl 208 ref 71 Send_Eof 000507 constant label dcl 212 ref 71 Send_File 000426 constant label dcl 204 ref 71 Send_Init 000412 constant label dcl 200 ref 71 abort_group 003735 constant entry internal dcl 905 ref 221 exit_state 000573 constant label dcl 229 ref 202 207 210 215 219 kermit_send_ 000126 constant entry external dcl 26 send_break 000574 constant entry internal dcl 233 ref 217 send_data 001055 constant entry internal dcl 326 ref 208 send_eof 001631 constant entry internal dcl 456 ref 212 send_filename 002153 constant entry internal dcl 563 ref 204 send_init 003164 constant entry internal dcl 739 ref 200 send_to_remote 000143 constant entry external dcl 133 update_log 003561 constant entry internal dcl 856 ref 206 214 935 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4436 4532 4064 4446 Length 5126 4064 74 360 351 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME kermit_send_ 4680 external procedure is an external procedure. on unit on line 178 84 on unit send_break internal procedure shares stack frame of external procedure kermit_send_. send_data internal procedure shares stack frame of external procedure kermit_send_. send_eof internal procedure shares stack frame of external procedure kermit_send_. send_filename internal procedure shares stack frame of external procedure kermit_send_. send_init internal procedure shares stack frame of external procedure kermit_send_. update_log internal procedure shares stack frame of external procedure kermit_send_. abort_group internal procedure shares stack frame of external procedure kermit_send_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME kermit_send_ 000100 ktip kermit_send_ 000102 retry_max kermit_send_ 000103 retry_select kermit_send_ 000104 state kermit_send_ 000106 kermit_stats kermit_send_ 000242 kti kermit_send_ 000270 send_state kermit_send_ 000342 chars_received send_break 000343 chars_sent send_break 000344 ec send_break 000345 eol_split send_break 000346 idx send_break 000347 packet_n send_break 000350 packet_size send_break 000351 packet_type send_break 000352 remote_data send_break 001730 remote_datap send_break 001732 packet send_break 001762 bit_count send_data 001763 chars_received send_data 001764 chars_sent send_data 001765 ec send_data 001766 eol_split send_data 001767 idx send_data 001770 packet_n send_data 001771 packet_size send_data 001772 packet_type send_data 001773 r_packet_size send_data 001774 remote_data send_data 003352 remote_datap send_data 003354 packet send_data 003404 abort_char send_eof 003405 abort_char_lth send_eof 003406 chars_received send_eof 003407 chars_sent send_eof 003410 ec send_eof 003411 eol_split send_eof 003412 idx send_eof 003413 packet_n send_eof 003414 packet_size send_eof 003415 packet_type send_eof 003416 remote_data send_eof 004774 remote_datap send_eof 004776 packet send_eof 005026 bit_count send_filename 005027 chars_received send_filename 005030 chars_sent send_filename 005031 ec send_filename 005032 eol_split send_filename 005033 idx send_filename 005034 packet_n send_filename 005035 packet_size send_filename 005036 packet_type send_filename 005037 remote_data send_filename 006416 remote_datap send_filename 006420 source_file send_filename 006430 source_filep send_filename 006432 source_file_lth send_filename 006434 packet send_filename 006464 chars_received send_init 006465 chars_sent send_init 006466 ec send_init 006467 eol_split send_init 006470 idx send_init 006471 packet_n send_init 006472 packet_size send_init 006473 packet_type send_init 006474 remote_data send_init 010052 remote_datap send_init 010054 send_init_data send_init 010104 send_init_packet send_init 010134 send_init_data_lth send_init 010135 send_init_packet_lth send_init 010136 send_init_datap send_init 010140 send_init_packetp send_init 010142 packet send_init 010200 idx abort_group THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out return_mac tra_ext_2 mdfx1 enable_op shorten_stack ext_entry ext_entry_desc int_entry trunc_fx2 divide_fx1 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. add_char_offset_ clock_ hcs_$status_minf initiate_file_$component initiate_file_$component iox_$close iox_$detach_iocb kermit_comm_mgr_$flush_input kermit_comm_mgr_$reset_line_modes kermit_comm_mgr_$set_line_modes kermit_log_mgr_$log_message kermit_mode_mgr_$retrieve kermit_pad_$receive kermit_pad_$send kermit_xfer_modes_$get_local_params kermit_xfer_modes_$process_params pathname_ pathname_$component terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$dirseg error_table_$empty_file kermit_et_$fatal_error kermit_et_$no_initialization kermit_et_$remote_file_abort kermit_et_$remote_group_abort kermit_et_$too_many_retries LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 71 000047 26 000125 43 000134 133 000135 150 000157 151 000171 153 000224 154 000226 155 000231 156 000232 157 000233 158 000237 159 000240 160 000242 161 000243 162 000245 163 000247 164 000250 166 000252 167 000255 168 000256 169 000261 170 000262 171 000263 172 000264 173 000265 174 000266 175 000270 176 000271 178 000274 179 000310 181 000343 182 000346 183 000351 184 000363 185 000376 186 000401 188 000403 190 000404 198 000406 200 000412 202 000425 204 000426 206 000457 207 000472 208 000473 210 000506 212 000507 214 000522 215 000536 217 000537 219 000552 221 000553 223 000564 225 000567 227 000572 231 000573 233 000574 272 000576 279 000630 280 000631 281 000633 282 000635 285 000640 286 000645 287 000651 288 000702 289 000705 292 000706 293 000736 295 000740 297 000770 299 000772 300 001003 303 001006 306 001017 307 001022 308 001023 309 001026 310 001030 312 001031 314 001040 315 001044 316 001046 318 001047 322 001054 326 001055 369 001057 379 001111 380 001112 382 001114 385 001117 386 001124 387 001130 388 001161 389 001164 392 001165 393 001216 395 001220 397 001250 399 001252 400 001263 402 001266 405 001277 407 001302 408 001303 409 001306 410 001311 411 001324 412 001331 415 001333 416 001335 418 001345 423 001354 427 001365 428 001366 429 001415 434 001546 435 001554 439 001572 440 001604 442 001605 444 001614 445 001620 446 001622 448 001623 452 001630 456 001631 501 001633 507 001665 508 001666 509 001670 512 001673 513 001700 514 001704 515 001735 516 001740 519 001741 520 001744 521 001746 522 001750 524 001751 526 001752 527 002001 529 002003 531 002033 533 002035 534 002046 536 002051 539 002062 541 002065 542 002066 543 002071 544 002101 545 002110 546 002116 547 002124 548 002126 550 002127 552 002136 553 002142 554 002144 556 002145 560 002152 563 002153 615 002164 627 002216 628 002217 629 002221 632 002224 633 002231 634 002235 635 002266 636 002271 640 002272 641 002302 642 002304 643 002305 646 002306 647 002311 648 002313 651 002314 652 002365 655 002406 659 002451 660 002453 661 002460 662 002461 663 002462 667 002560 668 002561 670 002564 671 002625 672 002640 673 002653 674 002657 675 002663 676 002666 677 002670 678 002675 679 002700 680 002711 681 002725 682 002732 684 002734 686 002735 690 002737 691 002745 692 002752 693 002755 696 002756 698 002776 702 003001 703 003003 705 003015 706 003045 708 003047 710 003077 712 003101 713 003112 715 003115 718 003126 720 003131 721 003132 722 003135 723 003137 725 003140 727 003147 728 003153 729 003155 731 003156 735 003163 739 003164 787 003166 793 003220 794 003221 795 003223 796 003225 797 003227 800 003232 801 003237 802 003243 803 003274 804 003277 808 003300 811 003314 812 003336 814 003340 815 003370 817 003372 819 003422 821 003424 822 003435 825 003440 828 003451 830 003454 831 003473 835 003475 836 003507 838 003521 839 003524 840 003532 841 003534 843 003535 845 003544 846 003550 847 003552 849 003553 853 003560 856 003561 881 003563 883 003577 885 003635 887 003644 888 003656 890 003673 891 003700 892 003703 894 003706 895 003717 897 003724 902 003734 905 003735 935 003737 939 003762 940 003775 941 004036 942 004052 944 004054 ----------------------------------------------------------- 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