COMPILATION LISTING OF SEGMENT l6_tran_overseer_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1040.9 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /*****************************************************************************/ 7 /* */ 8 /* DESCRIPTION: */ 9 /* */ 10 /* This subroutine is the server for file transfer to or from the */ 11 /* Level 6 over an X.25 connection. It is implemented as a process */ 12 /* overseer so that the answering service can do all of the hard work of */ 13 /* making the connection. This server corresponds to the NASP, l6_tran_, */ 14 /* which does the Multics initiated side of the file transfer. */ 15 /* */ 16 /* */ 17 /* JOURNALIZATION: */ 18 /* */ 19 /* 1) Written 5/82 by R.J.C Kissel */ 20 /* 2) Modified 7/83 by R.J.C. Kissel to fix an error message sent to the L6*/ 21 /* 3) Modified 7/83 by R.J.C. Kissel to fix an error in terminating the */ 22 /* process. */ 23 /* */ 24 /*****************************************************************************/ 25 26 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 27 28 l6_tran_overseer_: 29 proc (P_pit_ptr, P_call_listener, P_with_command_line); 30 31 /* Parameters */ 32 33 dcl P_pit_ptr ptr parameter; 34 dcl P_call_listener bit (1) aligned parameter; 35 dcl P_with_command_line char (*) varying parameter; 36 37 /* Automatic */ 38 39 dcl P_error_message char (256) varying; /* Needed by ERROR, but never used. */ 40 dcl P_code fixed bin (35); /* Needed by ERROR, but never used. */ 41 42 dcl 1 auto_status_branch aligned like status_branch; 43 dcl 1 auto_transfer_input_args aligned like transfer_input_args; 44 dcl 1 auto_transfer_output_args aligned like transfer_output_args; 45 46 dcl based_area area (sys_info$max_seg_size) based (area_ptr); 47 dcl area_ptr ptr; 48 49 dcl code fixed bin (35); 50 51 dcl comm_buffer char (comm_buffer_len) based (comm_buffer_ptr); 52 dcl comm_buffer_len fixed bin (21); 53 dcl comm_buffer_ptr ptr defined (temp_seg_ptrs (1)); 54 55 dcl file_buffer char (file_buffer_len) based (file_buffer_ptr); 56 dcl file_buffer_len fixed bin (21); 57 dcl file_buffer_ptr ptr defined (temp_seg_ptrs (2)); 58 59 dcl i fixed bin; 60 dcl ignored_len fixed bin (21); /* Used in calls to ioa_$rsnnl. */ 61 dcl last_file bit (1); 62 63 dcl level_6_chars_read fixed bin (21); 64 dcl level_6_chars_to_write fixed bin (21); 65 dcl level_6_data_type fixed bin; 66 dcl level_6_dir char (168); 67 dcl level_6_entry char (32); 68 dcl level_6_file_type fixed bin; 69 dcl level_6_iocbp ptr; 70 dcl level_6_max_record_size fixed bin; 71 dcl level_6_pathname char (168); 72 73 dcl 1 logout_string aligned, /* information about logouts */ 74 2 version fixed bin, /* this is version 0 */ 75 2 hold bit (1) unaligned, /* don't hangup line */ 76 2 brief bit (1) unaligned, /* don't print logout message */ 77 2 pad bit (34) unaligned; /* must be zero */ 78 79 dcl multics_chars_read fixed bin (21); 80 dcl multics_chars_to_write fixed bin (21); 81 dcl multics_data_type fixed bin; 82 dcl multics_dir char (168); 83 dcl multics_entry char (32); 84 85 dcl multics_file_attach_desc char (256) varying; 86 dcl multics_file_block_size fixed bin (21); 87 dcl multics_file_exists bit (1); 88 dcl multics_file_iocbp ptr; 89 dcl multics_file_l6_type fixed bin; 90 dcl multics_file_type fixed bin; 91 dcl multics_file_open_mode fixed bin; 92 dcl multics_file_size fixed bin (34); 93 94 dcl multics_is_sender bit (1); 95 dcl multics_pathname char (168); 96 97 dcl saved_level_6_entry char (32); 98 dcl saved_multics_entry char (32); 99 dcl star_area_ptr ptr; 100 dcl star_entries_index fixed bin; 101 dcl star_names_generated bit (1); 102 dcl suffix char (32); 103 dcl temp_seg_ptrs (2) ptr; 104 dcl term_structure_ptr ptr; 105 106 dcl 1 info aligned like indx_info;/* Use the biggest structure. */ 107 108 /* Internal Constants */ 109 110 dcl REL_SECONDS bit (2) internal static options (constant) init ("11"b); 111 1 1 /*----------BEGIN l6_tran_constants.incl.pl1---------------------------------*/ 1 2 1 3 dcl SEND_TU_SIZE fixed bin (21) internal static options (constant) init (119); 1 4 dcl RECV_TU_SIZE fixed bin (21) internal static options (constant) init (1000); 1 5 1 6 dcl CR char (1) internal static options (constant) init (" "); 1 7 /* A carrige return. */ 1 8 dcl SP char (1) internal static options (constant) init (" "); 1 9 /* A space. */ 1 10 dcl HT char (1) internal static options (constant) init (" "); 1 11 /* A horizontal tab. */ 1 12 1 13 dcl ASCII fixed bin internal static options (constant) init (1); 1 14 dcl BINARY fixed bin internal static options (constant) init (2); 1 15 dcl BCD fixed bin internal static options (constant) init (3); 1 16 1 17 dcl CHASE fixed bin (1) internal static options (constant) init (1); 1 18 1 19 dcl UNSTRUCTURED_FILE_TYPE fixed bin internal static options (constant) init (1); 1 20 dcl SEQUENTIAL_FILE_TYPE fixed bin internal static options (constant) init (2); 1 21 dcl BLOCKED_FILE_TYPE fixed bin internal static options (constant) init (3); 1 22 dcl INDEXED_FILE_TYPE fixed bin internal static options (constant) init (4); 1 23 dcl VARIABLE_FILE_TYPE fixed bin internal static options (constant) init (5); 1 24 1 25 dcl L6_S_FILE_TYPE fixed bin internal static options (constant) init (1); 1 26 dcl L6_D_FILE_TYPE fixed bin internal static options (constant) init (2); 1 27 dcl L6_R_FILE_TYPE fixed bin internal static options (constant) init (3); 1 28 dcl L6_F_FILE_TYPE fixed bin internal static options (constant) init (4); 1 29 1 30 dcl L6_FILE_TYPE (4) char (1) internal static options (constant) init ("S", "D", "R", "F"); 1 31 dcl L6_DATA_TYPE (3) char (1) internal static options (constant) init ("A", "8", "B"); 1 32 1 33 dcl FILE_TYPE_TO_PNAME (5) char (12) internal static options (constant) 1 34 init ("unstructured", "sequential", "blocked", "indexed", "variable"); 1 35 1 36 dcl MULTICS_L6_FILE_SUFFIX (4) char (3) internal static options (constant) init ("", "l6d", "l6r", "l6f"); 1 37 1 38 dcl USAGE char (256) internal static options (constant) 1 39 init ( 1 40 "Usage: nr l6_ftf {}, where <*_file> is: {-nm} {-at
}" 1 41 ); 1 42 1 43 /*----------END l6_tran_constants.incl.pl1-----------------------------------*/ 112 113 114 /* Internal Static */ 115 116 dcl debug_flag bit (1) internal static init ("0"b); 117 118 /* External Constants */ 119 120 dcl error_table_$bad_file fixed bin (35) ext static; 121 dcl error_table_$badstar fixed bin (35) ext static; 122 dcl error_table_$dirseg fixed bin (35) ext static; 123 dcl error_table_$fatal_error fixed bin (35) ext static; 124 dcl error_table_$not_closed fixed bin (35) ext static; 125 dcl error_table_$not_detached fixed bin (35) ext static; 126 127 dcl sys_info$max_seg_size fixed bin (19) ext static; 128 129 /* External Entries */ 130 131 dcl add_char_offset_ entry (ptr, fixed bin (21)) returns (ptr) reducible; 132 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 133 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 134 dcl cu_$arg_list_ptr entry (ptr); 135 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 136 dcl expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 137 dcl get_equal_name_ entry (char (*), char (*), char (32), fixed bin (35)); 138 dcl get_user_free_area_ entry () returns (ptr); 139 dcl get_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 140 dcl hcs_$append_branch entry (char (*), char (*), fixed bin (5), fixed bin (35)); 141 dcl hcs_$star_ entry (char (*), char (*), fixed bin (2), ptr, fixed bin, ptr, ptr, fixed bin (35)); 142 dcl hcs_$status_ entry (char (*), char (*), fixed bin (1), ptr, ptr, fixed bin (35)); 143 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, char (*), fixed bin (21), bit (1) aligned, 144 bit (1) aligned); 145 dcl ioa_$rsnnl entry () options (variable); 146 dcl ioa_$rsnpnnl entry options (variable); 147 dcl l6_tran_util_$get_chars entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 148 dcl l6_tran_util_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 149 dcl l6_tran_receive_file_ entry (ptr, ptr, char (*) var, fixed bin (35)); 150 dcl l6_tran_send_file_ entry (ptr, ptr, char (*) var, fixed bin (35)); 151 dcl match_star_name_ entry (char (*), char (*), fixed bin (35)); 152 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 153 dcl release_temp_segments_ entry (char (*), (*) ptr, fixed bin (35)); 154 dcl suffixed_name_$make entry (char (*), char (*), char (32), fixed bin (35)); 155 dcl terminate_process_ entry (char (*), ptr); 156 dcl timer_manager_$sleep entry (fixed bin (71), bit (2)); 157 dcl vfile_status_ entry (char (*), char (*), ptr, fixed bin (35)); 158 159 /* Builtin Functions and Conditions */ 160 161 dcl addr builtin; 162 dcl before builtin; 163 dcl hbound builtin; 164 dcl index builtin; 165 dcl lbound builtin; 166 dcl length builtin; 167 dcl min builtin; 168 dcl null builtin; 169 dcl pointer builtin; 170 dcl reverse builtin; 171 dcl rtrim builtin; 172 dcl string builtin; 173 dcl substr builtin; 174 dcl sum builtin; 175 176 dcl any_other condition; 177 dcl finish condition; 178 179 /* Include Files */ 180 2 1 /*----------BEGIN l6_tran_transfer_args.incl.pl1-----------------------------*/ 2 2 2 3 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 2 4 2 5 /* Written 9/82 by R.J.C. Kissel */ 2 6 2 7 /* Input arguments for l6_tran_send/receive_file_. */ 2 8 2 9 dcl tiap ptr; 2 10 dcl transfer_input_args_version_1 char (8) unaligned internal static options (constant) init ("version1"); 2 11 2 12 dcl 1 transfer_input_args aligned based (tiap), 2 13 2 version char (8) unaligned, 2 14 2 comm_iocbp ptr, 2 15 2 comm_buffer_ptr ptr, 2 16 2 comm_buffer_len fixed bin (21), 2 17 2 file_iocbp ptr, 2 18 2 file_buffer_ptr ptr, 2 19 2 file_buffer_len fixed bin (21), 2 20 2 file_type fixed bin, 2 21 2 data_type fixed bin, 2 22 2 tu_size fixed bin (21), 2 23 2 flags aligned, 2 24 3 last_file bit (1) unaligned, /* Input for sending, not used for receiving. */ 2 25 3 prompt_read bit (1) unaligned, /* Input for sending, not used for receiving. */ 2 26 3 pad bit (34) unaligned; 2 27 2 28 /* Output arguments for l6_tran_send/receive_file_. */ 2 29 2 30 dcl toap ptr; 2 31 dcl transfer_output_args_version_1 char (8) unaligned internal static options (constant) init ("version1"); 2 32 2 33 dcl 1 transfer_output_args aligned based (toap), 2 34 2 version char (8) unaligned, 2 35 2 record_number fixed bin, 2 36 2 total_bytes fixed bin (35), 2 37 2 flags aligned, 2 38 3 last_file bit (1) unaligned, /* Output from receive, not used by send. */ 2 39 3 pad bit (35) unaligned; 2 40 2 41 /*----------END l6_tran_transfer_args.incl.pl1-------------------------------*/ 181 182 3 1 /* BEGIN INCLUDE FILE . . . star_structures.incl.pl1 */ 3 2 3 3 /* This include file contains structures for the hcs_$star_, 3 4* hcs_$star_list_ and hcs_$star_dir_list_ entry points. 3 5* 3 6* Written 23 October 1978 by Monte Davidoff. 3 7* Modified January 1979 by Michael R. Jordan to use unsigned and different pointers for different structures. 3 8* Modified June 1981 by C. Hornig to count link pathnames more efficiently. 3 9**/ 3 10 3 11 /* automatic */ 3 12 3 13 declare star_branch_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching branch count */ 3 14 declare star_entry_count fixed binary; /* hcs_$star_: number of matching entries */ 3 15 declare star_entry_ptr pointer; /* hcs_$star_: pointer to array of entry information */ 3 16 declare star_list_branch_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to array of info */ 3 17 declare star_link_count fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: matching link count */ 3 18 declare star_linkx fixed binary; /* hcs_$star_list_, hcs_$star_dir_list_: index into star_links */ 3 19 declare star_names_ptr pointer; /* hcs_$star_: pointer to array of entry names */ 3 20 declare star_list_names_ptr pointer; /* hcs_$star_list_, hcs_$star_dir_list_: ptr to entry names */ 3 21 declare star_select_sw fixed binary (3); /* hcs_$star_list_, hcs_$star_dir_list_: what info to return */ 3 22 3 23 /* based */ 3 24 3 25 /* hcs_$star_ entry structure */ 3 26 3 27 declare 1 star_entries (star_entry_count) aligned based (star_entry_ptr), 3 28 2 type fixed binary (2) unsigned unaligned, 3 29 /* storage system type */ 3 30 2 nnames fixed binary (16) unsigned unaligned, 3 31 /* number of names of entry that match star_name */ 3 32 2 nindex fixed binary (18) unsigned unaligned; 3 33 /* index of first name in star_names */ 3 34 3 35 /* hcs_$star_ name structure */ 3 36 3 37 declare star_names (sum (star_entries (*).nnames)) char (32) based (star_names_ptr); 3 38 3 39 /* hcs_$star_list_ branch structure */ 3 40 3 41 declare 1 star_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 42 2 type fixed binary (2) unsigned unaligned, 3 43 /* storage system type */ 3 44 2 nnames fixed binary (16) unsigned unaligned, 3 45 /* number of names of entry that match star_name */ 3 46 2 nindex fixed binary (18) unsigned unaligned, 3 47 /* index of first name in star_list_names */ 3 48 2 dtcm bit (36) unaligned, /* date-time contents of branch were last modified */ 3 49 2 dtu bit (36) unaligned, /* date-time branch was last used */ 3 50 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 51 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 52 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 53 2 pad bit (7) unaligned, 3 54 2 records fixed binary (18) unsigned unaligned; 3 55 /* records used by branch */ 3 56 3 57 /* hcs_$star_dir_list_ branch structure */ 3 58 3 59 declare 1 star_dir_list_branch (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 60 2 type fixed binary (2) unsigned unaligned, 3 61 /* storage system type */ 3 62 2 nnames fixed binary (16) unsigned unaligned, 3 63 /* number of names of entry that match star_name */ 3 64 2 nindex fixed binary (18) unsigned unaligned, 3 65 /* index of first name in star_list_names */ 3 66 2 dtem bit (36) unaligned, /* date-time directory entry of branch was last modified */ 3 67 2 pad bit (36) unaligned, 3 68 2 mode bit (5) unaligned, /* user's access mode to the branch */ 3 69 2 raw_mode bit (5) unaligned, /* user's ACL access mode */ 3 70 2 master_dir bit (1) unaligned, /* is branch a master directory */ 3 71 2 bit_count fixed binary (24) unaligned; 3 72 /* bit count of the branch */ 3 73 3 74 /* hcs_$star_list_ and hcs_$star_dir_list_ link structure */ 3 75 3 76 declare 1 star_links (star_branch_count + star_link_count) aligned based (star_list_branch_ptr), 3 77 2 type fixed binary (2) unsigned unaligned, 3 78 /* storage system type */ 3 79 2 nnames fixed binary (16) unsigned unaligned, 3 80 /* number of names of entry that match star_name */ 3 81 2 nindex fixed binary (18) unsigned unaligned, 3 82 /* index of first name in star_list_names */ 3 83 2 dtem bit (36) unaligned, /* date-time link was last modified */ 3 84 2 dtd bit (36) unaligned, /* date-time the link was last dumped */ 3 85 2 pathname_len fixed binary (18) unsigned unaligned, 3 86 /* length of the pathname of the link */ 3 87 2 pathname_index fixed binary (18) unsigned unaligned; 3 88 /* index of start of pathname in star_list_names */ 3 89 3 90 /* hcs_$star_list_ and hcs_$star_dir_list_ name array */ 3 91 3 92 declare star_list_names char (32) based (star_list_names_ptr) 3 93 dimension (star_links (star_branch_count + star_link_count).nindex 3 94 + star_links (star_branch_count + star_link_count).nnames 3 95 + divide (star_links (star_branch_count + star_link_count).pathname_len + 31, 32, 17, 0) 3 96 * binary ( 3 97 (star_links (star_branch_count + star_link_count).type = star_LINK) 3 98 & (star_select_sw >= star_LINKS_ONLY_WITH_LINK_PATHS), 1)); 3 99 3 100 /* hcs_$star_list_ and hcs_$star_dir_list_ link pathname */ 3 101 3 102 declare star_link_pathname char (star_links (star_linkx).pathname_len) 3 103 based (addr (star_list_names (star_links (star_linkx).pathname_index))); 3 104 3 105 /* internal static */ 3 106 3 107 /* star_select_sw values */ 3 108 3 109 declare star_LINKS_ONLY fixed binary (2) internal static options (constant) initial (1); 3 110 declare star_BRANCHES_ONLY fixed binary (2) internal static options (constant) initial (2); 3 111 declare star_ALL_ENTRIES fixed binary (2) internal static options (constant) initial (3); 3 112 declare star_LINKS_ONLY_WITH_LINK_PATHS 3 113 fixed binary (3) internal static options (constant) initial (5); 3 114 declare star_ALL_ENTRIES_WITH_LINK_PATHS 3 115 fixed binary (3) internal static options (constant) initial (7); 3 116 3 117 /* storage system types */ 3 118 3 119 declare star_LINK fixed binary (2) unsigned internal static options (constant) initial (0); 3 120 declare star_SEGMENT fixed binary (2) unsigned internal static options (constant) initial (1); 3 121 declare star_DIRECTORY fixed binary (2) unsigned internal static options (constant) initial (2); 3 122 3 123 /* END INCLUDE FILE . . . star_structures.incl.pl1 */ 183 184 185 /* vfs_info.incl.pl1 */ 186 4 1 dcl 1 uns_info based (addr (info)), /* info structure for unstructured files */ 4 2 2 info_version fixed, /* (Input) must =1--only one version 4 3* currently supported */ 4 4 2 type fixed, /* =1 */ 4 5 2 end_pos fixed (34), /* length (bytes) not including header */ 4 6 2 flags aligned, 4 7 3 pad1 bit (2) unal, /* used for lock_status in other files */ 4 8 3 header_present bit (1) unal, /* on if file code is set */ 4 9 3 pad2 bit (33) unal, 4 10 2 header_id fixed (35); /* meaning is user defined */ 4 11 dcl 1 seq_info based (addr (info)), /* info structure for sequential files */ 4 12 2 info_version fixed, 4 13 2 type fixed, /* =2 */ 4 14 2 end_pos fixed (34), /* record count */ 4 15 2 flags aligned, 4 16 3 lock_status bit (2) unal, /* 0,1,2, or 3 to indicate not locked, 4 17* locked by (other,this,dead) process */ 4 18 3 pad bit (34) unal, 4 19 2 version fixed, /* end_pos valid only in latest version */ 4 20 2 action fixed; /* indicates if adjustment or rollback is needed */ 4 21 dcl 1 blk_info based (addr (info)), /* info structure for blocked files */ 4 22 2 info_version fixed, 4 23 2 type fixed, /* =3 */ 4 24 2 end_pos fixed (34), /* record count */ 4 25 2 flags aligned, 4 26 3 lock_status bit (2) unal, /* same as seq_info.= */ 4 27 3 pad bit (34) unal, 4 28 2 version fixed, /* only one currently supported */ 4 29 2 action fixed, /* non-zero if truncation in progress, else =0 */ 4 30 2 max_rec_len fixed (21), /* bytes--determines characteristiWc block size */ 4 31 2 pad fixed, /* not used at this time */ 4 32 2 time_last_modified fixed (71); /* time stamp for synchronization */ 4 33 dcl 1 indx_info based (addr (info)), /* info structure for indexed files */ 4 34 2 info_version fixed, 4 35 2 type fixed, /* =4 */ 4 36 2 records fixed (34), /* record count */ 4 37 2 flags aligned, 4 38 3 lock_status bit (2) unal, /* same as seq_info.= */ 4 39 3 pad bit (34) unal, 4 40 2 version_info aligned, 4 41 3 file_version fixed (17) unal, /* headers differ */ 4 42 3 program_version fixed (17) unal, /* may indicate bugs */ 4 43 2 action fixed, /* non-zero code indicates update in progress */ 4 44 2 non_null_recs fixed (34), /* count of allocated recs */ 4 45 2 record_bytes fixed (34), /* total record length */ 4 46 2 free_blocks fixed, /* available record blocks */ 4 47 2 index_height fixed, /* height of index tree (0 if empty) */ 4 48 2 nodes fixed, /* nodes being used in the index */ 4 49 2 key_bytes fixed (34), /* total length of keys */ 4 50 2 change_count fixed (35), /* bumped on each file modification */ 4 51 2 num_keys fixed (34), /* number of index entries */ 4 52 2 dup_keys fixed (34), /* 0 if all keys are distinct, else 1 for each dup */ 4 53 2 dup_key_bytes fixed (34), /* total bytes of duplicate keys */ 4 54 2 word (1) fixed; /* reserved for future use */ 4 55 dcl 1 vbl_info based (addr (info)), /* info structure for variable files */ 4 56 2 info_version fixed, 4 57 2 type fixed, /* =5 */ 4 58 2 end_pos fixed (34), /* logical end of file--not necessarily allocation count */ 4 59 2 flags aligned, 4 60 3 lock_status bit (2) unal, /* same as seq_info.= */ 4 61 3 pad bit (34) unal, 4 62 2 version fixed, /* only one currently supported */ 4 63 2 action fixed, /* same as in indexed files */ 4 64 2 first_nz fixed (34), /* position (numeric key) for first allocated record */ 4 65 2 last_nz fixed (34), /* last allocated record position */ 4 66 2 change_count fixed (35); /* used for synchronization */ 4 67 dcl vfs_version_1 static internal fixed init (1); 4 68 /* should be used in 4 69* assignments to info_version */ 187 188 5 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 5 2* 5 3* Values for the "access mode" argument so often used in hardcore 5 4* James R. Davis 26 Jan 81 MCR 4844 5 5* Added constants for SM access 4/28/82 Jay Pattin 5 6* Added text strings 03/19/85 Chris Jones 5 7**/ 5 8 5 9 5 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 5 11 dcl ( 5 12 N_ACCESS init ("000"b), 5 13 R_ACCESS init ("100"b), 5 14 E_ACCESS init ("010"b), 5 15 W_ACCESS init ("001"b), 5 16 RE_ACCESS init ("110"b), 5 17 REW_ACCESS init ("111"b), 5 18 RW_ACCESS init ("101"b), 5 19 S_ACCESS init ("100"b), 5 20 M_ACCESS init ("010"b), 5 21 A_ACCESS init ("001"b), 5 22 SA_ACCESS init ("101"b), 5 23 SM_ACCESS init ("110"b), 5 24 SMA_ACCESS init ("111"b) 5 25 ) bit (3) internal static options (constant); 5 26 5 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 5 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 5 29 5 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 5 31 static options (constant); 5 32 5 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 5 34 static options (constant); 5 35 5 36 dcl ( 5 37 N_ACCESS_BIN init (00000b), 5 38 R_ACCESS_BIN init (01000b), 5 39 E_ACCESS_BIN init (00100b), 5 40 W_ACCESS_BIN init (00010b), 5 41 RW_ACCESS_BIN init (01010b), 5 42 RE_ACCESS_BIN init (01100b), 5 43 REW_ACCESS_BIN init (01110b), 5 44 S_ACCESS_BIN init (01000b), 5 45 M_ACCESS_BIN init (00010b), 5 46 A_ACCESS_BIN init (00001b), 5 47 SA_ACCESS_BIN init (01001b), 5 48 SM_ACCESS_BIN init (01010b), 5 49 SMA_ACCESS_BIN init (01011b) 5 50 ) fixed bin (5) internal static options (constant); 5 51 5 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 189 190 6 1 /* --------------- BEGIN include file status_structures.incl.pl1 --------------- */ 6 2 6 3 /* Revised from existing include files 09/26/78 by C. D. Tavares */ 6 4 6 5 /* This include file contains branch and link structures returned by 6 6* hcs_$status_ and hcs_$status_long. */ 6 7 6 8 dcl 1 status_branch aligned based (status_ptr), 6 9 2 short aligned, 6 10 3 type fixed bin (2) unaligned unsigned, /* seg, dir, or link */ 6 11 3 nnames fixed bin (16) unaligned unsigned, /* number of names */ 6 12 3 names_relp bit (18) unaligned, /* see entry_names dcl */ 6 13 3 dtcm bit (36) unaligned, /* date/time contents last modified */ 6 14 3 dtu bit (36) unaligned, /* date/time last used */ 6 15 3 mode bit (5) unaligned, /* caller's effective access */ 6 16 3 raw_mode bit (5) unaligned, /* caller's raw "rew" modes */ 6 17 3 pad1 bit (8) unaligned, 6 18 3 records_used fixed bin (18) unaligned unsigned, /* number of NONZERO pages used */ 6 19 6 20 /* Limit of information returned by hcs_$status_ */ 6 21 6 22 2 long aligned, 6 23 3 dtd bit (36) unaligned, /* date/time last dumped */ 6 24 3 dtem bit (36) unaligned, /* date/time branch last modified */ 6 25 3 lvid bit (36) unaligned, /* logical volume ID */ 6 26 3 current_length fixed bin (12) unaligned unsigned, /* number of last page used */ 6 27 3 bit_count fixed bin (24) unaligned unsigned, /* reported length in bits */ 6 28 3 pad2 bit (8) unaligned, 6 29 3 copy_switch bit (1) unaligned, /* copy switch */ 6 30 3 tpd_switch bit (1) unaligned, /* transparent to paging device switch */ 6 31 3 mdir_switch bit (1) unaligned, /* is a master dir */ 6 32 3 damaged_switch bit (1) unaligned, /* salvager warned of possible damage */ 6 33 3 synchronized_switch bit (1) unaligned, /* DM synchronized file */ 6 34 3 pad3 bit (5) unaligned, 6 35 3 ring_brackets (0:2) fixed bin (6) unaligned unsigned, 6 36 3 uid bit (36) unaligned; /* unique ID */ 6 37 6 38 dcl 1 status_link aligned based (status_ptr), 6 39 2 type fixed bin (2) unaligned unsigned, /* as above */ 6 40 2 nnames fixed bin (16) unaligned unsigned, 6 41 2 names_relp bit (18) unaligned, 6 42 2 dtem bit (36) unaligned, 6 43 2 dtd bit (36) unaligned, 6 44 2 pathname_length fixed bin (17) unaligned, /* see pathname */ 6 45 2 pathname_relp bit (18) unaligned; /* see pathname */ 6 46 6 47 dcl status_entry_names (status_branch.nnames) character (32) aligned 6 48 based (pointer (status_area_ptr, status_branch.names_relp)), 6 49 /* array of names returned */ 6 50 status_pathname character (status_link.pathname_length) aligned 6 51 based (pointer (status_area_ptr, status_link.pathname_relp)), 6 52 /* link target path */ 6 53 status_area_ptr pointer, 6 54 status_ptr pointer; 6 55 6 56 dcl (Link initial (0), 6 57 Segment initial (1), 6 58 Directory initial (2)) fixed bin internal static options (constant); 6 59 /* values for type fields declared above */ 6 60 6 61 /* ---------------- END include file status_structures.incl.pl1 ---------------- */ 191 192 7 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 7 2 7 3 /* Written 05/04/78 by C. D. Tavares */ 7 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 7 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 7 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 7 7 7 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 7 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 7 10 iox_$close entry (pointer, fixed bin (35)), 7 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 7 12 iox_$delete_record entry (pointer, fixed bin (35)), 7 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 7 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 7 15 iox_$err_not_attached entry options (variable), 7 16 iox_$err_not_closed entry options (variable), 7 17 iox_$err_no_operation entry options (variable), 7 18 iox_$err_not_open entry options (variable), 7 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 7 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 7 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 7 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 7 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 7 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 7 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 7 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 7 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 7 28 iox_$propagate entry (pointer), 7 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 7 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 7 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 7 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 7 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 7 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 7 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 7 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 7 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 7 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 7 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 7 40 7 41 dcl (iox_$user_output, 7 42 iox_$user_input, 7 43 iox_$user_io, 7 44 iox_$error_output) external static pointer; 7 45 7 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 193 194 8 1 /* Begin include file ..... iox_modes.incl.pl1 */ 8 2 8 3 /* Written by C. D. Tavares, 03/17/75 */ 8 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 8 5 8 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 8 7 ("stream_input", "stream_output", "stream_input_output", 8 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 8 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 8 10 "direct_input", "direct_output", "direct_update"); 8 11 8 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 8 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 8 14 8 15 dcl (Stream_input initial (1), 8 16 Stream_output initial (2), 8 17 Stream_input_output initial (3), 8 18 Sequential_input initial (4), 8 19 Sequential_output initial (5), 8 20 Sequential_input_output initial (6), 8 21 Sequential_update initial (7), 8 22 Keyed_sequential_input initial (8), 8 23 Keyed_sequential_output initial (9), 8 24 Keyed_sequential_update initial (10), 8 25 Direct_input initial (11), 8 26 Direct_output initial (12), 8 27 Direct_update initial (13)) fixed bin int static options (constant); 8 28 8 29 /* End include file ..... iox_modes.incl.pl1 */ 195 196 9 1 /* BEGIN INCLUDE FILE ... pit.incl.pl1 */ 9 2 9 3 /****^ ******************************************** 9 4* * * 9 5* * Copyright, (C) Honeywell Bull Inc., 1988 * 9 6* * * 9 7* ******************************************** */ 9 8 9 9 /* Requires user_attributes.incl.pl1 */ 9 10 /* Declaration of the Process Inititalization Table (PIT) */ 9 11 9 12 /****^ HISTORY COMMENTS: 9 13* 1) change(86-03-01,Gilcrease), approve(86-03-27,MCR7370), 9 14* audit(86-06-25,Lippard), install(86-06-30,MR12.0-1082): 9 15* First comment for hcom. Modified 750430 by PG to add terminal_access_class 9 16* Modified 6/20/77 by J. Stern to add term_type_name Modified Feb 1980 by M. 9 17* B. Armstrong to implement multiple rate structures. (UNCA) Modified by R. 9 18* McDonald May 1980 to include page charges, replaces cpu in iod (UNCA) 9 19* Modified by Benson I. Margulies November 1981 do declare pit_$, pit_ptr, 9 20* and unaligned character strings. Modified by E. N. Kittlitz January 1982 9 21* for user_attributes.incl.pl1 changes Modified by E. N. Kittlitz October 9 22* 1982 for request_id. Modified by BIM 1984-09-12 for auth range. The max 9 23* copies the pds, but this is the only home of the min. 9 24* 2) change(86-03-01,Gilcrease), approve(86-03-27,MCR7370), 9 25* audit(86-06-25,Lippard), install(86-06-30,MR12.0-1082): 9 26* Add the truncate_absout and restarted bits for the 9 27* -truncate .absout SCP 6297, version 3. 9 28* 3) change(86-12-11,GDixon), approve(87-07-16,MCR7741), 9 29* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 30* Changed structure under pit.abs_attributes to use like structure in 9 31* abs_attributes.incl.pl1. This allows the same attributes to be used 9 32* in abs_message_format.incl.pl1 and user_table_entry.incl.pl1 as well as 9 33* this include file. 9 34* 4) change(88-06-03,Parisek), approve(88-06-10,MCR7920), 9 35* audit(88-06-23,Hunter), install(87-07-05,MR12.2-1053): 9 36* Remove "pitmsg" in END comment string. pitmsg.incl.pl1 is no longer a 9 37* name of pit.incl.pl1. 9 38* 5) change(88-07-11,Parisek), approve(88-07-11,MCR7849), 9 39* audit(88-07-03,Lippard), install(88-07-13,MR12.2-1047): 9 40* Removed the ringpad element and added the min_ring & max_ring elements so 9 41* users may access their lowest and/or highest possible login ring value. 9 42* SCP6367. 9 43* END HISTORY COMMENTS */ 9 44 9 45 9 46 /* format: style4 */ 9 47 declare pit_$ bit (36) aligned external static; 9 48 declare pit_ptr pointer; 9 49 9 50 dcl 1 pit aligned based (pit_ptr), 9 51 2 version fixed bin, /* indicates which version of the pit */ 9 52 2 process_type fixed bin, /* initializer, interactive, or absentee process */ 9 53 2 login_responder char (64) unal, /* path name of login responder */ 9 54 9 55 /* All of these are going to be word aligned whether or not they are declared aligned, 9 56* and unaligning them cleans up code in many places */ 9 57 9 58 2 homedir char (64) unal, /* path name of home directory */ 9 59 2 project char (28) unal, /* name of this process' project affiliation */ 9 60 2 account char (32) unal, /* name of account to which this process is charged */ 9 61 2 n_processes fixed bin, /* number of previous processes for this session */ 9 62 2 login_time fixed bin (71), /* clock time at login */ 9 63 2 proc_creation_time fixed bin (71), /* clock time at creation of this process */ 9 64 2 old_proc_cpu fixed bin (71), /* cpu time used by previous processes in this session */ 9 65 2 user_weight fixed bin, /* weight of this process */ 9 66 2 anonymous fixed bin, /* 1 if anonymous user */ 9 67 2 login_name char (28) unal, /* name of user given at login */ 9 68 2 logout_pid bit (36), /* process id of answering service */ 9 69 2 logout_channel fixed bin (71), /* channel for signalling logouts to answering service */ 9 70 2 group char (8) unal, /* party group */ 9 71 2 min_ring fixed bin, /* min ring */ 9 72 2 max_ring fixed bin, /* max ring */ 9 73 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 9 74 2 whox fixed bin, /* this process's index in whotab (or 0) */ 9 75 2 outer_module char (32) unaligned, 9 76 2 pad (2) fixed bin, 9 77 2 dont_call_init_admin bit (1) aligned, /* Call process_overseer_ directly */ 9 78 2 terminal_access_class bit (72) aligned, /* access class of user's terminal */ 9 79 2 dollar_charge float bin, /* Month-to-date expenditure */ 9 80 2 dollar_limit float bin, /* Limit stop on usage */ 9 81 2 shift_limit (0:7) float bin, /* Stops on each shift's usage */ 9 82 2 logins fixed bin, /* Number of logins this month */ 9 83 2 crashes fixed bin, /* Number of sessions crashed */ 9 84 2 interactive (0:7), /* interactive usage by shift */ 9 85 3 charge float bin, /* Total charge */ 9 86 3 xxx fixed bin, 9 87 3 cpu fixed bin (71), /* CPU usage in microseconds */ 9 88 3 core fixed bin (71), /* Memory usage in page-microseconds */ 9 89 3 connect fixed bin (71), /* Connect time in microseconds */ 9 90 3 io_ops fixed bin (71), /* Terminal I/O operations */ 9 91 2 absentee (4), /* Absentee usage by queue */ 9 92 3 charge float bin, /* Total absentee charge */ 9 93 3 jobs fixed bin, /* Number of jobs */ 9 94 3 cpu fixed bin (71), /* CPU usage in microseconds */ 9 95 3 memory fixed bin (71), /* Memory usage in mu */ 9 96 2 iod (4), /* IO Daemon usage, by queue */ 9 97 3 charge float bin, /* Total charge */ 9 98 3 pieces fixed bin, /* Number of requests */ 9 99 3 pad fixed bin (35), 9 100 3 pages fixed bin (35), /* number of pages output */ 9 101 3 lines fixed bin (71), /* Record count */ 9 102 2 devices (16) float bin, /* Usage of attached devices */ 9 103 2 time_last_reset fixed bin (71), /* time last updated the PDT */ 9 104 2 absolute_limit float bin, /* Limit, not reset monthly */ 9 105 2 absolute_spent float bin, /* Spending against this */ 9 106 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 9 107 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 9 108 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0= default rates) */ 9 109 2 pad1a fixed bin (27) unsigned unaligned, /* remainder of word */ 9 110 2 request_id fixed bin (71), /* absentee request id */ 9 111 2 authorization_range (2) bit (72) aligned, 9 112 2 pad1 (73) fixed bin, /* extra space */ 9 113 2 charge_type fixed bin, /* device charge type of console */ 9 114 2 term_type_name char (32) unal, /* terminal type name */ 9 115 2 line_type fixed bin, /* line type of user's console */ 9 116 2 tty_type fixed bin, /* old terminal type (obsolete, kept for compatibility) */ 9 117 2 service_type fixed bin, /* type of service console is performing */ 9 118 2 tty_answerback char (4) unaligned, /* original answerback of user's console */ 9 119 2 old_tty char (6), /* (obsolete) attachment name of user's console */ 9 120 2 standby fixed bin, /* 1 if standby user */ 9 121 2 login_line char (120) unal, /* line typed at login */ 9 122 2 cant_bump_until fixed bin (71), /* cannot be preempted until this time (0 for abs) */ 9 123 2 input_seg char (168) unal, /* path name of absentee input file */ 9 124 2 output_seg char (168) unal, /* path name of absentee output file */ 9 125 2 max_cpu_time fixed bin, /* max number of seconds allowed to this absentee proc */ 9 126 2 abs_queue fixed bin, /* absentee queue if absentee, else -1 */ 9 127 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 9 128 2 arg_info_ptr fixed bin (18) unsigned, /* Relative pointer to information on absentee args. */ 9 129 2 old_proc_core fixed bin (71), /* Memory usage by previous processes in this session */ 9 130 2 old_proc_io_ops fixed bin (71), /* I/O operations from previous processes in this session */ 9 131 2 tty char (32) unaligned, /* Attachment name of users channel */ 9 132 2 start_arg_info fixed bin; /* Put absentee args information here. */ 9 133 9 134 9 135 /* Structure to contain information on absentee arguments */ 9 136 dcl 1 arg_info aligned based, 9 137 2 arg_count fixed bin, /* Number of arguments for replacement in absentee segment */ 9 138 2 ln_args fixed bin, /* Length of string containing arguments. */ 9 139 2 arg_lengths (25 refer (arg_info.arg_count)) fixed bin, /* Array of argument lengths */ 9 140 2 args char (128 refer (arg_info.ln_args)) unal; 9 141 /* Args used for replacement in absentee control segment. */ 9 142 9 143 declare PIT_version_3 fixed bin int static options (constant) init (3); 9 144 9 145 /* END INCLUDE FILE ... pit.incl.pl1 */ 197 198 10 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 10 2 10 3 10 4 /****^ HISTORY COMMENTS: 10 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 10 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 10 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 10 8* attribute switches. 10 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 10 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 10 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 10 12* be deleted. 10 13* B) Add constants identifying attributes that can be changed by user at 10 14* login, etc. 10 15* END HISTORY COMMENTS */ 10 16 10 17 10 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 10 19 10 20 /* format: style4 */ 10 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 10 22 (2 administrator bit (1), /* 1 system administrator privileges */ 10 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 10 24 2 nobump bit (1), /* 2 user cannot be bumped */ 10 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 10 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 10 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 10 28* . of same project (distinct from "nobump") */ 10 29 2 nolist bit (1), /* 7 don't list user on "who" */ 10 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 10 31 2 multip bit (1), /* 9 user may have several processes */ 10 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 10 33 2 brief bit (1), /* 11 no login or logout message */ 10 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 10 35 2 vhomedir bit (1), /* 13 user may change homedir */ 10 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 10 37 2 sb_ok bit (1), /* 15 user may be standby */ 10 38 2 pm_ok bit (1), /* 16 user may be primary */ 10 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 10 40 2 daemon bit (1), /* 18 user may login as daemon */ 10 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 10 42 2 no_warning bit (1), /* 20 no warning message */ 10 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 10 44* . in PDT: this user has an individual load control group */ 10 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 10 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 10 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 10 48 2 pad bit (12)) unaligned; 10 49 10 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 10 51 ("none", /* 0 */ 10 52 "administrator", /* 1 */ 10 53 "primary_line", /* 2 */ 10 54 "nobump", /* 3 */ 10 55 "guaranteed_login", /* 4 */ 10 56 "anonymous", /* 5 */ 10 57 "nopreempt", /* 6 */ 10 58 "nolist", /* 7 */ 10 59 "dialok", /* 8 */ 10 60 "multip", /* 9 */ 10 61 "bumping", /* 10 */ 10 62 "brief", /* 11 */ 10 63 "vinitproc", /* 12 */ 10 64 "vhomedir", /* 13 */ 10 65 "nostartup", /* 14 */ 10 66 "no_secondary", /* 15 */ 10 67 "no_prime", /* 16 */ 10 68 "no_eo", /* 17 */ 10 69 "daemon", /* 18 */ 10 70 "", /* 19 vdim OBSOLETE */ 10 71 "no_warning", /* 20 */ 10 72 "igroup", /* 21 */ 10 73 "save_pdir", /* 22 */ 10 74 "disconnect_ok", /* 23 */ 10 75 "save_on_disconnect"); /* 24 */ 10 76 10 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 10 78 ("null", /* 0 */ 10 79 "admin", /* 1 */ 10 80 "", "", /* 2 - 3 */ 10 81 "guar", /* 4 */ 10 82 "anon", /* 5 */ 10 83 "", "", /* 6 - 7 */ 10 84 "dial", /* 8 */ 10 85 "multi_login", /* 9 */ 10 86 "preempting", /* 10 */ 10 87 "", /* 11 */ 10 88 "v_process_overseer", /* 12 */ 10 89 "v_home_dir", /* 13 */ 10 90 "no_start_up", /* 14 */ 10 91 "no_sec", /* 15 */ 10 92 "no_primary", /* 16 */ 10 93 "no_edit_only", /* 17 */ 10 94 "op_login", /* 18 */ 10 95 "", /* 19 */ 10 96 "nowarn", /* 20 */ 10 97 "", "", "", /* 21 - 23 */ 10 98 "save"); /* 24 */ 10 99 10 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 10 101 options(constant) init("000000000010000000010000000000000000"b); 10 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 10 103 10 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 10 105 options(constant) init("000000000010000000010000000000000000"b); 10 106 /* PDT value for (brief, no_warning) is default */ 10 107 10 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 10 109 options(constant) init("000100000110010000010000000000000000"b); 10 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 10 111 11 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 11 2 11 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 11 4 /* */ 11 5 /* This include file describes the attributes of an absentee job. It is */ 11 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 11 7 /* and PIT.incl.pl1. */ 11 8 /* */ 11 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 11 10 11 11 /****^ HISTORY COMMENTS: 11 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 11 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 11 14* Separated abs_attributes from the request structure 11 15* (abs_message_format.incl.pl1) so that the identical structure could be 11 16* used in the ute structure (user_table_entry.incl.pl1). 11 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 11 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 11 19* Added ABS_ATTRIBUTE_NAMES array. 11 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 11 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 11 22* Added the no_start_up flag. SCP6367 11 23* END HISTORY COMMENTS */ 11 24 11 25 dcl 1 user_abs_attributes aligned based, 11 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 11 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 11 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 11 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 11 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 11 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 11 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 11 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 11 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 11 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 11 36 2 attributes_pad bit (26) unaligned; 11 37 11 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 11 39 "restartable", 11 40 "user_deferred_until_time", 11 41 "proxy", 11 42 "set_bit_cnt", 11 43 "time_in_gmt", 11 44 "user_deferred_indefinitely", 11 45 "secondary_ok", 11 46 "truncate_absout", 11 47 "restarted", 11 48 "no_start_up"); 11 49 11 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 11 51 10 112 10 113 10 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 199 200 201 pit_ptr = P_pit_ptr; 202 203 P_call_listener = "0"b; /* We will never return anyway. */ 204 P_with_command_line = ""; 205 206 /* Set things up for for an error, in which case we will tell the Level 6 and logout. */ 207 208 status_area_ptr = null (); 209 status_ptr = null (); 210 auto_status_branch.nnames = 0; 211 auto_status_branch.names_relp = "0"b; 212 multics_file_iocbp = null (); 213 level_6_iocbp = iox_$user_io; 214 file_buffer_ptr = null (); 215 comm_buffer_ptr = null (); 216 217 star_names_generated = "0"b; 218 star_entry_ptr = null (); 219 star_names_ptr = null (); 220 star_area_ptr = null (); 221 star_entry_count = 0; 222 star_entries_index = 0; 223 224 on finish ; /* Do nothing. */ 225 226 on any_other call ERROR (error_table_$fatal_error, "The file transfer has abnormally terminated."); 227 228 /* Get temp segments for buffers for file IO and Level 6 IO. */ 229 230 call iox_$modes (level_6_iocbp, "8bit,rawi,rawo", "", code); 231 if code ^= 0 then call ERROR (code, "Trying to set modes for Level 6 comm."); 232 233 call get_temp_segments_ ("l6_tran_", temp_seg_ptrs, code); 234 if code ^= 0 then call ERROR (code, "Trying to get a temp segs."); 235 236 comm_buffer_len = sys_info$max_seg_size * 4; 237 file_buffer_len = sys_info$max_seg_size * 4; 238 239 /* Now do the real work. We are always the acceptor and the Level 6 is the initiator. */ 240 241 level_6_chars_to_write = length ("HI"); /* First tell him we are here. */ 242 substr (comm_buffer, 1, level_6_chars_to_write) = "HI"; 243 244 call l6_tran_util_$put_chars (level_6_iocbp, comm_buffer_ptr, level_6_chars_to_write, code); 245 if code ^= 0 then call ERROR (code, "Could not send ""HI""."); 246 247 call OK_Dialogue (); 248 249 /* Loop here to handle possible star name transfers. */ 250 251 last_file = "0"b; /* Loop at least once. */ 252 do while (^last_file); 253 254 call File_Definition_Dialogue (); 255 256 auto_transfer_input_args.version = transfer_input_args_version_1; 257 auto_transfer_input_args.comm_iocbp = level_6_iocbp; 258 auto_transfer_input_args.comm_buffer_ptr = comm_buffer_ptr; 259 auto_transfer_input_args.comm_buffer_len = comm_buffer_len; 260 auto_transfer_input_args.file_iocbp = multics_file_iocbp; 261 auto_transfer_input_args.file_buffer_ptr = file_buffer_ptr; 262 auto_transfer_input_args.file_buffer_len = file_buffer_len; 263 auto_transfer_input_args.file_type = multics_file_type; 264 auto_transfer_input_args.data_type = multics_data_type; 265 266 auto_transfer_output_args.version = transfer_output_args_version_1; 267 268 if multics_is_sender 269 then do; 270 auto_transfer_input_args.tu_size = SEND_TU_SIZE; 271 auto_transfer_input_args.last_file = last_file; 272 /* Set by File_Definition_Dialogue. */ 273 274 call l6_tran_send_file_ (addr (auto_transfer_input_args), addr (auto_transfer_output_args), 275 P_error_message, P_code); 276 end; 277 278 else do; 279 auto_transfer_input_args.tu_size = RECV_TU_SIZE; 280 281 call l6_tran_receive_file_ (addr (auto_transfer_input_args), addr (auto_transfer_output_args), 282 P_error_message, P_code); 283 last_file = auto_transfer_output_args.last_file; 284 end; 285 286 /* We are finished with the file, get rid of it. */ 287 288 call iox_$close (multics_file_iocbp, code); 289 call iox_$detach_iocb (multics_file_iocbp, code); 290 call iox_$destroy_iocb (multics_file_iocbp, code); 291 end; /* Loop while ^last_file. */ 292 293 if multics_is_sender 294 then do; /* "E" is not enough, so engage in a final dialogue. */ 295 call File_Definition_Dialogue (); /* Last_file = "1"b here. */ 296 end; 297 298 /*****************************************************************************/ 299 /* */ 300 /* We are done, so terminate the process. Do it in this gross way so no */ 301 /* "hangup" message is sent. Also, wait a minute before we terminate so */ 302 /* we avoid confusing the Level 6 if he wanted to do the termination. (If */ 303 /* he terminates, this will also kill us.) */ 304 /* */ 305 /*****************************************************************************/ 306 307 LAST_FILE_RETURN: /* Come here from File_Definition_Dialogue since "E" is not set. */ 308 call Cleanup_Handler (); 309 310 RETURN: 311 call timer_manager_$sleep (60, REL_SECONDS); /* Wait in case the L6 wants to terminate. */ 312 313 /* How to logout cleanly, if we ever want to. 314* 315* logout_string.version = 0; 316* logout_string.hold = "0"b; 317* logout_string.brief = "1"b; 318* logout_string.pad = "0"b; 319* 320* term_structure_ptr = addr (logout_string); 321* 322* call terminate_process_ ("logout", term_structure_ptr); 323**/ 324 call iox_$control (iox_$user_io, "hangup", null (), code); 325 call timer_manager_$sleep (60, REL_SECONDS); /* Wait for the "hangup" to take. */ 326 327 return; /* We should never get here. */ 328 329 File_Definition_Dialogue: 330 proc (); 331 332 dcl acceptor_file_count pic "99"; 333 dcl chars_read fixed bin (21); 334 dcl ci_size pic "99999"; 335 dcl char_position fixed bin; 336 dcl data_type char (1); 337 dcl file_access char (1); 338 dcl file_size pic "99999"; 339 dcl file_type char (1); 340 dcl fixed_definition_len fixed bin (21); 341 dcl indicator char (1); 342 dcl initiator_file_count pic "99"; 343 dcl key_length pic "999"; 344 dcl key_offset pic "9999"; 345 dcl key_type char (1); 346 dcl l6_path_len pic "99"; 347 348 dcl 1 l6_file_definition unaligned based (comm_buffer_ptr), 349 2 header, 350 3 first_char char (1) unaligned, /* Should be " ". */ 351 3 definition_len pic "999" unaligned, 352 3 another_char char (1) unaligned, /* Should be " ". */ 353 3 direction char (1) unaligned, /* Should be "I" or "O". */ 354 3 file_name_indicator char (1) unaligned, /* Should be "!". */ 355 3 file_name_len pic "99" unaligned, 356 3 file_name char (0 refer (l6_file_definition.file_name_len)) unaligned, 357 2 rest_of_definition char (rest_of_definition_len) unaligned; 358 359 dcl output_message_len pic "999"; 360 dcl percent_fill pic "99"; 361 dcl record_size pic "9999"; 362 dcl rest_of_definition_len fixed bin; 363 dcl starting_record pic "99999"; 364 dcl saved_attributes char (256) varying; 365 366 /* Get the Level 6 file definition record. This involves a loop to get everything he says he sent. */ 367 368 call l6_tran_util_$get_chars (level_6_iocbp, comm_buffer_ptr, comm_buffer_len, level_6_chars_read, code); 369 if code ^= 0 then call ERROR (code, "Trying to read the file definition from the Level 6."); 370 371 fixed_definition_len = l6_file_definition.definition_len; 372 rest_of_definition_len = fixed_definition_len - length (string (l6_file_definition.header)); 373 374 do chars_read = level_6_chars_read repeat chars_read + level_6_chars_read 375 while (chars_read < fixed_definition_len); 376 call l6_tran_util_$get_chars (level_6_iocbp, add_char_offset_ (comm_buffer_ptr, chars_read), 377 comm_buffer_len - chars_read, level_6_chars_read, code); 378 if code ^= 0 then call ERROR (code, "Trying to read the file definition from the Level 6."); 379 end; 380 381 /* Special no file message, instead of "E" on last file, when Multics is receiving. */ 382 383 if l6_file_definition.another_char = "&" then goto LAST_FILE_RETURN; 384 385 /* Special return for last file dialogue when Multics is sending. */ 386 387 if last_file 388 then do; 389 level_6_chars_to_write = length ("8010&'82FF"); 390 substr (comm_buffer, 1, level_6_chars_to_write) = "8010&'82FF"; 391 392 call l6_tran_util_$put_chars (level_6_iocbp, comm_buffer_ptr, level_6_chars_to_write, code); 393 /* Ignore the code. */ 394 395 return; 396 end; 397 398 if l6_file_definition.direction = "I" 399 then multics_is_sender = "1"b; 400 else multics_is_sender = "0"b; 401 402 multics_pathname = l6_file_definition.file_name; 403 404 call expand_pathname_ (multics_pathname, multics_dir, saved_multics_entry, code); 405 if code ^= 0 then call ERROR (code, "Trying to expand multics pathname: ^a.", multics_pathname); 406 407 multics_pathname = pathname_ (multics_dir, saved_multics_entry); 408 /* Turn into absolute pathname. */ 409 410 multics_entry = saved_multics_entry; 411 412 level_6_dir = ""; /* We don't know. */ 413 saved_level_6_entry = "=="; /* Tell him names that match ours. */ 414 415 /* Set default Level 6 file attributes, and then get the real ones, if any. */ 416 417 level_6_data_type = ASCII; 418 level_6_file_type = L6_S_FILE_TYPE; 419 level_6_max_record_size = 0; 420 421 if l6_file_definition.rest_of_definition ^= "" 422 then do; /* Process the file attributes. */ 423 char_position = 1; 424 indicator = substr (l6_file_definition.rest_of_definition, char_position, length (indicator)); 425 426 if indicator = "#" 427 then do; 428 char_position = char_position + length (indicator); 429 430 saved_attributes = substr (l6_file_definition.rest_of_definition, char_position); 431 end; 432 433 else do; /* Probably something wrong, but keep going. */ 434 saved_attributes = substr (l6_file_definition.rest_of_definition, char_position); 435 end; 436 437 438 do while (char_position <= length (l6_file_definition.rest_of_definition)); 439 /* Loop through the file attributes. */ 440 indicator = substr (l6_file_definition.rest_of_definition, char_position, length (indicator)); 441 char_position = char_position + length (indicator); 442 443 if indicator = "P" 444 then do; /* File type */ 445 file_type = 446 substr (l6_file_definition.rest_of_definition, char_position, length (file_type)); 447 char_position = char_position + length (file_type); 448 449 level_6_file_type = index (string (L6_FILE_TYPE), file_type); 450 451 if level_6_file_type = 0 452 then call ERROR (error_table_$bad_file, 453 "The Level 6 file type: ""^a"", is not supported.", file_type); 454 end; 455 456 else if indicator = "Q" 457 then do; /* Data type */ 458 data_type = 459 substr (l6_file_definition.rest_of_definition, char_position, length (data_type)); 460 char_position = char_position + length (data_type); 461 462 level_6_data_type = index (string (L6_DATA_TYPE), data_type); 463 464 if level_6_data_type = 0 465 then call ERROR (error_table_$bad_file, 466 "The Level 6 data type: ""^a"", is not supported.", data_type); 467 end; 468 469 else if indicator = "R" 470 then do; /* Record size */ 471 string (record_size) = 472 substr (l6_file_definition.rest_of_definition, char_position, 473 length (record_size)); 474 char_position = char_position + length (record_size); 475 476 level_6_max_record_size = record_size; 477 end; 478 479 else if indicator = "S" 480 then do; /* Starting record */ 481 string (starting_record) = 482 substr (l6_file_definition.rest_of_definition, char_position, 483 length (starting_record)); 484 char_position = char_position + length (starting_record); 485 end; 486 487 else if indicator = "T" 488 then do; /* File access code */ 489 file_access = 490 substr (l6_file_definition.rest_of_definition, char_position, 491 length (file_access)); 492 char_position = char_position + length (file_access); 493 end; 494 495 else if indicator = "U" 496 then do; /* Key length */ 497 string (key_length) = 498 substr (l6_file_definition.rest_of_definition, char_position, length (key_length)) 499 ; 500 char_position = char_position + length (key_length); 501 end; 502 503 else if indicator = "V" 504 then do; /* Key offset */ 505 string (key_offset) = 506 substr (l6_file_definition.rest_of_definition, char_position, length (key_offset)) 507 ; 508 char_position = char_position + length (key_offset); 509 end; 510 511 else if indicator = "W" 512 then do; /* Percent fill */ 513 string (percent_fill) = 514 substr (l6_file_definition.rest_of_definition, char_position, 515 length (percent_fill)); 516 char_position = char_position + length (percent_fill); 517 end; 518 519 else if indicator = "X" 520 then do; /* Key type */ 521 key_type = 522 substr (l6_file_definition.rest_of_definition, char_position, length (key_type)); 523 char_position = char_position + length (key_type); 524 end; 525 526 else if indicator = "Y" 527 then do; /* CI size */ 528 string (ci_size) = 529 substr (l6_file_definition.rest_of_definition, char_position, length (ci_size)); 530 char_position = char_position + length (ci_size); 531 end; 532 533 else if indicator = "Z" 534 then do; /* File size (in CI units) */ 535 string (file_size) = 536 substr (l6_file_definition.rest_of_definition, char_position, length (file_size)); 537 char_position = char_position + length (file_size); 538 end; 539 540 else if indicator = "[" 541 then do; /* Initiator's file count */ 542 string (initiator_file_count) = 543 substr (l6_file_definition.rest_of_definition, char_position, 544 length (initiator_file_count)); 545 char_position = char_position + length (initiator_file_count); 546 end; 547 548 else if indicator = "\" 549 then do; /* Acceptor's file count */ 550 string (acceptor_file_count) = 551 substr (l6_file_definition.rest_of_definition, char_position, 552 length (acceptor_file_count)); 553 char_position = char_position + length (acceptor_file_count); 554 end; 555 556 else ; /* Not recognized, skip it */ 557 558 end; /* Loop through the attributes. */ 559 end; /* Process the file attributes. */ 560 561 /* Now do the right things to attach and open the Multics file based on everything we have learned. */ 562 563 if multics_is_sender 564 then do; /* We must describe the file to the Level 6. */ 565 call Get_Next_Path (last_file); /* This sets level_6_pathname too. */ 566 567 info.info_version = vfs_version_1; 568 call vfile_status_ (multics_dir, multics_entry, addr (info), code); 569 if code ^= 0 570 then call ERROR (code, "Trying to get vfile_status_ on: ^a, for sending.", multics_pathname); 571 572 call Check_Multics_File (); 573 574 call Open_Multics_File (); 575 576 call Get_Saved_Attributes (); 577 end; /* We must describe the file to the Level 6. */ 578 579 else do; /* The Level 6 has told us about the file. */ 580 level_6_pathname = ""; /* Not needed since we are receiving. */ 581 star_names_generated = "0"b; /* We never get starnames when receiving. */ 582 583 info.info_version = vfs_version_1; 584 call vfile_status_ (multics_dir, multics_entry, addr (info), code); 585 586 if code = 0 587 then do; 588 call Check_Multics_File (); 589 call Verify_File_Attributes (); 590 end; 591 592 else call Create_Multics_File (); 593 594 call Open_Multics_File (); 595 596 call Set_Saved_Attributes (); 597 end; /* The Level 6 has told us about the file. */ 598 599 /* Send our response to the Level 6. */ 600 601 l6_path_len = length (rtrim (level_6_pathname)) + 1; 602 603 call ioa_$rsnpnnl ("8000$^[^[!^2a^a ^;^2s^]^[#P^aQ^a^s^;^2s#^a^]^;^]", comm_buffer, level_6_chars_to_write, 604 multics_is_sender, star_names_generated, l6_path_len, rtrim (level_6_pathname), saved_attributes = "", 605 L6_FILE_TYPE (multics_file_l6_type), L6_DATA_TYPE (multics_data_type), saved_attributes); 606 607 output_message_len = level_6_chars_to_write; 608 substr (comm_buffer, 2, 3) = output_message_len; 609 610 call l6_tran_util_$put_chars (level_6_iocbp, comm_buffer_ptr, level_6_chars_to_write, code); 611 if code ^= 0 then call ERROR (code, "Trying to send the ack to the Level 6 file definition."); 612 613 /* We may have to put a call to write_status here, to prevent our response from being combined with our first prompt. */ 614 615 return; 616 617 Check_Multics_File: 618 proc (); 619 620 multics_file_type = info.type; 621 622 if multics_file_type > BLOCKED_FILE_TYPE 623 then call ERROR (error_table_$bad_file, 624 "The Multics file must be unstructured, sequential, or blocked. File ^a was ^a.", 625 multics_pathname, FILE_TYPE_TO_PNAME (multics_file_type)); 626 627 if multics_file_type = BLOCKED_FILE_TYPE 628 then do; 629 multics_file_block_size = blk_info.max_rec_len; 630 multics_file_size = blk_info.end_pos; 631 end; 632 633 else do; 634 multics_file_block_size = 0; 635 multics_file_size = 0; 636 end; 637 638 multics_file_l6_type = L6_S_FILE_TYPE; /* This is the default. */ 639 640 /* Now find out if the file is special by looking for the suffix we put on it. */ 641 642 status_area_ptr = get_user_free_area_ (); 643 status_ptr = addr (auto_status_branch); 644 645 call hcs_$status_ (multics_dir, multics_entry, CHASE, status_ptr, status_area_ptr, code); 646 if code ^= 0 then call ERROR (code, "Trying to get status for: ^a.", multics_pathname); 647 648 if status_branch.short.type = Directory then call ERROR (error_table_$dirseg, "^a.", multics_pathname); 649 650 code = 1; /* Go through the loop at least once. */ 651 do i = lbound (status_entry_names, 1) to hbound (status_entry_names, 1) while (code ^= 0); 652 call match_star_name_ ((status_entry_names (i)), "**.*.l6*", code); 653 if code = 0 654 then do; 655 suffix = reverse (before (reverse (rtrim (status_entry_names (i))), ".")); 656 657 do i = lbound (MULTICS_L6_FILE_SUFFIX, 1) to hbound (MULTICS_L6_FILE_SUFFIX, 1) 658 while (suffix ^= MULTICS_L6_FILE_SUFFIX (i)); 659 end; 660 661 if i > hbound (MULTICS_L6_FILE_SUFFIX, 1) 662 then code = 1; /* Keep looking. */ 663 else multics_file_l6_type = i; 664 end; 665 end; 666 667 if status_branch.nnames > 0 & status_branch.names_relp ^= "0"b 668 then free status_entry_names in (status_area_ptr -> based_area); 669 /* Cleanup after ourselves. */ 670 671 if multics_file_type = UNSTRUCTURED_FILE_TYPE 672 then multics_data_type = ASCII; 673 else multics_data_type = BINARY; 674 675 return; 676 677 end Check_Multics_File; 678 679 Create_Multics_File: 680 proc (); 681 682 multics_file_l6_type = level_6_file_type; 683 multics_data_type = level_6_data_type; 684 685 if level_6_file_type = L6_S_FILE_TYPE & level_6_data_type = ASCII 686 then multics_file_type = UNSTRUCTURED_FILE_TYPE; 687 688 else if level_6_file_type = L6_S_FILE_TYPE then multics_file_type = SEQUENTIAL_FILE_TYPE; 689 690 else multics_file_type = BLOCKED_FILE_TYPE; 691 692 if multics_file_type = BLOCKED_FILE_TYPE 693 then do; 694 if level_6_max_record_size = 0 695 then multics_file_block_size = 256;/*Set default. */ 696 else multics_file_block_size = level_6_max_record_size; 697 end; 698 699 else multics_file_block_size = 0; 700 701 multics_file_size = 0; 702 703 if MULTICS_L6_FILE_SUFFIX (multics_file_l6_type) ^= "" 704 then do; 705 call suffixed_name_$make (multics_entry, MULTICS_L6_FILE_SUFFIX (multics_file_l6_type), multics_entry, 706 code); 707 if code ^= 0 708 then call ERROR (code, "Trying to add the suffix ""^a"" to ^a", 709 MULTICS_L6_FILE_SUFFIX (multics_file_l6_type), multics_pathname); 710 711 multics_pathname = pathname_ (multics_dir, multics_entry); 712 end; 713 714 call hcs_$append_branch (multics_dir, multics_entry, RW_ACCESS_BIN, code); 715 if code ^= 0 then call ERROR (code, "Trying to create: ^a.", multics_pathname); 716 717 return; 718 719 end Create_Multics_File; 720 721 Get_Next_Path: 722 proc (P_last_file); 723 724 dcl P_last_file bit (1) parameter; 725 726 dcl code fixed bin (35); 727 728 call check_star_name_$entry (saved_multics_entry, code); 729 730 if code = 0 then P_last_file = "1"b; /* Not a star name, nothing to do. */ 731 732 else if code = error_table_$badstar then call ERROR (code, "Multics file name: ^a.", saved_multics_entry); 733 734 else do; /* We have a star name. */ 735 if ^star_names_generated 736 then do; /* Get the star list once. */ 737 star_area_ptr = get_user_free_area_ (); 738 739 call hcs_$star_ (multics_dir, saved_multics_entry, star_ALL_ENTRIES, star_area_ptr, 740 star_entry_count, star_entry_ptr, star_names_ptr, code); 741 if code ^= 0 742 then call ERROR (code, "Trying to match starname ^a in directory ^a.", saved_multics_entry, 743 multics_dir); 744 745 /* Set the index to the first non-directory entry. */ 746 747 do star_entries_index = 1 to hbound (star_entries, 1) 748 while (star_entries (star_entries_index).type = star_DIRECTORY); 749 end; 750 751 if star_entries_index > hbound (star_entries, 1) 752 then call ERROR (error_table_$dirseg, "Only directories match ^a.", multics_pathname); 753 754 star_names_generated = "1"b; 755 end; /* Get the star list once. */ 756 757 /* Just use the first matching name on an entry. */ 758 759 multics_entry = star_names (star_entries (star_entries_index).nindex); 760 multics_pathname = pathname_ (multics_dir, multics_entry); 761 762 /* Now update the star_entries_index and set P_last_file. */ 763 764 do star_entries_index = star_entries_index + 1 to hbound (star_entries, 1) 765 while (star_entries (star_entries_index).type = star_DIRECTORY); 766 end; 767 768 if star_entries_index > hbound (star_entries, 1) 769 then P_last_file = "1"b; 770 else P_last_file = "0"b; 771 end; /* We have a star name. */ 772 773 /* Now generate the L6 pathname. */ 774 775 call get_equal_name_ (multics_entry, saved_level_6_entry, level_6_entry, code); 776 if code ^= 0 777 then call ERROR (code, "Trying to do equalname matching on L6 name ^a, against Multics name ~a.", 778 saved_level_6_entry, multics_entry); 779 780 level_6_pathname = rtrim (level_6_dir) || level_6_entry; 781 782 return; 783 784 end Get_Next_Path; 785 786 Get_Saved_Attributes: 787 proc (); 788 789 if multics_file_l6_type ^= L6_S_FILE_TYPE 790 then do; 791 call iox_$read_record (multics_file_iocbp, file_buffer_ptr, file_buffer_len, multics_chars_read, code) 792 ; 793 if code ^= 0 794 then call ERROR (code, "Trying to get the file attributes from the multics file: ^a.", 795 multics_pathname); 796 797 saved_attributes = substr (file_buffer, 1, multics_chars_read); 798 end; 799 800 else saved_attributes = ""; 801 802 return; 803 804 end Get_Saved_Attributes; 805 806 Open_Multics_File: 807 proc (); 808 809 call ioa_$rsnnl ("^[record_stream_ -target ^]vfile_ ^a^[ -blocked ^d^;^s^]", multics_file_attach_desc, 810 ignored_len, multics_file_type = UNSTRUCTURED_FILE_TYPE, multics_pathname, 811 multics_file_type = BLOCKED_FILE_TYPE, multics_file_block_size); 812 813 call iox_$attach_name (multics_entry, multics_file_iocbp, (multics_file_attach_desc), null (), code); 814 if code ^= 0 & code ^= error_table_$not_detached 815 then call ERROR (code, "Trying to attach file: ^a through switch: ^a.", multics_pathname, multics_entry); 816 817 if multics_is_sender 818 then multics_file_open_mode = Sequential_input; 819 else multics_file_open_mode = Sequential_output; 820 821 call iox_$open (multics_file_iocbp, multics_file_open_mode, "0"b, code); 822 if code ^= 0 & code ^= error_table_$not_closed 823 then call ERROR (code, "Trying to open file: ^a through switch: ^a.", multics_pathname, multics_entry); 824 825 return; 826 827 end Open_Multics_File; 828 829 Set_Saved_Attributes: 830 proc (); 831 832 if multics_file_l6_type ^= L6_S_FILE_TYPE 833 then do; 834 multics_chars_to_write = length (saved_attributes); 835 substr (file_buffer, 1, multics_chars_to_write) = saved_attributes; 836 837 call iox_$write_record (multics_file_iocbp, file_buffer_ptr, multics_chars_to_write, code); 838 if code ^= 0 then call ERROR (code, "Trying to save the file attributes in: ^a.", multics_pathname); 839 end; 840 841 return; 842 843 end Set_Saved_Attributes; 844 845 Verify_File_Attributes: 846 proc (); 847 848 if multics_file_l6_type ^= level_6_file_type 849 then call ERROR (error_table_$bad_file, 850 "The Level 6 file type does not match the existing Multics file type. (M = ^a, L6 = ^a).", 851 L6_FILE_TYPE (multics_file_l6_type), L6_FILE_TYPE (level_6_file_type)); 852 853 if multics_file_type = BLOCKED_FILE_TYPE & multics_file_block_size < level_6_max_record_size 854 then call ERROR (error_table_$bad_file, 855 "The Multics fiel block size is less than the Level 6 record size. (M = ^d, L6 = ^d).", 856 multics_file_block_size, level_6_max_record_size); 857 858 if multics_file_type = UNSTRUCTURED_FILE_TYPE 859 & ^(level_6_file_type = L6_S_FILE_TYPE & level_6_data_type = ASCII) 860 then call ERROR (error_table_$bad_file, 861 "Only a sequential ascii Level 6 file may be transferred to an unstructured Multics file."); 862 863 return; 864 865 end Verify_File_Attributes; 866 867 end File_Definition_Dialogue; 868 869 OK_Dialogue: 870 proc (); 871 872 call l6_tran_util_$get_chars (level_6_iocbp, comm_buffer_ptr, comm_buffer_len, level_6_chars_read, code); 873 if code ^= 0 then call ERROR (code, "Trying to read ""OK?"" from the Level 6."); 874 875 if substr (comm_buffer, 1, level_6_chars_read) ^= "OK?" then ; 876 /* Something wrong, but keep going anyway. */ 877 878 level_6_chars_to_write = length ("OK"); 879 substr (comm_buffer, 1, level_6_chars_to_write) = "OK"; 880 881 call l6_tran_util_$put_chars (level_6_iocbp, comm_buffer_ptr, level_6_chars_to_write, code); 882 if code ^= 0 then call ERROR (code, "Trying to send ""OK"" to the Level 6."); 883 884 return; 885 886 end OK_Dialogue; 887 888 /*****************************************************************************/ 889 /* */ 890 /* PROCEDURE: ERROR */ 891 /* */ 892 /* This subroutine expects arguments as follows: */ 893 /* */ 894 /* call ERROR (code, ioa_control_string, ioa_arguments, ...) */ 895 /* */ 896 /* where: code is fixed bin (35), and ioa_control_string and ioa_arguments */ 897 /* are optional character strings as defined for ioa_. */ 898 /* */ 899 /* Some global variables are used: */ 900 /* */ 901 /* Cleanup_Handler (a procedure that does cleanup) */ 902 /* */ 903 /* For commands: */ 904 /* report_error (an entry variable set to com_err_ or active_fnc_err_)*/ 905 /* command_name (the character string name of the command) */ 906 /* return_arg_ptr (used to return "false" for active functions) */ 907 /* */ 908 /* For subroutines: */ 909 /* depends on the error reporting strategy chosen. */ 910 /* */ 911 /* At completion a non-local goto is done to the label RETURN. */ 912 /* */ 913 /* Declarations are expected for: */ 914 /* */ 915 /* cu_$arg_list_ptr */ 916 /* cu_$arg_ptr */ 917 /* cu_$arg_count */ 918 /* error_table_$fatal_error */ 919 /* ioa_$general_rs */ 920 /* */ 921 /*****************************************************************************/ 922 923 ERROR: 924 proc () options (variable, non_quick); 925 926 dcl arg_list_ptr ptr; 927 dcl arg_len fixed bin (21); 928 dcl arg_ptr ptr; 929 dcl based_code fixed bin (35) based; 930 dcl caller_code fixed bin (35); 931 dcl code fixed bin (35); 932 dcl err_msg char (256); 933 dcl err_msg_len fixed bin (21); 934 dcl nargs fixed bin; 935 936 call cu_$arg_count (nargs, code); /* IGNORE CODE */ 937 938 if nargs >= 1 939 then do; /* We were called correctly. */ 940 arg_ptr = null (); /* Set this so we know if cu_$arg_ptr worked. */ 941 call cu_$arg_ptr (1, arg_ptr, arg_len, code); 942 943 if arg_ptr ^= null () 944 then caller_code = arg_ptr -> based_code; 945 /* The normal case. */ 946 else caller_code = error_table_$fatal_error; 947 /* Some problem with our arg list. */ 948 949 if nargs > 1 950 then do; /* There is a message. */ 951 call cu_$arg_list_ptr (arg_list_ptr); 952 call ioa_$general_rs (arg_list_ptr, 2, 3, err_msg, err_msg_len, "1"b, "0"b); 953 end; 954 955 else do; /* No message. */ 956 err_msg = ""; 957 err_msg_len = 0; 958 end; 959 end; /* We were called correctly. */ 960 961 else do; /* We were called with no arguments. */ 962 caller_code = error_table_$fatal_error; /* The best we can do. */ 963 err_msg = ""; 964 err_msg_len = 0; 965 end; /* We were called with no arguments. */ 966 967 /* The following lines must be modified depending on the error reporting strategy used. */ 968 969 if level_6_iocbp ^= null () & comm_buffer_ptr ^= null () 970 then do; /* Tell the Level 6. */ 971 972 dcl pic_err_msg_len pic "99"; 973 974 pic_err_msg_len = min (99, err_msg_len); 975 976 call ioa_$rsnpnnl ("CU^a^aR", comm_buffer, level_6_chars_to_write, pic_err_msg_len, 977 substr (err_msg, 1, pic_err_msg_len)); 978 979 call l6_tran_util_$put_chars (level_6_iocbp, comm_buffer_ptr, level_6_chars_to_write, code); 980 end; 981 982 P_error_message = substr (err_msg, 1, err_msg_len); 983 P_code = caller_code; 984 985 /* Clean up and do a non-local goto back to the outermost block. */ 986 987 call Cleanup_Handler (); 988 goto RETURN; 989 990 end ERROR; 991 992 Cleanup_Handler: 993 proc (); 994 995 dcl code fixed bin (35); 996 997 if status_area_ptr ^= null () & status_ptr ^= null () 998 then do; 999 if status_branch.nnames > 1 & status_branch.names_relp ^= "0"b 1000 then free status_entry_names in (status_area_ptr -> based_area); 1001 end; 1002 1003 if star_area_ptr ^= null () 1004 then do; /* Order is important here. */ 1005 if star_names_ptr ^= null () & star_entry_ptr ^= null () 1006 then free star_names in (star_area_ptr -> based_area); 1007 1008 if star_entry_ptr ^= null () then free star_entries in (star_area_ptr -> based_area); 1009 end; 1010 1011 if multics_file_iocbp ^= null () 1012 then do; 1013 call iox_$close (multics_file_iocbp, code); 1014 call iox_$detach_iocb (multics_file_iocbp, code); 1015 call iox_$destroy_iocb (multics_file_iocbp, code); 1016 end; 1017 1018 if file_buffer_ptr ^= null () | comm_buffer_ptr ^= null () 1019 then call release_temp_segments_ ("l6_tran_", temp_seg_ptrs, code); 1020 1021 return; 1022 1023 end Cleanup_Handler; 1024 1025 debug_on: 1026 entry (); 1027 debug_flag = "1"b; 1028 return; 1029 1030 debug_off: 1031 entry (); 1032 debug_flag = "0"b; 1033 return; 1034 1035 end l6_tran_overseer_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0935.4 l6_tran_overseer_.pl1 >special_ldd>install>MR12.2-1047>l6_tran_overseer_.pl1 112 1 11/12/82 1624.7 l6_tran_constants.incl.pl1 >ldd>include>l6_tran_constants.incl.pl1 181 2 11/12/82 1624.7 l6_tran_transfer_args.incl.pl1 >ldd>include>l6_tran_transfer_args.incl.pl1 183 3 06/10/82 1045.5 star_structures.incl.pl1 >ldd>include>star_structures.incl.pl1 187 4 07/19/79 1547.0 vfs_info.incl.pl1 >ldd>include>vfs_info.incl.pl1 189 5 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 191 6 11/22/82 0955.7 status_structures.incl.pl1 >ldd>include>status_structures.incl.pl1 193 7 05/23/83 0916.6 iox_entries.incl.pl1 >ldd>include>iox_dcls.incl.pl1 195 8 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 197 9 07/13/88 0930.5 pit.incl.pl1 >special_ldd>install>MR12.2-1047>pit.incl.pl1 199 10 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 10-112 11 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.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. ASCII constant fixed bin(17,0) initial dcl 1-13 ref 417 671 685 858 BINARY constant fixed bin(17,0) initial dcl 1-14 ref 673 BLOCKED_FILE_TYPE constant fixed bin(17,0) initial dcl 1-21 ref 622 627 690 692 809 853 CHASE 000114 constant fixed bin(1,0) initial dcl 1-17 set ref 645* Directory constant fixed bin(17,0) initial dcl 6-56 ref 648 FILE_TYPE_TO_PNAME 000007 constant char(12) initial array packed unaligned dcl 1-33 set ref 622* L6_DATA_TYPE 000026 constant char(1) initial array packed unaligned dcl 1-31 set ref 462 603* L6_FILE_TYPE 000027 constant char(1) initial array packed unaligned dcl 1-30 set ref 449 603* 848* 848* L6_S_FILE_TYPE constant fixed bin(17,0) initial dcl 1-25 ref 418 638 685 688 789 832 858 MULTICS_L6_FILE_SUFFIX 000004 constant char(3) initial array packed unaligned dcl 1-36 set ref 657 657 657 661 703 705* 707* P_call_listener parameter bit(1) dcl 34 set ref 28 203* P_code 000201 automatic fixed bin(35,0) dcl 40 set ref 274* 281* 983* P_error_message 000100 automatic varying char(256) dcl 39 set ref 274* 281* 982* P_last_file parameter bit(1) packed unaligned dcl 724 set ref 721 730* 768* 770* P_pit_ptr parameter pointer dcl 33 ref 28 201 P_with_command_line parameter varying char dcl 35 set ref 28 204* RECV_TU_SIZE constant fixed bin(21,0) initial dcl 1-4 ref 279 REL_SECONDS 000030 constant bit(2) initial packed unaligned dcl 110 set ref 310* 325* RW_ACCESS_BIN 000106 constant fixed bin(5,0) initial dcl 5-36 set ref 714* SEND_TU_SIZE constant fixed bin(21,0) initial dcl 1-3 ref 270 SEQUENTIAL_FILE_TYPE constant fixed bin(17,0) initial dcl 1-20 ref 688 Sequential_input constant fixed bin(17,0) initial dcl 8-15 ref 817 Sequential_output constant fixed bin(17,0) initial dcl 8-15 ref 819 UNSTRUCTURED_FILE_TYPE constant fixed bin(17,0) initial dcl 1-19 ref 671 685 809 858 acceptor_file_count 001010 automatic picture(2) packed unaligned dcl 332 set ref 550* 550 553 add_char_offset_ 000030 constant entry external dcl 131 ref 376 376 addr builtin function dcl 161 ref 274 274 274 274 281 281 281 281 568 568 584 584 629 630 643 another_char 1 based char(1) level 3 packed packed unaligned dcl 348 ref 383 any_other 000746 stack reference condition dcl 176 ref 226 arg_len 000102 automatic fixed bin(21,0) dcl 927 set ref 941* arg_list_ptr 000100 automatic pointer dcl 926 set ref 951* 952* arg_ptr 000104 automatic pointer dcl 928 set ref 940* 941* 943 943 auto_status_branch 000202 automatic structure level 1 dcl 42 set ref 643 auto_transfer_input_args 000214 automatic structure level 1 dcl 43 set ref 274 274 281 281 auto_transfer_output_args 000235 automatic structure level 1 dcl 44 set ref 274 274 281 281 based_area based area dcl 46 ref 667 999 1005 1008 based_code based fixed bin(35,0) dcl 929 ref 943 before builtin function dcl 162 ref 655 blk_info based structure level 1 unaligned dcl 4-21 caller_code 000106 automatic fixed bin(35,0) dcl 930 set ref 943* 946* 962* 983 char_position 001014 automatic fixed bin(17,0) dcl 335 set ref 423* 424 428* 428 430 434 438 440 441* 441 445 447* 447 458 460* 460 471 474* 474 481 484* 484 489 492* 492 497 500* 500 505 508* 508 513 516* 516 521 523* 523 528 530* 530 535 537* 537 542 545* 545 550 553* 553 chars_read 001011 automatic fixed bin(21,0) dcl 333 set ref 374* 374* 376* 376* 376* 379 check_star_name_$entry 000032 constant entry external dcl 132 ref 728 ci_size 001012 automatic picture(5) packed unaligned dcl 334 set ref 528* 528 530 code 001166 automatic fixed bin(35,0) dcl 726 in procedure "Get_Next_Path" set ref 728* 730 732 732* 739* 741 741* 775* 776 776* code 000107 automatic fixed bin(35,0) dcl 931 in procedure "ERROR" set ref 936* 941* 979* code 000100 automatic fixed bin(35,0) dcl 995 in procedure "Cleanup_Handler" set ref 1013* 1014* 1015* 1018* code 000242 automatic fixed bin(35,0) dcl 49 in procedure "l6_tran_overseer_" set ref 230* 231 231* 233* 234 234* 244* 245 245* 288* 289* 290* 324* 368* 369 369* 376* 378 378* 392* 404* 405 405* 568* 569 569* 584* 586 610* 611 611* 645* 646 646* 650* 651 652* 653 661* 705* 707 707* 714* 715 715* 791* 793 793* 813* 814 814 814* 821* 822 822 822* 837* 838 838* 872* 873 873* 881* 882 882* comm_buffer based char packed unaligned dcl 51 set ref 242* 390* 603* 608* 875 879* 976* comm_buffer_len 000243 automatic fixed bin(21,0) dcl 52 in procedure "l6_tran_overseer_" set ref 236* 242 259 368* 376 390 603 603 608 872* 875 879 976 976 comm_buffer_len 6 000214 automatic fixed bin(21,0) level 2 in structure "auto_transfer_input_args" dcl 43 in procedure "l6_tran_overseer_" set ref 259* comm_buffer_ptr defined pointer dcl 53 in procedure "l6_tran_overseer_" set ref 215* 242 244* 258 368* 371 372 376* 376* 383 390 392* 398 402 421 424 430 434 438 440 445 458 471 481 489 497 505 513 521 528 535 542 550 603 608 610* 872* 875 879 881* 969 976 979* 1018 comm_buffer_ptr 4 000214 automatic pointer level 2 in structure "auto_transfer_input_args" dcl 43 in procedure "l6_tran_overseer_" set ref 258* comm_iocbp 2 000214 automatic pointer level 2 dcl 43 set ref 257* cu_$arg_count 000034 constant entry external dcl 133 ref 936 cu_$arg_list_ptr 000036 constant entry external dcl 134 ref 951 cu_$arg_ptr 000040 constant entry external dcl 135 ref 941 data_type 001015 automatic char(1) packed unaligned dcl 336 in procedure "File_Definition_Dialogue" set ref 458* 458 460 462 464* data_type 16 000214 automatic fixed bin(17,0) level 2 in structure "auto_transfer_input_args" dcl 43 in procedure "l6_tran_overseer_" set ref 264* debug_flag 000010 internal static bit(1) initial packed unaligned dcl 116 set ref 1027* 1032* definition_len 0(09) based picture(3) level 3 packed packed unaligned dcl 348 ref 371 direction 1(09) based char(1) level 3 packed packed unaligned dcl 348 ref 398 end_pos 2 based fixed bin(34,0) level 2 dcl 4-21 ref 630 err_msg 000110 automatic char(256) packed unaligned dcl 932 set ref 952* 956* 963* 976 976 982 err_msg_len 000210 automatic fixed bin(21,0) dcl 933 set ref 952* 957* 964* 974 982 error_table_$bad_file 000012 external static fixed bin(35,0) dcl 120 set ref 451* 464* 622* 848* 853* 858* error_table_$badstar 000014 external static fixed bin(35,0) dcl 121 ref 732 error_table_$dirseg 000016 external static fixed bin(35,0) dcl 122 set ref 648* 751* error_table_$fatal_error 000020 external static fixed bin(35,0) dcl 123 set ref 226* 946 962 error_table_$not_closed 000022 external static fixed bin(35,0) dcl 124 ref 822 error_table_$not_detached 000024 external static fixed bin(35,0) dcl 125 ref 814 expand_pathname_ 000042 constant entry external dcl 136 ref 404 file_access 001016 automatic char(1) packed unaligned dcl 337 set ref 489* 489 492 file_buffer based char packed unaligned dcl 55 set ref 797 835* file_buffer_len 000244 automatic fixed bin(21,0) dcl 56 in procedure "l6_tran_overseer_" set ref 237* 262 791* 797 835 file_buffer_len 14 000214 automatic fixed bin(21,0) level 2 in structure "auto_transfer_input_args" dcl 43 in procedure "l6_tran_overseer_" set ref 262* file_buffer_ptr 12 000214 automatic pointer level 2 in structure "auto_transfer_input_args" dcl 43 in procedure "l6_tran_overseer_" set ref 261* file_buffer_ptr defined pointer dcl 57 in procedure "l6_tran_overseer_" set ref 214* 261 791* 797 835 837* 1018 file_iocbp 10 000214 automatic pointer level 2 dcl 43 set ref 260* file_name 2(09) based char level 3 packed packed unaligned dcl 348 ref 402 file_name_len 1(27) based picture(2) level 3 packed packed unaligned dcl 348 ref 372 402 421 424 430 434 438 440 445 458 471 481 489 497 505 513 521 528 535 542 550 file_size 001020 automatic picture(5) packed unaligned dcl 338 set ref 535* 535 537 file_type 001022 automatic char(1) packed unaligned dcl 339 in procedure "File_Definition_Dialogue" set ref 445* 445 447 449 451* file_type 15 000214 automatic fixed bin(17,0) level 2 in structure "auto_transfer_input_args" dcl 43 in procedure "l6_tran_overseer_" set ref 263* finish 000754 stack reference condition dcl 177 ref 224 fixed_definition_len 001023 automatic fixed bin(21,0) dcl 340 set ref 371* 372 374 flags 20 000214 automatic structure level 2 in structure "auto_transfer_input_args" dcl 43 in procedure "l6_tran_overseer_" flags 4 000235 automatic structure level 2 in structure "auto_transfer_output_args" dcl 44 in procedure "l6_tran_overseer_" get_equal_name_ 000044 constant entry external dcl 137 ref 775 get_temp_segments_ 000050 constant entry external dcl 139 ref 233 get_user_free_area_ 000046 constant entry external dcl 138 ref 642 737 hbound builtin function dcl 163 ref 651 657 661 747 751 764 768 hcs_$append_branch 000052 constant entry external dcl 140 ref 714 hcs_$star_ 000054 constant entry external dcl 141 ref 739 hcs_$status_ 000056 constant entry external dcl 142 ref 645 header based structure level 2 packed packed unaligned dcl 348 ref 372 i 000245 automatic fixed bin(17,0) dcl 59 set ref 651* 652 655 657* 657* 661 663* ignored_len 000246 automatic fixed bin(21,0) dcl 60 set ref 809* index builtin function dcl 164 ref 449 462 indicator 001024 automatic char(1) packed unaligned dcl 341 set ref 424* 424 426 428 440* 440 441 443 456 469 479 487 495 503 511 519 526 533 540 548 indx_info based structure level 1 unaligned dcl 4-33 info 000724 automatic structure level 1 dcl 106 set ref 568 568 584 584 629 630 info_version 000724 automatic fixed bin(17,0) level 2 dcl 106 set ref 567* 583* initiator_file_count 001025 automatic picture(2) packed unaligned dcl 342 set ref 542* 542 545 ioa_$general_rs 000060 constant entry external dcl 143 ref 952 ioa_$rsnnl 000062 constant entry external dcl 145 ref 809 ioa_$rsnpnnl 000064 constant entry external dcl 146 ref 603 976 iox_$attach_name 000112 constant entry external dcl 7-8 ref 813 iox_$close 000114 constant entry external dcl 7-8 ref 288 1013 iox_$control 000116 constant entry external dcl 7-8 ref 324 iox_$destroy_iocb 000120 constant entry external dcl 7-8 ref 290 1015 iox_$detach_iocb 000122 constant entry external dcl 7-8 ref 289 1014 iox_$modes 000124 constant entry external dcl 7-8 ref 230 iox_$open 000126 constant entry external dcl 7-8 ref 821 iox_$read_record 000130 constant entry external dcl 7-8 ref 791 iox_$user_io 000134 external static pointer dcl 7-41 set ref 213 324* iox_$write_record 000132 constant entry external dcl 7-8 ref 837 key_length 001026 automatic picture(3) packed unaligned dcl 343 set ref 497* 497 500 key_offset 001027 automatic picture(4) packed unaligned dcl 344 set ref 505* 505 508 key_type 001030 automatic char(1) packed unaligned dcl 345 set ref 521* 521 523 l6_file_definition based structure level 1 packed packed unaligned dcl 348 l6_path_len 001031 automatic picture(2) packed unaligned dcl 346 set ref 601* 603* l6_tran_receive_file_ 000072 constant entry external dcl 149 ref 281 l6_tran_send_file_ 000074 constant entry external dcl 150 ref 274 l6_tran_util_$get_chars 000066 constant entry external dcl 147 ref 368 376 872 l6_tran_util_$put_chars 000070 constant entry external dcl 148 ref 244 392 610 881 979 last_file 4 000235 automatic bit(1) level 3 in structure "auto_transfer_output_args" packed packed unaligned dcl 44 in procedure "l6_tran_overseer_" set ref 283 last_file 20 000214 automatic bit(1) level 3 in structure "auto_transfer_input_args" packed packed unaligned dcl 43 in procedure "l6_tran_overseer_" set ref 271* last_file 000247 automatic bit(1) packed unaligned dcl 61 in procedure "l6_tran_overseer_" set ref 251* 252 271 283* 387 565* lbound builtin function dcl 165 ref 651 657 length builtin function dcl 166 ref 241 372 389 424 428 438 440 441 445 447 458 460 471 474 481 484 489 492 497 500 505 508 513 516 521 523 528 530 535 537 542 545 550 553 601 834 878 level_6_chars_read 000250 automatic fixed bin(21,0) dcl 63 set ref 368* 374 376* 379 872* 875 level_6_chars_to_write 000251 automatic fixed bin(21,0) dcl 64 set ref 241* 242 244* 389* 390 392* 603* 607 610* 878* 879 881* 976* 979* level_6_data_type 000252 automatic fixed bin(17,0) dcl 65 set ref 417* 462* 464 683 685 858 level_6_dir 000253 automatic char(168) packed unaligned dcl 66 set ref 412* 780 level_6_entry 000325 automatic char(32) packed unaligned dcl 67 set ref 775* 780 level_6_file_type 000335 automatic fixed bin(17,0) dcl 68 set ref 418* 449* 451 682 685 688 848 848 858 level_6_iocbp 000336 automatic pointer dcl 69 set ref 213* 230* 244* 257 368* 376* 392* 610* 872* 881* 969 979* level_6_max_record_size 000340 automatic fixed bin(17,0) dcl 70 set ref 419* 476* 694 696 853 853* level_6_pathname 000341 automatic char(168) packed unaligned dcl 71 set ref 580* 601 603 603 780* match_star_name_ 000076 constant entry external dcl 151 ref 652 max_rec_len 6 based fixed bin(21,0) level 2 dcl 4-21 ref 629 min builtin function dcl 167 ref 974 multics_chars_read 000413 automatic fixed bin(21,0) dcl 79 set ref 791* 797 multics_chars_to_write 000414 automatic fixed bin(21,0) dcl 80 set ref 834* 835 837* multics_data_type 000415 automatic fixed bin(17,0) dcl 81 set ref 264 603 671* 673* 683* multics_dir 000416 automatic char(168) packed unaligned dcl 82 set ref 404* 407* 568* 584* 645* 711* 714* 739* 741* 760* multics_entry 000470 automatic char(32) packed unaligned dcl 83 set ref 410* 568* 584* 645* 705* 705* 711* 714* 759* 760* 775* 776* 813* 814* 822* multics_file_attach_desc 000500 automatic varying char(256) dcl 85 set ref 809* 813 multics_file_block_size 000601 automatic fixed bin(21,0) dcl 86 set ref 629* 634* 694* 696* 699* 809* 853 853* multics_file_iocbp 000602 automatic pointer dcl 88 set ref 212* 260 288* 289* 290* 791* 813* 821* 837* 1011 1013* 1014* 1015* multics_file_l6_type 000604 automatic fixed bin(17,0) dcl 89 set ref 603 638* 663* 682* 703 705 707 789 832 848 848 multics_file_open_mode 000606 automatic fixed bin(17,0) dcl 91 set ref 817* 819* 821* multics_file_size 000607 automatic fixed bin(34,0) dcl 92 set ref 630* 635* 701* multics_file_type 000605 automatic fixed bin(17,0) dcl 90 set ref 263 620* 622 622 627 671 685* 688* 690* 692 809 809 853 858 multics_is_sender 000610 automatic bit(1) packed unaligned dcl 94 set ref 268 293 398* 400* 563 603* 817 multics_pathname 000611 automatic char(168) packed unaligned dcl 95 set ref 402* 404* 405* 407* 569* 622* 646* 648* 707* 711* 715* 751* 760* 793* 809* 814* 822* 838* names_relp 0(18) 000202 automatic bit(18) level 3 in structure "auto_status_branch" packed packed unaligned dcl 42 in procedure "l6_tran_overseer_" set ref 211* names_relp 0(18) based bit(18) level 3 in structure "status_branch" packed packed unaligned dcl 6-8 in procedure "l6_tran_overseer_" ref 651 651 652 655 667 667 999 999 nargs 000211 automatic fixed bin(17,0) dcl 934 set ref 936* 938 949 nindex 0(18) based fixed bin(18,0) array level 2 packed packed unsigned unaligned dcl 3-27 ref 759 nnames 0(02) 000202 automatic fixed bin(16,0) level 3 in structure "auto_status_branch" packed packed unsigned unaligned dcl 42 in procedure "l6_tran_overseer_" set ref 210* nnames 0(02) based fixed bin(16,0) level 3 in structure "status_branch" packed packed unsigned unaligned dcl 6-8 in procedure "l6_tran_overseer_" ref 651 667 667 999 999 nnames 0(02) based fixed bin(16,0) array level 2 in structure "star_entries" packed packed unsigned unaligned dcl 3-27 in procedure "l6_tran_overseer_" ref 1005 null builtin function dcl 168 ref 208 209 212 214 215 218 219 220 324 324 813 813 940 943 969 969 997 997 1003 1005 1005 1008 1011 1018 1018 output_message_len 001032 automatic picture(3) packed unaligned dcl 359 set ref 607* 608 pathname_ 000100 constant entry external dcl 152 ref 407 711 760 percent_fill 001033 automatic picture(2) packed unaligned dcl 360 set ref 513* 513 516 pic_err_msg_len 000212 automatic picture(2) packed unaligned dcl 972 set ref 974* 976* 976 976 pit_ptr 000774 automatic pointer dcl 9-48 set ref 201* pointer builtin function dcl 169 ref 651 651 652 655 667 999 record_size 001034 automatic picture(4) packed unaligned dcl 361 set ref 471* 471 474 476 release_temp_segments_ 000102 constant entry external dcl 153 ref 1018 rest_of_definition based char level 2 packed packed unaligned dcl 348 ref 421 424 430 434 438 440 445 458 471 481 489 497 505 513 521 528 535 542 550 rest_of_definition_len 001035 automatic fixed bin(17,0) dcl 362 set ref 372* 421 424 430 434 438 440 445 458 471 481 489 497 505 513 521 528 535 542 550 reverse builtin function dcl 170 ref 655 655 rtrim builtin function dcl 171 ref 601 603 603 655 780 saved_attributes 001040 automatic varying char(256) dcl 364 set ref 430* 434* 603 603* 797* 800* 834 835 saved_level_6_entry 000663 automatic char(32) packed unaligned dcl 97 set ref 413* 775* 776* saved_multics_entry 000673 automatic char(32) packed unaligned dcl 98 set ref 404* 407* 410 728* 732* 739* 741* short based structure level 2 in structure "status_branch" dcl 6-8 in procedure "l6_tran_overseer_" short 000202 automatic structure level 2 in structure "auto_status_branch" dcl 42 in procedure "l6_tran_overseer_" star_ALL_ENTRIES 000111 constant fixed bin(2,0) initial dcl 3-111 set ref 739* star_DIRECTORY constant fixed bin(2,0) initial unsigned dcl 3-121 ref 747 764 star_area_ptr 000704 automatic pointer dcl 99 set ref 220* 737* 739* 1003 1005 1008 star_entries based structure array level 1 dcl 3-27 ref 747 751 764 768 1008 star_entries_index 000706 automatic fixed bin(17,0) dcl 100 set ref 222* 747* 747* 751 759 764* 764 764* 768 star_entry_count 000762 automatic fixed bin(17,0) dcl 3-14 set ref 221* 739* 747 751 764 768 1005 1008 star_entry_ptr 000764 automatic pointer dcl 3-15 set ref 218* 739* 747 747 751 759 764 764 768 1005 1005 1008 1008 star_names based char(32) array packed unaligned dcl 3-37 ref 759 1005 star_names_generated 000707 automatic bit(1) packed unaligned dcl 101 set ref 217* 581* 603* 735 754* star_names_ptr 000766 automatic pointer dcl 3-19 set ref 219* 739* 759 1005 1005 starting_record 001036 automatic picture(5) packed unaligned dcl 363 set ref 481* 481 484 status_area_ptr 000770 automatic pointer dcl 6-47 set ref 208* 642* 645* 651 651 652 655 667 667 997 999 999 status_branch based structure level 1 dcl 6-8 status_entry_names based char(32) array dcl 6-47 ref 651 651 652 655 667 999 status_ptr 000772 automatic pointer dcl 6-47 set ref 209* 643* 645* 648 651 651 651 652 655 667 667 667 667 997 999 999 999 999 string builtin function dcl 172 set ref 372 449 462 471* 481* 497* 505* 513* 528* 535* 542* 550* substr builtin function dcl 173 set ref 242* 390* 424 430 434 440 445 458 471 481 489 497 505 513 521 528 535 542 550 608* 797 835* 875 879* 976 976 982 suffix 000710 automatic char(32) packed unaligned dcl 102 set ref 655* 657 suffixed_name_$make 000104 constant entry external dcl 154 ref 705 sum builtin function dcl 174 ref 1005 sys_info$max_seg_size 000026 external static fixed bin(19,0) dcl 127 ref 236 237 temp_seg_ptrs 000720 automatic pointer array dcl 103 set ref 214* 214 215* 215 233* 242 242 244 244 258 258 261 261 368 368 371 371 372 372 376 376 376 376 383 383 390 390 392 392 398 398 402 402 421 421 424 424 430 430 434 434 438 438 440 440 445 445 458 458 471 471 481 481 489 489 497 497 505 505 513 513 521 521 528 528 535 535 542 542 550 550 603 603 608 608 610 610 791 791 797 797 835 835 837 837 872 872 875 875 879 879 881 881 969 969 976 976 979 979 1018 1018 1018 1018 1018* timer_manager_$sleep 000106 constant entry external dcl 156 ref 310 325 transfer_input_args based structure level 1 dcl 2-12 transfer_input_args_version_1 000002 constant char(8) initial packed unaligned dcl 2-10 ref 256 transfer_output_args based structure level 1 dcl 2-33 transfer_output_args_version_1 000000 constant char(8) initial packed unaligned dcl 2-31 ref 266 tu_size 17 000214 automatic fixed bin(21,0) level 2 dcl 43 set ref 270* 279* type 1 000724 automatic fixed bin(17,0) level 2 in structure "info" dcl 106 in procedure "l6_tran_overseer_" set ref 620 type based fixed bin(2,0) level 3 in structure "status_branch" packed packed unsigned unaligned dcl 6-8 in procedure "l6_tran_overseer_" ref 648 type based fixed bin(2,0) array level 2 in structure "star_entries" packed packed unsigned unaligned dcl 3-27 in procedure "l6_tran_overseer_" ref 747 764 user_abs_attributes based structure level 1 dcl 11-25 user_attributes based structure level 1 dcl 10-21 version 000235 automatic char(8) level 2 in structure "auto_transfer_output_args" packed packed unaligned dcl 44 in procedure "l6_tran_overseer_" set ref 266* version 000214 automatic char(8) level 2 in structure "auto_transfer_input_args" packed packed unaligned dcl 43 in procedure "l6_tran_overseer_" set ref 256* vfile_status_ 000110 constant entry external dcl 157 ref 568 584 vfs_version_1 constant fixed bin(17,0) initial dcl 4-67 ref 567 583 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 11-38 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 10-77 A_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 BCD internal static fixed bin(17,0) initial dcl 1-15 CR internal static char(1) initial packed unaligned dcl 1-6 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 5-33 Direct_input internal static fixed bin(17,0) initial dcl 8-15 Direct_output internal static fixed bin(17,0) initial dcl 8-15 Direct_update internal static fixed bin(17,0) initial dcl 8-15 E_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 HT internal static char(1) initial packed unaligned dcl 1-10 INDEXED_FILE_TYPE internal static fixed bin(17,0) initial dcl 1-22 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 8-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 8-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 8-15 L6_D_FILE_TYPE internal static fixed bin(17,0) initial dcl 1-26 L6_F_FILE_TYPE internal static fixed bin(17,0) initial dcl 1-28 L6_R_FILE_TYPE internal static fixed bin(17,0) initial dcl 1-27 Link internal static fixed bin(17,0) initial dcl 6-56 M_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 PIT_version_3 internal static fixed bin(17,0) initial dcl 9-143 REW_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 R_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 5-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SP internal static char(1) initial packed unaligned dcl 1-8 S_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 Segment internal static fixed bin(17,0) initial dcl 6-56 Sequential_input_output internal static fixed bin(17,0) initial dcl 8-15 Sequential_update internal static fixed bin(17,0) initial dcl 8-15 Stream_input internal static fixed bin(17,0) initial dcl 8-15 Stream_input_output internal static fixed bin(17,0) initial dcl 8-15 Stream_output internal static fixed bin(17,0) initial dcl 8-15 USAGE internal static char(256) initial packed unaligned dcl 1-38 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 10-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 10-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 10-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 10-50 VARIABLE_FILE_TYPE internal static fixed bin(17,0) initial dcl 1-23 W_ACCESS internal static bit(3) initial packed unaligned dcl 5-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 area_ptr automatic pointer dcl 47 arg_info based structure level 1 dcl 9-136 iox_$attach_loud 000000 constant entry external dcl 7-8 iox_$attach_ptr 000000 constant entry external dcl 7-8 iox_$close_file 000000 constant entry external dcl 7-8 iox_$delete_record 000000 constant entry external dcl 7-8 iox_$detach 000000 constant entry external dcl 7-8 iox_$err_no_operation 000000 constant entry external dcl 7-8 iox_$err_not_attached 000000 constant entry external dcl 7-8 iox_$err_not_closed 000000 constant entry external dcl 7-8 iox_$err_not_open 000000 constant entry external dcl 7-8 iox_$error_output external static pointer dcl 7-41 iox_$find_iocb 000000 constant entry external dcl 7-8 iox_$find_iocb_n 000000 constant entry external dcl 7-8 iox_$get_chars 000000 constant entry external dcl 7-8 iox_$get_line 000000 constant entry external dcl 7-8 iox_$look_iocb 000000 constant entry external dcl 7-8 iox_$move_attach 000000 constant entry external dcl 7-8 iox_$open_file 000000 constant entry external dcl 7-8 iox_$position 000000 constant entry external dcl 7-8 iox_$propagate 000000 constant entry external dcl 7-8 iox_$put_chars 000000 constant entry external dcl 7-8 iox_$read_key 000000 constant entry external dcl 7-8 iox_$read_length 000000 constant entry external dcl 7-8 iox_$rewrite_record 000000 constant entry external dcl 7-8 iox_$seek_key 000000 constant entry external dcl 7-8 iox_$user_input external static pointer dcl 7-41 iox_$user_output external static pointer dcl 7-41 iox_modes internal static char(24) initial array dcl 8-6 logout_string automatic structure level 1 dcl 73 multics_file_exists automatic bit(1) packed unaligned dcl 87 pit based structure level 1 dcl 9-50 pit_$ external static bit(36) dcl 9-47 seq_info based structure level 1 unaligned dcl 4-11 short_iox_modes internal static char(4) initial array dcl 8-12 star_ALL_ENTRIES_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-114 star_BRANCHES_ONLY internal static fixed bin(2,0) initial dcl 3-110 star_LINK internal static fixed bin(2,0) initial unsigned dcl 3-119 star_LINKS_ONLY internal static fixed bin(2,0) initial dcl 3-109 star_LINKS_ONLY_WITH_LINK_PATHS internal static fixed bin(3,0) initial dcl 3-112 star_SEGMENT internal static fixed bin(2,0) initial unsigned dcl 3-120 star_branch_count automatic fixed bin(17,0) dcl 3-13 star_dir_list_branch based structure array level 1 dcl 3-59 star_link_count automatic fixed bin(17,0) dcl 3-17 star_link_pathname based char packed unaligned dcl 3-102 star_links based structure array level 1 dcl 3-76 star_linkx automatic fixed bin(17,0) dcl 3-18 star_list_branch based structure array level 1 dcl 3-41 star_list_branch_ptr automatic pointer dcl 3-16 star_list_names based char(32) array packed unaligned dcl 3-92 star_list_names_ptr automatic pointer dcl 3-20 star_select_sw automatic fixed bin(3,0) dcl 3-21 status_link based structure level 1 dcl 6-38 status_pathname based char dcl 6-47 term_structure_ptr automatic pointer dcl 104 terminate_process_ 000000 constant entry external dcl 155 tiap automatic pointer dcl 2-9 toap automatic pointer dcl 2-30 uns_info based structure level 1 unaligned dcl 4-1 vbl_info based structure level 1 unaligned dcl 4-55 NAMES DECLARED BY EXPLICIT CONTEXT. Check_Multics_File 003123 constant entry internal dcl 617 ref 572 588 Cleanup_Handler 005557 constant entry internal dcl 992 ref 307 987 Create_Multics_File 003526 constant entry internal dcl 679 ref 592 ERROR 005240 constant entry internal dcl 923 ref 226 231 234 245 369 378 405 451 464 569 611 622 646 648 707 715 732 741 751 776 793 814 822 838 848 853 858 873 882 File_Definition_Dialogue 001533 constant entry internal dcl 329 ref 254 295 Get_Next_Path 003753 constant entry internal dcl 721 ref 565 Get_Saved_Attributes 004375 constant entry internal dcl 786 ref 576 LAST_FILE_RETURN 001425 constant label dcl 307 ref 383 OK_Dialogue 005124 constant entry internal dcl 869 ref 247 Open_Multics_File 004461 constant entry internal dcl 806 ref 574 594 RETURN 001431 constant label dcl 310 ref 988 Set_Saved_Attributes 004716 constant entry internal dcl 829 ref 596 Verify_File_Attributes 004774 constant entry internal dcl 845 ref 589 debug_off 001523 constant entry external dcl 1030 debug_on 001511 constant entry external dcl 1025 l6_tran_overseer_ 000717 constant entry external dcl 28 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6560 6716 6017 6570 Length 7460 6017 136 525 540 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME l6_tran_overseer_ 1190 external procedure is an external procedure. on unit on line 224 64 on unit on unit on line 226 88 on unit File_Definition_Dialogue internal procedure shares stack frame of external procedure l6_tran_overseer_. Check_Multics_File internal procedure shares stack frame of external procedure l6_tran_overseer_. Create_Multics_File internal procedure shares stack frame of external procedure l6_tran_overseer_. Get_Next_Path internal procedure shares stack frame of external procedure l6_tran_overseer_. Get_Saved_Attributes internal procedure shares stack frame of external procedure l6_tran_overseer_. Open_Multics_File internal procedure shares stack frame of external procedure l6_tran_overseer_. Set_Saved_Attributes internal procedure shares stack frame of external procedure l6_tran_overseer_. Verify_File_Attributes internal procedure shares stack frame of external procedure l6_tran_overseer_. OK_Dialogue internal procedure shares stack frame of external procedure l6_tran_overseer_. ERROR 194 internal procedure is declared options(non_quick), and is declared options(variable). Cleanup_Handler 90 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 debug_flag l6_tran_overseer_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME Cleanup_Handler 000100 code Cleanup_Handler ERROR 000100 arg_list_ptr ERROR 000102 arg_len ERROR 000104 arg_ptr ERROR 000106 caller_code ERROR 000107 code ERROR 000110 err_msg ERROR 000210 err_msg_len ERROR 000211 nargs ERROR 000212 pic_err_msg_len ERROR l6_tran_overseer_ 000100 P_error_message l6_tran_overseer_ 000201 P_code l6_tran_overseer_ 000202 auto_status_branch l6_tran_overseer_ 000214 auto_transfer_input_args l6_tran_overseer_ 000235 auto_transfer_output_args l6_tran_overseer_ 000242 code l6_tran_overseer_ 000243 comm_buffer_len l6_tran_overseer_ 000244 file_buffer_len l6_tran_overseer_ 000245 i l6_tran_overseer_ 000246 ignored_len l6_tran_overseer_ 000247 last_file l6_tran_overseer_ 000250 level_6_chars_read l6_tran_overseer_ 000251 level_6_chars_to_write l6_tran_overseer_ 000252 level_6_data_type l6_tran_overseer_ 000253 level_6_dir l6_tran_overseer_ 000325 level_6_entry l6_tran_overseer_ 000335 level_6_file_type l6_tran_overseer_ 000336 level_6_iocbp l6_tran_overseer_ 000340 level_6_max_record_size l6_tran_overseer_ 000341 level_6_pathname l6_tran_overseer_ 000413 multics_chars_read l6_tran_overseer_ 000414 multics_chars_to_write l6_tran_overseer_ 000415 multics_data_type l6_tran_overseer_ 000416 multics_dir l6_tran_overseer_ 000470 multics_entry l6_tran_overseer_ 000500 multics_file_attach_desc l6_tran_overseer_ 000601 multics_file_block_size l6_tran_overseer_ 000602 multics_file_iocbp l6_tran_overseer_ 000604 multics_file_l6_type l6_tran_overseer_ 000605 multics_file_type l6_tran_overseer_ 000606 multics_file_open_mode l6_tran_overseer_ 000607 multics_file_size l6_tran_overseer_ 000610 multics_is_sender l6_tran_overseer_ 000611 multics_pathname l6_tran_overseer_ 000663 saved_level_6_entry l6_tran_overseer_ 000673 saved_multics_entry l6_tran_overseer_ 000704 star_area_ptr l6_tran_overseer_ 000706 star_entries_index l6_tran_overseer_ 000707 star_names_generated l6_tran_overseer_ 000710 suffix l6_tran_overseer_ 000720 temp_seg_ptrs l6_tran_overseer_ 000724 info l6_tran_overseer_ 000762 star_entry_count l6_tran_overseer_ 000764 star_entry_ptr l6_tran_overseer_ 000766 star_names_ptr l6_tran_overseer_ 000770 status_area_ptr l6_tran_overseer_ 000772 status_ptr l6_tran_overseer_ 000774 pit_ptr l6_tran_overseer_ 001010 acceptor_file_count File_Definition_Dialogue 001011 chars_read File_Definition_Dialogue 001012 ci_size File_Definition_Dialogue 001014 char_position File_Definition_Dialogue 001015 data_type File_Definition_Dialogue 001016 file_access File_Definition_Dialogue 001020 file_size File_Definition_Dialogue 001022 file_type File_Definition_Dialogue 001023 fixed_definition_len File_Definition_Dialogue 001024 indicator File_Definition_Dialogue 001025 initiator_file_count File_Definition_Dialogue 001026 key_length File_Definition_Dialogue 001027 key_offset File_Definition_Dialogue 001030 key_type File_Definition_Dialogue 001031 l6_path_len File_Definition_Dialogue 001032 output_message_len File_Definition_Dialogue 001033 percent_fill File_Definition_Dialogue 001034 record_size File_Definition_Dialogue 001035 rest_of_definition_len File_Definition_Dialogue 001036 starting_record File_Definition_Dialogue 001040 saved_attributes File_Definition_Dialogue 001166 code Get_Next_Path THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other_desc call_int_other return_mac tra_ext_1 mpfx2 enable_op shorten_stack ext_entry ext_entry_desc int_entry reverse_cs set_chars_eis unpack_picture op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. add_char_offset_ check_star_name_$entry cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr expand_pathname_ get_equal_name_ get_temp_segments_ get_user_free_area_ hcs_$append_branch hcs_$star_ hcs_$status_ ioa_$general_rs ioa_$rsnnl ioa_$rsnpnnl iox_$attach_name iox_$close iox_$control iox_$destroy_iocb iox_$detach_iocb iox_$modes iox_$open iox_$read_record iox_$write_record l6_tran_receive_file_ l6_tran_send_file_ l6_tran_util_$get_chars l6_tran_util_$put_chars match_star_name_ pathname_ release_temp_segments_ suffixed_name_$make timer_manager_$sleep vfile_status_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_file error_table_$badstar error_table_$dirseg error_table_$fatal_error error_table_$not_closed error_table_$not_detached iox_$user_io sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 28 000713 201 000732 203 000736 204 000737 208 000741 209 000743 210 000744 211 000750 212 000752 213 000754 214 000757 215 000760 217 000761 218 000762 219 000763 220 000764 221 000765 222 000766 224 000767 226 001004 230 001041 231 001072 233 001113 234 001136 236 001157 237 001163 241 001164 242 001166 244 001172 245 001206 247 001232 251 001233 252 001234 254 001237 256 001240 257 001242 258 001244 259 001246 260 001250 261 001252 262 001254 263 001256 264 001260 266 001262 268 001265 270 001270 271 001272 274 001276 276 001326 279 001327 281 001331 283 001361 288 001365 289 001376 290 001407 291 001420 293 001421 295 001424 307 001425 310 001431 324 001444 325 001474 327 001507 1025 001510 1027 001516 1028 001521 1030 001522 1032 001530 1033 001532 329 001533 368 001534 369 001553 371 001574 372 001605 374 001630 376 001635 378 001672 379 001713 383 001716 387 001723 389 001726 390 001730 392 001733 395 001750 398 001751 400 001760 402 001762 404 002000 405 002024 407 002051 410 002071 412 002074 413 002077 417 002102 418 002104 419 002106 421 002107 423 002130 424 002132 426 002141 428 002145 430 002146 431 002170 434 002171 438 002203 440 002207 441 002232 443 002233 445 002236 447 002245 449 002246 451 002257 454 002304 456 002305 458 002307 460 002316 462 002317 464 002330 467 002355 469 002356 471 002360 474 002366 476 002370 477 002377 479 002400 481 002402 484 002410 485 002412 487 002413 489 002415 492 002424 493 002425 495 002426 497 002430 500 002436 501 002440 503 002441 505 002443 508 002451 509 002453 511 002454 513 002456 516 002464 517 002466 519 002467 521 002471 523 002500 524 002501 526 002502 528 002504 530 002512 531 002514 533 002515 535 002517 537 002525 538 002527 540 002530 542 002532 545 002540 546 002542 548 002543 550 002545 553 002553 558 002555 563 002556 565 002561 567 002563 568 002565 569 002614 572 002641 574 002642 576 002643 577 002644 580 002645 581 002650 583 002652 584 002654 586 002703 588 002705 589 002706 590 002707 592 002710 594 002711 596 002712 601 002713 603 002737 607 003047 608 003060 610 003064 611 003101 615 003122 617 003123 620 003124 622 003126 627 003161 629 003164 630 003166 631 003170 634 003171 635 003172 638 003173 642 003175 643 003204 645 003206 646 003242 648 003267 650 003316 651 003320 652 003333 653 003370 655 003372 657 003445 659 003460 661 003462 663 003470 665 003471 667 003473 671 003515 673 003523 675 003525 679 003526 682 003527 683 003531 685 003533 688 003544 690 003552 692 003554 694 003556 696 003563 697 003564 699 003565 701 003566 703 003567 705 003575 707 003623 711 003660 714 003700 715 003725 717 003752 721 003753 728 003755 730 003772 732 004002 735 004031 737 004034 739 004042 741 004105 747 004136 749 004152 751 004154 754 004203 759 004205 760 004217 764 004237 766 004252 768 004254 770 004265 775 004272 776 004315 780 004345 782 004373 786 004375 789 004376 791 004401 793 004420 797 004445 798 004456 800 004457 802 004460 806 004461 809 004462 813 004533 814 004575 817 004632 819 004640 821 004642 822 004661 825 004715 829 004716 832 004717 834 004722 835 004724 837 004731 838 004746 841 004773 845 004774 848 004775 853 005034 858 005072 863 005123 869 005124 872 005125 873 005144 875 005165 878 005173 879 005175 881 005200 882 005215 884 005236 923 005237 936 005245 938 005255 940 005260 941 005262 943 005301 946 005310 949 005313 951 005316 952 005325 953 005374 956 005375 957 005400 959 005401 962 005402 963 005405 964 005410 969 005411 974 005422 976 005437 979 005514 982 005533 983 005544 987 005546 988 005553 992 005556 997 005564 999 005575 1003 005617 1005 005624 1008 005663 1011 005672 1013 005677 1014 005710 1015 005722 1018 005734 1021 005770 ----------------------------------------------------------- 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