THIS FILE IS DAMAGED ptr parameter; 71 dcl A_selector (*) fixed bin parameter; 72 dcl A_valuep ptr parameter; 73 74 /* procedures */ 75 76 dcl cv_dec_check_ entry (char(*), fixed bin(35)) 77 returns(fixed bin(35)); 78 dcl ioa_ entry() options(variable); 79 dcl ioa_$rsnnl entry() options(variable); 80 dcl ssu_$arg_count entry (ptr, fixed bin); 81 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin(21)); 82 dcl ssu_$abort_line entry() options(variable); 83 84 /* external */ 85 86 dcl error_table_$wrong_no_of_args 87 external fixed bin (35); 88 dcl kermit_et_$bad_mode_value 89 external fixed bin (35); 90 dcl kermit_et_$unknown_mode external fixed bin (35); 91 92 /* based */ 93 94 dcl arg char (argl) based (argp); 95 dcl 01 info aligned like kermit_info based (A_infop); 96 dcl 01 temp_modes aligned like kermit_temp_modes 97 based (info.temp_modesp); 98 dcl 01 perm_modes aligned like kermit_perm_modes 99 based (info.perm_modesp); 100 dcl db (1:db_sz) char (1) unal based (dbp); 101 dcl mode_name char (mnl) based (mnp); 102 dcl mode_value char (mvl) based (mvp); 103 dcl value (1:value_sz) char (1) unal based (A_valuep); 104 dcl checkpoint (1:db_sz) char (1) unal based (ckp); 105 106 /* automatic */ 107 108 dcl argl fixed bin (21); 109 dcl argp ptr; 110 dcl checkpointed bit (1); 111 dcl ckp ptr; 112 dcl dbp ptr; 113 dcl db_sz fixed bin; 114 dcl ec fixed bin (35); 115 dcl i fixed bin; 116 dcl item fixed bin; 117 dcl mnl fixed bin (21); 118 dcl mnp ptr; 119 dcl mode char (1) unaligned; 120 dcl mode2 (1:4) fixed bin (9) unsigned unaligned; 121 dcl mvl fixed bin (21); 122 dcl mvp ptr; 123 dcl nargs fixed bin; 124 dcl select (1:1) fixed bin; 125 dcl select2 (1:4) fixed bin; 126 dcl value_sz fixed bin; 127 128 /* conditions */ 129 130 dcl cleanup condition; 131 132 /* builtin */ 133 134 dcl addr builtin; 135 dcl byte builtin; 136 dcl hbound builtin; 137 dcl index builtin; 138 dcl length builtin; 139 dcl mod builtin; 140 dcl null builtin; 141 dcl rank builtin; 142 dcl translate builtin; 143 dcl unspec builtin; 144 145 /* include files */ 146 147 1 1 /* START OF: kermit_dcls.incl.pl1 * * * * * */ 1 2 1 3 /********************************************************************/ 1 4 /* */ 1 5 /*n kermit_dcls */ 1 6 /* */ 1 7 /*d This include file contains the declarations of the external */ 1 8 /*d kermit entrypoints that are called by other modules within */ 1 9 /*d kermit as well as an explanation of the parameters. */ 1 10 /* */ 1 11 /*l Written: 84-10-11 by Dean Elhard */ 1 12 /* */ 1 13 /********************************************************************/ 1 14 1 15 dcl kermit_comm_mgr_$flush_input 1 16 entry 1 17 (ptr, /* kermit info ptr */ 1 18 fixed bin(35)); /* error code */ 1 19 1 20 dcl kermit_comm_mgr_$reset_line_modes 1 21 entry 1 22 (ptr, /* kermit info ptr */ 1 23 fixed bin(35)); /* error code */ 1 24 1 25 dcl kermit_comm_mgr_$set_line_modes 1 26 entry 1 27 (ptr, /* kermit info ptr */ 1 28 fixed bin(35)); /* error code */ 1 29 1 30 dcl kermit_get_filenames_ entry 1 31 (ptr, /* kermit info ptr */ 1 32 char(*), /* argument */ 1 33 ptr, /* filename ptr */ 1 34 char(*), /* reason */ 1 35 fixed bin(35)); /* error code */ 1 36 1 37 dcl kermit_log_mgr_$close_log 1 38 entry 1 39 (ptr, /* kermit info ptr */ 1 40 fixed bin (35)); /* error code */ 1 41 1 42 dcl kermit_log_mgr_$disable entry 1 43 (ptr, /* kermit info ptr */ 1 44 fixed bin (35)); /* error code */ 1 45 1 46 dcl kermit_log_mgr_$display_stats 1 47 entry /* statistics command */ 1 48 (ptr, /* sci ptr */ 1 49 ptr); /* kermit info ptr */ 1 50 1 51 dcl kermit_log_mgr_$enable entry 1 52 (ptr, /* kermit info ptr */ 1 53 fixed bin (35)); /* error code */ 1 54 1 55 dcl kermit_log_mgr_$log_message 1 56 entry 1 57 (ptr, /* kermit info ptr */ 1 58 ptr); /* log info ptr */ 1 59 1 60 dcl kermit_log_mgr_$open_log 1 61 entry 1 62 (ptr, /* kermit info ptr */ 1 63 char (*) varying, /* log file name */ 1 64 fixed bin (35)); /* error code */ 1 65 1 66 dcl kermit_log_mgr_$start entry /* start log command */ 1 67 (ptr, /* sci ptr */ 1 68 ptr); /* kermit info ptr */ 1 69 1 70 dcl kermit_log_mgr_$stop entry /* stop log command */ 1 71 (ptr, /* sci ptr */ 1 72 ptr); /* kermit info ptr */ 1 73 1 74 dcl kermit_mode_mgr_$get entry /* get modes command */ 1 75 (ptr, /* sci ptr */ 1 76 ptr); /* kermit info ptr */ 1 77 1 78 dcl kermit_mode_mgr_$retrieve 1 79 entry 1 80 (ptr, /* kermit info ptr */ 1 81 fixed bin, /* permanent/temporary select */ 1 82 (*) fixed bin, /* mode selector array */ 1 83 ptr, /* mode value ptr */ 1 84 fixed bin (35)); /* error code */ 1 85 1 86 dcl kermit_mode_mgr_$set entry /* set modes command */ 1 87 (ptr, /* sci ptr */ 1 88 ptr); /* kermit info ptr */ 1 89 1 90 dcl kermit_mode_mgr_$store entry 1 91 (ptr, /* kermit info ptr */ 1 92 fixed bin, /* permanent/temporary select */ 1 93 (*) fixed bin, /* mode selector array */ 1 94 ptr, /* mode value ptr */ 1 95 fixed bin (35)); /* error code */ 1 96 1 97 dcl kermit_pad_$receive entry 1 98 (ptr, /* kermit info ptr */ 1 99 char (1), /* packet type */ 1 100 ptr, /* buffer pointer */ 1 101 fixed bin (21), /* buffer length */ 1 102 fixed bin, /* sequence number */ 1 103 fixed bin (21), /* chars received */ 1 104 fixed bin (21), /* packet size */ 1 105 bit (1), /* CR/NL split flag */ 1 106 fixed bin (35)); /* error code */ 1 107 1 108 dcl kermit_pad_$send entry 1 109 (ptr, /* kermit info ptr */ 1 110 char (1), /* packet type */ 1 111 ptr, /* data ptr */ 1 112 fixed bin (21), /* data length */ 1 113 fixed bin, /* sequence number */ 1 114 fixed bin (21), /* chars transmitted */ 1 115 fixed bin (21), /* packet length */ 1 116 fixed bin (35)); /* error code */ 1 117 1 118 dcl kermit_receive_$receive_from_remote 1 119 entry 1 120 (ptr, /* kermit info ptr */ 1 121 fixed bin, /* initial state */ 1 122 fixed bin, /* initial sequence number */ 1 123 char (*), /* user filename (first file) */ 1 124 bit (1), /* =1 if user gave filename */ 1 125 fixed bin, /* number of files received */ 1 126 fixed bin (35)); /* error code */ 1 127 1 128 dcl kermit_send_$send_to_remote 1 129 entry 1 130 (ptr, /* kermit info ptr */ 1 131 ptr, /* filenames area ptr */ 1 132 char (*), /* user filename (first file) */ 1 133 bit (1), /* =1 if user gave filename */ 1 134 fixed bin, /* number of files sent */ 1 135 fixed bin (35)); /* error code */ 1 136 1 137 1 138 dcl kermit_server_ 1 139 entry 1 140 (ptr, /* kermit info ptr */ 1 141 ptr); /* filenames area ptr */ 1 142 1 143 1 144 dcl kermit_xfer_modes_$check_params 1 145 entry 1 146 (ptr, /* kermit info ptr */ 1 147 ptr, /* remote parameters */ 1 148 fixed bin (21), /* remote parameters length */ 1 149 ptr, /* local parameters */ 1 150 fixed bin (35)); /* error code */ 1 151 1 152 dcl kermit_xfer_modes_$init 1 153 entry 1 154 (ptr, /* ptr to kermit info */ 1 155 fixed bin (35)); /* error code */ 1 156 1 157 dcl kermit_xfer_modes_$get_local_params 1 158 entry 1 159 (ptr, /* kermit info ptr */ 1 160 ptr, /* local parameters */ 1 161 fixed bin (21), /* local parameters length */ 1 162 ptr, /* encoded parameters */ 1 163 fixed bin (21), /* encoded parameters length */ 1 164 fixed bin (35)); /* error code */ 1 165 1 166 dcl kermit_xfer_modes_$process_params 1 167 entry 1 168 (ptr, /* kermit info ptr */ 1 169 ptr, /* remote parameters */ 1 170 fixed bin (21), /* remote parameters length */ 1 171 ptr, /* local parameters */ 1 172 fixed bin (35)); /* error code */ 1 173 1 174 /* END OF: kermit_dcls.incl.pl1 * * * * * */ 148 149 2 1 /* START OF: kermit_info.incl.pl1 * * * * * */ 2 2 2 3 2 4 2 5 2 6 /****^ HISTORY COMMENTS: 2 7* 1) change(88-05-16,Huen), approve(88-05-16,MCR7841), audit(88-05-25,RWaters), 2 8* install(88-07-05,MR12.2-1054): 2 9* Fix kermit 15, 16, 17, and 18. 2 10* END HISTORY COMMENTS */ 2 11 2 12 2 13 /********************************************************************/ 2 14 /* */ 2 15 /*n kermit_constants */ 2 16 /* */ 2 17 /*d This structure contains the constant definitions of CR, */ 2 18 /*d and NL characters which are coded as bit strings with */ 2 19 /*d overlays. */ 2 20 /* */ 2 21 /*l Written: 87-06-19 by Don Kozlowski */ 2 22 /*l Modified: 87-06-19 by Don Kozlowski - CR and NL are coded */ 2 23 /*l as bit strings with overlays (kermit 15)*/ 2 24 /* */ 2 25 /********************************************************************/ 2 26 2 27 dcl 01 kermit_bit_constants internal static options (constant), 2 28 02 CR_bit bit (9) unaligned init ("015"b3), 2 29 02 NL_bit bit (9) unaligned init ("012"b3); 2 30 2 31 dcl 01 kermit_char_constants based (addr (kermit_bit_constants)), 2 32 02 CR char (1) unaligned, 2 33 02 NL char (1) unaligned; 2 34 2 35 dcl 01 kermit_fixed_constants based (addr (kermit_bit_constants)), 2 36 02 CR_fixed fixed bin (9) unsigned unaligned, 2 37 02 NL_fixed fixed bin (9) unsigned unaligned; 2 38 2 39 2 40 /********************************************************************/ 2 41 /* */ 2 42 /*n kermit_info */ 2 43 /* */ 2 44 /*d This data structure is the subsystem info structure used */ 2 45 /*d when creating a kermit invocation. It is used to find the */ 2 46 /*d three kermit databases. */ 2 47 /* */ 2 48 /*l Written: 84-10-11 by Dean Elhard */ 2 49 /* */ 2 50 /********************************************************************/ 2 51 2 52 dcl 01 kermit_info aligned based (kermit_infop), 2 53 02 version char (8), 2 54 02 sci_ptr ptr, /* ssu_ sci_ptr */ 2 55 02 perm_modesp ptr, /* ptr to permanent modes db */ 2 56 02 temp_modesp ptr, /* ptr to temporary modes db */ 2 57 02 log_infop ptr, /* ptr to log info db */ 2 58 02 comm_infop ptr; /* ptr to comm info db */ 2 59 2 60 dcl kermit_infop ptr; 2 61 dcl kermit_info_version char (8) static options (constant) 2 62 init ("ki 1.0"); 2 63 2 64 /********************************************************************/ 2 65 /* */ 2 66 /*n kermit_perm_modes */ 2 67 /* */ 2 68 /*d This data structure contains the array of 9-bit values that */ 2 69 /*d represent the permanent kermit modes. */ 2 70 /* */ 2 71 /*l Written: 84-10-11 by Dean Elhard */ 2 72 /*l Modified: 87-06-12 by Don Kozlowski - Increase mode_counts */ 2 73 /*l (kermit 16) */ 2 74 /* */ 2 75 /********************************************************************/ 2 76 2 77 dcl 01 kermit_perm_modes aligned based (kermit_perm_modesp), 2 78 02 version char (8), 2 79 02 mode (1:kermit_perm_mode_count) 2 80 bit (9) unaligned; 2 81 2 82 dcl kermit_perm_modesp ptr; 2 83 dcl kermit_perm_mode_count fixed bin static options (constant) init (20); 2 84 dcl kermit_perm_modes_version 2 85 char (8) static options (constant) 2 86 init ("kpm 1.1"); 2 87 2 88 /********************************************************************/ 2 89 /* */ 2 90 /*n kermit_temp_modes */ 2 91 /* */ 2 92 /*d This data structure contains the array of 9-bit values that */ 2 93 /*d represent the temporary kermit modes. */ 2 94 /* */ 2 95 /*l Written: 84-10-11 by Dean Elhard */ 2 96 /* */ 2 97 /********************************************************************/ 2 98 2 99 dcl 01 kermit_temp_modes aligned based (kermit_temp_modesp), 2 100 02 version char (8), 2 101 02 mode (1:kermit_temp_mode_count) 2 102 bit (9) unaligned; 2 103 2 104 dcl kermit_temp_modesp ptr; 2 105 dcl kermit_temp_mode_count fixed bin static options (constant) init (23); 2 106 dcl kermit_temp_modes_version 2 107 char (8) static options (constant) 2 108 init ("ktm 1.1"); 2 109 2 110 /********************************************************************/ 2 111 /* */ 2 112 /*n kermit_log_info */ 2 113 /* */ 2 114 /*d This data structure contains 2 types of logging info: */ 2 115 /*d - data concerning the logging state and log_file */ 2 116 /*d - statistics on the last completed file-transfer */ 2 117 /* */ 2 118 /*l Written: 84-10-11 by Dean Elhard */ 2 119 /* */ 2 120 /********************************************************************/ 2 121 2 122 dcl 01 kermit_log_info aligned based (kermit_log_infop), 2 123 02 version char (8), 2 124 02 log_file aligned, /* log_file info */ 2 125 03 iocbp ptr, /* iocb ptr */ 2 126 03 flags aligned, 2 127 04 enabled bit (1) unaligned, /* enabled flag */ 2 128 04 stats_valid bit (1) unaligned, /* stats are set */ 2 129 04 mbz bit (34) unaligned, 2 130 02 statistics aligned like kermit_stats_info; 2 131 2 132 dcl kermit_log_infop ptr; 2 133 dcl kermit_log_info_version char (8) static options (constant) 2 134 init ("kli 1.0"); 2 135 2 136 /********************************************************************/ 2 137 /* */ 2 138 /*n kermit_stats_info */ 2 139 /* */ 2 140 /*d This structure is the statistics information passed to the */ 2 141 /*d log manager and stored as the statistics. */ 2 142 /* */ 2 143 /*l Written: 84-10-25 by Dean Elhard */ 2 144 /* */ 2 145 /********************************************************************/ 2 146 2 147 dcl 01 kermit_stats_info aligned based (kermit_stats_infop), 2 148 02 caller char (32), /* send or receive */ 2 149 02 status fixed bin (35), /* status of F-T */ 2 150 02 filename char (194) unal, /* name of file */ 2 151 02 file_len fixed bin (21), /* len in chars */ 2 152 02 char_count fixed bin (21), /* number sent */ 2 153 02 packet_chars fixed bin (21), /* after encoding */ 2 154 02 packet_count fixed bin (21), /* num of packets */ 2 155 02 packet_retries fixed bin (21), /* retries done */ 2 156 02 start_time fixed bin (71), /* time F-T started */ 2 157 02 end_time fixed bin (71), /* time F-T done */ 2 158 02 error_message char (94); /* rcvd error msg */ 2 159 2 160 dcl kermit_stats_infop ptr; 2 161 2 162 /********************************************************************/ 2 163 /* */ 2 164 /*n kermit_comm_info */ 2 165 /* */ 2 166 /*d This data structure contains information regarding the */ 2 167 /*d communications channel over which the file transfer takes */ 2 168 /*d place. */ 2 169 /* */ 2 170 /*l Written: 84-10-12 by Dean Elhard */ 2 171 /*l Modified: 86-10-09 by Don Kozlowski Add transfer_modes_set */ 2 172 /*l and server indicators. (kermit 13) */ 2 173 /* */ 2 174 /********************************************************************/ 2 175 2 176 dcl 01 kermit_comm_info aligned based (kermit_comm_infop), 2 177 02 version char (8), 2 178 02 ft_iocbp ptr, /* transfer iocbp */ 2 179 02 debug_segp ptr, /* debug segment */ 2 180 02 debug_segl fixed bin (21), 2 181 02 input_buffer aligned, /* input buffer */ 2 182 03 bufferp ptr, 2 183 03 bufferl fixed bin (21), 2 184 02 old_modes char (512) unal, /* ft switch modes */ 2 185 02 old_framing_chars aligned, /* saved frm chars */ 2 186 03 start_char char (1) unaligned, 2 187 03 end_char char (1) unaligned, 2 188 03 server bit (1) unaligned, /* In server mode */ 2 189 03 transfer_modes_set bit (1) unaligned, 2 190 03 pad bit (16) unaligned, 2 191 02 old_wake_table aligned, /* saved wake table */ 2 192 03 breaks (0:127) bit (1) unaligned, 2 193 03 mbz bit (16) unaligned, 2 194 02 old_delays aligned, /* saved delay info */ 2 195 03 version fixed bin, 2 196 03 default fixed bin, 2 197 03 delay, 2 198 04 vert_nl fixed bin, 2 199 04 horz_nl fixed bin, 2 200 04 const_tab float bin, 2 201 04 var_tab fixed bin, 2 202 04 backspace fixed bin, 2 203 04 vt_ff fixed bin; 2 204 2 205 dcl kermit_comm_infop ptr; 2 206 dcl kermit_comm_info_version 2 207 char (8) static options (constant) 2 208 init ("kci 1.0"); 2 209 2 210 /* END OF: kermit_info.incl.pl1 * * * * * */ 150 151 3 1 /* START OF: kermit_mode_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 /*l Modified: 87-06-19 by S. Huen - Add fields for capabilities, */ 3 16 /*l window_size, max_len_ext_1 and max_len_ext_2 based */ 3 17 /*l on D. Kozlowski's version. (kermit 16) */ 3 18 /* */ 3 19 /************************************************************************/ 3 20 3 21 dcl Permanent fixed bin static options (constant) init (1); 3 22 dcl Temporary fixed bin static options (constant) init (2); 3 23 3 24 dcl Store_all (1:1) fixed bin static options (constant) init (0); 3 25 dcl Retrieve_all (1:1) fixed bin static options (constant) init (0); 3 26 3 27 dcl Maxl fixed bin static options (constant) init (1); 3 28 dcl Timeout fixed bin static options (constant) init (2); 3 29 dcl N_pads fixed bin static options (constant) init (3); 3 30 dcl Pad_char fixed bin static options (constant) init (4); 3 31 dcl Eol_char fixed bin static options (constant) init (5); 3 32 dcl Quote_char fixed bin static options (constant) init (6); 3 33 dcl Eight_bit_char fixed bin static options (constant) init (7); 3 34 dcl Repeat_char fixed bin static options (constant) init (8); 3 35 dcl Start_char fixed bin static options (constant) init (9); 3 36 dcl Check_type fixed bin static options (constant) init (10); 3 37 dcl Parity fixed bin static options (constant) init (11); 3 38 dcl Incomplete fixed bin static options (constant) init (12); 3 39 dcl File_warning fixed bin static options (constant) init (13); 3 40 dcl File_type fixed bin static options (constant) init (14); 3 41 dcl Retry_threshold fixed bin static options (constant) init (15); 3 42 dcl Line_byte_size fixed bin static options (constant) init (16); 3 43 dcl Window_size fixed bin static options (constant) init (17); 3 44 dcl Max_len_ext_1 fixed bin static options (constant) init (18); 3 45 dcl Max_len_ext_2 fixed bin static options (constant) init (19); 3 46 dcl Capabilities fixed bin static options (constant) init (20); 3 47 3 48 dcl 01 Perm_defaults aligned static options (constant), 3 49 02 maxl fixed bin (8) unal init (80), 3 50 02 time fixed bin (8) unal init (15), 3 51 02 npad fixed bin (8) unal init (0), 3 52 02 padc char (1) unal init (""), 3 53 02 eol char (1) unal init (" "), 3 54 02 qctl char (1) unal init ("#"), 3 55 02 qbin char (1) unal init ("&"), 3 56 02 rept char (1) unal init ("~"), 3 57 02 start char (1) unal init (""), 3 58 02 chkt fixed bin (8) unal init (1), 3 59 02 parity char (1) unal init ("N"), 3 60 02 incomplete char (1) unal init ("K"), 3 61 02 file_warning char (1) unal init ("Y"), 3 62 02 file_type char (1) unal init ("A"), 3 63 02 retry_threshold fixed bin (8) unal init (5), 3 64 02 line_type fixed bin (8) unal init (7), 3 65 02 window_size fixed bin (8) unal init (0), 3 66 02 max_len_ext_1 fixed bin (8) unal init (5), 3 67 02 max_len_ext_2 fixed bin (8) unal init (25), 3 68 02 capabilities fixed bin (8) unal init (2); 3 69 3 70 3 71 dcl I_maxl fixed bin static options (constant) init (1); 3 72 dcl I_timeout fixed bin static options (constant) init (2); 3 73 dcl I_n_pads fixed bin static options (constant) init (3); 3 74 dcl I_pad_char fixed bin static options (constant) init (4); 3 75 dcl I_eol_char fixed bin static options (constant) init (5); 3 76 dcl I_quote_char fixed bin static options (constant) init (6); 3 77 dcl O_maxl fixed bin static options (constant) init (7); 3 78 dcl O_timeout fixed bin static options (constant) init (8); 3 79 dcl O_n_pads fixed bin static options (constant) init (9); 3 80 dcl O_pad_char fixed bin static options (constant) init (10); 3 81 dcl O_eol_char fixed bin static options (constant) init (11); 3 82 dcl O_quote_char fixed bin static options (constant) init (12); 3 83 dcl G_eight_bit_char fixed bin static options (constant) init (13); 3 84 dcl G_repeat_char fixed bin static options (constant) init (14); 3 85 dcl G_start_char fixed bin static options (constant) init (15); 3 86 dcl G_check_type fixed bin static options (constant) init (16); 3 87 dcl G_parity fixed bin static options (constant) init (17); 3 88 dcl G_window fixed bin static options (constant) init (18); 3 89 dcl I_max_lenx1 fixed bin static options (constant) init (19); 3 90 dcl I_max_lenx2 fixed bin static options (constant) init (20); 3 91 dcl O_max_lenx1 fixed bin static options (constant) init (21); 3 92 dcl O_max_lenx2 fixed bin static options (constant) init (22); 3 93 dcl G_capabilities fixed bin static options (constant) init (23); 3 94 3 95 dcl 01 Temp_defaults aligned static options (constant), 3 96 02 i_maxl fixed bin (8) unal init (80), 3 97 02 i_time fixed bin (8) unal init (15), 3 98 02 i_npad fixed bin (8) unal init (0), 3 99 02 i_padc char (1) unal init (""), 3 100 02 i_eol char (1) unal init (" "), 3 101 02 i_qctl char (1) unal init ("#"), 3 102 02 o_maxl fixed bin (8) unal init (80), 3 103 02 o_time fixed bin (8) unal init (15), 3 104 02 o_npad fixed bin (8) unal init (0), 3 105 02 o_padc char (1) unal init (""), 3 106 02 o_eol char (1) unal init (" "), 3 107 02 o_qctl char (1) unal init ("#"), 3 108 02 qbin char (1) unal init ("N"), 3 109 02 rept char (1) unal init (" "), 3 110 02 start char (1) unal init (""), 3 111 02 chkt fixed bin (8) unal init (1), 3 112 02 parity char (1) unal init ("N"), 3 113 02 window fixed bin (8) unal init (0), 3 114 02 i_maxlx1 fixed bin (8) unal init (5), 3 115 02 i_maxlx2 fixed bin (8) unal init (25), 3 116 02 o_maxlx1 fixed bin (8) unal init (5), 3 117 02 o_maxlx2 fixed bin (8) unal init (25), 3 118 02 capabilities fixed bin (8) unal init (2); 3 119 3 120 dcl Ext_Headers bit (9) static options (constant) init ("002"b3); 3 121 3 122 3 123 /* END OF: kermit_mode_info.incl.pl1 * * * * * */ 152 153 154 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 155 156 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 157 158 159 get: entry (A_sci_ptr, A_infop); 160 161 /********************************************************************/ 162 /* */ 163 /*n Name: kermit_mode_mgr_$get external */ 164 /*i Input: sci_ptr, subsystem_info_ptr */ 165 /*f Function: looks up the mode name in the list of user */ 166 /*f visible modes, calls get_modes to get the value, */ 167 /*f looks up the format of the value for the */ 168 /*f specified mode and displays it. */ 169 /*o Output: none */ 170 /* */ 171 /*l Written: 84-10-30 by Dean Elhard */ 172 /* */ 173 /********************************************************************/ 174 175 call ssu_$arg_count (A_sci_ptr, nargs); 176 177 /* if no arguments were supplied, display all the modes */ 178 179 if nargs = 0 180 then call print_mode (A_infop, Print_all, ""); 181 else do i = 1 to nargs; 182 call ssu_$arg_ptr (A_sci_ptr, i, argp, argl); 183 call print_mode (A_infop, Print_one, arg); 184 end; 185 186 return; 187 188 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 189 190 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 191 192 193 set: entry (A_sci_ptr, A_infop); 194 195 /********************************************************************/ 196 /* */ 197 /*n Name: kermit_mode_mgr_$set external */ 198 /*i Input: sci_ptr, info_ptr */ 199 /*f Function: looks up the mode name in the list of */ 200 /*f user-settable modes, insures that the value is */ 201 /*f legal for that mode, and calls store_modes to */ 202 /*f write them into the modes database. */ 203 /*o Output: none */ 204 /* */ 205 /*l Written: 84-10-30 by Dean Elhard */ 206 /* */ 207 /********************************************************************/ 208 209 call ssu_$arg_count (A_sci_ptr, nargs); 210 211 if nargs ^= 2 212 then call ssu_$abort_line (A_sci_ptr, error_table_$wrong_no_of_args); 213 214 /* get the mode name */ 215 216 call ssu_$arg_ptr (A_sci_ptr, 1, mnp, mnl); 217 218 /* get the mode value */ 219 220 call ssu_$arg_ptr (A_sci_ptr, 2, mvp, mvl); 221 222 /* try to encode the value based on the mode name */ 223 224 call encode_mode (A_infop, mode_name, select (1), mode_value, mode, ec); 225 if ec ^= 0 226 then if select (1) = 0 227 then call ssu_$abort_line (A_sci_ptr, ec, mode_name); 228 else call ssu_$abort_line (A_sci_ptr, ec, mode_value); 229 230 return; 231 232 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 233 234 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 235 236 237 retrieve: entry (A_infop, A_db, A_selector, A_valuep, A_code); 238 239 /********************************************************************/ 240 /* */ 241 /*n Name: kermit_mode_mgr_$retrieve external */ 242 /*i Input: info_ptr, db_selector, mode_set_specifier */ 243 /*f Function: gets the modes specified by the mode set */ 244 /*f specifier from the specified mode_info database */ 245 /*f and places the values into the mode value list */ 246 /*o Output: mode_value_list, error_code */ 247 /* */ 248 /*l Written: 84-10-15 by Dean Elhard */ 249 /* */ 250 /********************************************************************/ 251 252 /* select the database to be used and get the size */ 253 254 if A_db = Permanent 255 then do; 256 dbp = addr (perm_modes.mode); 257 db_sz = hbound (perm_modes.mode, 1); 258 end; 259 else do; 260 dbp = addr (temp_modes.mode); 261 db_sz = hbound (temp_modes.mode, 1); 262 end; 263 264 A_code = 0; 265 value_sz = hbound (A_selector, 1); 266 267 /* special case the Retrieve_all case */ 268 269 if value_sz = 1 & A_selector (1) = 0 270 then do; 271 value_sz = db_sz; 272 value (*) = db (*); 273 end; 274 275 /* otherwise iterate throught the selectors and copy out the */ 276 /* requested modes into the mode value array */ 277 278 else do i = 1 to value_sz while (A_code = 0); 279 item = A_selector (i); 280 if item < 1 | item > db_sz 281 then A_code = kermit_et_$unknown_mode; 282 else value (i) = db (item); 283 end; 284 285 return; 286 287 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 288 289 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 290 291 292 store: entry (A_infop, A_db, A_selector, A_valuep, A_code); 293 294 /********************************************************************/ 295 /* */ 296 /*n Name: kermit_mode_mgr_$store external */ 297 /*i Input: info_ptr, db_selector, mode_set_specifier, */ 298 /*i mode_value_list */ 299 /*f Function: writes the mode values from the mode value list */ 300 /*f into the modes specified by the mode set */ 301 /*f specifier in the database selected by db_selector */ 302 /*o Output: error_code */ 303 /* */ 304 /*l Written: 84-10-15 by Dean Elhard */ 305 /*l Modified: 84-10-27 by Dean Elhard to add mode validation */ 306 /*l and checkpointing */ 307 /* */ 308 /********************************************************************/ 309 310 /* select the database to write the modes to */ 311 312 if A_db = Permanent 313 then do; 314 dbp = addr (perm_modes.mode); 315 db_sz = hbound (perm_modes.mode, 1); 316 end; 317 else do; 318 dbp = addr (temp_modes.mode); 319 db_sz = hbound (temp_modes.mode, 1); 320 end; 321 322 value_sz = hbound (A_selector, 1); 323 A_code = 0; 324 325 ckp = null; 326 checkpointed = false; 327 328 /* insure cleanup of checkpoint data on a release */ 329 330 on cleanup begin; 331 if ckp ^= null 332 then do; 333 if checkpointed 334 then db (*) = checkpoint (*); 335 free checkpoint; 336 end; 337 end; 338 339 /* checkpoint against invalid mode specification */ 340 341 allocate checkpoint; 342 343 checkpoint (*) = db (*); 344 checkpointed = true; 345 346 /* special case the Store_all case */ 347 348 if value_sz = 1 & A_selector (1) = 0 349 then do; 350 value_sz = db_sz; 351 db (*) = value (*); 352 end; 353 354 /* otherwise iterate throught the selected modes writing the */ 355 /* values from the value array into the modes db */ 356 357 else do i = 1 to value_sz while (A_code = 0); 358 item = A_selector (i); 359 if item < 1 | item > db_sz 360 then A_code = kermit_et_$unknown_mode; 361 else db (item) = value (i); 362 end; 363 364 /* validate that the new modes are legitimate */ 365 366 call validate_modes (A_infop, A_db, A_code); 367 368 /* if not, restore the db to it's previous state */ 369 370 if A_code ^= 0 371 then db (*) = checkpoint (*); 372 373 /* release the checkpoint information */ 374 375 checkpointed = false; 376 free checkpoint; 377 378 return; 379 380 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 381 382 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 383 384 385 validate_modes: proc (infop, db, ec); 386 387 /********************************************************************/ 388 /* */ 389 /*n Name: validate_modes internal */ 390 /*i Input: info_ptr, db_selector */ 391 /*f Function: validates that the modes currently set into the */ 392 /*f permanent and temporary modes databases are valid */ 393 /*o Output: error_code */ 394 /* */ 395 /*l Written: 84-10-27 by Dean Elhard */ 396 /*l Modified: 87-06-19 by S. Huen - Change Max_maxl to 1500 */ 397 /*l which is the maximum packet length. (kermit 16) */ 398 /* */ 399 /********************************************************************/ 400 401 /* constants */ 402 403 dcl Min_maxl fixed bin static options (constant) init (20); 404 dcl Max_maxl fixed bin static options (constant) init (1500); 405 406 dcl Min_time fixed bin static options (constant) init (5); 407 dcl Max_time fixed bin static options (constant) init (20); 408 409 dcl Min_eol fixed bin static options (constant) init (1); 410 dcl Max_eol fixed bin static options (constant) init (31); 411 412 dcl Min_ctl_1 fixed bin static options (constant) init (33); 413 dcl Max_ctl_1 fixed bin static options (constant) init (62); 414 dcl Min_ctl_2 fixed bin static options (constant) init (96); 415 dcl Max_ctl_2 fixed bin static options (constant) init (126); 416 417 dcl On fixed bin static options (constant) init (89); 418 dcl Off fixed bin static options (constant) init (78); 419 420 dcl No_repeat fixed bin static options (constant) init (32); 421 422 dcl Max_start fixed bin static options (constant) init (31); 423 424 dcl Min_ck_type fixed bin static options (constant) init (1); 425 dcl Max_ck_type fixed bin static options (constant) init (1); 426 427 dcl No_parity fixed bin static options (constant) init (78); 428 dcl Even_parity fixed bin static options (constant) init (69); 429 dcl Odd_parity fixed bin static options (constant) init (79); 430 dcl Space_parity fixed bin static options (constant) init (83); 431 dcl Mark_parity fixed bin static options (constant) init (77); 432 433 dcl Keep_incomplete fixed bin static options (constant) init (75); 434 dcl Discard_incomplete fixed bin static options (constant) init (68); 435 436 dcl Binary fixed bin static options (constant) init (66); 437 dcl Ascii fixed bin static options (constant) init (65); 438 439 dcl Min_retry_threshold fixed bin static options (constant) init (5); 440 dcl Max_retry_threshold fixed bin static options (constant) init (20); 441 442 dcl Seven_bit fixed bin static options (constant) init (7); 443 dcl Eight_bit fixed bin static options (constant) init (8); 444 445 /* parameters */ 446 447 dcl infop ptr; 448 dcl db fixed bin; 449 dcl ec fixed bin (35); 450 451 /* based */ 452 453 dcl 01 perm aligned based (info.perm_modesp), 454 02 version char (8) unaligned, 455 02 maxl fixed bin (8) unaligned, 456 02 time fixed bin (8) unaligned, 457 02 npad fixed bin (8) unaligned, 458 02 padc char (1) unaligned, 459 02 eol fixed bin (9) unsigned unaligned, 460 02 qctl fixed bin (9) unsigned unaligned, 461 02 qbin fixed bin (9) unsigned unaligned, 462 02 rept fixed bin (9) unsigned unaligned, 463 02 start fixed bin (9) unsigned unaligned, 464 02 chkt fixed bin (8) unaligned, 465 02 parity fixed bin (9) unsigned unaligned, 466 02 incomplete fixed bin (9) unsigned unaligned, 467 02 file_warning fixed bin (9) unsigned unaligned, 468 02 file_type fixed bin (9) unsigned unaligned, 469 02 retry_threshold fixed bin (8) unaligned, 470 02 line_byte_size fixed bin (8) unaligned; 471 472 dcl 01 temp aligned based (info.temp_modesp), 473 02 version char (8) unaligned, 474 02 i_maxl fixed bin (8) unaligned, 475 02 i_time fixed bin (8) unaligned, 476 02 i_npad fixed bin (8) unaligned, 477 02 i_padc char (1) unaligned, 478 02 i_eol fixed bin (9) unsigned unaligned, 479 02 i_qctl fixed bin (9) unsigned unaligned, 480 02 o_maxl fixed bin (8) unaligned, 481 02 o_time fixed bin (8) unaligned, 482 02 o_npad fixed bin (8) unaligned, 483 02 o_padc char (1) unaligned, 484 02 o_eol fixed bin (9) unsigned unaligned, 485 02 o_qctl fixed bin (9) unsigned unaligned, 486 02 qbin fixed bin (9) unsigned unaligned, 487 02 rept fixed bin (9) unsigned unaligned, 488 02 start fixed bin (9) unsigned unaligned, 489 02 chkt fixed bin (8) unaligned, 490 02 parity fixed bin (9) unsigned unaligned; 491 492 /* automatic */ 493 494 dcl valid bit (1); 495 496 ec = 0; 497 498 /* validate permanent modes */ 499 500 if db = Permanent 501 then do; 502 valid = (perm.maxl >= Min_maxl) & (perm.maxl <= Max_maxl); 503 valid = valid & (perm.time >= Min_time) & (perm.time <= Max_time); 504 valid = valid & (perm.eol >= Min_eol) & (perm.eol <= Max_eol); 505 valid = valid & (((perm.qctl >= Min_ctl_1) & (perm.qctl <= Max_ctl_1)) | 506 ((perm.qctl >= Min_ctl_2) & (perm.qctl <= Max_ctl_2))); 507 valid = valid & (((perm.qbin >= Min_ctl_1) & (perm.qbin <= Max_ctl_1)) | 508 ((perm.qbin >= Min_ctl_2) & (perm.qbin <= Max_ctl_2)) | 509 (perm.qbin = On) | (perm.qbin = Off)) & 510 (perm.qbin ^= perm.qctl); 511 valid = valid & (((perm.rept >= Min_ctl_1) & (perm.rept <= Max_ctl_1)) | 512 ((perm.rept >= Min_ctl_2) & (perm.rept <= Max_ctl_2)) | 513 (perm.rept = No_repeat)) & 514 (perm.rept ^= perm.qctl) & (perm.rept ^= perm.qbin); 515 valid = valid & (perm.start <= Max_start) & (perm.start ^= perm.eol) & 516 (perm.start ^= CR_fixed); 517 valid = valid & (perm.chkt >= Min_ck_type) & (perm.chkt <= Max_ck_type); 518 valid = valid & ((perm.parity = No_parity) | 519 (perm.parity = Even_parity) | 520 (perm.parity = Odd_parity) | 521 (perm.parity = Space_parity) | 522 (perm.parity = Mark_parity)); 523 valid = valid & ((perm.incomplete = Keep_incomplete) | 524 (perm.incomplete = Discard_incomplete)); 525 valid = valid & ((perm.file_warning = On) | (perm.file_warning = Off)); 526 valid = valid & ((perm.file_type = Binary) | (perm.file_type = Ascii)); 527 valid = valid & (perm.retry_threshold >= Min_retry_threshold) & 528 (perm.retry_threshold <= Max_retry_threshold); 529 valid = valid & ((perm.line_byte_size = Seven_bit) | 530 (perm.line_byte_size = Eight_bit)); 531 532 end; 533 534 /* validate temporary modes */ 535 536 if db = Temporary 537 then do; 538 valid = (temp.i_maxl >= Min_maxl) & (temp.i_maxl <= Max_maxl); 539 valid = valid & (temp.i_time >= Min_time) & (temp.i_time <= Max_time); 540 valid = valid & (temp.i_eol >= Min_eol) & (temp.i_eol <= Max_eol); 541 valid = valid & (((temp.i_qctl >= Min_ctl_1) & 542 (temp.i_qctl <= Max_ctl_1)) | 543 ((temp.i_qctl >= Min_ctl_2) & 544 (temp.i_qctl <= Max_ctl_2))); 545 valid = valid & (temp.o_maxl >= Min_maxl) & (temp.o_maxl <= Max_maxl); 546 valid = valid & (temp.o_time >= Min_time) & (temp.o_time <= Max_time); 547 valid = valid & (temp.o_eol >= Min_eol) & (temp.o_eol <= Max_eol); 548 valid = valid & (((temp.o_qctl >= Min_ctl_1) & 549 (temp.o_qctl <= Max_ctl_1)) | 550 ((temp.o_qctl >= Min_ctl_2) & 551 (temp.o_qctl <= Max_ctl_2))); 552 valid = valid & (((temp.qbin >= Min_ctl_1) & (temp.qbin <= Max_ctl_1)) | 553 ((temp.qbin >= Min_ctl_2) & (temp.qbin <= Max_ctl_2)) | 554 (temp.qbin = On) | (temp.qbin = Off)) & 555 (temp.qbin ^= temp.i_qctl) & (temp.qbin ^= temp.o_qctl); 556 valid = valid & (((temp.rept >= Min_ctl_1) & (temp.rept <= Max_ctl_1)) | 557 ((temp.rept >= Min_ctl_2) & (temp.rept <= Max_ctl_2)) | 558 (temp.rept = No_repeat)) & 559 (temp.rept ^= temp.i_qctl) & 560 (temp.rept ^= temp.o_qctl) & 561 (temp.rept ^= temp.qbin); 562 valid = valid & (temp.start <= Max_start) & 563 (temp.start ^= temp.i_eol) & 564 (temp.start ^= temp.o_eol) & 565 (temp.start ^= CR_fixed); 566 valid = valid & (temp.chkt >= Min_ck_type) & (temp.chkt <= Max_ck_type); 567 valid = valid & ((temp.parity = No_parity) | 568 (temp.parity = Even_parity) | 569 (temp.parity = Odd_parity) | 570 (temp.parity = Space_parity) | 571 (temp.parity = Mark_parity)); 572 end; 573 574 if ^valid 575 then ec = kermit_et_$bad_mode_value; 576 577 end validate_modes; 578 579 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 580 581 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 582 583 584 print_mode: proc (infop, all_sw, mode_name); 585 586 /********************************************************************/ 587 /* */ 588 /*n Name: print_mode internal */ 589 /*i Input: info_ptr, all_switch, mode_name */ 590 /*f Function: prints out the value of a given mode or of all */ 591 /*f the kermit user visible modes */ 592 /*o Output: none */ 593 /* */ 594 /*l Written: 84-10-30 by Dean Elhard */ 595 /* */ 596 /********************************************************************/ 597 598 /* parameters */ 599 600 dcl infop ptr; 601 dcl all_sw bit (1); 602 dcl mode_name char (*); 603 604 /* based */ 605 606 dcl 01 info aligned like kermit_info based (infop); 607 608 /* automatic */ 609 610 dcl chr char (1) unaligned; 611 dcl chrp ptr; 612 dcl found bit (1); 613 dcl num (1:4) fixed bin (8) unaligned; 614 dcl num2 fixed bin unaligned; 615 dcl nump ptr; 616 dcl select (1:1) fixed bin; 617 dcl string char (3) varying; 618 619 found = false; 620 chrp = addr (chr); 621 nump = addr (num); 622 623 /* display the value of the line_byte_size mode */ 624 625 if mode_name = "line_byte_size" | all_sw 626 then do; 627 found = true; 628 select (1) = Line_byte_size; 629 call kermit_mode_mgr_$retrieve (infop, Permanent, select, nump, ec); 630 call ioa_ ("Line byte size = ^d bit", num (1)); 631 end; 632 633 /* display the value of the file_type mode */ 634 635 if mode_name = "file_type" | all_sw 636 then do; 637 found = true; 638 select (1) = File_type; 639 call kermit_mode_mgr_$retrieve (infop, Permanent, select, chrp, ec); 640 call ioa_ ("File type = ^[binary^;ascii^]", (chr = Binary)); 641 end; 642 643 /* display the value of the file_warning mode */ 644 645 if mode_name = "file_warning" | all_sw 646 then do; 647 found = true; 648 select (1) = File_warning; 649 call kermit_mode_mgr_$retrieve (infop, Permanent, select, chrp, ec); 650 call ioa_ ("File warning = ^[on^;off^]", (chr = On)); 651 end; 652 653 /* display the value of the incomplete mode */ 654 655 if mode_name = "incomplete" | all_sw 656 then do; 657 found = true; 658 select (1) = Incomplete; 659 call kermit_mode_mgr_$retrieve (infop, Permanent, select, chrp, ec); 660 call ioa_ ("Incomplete = ^[keep^;discard^]", (chr = Keep)); 661 end; 662 663 /* display the value of the control_prefix character */ 664 665 if mode_name = "control_prefix" | mode_name = "cp" | all_sw 666 then do; 667 found = true; 668 select (1) = Quote_char; 669 call kermit_mode_mgr_$retrieve (infop, Permanent, select, chrp, ec); 670 call ioa_ ("Control prefix = ""^a""", chr); 671 end; 672 673 /* display the value of the eight_bit_prefix character */ 674 675 if mode_name = "eight_bit_prefix" | mode_name = "ebp" | all_sw 676 then do; 677 found = true; 678 select (1) = Eight_bit_char; 679 call kermit_mode_mgr_$retrieve (infop, Permanent, select, chrp, ec); 680 call ioa_ ("Eight bit prefix = ^[""^a""^;off^s^;From remote^s^]", 681 1+index (No_eight_bit || Accept_eight_bit, chr), chr); 682 end; 683 684 /* display the value of the repeat_prefix character */ 685 686 if mode_name = "repeat_prefix" | mode_name = "rp" | all_sw 687 then do; 688 found = true; 689 select (1) = Repeat_char; 690 call kermit_mode_mgr_$retrieve (infop, Permanent, select, chrp, ec); 691 call ioa_ ("Repeat prefix = ^[off^s^;""^a""^]", 692 (chr = No_repeat), chr); 693 end; 694 695 /* dispaly the value of the start_of_packet character */ 696 697 if mode_name = "start_of_packet" | mode_name = "sop" | all_sw 698 then do; 699 found = true; 700 select (1) = Start_char; 701 call kermit_mode_mgr_$retrieve (infop, Permanent, select, chrp, ec); 702 703 /* special encoding to insure \NNN display format */ 704 705 call ioa_$rsnnl ("^3o", string, 3, rank (chr)); 706 string = translate (string, "0", " "); 707 call ioa_ ("Start of packet = ""\^a""", string); 708 end; 709 710 /* display the value of the end_of_packet character */ 711 712 if mode_name = "end_of_packet" | mode_name = "eop" | all_sw 713 then do; 714 found = true; 715 select (1) = Eol_char; 716 call kermit_mode_mgr_$retrieve (infop, Permanent, select, chrp, ec); 717 718 /* special encoding to insure \NNN format */ 719 720 call ioa_$rsnnl ("^3o", string, 3, rank (chr)); 721 string = translate (string, "0", " "); 722 call ioa_ ("End of packet = ""\^a""",string); 723 end; 724 725 /* display the value of the parity mode */ 726 727 if mode_name = "parity" | all_sw 728 then do; 729 found = true; 730 select (1) = Parity; 731 call kermit_mode_mgr_$retrieve (infop, Permanent, select, chrp, ec); 732 call ioa_ ("Parity = ^[none^;mark^;space^;even^;odd^]", 733 index ("NMSEO", chr)); 734 end; 735 736 /* display the value of the packet_length mode */ 737 738 if mode_name = "packet_length" | mode_name = "pl" | all_sw 739 then do; 740 found = true; 741 select2 (1) = Maxl; 742 select2 (2) = Capabilities; 743 select2 (3) = Max_len_ext_1; 744 select2 (4) = Max_len_ext_2; 745 call kermit_mode_mgr_$retrieve (infop, Permanent, select2, nump, ec); 746 if num (1) < 94 747 then call ioa_ ("Packet length = ^d", num (1)); 748 else if num(1) = 94 749 then do; 750 num2 = (num (3) * 95) + num (4); 751 if unspec (num (2)) & Ext_Headers 752 then call ioa_ ("Packet length = ^d", num2); 753 else call ioa_ ("Packet length = ^d", num (1)); 754 end; 755 end; 756 757 /* display the value of the retry_threshold mode */ 758 759 if mode_name = "retry_threshold" | mode_name = "rt" | all_sw 760 then do; 761 found = true; 762 select (1) = Retry_threshold; 763 call kermit_mode_mgr_$retrieve (infop, Permanent, select, nump, ec); 764 call ioa_ ("Retry threshold = ^d", num (1)); 765 end; 766 767 /* display the value of the timeout mode */ 768 769 if mode_name = "timeout" | all_sw 770 then do; 771 found = true; 772 select (1) = Timeout; 773 call kermit_mode_mgr_$retrieve (infop, Permanent, select, nump, ec); 774 call ioa_ ("Timeout = ^d", num (1)); 775 end; 776 777 /* if no matching mode name was found then abort the command */ 778 779 if ^found 780 then call ssu_$abort_line (info.sci_ptr, kermit_et_$unknown_mode); 781 782 end print_mode; 783 784 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 785 786 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 787 788 789 encode_mode: proc (infop, name, index, value, encoded, ec); 790 791 /********************************************************************/ 792 /* */ 793 /*n Name: encode_mode internal */ 794 /*i Input: info_ptr, mode_name, mode_value */ 795 /*f Function: Given a mode name and value, determines the index */ 796 /*f for the specified mode and the encoded value for */ 797 /*f the mode given */ 798 /*o Output: mode_index, encoded_value, error_code */ 799 /* */ 800 /*l Written: 84-10-30 by Dean Elhard */ 801 /*l Modified: 86-01-31 by Don Kozlowki fix typo in odd parity */ 802 /* */ 803 /********************************************************************/ 804 805 /* parameters */ 806 807 dcl infop ptr; 808 dcl name char (*); 809 dcl index fixed bin; 810 dcl value char (*); 811 dcl encoded char (1); 812 dcl ec fixed bin (35); 813 814 /* constants */ 815 816 dcl valid_modes (1:22) char (16) varying static options (constant) 817 init ("control_prefix", 818 "cp", 819 "eight_bit_prefix", 820 "ebp", 821 "end_of_packet", 822 "eop", 823 "file_type", 824 "file_warning", 825 "incomplete", 826 "line_byte_size", 827 "packet_length", 828 "pl", 829 "parity", 830 "repeat_prefix", 831 "rp", 832 "retry_threshold", 833 "rt", 834 "start_of_packet", 835 "sop", 836 "timeout", 837 "window_size", 838 "ws"); 839 840 /* automatic */ 841 842 dcl num fixed bin (35); 843 dcl i fixed bin; 844 845 index = 0; 846 ec = 0; 847 848 /* scan the list of user-visible mode names for the name given */ 849 850 do i = 1 to hbound (valid_modes, 1) while (index = 0); 851 if valid_modes (i) = name 852 then index = i; 853 end; 854 855 /* if not found, return with an appropriate error code */ 856 857 if index = 0 858 then do; 859 ec = kermit_et_$unknown_mode; 860 return; 861 end; 862 863 /* now go process the value encoding appropriately for the mode */ 864 865 goto MODE (index); 866 867 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 868 869 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 870 871 872 MODE (1): 873 MODE (2): /* control prefix */ 874 875 /* the control prefix must be a single character, illegal chars are */ 876 /* trapped when the mode is stored */ 877 878 if length (value) ^= 1 879 then ec = kermit_et_$bad_mode_value; 880 else mode = value; 881 882 /* set the index to the correct database index */ 883 884 select (1) = Quote_char; 885 goto DONE; 886 887 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 888 889 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 890 891 892 MODE (3): 893 MODE (4): /* eight bit prefix */ 894 895 /* the values "on" and "off" are translated into "Y" and "N" */ 896 /* respectively, otherwise, a single character is expected. */ 897 /* Illegal values are trapped when the mode is stored. */ 898 899 if value = "on" 900 then mode = On; 901 else if value = "off" 902 then mode = Off; 903 else if length (value) ^= 1 904 then ec = kermit_et_$bad_mode_value; 905 else mode = value; 906 907 /* set the index to the correct database index */ 908 909 select (1) = Eight_bit_char; 910 goto DONE; 911 912 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 913 914 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 915 916 917 MODE (5): 918 MODE (6): /* end of packet */ 919 920 /* any single character is a valid encoding. Illegal characters */ 921 /* are trapped when the store is attempted. */ 922 923 if length (value) ^= 1 924 then ec = kermit_et_$bad_mode_value; 925 else mode = value; 926 927 /* set the index to the correct database index */ 928 929 select (1) = Eol_char; 930 goto DONE; 931 932 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 933 934 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 935 936 937 MODE (7): /* file type */ 938 939 /* Two legal values are permitted. "binary" and "ascii" */ 940 941 if value = "binary" 942 then mode = Binary; 943 else if value = "ascii" 944 then mode = Ascii; 945 else ec = kermit_et_$bad_mode_value; 946 947 /* set the index to the correct database index */ 948 949 select (1) = File_type; 950 goto DONE; 951 952 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 953 954 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 955 956 957 MODE (8): /* file warning */ 958 959 /* file warning has two legal encodings, "on" and "off" */ 960 961 if value = "on" 962 then mode = On; 963 else if value = "off" 964 then mode = Off; 965 else ec = kermit_et_$bad_mode_value; 966 967 /* set the index to the correct database index */ 968 969 select (1) = File_warning; 970 goto DONE; 971 972 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 973 974 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 975 976 977 MODE (9): /* incomplete */ 978 979 /* incomplete has two legal encodings, "on" and "off" */ 980 981 if value = "keep" 982 then mode = Keep; 983 else if value = "discard" 984 then mode = Discard; 985 else ec = kermit_et_$bad_mode_value; 986 987 /* set the index to the correct database index */ 988 989 select (1) = Incomplete; 990 goto DONE; 991 992 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 993 994 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 995 996 997 MODE (10): /* line byte size */ 998 999 /* line byte size must be either 7 or 8 */ 1000 1001 if value = "7bit" | value = "7" 1002 then mode = byte (Seven_bit); 1003 else if value = "8bit" | value = "8" 1004 then mode = byte (Eight_bit); 1005 else ec = kermit_et_$bad_mode_value; 1006 1007 /* set the index to the correct data base index */ 1008 1009 select (1) = Line_byte_size; 1010 goto DONE; 1011 1012 1013 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1014 1015 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1016 1017 1018 MODE (11): 1019 MODE (12): /* packet length */ 1020 1021 /* packet length must be a valid numeric value. illegal values */ 1022 /* are trapped when the store is attempted. */ 1023 1024 num = cv_dec_check_ (value, ec); 1025 1026 /* make sure the value supplied can be encoded in nine bits */ 1027 1028 1029 if (ec ^= 0) & (num >= 0) & (num < 1100) 1030 then ec = kermit_et_$bad_mode_value; 1031 else do; 1032 1033 /* set the index to the correct database index */ 1034 1035 select (1) = Capabilities; 1036 call kermit_mode_mgr_$retrieve (infop, Permanent, select, addr (mode), ec); 1037 if num > 1500 /* Packet length exceeds the maximum */ 1038 then do; 1039 call ioa_ ("kermit (set): Mode value exceeds 1500 which is the maximum packet length."); 1040 ec = kermit_et_$bad_mode_value; 1041 call ssu_$abort_line (A_sci_ptr, ec, mode_value); 1042 return; 1043 end; 1044 else if num > 94 /* Extended packets requested */ 1045 then unspec (mode) = unspec (mode) | Ext_Headers; 1046 else unspec (mode) = unspec (mode) & ^Ext_Headers; 1047 select2 (1) = Maxl; 1048 select2 (2) = Capabilities; 1049 select2 (3) = Max_len_ext_1; 1050 select2 (4) = Max_len_ext_2; 1051 1052 mode2 (1) = min (num, 94); 1053 unspec (mode2 (2)) = unspec (mode); 1054 mode2 (3) = num / 95; 1055 mode2 (4) = mod(num, 95); 1056 call kermit_mode_mgr_$store (A_infop, Permanent, select2, addr (mode2), ec); 1057 1058 end; 1059 if ec ^= 0 1060 then call ssu_$abort_line (A_sci_ptr, ec, mode_value); 1061 return; 1062 1063 1064 1065 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1066 1067 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1068 1069 1070 MODE (13): /* parity */ 1071 1072 /* parity can have 5 values: "none", "space", "mark", "even", "odd" */ 1073 1074 if value = "none" 1075 then mode = None; 1076 else if value = "space" 1077 then mode = Space; 1078 else if value = "mark" 1079 then mode = Mark; 1080 else if value = "even" 1081 then mode = Even; 1082 else if value = "odd" 1083 then mode = Odd; 1084 else ec = kermit_et_$bad_mode_value; 1085 1086 /* set the index to the correct database index */ 1087 1088 select (1) = Parity; 1089 goto DONE; 1090 1091 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1092 1093 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1094 1095 1096 MODE (14): 1097 MODE (15): /* repeat prefix */ 1098 1099 /* the repeat prefix can be "off", or a single character value. */ 1100 /* illegal characters are trapped when the store is attempted */ 1101 1102 if value = "off" 1103 then mode = No_repeat; 1104 else if length (value) ^= 1 1105 then ec = kermit_et_$bad_mode_value; 1106 else mode = value; 1107 1108 /* set the index to the correct database index */ 1109 1110 select (1) = Repeat_char; 1111 goto DONE; 1112 1113 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1114 1115 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1116 1117 1118 MODE (16): 1119 MODE (17): /* retry threshold */ 1120 1121 /* retry threshold must be a valid numeric encoding. Illegal values */ 1122 /* are trapped when the store is attempted. */ 1123 1124 num = cv_dec_check_ (value, ec); 1125 1126 /* make sure the value supplied can be encoded in nine bits */ 1127 1128 if (ec ^= 0) & (num >= 0) & (num < 512) 1129 then ec = kermit_et_$bad_mode_value; 1130 else mode = byte (num); 1131 1132 /* set the index to the correct database index */ 1133 1134 select (1) = Retry_threshold; 1135 goto DONE; 1136 1137 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1138 1139 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1140 1141 1142 MODE (18): 1143 MODE (19): /* start of packet */ 1144 1145 /* the start_of_packet character must be a single character. */ 1146 /* illegal values are trapped when the store is attempted. */ 1147 1148 if length (value) ^= 1 1149 then ec = kermit_et_$bad_mode_value; 1150 else mode = value; 1151 1152 /* set the index to the correct database index */ 1153 1154 select (1) = Start_char; 1155 goto DONE; 1156 1157 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1158 1159 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1160 1161 1162 MODE (20): /* timeout */ 1163 1164 /* timeout must be a valid numeric encoding. Illegal values are */ 1165 /* trapped when the store is attempted */ 1166 1167 num = cv_dec_check_ (value, ec); 1168 1169 /* make sure the value supplied can be encoded in nine bits */ 1170 1171 if (ec ^= 0) & (num >= 0) & (num < 512) 1172 then ec = kermit_et_$bad_mode_value; 1173 else mode = byte (num); 1174 1175 /* set the index to the correct database index */ 1176 1177 select (1) = Timeout; 1178 goto DONE; 1179 1180 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1181 1182 1183 MODE (21): /* window size */ 1184 MODE (22): /* window size */ 1185 1186 /* The only currently supported window size is one (1) */ 1187 1188 num = cv_dec_check_ (value, ec); 1189 1190 if (ec ^= 0) & (num ^= 1) 1191 then ec = kermit_et_$bad_mode_value; 1192 else mode = byte (nu 540 540 562 i_maxl 2 based fixed bin(8,0) level 2 packed packed unaligned dcl 472 ref 538 538 i_qctl 3(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 472 ref 541 541 541 541 552 556 i_time 2(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 472 ref 539 539 incomplete 4(27) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 453 ref 523 523 index builtin function dcl 137 in procedure "kermit_mode_mgr_" ref 680 732 732 index parameter fixed bin(17,0) dcl 809 in procedure "encode_mode" set ref 789 845* 850 851* 857 865 info based structure level 1 dcl 95 in procedure "kermit_mode_mgr_" info based structure level 1 dcl 606 in procedure "print_mode" infop parameter pointer dcl 447 in procedure "validate_modes" ref 385 infop parameter pointer dcl 807 in procedure "encode_mode" set ref 789 1036* infop parameter pointer dcl 600 in procedure "print_mode" set ref 584 629* 639* 649* 659* 669* 679* 690* 701* 716* 731* 745* 763* 773* 779 ioa_ 000012 constant entry external dcl 78 ref 630 640 650 660 670 680 691 707 722 732 746 751 753 764 774 1039 ioa_$rsnnl 000014 constant entry external dcl 79 ref 705 720 item 000115 automatic fixed bin(17,0) dcl 116 set ref 279* 280 280 282 358* 359 359 361 kermit_bit_constants 000000 constant structure level 1 packed packed unaligned dcl 2-27 set ref 515 562 kermit_et_$bad_mode_value 000026 external static fixed bin(35,0) dcl 88 ref 574 872 903 917 945 965 985 1005 1029 1040 1084 1104 1128 1142 1171 1190 kermit_et_$unknown_mode 000030 external static fixed bin(35,0) dcl 90 set ref 280 359 779* 859 kermit_fixed_constants based structure level 1 packed packed unaligned dcl 2-35 kermit_info based structure level 1 dcl 2-52 kermit_mode_mgr_$retrieve 000032 constant entry external dcl 1-78 ref 629 639 649 659 669 679 690 701 716 731 745 763 773 1036 kermit_mode_mgr_$store 000034 constant entry external dcl 1-90 ref 1056 1201 kermit_perm_mode_count constant fixed bin(17,0) initial dcl 2-83 ref 257 315 kermit_perm_modes based structure level 1 dcl 2-77 kermit_stats_info based structure level 1 dcl 2-147 kermit_temp_mode_count constant fixed bin(17,0) initial dcl 2-105 ref 261 319 kermit_temp_modes based structure level 1 dcl 2-99 length builtin function dcl 138 ref 872 903 917 1104 1142 line_byte_size 5(27) based fixed bin(8,0) level 2 packed packed unaligned dcl 453 ref 529 529 maxl 2 based fixed bin(8,0) level 2 packed packed unaligned dcl 453 ref 502 502 mnl 000116 automatic fixed bin(21,0) dcl 117 set ref 216* 224 224 225 225 mnp 000120 automatic pointer dcl 118 set ref 216* 224 225 mod builtin function dcl 139 ref 1055 mode 2 based bit(9) array level 2 in structure "perm_modes" packed packed unaligned dcl 98 in procedure "kermit_mode_mgr_" set ref 256 257 314 315 mode 000122 automatic char(1) packed unaligned dcl 119 in procedure "kermit_mode_mgr_" set ref 224* 880* 892* 901* 905* 925* 937* 943* 957* 963* 977* 983* 997* 1003* 1036 1036 1044* 1044 1046* 1046 1053 1070* 1076* 1078* 1080* 1082* 1096* 1106* 1130* 1150* 1173* 1192* 1201 1201 mode 2 based bit(9) array level 2 in structure "temp_modes" packed packed unaligned dcl 96 in procedure "kermit_mode_mgr_" set ref 260 261 318 319 mode2 000123 automatic fixed bin(9,0) array packed unsigned unaligned dcl 120 set ref 1052* 1053* 1054* 1055* 1056 1056 mode_name based char packed unaligned dcl 101 in procedure "kermit_mode_mgr_" set ref 224* 225* mode_name parameter char packed unaligned dcl 602 in procedure "print_mode" ref 584 625 635 645 655 665 665 675 675 686 686 697 697 712 712 727 738 738 759 759 769 mode_value based char packed unaligned dcl 102 set ref 224* 228* 1041* 1059* 1205* mvl 000124 automatic fixed bin(21,0) dcl 121 set ref 220* 224 224 228 228 1041 1041 1059 1059 1205 1205 mvp 000126 automatic pointer dcl 122 set ref 220* 224 228 1041 1059 1205 name parameter char packed unaligned dcl 808 ref 789 851 nargs 000130 automatic fixed bin(17,0) dcl 123 set ref 175* 179 181 209* 211 null builtin function dcl 140 ref 325 331 num 000216 automatic fixed bin(35,0) dcl 842 in procedure "encode_mode" set ref 1018* 1029 1029 1037 1044 1052 1054 1055 1118* 1128 1128 1130 1162* 1171 1171 1173 1183* 1190 1192 num 000177 automatic fixed bin(8,0) array packed unaligned dcl 613 in procedure "print_mode" set ref 621 630* 746 746* 748 750 750 751 753* 764* 774* num2 000200 automatic fixed bin(17,0) packed unaligned dcl 614 set ref 750* 751* nump 000202 automatic pointer dcl 615 set ref 621* 629* 745* 763* 773* o_eol 4(18) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 472 ref 547 547 562 o_maxl 3(18) based fixed bin(8,0) level 2 packed packed unaligned dcl 472 ref 545 545 o_qctl 4(27) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 472 ref 548 548 548 548 552 556 o_time 3(27) based fixed bin(8,0) level 2 packed packed unaligned dcl 472 ref 546 546 parity 4(18) based fixed bin(9,0) level 2 in structure "perm" packed packed unsigned unaligned dcl 453 in procedure "validate_modes" ref 518 518 518 518 518 parity 6 based fixed bin(9,0) level 2 in structure "temp" packed packed unsigned unaligned dcl 472 in procedure "validate_modes" ref 567 567 567 567 567 perm based structure level 1 dcl 453 perm_modes based structure level 1 dcl 98 perm_modesp 4 based pointer level 2 dcl 95 ref 256 257 314 315 502 502 503 503 504 504 505 505 505 505 507 507 507 507 507 507 507 507 511 511 511 511 511 511 511 511 511 515 515 515 515 517 517 518 518 518 518 518 523 523 525 525 526 526 527 527 529 529 qbin 5 based fixed bin(9,0) level 2 in structure "temp" packed packed unsigned unaligned dcl 472 in procedure "validate_modes" ref 552 552 552 552 552 552 552 552 556 qbin 3(18) based fixed bin(9,0) level 2 in structure "perm" packed packed unsigned unaligned dcl 453 in procedure "validate_modes" ref 507 507 507 507 507 507 507 511 qctl 3(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 453 ref 505 505 505 505 507 511 rank builtin function dcl 141 ref 705 705 720 720 rept 5(09) based fixed bin(9,0) level 2 in structure "temp" packed packed unsigned unaligned dcl 472 in procedure "validate_modes" ref 556 556 556 556 556 556 556 556 rept 3(27) based fixed bin(9,0) level 2 in structure "perm" packed packed unsigned unaligned dcl 453 in procedure "validate_modes" ref 511 511 511 511 511 511 511 retry_threshold 5(18) based fixed bin(8,0) level 2 packed packed unaligned dcl 453 ref 527 527 sci_ptr 2 based pointer level 2 dcl 606 set ref 779* select 000204 automatic fixed bin(17,0) array dcl 616 in procedure "print_mode" set ref 628* 629* 638* 639* 648* 649* 658* 659* 668* 669* 678* 679* 689* 690* 700* 701* 715* 716* 730* 731* 762* 763* 772* 773* select 000131 automatic fixed bin(17,0) array dcl 124 in procedure "kermit_mode_mgr_" set ref 224* 225 884* 909* 929* 949* 969* 989* 1009* 1035* 1036* 1088* 1110* 1134* 1154* 1177* 1196* 1201* select2 000132 automatic fixed bin(17,0) array dcl 125 set ref 741* 742* 743* 744* 745* 1047* 1048* 1049* 1050* 1056* ssu_$abort_line 000022 constant entry external dcl 82 ref 211 225 228 779 1041 1059 1205 ssu_$arg_count 000016 constant entry external dcl 80 ref 175 209 ssu_$arg_ptr 000020 constant entry external dcl 81 ref 182 216 220 start 4 based fixed bin(9,0) level 2 in structure "perm" packed packed unsigned unaligned dcl 453 in procedure "validate_modes" ref 515 515 515 start 5(18) based fixed bin(9,0) level 2 in structure "temp" packed packed unsigned unaligned dcl 472 in procedure "validate_modes" ref 562 562 562 562 string 000206 automatic varying char(3) dcl 617 set ref 705* 706* 706 707* 720* 721* 721 722* temp based structure level 1 dcl 472 temp_modes based structure level 1 dcl 96 temp_modesp 6 based pointer level 2 dcl 95 ref 260 261 318 319 538 538 539 539 540 540 541 541 541 541 545 545 546 546 547 547 548 548 548 548 552 552 552 552 552 552 552 552 552 552 556 556 556 556 556 556 556 556 556 556 556 562 562 562 562 562 562 566 566 567 567 567 567 567 time 2(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 453 ref 503 503 translate builtin function dcl 142 ref 706 721 true 000205 constant bit(1) initial packed unaligned dcl 42 ref 344 627 637 647 657 667 677 688 699 714 729 740 761 771 unspec builtin function dcl 143 set ref 751 1044* 1044 1046* 1046 1053* 1053 valid 000162 automatic bit(1) packed unaligned dcl 494 set ref 502* 503* 503 504* 504 505* 505 507* 507 511* 511 515* 515 517* 517 518* 518 523* 523 525* 525 526* 526 527* 527 529* 529 538* 539* 539 540* 540 541* 541 545* 545 546* 546 547* 547 548* 548 552* 552 556* 556 562* 562 566* 566 567* 567 574 valid_modes 000027 constant varying char(16) initial array dcl 816 ref 850 851 value based char(1) array packed unaligned dcl 103 in procedure "kermit_mode_mgr_" set ref 272* 282* 351 361 value parameter char packed unaligned dcl 810 in procedure "encode_mode" set ref 789 872 880 892 901 903 905 917 925 937 943 957 963 977 983 997 997 1003 1003 1018* 1070 1076 1078 1080 1082 1096 1104 1106 1118* 1142 1150 1162* 1183* value_sz 000136 automatic fixed bin(17,0) dcl 126 set ref 265* 269 271* 272 278 322* 348 350* 351 351 351 357 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Check_type internal static fixed bin(17,0) initial dcl 3-36 G_capabilities internal static fixed bin(17,0) initial dcl 3-93 G_check_type internal static fixed bin(17,0) initial dcl 3-86 G_eight_bit_char internal static fixed bin(17,0) initial dcl 3-83 G_parity internal static fixed bin(17,0) initial dcl 3-87 G_repeat_char internal static fixed bin(17,0) initial dcl 3-84 G_start_char internal static fixed bin(17,0) initial dcl 3-85 G_window internal static fixed bin(17,0) initial dcl 3-88 I_eol_char internal static fixed bin(17,0) initial dcl 3-75 I_max_lenx1 internal static fixed bin(17,0) initial dcl 3-89 I_max_lenx2 internal static fixed bin(17,0) initial dcl 3-90 I_maxl internal static fixed bin(17,0) initial dcl 3-71 I_n_pads internal static fixed bin(17,0) initial dcl 3-73 I_pad_char internal static fixed bin(17,0) initial dcl 3-74 I_quote_char internal static fixed bin(17,0) initial dcl 3-76 I_timeout internal static fixed bin(17,0) initial dcl 3-72 N_pads internal static fixed bin(17,0) initial dcl 3-29 O_eol_char internal static fixed bin(17,0) initial dcl 3-81 O_max_lenx1 internal static fixed bin(17,0) initial dcl 3-91 O_max_lenx2 internal static fixed bin(17,0) initial dcl 3-92 O_maxl internal static fixed bin(17,0) initial dcl 3-77 O_n_pads internal static fixed bin(17,0) initial dcl 3-79 O_pad_char internal static fixed bin(17,0) initial dcl 3-80 O_quote_char internal static fixed bin(17,0) initial dcl 3-82 O_timeout internal static fixed bin(17,0) initial dcl 3-78 Pad_char internal static fixed bin(17,0) initial dcl 3-30 Perm_defaults internal static structure level 1 dcl 3-48 Retrieve_all internal static fixed bin(17,0) initial array dcl 3-25 Store_all internal static fixed bin(17,0) initial array dcl 3-24 Temp_defaults internal static structure level 1 dcl 3-95 kermit_char_constants based structure level 1 packed packed unaligned dcl 2-31 kermit_comm_info based structure level 1 dcl 2-176 kermit_comm_info_version internal static char(8) initial packed unaligned dcl 2-206 kermit_comm_infop automatic pointer dcl 2-205 kermit_comm_mgr_$flush_input 000000 constant entry external dcl 1-15 kermit_comm_mgr_$reset_line_modes 000000 constant entry external dcl 1-20 kermit_comm_mgr_$set_line_modes 000000 constant entry external dcl 1-25 kermit_get_filenames_ 000000 constant entry external dcl 1-30 kermit_info_version internal static char(8) initial packed unaligned dcl 2-61 kermit_infop automatic pointer dcl 2-60 kermit_log_info based structure level 1 dcl 2-122 kermit_log_info_version internal static char(8) initial packed unaligned dcl 2-133 kermit_log_infop automatic pointer dcl 2-132 kermit_log_mgr_$close_log 000000 constant entry external dcl 1-37 kermit_log_mgr_$disable 000000 constant entry external dcl 1-42 kermit_log_mgr_$display_stats 000000 constant entry external dcl 1-46 kermit_log_mgr_$enable 000000 constant entry external dcl 1-51 kermit_log_mgr_$log_message 000000 constant entry external dcl 1-55 kermit_log_mgr_$open_log 000000 constant entry external dcl 1-60 kermit_log_mgr_$start 000000 constant entry external dcl 1-66 kermit_log_mgr_$stop 000000 constant entry external dcl 1-70 kermit_mode_mgr_$get 000000 constant entry external dcl 1-74 kermit_mode_mgr_$set 000000 constant entry external dcl 1-86 kermit_pad_$receive 000000 constant entry external dcl 1-97 kermit_pad_$send 000000 constant entry external dcl 1-108 kermit_perm_modes_version internal static char(8) initial packed unaligned dcl 2-84 kermit_perm_modesp automatic pointer dcl 2-82 kermit_receive_$receive_from_remote 000000 constant entry external dcl 1-118 kermit_send_$send_to_remote 000000 constant entry external dcl 1-128 kermit_server_ 000000 constant entry external dcl 1-138 kermit_stats_infop automatic pointer dcl 2-160 kermit_temp_modes_version internal static char(8) initial packed unaligned dcl 2-106 kermit_temp_modesp automatic pointer dcl 2-104 kermit_xfer_modes_$check_params 000000 constant entry external dcl 1-144 kermit_xfer_modes_$get_local_params 000000 constant entry external dcl 1-157 kermit_xfer_modes_$init 000000 constant entry external dcl 1-152 kermit_xfer_modes_$process_params 000000 constant entry external dcl 1-166 NAMES DECLARED BY EXPLICIT CONTEXT. DONE 005653 constant label dcl 1201 ref 885 910 930 950 970 990 1010 1089 1111 1135 1155 1178 1197 MODE 000001 constant label array(22) dcl 872 ref 865 encode_mode 004560 constant entry internal dcl 789 ref 224 get 000575 constant entry external dcl 159 kermit_mode_mgr_ 000563 constant entry external dcl 18 print_mode 002627 constant entry internal dcl 584 ref 179 183 retrieve 001147 constant entry external dcl 237 set 000715 constant entry external dcl 193 store 001334 constant entry external dcl 292 validate_modes 001713 constant entry internal dcl 385 ref 366 NAME DECLARED BY CONTEXT OR IMPLICATION. min builtin function ref 1052 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6334 6372 6146 6344 Length 6714 6146 36 306 166 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME kermit_mode_mgr_ 299 external procedure is an external procedure. on unit on line 330 67 on unit validate_modes internal procedure shares stack frame of external procedure kermit_mode_mgr_. print_mode internal procedure shares stack frame of external procedure kermit_mode_mgr_. encode_mode internal procedure shares stack frame of external procedure kermit_mode_mgr_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME kermit_mode_mgr_ 000100 argl kermit_mode_mgr_ 000102 argp kermit_mode_mgr_ 000104 checkpointed kermit_mode_mgr_ 000106 ckp kermit_mode_mgr_ 000110 dbp kermit_mode_mgr_ 000112 db_sz kermit_mode_mgr_ 000113 ec kermit_mode_mgr_ 000114 i kermit_mode_mgr_ 000115 item kermit_mode_mgr_ 000116 mnl kermit_mode_mgr_ 000120 mnp kermit_mode_mgr_ 000122 mode kermit_mode_mgr_ 000123 mode2 kermit_mode_mgr_ 000124 mvl kermit_mode_mgr_ 000126 mvp kermit_mode_mgr_ 000130 nargs kermit_mode_mgr_ 000131 select kermit_mode_mgr_ 000132 select2 kermit_mode_mgr_ 000136 value_sz kermit_mode_mgr_ 000162 valid validate_modes 000172 chr print_mode 000174 chrp print_mode 000176 found print_mode 000177 num print_mode 000200 num2 print_mode 000202 nump print_mode 000204 select print_mode 000206 string print_mode 000216 num encode_mode 000217 i encode_mode THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as r_le_a r_ge_a alloc_char_temp alloc_temp call_ext_out_desc call_ext_out return_mac bound_ck_signal mdfx1 enable_op shorten_stack ext_entry ext_entry_desc int_entry trunc_fx2 divide_fx1 alloc_storage op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_dec_check_ ioa_ ioa_$rsnnl kermit_mode_mgr_$retrieve kermit_mode_mgr_$store ssu_$abort_line ssu_$arg_count ssu_$arg_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$wrong_no_of_args kermit_et_$bad_mode_value kermit_et_$unknown_mode LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000562 159 000570 175 000605 179 000616 181 000641 182 000647 183 000665 184 000710 186 000712 193 000713 209 000725 211 000737 216 000760 220 001000 224 001020 225 001062 228 001114 230 001141 237 001142 254 001157 256 001163 257 001170 258 001172 260 001173 261 001200 264 001202 265 001203 269 001207 271 001220 272 001222 273 001262 278 001264 279 001276 280 001310 282 001320 283 001327 285 001331 292 001332 312 001344 314 001350 315 001355 316 001357 318 001360 319 001365 322 001367 323 001373 325 001374 326 001376 330 001377 331 001413 333 001420 335 001446 337 001454 341 001455 343 001463 344 001507 348 001512 350 001527 351 001531 352 001572 357 001574 358 001606 359 001620 361 001630 362 001637 366 001641 370 001654 375 001703 376 001705 378 001712 385 001713 496 001715 500 001716 502 001721 503 001735 504 001750 505 001762 507 002005 511 002045 515 002105 517 002126 518 002141 523 002167 525 002200 526 002211 527 002223 529 002236 536 002250 538 002253 539 002267 540 002302 541 002314 545 002337 546 002353 547 002366 548 002401 552 002424 556 002467 562 002533 566 002561 567 002574 574 002621 577 002626 584 002627 619 002640 620 002641 621 002643 625 002645 627 002660 628 002662 629 002664 630 002714 635 002734 637 002750 638 002752 639 002754 640 003004 645 003031 647 003045 648 003047 649 003051 650 003101 655 003126 657 003142 658 003144 659 003146 660 003176 665 003223 667 003243 668 003245 669 003247 670 003277 675 003317 677 003337 678 003341 679 003343 680 003373 686 003433 688 003453 689 003455 690 003457 691 003507 697 003540 699 003560 700 003562 701 003564 705 003614 706 003650 707 003666 712 003707 714 003727 715 003731 716 003733 720 003763 721 004017 722 004035 727 004056 729 004072 730 004074 731 004076 732 004126 738 004157 740 004177 741 004201 742 004203 743 004205 744 004207 745 004211 746 004241 748 004267 750 004270 751 004303 753 004331 759 004351 761 004371 762 004373 763 004375 764 004425 769 004445 771 004461 772 004463 773 004465 774 004515 779 004535 782 004557 789 004560 845 004576 846 004600 850 004601 851 004612 853 004626 857 004630 859 004633 860 004636 865 004637 872 004640 880 004647 884 004653 885 004655 892 004656 901 004667 903 004676 905 004705 909 004710 910 004712 917 004713 925 004722 929 004726 930 004730 937 004731 943 004742 945 004751 949 004754 950 004756 957 004757 963 004770 965 004777 969 005002 970 005004 977 005005 983 005016 985 005025 989 005030 990 005032 997 005033 1003 005051 1005 005065 1009 005070 1010 005072 1018 005073 1029 005114 1035 005127 1036 005131 1037 005163 1039 005166 1040 005202 1041 005206 1042 005232 1044 005233 1046 005240 1047 005247 1048 005251 1049 005253 1050 005255 1052 005257 1053 005265 1054 005270 1055 005300 1056 005303 1059 005336 1061 005366 1070 005367 1076 005400 1078 005407 1080 005416 1082 005425 1084 005434 1088 005437 1089 005441 1096 005442 1104 005453 1106 005462 1110 005465 1111 005467 1118 005470 1128 005511 1130 005524 1134 005527 1135 005531 1142 005532 1150 005541 1154 005545 1155 005547 1162 005550 1171 005571 1173 005604 1177 005607 1178 005611 1183 005612 1190 005633 1192 005645 1196 005650 1197 005652 1201 005653 1205 005705 1209 005735 ----------------------------------------------------------- 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