COMPILATION LISTING OF SEGMENT spooling_question_handler_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1741.8 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 spooling_question_handler_: proc (a_sip, code); 13 14 15 16 /* SPOOLING_QUESTION_HANDLER_ -- Command question handler for Spooling IO Module / tape_ansi_ interface. 17* Answers questions asked by ANSI tape IO Module. 18* Created by J. Phillipps 1/20/75 */ 19 20 21 dcl a_sip ptr, 22 cip ptr, 23 code fixed bin (35), 24 cqp ptr, 25 opt char (4) aligned, 26 rcode fixed bin (35), 27 max_answer fixed bin, 28 sp ptr, /* ptr to stack frame when condition occ. */ 29 status bit (72) aligned, 30 answer char (6) aligned varying; 31 32 dcl (addr, null, length) builtin; 33 34 35 dcl get_spooling_data_$next_volume entry (ptr, char (*) aligned, fixed bin (35)), 36 find_condition_info_ entry (ptr, ptr, fixed bin (35)), 37 ios_$order entry (char (*) aligned, char (*) aligned, ptr, bit (72) aligned); 38 39 dcl error_table_$no_next_volume ext fixed bin (35), 40 error_table_$uninitialized_volume ext fixed bin (35), 41 error_table_$signaller_fault fixed bin (35) ext, 42 error_table_$fatal_error fixed bin (35) ext, 43 error_table_$file_aborted ext fixed bin (35); 44 45 dcl spool_static_$norestart fixed bin ext; 46 47 48 dcl answer_string char (max_answer) based aligned; 49 50 51 dcl 1 command_question_info based (cqp) aligned, 52 2 length fixed bin, /* length in words of this structure */ 53 2 version fixed bin init (3), /* version number of this structure */ 54 2 action_flags aligned, /* tell handler how to proceed */ 55 3 cant_restart bit (1) unal, /* caller doesn't ever want to be returned to */ 56 3 default_restart bit (1) unal, /* caller can be returned to with no further action */ 57 3 pad bit (34) unal, 58 2 info_string char (256) var, /* may contain printable message */ 59 2 status_code fixed bin (35), /* if^=0, code interpretable by com_err_ */ 60 2 query_code fixed bin (35), 61 2 question_sw bit (1) unaligned, 62 2 yes_or_no_sw bit (1) unaligned, 63 2 preset_sw bit (1) unaligned, 64 2 answer_sw bit (1) unaligned, 65 2 name_ptr ptr, 66 2 name_lnth fixed bin, 67 2 question_ptr ptr, 68 2 question_lth fixed bin, 69 2 max_question_lth fixed bin, 70 2 answer_ptr ptr, 71 2 answer_lth fixed bin, 72 2 max_answer_lth fixed bin; 73 74 75 76 77 dcl 1 cond_info_ aligned, 1 1 /* BEGIN INCLUDE FILE ... cond_info.incl.pl1 1 2* coded by M. Weaver 12 July 1973 */ 1 3 1 4 2 mcptr ptr, /* ptr to machine conditions at time of fault */ 1 5 2 version fixed bin, /* version of this structure (now=1) */ 1 6 2 condition_name char(32) var, /* name of condition */ 1 7 2 infoptr ptr, /* ptr to software info structure */ 1 8 2 wcptr ptr, /* ptr to wall crossing machine conditions */ 1 9 2 loc_ptr ptr, /* ptr to location where condition occurred */ 1 10 2 flags aligned, 1 11 3 crawlout bit(1) unal, /* = "1"b if condition occurred in inner ring */ 1 12 3 pad1 bit(35) unal, 1 13 2 pad_word bit(36) aligned, 1 14 2 user_loc_ptr ptr, /* ptr to last non-support loc before condition */ 1 15 2 pad (4) bit(36) aligned; 1 16 1 17 /* END INCLUDE FILE ... cond_info.incl.pl1 */ 78 79 2 1 /* BEGIN INCLUDE FILE ... spooling_info.incl.pl1 */ 2 2 /* Spooling IO Module control structure. Created 11/4/74 by Janice Phillipps */ 2 3 /* Modified 1/25/78 by J. C. Whitmore during spool driver update */ 2 4 2 5 dcl sip ptr; /* pointer to spooling info structure */ 2 6 2 7 dcl 1 spooling_info based (sip) aligned, /* spooling info structure */ 2 8 2 version fixed bin, /* version of structure */ 2 9 2 pad1 fixed bin, /* space broken for ptr allocation */ 2 10 2 iocbp ptr, /* ptr to io control block used by tape_ansi_ */ 2 11 2 switch_name char (32), /* name of io switch attached to tape_ansi_ */ 2 12 2 nvols fixed bin, /* number of tape volumes requested */ 2 13 2 density char (4), 2 14 2 block_lnth char (4), 2 15 2 volids (3) char (6), /* array of tape volume ids */ 2 16 2 filesetid char (6), /* name of current ansi file set */ 2 17 2 comment char (64), /* comment to operator at mount */ 2 18 2 phys_line_length fixed bin, 2 19 2 phys_page_length fixed bin, 2 20 2 filenumber fixed bin, /* number of current file on tape */ 2 21 2 static_number char (6) aligned, 2 22 2 flgs, 2 23 3 fst_call bit (1) unaligned, /* indicates first time thru attach code */ 2 24 3 lst_call bit (1) unaligned, /* indicates spooling tape will be detached */ 2 25 3 io_sw bit (1) unaligned, /* = "1"b if ring in tape */ 2 26 3 vol_mount bit (1) unaligned, 2 27 3 pad1 bit (32) unaligned, 2 28 2 spooling_limits, 2 29 3 spool_file_limit_sw fixed bin, /* = 1 when reached specified spooling file limit */ 2 30 3 spool_line_limit_sw fixed bin, /* = 1 when reached specifid spooling line limit */ 2 31 3 file_limit fixed bin (35), /* count of files to spool until */ 2 32 3 line_limit fixed bin (35), /* count of lines to spool until */ 2 33 2 spooling_file_count fixed bin (35), /* count of files spooled so far */ 2 34 2 spooling_line_count fixed bin (35); /* count of lines spooled so far */ 2 35 2 36 dcl spooling_info_version_4 fixed bin int static init (4) options (constant); 2 37 2 38 2 39 /* END INCLUDE FILE ... spooling_info.incl.pl1 */ 80 81 82 83 /* */ 84 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ 85 sip = a_sip; /* ptr to spooling control structure */ 86 code = 0; 87 rcode = 0; 88 89 if spooling_info.version ^= spooling_info_version_4 then do; 90 code = error_table_$fatal_error; 91 return; 92 end; 93 94 answer = ""; /* initialize answer string */ 95 sp = null (); /* use most recent condition frame */ 96 cip = addr (cond_info_); /* ptr to condition info structure */ 97 cond_info_.version = 1; 98 call find_condition_info_ (sp, cip, rcode); /* get condition info */ 99 cqp = cond_info_.infoptr; /* set ptr to command_question structure */ 100 if cqp = null then do; 101 code = error_table_$signaller_fault; /* bad .. cannot continue */ 102 return; 103 end; 104 105 106 cqp -> command_question_info.preset_sw = "1"b; /* we will give the answer */ 107 cqp -> command_question_info.question_sw = "0"b; /* dont print question -- log it */ 108 cqp -> command_question_info.answer_sw = "0"b; /* don't print answer */ 109 cqp -> command_question_info.yes_or_no_sw = "1"b; /* we answer yes or no */ 110 111 max_answer = cqp -> command_question_info.max_answer_lth; /* define answer length */ 112 113 /* get_spooling_data_ types: "Reached end of volume list." 114* "Enter more volids or ""detach""". 115* If the operator types ""detach"" or there are no volume ids in the volume list, 116* processing will be terminated. The tape_ansi_ asks the question (which is suppressed by this routine) 117* "Do you want to terminate processing?" 118* The variable "string" is set to yes if the operator types detach or if the volume list remains exhausted. */ 119 120 if cqp -> command_question_info.status_code = error_table_$no_next_volume then do; 121 call get_spooling_data_$next_volume (sip, opt, rcode); 122 if rcode ^= 0 then do; 123 answer = "yes"; /* will terminate processing */ 124 spool_static_$norestart = 1; 125 end; 126 else answer = "no"; /* dont want to terminate processing */ 127 code = rcode; 128 end; 129 130 else if cqp -> command_question_info.status_code = 0 then do; /* ready to supply next volume */ 131 answer = sip -> spooling_info.volids (1); /* return volid */ 132 cqp -> command_question_info.yes_or_no_sw = "0"b; 133 end; 134 135 /* abort_file in tape_ansi_ types: 136* 137* "Unrecoverable error writing file lables. Do you want to delete defective file xxxxxx?" 138* This routine always answers yes so as to preserve standard ANSI tape format. */ 139 140 else if cqp -> command_question_info.status_code = error_table_$file_aborted then do; 141 answer = "yes"; /* want to delete the defective section of file set */ 142 spooling_info.filenumber = spooling_info.filenumber - 1; /* set file number back one */ 143 end; 144 145 /* Other questions asked by tape_ansi_ are 146* 147* from initialize_permitA: 148* "Volume xxxxxx requires initialization. Do you want to initialize it?" 149* "Volume xxxxxx requires re-initialization, but contains an unexpired file. Do you want to re-initialize it?" 150* 151* from volume_query: 152* "Do you want to overwrite the unexpired file xxxxx?" 153* All of these questions are answered yes */ 154 155 156 else do; 157 answer = "yes"; 158 end; 159 cqp -> command_question_info.answer_lth = length (answer); 160 command_question_info.answer_ptr -> answer_string = answer; 161 162 return; 163 164 165 end spooling_question_handler_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1524.5 spooling_question_handler_.pl1 >dumps>old>recomp>spooling_question_handler_.pl1 78 1 05/06/74 1741.0 cond_info.incl.pl1 >ldd>include>cond_info.incl.pl1 80 2 02/23/78 1619.8 spooling_info.incl.pl1 >ldd>include>spooling_info.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_sip parameter pointer dcl 21 ref 12 85 addr builtin function dcl 32 ref 96 answer 000112 automatic varying char(6) dcl 21 set ref 94* 123* 126* 131* 141* 157* 159 160 answer_lth 122 based fixed bin(17,0) level 2 dcl 51 set ref 159* answer_ptr 120 based pointer level 2 dcl 51 ref 160 answer_string based char dcl 48 set ref 160* answer_sw 106(03) based bit(1) level 2 packed unaligned dcl 51 set ref 108* cip 000100 automatic pointer dcl 21 set ref 96* 98* code parameter fixed bin(35,0) dcl 21 set ref 12 86* 90* 101* 127* command_question_info based structure level 1 dcl 51 cond_info_ 000116 automatic structure level 1 dcl 77 set ref 96 cqp 000102 automatic pointer dcl 21 set ref 99* 100 106 107 108 109 111 120 130 132 140 159 160 error_table_$fatal_error 000020 external static fixed bin(35,0) dcl 39 ref 90 error_table_$file_aborted 000022 external static fixed bin(35,0) dcl 39 ref 140 error_table_$no_next_volume 000014 external static fixed bin(35,0) dcl 39 ref 120 error_table_$signaller_fault 000016 external static fixed bin(35,0) dcl 39 ref 101 filenumber 51 based fixed bin(17,0) level 2 dcl 2-7 set ref 142* 142 find_condition_info_ 000012 constant entry external dcl 35 ref 98 get_spooling_data_$next_volume 000010 constant entry external dcl 35 ref 121 infoptr 14 000116 automatic pointer level 2 dcl 77 set ref 99 length builtin function dcl 32 ref 159 max_answer 000106 automatic fixed bin(17,0) dcl 21 set ref 111* 160 max_answer_lth 123 based fixed bin(17,0) level 2 dcl 51 ref 111 null builtin function dcl 32 ref 95 100 opt 000104 automatic char(4) dcl 21 set ref 121* preset_sw 106(02) based bit(1) level 2 packed unaligned dcl 51 set ref 106* question_sw 106 based bit(1) level 2 packed unaligned dcl 51 set ref 107* rcode 000105 automatic fixed bin(35,0) dcl 21 set ref 87* 98* 121* 122 127 sip 000150 automatic pointer dcl 2-5 set ref 85* 89 121* 131 142 142 sp 000110 automatic pointer dcl 21 set ref 95* 98* spool_static_$norestart 000024 external static fixed bin(17,0) dcl 45 set ref 124* spooling_info based structure level 1 dcl 2-7 spooling_info_version_4 constant fixed bin(17,0) initial dcl 2-36 ref 89 status_code 104 based fixed bin(35,0) level 2 dcl 51 ref 120 130 140 version based fixed bin(17,0) level 2 in structure "spooling_info" dcl 2-7 in procedure "spooling_question_handler_" ref 89 version 2 000116 automatic fixed bin(17,0) level 2 in structure "cond_info_" dcl 77 in procedure "spooling_question_handler_" set ref 97* volids 17 based char(6) array level 2 dcl 2-7 ref 131 yes_or_no_sw 106(01) based bit(1) level 2 packed unaligned dcl 51 set ref 109* 132* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. error_table_$uninitialized_volume external static fixed bin(35,0) dcl 39 ios_$order 000000 constant entry external dcl 35 status automatic bit(72) dcl 21 NAME DECLARED BY EXPLICIT CONTEXT. spooling_question_handler_ 000012 constant entry external dcl 12 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 344 372 217 354 Length 606 217 26 177 125 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME spooling_question_handler_ 128 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME spooling_question_handler_ 000100 cip spooling_question_handler_ 000102 cqp spooling_question_handler_ 000104 opt spooling_question_handler_ 000105 rcode spooling_question_handler_ 000106 max_answer spooling_question_handler_ 000110 sp spooling_question_handler_ 000112 answer spooling_question_handler_ 000116 cond_info_ spooling_question_handler_ 000150 sip spooling_question_handler_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. find_condition_info_ get_spooling_data_$next_volume THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$fatal_error error_table_$file_aborted error_table_$no_next_volume error_table_$signaller_fault spool_static_$norestart LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 000006 85 000017 86 000023 87 000024 89 000025 90 000030 91 000032 94 000033 95 000034 96 000036 97 000040 98 000042 99 000054 100 000056 101 000062 102 000066 106 000067 107 000072 108 000074 109 000076 111 000100 120 000102 121 000106 122 000126 123 000130 124 000134 125 000137 126 000140 127 000144 128 000147 130 000150 131 000152 132 000161 133 000163 140 000164 141 000166 142 000172 143 000175 157 000176 159 000202 160 000205 162 000213 ----------------------------------------------------------- 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