COMPILATION LISTING OF SEGMENT cmcs_status_list_ctl_ 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 1021.4 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_status_list_ctl_.pl1 Reformatted code to new Cobol standard. 16* END HISTORY COMMENTS */ 17 18 19 /* Modified since Version 4.3 */ 20 21 /* format: style3 */ 22 cmcs_status_list_ctl_: 23 proc (); 24 25 return; /* bad entrypoint */ 26 27 /* This COBOL MCS subroutine is called by cmcs_queue_ctl_ to manipulate the activity 28* status of a given message. It uses the process-INdependent locators of the vfile_ 29* record_status control order, and manipulates linked-list locator values in the 30* affected records to keep the messages in the desired status list. 31* 32* Note: This module requuires that the caller do the locking and unlocking of queue_ctl.hdr.lockword. 33* 34* Bob May, 6/30/77 */ 35 36 dcl a_iocb_ptr ptr, 37 a_queue_ctl_eptr ptr, 38 a_old_status fixed bin, 39 a_new_status fixed bin, 40 a_descr_ptr ptr, 41 a_code fixed bin (35); 42 43 dcl 1 a_descr like vfile_descr based (a_descr_ptr); 44 45 dcl sysprint file env (interactive); /* for DEBUG */ 46 47 dcl my_name char (21) init ("cmcs_status_list_ctl_"); 48 49 dcl iocb_ptr ptr, 50 descr_ptr ptr; 51 52 dcl (ioa_) entry options (variable); 53 54 dcl test_sw bit (1) int static init ("0"b); 55 56 dcl (size, string, unspec) 57 builtin; 58 59 dcl error_table_$action_not_performed 60 fixed bin (35) external; 61 62 /* */ 63 64 dcl 1 (b_descr, c_descr, f_descr) 65 like vfile_descr int static; 66 67 dcl (b_descr_ptr, c_descr_ptr, f_descr_ptr) 68 ptr int static; 69 70 dcl 1 (b_rs, c_rs, f_rs) 71 like vfile_rs int static; 72 73 dcl (b_rs_ptr, c_rs_ptr, f_rs_ptr) 74 ptr int static; 75 76 dcl (b_ptr, c_ptr, f_ptr) 77 ptr int static; 78 79 dcl 1 ( 80 b based (b_ptr), 81 c based (c_ptr), 82 f based (f_ptr) 83 ) like msg_hdr; 84 85 dcl zero fixed bin (35) int static init (0) options (constant); 86 87 dcl zero_descr_ptr ptr int static; 88 89 dcl 1 zero_descr like vfile_descr based (zero_descr_ptr); 90 dcl init_ptrs_sw bit (1) int static init ("0"b); 91 92 dcl overlay_len fixed bin, 93 overlay (overlay_len) fixed bin (35) based; 94 95 dcl (addr, baseptr, fixed, null) 96 builtin; 97 98 dcl sub_err_ entry options (variable), 99 sub_err_retval fixed bin (35); 100 101 /* */ 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 */ 102 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 */ 103 3 1 /* BEGIN INCLUDE FILE... cmcs_error_table_dcls.incl.pl1 */ 3 2 3 3 /* Bob May, 6/30/77 */ 3 4 3 5 dcl (cmcs_error_table_$ambiguous_tree_path, cmcs_error_table_$bad_call_parm, cmcs_error_table_$bad_dest, 3 6 cmcs_error_table_$bad_dest_count, cmcs_error_table_$bad_message_length, 3 7 cmcs_error_table_$bad_password, cmcs_error_table_$bad_queue_path, cmcs_error_table_$bad_slew, 3 8 3 9 cmcs_error_table_$bad_source, cmcs_error_table_$bad_station, 3 10 cmcs_error_table_$bad_term_devchn, cmcs_error_table_$bad_tree_path, 3 11 cmcs_error_table_$dest_already_disabled, cmcs_error_table_$dest_already_enabled, 3 12 3 13 cmcs_error_table_$dest_disabled, cmcs_error_table_$no_message, 3 14 cmcs_error_table_$no_partial_messages, cmcs_error_table_$null_partial_message, 3 15 cmcs_error_table_$queue_already_disabled, cmcs_error_table_$queue_already_enabled, 3 16 3 17 cmcs_error_table_$queue_disabled, cmcs_error_table_$source_already_disabled, 3 18 cmcs_error_table_$source_already_enabled, cmcs_error_table_$source_disabled) fixed bin (35) external; 3 19 3 20 /* END INCLUDE FILE... cmcs_error_table_dcls.incl.pl1 */ 104 4 1 /* BEGIN INCLUDE FILE... cmcs_iox_processing.incl.pl1, 07/01/74 */ 4 2 4 3 dcl iox_$attach_iocb entry (ptr, char (*), fixed bin (35)), 4 4 iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)), 4 5 iox_$close entry (ptr, fixed bin (35)), 4 6 iox_$control entry (ptr, char (*), ptr, fixed bin (35)), 4 7 iox_$delete_record entry (ptr, fixed bin (35)), 4 8 iox_$detach_iocb entry (ptr, fixed bin (35)), 4 9 iox_$find_iocb entry (char (*), ptr, fixed bin (35)), 4 10 iox_$get_chars entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)), 4 11 iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)), 4 12 iox_$modes entry (ptr, char (*), char (*), fixed bin (35)), 4 13 iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)), 4 14 iox_$position entry (ptr, fixed bin, fixed bin (21), fixed bin (35)), 4 15 iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)), 4 16 iox_$read_key entry (ptr, char (256) varying, fixed bin (21), fixed bin (35)), 4 17 iox_$read_length entry (ptr, fixed bin (21), fixed bin (35)), 4 18 iox_$read_record entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)), 4 19 iox_$rewrite_record entry (ptr, ptr, fixed bin (21), fixed bin (35)), 4 20 iox_$seek_key entry (ptr, char (256) varying, fixed bin (21), fixed bin (35)), 4 21 iox_$write_record entry (ptr, ptr, fixed bin (21), fixed bin (35)); 4 22 4 23 /* * * EXTERNAL * * */ 4 24 4 25 dcl (iox_$user_io, 4 26 iox_$user_input, 4 27 iox_$user_output, 4 28 iox_$error_output) ptr external; 4 29 4 30 /* * * MODES * * */ 4 31 4 32 /* 4 33* 1 stream_input 4 34* 2 stream_output 4 35* 3 stream_input_output 4 36* 4 sequential_input 4 37* 5 sequential_output 4 38* 6 sequential_input_output 4 39* 7 sequential_update 4 40* 8 keyed_sequential_input 4 41* 9 keyed_sequential_output 4 42* 10 keyed_sequential_update 4 43* 11 direct_input 4 44* 12 direct_output 4 45* 13 direct_update 4 46**/ 4 47 4 48 /* END INCLUDE FILE... cmcs_iox_processing.incl.pl1 */ 105 5 1 /* BEGIN INCLUDE FILE... cmcs_key_dcls.incl.pl1 */ 5 2 5 3 /* 5 4* This COBOL MCS include file gives the structure of the key fields used to access 5 5* the message records in an indexed vfile. 5 6**/ 5 7 5 8 /* Bob May, 5/31/77 */ 5 9 5 10 dcl key char (256) varying; /* used by iox_ */ 5 11 5 12 dcl 1 key_struc aligned, 5 13 (2 key_len init (8), 5 14 2 msg_no, 5 15 2 seg_no) fixed bin (35); 5 16 5 17 dcl based_key char (8) varying based (addr (key_struc)); 5 18 5 19 /* END INCLUDE FILE... cmcs_key_dcls.incl.pl1 */ 106 6 1 /* BEGIN INCLUDE FILE... cmcs_msg_hdr.incl.pl1 */ 6 2 6 3 /* This include file defines the structure of the msg header for COBOL MCS messages. 6 4* Both msg_hdr/msg_seg and msg_seg only records have their msg_no and seg_no 6 5* in the first two words of the record. The seg_no in msg_hdr/msg_seg records will always 6 6* be 1; the seg_no in msg_seg records will always be greater than 1. */ 6 7 6 8 /* Bob May, 5/31/77 */ 6 9 6 10 dcl (msg_hdr_len init (26), /* 24, plus fudges for alignment */ 6 11 msg_hdr_version init (1)) fixed bin int static options (constant); 6 12 6 13 dcl msg_hdr_ptr ptr; 6 14 6 15 dcl 1 msg_hdr aligned based (msg_hdr_ptr), 6 16 2 msg_no fixed bin (35), /* same as in key */ 6 17 2 seg_no fixed bin (35), /* always 1, to indicate msg_hdr */ 6 18 2 lockword bit (36) aligned, /* current owner */ 6 19 2 version fixed bin, 6 20 2 source_station char (12), /* who created this msg */ 6 21 2 source_group_id char (32), /* User_id of msg source */ 6 22 2 final_delim fixed bin, /* 0 illegal, 1-3 legal */ 6 23 2 clock_available fixed bin (71), /* when msg is available for processing */ 6 24 2 clock_deleted fixed bin (71), /* processing completed */ 6 25 2 seg_count fixed bin, /* total number of (msg) segments for this msg */ 6 26 2 msg_len fixed bin (35), /* sum of all segments, in chars */ 6 27 2 status_info, 6 28 3 msg_status fixed bin, /* 0 undefined, 1-4 legal */ 6 29 /* 1 - send incomplete */ 6 30 /* 2 - send complete (available for processing) */ 6 31 /* 3 - receive incomplete (in process) */ 6 32 /* 4 - receive complete */ 6 33 3 descrs, 6 34 4 f_descr like vfile_descr, 6 35 4 b_descr like vfile_descr, 6 36 2 msg_seg like msg_seg; /* for seg 1, where msg hdr and seg are together */ 6 37 6 38 /* END INCLUDE FILE... cmcs_msg_hdr.incl.pl1 */ 107 7 1 /* BEGIN INCLUDE FILE... cmcs_msg_seg.incl.pl1 */ 7 2 7 3 /* This include file defines the structure of a COBOL MCS message segment */ 7 4 7 5 /* Bob May, 5/31/77 */ 7 6 7 7 dcl (msg_seg_hdr_len init (4), 7 8 msg_seg_version init (1)) fixed bin int static options (constant); 7 9 7 10 dcl msg_seg_ptr ptr; 7 11 7 12 dcl 1 msg_seg aligned based (msg_seg_ptr), 7 13 2 hdr, 7 14 3 msg_no fixed bin (35), /* same as in key */ 7 15 3 seg_no fixed bin (35), /* same as in key */ 7 16 3 slew_ctl fixed bin (35), 7 17 3 seg_len fixed bin (35), /* of this segment, in chars */ 7 18 2 data, 7 19 3 seg_data char (msg_seg.hdr.seg_len); 7 20 7 21 /* END INCLUDE FILE... cmcs_msg_seg.incl.pl1 */ 108 8 1 /* BEGIN INCLUDE FILE ... cmcs_queue_ctl.incl.pl1 */ 8 2 8 3 /* This COBOL MCSD include file defines the structure of the cmcs_queue_ctl.control segment. */ 8 4 8 5 /* Bob May, 5/31/77 */ 8 6 8 7 dcl (queue_ctl_hdr_len init (0), 8 8 queue_ctl_entry_len init (48), 8 9 queue_ctl_version init (1)) fixed bin internal static options (constant); 8 10 8 11 dcl queue_ctl_ptr ptr int static; 8 12 8 13 dcl 1 queue_ctl aligned based (queue_ctl_ptr), 8 14 2 hdr like control_hdr, 8 15 2 entries (queue_ctl.current_size) like queue_ctl_entry; 8 16 8 17 dcl queue_ctl_eindex fixed bin; 8 18 8 19 dcl queue_ctl_eptr ptr; 8 20 8 21 dcl 1 queue_ctl_entry aligned based (queue_ctl_eptr), 8 22 2 lockword bit (36) aligned, 8 23 2 tree_ctl_eindex fixed bin, /* index of corresponding entry in tree_ctl */ 8 24 2 tree_path, 8 25 3 level_names (4) char (12), 8 26 2 queue_name char (32), /* includes suffix */ 8 27 2 msg_no fixed bin (35), /* always increasing, until reset manually */ 8 28 2 flags, 8 29 (3 input_disabled_sw bit (1), 8 30 3 mp_entered_sw bit (1), 8 31 3 mp_active_sw bit (1), 8 32 3 mp_sw bit (1), 8 33 3 cmd_sw bit (1), 8 34 3 filler bit (31)) unaligned, 8 35 2 filler (10) fixed bin (35), 8 36 2 mp_lockword bit (36) aligned, /* process_id of message processor */ 8 37 2 status_lists_lockword bit (36) aligned, /* only to manipulate the status lists */ 8 38 2 status_list_ctl_entries (4) like status_list_ctl_entry; /* everything belonging to this queue */ 8 39 8 40 dcl status_list_ctl_eindex fixed bin; 8 41 8 42 dcl status_list_ctl_eptr ptr; 8 43 8 44 dcl 1 status_list_ctl_entry aligned based (status_list_ctl_eptr), 8 45 2 count fixed bin, 8 46 2 descrs, 8 47 3 f_descr like vfile_descr, 8 48 3 b_descr like vfile_descr; 8 49 8 50 /* END INCLUDE FILE ... cmcs_queue_ctl.incl.pl1 */ 109 9 1 /* BEGIN INCLUDE FILE... cmcs_slew_ctl.incl.pl1 */ 9 2 9 3 /* This include file defines the structure of the slew control 9 4* word that is part of a COBOL MCS message segment */ 9 5 9 6 /* Bob May, 5/31/77 */ 9 7 9 8 dcl slew_ctl_ptr ptr; 9 9 9 10 dcl 1 slew_ctl aligned based (slew_ctl_ptr), 9 11 (2 when fixed bin (8), /* 0 = no slew, 1 = before, 2 = after */ 9 12 2 what fixed bin (8), /* 0 - slew 0 lines */ 9 13 /* 1 - slew n lines */ 9 14 /* 2 - slew to top of page */ 9 15 /* 3 - slew to channel (1-16) */ 9 16 9 17 2 how_much fixed bin (17)) unaligned; /* what = 1: n */ 9 18 /* what = 3: carriage control channel 1-16 */ 9 19 9 20 /* END INCLUDE FILE... cmcs_slew_ctl.incl.pl1 */ 110 10 1 /* BEGIN INCLUDE FILE ... cmcs_user_ctl.incl.pl1 */ 10 2 10 3 /* 10 4* This COBOL MCS include file defines the global, process-dependent variables that are 10 5* not part of the PD copy of cmcs_tree_ctl.control. 10 6**/ 10 7 10 8 /* Modified on 05/06/81 by FCH, [4.4-1], attach command */ 10 9 /* Bob May, 5/31/77 */ 10 10 10 11 dcl user_ctl_exists_sw bit (1) aligned int static init ("0"b); /* indicates legitimacy of external_user_ctl_ptr */ 10 12 10 13 dcl external_user_ctl_ptr ptr external; /* global ptr for user_ctl */ 10 14 10 15 dcl user_ctl_ptr ptr int static; 10 16 10 17 dcl 1 user_ctl aligned based (user_ctl_ptr), 10 18 10 19 /* Flags */ 10 20 10 21 2 init_sw, 10 22 3 terminal_ctl bit(1), 10 23 3 tree_ctl bit(1), 10 24 3 status_list_ctl bit(1), 10 25 3 station_ctl bit(1), 10 26 3 queue_ctl bit(1), 10 27 3 set_lock bit(1), 10 28 3 wait_ctl bit(1), 10 29 3 purge_queues bit(1), 10 30 3 create_queues bit(1), 10 31 3 initiate_ctl bit(1), 10 32 3 mcs bit(1), 10 33 2 flags, 10 34 (3 initialized_sw bit (1), 10 35 3 interactive_sw bit (1), 10 36 3 mp_sw bit (1), /* message processor process */ 10 37 3 terminal_sw bit (1), /* user terminal process */ 10 38 3 admin_sw bit (1), /* cobol_mcs_admin */ 10 39 3 attach_bit bit(1), /*[4.4-1]*/ 10 40 3 rec bit(1), /*[4.4-1]*/ 10 41 3 filler bit (29)) unaligned, 10 42 2 cmcs_dir char (168), 10 43 2 output_file char(168), /*[4.4-1]*/ 10 44 2 station_name char (12), /* current station */ 10 45 2 station_ctl_eindex fixed bin, /* current station */ 10 46 2 process_id bit (36), 10 47 2 process_type fixed bin, /* 0 - not defined, 1 - MP, 2 - terminal, 3 - admin */ 10 48 2 filler fixed bin (35), /* to explicitly align ptrs */ 10 49 2 control_ptrs, 10 50 3 queue_ctl_ptr ptr, 10 51 3 iocb_ptr ptr, /*[4.4-1]*/ 10 52 3 station_ctl_ptr ptr, 10 53 3 system_ctl_ptr ptr, 10 54 3 terminal_ctl_ptr ptr, 10 55 3 tree_ctl_ptr ptr, 10 56 3 wait_ctl_ptr ptr, 10 57 3 filler_ptrs (4) ptr, 10 58 2 terminal_info, 10 59 3 term_id char (4), 10 60 3 term_type fixed bin, 10 61 3 term_channel char (8), 10 62 2 last_receive_info, 10 63 3 tree_path char (48), 10 64 3 tree_ctl_eindex fixed bin, 10 65 3 tree_ctl_eptr ptr, 10 66 2 last_send_info, 10 67 3 dest_name char (12), 10 68 3 tree_ctl_eindex fixed bin, 10 69 3 tree_ctl_eptr ptr, 10 70 2 station_info, 10 71 3 station_count fixed bin, /* must be 1 for phase 1 */ 10 72 3 station_entries (2), 10 73 4 station_name char (12), 10 74 4 station_ctl_eptr ptr, 10 75 4 station_ctl_eindex fixed bin, 10 76 2 wait_info, 10 77 3 wait_ctl_eptr ptr, 10 78 3 wait_ctl_eindex fixed bin, 10 79 3 wait_ctl_mp_eindex fixed bin, /* only for message processors */ 10 80 3 wait_ctl_mp_eptr ptr, 10 81 3 ev_wait_chn fixed bin (71), /* for message processors */ 10 82 3 ev_call_chn fixed bin (71), /* for terminals, to get message responses */ 10 83 3 ev_wait_list_ptr ptr, /* for ipc_$block */ 10 84 3 ev_info_ptr ptr; /* for wakeup */ 10 85 10 86 /* END INCLUDE FILE ... cmcs_user_ctl.incl.pl1 */ 111 11 1 /* BEGIN INCLUDE FILE... cmcs_vfile_rs.incl.pl1 */ 11 2 11 3 /* This COBOL MCS include file is used to reference records by their 11 4* vfile_ descriptors. It is used mainly in the maintenance of 11 5* message status lists. */ 11 6 11 7 /* Bob May, 6/30/77 */ 11 8 11 9 dcl vfile_rs_version fixed bin int static options (constant) init (1); 11 10 11 11 dcl vfile_rs_ptr ptr; 11 12 11 13 dcl 1 vfile_rs aligned based (vfile_rs_ptr), 11 14 2 version fixed bin, /* currently must be set to 1 */ 11 15 2 flags, 11 16 (3 lock_sw bit (1), /* "1"b */ 11 17 3 unlock_sw bit (1), /* "1"b */ 11 18 3 create_sw bit (1), /* "0"b */ 11 19 /* switch separator */ 11 20 3 locate_sw bit (1), /* "0"b for current_rec, "1"b to use descriptor */ 11 21 3 filler bit (32)) unaligned, /* (32) "0"b */ 11 22 2 rec_len fixed bin (21), 11 23 2 max_rec_len fixed bin (21), 11 24 2 rec_ptr ptr, 11 25 2 descr like vfile_descr, /* process INdependent addressing */ 11 26 2 filler fixed bin; /* 0 */ 11 27 11 28 dcl 1 vfile_descr, /* process INdependent addressing */ 11 29 (2 comp_no fixed bin (17), /* component of MSF */ 11 30 2 comp_offset bit (18)) unaligned; /* offset of record in component */ 11 31 11 32 /* END INCLUDE FILE... cmcs_vfile_rs.incl.pl1 */ 112 113 /* */ 114 add: 115 entry (a_queue_ctl_eptr, a_iocb_ptr, a_descr_ptr, a_new_status, a_code); 116 117 if test_sw /* DEBUG */ 118 then do; 119 put skip data (a_queue_ctl_eptr); 120 put skip data (a_iocb_ptr); 121 put skip data (a_descr_ptr); 122 put skip data (a_new_status); 123 end; 124 125 126 if ^(external_user_ctl_ptr -> user_ctl.init_sw.status_list_ctl) 127 then call setup; 128 129 call set_descr; 130 if a_code ^= 0 131 then go to error_ret; 132 call check_msg_status (a_new_status); 133 if a_code ^= 0 134 then go to error_ret; 135 136 status_list_ctl_eptr = addr (queue_ctl_entry.status_list_ctl_entries (a_new_status)); 137 138 call link_descr; 139 if a_code ^= 0 140 then go to error_ret; 141 142 go to check_wait; 143 144 /* end of add entrypoint */ 145 146 147 /* */ 148 149 delete: 150 entry (a_queue_ctl_eptr, a_iocb_ptr, a_descr_ptr, a_old_status, a_code); 151 152 if test_sw /* DEBUG */ 153 then do; 154 put skip data (a_queue_ctl_eptr); 155 put skip data (a_iocb_ptr); 156 put skip data (a_descr_ptr); 157 put skip data (a_old_status); 158 end; 159 160 161 if ^(external_user_ctl_ptr -> user_ctl.init_sw.status_list_ctl) 162 then call setup; 163 164 call set_descr; 165 if a_code ^= 0 166 then go to error_ret; 167 call check_msg_status (a_old_status); 168 if a_code ^= 0 169 then go to error_ret; 170 status_list_ctl_eptr = addr (queue_ctl_entry.status_list_ctl_entries (a_old_status)); 171 172 call unlink_descr; 173 if a_code ^= 0 174 then go to error_ret; 175 176 go to good_ret; 177 178 /* end of delete entrypoint */ 179 180 181 /* */ 182 183 move: 184 entry (a_queue_ctl_eptr, a_iocb_ptr, a_descr_ptr, a_old_status, a_new_status, a_code); 185 186 if test_sw /* DEBUG */ 187 then do; 188 put skip data (a_iocb_ptr); 189 put skip data (a_queue_ctl_eptr); 190 put skip data (a_descr_ptr); 191 put skip data (a_old_status); 192 put skip data (a_new_status); 193 end; 194 195 196 if ^(external_user_ctl_ptr -> user_ctl.init_sw.status_list_ctl) 197 then call setup; 198 199 call set_descr; 200 if a_code ^= 0 201 then go to error_ret; 202 call check_msg_status (a_old_status); 203 if a_code ^= 0 204 then go to error_ret; 205 if a_new_status < 1 | a_new_status > 4 206 then do; 207 a_code = cmcs_error_table_$bad_call_parm; 208 go to error_ret; 209 end; 210 211 status_list_ctl_eptr = addr (queue_ctl_entry.status_list_ctl_entries (a_old_status)); 212 call unlink_descr; 213 if a_code ^= 0 214 then go to error_ret; 215 status_list_ctl_eptr = addr (queue_ctl_entry.status_list_ctl_entries (a_new_status)); 216 c.msg_status = a_new_status; /* do before we link in, it may be processed next */ 217 call link_descr; 218 if a_code ^= 0 219 then go to error_ret; 220 221 check_wait: 222 if a_new_status = 2 /* notify only for available messages */ 223 then do; 224 if status_list_ctl_entry.count ^= 1 225 then goto good_ret; /* and only when going nonzero */ 226 call cmcs_wait_ctl_$find (string (queue_ctl_entry.tree_path), queue_ctl_eptr, a_code); 227 if a_code ^= 0 228 then if a_code ^= cmcs_error_table_$no_message 229 then do; 230 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, 231 "Attempting to find process waiting for message in ""^a"". Continuing.", 232 string (queue_ctl_entry.tree_path)); 233 go to error_ret; 234 end; 235 else a_code = 0; /* it's ok, nobody was waiting */ 236 end; 237 238 good_ret: 239 a_code = 0; 240 error_ret: 241 return; 242 243 /* end of move entrypoint */ 244 245 /* */ 246 247 link_descr: 248 proc (); 249 250 /* Procedure to add a message to the end of a given status list. It assumes that the 251* main procedure has already set the following: status_list_ctl_eptr, all of the c_xxx 252* variables for the current record, including the c_rs structure. Also assumes that the 253* queue_ctl.hdr.lockword is locked by the caller of cmcs_status_list_ctl_, whatever the entrypoint. */ 254 255 if status_list_ctl_entry.count = 0 256 then do; /* this is the easy one */ 257 status_list_ctl_entry.f_descr, status_list_ctl_entry.b_descr = c_descr; 258 /* for just one, both point to new entry */ 259 c.f_descr, c.b_descr = zero_descr; /* similarly for new msg */ 260 end; 261 262 /* already at least one msg, new one always goes at the end */ 263 264 else do; 265 b_descr = status_list_ctl_entry.b_descr;/* get old last-entry descr */ 266 call seek_descr (b_descr, b_rs_ptr, b_ptr); 267 if a_code ^= 0 268 then return; 269 c.b_descr = b_descr; 270 c.f_descr = zero_descr; /* new one points back to head */ 271 status_list_ctl_entry.b_descr, b.f_descr = c_descr; 272 /* new one now in the loop */ 273 end; 274 275 a_code = 0; 276 status_list_ctl_entry.count = status_list_ctl_entry.count + 1; 277 return; 278 279 end /* link_descr */; 280 281 /* */ 282 283 unlink_descr: 284 proc (); 285 286 /* Procedure to unlink a message from anywhere in the linked list. 287* This subroutine makes the same assumptions as link_descr. */ 288 289 if status_list_ctl_entry.count = 0 290 then do; /* impossible, unquote */ 291 a_code = cmcs_error_table_$bad_call_parm; 292 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, 293 "Fatal error detected. Attempt to perform an unlink in a list with zero entries. Continuing."); 294 return; 295 end; 296 if status_list_ctl_entry.count = 1 297 then do; /* another easy one */ 298 if unspec (status_list_ctl_entry.f_descr) ^= unspec (c_descr) 299 then do; /* another impossible situation */ 300 a_code = cmcs_error_table_$bad_call_parm; 301 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, 302 "Message in status list does not match descriptor of record to be deleted. Continuing.") 303 ; 304 return; 305 end; 306 307 status_list_ctl_entry.f_descr, status_list_ctl_entry.b_descr = zero_descr; 308 /* reset list to null */ 309 c.f_descr, c.b_descr = zero_descr; 310 c.msg_status = 0; 311 end; 312 313 /* not so easy, more than one message int static in the list */ 314 315 else do; 316 b_descr = c.b_descr; 317 f_descr = c.f_descr; /* set both now, may only use one */ 318 319 if unspec (b_descr) = (36)"0"b & unspec (f_descr) = (36)"0"b 320 then do; 321 a_code = error_table_$action_not_performed; 322 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, 323 "Attempting to unlink a message from queue ""^a"", status ""^d"", 324 where both forward and backward record descriptors are zero. 325 Please contact the CMCS Administrator. Continuing.", queue_ctl_entry.queue_name, a_old_status); 326 go to zero_c_descr; 327 end; 328 329 330 if unspec (b_descr) = unspec (zero_descr) 331 then do; /* first one in list */ 332 call seek_descr (f_descr, f_rs_ptr, f_ptr); 333 if a_code ^= 0 334 then return; 335 f.b_descr = zero_descr; /* now 2nd one is first */ 336 status_list_ctl_entry.f_descr = f_descr; 337 end; 338 else if unspec (f_descr) = unspec (zero_descr) 339 then do; /* last one in list */ 340 call seek_descr (b_descr, b_rs_ptr, b_ptr); 341 if a_code ^= 0 342 then return; 343 b.f_descr = zero_descr; /* second to last now last */ 344 status_list_ctl_entry.b_descr = b_descr; 345 end; 346 347 /* message to be deleted is in middle of the list */ 348 349 else do; 350 call seek_descr (b_descr, b_rs_ptr, b_ptr); 351 if a_code ^= 0 352 then return; 353 call seek_descr (f_descr, f_rs_ptr, f_ptr); 354 if a_code ^= 0 355 then return; 356 357 b.f_descr = f_descr; /* link ones on each side together */ 358 f.b_descr = b_descr; 359 end; 360 end; 361 362 zero_c_descr: 363 c.f_descr, c.b_descr = zero_descr; /* zero out for clean job */ 364 status_list_ctl_entry.count = status_list_ctl_entry.count - 1; 365 366 a_code = 0; 367 return; 368 369 end /* unlink_descr */; 370 371 /* */ 372 373 set_descr: 374 proc (); 375 376 queue_ctl_eptr = a_queue_ctl_eptr; 377 iocb_ptr = a_iocb_ptr; 378 descr_ptr = a_descr_ptr; 379 c_descr = a_descr; 380 381 call seek_descr (c_descr, c_rs_ptr, c_ptr); 382 return; 383 384 end /* set_descr */; 385 386 /* */ 387 388 check_msg_status: 389 proc (x_status); 390 391 dcl x_status fixed bin; 392 393 a_code = cmcs_error_table_$bad_call_parm; 394 if x_status < 1 | x_status > 4 395 then return; 396 if c.msg_status ^= x_status 397 then return; 398 399 a_code = 0; 400 return; 401 402 end /* check_msg_status */; 403 404 /* */ 405 406 seek_descr: 407 proc (x_descr, x_rs_ptr, x_ptr); 408 409 /* uses vfile_ record_status control to find messages by their vfile_ descriptor */ 410 411 dcl 1 x_descr like vfile_descr, 412 x_rs_ptr ptr, 413 x_ptr ptr; 414 415 dcl 1 x_rs like vfile_rs based (x_rs_ptr); 416 417 dcl 1 x like msg_hdr based (x_ptr); 418 419 x_rs.descr = x_descr; /* maybe redundant sometimes, but consistent */ 420 call iox_$control (iocb_ptr, "record_status", x_rs_ptr, a_code); 421 if a_code ^= 0 422 then do; /* bad news, should never happen */ 423 call sub_err_ (a_code, my_name, "c", null (), sub_err_retval, 424 "Attempting to use record_status control order to locate descriptor ^d.^d.", x_rs.descr.comp_no, 425 fixed (x_rs.descr.comp_offset, 18)); 426 x_ptr = null (); 427 end; 428 else x_ptr = x_rs.rec_ptr; 429 430 return; 431 432 end /* seek_descr */; 433 434 /* */ 435 436 init_ptrs: 437 proc (); 438 439 b_descr_ptr = addr (b_descr); 440 c_descr_ptr = addr (c_descr); 441 f_descr_ptr = addr (f_descr); 442 443 b_rs_ptr = addr (b_rs); 444 c_rs_ptr = addr (c_rs); 445 f_rs_ptr = addr (f_rs); 446 447 overlay_len = size (b_rs); 448 b_rs_ptr -> overlay (*) = 0; 449 c_rs_ptr -> overlay (*) = 0; 450 c_rs_ptr -> overlay (*) = 0; 451 452 b_rs.locate_sw = "1"b; 453 454 c_rs.locate_sw = "1"b; 455 456 f_rs.locate_sw = "1"b; 457 458 b_rs.version, c_rs.version, f_rs.version = vfile_rs_version; 459 460 zero_descr_ptr = addr (zero); 461 462 init_ptrs_sw = "1"b; 463 return; 464 465 end /* init_ptrs */; 466 467 /* */ 468 469 setup: 470 proc; 471 472 473 user_ctl_ptr = external_user_ctl_ptr; /* set local variable from global */ 474 475 queue_ctl_ptr = user_ctl.queue_ctl_ptr; 476 477 call init_ptrs; /* setup, part two */ 478 479 user_ctl.init_sw.status_list_ctl = "1"b; /* do this only once */ 480 a_code = 0; 481 return; 482 483 end /* setup */; 484 485 test: 486 entry (); 487 488 test_sw = "1"b; 489 return; 490 491 end /* cmcs_status_list_ctl_ */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/24/89 0834.0 cmcs_status_list_ctl_.pl1 >spec>install>MR12.3-1048>cmcs_status_list_ctl_.pl1 102 1 03/27/82 0439.5 cmcs_control_hdr.incl.pl1 >ldd>include>cmcs_control_hdr.incl.pl1 103 2 05/24/89 0811.5 cmcs_entry_dcls.incl.pl1 >spec>install>MR12.3-1048>cmcs_entry_dcls.incl.pl1 104 3 03/27/82 0439.5 cmcs_error_table_dcls.incl.pl1 >ldd>include>cmcs_error_table_dcls.incl.pl1 105 4 03/27/82 0439.5 cmcs_iox_processing.incl.pl1 >ldd>include>cmcs_iox_processing.incl.pl1 106 5 03/27/82 0439.5 cmcs_key_dcls.incl.pl1 >ldd>include>cmcs_key_dcls.incl.pl1 107 6 03/27/82 0439.5 cmcs_msg_hdr.incl.pl1 >ldd>include>cmcs_msg_hdr.incl.pl1 108 7 03/27/82 0439.5 cmcs_msg_seg.incl.pl1 >ldd>include>cmcs_msg_seg.incl.pl1 109 8 03/27/82 0439.5 cmcs_queue_ctl.incl.pl1 >ldd>include>cmcs_queue_ctl.incl.pl1 110 9 03/27/82 0439.5 cmcs_slew_ctl.incl.pl1 >ldd>include>cmcs_slew_ctl.incl.pl1 111 10 03/27/82 0431.5 cmcs_user_ctl.incl.pl1 >ldd>include>cmcs_user_ctl.incl.pl1 112 11 03/27/82 0439.6 cmcs_vfile_rs.incl.pl1 >ldd>include>cmcs_vfile_rs.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 36 set ref 114 130 133 139 149 165 168 173 183 200 203 207* 213 218 226* 227 227 230* 235* 238* 267 275* 291* 292* 300* 301* 321* 322* 333 341 351 354 366* 393* 399* 420* 421 423* 480* a_descr based structure level 1 packed packed unaligned dcl 43 ref 379 a_descr_ptr parameter pointer dcl 36 ref 114 121 149 156 183 190 378 379 a_iocb_ptr parameter pointer dcl 36 ref 114 120 149 155 183 188 377 a_new_status parameter fixed bin(17,0) dcl 36 set ref 114 122 132* 136 183 192 205 205 215 216 221 a_old_status parameter fixed bin(17,0) dcl 36 set ref 149 157 167* 170 183 191 202* 211 322* a_queue_ctl_eptr parameter pointer dcl 36 ref 114 119 149 154 183 189 376 addr builtin function dcl 95 ref 136 170 211 215 439 440 441 443 444 445 460 b based structure level 1 unaligned dcl 79 b_descr 30 based structure level 4 in structure "c" packed packed unaligned dcl 79 in procedure "cmcs_status_list_ctl_" set ref 259* 269* 309* 316 362* b_descr 30 based structure level 4 in structure "f" packed packed unaligned dcl 79 in procedure "cmcs_status_list_ctl_" set ref 335* 358* b_descr 000011 internal static structure level 1 packed packed unaligned dcl 64 in procedure "cmcs_status_list_ctl_" set ref 265* 266* 269 316* 319 330 340* 344 350* 358 439 b_descr 2 based structure level 3 in structure "status_list_ctl_entry" dcl 8-44 in procedure "cmcs_status_list_ctl_" set ref 257* 265 271* 307* 344* b_descr_ptr 000014 internal static pointer dcl 67 set ref 439* b_ptr 000060 internal static pointer dcl 76 set ref 266* 271 340* 343 350* 357 b_rs 000022 internal static structure level 1 unaligned dcl 70 set ref 443 447 b_rs_ptr 000052 internal static pointer dcl 73 set ref 266* 340* 350* 443* 448 c based structure level 1 unaligned dcl 79 c_descr 000012 internal static structure level 1 packed packed unaligned dcl 64 set ref 257 271 298 379* 381* 440 c_descr_ptr 000016 internal static pointer dcl 67 set ref 440* c_ptr 000062 internal static pointer dcl 76 set ref 216 259 259 269 270 309 309 310 316 317 362 362 381* 396 c_rs 000032 internal static structure level 1 unaligned dcl 70 set ref 444 c_rs_ptr 000054 internal static pointer dcl 73 set ref 381* 444* 449 450 cmcs_error_table_$bad_call_parm 000116 external static fixed bin(35,0) dcl 3-5 ref 207 291 300 393 cmcs_error_table_$no_message 000152 external static fixed bin(35,0) dcl 3-5 ref 227 cmcs_wait_ctl_$find 000112 constant entry external dcl 2-73 ref 226 comp_no 6 based fixed bin(17,0) level 3 packed packed unaligned dcl 415 set ref 423* comp_offset 6(18) based bit(18) level 3 packed packed unaligned dcl 415 set ref 423 423 control_hdr based structure level 1 dcl 1-11 control_ptrs 150 based structure level 2 dcl 10-17 count based fixed bin(17,0) level 2 dcl 8-44 set ref 224 255 276* 276 289 296 364* 364 descr 6 based structure level 2 packed packed unaligned dcl 415 set ref 419* descr_ptr 000110 automatic pointer dcl 49 set ref 378* descrs 27 based structure level 3 in structure "f" packed packed unaligned dcl 79 in procedure "cmcs_status_list_ctl_" descrs 1 based structure level 2 in structure "status_list_ctl_entry" dcl 8-44 in procedure "cmcs_status_list_ctl_" descrs 27 based structure level 3 in structure "b" packed packed unaligned dcl 79 in procedure "cmcs_status_list_ctl_" descrs 27 based structure level 3 in structure "c" packed packed unaligned dcl 79 in procedure "cmcs_status_list_ctl_" error_table_$action_not_performed 000106 external static fixed bin(35,0) dcl 59 ref 321 external_user_ctl_ptr 000206 external static pointer dcl 10-13 ref 126 161 196 473 f based structure level 1 unaligned dcl 79 f_descr 27 based structure level 4 in structure "c" packed packed unaligned dcl 79 in procedure "cmcs_status_list_ctl_" set ref 259* 270* 309* 317 362* f_descr 27 based structure level 4 in structure "b" packed packed unaligned dcl 79 in procedure "cmcs_status_list_ctl_" set ref 271* 343* 357* f_descr 1 based structure level 3 in structure "status_list_ctl_entry" dcl 8-44 in procedure "cmcs_status_list_ctl_" set ref 257* 298 307* 336* f_descr 000013 internal static structure level 1 packed packed unaligned dcl 64 in procedure "cmcs_status_list_ctl_" set ref 317* 319 332* 336 338 353* 357 441 f_descr_ptr 000020 internal static pointer dcl 67 set ref 441* f_ptr 000064 internal static pointer dcl 76 set ref 332* 335 353* 358 f_rs 000042 internal static structure level 1 unaligned dcl 70 set ref 445 f_rs_ptr 000056 internal static pointer dcl 73 set ref 332* 353* 445* fixed builtin function dcl 95 ref 423 423 flags 1 000032 internal static structure level 2 in structure "c_rs" packed packed unaligned dcl 70 in procedure "cmcs_status_list_ctl_" flags 1 000042 internal static structure level 2 in structure "f_rs" packed packed unaligned dcl 70 in procedure "cmcs_status_list_ctl_" flags 1 000022 internal static structure level 2 in structure "b_rs" packed packed unaligned dcl 70 in procedure "cmcs_status_list_ctl_" init_ptrs_sw 000070 internal static bit(1) initial packed unaligned dcl 90 set ref 462* init_sw based structure level 2 dcl 10-17 iocb_ptr 000106 automatic pointer dcl 49 set ref 377* 420* iox_$control 000174 constant entry external dcl 4-3 ref 420 key_len 000217 automatic fixed bin(35,0) initial level 2 dcl 5-12 set ref 5-12* key_struc 000217 automatic structure level 1 dcl 5-12 locate_sw 1(03) 000022 internal static bit(1) level 3 in structure "b_rs" packed packed unaligned dcl 70 in procedure "cmcs_status_list_ctl_" set ref 452* locate_sw 1(03) 000042 internal static bit(1) level 3 in structure "f_rs" packed packed unaligned dcl 70 in procedure "cmcs_status_list_ctl_" set ref 456* locate_sw 1(03) 000032 internal static bit(1) level 3 in structure "c_rs" packed packed unaligned dcl 70 in procedure "cmcs_status_list_ctl_" set ref 454* msg_hdr based structure level 1 dcl 6-15 msg_seg based structure level 1 dcl 7-12 msg_status 26 based fixed bin(17,0) level 3 dcl 79 set ref 216* 310* 396 my_name 000100 automatic char(21) initial packed unaligned dcl 47 set ref 47* 230* 292* 301* 322* 423* null builtin function dcl 95 ref 230 230 292 292 301 301 322 322 423 423 426 overlay based fixed bin(35,0) array dcl 92 set ref 448* 449* 450* overlay_len 000112 automatic fixed bin(17,0) dcl 92 set ref 447* 448 449 450 queue_ctl_entry based structure level 1 dcl 8-21 queue_ctl_eptr 000230 automatic pointer dcl 8-19 set ref 136 170 211 215 226 226 226* 230 230 322 376* queue_ctl_ptr 150 based pointer level 3 in structure "user_ctl" dcl 10-17 in procedure "cmcs_status_list_ctl_" ref 475 queue_ctl_ptr 000072 internal static pointer dcl 8-11 in procedure "cmcs_status_list_ctl_" set ref 475* queue_name 16 based char(32) level 2 dcl 8-21 set ref 322* rec_ptr 4 based pointer level 2 dcl 415 ref 428 size builtin function dcl 56 ref 447 status_info 26 based structure level 2 in structure "b" unaligned dcl 79 in procedure "cmcs_status_list_ctl_" status_info 26 based structure level 2 in structure "f" unaligned dcl 79 in procedure "cmcs_status_list_ctl_" status_info 26 based structure level 2 in structure "c" unaligned dcl 79 in procedure "cmcs_status_list_ctl_" status_list_ctl 2 based bit(1) level 3 dcl 10-17 set ref 126 161 196 479* status_list_ctl_entries 44 based structure array level 2 dcl 8-21 set ref 136 170 211 215 status_list_ctl_entry based structure level 1 dcl 8-44 status_list_ctl_eptr 000234 automatic pointer dcl 8-42 set ref 136* 170* 211* 215* 224 255 257 257 265 271 276 276 289 296 298 307 307 336 344 364 364 string builtin function dcl 56 ref 226 226 230 230 sub_err_ 000110 constant entry external dcl 98 ref 230 292 301 322 423 sub_err_retval 000113 automatic fixed bin(35,0) dcl 98 set ref 230* 292* 301* 322* 423* sysprint 000104 constant file interactive environment dcl 45 set ref 119 120 121 122 154 155 156 157 188 189 190 191 192* test_sw 000010 internal static bit(1) initial packed unaligned dcl 54 set ref 117 152 186 488* tree_path 2 based structure level 2 dcl 8-21 ref 226 226 230 230 unspec builtin function dcl 56 ref 298 298 319 319 330 330 338 338 user_ctl based structure level 1 dcl 10-17 user_ctl_ptr 000076 internal static pointer dcl 10-15 set ref 473* 475 479 version 000042 internal static fixed bin(17,0) level 2 in structure "f_rs" dcl 70 in procedure "cmcs_status_list_ctl_" set ref 458* version 000022 internal static fixed bin(17,0) level 2 in structure "b_rs" dcl 70 in procedure "cmcs_status_list_ctl_" set ref 458* version 000032 internal static fixed bin(17,0) level 2 in structure "c_rs" dcl 70 in procedure "cmcs_status_list_ctl_" set ref 458* vfile_descr 000242 automatic structure level 1 packed packed unaligned dcl 11-28 vfile_rs based structure level 1 dcl 11-13 vfile_rs_version 002254 constant fixed bin(17,0) initial dcl 11-9 ref 458 x_descr parameter structure level 1 packed packed unaligned dcl 411 ref 406 419 x_ptr parameter pointer dcl 411 set ref 406 426* 428* x_rs based structure level 1 unaligned dcl 415 x_rs_ptr parameter pointer dcl 411 set ref 406 419 420* 423 423 423 428 x_status parameter fixed bin(17,0) dcl 391 ref 388 394 394 396 zero 000014 constant fixed bin(35,0) initial dcl 85 set ref 460 zero_descr based structure level 1 packed packed unaligned dcl 89 ref 259 270 307 309 330 335 338 343 362 zero_descr_ptr 000066 internal static pointer dcl 87 set ref 259 270 307 309 330 335 338 343 362 460* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. based_key based varying char(8) dcl 5-17 baseptr builtin function dcl 95 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_error_table_$ambiguous_tree_path 000114 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_dest 000120 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_dest_count 000122 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_message_length 000124 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_password 000126 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_queue_path 000130 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_slew 000132 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_source 000134 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_station 000136 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_term_devchn 000140 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$bad_tree_path 000142 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$dest_already_disabled 000144 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$dest_already_enabled 000146 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$dest_disabled 000150 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$no_partial_messages 000154 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$null_partial_message 000156 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$queue_already_disabled 000160 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$queue_already_enabled 000162 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$queue_disabled 000164 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$source_already_disabled 000166 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$source_already_enabled 000170 external static fixed bin(35,0) dcl 3-5 cmcs_error_table_$source_disabled 000172 external static fixed bin(35,0) dcl 3-5 cmcs_expand_tree_path_ 000000 constant entry external dcl 2-24 cmcs_fillin_hdr_ 000000 constant entry external dcl 2-26 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_$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 control_hdr_len constant fixed bin(17,0) initial dcl 1-7 control_hdr_ptr 000114 automatic pointer dcl 1-9 ioa_ 000000 constant entry external dcl 52 iox_$attach_iocb 000000 constant entry external dcl 4-3 iox_$attach_name 000000 constant entry external dcl 4-3 iox_$close 000000 constant entry external dcl 4-3 iox_$delete_record 000000 constant entry external dcl 4-3 iox_$detach_iocb 000000 constant entry external dcl 4-3 iox_$error_output 000204 external static pointer dcl 4-25 iox_$find_iocb 000000 constant entry external dcl 4-3 iox_$get_chars 000000 constant entry external dcl 4-3 iox_$get_line 000000 constant entry external dcl 4-3 iox_$modes 000000 constant entry external dcl 4-3 iox_$open 000000 constant entry external dcl 4-3 iox_$position 000000 constant entry external dcl 4-3 iox_$put_chars 000000 constant entry external dcl 4-3 iox_$read_key 000000 constant entry external dcl 4-3 iox_$read_length 000000 constant entry external dcl 4-3 iox_$read_record 000000 constant entry external dcl 4-3 iox_$rewrite_record 000000 constant entry external dcl 4-3 iox_$seek_key 000000 constant entry external dcl 4-3 iox_$user_input 000200 external static pointer dcl 4-25 iox_$user_io 000176 external static pointer dcl 4-25 iox_$user_output 000202 external static pointer dcl 4-25 iox_$write_record 000000 constant entry external dcl 4-3 key 000116 automatic varying char(256) dcl 5-10 msg_hdr_len constant fixed bin(17,0) initial dcl 6-10 msg_hdr_ptr 000222 automatic pointer dcl 6-13 msg_hdr_version constant fixed bin(17,0) initial dcl 6-10 msg_seg_hdr_len constant fixed bin(17,0) initial dcl 7-7 msg_seg_ptr 000224 automatic pointer dcl 7-10 msg_seg_version constant fixed bin(17,0) initial dcl 7-7 queue_ctl based structure level 1 dcl 8-13 queue_ctl_eindex 000226 automatic fixed bin(17,0) dcl 8-17 queue_ctl_entry_len constant fixed bin(17,0) initial dcl 8-7 queue_ctl_hdr_len constant fixed bin(17,0) initial dcl 8-7 queue_ctl_version constant fixed bin(17,0) initial dcl 8-7 slew_ctl based structure level 1 dcl 9-10 slew_ctl_ptr 000236 automatic pointer dcl 9-8 status_list_ctl_eindex 000232 automatic fixed bin(17,0) dcl 8-40 user_ctl_exists_sw 000074 internal static bit(1) initial dcl 10-11 vfile_rs_ptr 000240 automatic pointer dcl 11-11 x based structure level 1 unaligned dcl 417 NAMES DECLARED BY EXPLICIT CONTEXT. add 000324 constant entry external dcl 114 check_msg_status 001755 constant entry internal dcl 388 ref 132 167 202 check_wait 001050 constant label dcl 221 ref 142 cmcs_status_list_ctl_ 000310 constant entry external dcl 22 delete 000470 constant entry external dcl 149 error_ret 001157 constant label dcl 240 ref 130 133 139 165 168 173 200 203 208 213 218 233 good_ret 001156 constant label dcl 238 ref 176 224 init_ptrs 002137 constant entry internal dcl 436 ref 477 link_descr 001173 constant entry internal dcl 247 ref 138 217 move 000641 constant entry external dcl 183 seek_descr 001776 constant entry internal dcl 406 ref 266 332 340 350 353 381 set_descr 001722 constant entry internal dcl 373 ref 129 164 199 setup 002235 constant entry internal dcl 469 ref 126 161 196 test 001161 constant entry external dcl 485 unlink_descr 001276 constant entry internal dcl 283 ref 172 212 zero_c_descr 001703 constant label dcl 362 ref 326 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2752 3164 2255 2762 Length 4214 2255 212 1013 475 72 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cmcs_status_list_ctl_ 605 external procedure is an external procedure. link_descr internal procedure shares stack frame of external procedure cmcs_status_list_ctl_. unlink_descr internal procedure shares stack frame of external procedure cmcs_status_list_ctl_. set_descr internal procedure shares stack frame of external procedure cmcs_status_list_ctl_. check_msg_status internal procedure shares stack frame of external procedure cmcs_status_list_ctl_. seek_descr internal procedure shares stack frame of external procedure cmcs_status_list_ctl_. init_ptrs internal procedure shares stack frame of external procedure cmcs_status_list_ctl_. setup internal procedure shares stack frame of external procedure cmcs_status_list_ctl_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 test_sw cmcs_status_list_ctl_ 000011 b_descr cmcs_status_list_ctl_ 000012 c_descr cmcs_status_list_ctl_ 000013 f_descr cmcs_status_list_ctl_ 000014 b_descr_ptr cmcs_status_list_ctl_ 000016 c_descr_ptr cmcs_status_list_ctl_ 000020 f_descr_ptr cmcs_status_list_ctl_ 000022 b_rs cmcs_status_list_ctl_ 000032 c_rs cmcs_status_list_ctl_ 000042 f_rs cmcs_status_list_ctl_ 000052 b_rs_ptr cmcs_status_list_ctl_ 000054 c_rs_ptr cmcs_status_list_ctl_ 000056 f_rs_ptr cmcs_status_list_ctl_ 000060 b_ptr cmcs_status_list_ctl_ 000062 c_ptr cmcs_status_list_ctl_ 000064 f_ptr cmcs_status_list_ctl_ 000066 zero_descr_ptr cmcs_status_list_ctl_ 000070 init_ptrs_sw cmcs_status_list_ctl_ 000072 queue_ctl_ptr cmcs_status_list_ctl_ 000074 user_ctl_exists_sw cmcs_status_list_ctl_ 000076 user_ctl_ptr cmcs_status_list_ctl_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cmcs_status_list_ctl_ 000100 my_name cmcs_status_list_ctl_ 000106 iocb_ptr cmcs_status_list_ctl_ 000110 descr_ptr cmcs_status_list_ctl_ 000112 overlay_len cmcs_status_list_ctl_ 000113 sub_err_retval cmcs_status_list_ctl_ 000114 control_hdr_ptr cmcs_status_list_ctl_ 000116 key cmcs_status_list_ctl_ 000217 key_struc cmcs_status_list_ctl_ 000222 msg_hdr_ptr cmcs_status_list_ctl_ 000224 msg_seg_ptr cmcs_status_list_ctl_ 000226 queue_ctl_eindex cmcs_status_list_ctl_ 000230 queue_ctl_eptr cmcs_status_list_ctl_ 000232 status_list_ctl_eindex cmcs_status_list_ctl_ 000234 status_list_ctl_eptr cmcs_status_list_ctl_ 000236 slew_ctl_ptr cmcs_status_list_ctl_ 000240 vfile_rs_ptr cmcs_status_list_ctl_ 000242 vfile_descr cmcs_status_list_ctl_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry put_terminate strem_prep put_data_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cmcs_wait_ctl_$find iox_$control sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cmcs_error_table_$ambiguous_tree_path cmcs_error_table_$bad_call_parm cmcs_error_table_$bad_dest cmcs_error_table_$bad_dest_count cmcs_error_table_$bad_message_length cmcs_error_table_$bad_password cmcs_error_table_$bad_queue_path cmcs_error_table_$bad_slew cmcs_error_table_$bad_source cmcs_error_table_$bad_station cmcs_error_table_$bad_term_devchn cmcs_error_table_$bad_tree_path cmcs_error_table_$dest_already_disabled cmcs_error_table_$dest_already_enabled cmcs_error_table_$dest_disabled cmcs_error_table_$no_message cmcs_error_table_$no_partial_messages cmcs_error_table_$null_partial_message cmcs_error_table_$queue_already_disabled cmcs_error_table_$queue_already_enabled cmcs_error_table_$queue_disabled cmcs_error_table_$source_already_disabled cmcs_error_table_$source_already_enabled cmcs_error_table_$source_disabled error_table_$action_not_performed external_user_ctl_ptr iox_$error_output iox_$user_input iox_$user_io iox_$user_output sysprint sysprint.fsb LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 45 000264 47 000300 5 12 000303 22 000307 25 000316 114 000317 117 000337 119 000342 120 000360 121 000377 122 000416 126 000434 129 000442 130 000443 132 000445 133 000453 136 000455 138 000462 139 000463 142 000465 149 000466 152 000501 154 000504 155 000522 156 000541 157 000560 161 000577 164 000605 165 000606 167 000610 168 000617 170 000621 172 000627 173 000630 176 000632 183 000633 186 000654 188 000657 189 000675 190 000714 191 000733 192 000752 196 000770 199 000776 200 000777 202 001001 203 001010 205 001012 207 001017 208 001022 211 001023 212 001031 213 001032 215 001034 216 001041 217 001045 218 001046 221 001050 224 001053 226 001056 227 001075 230 001102 233 001154 235 001155 238 001156 240 001157 485 001160 488 001167 489 001172 247 001173 255 001174 257 001176 259 001212 260 001224 265 001225 266 001233 267 001245 269 001250 270 001254 271 001261 275 001273 276 001274 277 001275 283 001276 289 001277 291 001301 292 001304 294 001346 296 001347 298 001351 300 001356 301 001360 304 001422 307 001423 309 001440 310 001450 311 001451 316 001452 317 001456 319 001460 321 001464 322 001466 326 001542 330 001543 332 001552 333 001564 335 001567 336 001576 337 001603 338 001604 340 001607 341 001621 343 001624 344 001633 345 001640 350 001641 351 001653 353 001656 354 001671 357 001674 358 001700 362 001703 364 001716 366 001720 367 001721 373 001722 376 001723 377 001727 378 001732 379 001735 381 001742 382 001754 388 001755 393 001757 394 001762 396 001770 399 001774 400 001775 406 001776 419 002000 420 002007 421 002042 423 002044 426 002125 427 002130 428 002131 430 002136 436 002137 439 002140 440 002143 441 002145 443 002147 444 002151 445 002153 447 002155 448 002157 449 002172 450 002204 452 002216 454 002220 456 002222 458 002224 460 002230 462 002232 463 002234 469 002235 473 002236 475 002242 477 002245 479 002246 480 002252 481 002253 ----------------------------------------------------------- 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