COMPILATION LISTING OF SEGMENT cmcs_create_queues_ Compiled by: Multics PL/I Compiler, Release 31b, of April 24, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 05/24/89 1024.0 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 6* * * 7* *********************************************************** */ 8 9 10 11 12 /****^ HISTORY COMMENTS: 13* 1) change(89-04-23,Zimmerman), approve(89-04-23,MCR8060), 14* audit(89-05-05,RWaters), install(89-05-24,MR12.3-1048): 15* MCR8060 cmcs_create_queues_.pl1 Reformatted code to new Cobol standard. 16* END HISTORY COMMENTS */ 17 18 19 /* Modified on 04/28/81 by FCH, [4.4-1], once per process initialization, BUG468 */ 20 /* Modified since Version 4.3 */ 21 22 23 24 /* format: style3 */ 25 cmcs_create_queues_: 26 proc (a_code); 27 28 /* This COBOL MCS subroutine is used by cobol_mcs_admin to do the actual work of creating 29* the CMCS queues, cmcs_wait_ctl.control, cmcs_system_ctl.control, and cmcs_queue_ctl.control. */ 30 31 /* Bob May, 6/30/77 */ 32 33 dcl a_code fixed bin (35); 34 35 dcl vt_count fixed bin, 36 pic_value pic "9999", /* to build switch names */ 37 (q_name, sw_name) char (32), 38 iocbp ptr, 39 (hdr_len_21, constant_hdr_len) 40 fixed bin (21); 41 42 dcl (i, j, k) fixed bin, 43 temp_ctl_ptr ptr, /* for use with make_seg */ 44 my_name char (19) init ("cmcs_create_queues_"); 45 46 47 48 dcl get_pdir_ entry () returns (char (168)); 49 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)); 50 dcl hcs_$make_seg entry (char (*) aligned, char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 51 dcl hcs_$truncate_seg entry (ptr, fixed bin (18), fixed bin (35)); 52 53 dcl ( 54 error_table_$namedup, 55 error_table_$segknown, 56 error_table_$action_not_performed, 57 error_table_$no_record 58 ) fixed bin (35) external; 59 60 dcl ( 61 sub_err_, 62 ioa_, 63 ioa_$rsnnl 64 ) entry options (variable); 65 66 dcl sub_err_retval fixed bin (35); /* dummy for sub_err_ */ 67 68 dcl (addr, index, null, size, string, substr, truncate) 69 builtin; 70 71 dcl cleanup condition; 72 73 dcl vfile_table_ptr ptr int static init (null); 74 75 dcl vt_index fixed bin; /* manual index into vfile_table when being built */ 76 77 dcl 1 vfile_table (vt_count) based (vfile_table_ptr), 78 2 switch_name char (32), 79 2 queue_name char (32), 80 2 tree_ctl_eindex fixed bin, 81 2 iocb_ptr ptr, 82 2 error_flag bit (1); 83 84 dcl var_cmcs_dir char (256) varying; /* temp to build vfile_ attach descr */ 85 dcl attach_descr char (256); 86 87 dcl 1 vfile_rs1 like vfile_rs; 88 89 dcl zero_overlay_len fixed bin, 90 zero_overlay (zero_overlay_len) fixed bin (35) based; 91 /* to zero space in stack or pre-used structure entries */ 92 93 /* */ 94 1 1 /* BEGIN INCLUDE FILE... cmcs_control_hdr.incl.pl1 */ 1 2 1 3 /* This include file is the 1st part of all cobol_mcs tables */ 1 4 1 5 /* Bob May, 4/30/77 */ 1 6 1 7 dcl control_hdr_len fixed bin int static options (constant) init (32); 1 8 1 9 dcl control_hdr_ptr ptr; 1 10 1 11 dcl 1 control_hdr aligned based (control_hdr_ptr), 1 12 2 lockword bit (36) aligned, /* for process_id */ 1 13 2 version fixed bin, 1 14 2 clock_created fixed bin (71), 1 15 2 author aligned, 1 16 3 group_id char (32), /* person.proj.tag */ 1 17 3 process_id bit (36), 1 18 2 max_size fixed bin (18), /* maximum number of entries seg can hold */ 1 19 2 current_size fixed bin (18), /* index of last active entry */ 1 20 2 entry_count fixed bin (18), /* number of active entries */ 1 21 2 cmcs_control_hdr_filler (16) fixed bin; /* words (17-32) for later expansion */ 1 22 1 23 /* END INCLUDE FILE... cmcs_control_hdr.incl.pl1 */ 95 2 1 /* BEGIN INCLUDE FILE... cmcs_entry_dcls.incl.pl1 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(89-04-23,Zimmerman), approve(89-04-23,MCR8087), 2 7* audit(89-05-05,RWaters), install(89-05-24,MR12.3-1048): 2 8* MCR8087 cmcs_entry_dcls.incl.pl1 Shorten wait time for cmcs_station_ctl_. 2 9* END HISTORY COMMENTS */ 2 10 2 11 2 12 /* Entry declarations for the COBOL MCS runtime support package */ 2 13 2 14 /* Modified on 10/20/84 by FCH, [5.3-1] */ 2 15 /* Modified on 04/29/81 by FCH, [4.4-1] */ 2 16 /* Bob May, 6/01/77 */ 2 17 2 18 dcl cmcs_create_queues_ entry (fixed bin (35)); 2 19 2 20 dcl cmcs_date_time_ entry (fixed bin (71), char (6) unaligned, char (8) unaligned); 2 21 2 22 dcl cmcs_decode_status_ entry (ptr, ptr, fixed bin, fixed bin, fixed bin (35)); 2 23 2 24 dcl cmcs_expand_tree_path_ entry (char (*), char (48), fixed bin (35)); 2 25 2 26 dcl cmcs_fillin_hdr_ entry (ptr, fixed bin, fixed bin, fixed bin, fixed bin (35)); 2 27 2 28 dcl cmcs_initiate_ctl_ entry (char (*), ptr, fixed bin (35)); 2 29 2 30 dcl cmcs_print_ entry (ptr, ptr, fixed bin (35), ptr, fixed bin (35)); 2 31 2 32 dcl cmcs_purge_queues_ entry (fixed bin, bit (1), fixed bin (35)); 2 33 2 34 dcl cmcs_queue_ctl_$accept_message_count entry (ptr, fixed bin, fixed bin (35)); 2 35 dcl cmcs_queue_ctl_$disable entry (ptr, fixed bin, char (10), fixed bin (35)); 2 36 dcl cmcs_queue_ctl_$enable entry (ptr, fixed bin, char (10), fixed bin (35)); 2 37 dcl cmcs_queue_ctl_$print entry (ptr, fixed bin, ptr, fixed bin (35)); 2 38 dcl cmcs_queue_ctl_$purge entry (ptr, fixed bin, fixed bin (35)); 2 39 dcl cmcs_queue_ctl_$receive entry (ptr, fixed bin, ptr, fixed bin, fixed bin (35)); 2 40 dcl cmcs_queue_ctl_$send entry (ptr, fixed bin, ptr, fixed bin, fixed bin, bit (36), fixed bin (35)); 2 41 dcl cmcs_queue_ctl_$stop_run entry (fixed bin, fixed bin (35)); 2 42 2 43 dcl cmcs_scramble_ entry (char (10)) returns (char (10)); 2 44 2 45 dcl cmcs_set_lock_$lock entry (bit (36) aligned, fixed bin, fixed bin (35)); /*[5.3-1]*/ 2 46 dcl cmcs_set_lock_$unlock entry (bit (36) aligned, fixed bin (35)); 2 47 2 48 dcl cmcs_station_ctl_$attach entry (char (12), fixed bin, fixed bin (35)); 2 49 dcl cmcs_station_ctl_$detach entry (fixed bin, fixed bin (35)); 2 50 dcl cmcs_station_ctl_$detach_name entry (char (12), fixed bin (35)); 2 51 dcl cmcs_station_ctl_$disable_input_terminal entry (ptr, char (10), fixed bin (35)); 2 52 dcl cmcs_station_ctl_$disable_output_terminal entry (ptr, char (10), fixed bin (35)); 2 53 dcl cmcs_station_ctl_$enable_input_terminal entry (ptr, char (10), fixed bin (35)); 2 54 dcl cmcs_station_ctl_$enable_output_terminal entry (ptr, char (10), fixed bin (35)); 2 55 dcl cmcs_station_ctl_$find_destination entry (char (12), fixed bin, ptr, fixed bin (35)); /*[4.4-1]*/ 2 56 dcl cmcs_station_ctl_$input_disabled entry (fixed bin, bit (1), fixed bin (35)); 2 57 dcl cmcs_station_ctl_$output_disabled entry (fixed bin, bit (1), fixed bin (35)); 2 58 dcl cmcs_station_ctl_$validate entry (char (12), fixed bin, fixed bin (35)); 2 59 2 60 dcl cmcs_status_list_ctl_$add entry (ptr, ptr, ptr, fixed bin, fixed bin (35)); 2 61 dcl cmcs_status_list_ctl_$delete entry (ptr, ptr, ptr, fixed bin, fixed bin (35)); 2 62 dcl cmcs_status_list_ctl_$move entry (ptr, ptr, ptr, fixed bin, fixed bin, fixed bin (35)); 2 63 2 64 dcl cmcs_terminal_ctl_$find entry (char (8), char (12), fixed bin (35)); 2 65 2 66 dcl cmcs_tree_ctl_$find_destination entry (char (12), fixed bin, ptr, fixed bin (35)); 2 67 dcl cmcs_tree_ctl_$find_index entry (fixed bin, ptr, fixed bin (35)); 2 68 dcl cmcs_tree_ctl_$find_tree_path entry (ptr, fixed bin, fixed bin, ptr, fixed bin (35)); 2 69 dcl cmcs_tree_ctl_$find_qual_name entry (char (12), fixed bin, ptr, char (52), fixed bin (35)); /*[4.4-1]*/ 2 70 2 71 dcl cmcs_wait_ctl_$add entry (char (48), fixed bin, fixed bin (35)); 2 72 dcl cmcs_wait_ctl_$delete entry (fixed bin, fixed bin (35)); 2 73 dcl cmcs_wait_ctl_$find entry (char (48), ptr, fixed bin (35)); 2 74 dcl cmcs_wait_ctl_$mp_available entry (fixed bin, fixed bin, fixed bin (35)); 2 75 dcl cmcs_wait_ctl_$mp_login entry (fixed bin, fixed bin (35)); 2 76 dcl cmcs_wait_ctl_$mp_logout entry (fixed bin, fixed bin (35)); 2 77 dcl cmcs_wait_ctl_$clear_mp entry (fixed bin (35)); 2 78 dcl cmcs_wait_ctl_$start_mp entry (fixed bin (35)); 2 79 dcl cmcs_wait_ctl_$stop_mp entry (fixed bin (35)); 2 80 2 81 /* END INCLUDE FILE... cmcs_entry_dcls.incl.pl1 */ 96 3 1 /* BEGIN INCLUDE FILE... cmcs_iox_processing.incl.pl1, 07/01/74 */ 3 2 3 3 dcl iox_$attach_iocb entry (ptr, char (*), fixed bin (35)), 3 4 iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)), 3 5 iox_$close entry (ptr, fixed bin (35)), 3 6 iox_$control entry (ptr, char (*), ptr, fixed bin (35)), 3 7 iox_$delete_record entry (ptr, fixed bin (35)), 3 8 iox_$detach_iocb entry (ptr, fixed bin (35)), 3 9 iox_$find_iocb entry (char (*), ptr, fixed bin (35)), 3 10 iox_$get_chars entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)), 3 11 iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)), 3 12 iox_$modes entry (ptr, char (*), char (*), fixed bin (35)), 3 13 iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)), 3 14 iox_$position entry (ptr, fixed bin, fixed bin (21), fixed bin (35)), 3 15 iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)), 3 16 iox_$read_key entry (ptr, char (256) varying, fixed bin (21), fixed bin (35)), 3 17 iox_$read_length entry (ptr, fixed bin (21), fixed bin (35)), 3 18 iox_$read_record entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)), 3 19 iox_$rewrite_record entry (ptr, ptr, fixed bin (21), fixed bin (35)), 3 20 iox_$seek_key entry (ptr, char (256) varying, fixed bin (21), fixed bin (35)), 3 21 iox_$write_record entry (ptr, ptr, fixed bin (21), fixed bin (35)); 3 22 3 23 /* * * EXTERNAL * * */ 3 24 3 25 dcl (iox_$user_io, 3 26 iox_$user_input, 3 27 iox_$user_output, 3 28 iox_$error_output) ptr external; 3 29 3 30 /* * * MODES * * */ 3 31 3 32 /* 3 33* 1 stream_input 3 34* 2 stream_output 3 35* 3 stream_input_output 3 36* 4 sequential_input 3 37* 5 sequential_output 3 38* 6 sequential_input_output 3 39* 7 sequential_update 3 40* 8 keyed_sequential_input 3 41* 9 keyed_sequential_output 3 42* 10 keyed_sequential_update 3 43* 11 direct_input 3 44* 12 direct_output 3 45* 13 direct_update 3 46**/ 3 47 3 48 /* END INCLUDE FILE... cmcs_iox_processing.incl.pl1 */ 97 4 1 /* BEGIN INCLUDE FILE... cmcs_key_dcls.incl.pl1 */ 4 2 4 3 /* 4 4* This COBOL MCS include file gives the structure of the key fields used to access 4 5* the message records in an indexed vfile. 4 6**/ 4 7 4 8 /* Bob May, 5/31/77 */ 4 9 4 10 dcl key char (256) varying; /* used by iox_ */ 4 11 4 12 dcl 1 key_struc aligned, 4 13 (2 key_len init (8), 4 14 2 msg_no, 4 15 2 seg_no) fixed bin (35); 4 16 4 17 dcl based_key char (8) varying based (addr (key_struc)); 4 18 4 19 /* END INCLUDE FILE... cmcs_key_dcls.incl.pl1 */ 98 5 1 /* BEGIN INCLUDE FILE ... cmcs_queue_ctl.incl.pl1 */ 5 2 5 3 /* This COBOL MCSD include file defines the structure of the cmcs_queue_ctl.control segment. */ 5 4 5 5 /* Bob May, 5/31/77 */ 5 6 5 7 dcl (queue_ctl_hdr_len init (0), 5 8 queue_ctl_entry_len init (48), 5 9 queue_ctl_version init (1)) fixed bin internal static options (constant); 5 10 5 11 dcl queue_ctl_ptr ptr int static; 5 12 5 13 dcl 1 queue_ctl aligned based (queue_ctl_ptr), 5 14 2 hdr like control_hdr, 5 15 2 entries (queue_ctl.current_size) like queue_ctl_entry; 5 16 5 17 dcl queue_ctl_eindex fixed bin; 5 18 5 19 dcl queue_ctl_eptr ptr; 5 20 5 21 dcl 1 queue_ctl_entry aligned based (queue_ctl_eptr), 5 22 2 lockword bit (36) aligned, 5 23 2 tree_ctl_eindex fixed bin, /* index of corresponding entry in tree_ctl */ 5 24 2 tree_path, 5 25 3 level_names (4) char (12), 5 26 2 queue_name char (32), /* includes suffix */ 5 27 2 msg_no fixed bin (35), /* always increasing, until reset manually */ 5 28 2 flags, 5 29 (3 input_disabled_sw bit (1), 5 30 3 mp_entered_sw bit (1), 5 31 3 mp_active_sw bit (1), 5 32 3 mp_sw bit (1), 5 33 3 cmd_sw bit (1), 5 34 3 filler bit (31)) unaligned, 5 35 2 filler (10) fixed bin (35), 5 36 2 mp_lockword bit (36) aligned, /* process_id of message processor */ 5 37 2 status_lists_lockword bit (36) aligned, /* only to manipulate the status lists */ 5 38 2 status_list_ctl_entries (4) like status_list_ctl_entry; /* everything belonging to this queue */ 5 39 5 40 dcl status_list_ctl_eindex fixed bin; 5 41 5 42 dcl status_list_ctl_eptr ptr; 5 43 5 44 dcl 1 status_list_ctl_entry aligned based (status_list_ctl_eptr), 5 45 2 count fixed bin, 5 46 2 descrs, 5 47 3 f_descr like vfile_descr, 5 48 3 b_descr like vfile_descr; 5 49 5 50 /* END INCLUDE FILE ... cmcs_queue_ctl.incl.pl1 */ 99 6 1 /* BEGIN INCLUDE FILE ... cmcs_system_ctl.incl.pl1 */ 6 2 6 3 /* 6 4* This COBOL MCS include file holds all the COBOL MCS system-wide parameters. 6 5**/ 6 6 6 7 /* Bob May, 5/31/77 */ 6 8 6 9 dcl (system_ctl_hdr_len init (32), 6 10 system_ctl_entry_len init (0), 6 11 system_ctl_version init (1)) fixed bin internal static options (constant); 6 12 6 13 dcl system_ctl_ptr ptr int static; 6 14 6 15 dcl 1 system_ctl aligned based (system_ctl_ptr), 6 16 2 hdr like control_hdr, 6 17 2 flags, 6 18 (3 mp_started_sw bit (1), 6 19 3 filler bit (35)) unaligned, 6 20 2 mp_started_count fixed bin, /* zero for this version */ 6 21 2 mp_active_count fixed bin, /* number that have logged in so far, less the logouts */ 6 22 2 password char (10), /* scrambled password for all cmcs functions */ 6 23 2 lock_wait_time fixed bin, /* number of seconds to wait before giving up */ 6 24 2 filler (25) fixed bin (35); 6 25 6 26 /* END INCLUDE FILE ... cmcs_system_ctl.incl.pl1 */ 100 7 1 /* BEGIN INCLUDE FILE ... cmcs_tree_ctl.incl.pl1 */ 7 2 7 3 /* 7 4* This COBOL MCS include file defines the sstructure used for accessing 7 5* the MCS queue hierarchy and controlling message I/O for each entry. 7 6**/ 7 7 7 8 /* Bob May, 5/31/77 */ 7 9 7 10 dcl (tree_ctl_hdr_len init (32), 7 11 tree_ctl_entry_len init (144), /* 136, plus fudge for ptr alignments */ 7 12 tree_ctl_version init (1)) fixed bin internal static options (constant); 7 13 7 14 dcl tree_ctl_ptr ptr int static; 7 15 7 16 dcl 1 tree_ctl aligned based (tree_ctl_ptr), 7 17 2 hdr like control_hdr, 7 18 2 queue_count fixed bin, /* total of queue entries for hierarchy */ 7 19 2 filler (31) fixed bin (35), 7 20 2 entries (tree_ctl.current_size) like tree_ctl_entry; 7 21 7 22 dcl tree_ctl_eindex fixed bin; 7 23 7 24 dcl tree_ctl_eptr ptr; 7 25 7 26 dcl 1 tree_ctl_entry aligned based (tree_ctl_eptr), 7 27 2 level_info, /* len = 15 */ 7 28 3 tree_path, 7 29 4 level_names (4) char (12), 7 30 3 entry_flags, 7 31 (4 inactive_sw bit (1), 7 32 4 cmd_sw bit (1), 7 33 4 mp_sw bit (1), 7 34 /* switch separator */ 7 35 4 cobol_program_id_sw bit (1), 7 36 4 queue_sw bit (1), 7 37 4 filler bit (31)) unaligned, 7 38 3 level_no fixed bin, /* level within the hierarchy */ 7 39 3 subtree_count fixed bin, 7 40 2 static_queue_info, /* len = 9 */ 7 41 3 queue_name char (32), /* without the .cmcs_queue suffix */ 7 42 3 queue_ctl_eindex fixed bin, /* to compute addr of table entry */ 7 43 2 command_info, /* len = 75 */ 7 44 3 cmd_line_len fixed bin, 7 45 3 cmd_line char (128), 7 46 3 mp_line_len fixed bin, 7 47 3 mp_line char (128), 7 48 3 cobol_program_id_len fixed bin, 7 49 3 cobol_program_id char (32), 7 50 2 io_info, /* len = 37, sum of all level 3s */ 7 51 3 io_flags, /* len = 1 */ 7 52 (4 io_in_process_sw bit (1), 7 53 4 partial_in_process_sw bit (1), 7 54 4 rcv_wait_sw bit (1), 7 55 /* switch separator */ 7 56 4 rcv_msg_sw bit (1), /* on if user did a receive msg */ 7 57 4 rcv_seg_sw bit (1), /* on if user did a receive seg */ 7 58 4 filler bit (31)) unaligned, 7 59 3 dynamic_queue_info, /* len = 13 */ 7 60 4 switch_name char (32) unaligned, 7 61 4 queue_ctl_eptr ptr, 7 62 4 iocb_ptr ptr, 7 63 4 vfile_status fixed bin, /* 0 - not active/detached */ 7 64 /* 1 - attached, but not open */ 7 65 /* 2 - open */ 7 66 3 msg_hdr_info, /* len = 9 */ 7 67 4 msg_hdr_ptr ptr, /* ptr to base of current msg */ 7 68 4 io_type fixed bin, 7 69 4 io_subtype fixed bin, 7 70 4 seg_count fixed bin (35), /* total no of msg segments */ 7 71 4 msg_len fixed bin (35), /* total msg length (sum of all segments) */ 7 72 4 msg_descr like vfile_descr, 7 73 4 msg_key, 7 74 5 msg_no fixed bin (35), 7 75 5 seg_no fixed bin (35), 7 76 3 tseg_info, /* len = 3 */ 7 77 4 tseg_ptr ptr, /* temp seg to build segment */ 7 78 4 tseg_len fixed bin (35), 7 79 3 msg_seg_info, /* len = 6 */ 7 80 4 msg_seg_ptr ptr, /* ptr to base of current msg_seg */ 7 81 4 msg_seg_descr like vfile_descr, 7 82 4 msg_seg_len fixed bin (35), 7 83 4 msg_seg_left_index fixed bin (35), 7 84 4 msg_seg_left_len fixed bin (35), 7 85 3 buffer_info, /* len = 5 */ 7 86 4 buffer_ptr ptr, 7 87 4 buffer_len fixed bin (35), 7 88 4 buffer_left_index fixed bin (35), 7 89 4 buffer_left_len fixed bin (35); 7 90 7 91 /* END INCLUDE FILE ... cmcs_tree_ctl.incl.pl1 */ 101 8 1 /* BEGIN INCLUDE FILE ... cmcs_user_ctl.incl.pl1 */ 8 2 8 3 /* 8 4* This COBOL MCS include file defines the global, process-dependent variables that are 8 5* not part of the PD copy of cmcs_tree_ctl.control. 8 6**/ 8 7 8 8 /* Modified on 05/06/81 by FCH, [4.4-1], attach command */ 8 9 /* Bob May, 5/31/77 */ 8 10 8 11 dcl user_ctl_exists_sw bit (1) aligned int static init ("0"b); /* indicates legitimacy of external_user_ctl_ptr */ 8 12 8 13 dcl external_user_ctl_ptr ptr external; /* global ptr for user_ctl */ 8 14 8 15 dcl user_ctl_ptr ptr int static; 8 16 8 17 dcl 1 user_ctl aligned based (user_ctl_ptr), 8 18 8 19 /* Flags */ 8 20 8 21 2 init_sw, 8 22 3 terminal_ctl bit(1), 8 23 3 tree_ctl bit(1), 8 24 3 status_list_ctl bit(1), 8 25 3 station_ctl bit(1), 8 26 3 queue_ctl bit(1), 8 27 3 set_lock bit(1), 8 28 3 wait_ctl bit(1), 8 29 3 purge_queues bit(1), 8 30 3 create_queues bit(1), 8 31 3 initiate_ctl bit(1), 8 32 3 mcs bit(1), 8 33 2 flags, 8 34 (3 initialized_sw bit (1), 8 35 3 interactive_sw bit (1), 8 36 3 mp_sw bit (1), /* message processor process */ 8 37 3 terminal_sw bit (1), /* user terminal process */ 8 38 3 admin_sw bit (1), /* cobol_mcs_admin */ 8 39 3 attach_bit bit(1), /*[4.4-1]*/ 8 40 3 rec bit(1), /*[4.4-1]*/ 8 41 3 filler bit (29)) unaligned, 8 42 2 cmcs_dir char (168), 8 43 2 output_file char(168), /*[4.4-1]*/ 8 44 2 station_name char (12), /* current station */ 8 45 2 station_ctl_eindex fixed bin, /* current station */ 8 46 2 process_id bit (36), 8 47 2 process_type fixed bin, /* 0 - not defined, 1 - MP, 2 - terminal, 3 - admin */ 8 48 2 filler fixed bin (35), /* to explicitly align ptrs */ 8 49 2 control_ptrs, 8 50 3 queue_ctl_ptr ptr, 8 51 3 iocb_ptr ptr, /*[4.4-1]*/ 8 52 3 station_ctl_ptr ptr, 8 53 3 system_ctl_ptr ptr, 8 54 3 terminal_ctl_ptr ptr, 8 55 3 tree_ctl_ptr ptr, 8 56 3 wait_ctl_ptr ptr, 8 57 3 filler_ptrs (4) ptr, 8 58 2 terminal_info, 8 59 3 term_id char (4), 8 60 3 term_type fixed bin, 8 61 3 term_channel char (8), 8 62 2 last_receive_info, 8 63 3 tree_path char (48), 8 64 3 tree_ctl_eindex fixed bin, 8 65 3 tree_ctl_eptr ptr, 8 66 2 last_send_info, 8 67 3 dest_name char (12), 8 68 3 tree_ctl_eindex fixed bin, 8 69 3 tree_ctl_eptr ptr, 8 70 2 station_info, 8 71 3 station_count fixed bin, /* must be 1 for phase 1 */ 8 72 3 station_entries (2), 8 73 4 station_name char (12), 8 74 4 station_ctl_eptr ptr, 8 75 4 station_ctl_eindex fixed bin, 8 76 2 wait_info, 8 77 3 wait_ctl_eptr ptr, 8 78 3 wait_ctl_eindex fixed bin, 8 79 3 wait_ctl_mp_eindex fixed bin, /* only for message processors */ 8 80 3 wait_ctl_mp_eptr ptr, 8 81 3 ev_wait_chn fixed bin (71), /* for message processors */ 8 82 3 ev_call_chn fixed bin (71), /* for terminals, to get message responses */ 8 83 3 ev_wait_list_ptr ptr, /* for ipc_$block */ 8 84 3 ev_info_ptr ptr; /* for wakeup */ 8 85 8 86 /* END INCLUDE FILE ... cmcs_user_ctl.incl.pl1 */ 102 9 1 /* BEGIN INCLUDE FILE... cmcs_vfile_rs.incl.pl1 */ 9 2 9 3 /* This COBOL MCS include file is used to reference records by their 9 4* vfile_ descriptors. It is used mainly in the maintenance of 9 5* message status lists. */ 9 6 9 7 /* Bob May, 6/30/77 */ 9 8 9 9 dcl vfile_rs_version fixed bin int static options (constant) init (1); 9 10 9 11 dcl vfile_rs_ptr ptr; 9 12 9 13 dcl 1 vfile_rs aligned based (vfile_rs_ptr), 9 14 2 version fixed bin, /* currently must be set to 1 */ 9 15 2 flags, 9 16 (3 lock_sw bit (1), /* "1"b */ 9 17 3 unlock_sw bit (1), /* "1"b */ 9 18 3 create_sw bit (1), /* "0"b */ 9 19 /* switch separator */ 9 20 3 locate_sw bit (1), /* "0"b for current_rec, "1"b to use descriptor */ 9 21 3 filler bit (32)) unaligned, /* (32) "0"b */ 9 22 2 rec_len fixed bin (21), 9 23 2 max_rec_len fixed bin (21), 9 24 2 rec_ptr ptr, 9 25 2 descr like vfile_descr, /* process INdependent addressing */ 9 26 2 filler fixed bin; /* 0 */ 9 27 9 28 dcl 1 vfile_descr, /* process INdependent addressing */ 9 29 (2 comp_no fixed bin (17), /* component of MSF */ 9 30 2 comp_offset bit (18)) unaligned; /* offset of record in component */ 9 31 9 32 /* END INCLUDE FILE... cmcs_vfile_rs.incl.pl1 */ 103 10 1 /* BEGIN INCLUDE FILE... cmcs_wait_ctl.incl.pl1 */ 10 2 10 3 /* This include file defines the wait control structure for COBOL MCS */ 10 4 10 5 /* Bob May, 5/31/77 */ 10 6 10 7 dcl (wait_ctl_hdr_len init (32), 10 8 wait_ctl_entry_len init (32), 10 9 wait_ctl_version init (1)) fixed bin int static options (constant); 10 10 10 11 dcl wait_ctl_ptr ptr int static; 10 12 10 13 dcl 1 wait_ctl aligned based (wait_ctl_ptr), 10 14 2 hdr like control_hdr, 10 15 2 linked_lists, /* to maintain FIFO processing */ 10 16 3 used, 10 17 4 count fixed bin, 10 18 (4 findex, 10 19 4 bindex) fixed bin (18), 10 20 3 free, 10 21 4 count fixed bin, 10 22 (4 findex, 10 23 4 bindex) fixed bin (18), 10 24 2 mp_info, /* for the message processors */ 10 25 3 mp_lockword bit (36) aligned, 10 26 3 mp_current_size fixed bin, /* max of 10 */ 10 27 3 mp_active_count fixed bin, /* <= current_size */ 10 28 3 mp_entries (10) like wait_ctl_mp_entry, 10 29 2 entries (wait_ctl.current_size) like wait_ctl_entry; 10 30 10 31 dcl wait_ctl_eindex fixed bin; 10 32 10 33 dcl wait_ctl_eptr ptr; 10 34 10 35 dcl 1 wait_ctl_entry aligned based (wait_ctl_eptr), 10 36 2 linked_list_indexes, 10 37 (3 findex, 10 38 3 bindex) fixed bin (18), /* should be FB (18) unsigned */ 10 39 2 lockword bit (36) aligned, /* process that has a msg */ 10 40 2 entry_status fixed bin, /* 0 = free, 1 = used */ 10 41 2 rcv_process_id bit (36), /* process that wants a msg */ 10 42 2 rcv_tree_path, 10 43 3 level_names (4) char (12), /* from receive request */ 10 44 2 abs_tree_path, 10 45 3 level_names (4) char (12), /* full hierarchy path of queue */ 10 46 2 queue_ctl_eindex fixed bin, /* corresponds to abs_tree_path */ 10 47 2 ev_wait_chn fixed bin (71), /* set by requestor */ 10 48 2 ev_message fixed bin (71), 10 49 2 queue_name char (32), /* physical queue where it is */ 10 50 2 tree_ctl_eindex fixed bin; /* back to tree_ctl to set up I/O control */ 10 51 10 52 dcl wait_ctl_mp_eindex fixed bin; 10 53 10 54 dcl wait_ctl_mp_eptr ptr; 10 55 10 56 dcl 1 wait_ctl_mp_entry aligned based (wait_ctl_mp_eptr), 10 57 2 process_id bit (36), 10 58 2 flags, 10 59 (3 available_sw bit (1), /* ready to process another message */ 10 60 3 filler bit (35)) unaligned, 10 61 2 ev_wait_chn fixed bin (71), 10 62 2 ev_message fixed bin (71), /* (currently unused) anything in addition to ipc_ message */ 10 63 2 tree_ctl_eindex fixed bin; 10 64 10 65 /* END INCLUDE FILE... cmcs_wait_ctl.incl.pl1 */ 104 105 106 /* */ 107 108 /*[4.4-1]*/ 109 if ^(external_user_ctl_ptr -> user_ctl.init_sw.create_queues) 110 then call setup; 111 112 113 114 var_cmcs_dir = substr (user_ctl.cmcs_dir, 1, index (user_ctl.cmcs_dir, " ") - 1); 115 /* we'll always find blanks */ 116 117 vt_count = tree_ctl.queue_count; 118 allocate vfile_table; 119 vt_index = 0; 120 121 do i = 1 to tree_ctl.current_size; 122 123 if ^tree_ctl.entries (i).inactive_sw 124 then if tree_ctl.entries (i).subtree_count = 0 125 /* absolute tree path */ 126 then do; 127 128 vt_index = vt_index + 1; 129 vfile_table (vt_index).tree_ctl_eindex = i; 130 /* to copy tree entry stuff into queue entry later */ 131 vfile_table (vt_index).queue_name = tree_ctl.entries (i).queue_name; 132 vfile_table (vt_index).iocb_ptr = null (); 133 vfile_table (vt_index).error_flag = "1"b; 134 /* reset only if completely successful */ 135 136 end; 137 end; 138 139 on cleanup go to free_vt; 140 141 /* first create the other control segs */ 142 143 call make_seg ("cmcs_system_ctl.control", system_ctl_ptr); 144 145 if a_code ^= 0 146 then go to free_vt; 147 148 call cmcs_fillin_hdr_ (system_ctl_ptr, system_ctl_version, system_ctl_hdr_len, system_ctl_entry_len, a_code); 149 150 if a_code ^= 0 151 then do; 152 153 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, "Fillin hdr for system_ctl."); 154 155 go to free_vt; 156 157 end; 158 159 user_ctl.system_ctl_ptr = system_ctl_ptr; 160 system_ctl.password = "cobol_mcs"; /* garbage until set with set_cmcs_password */ 161 system_ctl.lock_wait_time = 300; /* seconds, maybe made variable later */ 162 163 call make_seg ("cmcs_queue_ctl.control", queue_ctl_ptr); 164 165 if a_code ^= 0 166 then go to free_vt; 167 168 call cmcs_fillin_hdr_ (queue_ctl_ptr, queue_ctl_version, queue_ctl_hdr_len, queue_ctl_entry_len, a_code); 169 170 if a_code ^= 0 171 then do; 172 173 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, "Fillin hdr for queue_ctl."); 174 175 go to free_vt; 176 177 end; 178 179 user_ctl.queue_ctl_ptr = queue_ctl_ptr; 180 181 call make_seg ("cmcs_wait_ctl.control", wait_ctl_ptr); 182 183 if a_code ^= 0 184 then go to free_vt; 185 186 call cmcs_fillin_hdr_ (wait_ctl_ptr, wait_ctl_version, wait_ctl_hdr_len, wait_ctl_entry_len, a_code); 187 188 if a_code ^= 0 189 then do; 190 191 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, "Fillin hdr for wait_ctl."); 192 193 go to free_vt; 194 195 end; 196 197 user_ctl.wait_ctl_ptr = wait_ctl_ptr; 198 199 /* 200* The following a_code will create the CMCS message queues and set the queue control 201* record (0/1) header data. Any existing message file will be truncated. 202**/ 203 204 /* init info structure for vfile_ record_status order call */ 205 206 vfile_rs_ptr = addr (vfile_rs1); 207 zero_overlay_len = size (vfile_rs1); 208 vfile_rs_ptr -> zero_overlay (*) = 0; 209 vfile_rs.version = 1; 210 vfile_rs.create_sw = "1"b; /* easier than writing a dummy record */ 211 vfile_rs.rec_len, vfile_rs.max_rec_len = 128; /* (32 * 4) */ 212 213 /* Init key structure with constants */ 214 215 key_struc.msg_no = 0; /* the header rcd is always 0/1 */ 216 key_struc.seg_no = 1; 217 key_struc.key_len = 8; 218 key = based_key; /* strictly for iox_ */ 219 220 constant_hdr_len = control_hdr_len; /* to reinit hdr len for seek_key */ 221 222 do i = 1 to vt_count; 223 224 pic_value = i; 225 sw_name = "cmcs_queue_" || pic_value; /* unique for this run only */ 226 q_name = vfile_table (i).queue_name; 227 228 if i ^= 1 229 then do j = 1 to i - 1; /* don't duplicate previous queue names */ 230 if q_name = vfile_table (j).queue_name 231 then go to loop_end; 232 end; 233 234 vfile_table.switch_name = sw_name; 235 236 call ioa_$rsnnl ("vfile_ ^a>^a.cmcs_queue", attach_descr, j, var_cmcs_dir, q_name); 237 call iox_$attach_name (sw_name, iocbp, substr (attach_descr, 1, j), null (), a_code); 238 239 if a_code ^= 0 240 then do; 241 242 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, "Attempting to attach ""^a"".", 243 q_name); 244 245 go to loop_end; 246 247 end; 248 249 vfile_table (i).iocb_ptr = iocbp; 250 251 call iox_$open (iocbp, 12, "0"b, a_code); /* for direct_output to force truncate */ 252 253 if a_code ^= 0 254 then do; 255 256 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, "Attempting to open ""^a"".", 257 q_name); 258 259 go to loop_end; 260 261 end; 262 263 hdr_len_21 = constant_hdr_len + 4; /* restore proper value + 4 chars for lockword */ 264 265 call iox_$seek_key (iocbp, key, hdr_len_21, a_code); 266 267 if a_code ^= 0 268 then if a_code ^= error_table_$no_record 269 then do; 270 271 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, 272 "Attempting to seek_key ""^a"".", q_name); 273 274 go to loop_end; 275 276 end; 277 278 call iox_$control (iocbp, "record_status", vfile_rs_ptr, a_code); 279 280 if a_code ^= 0 281 then if a_code ^= error_table_$no_record /* NOT SURE ABOUT ALL POSSIBLE CODES */ 282 then do; 283 284 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, 285 "Attempting to perform a record_status control order ""^a"".", q_name); 286 287 go to close; 288 289 end; 290 291 control_hdr_ptr = vfile_rs.rec_ptr; /* for based variable */ 292 293 call cmcs_fillin_hdr_ (control_hdr_ptr, 1, 0, 0, a_code); 294 295 if a_code ^= 0 296 then do; 297 298 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, 299 "Attempting to set the msg hdr data ""^a"".", q_name); 300 301 end; 302 303 close: 304 call iox_$close (iocbp, a_code); 305 306 if a_code ^= 0 307 then do; 308 309 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, "Attempting to close ""^a"".", 310 q_name); 311 312 end; 313 314 call iox_$detach_iocb (iocbp, a_code); 315 316 if a_code ^= 0 317 then do; 318 319 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, "Attempting to detach ""^a"".", 320 q_name); 321 322 end; 323 324 vfile_table (i).error_flag = "0"b; /* we made it through this one */ 325 326 /* Set up info in queue_ctl_entry */ 327 328 queue_ctl.current_size, queue_ctl.entry_count = queue_ctl.current_size + 1; 329 /* index to new entry and current size */ 330 queue_ctl_eptr = addr (queue_ctl.entries (queue_ctl.current_size)); 331 j = vfile_table (i).tree_ctl_eindex; 332 tree_ctl_eptr = addr (tree_ctl.entries (j)); 333 334 if queue_ctl.current_size ^= tree_ctl_entry.queue_ctl_eindex 335 then do; 336 337 a_code = error_table_$action_not_performed; 338 339 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, 340 "Mismatch found between queue_ctl_eindex in the tree_ctl_entry and the current location (^d vs ^d).", 341 tree_ctl_entry.queue_ctl_eindex, queue_ctl.current_size); 342 343 return; 344 345 end; 346 347 queue_ctl_entry.queue_name = ""; /* rsnnl doesn't blank fill */ 348 349 call ioa_$rsnnl ("^a.cmcs_queue", queue_ctl_entry.queue_name, k, tree_ctl_entry.queue_name); 350 351 string (queue_ctl_entry.tree_path) = string (tree_ctl_entry.tree_path); 352 queue_ctl_entry.tree_ctl_eindex = j; 353 queue_ctl_entry.cmd_sw = tree_ctl_entry.cmd_sw; 354 queue_ctl_entry.mp_sw = tree_ctl_entry.mp_sw; 355 356 357 loop_end: 358 end; /* closes initial do loop */ 359 360 361 free_vt: 362 if vfile_table_ptr ^= null () 363 then do; 364 365 free vfile_table; 366 vfile_table_ptr = null (); 367 368 end; 369 370 return; 371 372 make_seg: 373 proc (a_name, a_ptr); 374 375 dcl a_name char (*), 376 a_ptr ptr; 377 378 call hcs_$make_seg (user_ctl.cmcs_dir, a_name, a_name, 1010b, a_ptr, a_code); 379 380 if a_code ^= 0 381 then if a_code = error_table_$namedup | a_code = error_table_$segknown 382 /* already exists */ 383 then call hcs_$truncate_seg (a_ptr, 0, a_code); 384 /* reset to zero */ 385 386 if a_ptr = null () 387 then call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, "Attempting to create the segment ""^a"".", 388 a_name); /* DEBUG */ 389 390 return; 391 392 end /* make_seg */; 393 394 395 setup: 396 proc; 397 398 user_ctl_ptr = external_user_ctl_ptr; 399 tree_ctl_ptr = user_ctl.tree_ctl_ptr; 400 401 user_ctl.init_sw.create_queues = "1"b; 402 403 404 405 return; 406 407 end /* setup */; 408 409 end /* cmcs_create_queues_ */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/24/89 0833.9 cmcs_create_queues_.pl1 >spec>install>MR12.3-1048>cmcs_create_queues_.pl1 95 1 03/27/82 0439.5 cmcs_control_hdr.incl.pl1 >ldd>include>cmcs_control_hdr.incl.pl1 96 2 05/24/89 0811.5 cmcs_entry_dcls.incl.pl1 >spec>install>MR12.3-1048>cmcs_entry_dcls.incl.pl1 97 3 03/27/82 0439.5 cmcs_iox_processing.incl.pl1 >ldd>include>cmcs_iox_processing.incl.pl1 98 4 03/27/82 0439.5 cmcs_key_dcls.incl.pl1 >ldd>include>cmcs_key_dcls.incl.pl1 99 5 03/27/82 0439.5 cmcs_queue_ctl.incl.pl1 >ldd>include>cmcs_queue_ctl.incl.pl1 100 6 03/27/82 0439.6 cmcs_system_ctl.incl.pl1 >ldd>include>cmcs_system_ctl.incl.pl1 101 7 03/27/82 0439.6 cmcs_tree_ctl.incl.pl1 >ldd>include>cmcs_tree_ctl.incl.pl1 102 8 03/27/82 0431.5 cmcs_user_ctl.incl.pl1 >ldd>include>cmcs_user_ctl.incl.pl1 103 9 03/27/82 0439.6 cmcs_vfile_rs.incl.pl1 >ldd>include>cmcs_vfile_rs.incl.pl1 104 10 03/27/82 0439.6 cmcs_wait_ctl.incl.pl1 >ldd>include>cmcs_wait_ctl.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. a_code parameter fixed bin(35,0) dcl 33 set ref 25 145 148* 150 153* 165 168* 170 173* 183 186* 188 191* 237* 239 242* 251* 253 256* 265* 267 267 271* 278* 280 280 284* 293* 295 298* 303* 306 309* 314* 316 319* 337* 339* 378* 380 380 380 380* 386* a_name parameter char packed unaligned dcl 375 set ref 372 378* 378* 386* a_ptr parameter pointer dcl 375 set ref 372 378* 380* 386 addr builtin function dcl 68 ref 206 218 330 332 attach_descr 000250 automatic char(256) packed unaligned dcl 85 set ref 236* 237 237 based_key based varying char(8) dcl 4-17 ref 218 cleanup 000140 stack reference condition dcl 71 ref 139 cmcs_dir 14 based char(168) level 2 dcl 8-17 set ref 114 114 378* cmcs_fillin_hdr_ 000044 constant entry external dcl 2-26 ref 148 168 186 293 cmd_sw 14(01) based bit(1) level 4 in structure "tree_ctl_entry" packed packed unaligned dcl 7-26 in procedure "cmcs_create_queues_" ref 353 cmd_sw 27(04) based bit(1) level 3 in structure "queue_ctl_entry" packed packed unaligned dcl 5-21 in procedure "cmcs_create_queues_" set ref 353* constant_hdr_len 000125 automatic fixed bin(21,0) dcl 35 set ref 220* 263 control_hdr based structure level 1 dcl 1-11 control_hdr_len constant fixed bin(17,0) initial dcl 1-7 ref 220 control_hdr_ptr 000362 automatic pointer dcl 1-9 set ref 291* 293* control_ptrs 150 based structure level 2 dcl 8-17 create_queues 10 based bit(1) level 3 dcl 8-17 set ref 109 401* create_sw 1(02) based bit(1) level 3 packed packed unaligned dcl 9-13 set ref 210* current_size 16 based fixed bin(18,0) level 3 in structure "tree_ctl" dcl 7-16 in procedure "cmcs_create_queues_" ref 121 current_size 16 based fixed bin(18,0) level 3 in structure "queue_ctl" dcl 5-13 in procedure "cmcs_create_queues_" set ref 328 328* 330 334 339* entries 100 based structure array level 2 in structure "tree_ctl" dcl 7-16 in procedure "cmcs_create_queues_" set ref 332 entries 40 based structure array level 2 in structure "queue_ctl" dcl 5-13 in procedure "cmcs_create_queues_" set ref 330 entry_count 17 based fixed bin(18,0) level 3 dcl 5-13 set ref 328* entry_flags 14 based structure level 3 in structure "tree_ctl_entry" dcl 7-26 in procedure "cmcs_create_queues_" entry_flags 114 based structure array level 4 in structure "tree_ctl" dcl 7-16 in procedure "cmcs_create_queues_" error_flag 24 based bit(1) array level 2 packed packed unaligned dcl 77 set ref 133* 324* error_table_$action_not_performed 000034 external static fixed bin(35,0) dcl 53 ref 337 error_table_$namedup 000030 external static fixed bin(35,0) dcl 53 ref 380 error_table_$no_record 000036 external static fixed bin(35,0) dcl 53 ref 267 280 error_table_$segknown 000032 external static fixed bin(35,0) dcl 53 ref 380 external_user_ctl_ptr 000062 external static pointer dcl 8-13 ref 109 398 flags 1 based structure level 2 in structure "vfile_rs" dcl 9-13 in procedure "cmcs_create_queues_" flags 27 based structure level 2 in structure "queue_ctl_entry" dcl 5-21 in procedure "cmcs_create_queues_" hcs_$make_seg 000024 constant entry external dcl 50 ref 378 hcs_$truncate_seg 000026 constant entry external dcl 51 ref 380 hdr based structure level 2 in structure "queue_ctl" dcl 5-13 in procedure "cmcs_create_queues_" hdr based structure level 2 in structure "tree_ctl" dcl 7-16 in procedure "cmcs_create_queues_" hdr_len_21 000124 automatic fixed bin(21,0) dcl 35 set ref 263* 265* i 000126 automatic fixed bin(17,0) dcl 42 set ref 121* 123 123 129 131* 222* 224 226 228 228 249 324 331* inactive_sw 114 based bit(1) array level 5 packed packed unaligned dcl 7-16 set ref 123 index builtin function dcl 68 ref 114 init_sw based structure level 2 dcl 8-17 ioa_$rsnnl 000042 constant entry external dcl 60 ref 236 349 iocb_ptr 22 based pointer array level 2 dcl 77 set ref 132* 249* iocbp 000122 automatic pointer dcl 35 set ref 237* 249 251* 265* 278* 303* 314* iox_$attach_name 000046 constant entry external dcl 3-3 ref 237 iox_$close 000050 constant entry external dcl 3-3 ref 303 iox_$control 000052 constant entry external dcl 3-3 ref 278 iox_$detach_iocb 000054 constant entry external dcl 3-3 ref 314 iox_$open 000056 constant entry external dcl 3-3 ref 251 iox_$seek_key 000060 constant entry external dcl 3-3 ref 265 j 000127 automatic fixed bin(17,0) dcl 42 set ref 228* 230* 236* 237 237 331* 332 352 k 000130 automatic fixed bin(17,0) dcl 42 set ref 349* key 000364 automatic varying char(256) dcl 4-10 set ref 218* 265* key_len 000465 automatic fixed bin(35,0) initial level 2 dcl 4-12 set ref 217* 4-12* key_struc 000465 automatic structure level 1 dcl 4-12 set ref 218 level_info 100 based structure array level 3 in structure "tree_ctl" dcl 7-16 in procedure "cmcs_create_queues_" level_info based structure level 2 in structure "tree_ctl_entry" dcl 7-26 in procedure "cmcs_create_queues_" lock_wait_time 46 based fixed bin(17,0) level 2 dcl 6-15 set ref 161* max_rec_len 3 based fixed bin(21,0) level 2 dcl 9-13 set ref 211* mp_sw 27(03) based bit(1) level 3 in structure "queue_ctl_entry" packed packed unaligned dcl 5-21 in procedure "cmcs_create_queues_" set ref 354* mp_sw 14(02) based bit(1) level 4 in structure "tree_ctl_entry" packed packed unaligned dcl 7-26 in procedure "cmcs_create_queues_" ref 354 msg_no 1 000465 automatic fixed bin(35,0) level 2 dcl 4-12 set ref 215* my_name 000131 automatic char(19) initial packed unaligned dcl 42 set ref 42* 153* 173* 191* 242* 256* 271* 284* 298* 309* 319* 339* 386* null builtin function dcl 68 ref 132 153 153 173 173 191 191 237 237 242 242 256 256 271 271 284 284 298 298 309 309 319 319 339 339 361 366 386 386 386 password 43 based char(10) level 2 dcl 6-15 set ref 160* pic_value 000101 automatic picture(4) packed unaligned dcl 35 set ref 224* 225 q_name 000102 automatic char(32) packed unaligned dcl 35 set ref 226* 230 236* 242* 256* 271* 284* 298* 309* 319* queue_count 40 based fixed bin(17,0) level 2 dcl 7-16 ref 117 queue_ctl based structure level 1 dcl 5-13 queue_ctl_eindex 27 based fixed bin(17,0) level 3 dcl 7-26 set ref 334 339* queue_ctl_entry based structure level 1 dcl 5-21 queue_ctl_entry_len 000033 constant fixed bin(17,0) initial dcl 5-7 set ref 168* queue_ctl_eptr 000470 automatic pointer dcl 5-19 set ref 330* 347 349 351 352 353 354 queue_ctl_hdr_len 000031 constant fixed bin(17,0) initial dcl 5-7 set ref 168* queue_ctl_ptr 150 based pointer level 3 in structure "user_ctl" dcl 8-17 in procedure "cmcs_create_queues_" set ref 179* queue_ctl_ptr 000012 internal static pointer dcl 5-11 in procedure "cmcs_create_queues_" set ref 163* 168* 179 328 328 328 330 330 334 339 queue_ctl_version 000036 constant fixed bin(17,0) initial dcl 5-7 set ref 168* queue_name 17 based char(32) level 3 in structure "tree_ctl_entry" dcl 7-26 in procedure "cmcs_create_queues_" set ref 349* queue_name 117 based char(32) array level 4 in structure "tree_ctl" dcl 7-16 in procedure "cmcs_create_queues_" set ref 131 queue_name 10 based char(32) array level 2 in structure "vfile_table" packed packed unaligned dcl 77 in procedure "cmcs_create_queues_" set ref 131* 226 230 queue_name 16 based char(32) level 2 in structure "queue_ctl_entry" dcl 5-21 in procedure "cmcs_create_queues_" set ref 347* 349* rec_len 2 based fixed bin(21,0) level 2 dcl 9-13 set ref 211* rec_ptr 4 based pointer level 2 dcl 9-13 ref 291 seg_no 2 000465 automatic fixed bin(35,0) level 2 dcl 4-12 set ref 216* size builtin function dcl 68 ref 207 static_queue_info 117 based structure array level 3 in structure "tree_ctl" dcl 7-16 in procedure "cmcs_create_queues_" static_queue_info 17 based structure level 2 in structure "tree_ctl_entry" dcl 7-26 in procedure "cmcs_create_queues_" status_list_ctl_entry based structure level 1 dcl 5-44 string builtin function dcl 68 set ref 351* 351 sub_err_ 000040 constant entry external dcl 60 ref 153 173 191 242 256 271 284 298 309 319 339 386 sub_err_retval 000136 automatic fixed bin(35,0) dcl 66 set ref 153* 173* 191* 242* 256* 271* 284* 298* 309* 319* 339* 386* substr builtin function dcl 68 ref 114 237 237 subtree_count 116 based fixed bin(17,0) array level 4 dcl 7-16 set ref 123 sw_name 000112 automatic char(32) packed unaligned dcl 35 set ref 225* 234 237* switch_name based char(32) array level 2 packed packed unaligned dcl 77 set ref 234* system_ctl based structure level 1 dcl 6-15 system_ctl_entry_len 000031 constant fixed bin(17,0) initial dcl 6-9 set ref 148* system_ctl_hdr_len 000032 constant fixed bin(17,0) initial dcl 6-9 set ref 148* system_ctl_ptr 156 based pointer level 3 in structure "user_ctl" dcl 8-17 in procedure "cmcs_create_queues_" set ref 159* system_ctl_ptr 000014 internal static pointer dcl 6-13 in procedure "cmcs_create_queues_" set ref 143* 148* 159 160 161 system_ctl_version 000036 constant fixed bin(17,0) initial dcl 6-9 set ref 148* tree_ctl based structure level 1 dcl 7-16 tree_ctl_eindex 1 based fixed bin(17,0) level 2 in structure "queue_ctl_entry" dcl 5-21 in procedure "cmcs_create_queues_" set ref 352* tree_ctl_eindex 20 based fixed bin(17,0) array level 2 in structure "vfile_table" dcl 77 in procedure "cmcs_create_queues_" set ref 129* 331 tree_ctl_entry based structure level 1 dcl 7-26 tree_ctl_eptr 000472 automatic pointer dcl 7-24 set ref 332* 334 339 349 351 353 354 tree_ctl_ptr 000016 internal static pointer dcl 7-14 in procedure "cmcs_create_queues_" set ref 117 121 123 123 131 332 399* tree_ctl_ptr 162 based pointer level 3 in structure "user_ctl" dcl 8-17 in procedure "cmcs_create_queues_" ref 399 tree_path 2 based structure level 2 in structure "queue_ctl_entry" dcl 5-21 in procedure "cmcs_create_queues_" set ref 351* tree_path based structure level 3 in structure "tree_ctl_entry" dcl 7-26 in procedure "cmcs_create_queues_" ref 351 user_ctl based structure level 1 dcl 8-17 user_ctl_ptr 000020 internal static pointer dcl 8-15 set ref 114 114 159 179 197 378 398* 399 401 var_cmcs_dir 000147 automatic varying char(256) dcl 84 set ref 114* 236* version based fixed bin(17,0) level 2 dcl 9-13 set ref 209* vfile_descr 000476 automatic structure level 1 packed packed unaligned dcl 9-28 vfile_rs based structure level 1 dcl 9-13 vfile_rs1 000350 automatic structure level 1 unaligned dcl 87 set ref 206 207 vfile_rs_ptr 000474 automatic pointer dcl 9-11 set ref 206* 208 209 210 211 211 278* 291 vfile_table based structure array level 1 unaligned dcl 77 set ref 118 365 vfile_table_ptr 000010 internal static pointer initial dcl 73 set ref 118* 129 131 132 133 226 230 234 249 324 331 361 365 366* vt_count 000100 automatic fixed bin(17,0) dcl 35 set ref 117* 118 222 234 365 vt_index 000146 automatic fixed bin(17,0) dcl 75 set ref 119* 128* 128 129 131 132 133 wait_ctl_entry based structure level 1 dcl 10-35 wait_ctl_entry_len 000032 constant fixed bin(17,0) initial dcl 10-7 set ref 186* wait_ctl_hdr_len 000032 constant fixed bin(17,0) initial dcl 10-7 set ref 186* wait_ctl_mp_entry based structure level 1 dcl 10-56 wait_ctl_ptr 000022 internal static pointer dcl 10-11 in procedure "cmcs_create_queues_" set ref 181* 186* 197 wait_ctl_ptr 164 based pointer level 3 in structure "user_ctl" dcl 8-17 in procedure "cmcs_create_queues_" set ref 197* wait_ctl_version 000036 constant fixed bin(17,0) initial dcl 10-7 set ref 186* zero_overlay based fixed bin(35,0) array dcl 89 set ref 208* zero_overlay_len 000360 automatic fixed bin(17,0) dcl 89 set ref 207* 208 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. cmcs_create_queues_ 000000 constant entry external dcl 2-18 cmcs_date_time_ 000000 constant entry external dcl 2-20 cmcs_decode_status_ 000000 constant entry external dcl 2-22 cmcs_expand_tree_path_ 000000 constant entry external dcl 2-24 cmcs_initiate_ctl_ 000000 constant entry external dcl 2-28 cmcs_print_ 000000 constant entry external dcl 2-30 cmcs_purge_queues_ 000000 constant entry external dcl 2-32 cmcs_queue_ctl_$accept_message_count 000000 constant entry external dcl 2-34 cmcs_queue_ctl_$disable 000000 constant entry external dcl 2-35 cmcs_queue_ctl_$enable 000000 constant entry external dcl 2-36 cmcs_queue_ctl_$print 000000 constant entry external dcl 2-37 cmcs_queue_ctl_$purge 000000 constant entry external dcl 2-38 cmcs_queue_ctl_$receive 000000 constant entry external dcl 2-39 cmcs_queue_ctl_$send 000000 constant entry external dcl 2-40 cmcs_queue_ctl_$stop_run 000000 constant entry external dcl 2-41 cmcs_scramble_ 000000 constant entry external dcl 2-43 cmcs_set_lock_$lock 000000 constant entry external dcl 2-45 cmcs_set_lock_$unlock 000000 constant entry external dcl 2-46 cmcs_station_ctl_$attach 000000 constant entry external dcl 2-48 cmcs_station_ctl_$detach 000000 constant entry external dcl 2-49 cmcs_station_ctl_$detach_name 000000 constant entry external dcl 2-50 cmcs_station_ctl_$disable_input_terminal 000000 constant entry external dcl 2-51 cmcs_station_ctl_$disable_output_terminal 000000 constant entry external dcl 2-52 cmcs_station_ctl_$enable_input_terminal 000000 constant entry external dcl 2-53 cmcs_station_ctl_$enable_output_terminal 000000 constant entry external dcl 2-54 cmcs_station_ctl_$find_destination 000000 constant entry external dcl 2-55 cmcs_station_ctl_$input_disabled 000000 constant entry external dcl 2-56 cmcs_station_ctl_$output_disabled 000000 constant entry external dcl 2-57 cmcs_station_ctl_$validate 000000 constant entry external dcl 2-58 cmcs_status_list_ctl_$add 000000 constant entry external dcl 2-60 cmcs_status_list_ctl_$delete 000000 constant entry external dcl 2-61 cmcs_status_list_ctl_$move 000000 constant entry external dcl 2-62 cmcs_terminal_ctl_$find 000000 constant entry external dcl 2-64 cmcs_tree_ctl_$find_destination 000000 constant entry external dcl 2-66 cmcs_tree_ctl_$find_index 000000 constant entry external dcl 2-67 cmcs_tree_ctl_$find_qual_name 000000 constant entry external dcl 2-69 cmcs_tree_ctl_$find_tree_path 000000 constant entry external dcl 2-68 cmcs_wait_ctl_$add 000000 constant entry external dcl 2-71 cmcs_wait_ctl_$clear_mp 000000 constant entry external dcl 2-77 cmcs_wait_ctl_$delete 000000 constant entry external dcl 2-72 cmcs_wait_ctl_$find 000000 constant entry external dcl 2-73 cmcs_wait_ctl_$mp_available 000000 constant entry external dcl 2-74 cmcs_wait_ctl_$mp_login 000000 constant entry external dcl 2-75 cmcs_wait_ctl_$mp_logout 000000 constant entry external dcl 2-76 cmcs_wait_ctl_$start_mp 000000 constant entry external dcl 2-78 cmcs_wait_ctl_$stop_mp 000000 constant entry external dcl 2-79 get_pdir_ 000000 constant entry external dcl 48 hcs_$initiate 000000 constant entry external dcl 49 ioa_ 000000 constant entry external dcl 60 iox_$attach_iocb 000000 constant entry external dcl 3-3 iox_$delete_record 000000 constant entry external dcl 3-3 iox_$error_output external static pointer dcl 3-25 iox_$find_iocb 000000 constant entry external dcl 3-3 iox_$get_chars 000000 constant entry external dcl 3-3 iox_$get_line 000000 constant entry external dcl 3-3 iox_$modes 000000 constant entry external dcl 3-3 iox_$position 000000 constant entry external dcl 3-3 iox_$put_chars 000000 constant entry external dcl 3-3 iox_$read_key 000000 constant entry external dcl 3-3 iox_$read_length 000000 constant entry external dcl 3-3 iox_$read_record 000000 constant entry external dcl 3-3 iox_$rewrite_record 000000 constant entry external dcl 3-3 iox_$user_input external static pointer dcl 3-25 iox_$user_io external static pointer dcl 3-25 iox_$user_output external static pointer dcl 3-25 iox_$write_record 000000 constant entry external dcl 3-3 queue_ctl_eindex automatic fixed bin(17,0) dcl 5-17 status_list_ctl_eindex automatic fixed bin(17,0) dcl 5-40 status_list_ctl_eptr automatic pointer dcl 5-42 temp_ctl_ptr automatic pointer dcl 42 tree_ctl_eindex automatic fixed bin(17,0) dcl 7-22 tree_ctl_entry_len internal static fixed bin(17,0) initial dcl 7-10 tree_ctl_hdr_len internal static fixed bin(17,0) initial dcl 7-10 tree_ctl_version internal static fixed bin(17,0) initial dcl 7-10 truncate builtin function dcl 68 user_ctl_exists_sw internal static bit(1) initial dcl 8-11 vfile_rs_version internal static fixed bin(17,0) initial dcl 9-9 wait_ctl based structure level 1 dcl 10-13 wait_ctl_eindex automatic fixed bin(17,0) dcl 10-31 wait_ctl_eptr automatic pointer dcl 10-33 wait_ctl_mp_eindex automatic fixed bin(17,0) dcl 10-52 wait_ctl_mp_eptr automatic pointer dcl 10-54 NAMES DECLARED BY EXPLICIT CONTEXT. close 001740 constant label dcl 303 ref 287 cmcs_create_queues_ 000304 constant entry external dcl 25 free_vt 002274 constant label dcl 361 ref 139 145 155 165 175 183 193 loop_end 002272 constant label dcl 357 ref 230 245 259 274 make_seg 002311 constant entry internal dcl 372 ref 143 163 181 setup 002470 constant entry internal dcl 395 ref 109 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2722 3006 2506 2732 Length 3450 2506 64 425 214 14 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cmcs_create_queues_ 512 external procedure is an external procedure. on unit on line 139 64 on unit make_seg internal procedure shares stack frame of external procedure cmcs_create_queues_. setup internal procedure shares stack frame of external procedure cmcs_create_queues_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 vfile_table_ptr cmcs_create_queues_ 000012 queue_ctl_ptr cmcs_create_queues_ 000014 system_ctl_ptr cmcs_create_queues_ 000016 tree_ctl_ptr cmcs_create_queues_ 000020 user_ctl_ptr cmcs_create_queues_ 000022 wait_ctl_ptr cmcs_create_queues_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cmcs_create_queues_ 000100 vt_count cmcs_create_queues_ 000101 pic_value cmcs_create_queues_ 000102 q_name cmcs_create_queues_ 000112 sw_name cmcs_create_queues_ 000122 iocbp cmcs_create_queues_ 000124 hdr_len_21 cmcs_create_queues_ 000125 constant_hdr_len cmcs_create_queues_ 000126 i cmcs_create_queues_ 000127 j cmcs_create_queues_ 000130 k cmcs_create_queues_ 000131 my_name cmcs_create_queues_ 000136 sub_err_retval cmcs_create_queues_ 000146 vt_index cmcs_create_queues_ 000147 var_cmcs_dir cmcs_create_queues_ 000250 attach_descr cmcs_create_queues_ 000350 vfile_rs1 cmcs_create_queues_ 000360 zero_overlay_len cmcs_create_queues_ 000362 control_hdr_ptr cmcs_create_queues_ 000364 key cmcs_create_queues_ 000465 key_struc cmcs_create_queues_ 000470 queue_ctl_eptr cmcs_create_queues_ 000472 tree_ctl_eptr cmcs_create_queues_ 000474 vfile_rs_ptr cmcs_create_queues_ 000476 vfile_descr cmcs_create_queues_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry alloc_storage op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cmcs_fillin_hdr_ hcs_$make_seg hcs_$truncate_seg ioa_$rsnnl iox_$attach_name iox_$close iox_$control iox_$detach_iocb iox_$open iox_$seek_key sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$namedup error_table_$no_record error_table_$segknown external_user_ctl_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000301 42 000311 4 12 000314 109 000316 114 000323 117 000343 118 000346 119 000354 121 000355 123 000365 128 000376 129 000377 131 000405 132 000413 133 000415 137 000417 139 000421 143 000440 145 000460 148 000463 150 000502 153 000505 155 000550 159 000551 160 000555 161 000561 163 000563 165 000602 168 000605 170 000624 173 000627 175 000672 179 000673 181 000677 183 000716 186 000721 188 000740 191 000743 193 001006 197 001007 206 001013 207 001015 208 001017 209 001031 210 001033 211 001035 215 001040 216 001041 217 001043 218 001045 220 001052 222 001054 224 001063 225 001072 226 001105 228 001116 230 001131 232 001141 234 001143 236 001164 237 001217 239 001261 242 001265 245 001334 249 001335 251 001343 253 001363 256 001366 259 001435 263 001436 265 001441 267 001456 271 001464 274 001532 278 001533 280 001563 284 001571 287 001637 291 001640 293 001643 295 001666 298 001671 303 001740 306 001752 309 001755 314 002024 316 002036 319 002041 324 002110 328 002116 330 002124 331 002130 332 002132 334 002136 337 002141 339 002144 343 002216 347 002217 349 002222 351 002251 352 002256 353 002260 354 002265 357 002272 361 002274 365 002301 366 002305 370 002310 372 002311 378 002322 380 002365 386 002411 390 002467 395 002470 398 002471 399 002475 401 002500 405 002503 ----------------------------------------------------------- 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