COMPILATION LISTING OF SEGMENT mtape_control_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/17/86 0848.4 mst Wed Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 mtape_control_: procedure; 7 8 /* format: style4 */ 9 10 /* * This program is part of the mtape_ I/O module and as such is not 11* * called directly by users, but through the iox_ I/O system. 12* * 13* * Modification History: 14* * 15* * Created by J. A. Bush 10/05/82 16* * Modified by J. A. Bush 12/01/83 to update error statistics before 17* * gathering information for volume_("" set_)status operations. 18**/ 19 20 /* ARGUMENT DATA */ 21 22 dcl arg_iocbp ptr; /* Input IOCB Pointer */ 23 dcl arg_order_name char (*); /* Input control order name */ 24 dcl arg_info_ptr ptr; /* Input control order info pointer */ 25 dcl arg_code fixed bin (35); /* Return error code */ 26 27 /* AUTOMATIC DATA */ 28 29 dcl iocbp ptr; /* Auto copy of IOCB pointer */ 30 dcl order_name char (32); /* Auto copy of control order name */ 31 dcl info_ptr ptr; /* Auto copy of control order info pointer */ 32 dcl code fixed bin (35); 33 dcl (cox, i) fixed bin; 34 dcl open bit (1) aligned; 35 dcl nvp ptr; 36 dcl vol_string char (128); 37 dcl short_info char (8) aligned; 38 dcl long_info char (100) aligned; 39 40 /* CONSTANT DATA */ 41 42 dcl myname char (6) int static options (constant) init ("mtape_"); 43 dcl ORDER_NAMES (16) char (19) int static options (constant) init 44 ("change_module", "cmod", 45 "file_set_status", "fsst", 46 "file_status", "fst", 47 "force_end_of_volume", "feov", 48 "hardware_status", "hwst", 49 "ring_in", "rin", 50 "volume_set_status", "vsst", 51 "volume_status", "vst"); 52 53 /* EXTERNAL STATIC DATA */ 54 55 dcl error_table_$no_file fixed bin (35) ext static; 56 dcl error_table_$no_operation fixed bin (35) ext static; 57 dcl error_table_$unimplemented_version fixed bin (35) ext static; 58 dcl error_table_$not_closed fixed bin (35) ext static; 59 dcl error_table_$not_open fixed bin (35) ext static; 60 61 /* BUILTIN FUNCTIONS */ 62 63 dcl (addr, convert, hbound, lbound, ltrim, null, rtrim, size, substr, sum, unspec) builtin; 64 65 /* EXTERNAL ENTRIES */ 66 67 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 68 dcl mtape_util_$alloc entry (ptr, fixed bin, ptr, fixed bin (21), ptr); 69 dcl mtape_util_$error entry options (variable); 70 dcl mtape_util_$get_statistics entry (ptr, fixed bin (35)); 71 dcl mtape_util_$init_pfm entry (ptr, fixed bin (35)); 72 dcl mtape_mount_cntl_$demount entry (ptr, fixed bin (35)); 73 dcl mtape_io_$order entry (ptr, char (*), fixed bin, ptr, fixed bin (35)); 74 dcl iox_$propagate entry (ptr); 75 76 /* BASED STORAGE */ 77 78 dcl based_area area based (mtape_data.areap); 79 dcl order_arg char (32) varying based (info_ptr); 80 81 /* control - entry to implement the iox_$control entry point */ 82 83 control: entry (arg_iocbp, arg_order_name, arg_info_ptr, arg_code); 84 85 iocbp = arg_iocbp -> iocb.actual_iocb_ptr; /* copy arguments */ 86 mtdp = iocbp -> iocb.attach_data_ptr; /* get ptr to our data structure */ 87 mtape_data.iocb_ptr = iocbp; /* save our IOCB ptr */ 88 maip = mtape_data.attach_info_ptr; 89 moip = mtape_data.open_info_ptr; 90 code, arg_code = 0; /* Reset return code */ 91 if arg_order_name = "io_call" then do; /* execute order on behalf of io_call? */ 92 io_call_infop = arg_info_ptr; /* yes, set info ptr to io_call structure */ 93 order_name = io_call_info.order_name; /* copy target order */ 94 if io_call_info.nargs ^= 0 then /* if target order has args */ 95 info_ptr = addr (io_call_info.args (1));/* point to first 1 */ 96 else info_ptr = null; /* allocate any structures in my area */ 97 end; 98 else do; /* not called from io_call */ 99 io_call_infop = null; /* null => not called from io_call */ 100 order_name = arg_order_name; 101 info_ptr = arg_info_ptr; 102 end; 103 104 /* First call the PFM and see if he wants to handle the control order */ 105 106 call mtape_data.order (mtdp, order_name, info_ptr, io_call_infop, code); 107 if code ^= error_table_$no_operation then /* he either did it or */ 108 go to CONTROL_OP_END; /* got another error, return */ 109 code = 0; /* give mtape_ proper a chance */ 110 111 /* PFM passed the buck back to us, does it stop here? */ 112 113 if iocbp -> iocb.open_descrip_ptr ^= null then /* is file open now? */ 114 open = "1"b; /* yes, set flag */ 115 else open = "0"b; /* no I/O switch is closed */ 116 do cox = hbound (ORDER_NAMES, 1) to lbound (ORDER_NAMES, 1) by -1 /* find the right control order */ 117 while (order_name ^= ORDER_NAMES (cox)); 118 end; 119 go to CONTROL_OP (cox); /* go process found control operation */ 120 121 CONTROL_OP (0): /* unrecognized by mtape_ */ 122 code = error_table_$no_operation; code = error_table_$no_operation; 123 go to CONTROL_OP_END; /* take common exit */ 124 125 CONTROL_OP (1): /* "change_module" operation */ 126 CONTROL_OP (2): /* "cmod" operation */ 127 call CHECK_CLOSED; /* I/O switch must be closed */ 128 if info_ptr ^= null then do; /* Non-null means to "push" a new PFM */ 129 if mtape_data.saved_pfm_info_ptr = null then do; /* must allocate a structure */ 130 allocate mtape_saved_pfm_info in (based_area) set (mspfmip); 131 mtape_data.saved_pfm_info_ptr = mspfmip;/* save ptr */ 132 mtape_saved_pfm_info.version = mtape_saved_pfm_info_version_1; /* and set version */ 133 end; 134 mtape_saved_pfm_info.pfm_name = mtape_attach_info.pfm_prefix; /* save the old PFM prefix */ 135 mtape_saved_pfm_info.old_pfm_entries = mtape_data.pfm_required_entries; /* and PFM entries */ 136 mtape_attach_info.pfm_prefix = order_arg; 137 end; 138 else do; /* Null info ptr, this is a "POP" request */ 139 mspfmip = mtape_data.saved_pfm_info_ptr; /* get saved info */ 140 mtape_attach_info.pfm_prefix = mtape_saved_pfm_info.pfm_name; 141 end; 142 call mtape_util_$init_pfm (mtdp, code); /* search for new PFM */ 143 if code ^= 0 then do; /* if some error, restore other PFM */ 144 mtape_data.pfm_required_entries = mtape_saved_pfm_info.old_pfm_entries; 145 go to CONTROL_OP_END; 146 end; 147 free mtape_data.tlb -> mtape_label_record in (based_area); /* free up label buffer */ 148 mtape_data.tlb = null; /* this causes PFM to go through initialzation properly */ 149 call mtape_data.pfm_init (mtdp, code); /* init the new PFM */ 150 if code ^= 0 then do; /* couldn't init it */ 151 mtape_data.pfm_required_entries = mtape_saved_pfm_info.old_pfm_entries; 152 go to CONTROL_OP_END; 153 end; 154 mtape_data.first_file = "0"b; /* reset for consistency checks */ 155 go to CONTROL_OP_END; /* take common exit */ 156 157 CONTROL_OP (3): /* "file_set_status" operation */ 158 CONTROL_OP (4): /* "fsst" operation */ 159 call CHECK_VERSION (fsst_version_1); /* check version if user allocated structure */ 160 if mtape_data.fi_head = null then do; /* never been opened */ 161 code = error_table_$no_file; 162 call mtape_util_$error (mtdp, code, 163 "^/The file set has not been opened during this attachment"); 164 go to CONTROL_OP_END; 165 end; 166 if info_ptr = null then do; /* we have to allocate the structure ourselves */ 167 mtape_fsst_nfiles = 0; /* first we have to determine the # of files */ 168 do fi_ptr = mtape_data.fi_head repeat mtape_file_info.next_fi_ptr while (fi_ptr ^= null); 169 if mtape_file_info.section = 1 then /* only count whole files */ 170 mtape_fsst_nfiles = mtape_fsst_nfiles + 1; /* increment number of files */ 171 end; 172 if mtape_fsst_nfiles = 0 then do; /* no files processed yet */ 173 code = error_table_$no_file; /* set real error code later */ 174 go to CONTROL_OP_END; 175 end; 176 allocate mtape_fsst in (based_area) set (fsst_ptr); /* allocate the structure */ 177 mtape_fsst.version = fsst_version_1; /* set version number */ 178 end; 179 else fsst_ptr = info_ptr; /* otherwise use user structure */ 180 mtape_fsst.file_set_id = mtape_data.fi_head -> mtape_file_info.file_set_id; /* set file set id */ 181 mtape_fsst.file_type = mtape_data.vs_head -> mtape_vol_set.volume_type; /* set volume type */ 182 mtape_fsst_nfiles = 0; 183 do fi_ptr = mtape_data.fi_head repeat mtape_file_info.next_fi_ptr while (fi_ptr ^= null); 184 if mtape_file_info.section = 1 then do; /* only count whole files */ 185 mtape_fsst_nfiles = mtape_fsst_nfiles + 1; /* increment number of files */ 186 f_statp = addr (mtape_fsst.fs_stat (mtape_fsst_nfiles)); /* set file_status ptr */ 187 call SET_FILE_STATUS; /* copy the file status for this file */ 188 end; 189 end; 190 mtape_fsst.nfiles = mtape_fsst_nfiles; /* set number of files for refer extent */ 191 if io_call_infop ^= null then do; /* if called from io_call, display the structure */ 192 call io_call_info.report ("File Set Status for ""^a"" file set ""^a"", number of files - ^d.", 193 Tape_volume_types (mtape_fsst.file_type), mtape_fsst.file_set_id, mtape_fsst.nfiles); 194 do i = 1 to mtape_fsst.nfiles; /* iterate through each file */ 195 f_statp = addr (mtape_fsst.fs_stat (i));/* set ptr to current structure */ 196 call DISPLAY_FILE_STATUS; /* do the display for each file */ 197 end; 198 free mtape_fsst in (based_area); /* free the file status structure */ 199 end; 200 else if info_ptr = null then /* if the user let us allocate the structure */ 201 arg_info_ptr = fsst_ptr; /* return pointer to allocated structure */ 202 go to CONTROL_OP_END; /* take common exit */ 203 204 CONTROL_OP (5): /* "file_status" operation */ 205 CONTROL_OP (6): /* "fst" operation */ 206 call CHECK_VERSION (fst_version_1); /* check version if user allocated structure */ 207 if mtape_data.fi_current = null then do; /* never been opened */ 208 code = error_table_$no_file; 209 call mtape_util_$error (mtdp, code, 210 "^/The file set has not been opened during this attachment"); 211 go to CONTROL_OP_END; 212 end; 213 if info_ptr = null then do; /* we have to allocate the structure ourselves */ 214 allocate mtape_fst in (based_area) set (fst_ptr); /* allocate the structure */ 215 mtape_fst.version = fst_version_1; /* set version number */ 216 end; 217 else fst_ptr = info_ptr; /* otherwise use user structure */ 218 mtape_fst.file_type = mtape_data.vs_head -> mtape_vol_set.volume_type; /* set volume type */ 219 fi_ptr = mtape_data.fi_current; /* set up for current file */ 220 f_statp = addr (mtape_fst.f_stat); /* set file_status ptr */ 221 call SET_FILE_STATUS; /* copy the file status for this file */ 222 if io_call_infop ^= null then do; /* if called from io_call, display the structure */ 223 call io_call_info.report ("Status of current File for ""^a"" file set", 224 Tape_volume_types (mtape_fst.file_type)); 225 call DISPLAY_FILE_STATUS; /* do the display for each file */ 226 free mtape_fst in (based_area); /* free the file status structure */ 227 end; 228 else if info_ptr = null then /* if the user let us allocate the structure */ 229 arg_info_ptr = fst_ptr; /* return pointer to allocated structure */ 230 go to CONTROL_OP_END; /* take common exit */ 231 232 CONTROL_OP (7): /* "force_end_of_volume" operation */ 233 CONTROL_OP (8): /* "feov" operation */ 234 if ^open | /* I/O switch must be open for output */ 235 (open & mtape_open_info.open_mode ^= Sequential_output & 236 mtape_open_info.open_mode ^= Stream_output) then do; 237 code = error_table_$not_open; /* set an appropriate error code */ 238 call mtape_util_$error (mtdp, code, 239 "^/The ""^a"" control operation requires that the I/O switch be open for output", 240 order_name); 241 end; 242 else do; 243 mtape_data.force_end_of_volume = "1"b; /* simulate EOT marker */ 244 mtape_data.arg_buf_ptr = null; /* set up to flush buffers */ 245 mtape_data.arg_buf_len = 0; 246 call mtape_data.write (mtdp, code); /* flush out buffers, and do volume switch */ 247 end; 248 go to CONTROL_OP_END; /* take common exit */ 249 250 CONTROL_OP (9): /* "hardware_status" operation */ 251 CONTROL_OP (10): /* "hwst" operation */ 252 call CHECK_VERSION (hwst_version_1); /* check version if user allocated structure */ 253 if info_ptr = null then do; /* we have to allocate the structure ourselves */ 254 allocate mtape_hardware_status in (based_area) set (hwst_ptr); /* allocate the structure */ 255 mtape_hardware_status.version = hwst_version_1; /* set version number */ 256 end; 257 else hwst_ptr = info_ptr; /* otherwise use user structure */ 258 call SET_HARDWARE_STATUS; /* copy the hardware status */ 259 if io_call_infop ^= null then do; /* if called from io_call, display the structure */ 260 call DISPLAY_HARDWARE_STATUS; /* display last hardware status */ 261 free mtape_hardware_status in (based_area); /* free the file status structure */ 262 end; 263 else if info_ptr = null then /* if the user let us allocate the structure */ 264 arg_info_ptr = hwst_ptr; /* return pointer to allocated structure */ 265 go to CONTROL_OP_END; /* take common exit */ 266 267 CONTROL_OP (11): /* "ring_in" operation */ 268 CONTROL_OP (12): /* "rin" operation */ 269 call CHECK_CLOSED; /* I/O switch must be closed */ 270 if ^mtape_attach_info.ring then do; /* if a ring already in, this is a NOP */ 271 call mtape_util_$alloc (mtdp, MTAPE_ALLOC_STR, null, size (mtape_data) * 4, mtape_data.cmtdp); 272 mtape_data.cmtdp -> mtape_data = mtape_data; /* allocate and copy control structure */ 273 mtdp, iocbp -> iocb.attach_data_ptr = mtape_data.cmtdp; /* use copy */ 274 call iox_$propagate (iocbp); /* let iox_ know about iocb change */ 275 nvp = mtape_data.vs_current; /* save current volume ptr */ 276 do vs_ptr = mtape_data.vs_head repeat mtape_vol_set.next_vs_ptr while (vs_ptr ^= null); 277 if mtape_vol_set.mounted then do; /* if volume currently mounted... */ 278 mtape_data.vs_current = vs_ptr; /* set current volume set ptr */ 279 mtape_data.tioi_id = mtape_vol_set.tioi_id; /* just to be sure */ 280 call mtape_io_$order (mtdp, "rwnw", 0, null, code); /* rewind volume */ 281 call mtape_mount_cntl_$demount (mtdp, code); /* demount the volume */ 282 end; 283 end; 284 code = 0; 285 mtape_data.lab_bufp = null; /* avoid invalid ptrs */ 286 mtape_data.tioi_id = "0"b; /* reset this constant */ 287 mtape_data.vs_current = nvp; /* restore current volume ptr */ 288 mtape_attach_info.ring = "1"b; /* and set the write ring flag */ 289 end; 290 go to CONTROL_OP_END; /* take common exit */ 291 292 CONTROL_OP (13): /* "volume_set_status" operation */ 293 CONTROL_OP (14): /* "vsst" operation */ 294 call CHECK_VERSION (vsst_version_1); /* check version if user allocated structure */ 295 if info_ptr = null then do; /* we have to allocate the structure ourselves */ 296 mtape_vsst_nvolumes = 0; /* vsrst we have to determine the # of volumes */ 297 do vs_ptr = mtape_data.vs_head repeat mtape_vol_set.next_vs_ptr while (vs_ptr ^= null); 298 mtape_vsst_nvolumes = mtape_vsst_nvolumes + 1; /* increment number of volumes */ 299 end; 300 if mtape_vsst_nvolumes = 0 then do; /* no volumes processed yet */ 301 code = error_table_$no_operation; /* set real error code later */ 302 go to CONTROL_OP_END; 303 end; 304 allocate mtape_vsst in (based_area) set (vsst_ptr); /* allocate the structure */ 305 mtape_vsst.version = vsst_version_1; /* set version number */ 306 end; 307 else vsst_ptr = info_ptr; /* otherwise use user structure */ 308 mtape_vsst.volume_type = mtape_data.vs_head -> mtape_vol_set.volume_type; /* set volume type */ 309 mtape_vsst_nvolumes = 0; 310 do vs_ptr = mtape_data.vs_head repeat mtape_vol_set.next_vs_ptr while (vs_ptr ^= null); 311 mtape_vsst_nvolumes = mtape_vsst_nvolumes + 1; /* increment number of volumes */ 312 v_statp = addr (mtape_vsst.vs_stat (mtape_vsst_nvolumes)); /* set volume status ptr */ 313 call SET_VOLUME_STATUS; /* copy the volume status for this volume */ 314 end; 315 mtape_vsst.nvolumes = mtape_vsst_nvolumes; /* set number of volumes for refer extent */ 316 if io_call_infop ^= null then do; /* if called from io_call, display the structure */ 317 call io_call_info.report ("Volume Set Status for ""^a"" volume set, number of volumes - ^d.", 318 Tape_volume_types (mtape_vsst.volume_type), mtape_vsst.nvolumes); 319 do i = 1 to mtape_vsst.nvolumes; /* iterate through each volume */ 320 v_statp = addr (mtape_vsst.vs_stat (i));/* set ptr to current structure */ 321 call DISPLAY_VOLUME_STATUS; /* do the display for each volume */ 322 end; 323 free mtape_vsst in (based_area); /* free the volume status structure */ 324 end; 325 else if info_ptr = null then /* if the user let us allocate the structure */ 326 arg_info_ptr = vsst_ptr; /* return pointer to allocated structure */ 327 go to CONTROL_OP_END; /* take common exit */ 328 329 CONTROL_OP (15): /* "volume_status" operation */ 330 CONTROL_OP (16): /* "vst" operation */ 331 call CHECK_VERSION (vst_version_1); /* check version if user allocated structure */ 332 if info_ptr = null then do; /* we have to allocate the structure ourselves */ 333 allocate mtape_vst in (based_area) set (vst_ptr); /* allocate the structure */ 334 mtape_vst.version = vst_version_1; /* set version number */ 335 end; 336 else vst_ptr = info_ptr; /* otherwise use user structure */ 337 mtape_vst.volume_type = mtape_data.vs_head -> mtape_vol_set.volume_type; /* set volume type */ 338 vs_ptr = mtape_data.vs_current; /* set up for current volume */ 339 v_statp = addr (mtape_vst.v_stat); /* set volume_status ptr */ 340 call SET_VOLUME_STATUS; /* copy the volume status for this volume */ 341 if io_call_infop ^= null then do; /* if called from io_call, display the structure */ 342 call io_call_info.report ("Status of current Volume for ""^a"" volume set", 343 Tape_volume_types (mtape_vst.volume_type)); 344 call DISPLAY_VOLUME_STATUS; /* do the display for each volume */ 345 free mtape_vst in (based_area); /* free the volume status structure */ 346 end; 347 else if info_ptr = null then /* if the user let us allocate the structure */ 348 arg_info_ptr = vst_ptr; /* return pointer to allocated structure */ 349 350 CONTROL_OP_END: 351 arg_code = code; /* return error code */ 352 return; 353 354 /* CHECK_VERSION - internal procedure to check the structure version number for user allocated structures */ 355 356 CHECK_VERSION: proc (req_version); 357 358 dcl req_version char (8); 359 dcl 1 version_check based (info_ptr) aligned, /* generic structure to check version number */ 360 2 version char (8); 361 362 if info_ptr ^= null then /* if user has allocated his own structure */ 363 if version_check.version ^= req_version then do; /* but the version number is wrong */ 364 code = error_table_$unimplemented_version; /* set appropriate error code */ 365 go to CONTROL_OP_END; /* take non-local goto to error return */ 366 end; 367 368 end CHECK_VERSION; 369 370 /* CHECK_CLOSED - internal procedure to verify that I/O switch is closed */ 371 372 CHECK_CLOSED: proc; 373 374 if open then do; /* can't be open */ 375 code = error_table_$not_closed; 376 call mtape_util_$error (mtdp, code, 377 "^/The ""^a"" control operation requires that the I/O switch be closed.", order_name); 378 go to CONTROL_OP_END; /* take non-local goto and return */ 379 end; 380 381 end CHECK_CLOSED; 382 383 /* DISPLAY_HARDWARE_STATUS - internal procedure to display hardware status for io_call */ 384 385 DISPLAY_HARDWARE_STATUS: proc; 386 387 call io_call_info.report ("^/Last reported hardware status; Description:^/^a", 388 mtape_hardware_status.description); 389 call io_call_info.report ("^/I/O Status Words:^-^12.3b ^12.3b", 390 substr (mtape_hardware_status.iom_status, 1, 36), substr (mtape_hardware_status.iom_status, 37, 36)); 391 call io_call_info.report ("List Pointer Words:^-^12.3b ^12.3b", 392 substr (mtape_hardware_status.iom_lpw, 1, 36), substr (mtape_hardware_status.iom_lpw, 37, 36)); 393 394 end DISPLAY_HARDWARE_STATUS; 395 396 /* DISPLAY_FILE_STATUS - internal procedure to display file status for each file */ 397 398 DISPLAY_FILE_STATUS: proc; 399 400 dcl i fixed bin; 401 402 call io_call_info.report ("^/File Number:^-^d", file_status.file_seq); 403 call io_call_info.report ("File Name:^-^a", file_status.file_id); 404 call io_call_info.report ("File State:^-^[Never opened^;Not open^;Open^;Open with error^]", 405 file_status.file_state + 1); 406 if file_status.error_code ^= 0 then do; 407 call convert_status_code_ (file_status.error_code, short_info, long_info); 408 call io_call_info.report ("File Code:^-^w (^a)", file_status.error_code, long_info); 409 end; 410 vol_string = ""; /* clear out volume name string */ 411 i = 0; 412 do vs_ptr = mtape_data.vs_head repeat mtape_vol_set.next_vs_ptr while (i < file_status.end_vol_index); 413 i = i + 1; /* increment volume index */ 414 if i >= file_status.begin_vol_index then do; /* at beginning volume of file? */ 415 if mtape_vol_set.volume_id ^= "" then /* if volume id has been set */ 416 vol_string = rtrim (vol_string) || " " || mtape_vol_set.volume_id; 417 else vol_string = rtrim (vol_string) || " " || mtape_vol_set.volume_name; 418 end; 419 end; 420 vol_string = ltrim (vol_string); /* trim off leading white space */ 421 call io_call_info.report ("File Sections:^-^d", file_status.file_sections); 422 call io_call_info.report ("On Volume^[s^]:^-^a", (file_status.file_sections > 1), vol_string); 423 if file_status.generation > 0 then /* if a gereration number exists */ 424 call io_call_info.report ("Generation:^-^d^[; Generation Version:^-^d^;^1s^]", 425 file_status.generation, (file_status.gen_version > 0), file_status.gen_version); 426 if file_status.creation ^= " 00000" then /* if creation date exists.. */ 427 call io_call_info.report ("Creation Date:^-^a", CV_DATE (file_status.creation)); 428 if file_status.expiration ^= " 00000" then /* if expiration date exists.. */ 429 call io_call_info.report ("Expiration Date:^-^a", CV_DATE (file_status.expiration)); 430 call io_call_info.report ("File Format:^-^a", file_status.file_format); 431 call io_call_info.report ("Block Length:^-^d", file_status.block_len); 432 call io_call_info.report ("Record Length:^-^d", file_status.reclen); 433 call io_call_info.report ("Recording Mode:^-^a", file_status.recording_mode); 434 if file_status.block_count ^= 0 then 435 call io_call_info.report ("Block Count:^-^d", file_status.block_count); 436 call io_call_info.report ("Read Errors:^-^d", file_status.read_errors); 437 call io_call_info.report ("Write Errors:^-^d", file_status.write_errors); 438 439 end DISPLAY_FILE_STATUS; 440 441 /* SET_FILE_STATUS - internal procedure to copy the file status for this file */ 442 443 SET_FILE_STATUS: proc; 444 445 dcl i fixed bin; 446 447 unspec (file_status) = "0"b; /* clear the structure first */ 448 file_status.file_id = mtape_file_info.file_id; /* set appropriate fields */ 449 file_status.file_seq = mtape_file_info.seq_number; 450 file_status.generation = mtape_file_info.generation; 451 file_status.gen_version = mtape_file_info.gen_version; 452 file_status.creation = mtape_file_info.creation_date; 453 file_status.expiration = mtape_file_info.expiration_date; 454 file_status.file_format = mtape_file_info.file_code; 455 file_status.block_len = mtape_file_info.block_size; 456 file_status.reclen = mtape_file_info.record_size; 457 file_status.block_count = mtape_file_info.block_count; 458 file_status.read_errors = mtape_file_info.read_errors; 459 file_status.write_errors = mtape_file_info.write_errors; 460 if mtape_file_info.conversion = MTAPE_CV_EBCDIC then /* set proper recording mode */ 461 file_status.recording_mode = "EBCDIC"; 462 else if mtape_file_info.conversion = MTAPE_CV_BCD then 463 file_status.recording_mode = "BCD"; 464 else if mtape_file_info.conversion = MTAPE_NO_CONVERSION & mtape_file_info.hdw_mode = MTAPE_HWM_NINE then 465 file_status.recording_mode = "ASCII"; 466 else if mtape_file_info.hdw_mode = MTAPE_HWM_BIN then 467 file_status.recording_mode = "BINARY"; 468 else file_status.recording_mode = "******"; 469 i = 0; /* reset volume count */ 470 do vs_ptr = mtape_data.vs_head repeat mtape_vol_set.next_vs_ptr while (file_status.end_vol_index = 0); 471 i = i + 1; /* increment volume index */ 472 if vs_ptr = mtape_file_info.begin_vs_ptr then 473 file_status.begin_vol_index = i; 474 if file_status.begin_vol_index ^= 0 then 475 file_status.file_sections = file_status.file_sections + 1; 476 if vs_ptr = mtape_file_info.end_vs_ptr then 477 file_status.end_vol_index = i; 478 end; 479 if mtape_file_info.position_within_file = NOT_POSITIONED_IN_FILE then 480 file_status.file_state = 1; 481 else if ^open then 482 file_status.file_state = 1; 483 else if mtape_data.error_lock ^= 0 then /* if an error lock exists.. */ 484 file_status.file_state = 3; 485 else file_status.file_state = 2; 486 file_status.error_code = mtape_data.error_lock; 487 488 end SET_FILE_STATUS; 489 490 /* DISPLAY_VOLUME_STATUS - internal procedure to display volume status for each volume */ 491 492 DISPLAY_VOLUME_STATUS: proc; 493 494 call io_call_info.report ("^/Volume Name:^-^a", volume_status.volume_name); 495 call io_call_info.report ("Volume ID:^-^a", volume_status.volume_id); 496 call io_call_info.report ("Mounted:^2-^[Yes^;No^]", volume_status.mounted); 497 if volume_status.device_name ^= "" then 498 call io_call_info.report ("On Device:^-^a", volume_status.device_name); 499 call io_call_info.report ("Volume Sequence:^-^d", volume_status.volume_index); 500 if volume_status.mounts > 0 then do; /* if volume has ever been mounted */ 501 if volume_status.mounts > 1 | ^volume_status.mounted then do; /* if not currently mounted | > 1 mount */ 502 call io_call_info.report ("Total Volume Error Statistics^[ Across ^d Volume Mounts^;^1s^]:^/", 503 (volume_status.mounts > 1), volume_status.mounts); 504 call REPORT_ERR_STATS (addr (volume_status.tot_error_stats)); 505 end; 506 if volume_status.mounted then do; /* if volume currently mounted */ 507 call io_call_info.report ("Volume Error Statistics For Current Mount:^/"); 508 call REPORT_ERR_STATS (addr (volume_status.rel_error_stats)); 509 end; 510 end; 511 512 end DISPLAY_VOLUME_STATUS; 513 514 /* SET_VOLUME_STATUS - internal procedure to copy the volume status for this volume */ 515 516 SET_VOLUME_STATUS: proc; 517 518 volume_status.volume_name = mtape_vol_set.volume_name; /* copy volume info */ 519 volume_status.volume_id = mtape_vol_set.volume_id; 520 volume_status.mounted = mtape_vol_set.mounted; 521 volume_status.volume_index = mtape_vol_set.volume_index; 522 volume_status.device_name = mtape_vol_set.device_name; 523 volume_status.mounts = mtape_vol_set.mounts; 524 if open & mtape_data.tioi_id = mtape_vol_set.tioi_id then do; /* update error stats */ 525 if mtape_open_info.open_mode = Sequential_output | 526 mtape_open_info.open_mode = Stream_output then do; /* currently open for output */ 527 mtape_data.arg_buf_ptr = null; /* set up to flush out buffers */ 528 mtape_data.arg_buf_len = 0; 529 call mtape_data.write (mtdp, code); /* flush out buffers */ 530 end; 531 call mtape_util_$get_statistics (mtdp, code);/* update error stats */ 532 end; 533 volume_status.tot_error_stats = mtape_vol_set.tot_error_stats; 534 volume_status.rel_error_stats = mtape_vol_set.rel_error_stats; 535 536 end SET_VOLUME_STATUS; 537 538 /* REPORT_ERR_STATS - internal procedure to format error statistics for io_call */ 539 540 REPORT_ERR_STATS: proc (esp); 541 542 dcl esp ptr; 543 dcl i fixed bin; 544 545 es_ptr = esp; 546 call io_call_info.report ("Operation^20tNumber Processed^40tErrors^/"); 547 if mtape_err_stats.read.operations > 0 then /* Where any reads done? */ 548 call io_call_info.report ("Read^20t^d^40t^d", 549 mtape_err_stats.read.operations, mtape_err_stats.read.errors); 550 if mtape_err_stats.write.operations > 0 then /* Where any writes done? */ 551 call io_call_info.report ("Write^20t^d^40t^d", 552 mtape_err_stats.write.operations, mtape_err_stats.write.errors); 553 if mtape_err_stats.orders.operations > 0 then /* Where any orders done? */ 554 call io_call_info.report ("Non-data Xfer Cmds^20t^d^40t^d", 555 mtape_err_stats.orders.operations, mtape_err_stats.orders.errors); 556 if sum (mtape_err_stats.successful_retry) > 0 then do; /* Do not display unless we have some */ 557 call io_call_info.report ("^/Successful Read Error Recovery Stratagy^/"); 558 call io_call_info.report ("IDCW Chn Cmd^20tSuccessful Recoverys^/"); 559 do i = hbound (mtape_err_stats.successful_retry, 1); 560 if mtape_err_stats.successful_retry (i) > 0 then /* only display case if retrys */ 561 call io_call_info.report ("^5x3^d^20t^d", i, mtape_err_stats.successful_retry (i)); 562 end; 563 end; 564 565 end REPORT_ERR_STATS; 566 567 /* SET_HARDWARE_STATUS - internal procedure to obtain last hardware status from 568* tape_ioi_ and fill in mtape_hardware_status structure */ 569 570 SET_HARDWARE_STATUS: proc; 571 572 allocate ths in (based_area) set (ths_ptr); /* allocate tape_ioi_ status structure */ 573 ths.version = THS_VERSION_1; /* set proper version number */ 574 call tape_ioi_$hardware_status (mtape_data.tioi_id, ths_ptr, code); 575 if code ^= 0 then do; 576 call mtape_util_$error (mtdp, code, "Error from tape_ioi_$hardware_status."); 577 go to CONTROL_OP_END; 578 end; 579 mtape_hardware_status.description = ths.description; /* now fill in our structure */ 580 mtape_hardware_status.iom_status = ths.iom; 581 mtape_hardware_status.iom_lpw = ths.lpw; 582 free ths in (based_area); /* free up tape_ioi_ structure */ 583 584 end SET_HARDWARE_STATUS; 585 586 /* CV_DATE - function to convert julian date (yyddd) to month/day/year */ 587 588 CV_DATE: proc (julian) returns (char (10) aligned); 589 590 dcl julian char (6) aligned; /* date in form: " yyddd" */ 591 592 dcl clock fixed bin (71), 593 (month, day, year) fixed bin, 594 (Cmonth, Cday, Cyear) pic "99", 595 date_time char (10) aligned, 596 code fixed bin (35); 597 598 dcl decode_clock_value_$date_time entry (fixed bin (71), fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, 599 fixed bin, fixed bin (71), fixed bin, char (3), fixed bin (35)), 600 encode_clock_value_$offsets entry (fixed bin (71), fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, 601 fixed bin, fixed bin (71), fixed bin, char (3), fixed bin (71), fixed bin (35)); 602 603 year = convert (year, substr (julian, 2, 2)); 604 day = convert (day, substr (julian, 4, 3)); 605 call encode_clock_value_$offsets (0, 0, day - 1, year - 1, 0, 0, 0, 0, 0, "gmt", clock, code); 606 if code ^= 0 then return ("unknown"); 607 call decode_clock_value_$date_time (clock, month, day, year, 0, 0, 0, 0, 0, "gmt", code); 608 if code ^= 0 then return ("unknown"); 609 Cmonth = month; 610 Cday = day; 611 Cyear = year - 1900; 612 date_time = Cmonth || "/" || Cday || "/" || Cyear; 613 return (date_time); 614 615 end CV_DATE; 616 1 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 1 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 1 3* version number to IOX2. */ 1 4 /* format: style2 */ 1 5 1 6 dcl 1 iocb aligned based, /* I/O control block. */ 1 7 2 version character (4) aligned, /* IOX2 */ 1 8 2 name char (32), /* I/O name of this block. */ 1 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 1 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 1 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 1 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 1 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 1 14 2 reserved bit (72), /* Reserved for future use. */ 1 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 1 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 1 17 /* open(p,mode,not_used,s) */ 1 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 1 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 20 /* get_line(p,bufptr,buflen,actlen,s) */ 1 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 1 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 1 24 /* put_chars(p,bufptr,buflen,s) */ 1 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 1 26 /* modes(p,newmode,oldmode,s) */ 1 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 1 28 /* position(p,u1,u2,s) */ 1 29 2 control entry (ptr, char (*), ptr, fixed (35)), 1 30 /* control(p,order,infptr,s) */ 1 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 32 /* read_record(p,bufptr,buflen,actlen,s) */ 1 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 1 34 /* write_record(p,bufptr,buflen,s) */ 1 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 1 36 /* rewrite_record(p,bufptr,buflen,s) */ 1 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 1 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 39 /* seek_key(p,key,len,s) */ 1 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 41 /* read_key(p,key,len,s) */ 1 42 2 read_length entry (ptr, fixed (21), fixed (35)), 1 43 /* read_length(p,len,s) */ 1 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 1 45 /* open_file(p,mode,desc,not_used,s) */ 1 46 2 close_file entry (ptr, char (*), fixed bin (35)), 1 47 /* close_file(p,desc,s) */ 1 48 2 detach entry (ptr, char (*), fixed bin (35)); 1 49 /* detach(p,desc,s) */ 1 50 1 51 declare iox_$iocb_version_sentinel 1 52 character (4) aligned external static; 1 53 1 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 617 618 2 1 /* BEGIN INCLUDE FILE mtape_data.incl.pl1. Created by J. A. Bush 10/06/82 */ 2 2 /* format: style4 */ 2 3 2 4 dcl mtdp ptr; 2 5 2 6 dcl mtape_data_version_1 char (8) int static options (constant) init ("mtdv0001"); 2 7 2 8 dcl 1 mtape_data aligned based (mtdp), 2 9 2 version char (8), /* Current structure version */ 2 10 2 areap ptr, /* Pointer to an allocation area */ 2 11 2 iocb_ptr ptr, /* Pointer to our IO control block */ 2 12 2 atdp ptr, /* Pointer to the attach description string */ 2 13 2 opdp ptr, /* Pointer to the open description string */ 2 14 2 cldp ptr, /* Pointer to close description string */ 2 15 2 dtdp ptr, /* Pointer to detach description string */ 2 16 2 cmtdp ptr, /* If non-null, Ptr to allocated copy of mtape_data */ 2 17 2 vs_head ptr, /* Pointer to the first volume_set structure */ 2 18 2 vs_tail ptr, /* Pointer to the last volume_set structure */ 2 19 2 vs_current ptr, /* Pointer to the current volume_set structure */ 2 20 2 vs_mounted_tail ptr, /* Pointer to MRM volume_set member */ 2 21 2 fi_head ptr, /* Pointer to the first file_info structure */ 2 22 2 fi_tail ptr, /* Pointer to the last file_info structure */ 2 23 2 fi_current ptr, /* Pointer to the current file_info structure */ 2 24 2 tape_infop ptr, /* Pointer to rcp tape info structure */ 2 25 2 last_ur_status_ptr ptr, /* If non-null, Ptr to last unrecoverable status */ 2 26 2 io_echan fixed bin (71), /* Fast wait channel for I/O interrupts */ 2 27 2 mount_echan fixed bin (71), /* Regular wait channel for mount requests */ 2 28 2 data_xfer_args, /* Arguments for time critical (read/write) calls */ 2 29 3 arg_buf_ptr ptr, /* Pointer to users buffer */ 2 30 3 arg_buf_len fixed bin (21), /* Length of users buffer in bytes */ 2 31 3 arg_rec_len fixed bin (21), /* Length of record read in bytes */ 2 32 2 error_lock fixed bin (35), /* if ^= 0 = file locked error code */ 2 33 2 abs_ans char (3), /* Query answer (yes or no) for abs user */ 2 34 2 user_type bit (1), /* "1"b => interactive; "0"b => absentee */ 2 35 2 display_errors bit (1), /* "1"b => display verbose error messages */ 2 36 2 force_end_of_volume bit (1), /* "1"b => simulate EOV on next write */ 2 37 2 opd_len fixed bin (21), /* Allocated length of open description */ 2 38 2 drives_in_use fixed bin, /* Number of tape drives currently in use */ 2 39 2 data_buffers, /* Info about data buffers */ 2 40 3 buf_ptrs (8) ptr, /* Pointers to a subset of ioi buffers */ 2 41 3 blind_buf_ptrs (8) ptr, /* Pointers to other subset of buffers */ 2 42 3 buf_len (8) fixed bin (21), /* Length of buffers in 9 bit bytes */ 2 43 3 blind_buf_len (8) fixed bin (21), /* Lengths of other subset of buffers */ 2 44 3 nbufs fixed bin, /* Number of data buffers currently in use */ 2 45 3 buf_size fixed bin (21), /* Allocated size of data buffers in bytes */ 2 46 3 bufs_per_subset fixed bin, /* Number of buffers to write/read per I/O */ 2 47 3 cur_buf_idx fixed bin, /* Index into subset of current buffer */ 2 48 3 run bit (1), /* "1"b => wrt I/O queued thru tape_ioi_; "0"b => ^Queued */ 2 49 2 label_buffer, /* Info about label record buffer */ 2 50 3 lab_bufp ptr, /* Pointer to label I/O buffer */ 2 51 3 lab_buf_len fixed bin (21), /* Length of label buffer in 9 bit bytes */ 2 52 2 tlb ptr, /* Pointer to a temp label record structure */ 2 53 2 position, /* Position on current volume */ 2 54 3 phy_file fixed bin, /* physical file number */ 2 55 3 phy_block fixed bin, /* physical block within physical file */ 2 56 2 current_file, /* instantanious info about current file */ 2 57 3 cur_block, /* info about current block */ 2 58 4 cur_buf_ptr ptr, /* Pointer to the current data buffer */ 2 59 4 log_record_ptr ptr, /* Pointer to current logical record */ 2 60 4 length fixed bin (21), /* Length of current block in bytes */ 2 61 4 processed fixed bin (21), /* Number of chars processed already */ 2 62 4 remain fixed bin (21), /* Number of chars remaining to be processed */ 2 63 4 log_record fixed bin (21), /* Log. record within the current block */ 2 64 3 char_size fixed bin, /* Size in bits of the data chars of this file */ 2 65 3 padding_char char (1), /* To pad blocks to mod 4 on binary writes */ 2 66 3 length_mode fixed bin, /* 0 => W/R mod 4 blocks; 1 => W/R non-mod 4 blocks */ 2 67 3 hdw_mode fixed bin, /* Hardware recording mode: 2 68* 1 = binary; 2 = nine track; 3 = BCD */ 2 69 3 conversion fixed bin, /* File data conversion: 2 70* 0 = no conversion; 1 = ASCII<->EBCDIC; 2 = ASCII<->BCD */ 2 71 3 buffer_offset fixed bin, /* Number of bytes prior to data */ 2 72 3 block_size fixed bin (21), /* Maximum block size for this file */ 2 73 3 record_size fixed bin (21), /* Maximum record size for this file */ 2 74 3 prev_block_no fixed bin (21), /* Number of previous block read */ 2 75 3 ad_file_format fixed bin, /* 1 = U; 2 = F; 3 = D or V; 4 = S or VS */ 2 76 3 file_blocked bit (1), /* "1"b => file is blocked */ 2 77 3 native_file bit (1), /* "1"b => current file written by mtape_ PFM */ 2 78 3 write_after_read bit (1), /* "1"b => truncate file (and file_set) at this record */ 2 79 3 first_file bit (1), /* "1"b => first file has been processed */ 2 80 3 tot_bytes_processed fixed bin (35), /* total bytes in this file section */ 2 81 3 last_io fixed bin, /* Last I/O operation (1 = read; 2 = write) */ 2 82 3 lrec_rrcx fixed bin, /* current index of the lrec round robin counter */ 2 83 3 lrec_rrc, /* history of last n logical records */ 2 84 4 block_no (0:7) fixed bin (35), /* block (within file section) where lrec starts */ 2 85 4 block_len (0:7) fixed bin (35), /* block len of current block */ 2 86 4 lrec_no (0:7) fixed bin (35), /* logical record within currnt block */ 2 87 4 abs_byte (0:7) fixed bin (35), /* byte (within file section) where lrec starts */ 2 88 4 byte_offset (0:7) fixed bin, /* offset of 1st byte of lrec (within block) */ 2 89 3 blk_rrcx fixed bin, /* index into blk_rrrc array of last block */ 2 90 3 blk_rrrc (0:7) fixed bin (35), /* contains Lrec count of last n blocks */ 2 91 3 tot_lrec fixed bin (35), /* Total logical records processed in current file */ 2 92 2 tioi_id bit (36), /* Identifier used for calls to tape_ioi_ */ 2 93 2 attach_info_ptr ptr, /* Pointer to attach option info */ 2 94 2 open_info_ptr ptr, /* Pointer to open option info */ 2 95 2 close_info_ptr ptr, /* Pointer to close option info */ 2 96 2 detach_info_ptr ptr, /* Pointer to detach option info */ 2 97 2 pfm_info_ptr ptr, /* Pointer to PFM info block */ 2 98 2 saved_pfm_info_ptr ptr, /* Pointer to info for "change_module" control OP */ 2 99 2 pfm_name char (32), /* Name of Per-Format module */ 2 100 2 pfm_required_entries like pfm_entries, /* Required entry point declarations in PFM */ 2 101 2 pfm_work_area (32) fixed bin (35); /* PFM work buffer */ 2 102 2 103 dcl 1 pfm_entries based aligned, /* Entry declarations for PFM entries */ 2 104 2 pfm_init entry (ptr, fixed bin (35)), /* PFM initialization entry */ 2 105 2 file_open entry (ptr, fixed bin (35)), /* PFM file_open entry */ 2 106 2 file_close entry (ptr, fixed bin (35)), /* PFM file_close entry */ 2 107 2 read entry (ptr, fixed bin (35)), /* PFM read entry */ 2 108 2 write entry (ptr, fixed bin (35)), /* PFM write entry */ 2 109 2 order entry (ptr, char (*), ptr, ptr, fixed bin (35)), /* PFM control order entry */ 2 110 2 decode_file_labels entry (ptr, ptr, fixed bin, fixed bin, fixed bin (35)), 2 111 2 encode_file_labels entry (ptr, ptr, fixed bin, fixed bin, fixed bin, fixed bin (35)); 2 112 2 113 dcl all_buf_ptrs (16) ptr based (addr (mtape_data.buf_ptrs)); 2 114 dcl all_buf_lens (16) fixed bin (21) based (addr (mtape_data.buf_len)); 2 115 dcl tape_blk (mtape_data.length) char (1) unaligned based (mtape_data.cur_buf_ptr); /* template for a tape block */ 2 116 2 117 /* END INCLUDE FILE mtape_data.incl.pl1 */ 619 620 3 1 /* BEGIN INCLUDE FILE mtape_attach_info.incl.pl1. Created by J. A. Bush 06/13/83 */ 3 2 /* format: style4 */ 3 3 3 4 dcl maip ptr; 3 5 3 6 dcl mtape_attach_info_version_1 char (8) int static options (constant) init ("maiv0001"); 3 7 3 8 dcl 1 mtape_attach_info aligned based (maip), 3 9 2 version char (8), /* Current structure version */ 3 10 2 density fixed bin (35), /* 200, 556, 800, 1600, 6250 BPI */ 3 11 2 tracks fixed bin (35), /* Number of tracks, 7 or 9 */ 3 12 2 speed bit (36), /* "000"b = any speed; "1xx"b = 75 IPS; 3 13* "x1x"b = 125 IPS; "xx1"b = 200 IPS */ 3 14 2 ndrives fixed bin (35), /* 0 = unspecified; 1 - 63 devices to be used */ 3 15 2 wait_time fixed bin (35), /* time to wait in minutes for available device */ 3 16 2 pfm_prefix char (21), /* if "-volume_type" was specified */ 3 17 2 default_pfm_prefix char (21), /* if no "-vt" specified and blank volume */ 3 18 2 display bit (1), /* Display attach description on user_output */ 3 19 2 labeled bit (1), /* "1"b => labeled; "0"b => unlabeled volume set */ 3 20 2 wait bit (1), /* "1"b => wait for available devices; "0"b => don't wait */ 3 21 2 system bit (1), /* "1"b => User wants to be a "system" process */ 3 22 2 ring bit (1); /* "1"b => write ring in; "0"b => no write ring */ 3 23 3 24 /* END INCLUDE FILE mtape_attach_info.incl.pl1 */ 621 622 4 1 /* BEGIN INCLUDE FILE mtape_open_close_info.incl.pl1. Created by J. A. Bush 06/13/83 */ 4 2 /* format: style4 */ 4 3 4 4 dcl moip ptr; /* Pointer to mtape_open_info structure */ 4 5 dcl mcip ptr; /* Pointer to mtape_close_info structure */ 4 6 4 7 dcl mtape_open_info_version_1 char (8) int static options (constant) init ("moiv0001"); 4 8 dcl mtape_close_info_version_1 char (8) int static options (constant) init ("mciv0001"); 4 9 4 10 dcl 1 mtape_open_info aligned based (moip), 4 11 2 version char (8), /* Current structure version */ 4 12 2 cs_ptr ptr, /* Pointer to arg processing control structure */ 4 13 2 cal_ptr ptr, /* Pointer to arg processing ctl arg list */ 4 14 2 so_ptr ptr, /* Pointer to last saved iox_ options */ 4 15 2 open_mode fixed bin, /* iox_ opening mode */ 4 16 2 comment char (80), /* Display on user_output after open */ 4 17 2 expiration char (24), /* File expiration date */ 4 18 2 file_format char (3), /* File format code */ 4 19 2 recording_mode char (6), /* Ascii, ebcdic, or binary */ 4 20 2 file_name char (32), /* Name of file to be recorded */ 4 21 2 replace_id char (32), /* Name of file to replace */ 4 22 2 init_to_zero, /* Enables clearing rest of structure */ 4 23 3 block_length fixed bin (35), /* Block size in bytes */ 4 24 3 record_length fixed bin (35), /* Record length specified by user */ 4 25 3 default_span_rlen fixed bin (35), /* Default record length for spanned records */ 4 26 3 default_var_rlen fixed bin (35), /* Default record length for variable records */ 4 27 3 default_fix_rlen fixed bin (35), /* Default record length for fixed records */ 4 28 3 seq_number fixed bin (35), /* File sequence number */ 4 29 3 append bit (1), /* "1"b => append file to end of file set */ 4 30 3 create bit (1), /* "1"b => create this file */ 4 31 3 display bit (1), /* "1"b => display the open description */ 4 32 3 extend bit (1), /* "1"b => extend the current file */ 4 33 3 force bit (1), /* "1"b => disregard file expiration when creating */ 4 34 3 last_file bit (1), /* "1"b => position to last file of file set */ 4 35 3 next_file bit (1), /* "1"b => position to next file of file set */ 4 36 3 modify bit (1), /* "1"b => modify the current file */ 4 37 3 label_entry_present bit (1), /* "1"b => user label entry is valid */ 4 38 3 user_label entry (ptr, char (*), fixed bin, fixed bin, fixed bin, fixed bin (35)), 4 39 3 pfm_args like pfm_arg_values; /* see structure below */ 4 40 4 41 dcl 1 mtape_close_info aligned based (mcip), 4 42 2 version char (8), /* Current structure version */ 4 43 2 cs_ptr ptr, /* Pointer to arg processing control structure */ 4 44 2 cal_ptr ptr, /* Pointer to arg processing ctl arg list */ 4 45 2 so_ptr ptr, /* Pointer to last saved iox_ options */ 4 46 2 comment char (80), /* Display on user_output after open */ 4 47 2 init_to_zero, /* Enables clearing rest of structure */ 4 48 3 display bit (1), /* Display open description for user */ 4 49 3 position fixed bin, /* For positioning on file closing: 4 50* 0 = Leave at current position; 4 51* 1 = Position to beginning of file; 4 52* 2 = Position to end of file; 4 53* 3 = Position to beginning of file section; 4 54* 4 = Position to end of file section */ 4 55 3 pfm_args like pfm_arg_values; /* see structure below */ 4 56 4 57 dcl 1 pfm_arg_values aligned based, /* Common to open and close_info */ 4 58 2 pfm_opt_sw (5) bit (1), /* PFM dependent */ 4 59 2 pfm_opt_value (5) fixed bin (35), /* PFM dependent */ 4 60 2 pfm_opt_str (5) char (32); /* PFM dependent */ 4 61 4 62 /* END INCLUDE FILE mtape_open_close_info.incl.pl1 */ 623 624 5 1 /* BEGIN INCLUDE FILE mtape_file_info.incl.pl1. Created by J. A. Bush 10/13/82 */ 5 2 /* format: style4 */ 5 3 5 4 dcl fi_ptr ptr; 5 5 5 6 dcl mtape_fi_version_1 char (8) int static options (constant) init ("mtfiv001"); 5 7 5 8 dcl 1 mtape_file_info aligned based (fi_ptr), 5 9 2 version char (8), /* Current version */ 5 10 2 prev_fi_ptr ptr, /* Pointer to the previous file info structure */ 5 11 2 next_fi_ptr ptr, /* Pointer to the next file info structure */ 5 12 2 first_file_lab_ptr ptr, /* Pointer to 1st label record struc. */ 5 13 2 last_file_lab_ptr ptr, /* Pointer to last label record struc. */ 5 14 2 first_file_trail_ptr ptr, /* Pointer to 1st trailer record struc. */ 5 15 2 last_file_trail_ptr ptr, /* Pointer to last trailer record struc. */ 5 16 2 first_file_section_ptr ptr, /* Pointer to file_info struct. of 1st file section */ 5 17 2 begin_vs_ptr ptr, /* Pointer to 1st volume set struct. containing this file */ 5 18 2 end_vs_ptr ptr, /* Pointer to last volume set struct. containing this file */ 5 19 2 position_within_file fixed bin, /* 0 = In HDR; 1 = In data file; 2 = In trailer; 5 20* 3 = Not positioned within this file 5 21* 4 = At beginning of data file; 5 = At EOF */ 5 22 2 per_file_info, /* Information pertaining to entire file */ 5 23 3 file_id char (32), /* File identifier or name */ 5 24 3 file_set_id char (32), /* Identifies the file set */ 5 25 3 creation_date char (6), /* File creation date in form " yyddd" */ 5 26 3 expiration_date char (6), /* File expiration date in form " yyddd" */ 5 27 3 file_code char (3), /* Printable file code */ 5 28 3 file_format fixed bin, /* Current file format: 5 29* 0 = unspecified; 1 = U; 2 = F; 3 = D or V; 5 30* 4 = S or VS; 5 = FB; 5 31* 6 = DB or VB; 7 = SB or VBS; */ 5 32 3 seq_number fixed bin, /* File sequence number */ 5 33 3 generation fixed bin, /* File generation number, if supported */ 5 34 3 gen_version fixed bin, /* File generation version number, if supported */ 5 35 3 char_size fixed bin, /* Size in bits of the data chars of this file */ 5 36 3 hdw_mode fixed bin, /* Hardware mode: 1 = binary; 2 = nine; 3 = BCD */ 5 37 3 conversion fixed bin, /* File data conversion: 5 38* 1 = no conversion; 2 = ASCII<->EBCDIC; 3 = ASCII<->BCD */ 5 39 3 buffer_offset fixed bin, /* Number of bytes prior to data */ 5 40 3 length_mode fixed bin, /* 0 => W/R mod 4 blocks; 1 => W/R non-mod 4 blocks */ 5 41 3 block_size fixed bin (21), /* Maximum block size for this file */ 5 42 3 record_size fixed bin (21), /* Maximum record size for this file */ 5 43 3 native_file bit (1), /* "1"b => current file written by mtape_ PFM */ 5 44 3 user_labels_present bit (1), /* "1"b => UHL/UTL are present */ 5 45 3 unlabeled_file bit (1), /* "1"b => this is unlabeled file */ 5 46 3 pfm_opt_sw (5) bit (1), /* PFM dependent */ 5 47 3 pfm_opt_value (5) fixed bin (35), /* PFM dependent */ 5 48 3 pfm_opt_str (5) char (32), /* PFM dependent */ 5 49 2 per_section_info, /* Information pertaining only to this file section */ 5 50 3 section fixed bin, /* File section number for multi-volume files */ 5 51 3 phy_file fixed bin, /* Phy. file of HDR label GRP, on the current volume */ 5 52 3 first_file_on_volume bit (1), /* "1"b => First file or file section on this volume */ 5 53 3 end_of_file_set bit (1), /* "1"b => This is last file of file set */ 5 54 3 block_count fixed bin (35), /* Number of blocks in this file section */ 5 55 3 read_errors fixed bin (35), /* of errors encountered reading this file */ 5 56 3 write_errors fixed bin (35); /* of errors encountered writing this file */ 5 57 5 58 /* END INCLUDE FILE mtape_file_info.incl.pl1 */ 625 626 6 1 /* BEGIN INCLUDE FILE mtape_vol_set.incl.pl1. Created by J. A. Bush 10/13/82 */ 6 2 /* The include file mtape_err_stats.incl.pl1 is referenced by this include file */ 6 3 /* format: style4 */ 6 4 6 5 dcl vs_ptr ptr; 6 6 6 7 dcl mtape_vs_version_1 char (8) int static options (constant) init ("mtvsv001"); 6 8 6 9 dcl 1 mtape_vol_set aligned based (vs_ptr), 6 10 2 version char (8), /* Current version */ 6 11 2 prev_vs_ptr ptr, /* Pointer to previous volume set entry */ 6 12 2 next_vs_ptr ptr, /* Pointer to next volume set entry */ 6 13 2 mrm_vs_ptr ptr, /* Pointer to Most Recently Mounted VS member */ 6 14 2 lrm_vs_ptr ptr, /* Pointer to Least Recently Mounted VS member */ 6 15 2 first_vl_ptr ptr, /* Pointer to the first volume label record structure */ 6 16 2 last_vl_ptr ptr, /* Pointer to the last volume label record structure */ 6 17 2 volume_name char (32), /* Name specified in the attach description */ 6 18 2 volume_id char (32), /* Name as recorded in the volume label */ 6 19 2 mount_comment char (64), /* Mount comment from attach description */ 6 20 2 demount_comment char (64), /* Demount comment from detach description */ 6 21 2 device_name char (8), /* Device volume is currently or last mounted on */ 6 22 2 rcp_id bit (36), /* RCP activation for this volume */ 6 23 2 tioi_id bit (36), /* tape_ioi_ activation for this volume */ 6 24 2 volume_index fixed bin, /* Volume sequence number within volume set */ 6 25 2 volume_density fixed bin, /* Actual volume density determined by RCP */ 6 26 2 volume_type fixed bin, /* Use rcp_volume_formats.incl.pl1 for decode */ 6 27 2 volume_check fixed bin, /* Refer to named constants below for values */ 6 28 2 number_of_vol_labels fixed bin, /* # of volume label records on this volume */ 6 29 2 auth_required bit (1), /* "1"b => Operator authentication was required */ 6 30 2 mounted bit (1), /* "1"b => volume currently mounted */ 6 31 2 ever_mounted bit (1), /* "1"b => volume has been mounted */ 6 32 2 volume_end bit (1), /* "1"b => reached end of volume (EOT foil) on write */ 6 33 2 first_file_unexpired bit (1), /* "1"b => first file of volume is unexpired */ 6 34 2 dev_att_retry bit (1), /* "1"b => DEVICE ATTENTION recovery in progress */ 6 35 2 pwr_off_retry bit (1), /* "1"b => POWER OFF recovery in progress */ 6 36 2 mounts fixed bin, /* Number of times volume mounted during attachment */ 6 37 2 tot_error_stats like mtape_err_stats, /* Summation of error statistics for all mounts */ 6 38 2 rel_error_stats like mtape_err_stats; /* Summation of error statistics, this mount */ 6 39 6 40 /* Named constants applied to volume_check variable, when volume label read by PFMs pfm_init entry */ 6 41 6 42 dcl (MTAPE_VOLUME init (1), /* Volume recorded by mtape_ (desired type) */ 6 43 MULT_PRIOR_VOLUME init (2), /* Volume recorded by prior Multics software 6 44* (desired type) */ 6 45 NON_MULT_VOLUME init (3), /* Volume recorded by other vendor (desired type) */ 6 46 BLANK_VOLUME init (4), /* Volume is blank/unreadable */ 6 47 UNLABELED_VOLUME init (5), /* Volume is unlabeled or has unrecognized label */ 6 48 RECOG_FORMAT_VOLUME init (6) /* Volume has label of other recognized format */ 6 49 ) fixed bin int static options (constant); 6 50 6 51 /* END INCLUDE FILE mtape_vol_set.incl.pl1 */ 627 628 7 1 /* Begin include file ..... io_call_info.incl.pl1 */ 7 2 7 3 /* This include file defines the info_structure used by an I/O module to perform an "io_call" order 7 4* on behalf of the io_call command. */ 7 5 /* Coded April 1976 by Larry Johnson */ 7 6 /* Changed June 1977 by Larry Johnson for "io_call_af" order */ 7 7 7 8 dcl io_call_infop ptr; 7 9 7 10 dcl 1 io_call_info aligned based (io_call_infop), 7 11 2 version fixed bin, 7 12 2 caller_name char (32), /* Caller name for error messages */ 7 13 2 order_name char (32), /* Actual name of the order to be performed */ 7 14 2 report entry variable options (variable), 7 15 /* Entry to ioa_ like procedure to report results */ 7 16 2 error entry variable options (variable), 7 17 /* Entry to com_err_ like procedure to report results */ 7 18 2 af_returnp ptr, /* Pointer to return string if "io_call_af" order */ 7 19 2 af_returnl fixed bin, /* Length of string */ 7 20 2 fill (5) bit (36) aligned, 7 21 2 nargs fixed bin, /* Number of additional command arguments provided */ 7 22 2 max_arglen fixed bin, /* Length of longest argument (used to define array) */ 7 23 2 args (0 refer (io_call_info.nargs)) char (0 refer (io_call_info.max_arglen)) varying; 7 24 7 25 dcl io_call_af_ret char (io_call_info.af_returnl) based (io_call_info.af_returnp) varying; 7 26 /* Return string for active function */ 7 27 7 28 /* End include file ..... io_call_info.incl.pl1 */ 629 630 8 1 /* --------------- BEGIN include file rcp_volume_formats.incl.pl1 --------------- */ 8 2 8 3 8 4 8 5 /****^ HISTORY COMMENTS: 8 6* 1) change(86-12-08,GWMay), approve(86-12-08,PBF7552), 8 7* audit(86-12-08,Martinson), install(86-12-17,MR12.0-1250): 8 8* added array entry 0 to the volume format types to indicate that the tape 8 9* volume was not authenticated by rcp. 8 10* END HISTORY COMMENTS */ 8 11 8 12 8 13 /* General volume types */ 8 14 8 15 dcl (Volume_unauthenticated initial (0), 8 16 Volume_blank initial (1), 8 17 Volume_unknown_format initial (6), 8 18 Volume_unreadable initial (7), 8 19 8 20 /* Tape volume types */ 8 21 8 22 Volume_multics_tape initial (2), 8 23 Volume_gcos_tape initial (3), 8 24 Volume_ibm_tape initial (4), 8 25 Volume_ansi_tape initial (5)) fixed bin static options (constant); 8 26 8 27 /* Printable descriptions of volume types */ 8 28 8 29 dcl Tape_volume_types (0:7) char (16) static options (constant) initial 8 30 ("unauthenticated", 8 31 "blank", 8 32 "Multics", 8 33 "GCOS", 8 34 "IBM", 8 35 "ANSI", 8 36 "unrecognizable", 8 37 "unreadable"); 8 38 8 39 /* ---------------- END include file rcp_volume_formats.incl.pl1 ---------------- */ 631 632 9 1 /* BEGIN INCLUDE FILE mtape_saved_pfm_info.incl.pl1. Created by J. A. Bush 07/28/83 */ 9 2 /* format: style4 */ 9 3 /* This include file references information in the mtape_dta.incl.pl1 include file */ 9 4 9 5 dcl mspfmip ptr; 9 6 9 7 dcl mtape_saved_pfm_info_version_1 char (8) int static options (constant) init ("mspiv001"); 9 8 9 9 dcl 1 mtape_saved_pfm_info aligned based (mspfmip), /* Saved info for "change_module" control OP */ 9 10 2 version char (8), /* Current structure version */ 9 11 2 pfm_name char (32), /* PFM name of previous PFM */ 9 12 2 open_mode fixed bin, /* Opening mode of PFM we changed to */ 9 13 2 old_pfm_entries like pfm_entries; /* old PFM entry variables */ 9 14 9 15 /* END INCLUDE FILE mtape_saved_pfm_info.incl.pl1 */ 633 634 10 1 /* BEGIN INCLUDE FILE mtape_file_status.incl.pl1. Created 02/02/83 by J. A. Bush */ 10 2 /* format: style4 */ 10 3 /* This include file defines the structures returned by the "file_status" ("fst"), 10 4* and the "file_set_status" ("fsst") control operations */ 10 5 10 6 dcl fst_ptr ptr; /* Pointer to the file_status info structure */ 10 7 dcl fsst_ptr ptr; /* Pointer to the file_set_status info structure */ 10 8 dcl f_statp ptr; /* Pointer to file_status structure */ 10 9 10 10 dcl fst_version_1 char (8) int static options (constant) init ("fstv0001"); 10 11 dcl fsst_version_1 char (8) int static options (constant) init ("fsstv001"); 10 12 10 13 dcl mtape_fsst_nfiles fixed bin; /* Set this variable before allocating mtape_fsst structure */ 10 14 10 15 dcl 1 mtape_fst aligned based (fst_ptr), /* "file_status" info structure */ 10 16 2 version char (8), /* Current version */ 10 17 2 file_type fixed bin, /* Use rcp_volume_formats.incl.pl1 for decode */ 10 18 2 f_stat like file_status; /* See file_status structure below */ 10 19 10 20 dcl 1 mtape_fsst aligned based (fsst_ptr), /* "file_set_status" info structure */ 10 21 2 version char (8), /* Current version */ 10 22 2 file_set_id char (32), /* File set identifier */ 10 23 2 file_type fixed bin, /* Use rcp_volume_formats.incl.pl1 for decode */ 10 24 2 nfiles fixed bin, /* # of files in file set */ 10 25 2 fs_stat (mtape_fsst_nfiles refer (mtape_fsst.nfiles)) like file_status; /* See file_status structure below */ 10 26 10 27 dcl 1 file_status based (f_statp) aligned, /* file status info template */ 10 28 2 file_state fixed bin, /* 0 => Never opened; 1 => File not currently open; 10 29* 2 => File open; 3 => File open & locked for error */ 10 30 2 error_code fixed bin (35), /* Error code if file_state = 3 */ 10 31 2 file_id char (32), /* File name or identifier */ 10 32 2 file_seq fixed bin, /* File sequence number */ 10 33 2 begin_vol_index fixed bin, /* Index to volume file begins on */ 10 34 2 end_vol_index fixed bin, /* Index to volume file ends on */ 10 35 2 file_sections fixed bin, /* Number of file sections within file */ 10 36 2 generation fixed bin, /* File generation number */ 10 37 2 gen_version fixed bin, /* File generation version number */ 10 38 2 creation char (6), /* File creation date (" yyddd") */ 10 39 2 expiration char (6), /* File expiration date (" yyddd") */ 10 40 2 file_format char (3), /* File/block format, PFM dependent */ 10 41 2 block_len fixed bin, /* Maximum block length (in 9 bit bytes) */ 10 42 2 reclen fixed bin (21), /* Maximum record length (in 9 bit bytes) */ 10 43 2 recording_mode char (6), /* ASCII, EBCDIC, BCD, etc */ 10 44 2 block_count fixed bin (35), /* # of blocks in this file */ 10 45 2 read_errors fixed bin (35), /* # of read errors encountered reading this file */ 10 46 2 write_errors fixed bin (35); /* # of write errors encountered writing this file */ 10 47 10 48 /* END INCLUDE FILE mtape_file_status.incl.pl1 */ 635 636 11 1 /* BEGIN INCLUDE FILE mtape_volume_status.incl.pl1. Created by J. A. Bush 02/02/83 */ 11 2 /* The include file mtape_err_stats.incl.pl1 is referenced by this include file */ 11 3 /* format: style4 */ 11 4 /* This include file defines the structures returned by the "volume_status" ("vst"), 11 5* and the "volume_set_status" ("vsst") control operations */ 11 6 11 7 dcl vst_ptr ptr; /* Pointer to the volume_status info structure */ 11 8 dcl vsst_ptr ptr; /* Pointer to the volume_set_status info structure */ 11 9 dcl v_statp ptr; /* Pointer to the volume status structure */ 11 10 11 11 dcl vst_version_1 char (8) int static options (constant) init ("vstv0001"); 11 12 dcl vsst_version_1 char (8) int static options (constant) init ("vsstv001"); 11 13 11 14 dcl mtape_vsst_nvolumes fixed bin; /* set this variable before allocating mtape_vsst structure */ 11 15 11 16 dcl 1 mtape_vst aligned based (vst_ptr), /* "volume_status" info structure */ 11 17 2 version char (8), /* Current version */ 11 18 2 volume_type fixed bin, /* Use rcp_volume_formats.incl.pl1 for decode */ 11 19 2 v_stat like volume_status; /* See volume_status structure below */ 11 20 11 21 dcl 1 mtape_vsst aligned based (vsst_ptr), /* "volume_set_status" info structure */ 11 22 2 version char (8), /* Current version */ 11 23 2 volume_type fixed bin, /* Use rcp_volume_formats.incl.pl1 for decode */ 11 24 2 nvolumes fixed bin, /* # of volumes in volume set */ 11 25 2 vs_stat (mtape_vsst_nvolumes refer (mtape_vsst.nvolumes)) like volume_status; /* See volume_status below */ 11 26 11 27 dcl 1 volume_status based (v_statp) aligned, /* Volume status info template */ 11 28 2 volume_name char (32), /* As specified in attach description */ 11 29 2 volume_id char (32), /* Recorded volume name */ 11 30 2 mounted bit (1), /* "1"b => volume currently mounted */ 11 31 2 device_name char (8), /* Tape device on which mounted */ 11 32 2 volume_index fixed bin, /* Order of volume within volume set */ 11 33 2 mounts fixed bin, /* Number of times volume mounted during attachment */ 11 34 2 tot_error_stats like mtape_err_stats, /* Summation of error statistics for all mounts */ 11 35 2 rel_error_stats like mtape_err_stats; /* Summation of error statistics, this mount */ 11 36 11 37 /* END INCLUDE FILE mtape_volume_status.incl.pl1 */ 637 638 12 1 /* BEGIN INCLUDE FILE mtape_err_stats.incl.pl1. Created by J. A. Bush 07/22/83. */ 12 2 /* format: style4 */ 12 3 12 4 dcl es_ptr ptr; 12 5 12 6 dcl 1 mtape_err_stats aligned based (es_ptr), /* Error statistics block */ 12 7 2 read like err_entry, /* For read operations */ 12 8 2 write like err_entry, /* For write operations */ 12 9 2 orders like err_entry, /* For non-data xfer operations */ 12 10 2 successful_retry (7) fixed bin (35); /* retrys that succeeded after 1-7 trys */ 12 11 12 12 dcl 1 err_entry aligned based, 12 13 2 errors fixed bin (35), 12 14 2 operations fixed bin (35); 12 15 12 16 /* END INCLUDE FILE mtape_err_stats.incl.pl1 */ 639 640 13 1 /* BEGIN INCLUDE FILE mtape_hardware_status.incl.pl1. Created 07/11/83 by J. A. Bush */ 13 2 /* format: style4 */ 13 3 /* This include file defines the structure returned by the "hardware_status" ("hwst") control operation */ 13 4 13 5 dcl hwst_ptr ptr; /* Pointer to the hardware_status structure */ 13 6 dcl hwst_version_1 char (8) int static options (constant) init ("hwstv001"); 13 7 13 8 dcl 1 mtape_hardware_status aligned based (hwst_ptr), /* "hardware_status" info structure */ 13 9 2 version char (8), /* Current version */ 13 10 2 description char (256) varying, /* English descrition of the last status */ 13 11 2 pad bit (36), /* to make next word even */ 13 12 2 iom_status bit (72), /* Entire contents of IOM status words */ 13 13 2 iom_lpw bit (72); /* List Pointer Word contents */ 13 14 13 15 13 16 /* END INCLUDE FILE mtape_hardware_status.incl.pl1 */ 641 642 14 1 /* Begin include file ..... iox_modes.incl.pl1 */ 14 2 14 3 /* Written by C. D. Tavares, 03/17/75 */ 14 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 14 5 14 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 14 7 ("stream_input", "stream_output", "stream_input_output", 14 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 14 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 14 10 "direct_input", "direct_output", "direct_update"); 14 11 14 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 14 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 14 14 14 15 dcl (Stream_input initial (1), 14 16 Stream_output initial (2), 14 17 Stream_input_output initial (3), 14 18 Sequential_input initial (4), 14 19 Sequential_output initial (5), 14 20 Sequential_input_output initial (6), 14 21 Sequential_update initial (7), 14 22 Keyed_sequential_input initial (8), 14 23 Keyed_sequential_output initial (9), 14 24 Keyed_sequential_update initial (10), 14 25 Direct_input initial (11), 14 26 Direct_output initial (12), 14 27 Direct_update initial (13)) fixed bin int static options (constant); 14 28 14 29 /* End include file ..... iox_modes.incl.pl1 */ 643 644 15 1 /* BEGIN INCLUDE FILE mtape_label_record.incl.pl1. Created by J. A. Bush 10/13/82 */ 15 2 /* format: style4 */ 15 3 15 4 dcl lr_ptr ptr; 15 5 15 6 dcl mtape_lr_version_1 char (8) int static options (constant) init ("mtlrv001"); 15 7 15 8 dcl 1 mtape_label_record aligned based (lr_ptr), 15 9 2 version char (8), /* Current version */ 15 10 2 prev_lab_ptr ptr, /* Pointer to previous label record structure */ 15 11 2 next_lab_ptr ptr, /* Pointer to next label record structure */ 15 12 2 lab_ptr ptr, /* Pointer to the actual format specific label record */ 15 13 2 lab_length fixed bin, /* Length in 9 bit bytes of the label record */ 15 14 2 mode fixed bin, /* Hardware recording mode: 15 15* 1 = binary 15 16* 2 = nine 15 17* 3 = bcd */ 15 18 2 conversion fixed bin; /* Character set conversion required: 15 19* 1 = no conversion 15 20* 2 = ASCII <==> EBCDIC (any case) 15 21* 3 = ASCII <==> BCD 15 22* 4 = ASCII ==> Upper case ASCII 15 23* 5 = ASCII ==> Upper case EBCDIC */ 15 24 15 25 /* END INCLUDE FILE mtape_label_record.incl.pl1 */ 645 646 16 1 /* BEGIN INCLUDE FILE mtape_constants.incl.pl1. Created by J. A. Bush 10/07/82 */ 16 2 /* format: style4 */ 16 3 16 4 /* This include file defines various named constants used throughout mtape_ 16 5* and its associated Per-Format modules */ 16 6 16 7 /* Storage allocation constants, used to denote what type of storage to allocate */ 16 8 16 9 dcl (MTAPE_ALLOC_VS init (1), /* to allocate a volume_set structure */ 16 10 MTAPE_ALLOC_LR init (2), /* to allocate a label record structure */ 16 11 MTAPE_ALLOC_FI init (3), /* to allocate a file_info structure */ 16 12 MTAPE_ALLOC_STR init (4) /* to allocate a character string, or undefined block */ 16 13 ) fixed bin int static options (constant); 16 14 16 15 /* Volume density constants */ 16 16 16 17 dcl MTAPE_VALID_DENSITIES (5) init (200, 556, 800, 1600, 6250) 16 18 fixed bin int static options (constant); 16 19 16 20 /* Device speed constants */ 16 21 16 22 dcl MTAPE_SPEED_VALUES (4) init (0, 75, 125, 200) /* 0 is any speed device */ 16 23 fixed bin int static options (constant); 16 24 16 25 /* Hardware Mode constants */ 16 26 16 27 dcl (MTAPE_HWM_BIN init (1), /* For binary hardware mode */ 16 28 MTAPE_HWM_NINE init (2), /* For nine hardware mode */ 16 29 MTAPE_HWM_BCD init (3) /* For BCD hardware mode */ 16 30 ) fixed bin int static options (constant); 16 31 16 32 /* Data conversion constants */ 16 33 16 34 dcl (MTAPE_UNSPECIFIED init (0), /* attribute not specified */ 16 35 MTAPE_NO_CONVERSION init (1), /* No conversion on input or output */ 16 36 MTAPE_CV_EBCDIC init (2), /* Convert to/from EBCDIC (from/to ASCII) */ 16 37 MTAPE_CV_BCD init (3), /* Convert to/from BCD (from/to ASCII) */ 16 38 MTAPE_CV_UC_ASCII init (4), /* Convert to Upper case ASCII (from any case ASCII) */ 16 39 MTAPE_CV_UC_EBCDIC init (5) /* Convert to Upper case EBCDIC (from any case ASCII) */ 16 40 ) fixed bin int static options (constant); 16 41 16 42 /* File positioning constants */ 16 43 16 44 dcl (NOT_POSITIONED_IN_FILE init (0), /* Not currently positioned within this file */ 16 45 AT_BOFH init (1), /* Positioned at beginning of file hdr */ 16 46 AT_EOFH init (2), /* Positioned at end of file hdr */ 16 47 AT_BOFD init (3), /* Positioned at beginning of file data */ 16 48 AT_IFD init (4), /* Positioned in file data, not beginning */ 16 49 AT_EOFD init (5), /* Positioned prior to end of data file */ 16 50 AT_BOFT init (6), /* Positioned at beginning of trailer label file */ 16 51 AT_EOFT init (7), /* Positioned at end of trailer label file */ 16 52 AT_EOF init (8), /* Positioned after trailer labels at EOF */ 16 53 FILES_PER_FILE_GRP init (3) /* # of physical files per file (section) group */ 16 54 ) fixed bin int static options (constant); 16 55 16 56 dcl (BOF_LABEL init (1), /* indicates beginning of file label */ 16 57 EOV_LABEL init (2), /* indicates end of volume label */ 16 58 EOF_LABEL init (3) /* indicates end of file label */ 16 59 ) fixed bin int static options (constant); 16 60 16 61 /* user query constant codes */ 16 62 16 63 dcl (Q_NO_NEXT_VOLUME init (1), 16 64 Q_LABELED_VOLUME init (2), 16 65 Q_UNEXPIRED_VOLUME init (3), 16 66 Q_INCORRECT_VOLUME init (4), 16 67 Q_UNEXPIRED_FILE init (5), 16 68 Q_ABORT_FILE init (6) 16 69 ) fixed bin int static options (constant); 16 70 16 71 /* END INCLUDE FILE mtape_constants.incl.pl1 */ 647 648 17 1 /* START OF: tape_ioi_dcls.incl.pl1 * * * * * * * * * * * * * * * * */ 17 2 17 3 /* Written 22 April 1982 by Chris Jones */ 17 4 /* Modified September 1983 by Chris Jones for reserve_buffer and release_buffer */ 17 5 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 17 6 17 7 /* call tape_ioi_$activate (rsc_ptr, tioi_info_ptr, tioi_id, code); */ 17 8 dcl tape_ioi_$activate entry (ptr, ptr, bit (36) aligned, fixed bin (35)); 17 9 17 10 /* call tape_ioi_$allocate_buffers (tioi_id, req_length, req_number, act_length, act_number, buffer_ptrs, code); */ 17 11 dcl tape_ioi_$allocate_buffers 17 12 entry (bit (36) aligned, fixed bin (21), fixed bin, fixed bin (21), fixed bin, 17 13 dim (*) ptr, fixed bin (35)); 17 14 17 15 /* call tape_ioi_$allocate_work_area (tioi_id, req_size, act_size, work_area_ptr, code); */ 17 16 dcl tape_ioi_$allocate_work_area 17 17 entry (bit (36) aligned, fixed bin (19), fixed bin (19), ptr, fixed bin (35)); 17 18 17 19 /* call tape_ioi_$buffer_status (tioi_id, buffer_ptr, tbs_ptr, code); */ 17 20 dcl tape_ioi_$buffer_status 17 21 entry (bit (36) aligned, ptr, ptr, fixed bin (35)); 17 22 17 23 /* call tape_ioi_$check_order (tioi_id, ocount, rx, code); */ 17 24 dcl tape_ioi_$check_order entry (bit (36) aligned, fixed bin, fixed bin, fixed bin (35)); 17 25 17 26 /* call tape_ioi_$check_read (tioi_id, buffer_ptr, data_len, rx, code); */ 17 27 dcl tape_ioi_$check_read entry (bit (36) aligned, ptr, fixed bin (21), fixed bin, fixed bin (35)); 17 28 17 29 /* call tape_ioi_$check_write (tioi_id, buffer_ptr, rx, code); */ 17 30 dcl tape_ioi_$check_write entry (bit (36) aligned, ptr, fixed bin, fixed bin (35)); 17 31 17 32 /* call tape_ioi_$deactivate (tioi_id, error_ptr, code); */ 17 33 dcl tape_ioi_$deactivate entry (bit (36) aligned, ptr, fixed bin (35)); 17 34 17 35 /* call tape_ioi_$deallocate (tioi_id, code); */ 17 36 dcl tape_ioi_$deallocate entry (bit (36) aligned, fixed bin (35)); 17 37 17 38 /* call tape_ioi_$deallocate_buffers (tioi_id, code); */ 17 39 dcl tape_ioi_$deallocate_buffers 17 40 entry (bit (36) aligned, fixed bin (35)); 17 41 17 42 /* call tape_ioi_$get_mode (tioi_id, mode, data_ptr, code); */ 17 43 dcl tape_ioi_$get_mode entry (bit (36) aligned, char (*), ptr, fixed bin (35)); 17 44 17 45 /* call tape_ioi_$get_statistics (tioi_id, tec_ptr, code); */ 17 46 dcl tape_ioi_$get_statistics 17 47 entry (bit (36) aligned, ptr, fixed bin (35)); 17 48 17 49 /* call tape_ioi_$hardware_status (tioi_id, ths_ptr, code); */ 17 50 dcl tape_ioi_$hardware_status 17 51 entry (bit (36) aligned, ptr, fixed bin (35)); 17 52 17 53 /* call tape_ioi_$list_buffers (tioi_id, state, buffer_ptrs, num_buffers, code); */ 17 54 dcl tape_ioi_$list_buffers entry (bit (36) aligned, fixed bin, dim (*) ptr, fixed bin, fixed bin (35)); 17 55 17 56 /* call tape_ioi_$order (tioi_id, order, count, data_ptr, ocount, rx, code); */ 17 57 dcl tape_ioi_$order entry (bit (36) aligned, char (4), fixed bin, ptr, fixed bin, fixed bin, fixed bin (35)); 17 58 17 59 /* call tape_ioi_$queue_order (tioi_id, order, count, data_ptr, code); */ 17 60 dcl tape_ioi_$queue_order entry (bit (36) aligned, char (4), fixed bin, ptr, fixed bin (35)); 17 61 17 62 /* call tape_ioi_$queue_read (tioi_id, buffer_ptr, code); */ 17 63 dcl tape_ioi_$queue_read entry (bit (36) aligned, ptr, fixed bin (35)); 17 64 17 65 /* call tape_ioi_$queue_write (tioi_id, buffer_ptr, data_len, code); */ 17 66 dcl tape_ioi_$queue_write entry (bit (36) aligned, ptr, fixed bin (21), fixed bin (35)); 17 67 17 68 /* call tape_ioi_$read (tioi_id, buffer_ptr, data_len, rx, code); */ 17 69 dcl tape_ioi_$read entry (bit (36) aligned, ptr, fixed bin (21), fixed bin, fixed bin (35)); 17 70 17 71 /* call tape_ioi_$release_buffer (tioi_id, buffer_ptr, code); */ 17 72 dcl tape_ioi_$release_buffer 17 73 entry (bit (36) aligned, ptr, fixed bin (35)); 17 74 17 75 /* call tape_ioi_$reserve_buffer (tioi_id, buffer_ptr, code); */ 17 76 dcl tape_ioi_$reserve_buffer 17 77 entry (bit (36) aligned, ptr, fixed bin (35)); 17 78 17 79 /* call tape_ioi_$reset_statistics (tioi_id, code); */ 17 80 dcl tape_ioi_$reset_statistics 17 81 entry (bit (36) aligned, fixed bin (35)); 17 82 17 83 /* call tape_ioi_$set_buffer_ready (tioi_id, buffer_ptr, code); */ 17 84 dcl tape_ioi_$set_buffer_ready 17 85 entry (bit (36) aligned, ptr, fixed bin (35)); 17 86 17 87 /* call tape_ioi_$set_mode (tioi_id, mode, data_ptr, code); */ 17 88 dcl tape_ioi_$set_mode entry (bit (36) aligned, char (*), ptr, fixed bin (35)); 17 89 17 90 /* call tape_ioi_$stop_tape (tioi_id, count, rx, code); */ 17 91 dcl tape_ioi_$stop_tape entry (bit (36) aligned, fixed bin, fixed bin, fixed bin (35)); 17 92 17 93 /* call tape_ioi_$write (tioi_id, write_buffer_ptrs, data_len, buffer_ptr, rx, code); */ 17 94 dcl tape_ioi_$write entry (bit (36) aligned, (*) ptr, fixed bin (21), ptr, fixed bin, fixed bin (35)); 17 95 17 96 /* END OF: tape_ioi_dcls.incl.pl1 * * * * * * * * * * * * * * * * */ 649 650 18 1 /* Begin include file ..... tape_ioi_hw_status.incl.pl1 */ 18 2 18 3 /* This structure defines the data returned by tape_ioi_$hardware_status */ 18 4 18 5 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 18 6 /* Written May 1982 by Chris Jones */ 18 7 /* Modified 15 June 1982 by Chris Jones to add reformatted status constants */ 18 8 18 9 dcl ths_ptr ptr; 18 10 18 11 dcl 1 ths aligned based (ths_ptr), 18 12 2 version fixed bin, 18 13 2 description char (256) varying, 18 14 2 major fixed bin, 18 15 2 minor bit (36), 18 16 2 iom bit (72), 18 17 2 lpw bit (72); 18 18 18 19 dcl THS_VERSION_1 fixed bin static options (constant) init (1); 18 20 dcl THS_VERSION fixed bin static options (constant) init (1); 18 21 18 22 /* The following are used to describe the status in a non-hardware specific way. */ 18 23 18 24 /* Major Status */ 18 25 18 26 dcl SUBSYSTEM_READY fixed bin static options (constant) init (0); 18 27 dcl DEVICE_BUSY fixed bin static options (constant) init (1); 18 28 dcl DEVICE_ATTENTION fixed bin static options (constant) init (2); 18 29 dcl DEVICE_DATA_ALERT fixed bin static options (constant) init (3); 18 30 dcl END_OF_FILE fixed bin static options (constant) init (4); 18 31 dcl COMMAND_REJECT fixed bin static options (constant) init (5); 18 32 dcl MPC_DEVICE_ATTENTION fixed bin static options (constant) init (10); 18 33 dcl MPC_DEVICE_DATA_ALERT fixed bin static options (constant) init (11); 18 34 dcl MPC_COMMAND_REJECT fixed bin static options (constant) init (13); 18 35 dcl POWER_OFF fixed bin static options (constant) init (16); 18 36 dcl SYSTEM_FAULT fixed bin static options (constant) init (17); 18 37 dcl IOM_CENTRAL fixed bin static options (constant) init (18); 18 38 dcl IOM_CHANNEL fixed bin static options (constant) init (19); 18 39 dcl TIME_OUT fixed bin static options (constant) init (20); 18 40 18 41 /* Minor Status */ 18 42 18 43 /* Minor status for SUBSYSTEM_READY */ 18 44 18 45 dcl WRITE_PROTECTED bit (36) aligned static options (constant) 18 46 init ("100000000000000000000000000000000000"b); 18 47 dcl AT_BOT bit (36) aligned static options (constant) 18 48 init ("010000000000000000000000000000000000"b); 18 49 dcl TWO_BIT_FILL bit (36) aligned static options (constant) 18 50 init ("001000000000000000000000000000000000"b); 18 51 dcl FOUR_BIT_FILL bit (36) aligned static options (constant) 18 52 init ("000100000000000000000000000000000000"b); 18 53 dcl SIX_BIT_FILL bit (36) aligned static options (constant) 18 54 init ("000010000000000000000000000000000000"b); 18 55 dcl ASCII_ALERT bit (36) aligned static options (constant) 18 56 init ("000001000000000000000000000000000000"b); 18 57 18 58 /* Minor status for DEVICE_BUSY */ 18 59 18 60 dcl REWINDING bit (36) aligned static options (constant) 18 61 init ("100000000000000000000000000000000000"b); 18 62 dcl RESERVED bit (36) aligned static options (constant) 18 63 init ("010000000000000000000000000000000000"b); 18 64 dcl ALTERNATE_CHANNEL bit (36) aligned static options (constant) 18 65 init ("001000000000000000000000000000000000"b); 18 66 dcl LOADING bit (36) aligned static options (constant) 18 67 init ("000100000000000000000000000000000000"b); 18 68 18 69 /* Minor status for DEVICE_ATTENTION */ 18 70 18 71 /* WRITE_PROTECTED declared above with SUBSYSTEM_READY status */ 18 72 18 73 dcl NO_SUCH_HANDLER bit (36) aligned static options (constant) 18 74 init ("010000000000000000000000000000000000"b); 18 75 dcl HANDLER_IN_STANDBY bit (36) aligned static options (constant) 18 76 init ("001000000000000000000000000000000000"b); 18 77 dcl HANDLER_CHECK bit (36) aligned static options (constant) 18 78 init ("000100000000000000000000000000000000"b); 18 79 dcl BLANK_TAPE_ON_WRITE bit (36) aligned static options (constant) 18 80 init ("000010000000000000000000000000000000"b); 18 81 18 82 /* Minor status for DEVICE_DATA_ALERT */ 18 83 18 84 dcl TRANSFER_TIMING_ALERT bit (36) aligned static options (constant) 18 85 init ("100000000000000000000000000000000000"b); 18 86 dcl BLANK_TAPE_ON_READ bit (36) aligned static options (constant) 18 87 init ("010000000000000000000000000000000000"b); 18 88 dcl BIT_DURING_ERASE bit (36) aligned static options (constant) 18 89 init ("001000000000000000000000000000000000"b); 18 90 dcl TRANSMISSION_PARITY_ALERT 18 91 bit (36) aligned static options (constant) 18 92 init ("000100000000000000000000000000000000"b); 18 93 dcl LATERAL_PARITY_ALERT bit (36) aligned static options (constant) 18 94 init ("000010000000000000000000000000000000"b); 18 95 dcl LONGITUDINAL_PARITY_ALERT 18 96 bit (36) aligned static options (constant) 18 97 init ("000001000000000000000000000000000000"b); 18 98 dcl END_OF_TAPE bit (36) aligned static options (constant) 18 99 init ("000000100000000000000000000000000000"b); 18 100 18 101 /* Minor status for END_OF_FILE */ 18 102 18 103 dcl DATA_ALERT_CONDITION bit (36) aligned static options (constant) 18 104 init ("100000000000000000000000000000000000"b); 18 105 18 106 /* Minor status for COMMAND_REJECT */ 18 107 18 108 dcl READ_AFTER_WRITE bit (36) aligned static options (constant) 18 109 init ("100000000000000000000000000000000000"b); 18 110 /**** AT_BOT declared above with SUBSYSTEM_READY status */ 18 111 dcl BAD_IDCW_PARITY bit (36) aligned static options (constant) 18 112 init ("001000000000000000000000000000000000"b); 18 113 dcl BAD_DEVICE_CODE bit (36) aligned static options (constant) 18 114 init ("000100000000000000000000000000000000"b); 18 115 dcl BAD_OP_CODE bit (36) aligned static options (constant) 18 116 init ("000010000000000000000000000000000000"b); 18 117 dcl BAD_DENSITY bit (36) aligned static options (constant) 18 118 init ("000001000000000000000000000000000000"b); 18 119 dcl NINE_TRACK_ERROR bit (36) aligned static options (constant) 18 120 init ("000000100000000000000000000000000000"b); 18 121 18 122 /* Minor status for MPC_DEVICE_ATTENTION */ 18 123 18 124 dcl CONFIG_SWITCH_ERROR bit (36) aligned static options (constant) 18 125 init ("100000000000000000000000000000000000"b); 18 126 dcl MULTIPLE_DEVICES bit (36) aligned static options (constant) 18 127 init ("010000000000000000000000000000000000"b); 18 128 dcl ILLEGAL_DEVICE_ID bit (36) aligned static options (constant) 18 129 init ("001000000000000000000000000000000000"b); 18 130 dcl INCOMPATIBLE_MODE bit (36) aligned static options (constant) 18 131 init ("000100000000000000000000000000000000"b); 18 132 dcl TCA_MALFUNCTION bit (36) aligned static options (constant) 18 133 init ("000010000000000000000000000000000000"b); 18 134 dcl MTH_MALFUNCTION bit (36) aligned static options (constant) 18 135 init ("000001000000000000000000000000000000"b); 18 136 dcl MULTIPLE_BOT bit (36) aligned static options (constant) 18 137 init ("000000100000000000000000000000000000"b); 18 138 18 139 /* Minor status for MPC_DEVICE_DATA_ALERT */ 18 140 18 141 dcl BYTE_LOCKED_OUT bit (36) aligned static options (constant) 18 142 init ("100000000000000000000000000000000000"b); 18 143 dcl INCONSISTENT_COMMAND bit (36) aligned static options (constant) 18 144 init ("010000000000000000000000000000000000"b); 18 145 dcl SUM_CHECK_ERROR bit (36) aligned static options (constant) 18 146 init ("001000000000000000000000000000000000"b); 18 147 /**** TRANSMISSION_PARITY_ALERT declared above with DEVICE_DATA_ALERT */ 18 148 dcl ID_BURST_WRITE_ERROR bit (36) aligned static options (constant) 18 149 init ("000010000000000000000000000000000000"b); 18 150 dcl PREAMBLE_ERROR bit (36) aligned static options (constant) 18 151 init ("000001000000000000000000000000000000"b); 18 152 dcl MARGINAL_CONDITION bit (36) aligned static options (constant) 18 153 init ("000000100000000000000000000000000000"b); 18 154 dcl MULTI_TRACK_ERROR bit (36) aligned static options (constant) 18 155 init ("000000010000000000000000000000000000"b); 18 156 dcl SKEW_ERROR bit (36) aligned static options (constant) 18 157 init ("000000001000000000000000000000000000"b); 18 158 dcl POSTAMBLE_ERROR bit (36) aligned static options (constant) 18 159 init ("000000000100000000000000000000000000"b); 18 160 dcl NRZI_CCC_ERROR bit (36) aligned static options (constant) 18 161 init ("000000000010000000000000000000000000"b); 18 162 dcl CODE_ALERT bit (36) aligned static options (constant) 18 163 init ("000000000001000000000000000000000000"b); 18 164 18 165 /* Minor status for MPC_COMMAND_REJECT */ 18 166 18 167 dcl ILLEGAL_PROCEDURE bit (36) aligned static options (constant) 18 168 init ("100000000000000000000000000000000000"b); 18 169 dcl ILLEGAL_LC_NUMBER bit (36) aligned static options (constant) 18 170 init ("010000000000000000000000000000000000"b); 18 171 dcl ILLEGAL_SUSPENDED_LC_NUMBER 18 172 bit (36) aligned static options (constant) 18 173 init ("001000000000000000000000000000000000"b); 18 174 dcl CONTINUE_BIT_NOT_SET bit (36) aligned static options (constant) 18 175 init ("000100000000000000000000000000000000"b); 18 176 18 177 /* Minor status for POWER_OFF */ 18 178 18 179 /* There are no minor statuses defined for POWER_OFF. */ 18 180 18 181 /* Minor status for SYSTEM_FAULT */ 18 182 18 183 /* Minor status for IOM_CENTRAL */ 18 184 18 185 dcl LPW_TRO bit (36) aligned static options (constant) 18 186 init ("100000000000000000000000000000000000"b); 18 187 dcl CONSECUTIVE_TDCWS bit (36) aligned static options (constant) 18 188 init ("010000000000000000000000000000000000"b); 18 189 dcl BOUNDARY_ERROR bit (36) aligned static options (constant) 18 190 init ("001000000000000000000000000000000000"b); 18 191 dcl EXT_CHANGE_WHILE_RESTRICTED 18 192 bit (36) aligned static options (constant) 18 193 init ("000100000000000000000000000000000000"b); 18 194 dcl IDCW_WHILE_RESTRICTED bit (36) aligned static options (constant) 18 195 init ("000010000000000000000000000000000000"b); 18 196 dcl CP_SIZE_DISCREPANCY bit (36) aligned static options (constant) 18 197 init ("000001000000000000000000000000000000"b); 18 198 dcl BUS_PARITY_FROM_CHANNEL 18 199 bit (36) aligned static options (constant) 18 200 init ("000000100000000000000000000000000000"b); 18 201 18 202 /* Minor status for IOM_CHANNEL */ 18 203 18 204 dcl CONNECT_WHILE_BUSY bit (36) aligned static options (constant) 18 205 init ("100000000000000000000000000000000000"b); 18 206 dcl BAD_PCW_CHANNEL_INST bit (36) aligned static options (constant) 18 207 init ("010000000000000000000000000000000000"b); 18 208 dcl INCORRECT_DCW bit (36) aligned static options (constant) 18 209 init ("001000000000000000000000000000000000"b); 18 210 dcl INCOMPLETE_COMMAND_SEQUENCE 18 211 bit (36) aligned static options (constant) 18 212 init ("000100000000000000000000000000000000"b); 18 213 dcl PARITY_ERROR_AT_PRPH_INTERFACE 18 214 bit (36) aligned static options (constant) 18 215 init ("000010000000000000000000000000000000"b); 18 216 dcl BUS_PARITY_TO_CHANNEL bit (36) aligned static options (constant) 18 217 init ("000001000000000000000000000000000000"b); 18 218 18 219 /* Minor status for TIME_OUT */ 18 220 18 221 /* There are no minor statuses defined for TIME_OUT. */ 18 222 18 223 /* End include file ..... tape_ioi_hw_status.incl.pl1 */ 651 652 653 end mtape_control_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/17/86 0830.0 mtape_control_.pl1 >special_ldd>install>MR12.0-1250>mtape_control_.pl1 617 1 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 619 2 02/16/84 1452.3 mtape_data.incl.pl1 >ldd>include>mtape_data.incl.pl1 621 3 02/16/84 1452.3 mtape_attach_info.incl.pl1 >ldd>include>mtape_attach_info.incl.pl1 623 4 06/11/85 1429.6 mtape_open_close_info.incl.pl1 >ldd>include>mtape_open_close_info.incl.pl1 625 5 02/16/84 1452.3 mtape_file_info.incl.pl1 >ldd>include>mtape_file_info.incl.pl1 627 6 02/16/84 1452.4 mtape_vol_set.incl.pl1 >ldd>include>mtape_vol_set.incl.pl1 629 7 07/19/79 1547.1 io_call_info.incl.pl1 >ldd>include>io_call_info.incl.pl1 631 8 12/17/86 0758.3 rcp_volume_formats.incl.pl1 >special_ldd>install>MR12.0-1250>rcp_volume_formats.incl.pl1 633 9 02/16/84 1452.4 mtape_saved_pfm_info.incl.pl1 >ldd>include>mtape_saved_pfm_info.incl.pl1 635 10 02/16/84 1452.3 mtape_file_status.incl.pl1 >ldd>include>mtape_file_status.incl.pl1 637 11 02/16/84 1452.4 mtape_volume_status.incl.pl1 >ldd>include>mtape_volume_status.incl.pl1 639 12 02/16/84 1452.3 mtape_err_stats.incl.pl1 >ldd>include>mtape_err_stats.incl.pl1 641 13 02/16/84 1452.3 mtape_hardware_status.incl.pl1 >ldd>include>mtape_hardware_status.incl.pl1 643 14 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 645 15 02/16/84 1452.3 mtape_label_record.incl.pl1 >ldd>include>mtape_label_record.incl.pl1 647 16 02/16/84 1452.3 mtape_constants.incl.pl1 >ldd>include>mtape_constants.incl.pl1 649 17 09/16/83 1110.4 tape_ioi_dcls.incl.pl1 >ldd>include>tape_ioi_dcls.incl.pl1 651 18 12/01/82 1039.8 tape_ioi_hw_status.incl.pl1 >ldd>include>tape_ioi_hw_status.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. Cday 000376 automatic picture(2) unaligned dcl 592 set ref 610* 612 Cmonth 000375 automatic picture(2) unaligned dcl 592 set ref 609* 612 Cyear 000377 automatic picture(2) unaligned dcl 592 set ref 611* 612 MTAPE_ALLOC_STR 000264 constant fixed bin(17,0) initial dcl 16-9 set ref 271* MTAPE_CV_BCD constant fixed bin(17,0) initial dcl 16-34 ref 462 MTAPE_CV_EBCDIC constant fixed bin(17,0) initial dcl 16-34 ref 460 MTAPE_HWM_BIN constant fixed bin(17,0) initial dcl 16-27 ref 466 MTAPE_HWM_NINE constant fixed bin(17,0) initial dcl 16-27 ref 464 MTAPE_NO_CONVERSION constant fixed bin(17,0) initial dcl 16-34 ref 464 NOT_POSITIONED_IN_FILE constant fixed bin(17,0) initial dcl 16-44 ref 479 ORDER_NAMES 000076 constant char(19) initial array unaligned dcl 43 ref 116 116 116 Sequential_output constant fixed bin(17,0) initial dcl 14-15 ref 232 525 Stream_output constant fixed bin(17,0) initial dcl 14-15 ref 232 525 THS_VERSION_1 constant fixed bin(17,0) initial dcl 18-19 ref 573 Tape_volume_types 000036 constant char(16) initial array unaligned dcl 8-29 set ref 192* 223* 317* 342* actual_iocb_ptr 12 based pointer level 2 dcl 1-6 ref 85 addr builtin function dcl 63 ref 94 186 195 220 312 320 339 504 504 508 508 areap 2 based pointer level 2 dcl 2-8 set ref 130 147 176 198 214 226 254 261 304 323 333 345 572 582 arg_buf_len 50 based fixed bin(21,0) level 3 dcl 2-8 set ref 245* 528* arg_buf_ptr 46 based pointer level 3 dcl 2-8 set ref 244* 527* arg_code parameter fixed bin(35,0) dcl 25 set ref 83 90* 350* arg_info_ptr parameter pointer dcl 24 set ref 83 92 101 200* 228* 263* 325* 347* arg_iocbp parameter pointer dcl 22 ref 83 85 arg_order_name parameter char unaligned dcl 23 ref 83 91 100 args 44 based varying char array level 2 dcl 7-10 set ref 94 attach_data_ptr 16 based pointer level 2 dcl 1-6 set ref 86 273* attach_info_ptr 274 based pointer level 2 dcl 2-8 set ref 88 based_area based area(1024) dcl 78 ref 130 147 176 198 214 226 254 261 304 323 333 345 572 582 begin_vol_index 13 based fixed bin(17,0) level 2 dcl 10-27 set ref 414 472* 474 begin_vs_ptr 20 based pointer level 2 dcl 5-8 ref 472 block_count 31 based fixed bin(35,0) level 2 in structure "file_status" dcl 10-27 in procedure "mtape_control_" set ref 434 434* 457* block_count 156 based fixed bin(35,0) level 3 in structure "mtape_file_info" dcl 5-8 in procedure "mtape_control_" ref 457 block_len 25 based fixed bin(17,0) level 2 dcl 10-27 set ref 431* 455* block_size 63 based fixed bin(21,0) level 3 dcl 5-8 ref 455 clock 000370 automatic fixed bin(71,0) dcl 592 set ref 605* 607* cmtdp 16 based pointer level 2 dcl 2-8 set ref 271* 272 273 code 000403 automatic fixed bin(35,0) dcl 592 in procedure "CV_DATE" set ref 605* 606 607* 608 code 000114 automatic fixed bin(35,0) dcl 32 in procedure "mtape_control_" set ref 90* 106* 107 109* 121* 122* 142* 143 149* 150 161* 162* 173* 208* 209* 237* 238* 246* 280* 281* 284* 301* 350 364* 375* 376* 529* 531* 574* 575 576* conversion 60 based fixed bin(17,0) level 3 dcl 5-8 ref 460 462 464 convert builtin function dcl 63 ref 603 604 convert_status_code_ 000022 constant entry external dcl 67 ref 407 cox 000115 automatic fixed bin(17,0) dcl 33 set ref 116* 116* 119 creation 20 based char(6) level 2 dcl 10-27 set ref 426 426* 426* 452* creation_date 45 based char(6) level 3 dcl 5-8 ref 452 current_file 160 based structure level 2 dcl 2-8 data_xfer_args 46 based structure level 2 dcl 2-8 date_time 000400 automatic char(10) dcl 592 set ref 612* 613 day 000373 automatic fixed bin(17,0) dcl 592 set ref 604* 604 605 607* 610 decode_clock_value_$date_time 000044 constant entry external dcl 598 ref 607 description 1 based varying char(256) level 2 in structure "ths" dcl 18-11 in procedure "mtape_control_" ref 579 description 2 based varying char(256) level 2 in structure "mtape_hardware_status" dcl 13-8 in procedure "mtape_control_" set ref 387* 579* device_name 76 based char(8) level 2 in structure "mtape_vol_set" dcl 6-9 in procedure "mtape_control_" ref 522 device_name 21 based char(8) level 2 in structure "volume_status" dcl 11-27 in procedure "mtape_control_" set ref 497 497* 522* encode_clock_value_$offsets 000046 constant entry external dcl 598 ref 605 end_vol_index 14 based fixed bin(17,0) level 2 dcl 10-27 set ref 412 470 476* end_vs_ptr 22 based pointer level 2 dcl 5-8 ref 476 err_entry based structure level 1 dcl 12-12 error_code 1 based fixed bin(35,0) level 2 dcl 10-27 set ref 406 407* 408* 486* error_lock 52 based fixed bin(35,0) level 2 dcl 2-8 set ref 483 486 error_table_$no_file 000010 external static fixed bin(35,0) dcl 55 ref 161 173 208 error_table_$no_operation 000012 external static fixed bin(35,0) dcl 56 ref 107 121 122 301 error_table_$not_closed 000016 external static fixed bin(35,0) dcl 58 ref 375 error_table_$not_open 000020 external static fixed bin(35,0) dcl 59 ref 237 error_table_$unimplemented_version 000014 external static fixed bin(35,0) dcl 57 ref 364 errors 2 based fixed bin(35,0) level 3 in structure "mtape_err_stats" dcl 12-6 in procedure "mtape_control_" set ref 550* errors 4 based fixed bin(35,0) level 3 in structure "mtape_err_stats" dcl 12-6 in procedure "mtape_control_" set ref 553* errors based fixed bin(35,0) level 3 in structure "mtape_err_stats" dcl 12-6 in procedure "mtape_control_" set ref 547* es_ptr 000254 automatic pointer dcl 12-4 set ref 545* 547 547 547 550 550 550 553 553 553 556 559 560 560 esp parameter pointer dcl 542 ref 540 545 expiration 22 based char(6) level 2 dcl 10-27 set ref 428 428* 428* 453* expiration_date 47 based char(6) level 3 dcl 5-8 ref 453 f_stat 3 based structure level 2 dcl 10-15 set ref 220 f_statp 000240 automatic pointer dcl 10-8 set ref 186* 195* 220* 402 403 404 406 407 408 412 414 421 422 423 423 423 423 426 426 426 428 428 428 430 431 432 433 434 434 436 437 447 448 449 450 451 452 453 454 455 456 457 458 459 460 462 464 466 468 470 472 474 474 474 476 479 481 483 485 486 fi_current 34 based pointer level 2 dcl 2-8 set ref 207 219 fi_head 30 based pointer level 2 dcl 2-8 set ref 160 168 180 183 fi_ptr 000224 automatic pointer dcl 5-4 set ref 168* 168* 169* 171 183* 183* 184* 189 219* 448 449 450 451 452 453 454 455 456 457 458 459 460 462 464 464 466 472 476 479 file_code 51 based char(3) level 3 dcl 5-8 ref 454 file_format 24 based char(3) level 2 dcl 10-27 set ref 430* 454* file_id 2 based char(32) level 2 in structure "file_status" dcl 10-27 in procedure "mtape_control_" set ref 403* 448* file_id 25 based char(32) level 3 in structure "mtape_file_info" dcl 5-8 in procedure "mtape_control_" ref 448 file_sections 15 based fixed bin(17,0) level 2 dcl 10-27 set ref 421* 422 474* 474 file_seq 12 based fixed bin(17,0) level 2 dcl 10-27 set ref 402* 449* file_set_id 2 based char(32) level 2 in structure "mtape_fsst" dcl 10-20 in procedure "mtape_control_" set ref 180* 192* file_set_id 35 based char(32) level 3 in structure "mtape_file_info" dcl 5-8 in procedure "mtape_control_" ref 180 file_state based fixed bin(17,0) level 2 dcl 10-27 set ref 404 479* 481* 483* 485* file_status based structure level 1 dcl 10-27 set ref 447* file_type 2 based fixed bin(17,0) level 2 in structure "mtape_fst" dcl 10-15 in procedure "mtape_control_" set ref 218* 223 file_type 12 based fixed bin(17,0) level 2 in structure "mtape_fsst" dcl 10-20 in procedure "mtape_control_" set ref 181* 192 first_file 205 based bit(1) level 3 dcl 2-8 set ref 154* force_end_of_volume 56 based bit(1) level 2 dcl 2-8 set ref 243* fs_stat 14 based structure array level 2 dcl 10-20 set ref 186 195 fsst_ptr 000236 automatic pointer dcl 10-7 set ref 176* 177 179* 180 181 186 190 192 192 192 194 195 198 200 fsst_version_1 000030 constant char(8) initial unaligned dcl 10-11 set ref 157* 177 fst_ptr 000234 automatic pointer dcl 10-6 set ref 214* 215 217* 218 220 223 226 228 fst_version_1 000032 constant char(8) initial unaligned dcl 10-10 set ref 204* 215 gen_version 17 based fixed bin(17,0) level 2 in structure "file_status" dcl 10-27 in procedure "mtape_control_" set ref 423 423* 451* gen_version 55 based fixed bin(17,0) level 3 in structure "mtape_file_info" dcl 5-8 in procedure "mtape_control_" ref 451 generation 54 based fixed bin(17,0) level 3 in structure "mtape_file_info" dcl 5-8 in procedure "mtape_control_" ref 450 generation 16 based fixed bin(17,0) level 2 in structure "file_status" dcl 10-27 in procedure "mtape_control_" set ref 423 423* 450* hbound builtin function dcl 63 ref 116 559 hdw_mode 57 based fixed bin(17,0) level 3 dcl 5-8 ref 464 466 hwst_ptr 000256 automatic pointer dcl 13-5 set ref 254* 255 257* 261 263 387 389 389 389 389 391 391 391 391 579 580 581 hwst_version_1 000022 constant char(8) initial unaligned dcl 13-6 set ref 250* 255 i 000116 automatic fixed bin(17,0) dcl 33 in procedure "mtape_control_" set ref 194* 195* 319* 320* i 000314 automatic fixed bin(17,0) dcl 400 in procedure "DISPLAY_FILE_STATUS" set ref 411* 412 413* 413 414 i 000350 automatic fixed bin(17,0) dcl 543 in procedure "REPORT_ERR_STATS" set ref 559* 560 560* 560 i 000324 automatic fixed bin(17,0) dcl 445 in procedure "SET_FILE_STATUS" set ref 469* 471* 471 472 476 info_ptr 000112 automatic pointer dcl 31 set ref 94* 96* 101* 106* 128 136 166 179 200 213 217 228 253 257 263 295 307 325 332 336 347 362 362 io_call_info based structure level 1 dcl 7-10 io_call_infop 000230 automatic pointer dcl 7-8 set ref 92* 93 94 94 99* 106* 191 192 222 223 259 316 317 341 342 387 389 391 402 403 404 408 421 422 423 426 428 430 431 432 433 434 436 437 494 495 496 497 499 502 507 546 547 550 553 557 558 560 iocb based structure level 1 dcl 1-6 iocb_ptr 4 based pointer level 2 dcl 2-8 set ref 87* iocbp 000100 automatic pointer dcl 29 set ref 85* 86 87 113 273 274* iom 104 based bit(72) level 2 dcl 18-11 ref 580 iom_lpw 106 based bit(72) level 2 dcl 13-8 set ref 391 391 391 391 581* iom_status 104 based bit(72) level 2 dcl 13-8 set ref 389 389 389 389 580* iox_$propagate 000040 constant entry external dcl 74 ref 274 julian parameter char(6) dcl 590 ref 588 603 604 lab_bufp 150 based pointer level 3 dcl 2-8 set ref 285* label_buffer 150 based structure level 2 dcl 2-8 lbound builtin function dcl 63 ref 116 long_info 000164 automatic char(100) dcl 38 set ref 407* 408* lpw 106 based bit(72) level 2 dcl 18-11 ref 581 ltrim builtin function dcl 63 ref 420 maip 000220 automatic pointer dcl 3-4 set ref 88* 134 136 140 270 288 max_arglen 43 based fixed bin(17,0) level 2 dcl 7-10 ref 94 94 moip 000222 automatic pointer dcl 4-4 set ref 89* 232 232 525 525 month 000372 automatic fixed bin(17,0) dcl 592 set ref 607* 609 mounted 20 based bit(1) level 2 in structure "volume_status" dcl 11-27 in procedure "mtape_control_" set ref 496* 501 506 520* mounted 110 based bit(1) level 2 in structure "mtape_vol_set" dcl 6-9 in procedure "mtape_control_" ref 277 520 mounts 24 based fixed bin(17,0) level 2 in structure "volume_status" dcl 11-27 in procedure "mtape_control_" set ref 500 501 502 502* 523* mounts 116 based fixed bin(17,0) level 2 in structure "mtape_vol_set" dcl 6-9 in procedure "mtape_control_" ref 523 mspfmip 000232 automatic pointer dcl 9-5 set ref 130* 131 132 134 135 139* 140 144 151 mtape_attach_info based structure level 1 dcl 3-8 mtape_data based structure level 1 dcl 2-8 set ref 271 272* 272 mtape_err_stats based structure level 1 dcl 12-6 mtape_file_info based structure level 1 dcl 5-8 mtape_fsst based structure level 1 dcl 10-20 set ref 176 198 mtape_fsst_nfiles 000242 automatic fixed bin(17,0) dcl 10-13 set ref 167* 169* 169 172 176 176 182* 185* 185 186 190 mtape_fst based structure level 1 dcl 10-15 set ref 214 226 mtape_hardware_status based structure level 1 dcl 13-8 set ref 254 261 mtape_io_$order 000036 constant entry external dcl 73 ref 280 mtape_label_record based structure level 1 dcl 15-8 ref 147 mtape_mount_cntl_$demount 000034 constant entry external dcl 72 ref 281 mtape_open_info based structure level 1 dcl 4-10 mtape_saved_pfm_info based structure level 1 dcl 9-9 set ref 130 mtape_saved_pfm_info_version_1 000034 constant char(8) initial unaligned dcl 9-7 ref 132 mtape_util_$alloc 000024 constant entry external dcl 68 ref 271 mtape_util_$error 000026 constant entry external dcl 69 ref 162 209 238 376 576 mtape_util_$get_statistics 000030 constant entry external dcl 70 ref 531 mtape_util_$init_pfm 000032 constant entry external dcl 71 ref 142 mtape_vol_set based structure level 1 dcl 6-9 mtape_vsst based structure level 1 dcl 11-21 set ref 304 323 mtape_vsst_nvolumes 000252 automatic fixed bin(17,0) dcl 11-14 set ref 296* 298* 298 300 304 304 309* 311* 311 312 315 mtape_vst based structure level 1 dcl 11-16 set ref 333 345 mtdp 000216 automatic pointer dcl 2-4 set ref 86* 87 88 89 106 106* 129 130 131 135 139 142* 144 147 147 148 149 149* 151 154 160 162* 168 176 180 181 183 198 207 209* 214 218 219 226 238* 243 244 245 246 246* 254 261 271* 271 271 272 272 273 273* 275 276 278 279 280* 281* 285 286 287 297 304 308 310 323 333 337 338 345 376* 412 470 483 486 524 527 528 529 529* 531* 572 574 576* 582 nargs 42 based fixed bin(17,0) level 2 dcl 7-10 ref 94 next_fi_ptr 4 based pointer level 2 dcl 5-8 ref 171 189 next_vs_ptr 4 based pointer level 2 dcl 6-9 ref 283 299 314 419 478 nfiles 13 based fixed bin(17,0) level 2 dcl 10-20 set ref 176* 190* 192* 194 198 null builtin function dcl 63 ref 96 99 113 128 129 148 160 166 168 183 191 200 207 213 222 228 244 253 259 263 271 271 276 280 280 285 295 297 310 316 325 332 341 347 362 527 nvolumes 3 based fixed bin(17,0) level 2 dcl 11-21 set ref 304* 315* 317* 319 323 nvp 000120 automatic pointer dcl 35 set ref 275* 287 old_pfm_entries 14 based structure level 2 dcl 9-9 set ref 135* 144 151 open 000117 automatic bit(1) dcl 34 set ref 113* 115* 232 232 374 481 524 open_descrip_ptr 20 based pointer level 2 dcl 1-6 ref 113 open_info_ptr 276 based pointer level 2 dcl 2-8 set ref 89 open_mode 10 based fixed bin(17,0) level 2 dcl 4-10 ref 232 232 525 525 operations 5 based fixed bin(35,0) level 3 in structure "mtape_err_stats" dcl 12-6 in procedure "mtape_control_" set ref 553 553* operations 1 based fixed bin(35,0) level 3 in structure "mtape_err_stats" dcl 12-6 in procedure "mtape_control_" set ref 547 547* operations 3 based fixed bin(35,0) level 3 in structure "mtape_err_stats" dcl 12-6 in procedure "mtape_control_" set ref 550 550* order 344 based entry variable level 3 dcl 2-8 set ref 106 order_arg based varying char(32) dcl 79 ref 136 order_name 000102 automatic char(32) unaligned dcl 30 in procedure "mtape_control_" set ref 93* 100* 106* 116 238* 376* order_name 11 based char(32) level 2 in structure "io_call_info" dcl 7-10 in procedure "mtape_control_" ref 93 orders 4 based structure level 2 dcl 12-6 per_file_info 25 based structure level 2 dcl 5-8 per_section_info 152 based structure level 2 dcl 5-8 pfm_arg_values based structure level 1 dcl 4-57 pfm_entries based structure level 1 dcl 2-103 pfm_init 320 based entry variable level 3 dcl 2-8 set ref 149 pfm_name 2 based char(32) level 2 dcl 9-9 set ref 134* 140 pfm_prefix 7 based char(21) level 2 dcl 3-8 set ref 134 136* 140* pfm_required_entries 320 based structure level 2 dcl 2-8 set ref 135 144* 151* position_within_file 24 based fixed bin(17,0) level 2 dcl 5-8 ref 479 read based structure level 2 dcl 12-6 read_errors 32 based fixed bin(35,0) level 2 in structure "file_status" dcl 10-27 in procedure "mtape_control_" set ref 436* 458* read_errors 157 based fixed bin(35,0) level 3 in structure "mtape_file_info" dcl 5-8 in procedure "mtape_control_" ref 458 reclen 26 based fixed bin(21,0) level 2 dcl 10-27 set ref 432* 456* record_size 64 based fixed bin(21,0) level 3 dcl 5-8 ref 456 recording_mode 27 based char(6) level 2 dcl 10-27 set ref 433* 460* 462* 464* 466* 468* rel_error_stats 134 based structure level 2 in structure "mtape_vol_set" dcl 6-9 in procedure "mtape_control_" ref 534 rel_error_stats 42 based structure level 2 in structure "volume_status" dcl 11-27 in procedure "mtape_control_" set ref 508 508 534* report 22 based entry variable level 2 dcl 7-10 ref 192 223 317 342 387 389 391 402 403 404 408 421 422 423 426 428 430 431 432 433 434 436 437 494 495 496 497 499 502 507 546 547 550 553 557 558 560 req_version parameter char(8) unaligned dcl 358 ref 356 362 ring 27 based bit(1) level 2 dcl 3-8 set ref 270 288* rtrim builtin function dcl 63 ref 415 417 saved_pfm_info_ptr 306 based pointer level 2 dcl 2-8 set ref 129 131* 139 section 152 based fixed bin(17,0) level 3 dcl 5-8 ref 169 184 seq_number 53 based fixed bin(17,0) level 3 dcl 5-8 ref 449 short_info 000162 automatic char(8) dcl 37 set ref 407* size builtin function dcl 63 ref 271 substr builtin function dcl 63 ref 389 389 389 389 391 391 391 391 603 604 successful_retry 6 based fixed bin(35,0) array level 2 dcl 12-6 set ref 556 559 560 560* sum builtin function dcl 63 ref 556 tape_ioi_$hardware_status 000042 constant entry external dcl 17-50 ref 574 ths based structure level 1 dcl 18-11 set ref 572 582 ths_ptr 000260 automatic pointer dcl 18-9 set ref 572* 573 574* 579 580 581 582 tioi_id 101 based bit(36) level 2 in structure "mtape_vol_set" dcl 6-9 in procedure "mtape_control_" ref 279 524 tioi_id 273 based bit(36) level 2 in structure "mtape_data" dcl 2-8 in procedure "mtape_control_" set ref 279* 286* 524 574* tlb 154 based pointer level 2 dcl 2-8 set ref 147 148* tot_error_stats 25 based structure level 2 in structure "volume_status" dcl 11-27 in procedure "mtape_control_" set ref 504 504 533* tot_error_stats 117 based structure level 2 in structure "mtape_vol_set" dcl 6-9 in procedure "mtape_control_" ref 533 unspec builtin function dcl 63 set ref 447* v_stat 3 based structure level 2 dcl 11-16 set ref 339 v_statp 000250 automatic pointer dcl 11-9 set ref 312* 320* 339* 494 495 496 497 497 499 500 501 501 502 502 504 504 506 508 508 518 519 520 521 522 523 533 534 version based char(8) level 2 in structure "mtape_vsst" dcl 11-21 in procedure "mtape_control_" set ref 305* version based char(8) level 2 in structure "mtape_vst" dcl 11-16 in procedure "mtape_control_" set ref 334* version based char(8) level 2 in structure "mtape_fsst" dcl 10-20 in procedure "mtape_control_" set ref 177* version based char(8) level 2 in structure "mtape_hardware_status" dcl 13-8 in procedure "mtape_control_" set ref 255* version based fixed bin(17,0) level 2 in structure "ths" dcl 18-11 in procedure "mtape_control_" set ref 573* version based char(8) level 2 in structure "mtape_saved_pfm_info" dcl 9-9 in procedure "mtape_control_" set ref 132* version based char(8) level 2 in structure "version_check" dcl 359 in procedure "CHECK_VERSION" ref 362 version based char(8) level 2 in structure "mtape_fst" dcl 10-15 in procedure "mtape_control_" set ref 215* version_check based structure level 1 dcl 359 vol_string 000122 automatic char(128) unaligned dcl 36 set ref 410* 415* 415 417* 417 420* 420 422* volume_id 10 based char(32) level 2 in structure "volume_status" dcl 11-27 in procedure "mtape_control_" set ref 495* 519* volume_id 26 based char(32) level 2 in structure "mtape_vol_set" dcl 6-9 in procedure "mtape_control_" ref 415 415 519 volume_index 102 based fixed bin(17,0) level 2 in structure "mtape_vol_set" dcl 6-9 in procedure "mtape_control_" ref 521 volume_index 23 based fixed bin(17,0) level 2 in structure "volume_status" dcl 11-27 in procedure "mtape_control_" set ref 499* 521* volume_name based char(32) level 2 in structure "volume_status" dcl 11-27 in procedure "mtape_control_" set ref 494* 518* volume_name 16 based char(32) level 2 in structure "mtape_vol_set" dcl 6-9 in procedure "mtape_control_" ref 417 518 volume_status based structure level 1 dcl 11-27 volume_type 104 based fixed bin(17,0) level 2 in structure "mtape_vol_set" dcl 6-9 in procedure "mtape_control_" ref 181 218 308 337 volume_type 2 based fixed bin(17,0) level 2 in structure "mtape_vsst" dcl 11-21 in procedure "mtape_control_" set ref 308* 317 volume_type 2 based fixed bin(17,0) level 2 in structure "mtape_vst" dcl 11-16 in procedure "mtape_control_" set ref 337* 342 vs_current 24 based pointer level 2 dcl 2-8 set ref 275 278* 287* 338 vs_head 20 based pointer level 2 dcl 2-8 set ref 181 218 276 297 308 310 337 412 470 vs_ptr 000226 automatic pointer dcl 6-5 set ref 276* 276* 277 278 279* 283 297* 297* 299 310* 310* 314 338* 412* 415 415 417* 419* 470* 472 476* 478* 518 519 520 521 522 523 524 533 534 vs_stat 4 based structure array level 2 dcl 11-21 set ref 312 320 vsst_ptr 000246 automatic pointer dcl 11-8 set ref 304* 305 307* 308 312 315 317 317 319 320 323 325 vsst_version_1 000024 constant char(8) initial unaligned dcl 11-12 set ref 292* 305 vst_ptr 000244 automatic pointer dcl 11-7 set ref 333* 334 336* 337 339 342 345 347 vst_version_1 000026 constant char(8) initial unaligned dcl 11-11 set ref 329* 334 write 340 based entry variable level 3 in structure "mtape_data" dcl 2-8 in procedure "mtape_control_" set ref 246 529 write 2 based structure level 2 in structure "mtape_err_stats" dcl 12-6 in procedure "mtape_control_" write_errors 33 based fixed bin(35,0) level 2 in structure "file_status" dcl 10-27 in procedure "mtape_control_" set ref 437* 459* write_errors 160 based fixed bin(35,0) level 3 in structure "mtape_file_info" dcl 5-8 in procedure "mtape_control_" ref 459 year 000374 automatic fixed bin(17,0) dcl 592 set ref 603* 603 605 607* 611 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ALTERNATE_CHANNEL internal static bit(36) initial dcl 18-64 ASCII_ALERT internal static bit(36) initial dcl 18-55 AT_BOFD internal static fixed bin(17,0) initial dcl 16-44 AT_BOFH internal static fixed bin(17,0) initial dcl 16-44 AT_BOFT internal static fixed bin(17,0) initial dcl 16-44 AT_BOT internal static bit(36) initial dcl 18-47 AT_EOF internal static fixed bin(17,0) initial dcl 16-44 AT_EOFD internal static fixed bin(17,0) initial dcl 16-44 AT_EOFH internal static fixed bin(17,0) initial dcl 16-44 AT_EOFT internal static fixed bin(17,0) initial dcl 16-44 AT_IFD internal static fixed bin(17,0) initial dcl 16-44 BAD_DENSITY internal static bit(36) initial dcl 18-117 BAD_DEVICE_CODE internal static bit(36) initial dcl 18-113 BAD_IDCW_PARITY internal static bit(36) initial dcl 18-111 BAD_OP_CODE internal static bit(36) initial dcl 18-115 BAD_PCW_CHANNEL_INST internal static bit(36) initial dcl 18-206 BIT_DURING_ERASE internal static bit(36) initial dcl 18-88 BLANK_TAPE_ON_READ internal static bit(36) initial dcl 18-86 BLANK_TAPE_ON_WRITE internal static bit(36) initial dcl 18-79 BLANK_VOLUME internal static fixed bin(17,0) initial dcl 6-42 BOF_LABEL internal static fixed bin(17,0) initial dcl 16-56 BOUNDARY_ERROR internal static bit(36) initial dcl 18-189 BUS_PARITY_FROM_CHANNEL internal static bit(36) initial dcl 18-198 BUS_PARITY_TO_CHANNEL internal static bit(36) initial dcl 18-216 BYTE_LOCKED_OUT internal static bit(36) initial dcl 18-141 CODE_ALERT internal static bit(36) initial dcl 18-162 COMMAND_REJECT internal static fixed bin(17,0) initial dcl 18-31 CONFIG_SWITCH_ERROR internal static bit(36) initial dcl 18-124 CONNECT_WHILE_BUSY internal static bit(36) initial dcl 18-204 CONSECUTIVE_TDCWS internal static bit(36) initial dcl 18-187 CONTINUE_BIT_NOT_SET internal static bit(36) initial dcl 18-174 CP_SIZE_DISCREPANCY internal static bit(36) initial dcl 18-196 DATA_ALERT_CONDITION internal static bit(36) initial dcl 18-103 DEVICE_ATTENTION internal static fixed bin(17,0) initial dcl 18-28 DEVICE_BUSY internal static fixed bin(17,0) initial dcl 18-27 DEVICE_DATA_ALERT internal static fixed bin(17,0) initial dcl 18-29 Direct_input internal static fixed bin(17,0) initial dcl 14-15 Direct_output internal static fixed bin(17,0) initial dcl 14-15 Direct_update internal static fixed bin(17,0) initial dcl 14-15 END_OF_FILE internal static fixed bin(17,0) initial dcl 18-30 END_OF_TAPE internal static bit(36) initial dcl 18-98 EOF_LABEL internal static fixed bin(17,0) initial dcl 16-56 EOV_LABEL internal static fixed bin(17,0) initial dcl 16-56 EXT_CHANGE_WHILE_RESTRICTED internal static bit(36) initial dcl 18-191 FILES_PER_FILE_GRP internal static fixed bin(17,0) initial dcl 16-44 FOUR_BIT_FILL internal static bit(36) initial dcl 18-51 HANDLER_CHECK internal static bit(36) initial dcl 18-77 HANDLER_IN_STANDBY internal static bit(36) initial dcl 18-75 IDCW_WHILE_RESTRICTED internal static bit(36) initial dcl 18-194 ID_BURST_WRITE_ERROR internal static bit(36) initial dcl 18-148 ILLEGAL_DEVICE_ID internal static bit(36) initial dcl 18-128 ILLEGAL_LC_NUMBER internal static bit(36) initial dcl 18-169 ILLEGAL_PROCEDURE internal static bit(36) initial dcl 18-167 ILLEGAL_SUSPENDED_LC_NUMBER internal static bit(36) initial dcl 18-171 INCOMPATIBLE_MODE internal static bit(36) initial dcl 18-130 INCOMPLETE_COMMAND_SEQUENCE internal static bit(36) initial dcl 18-210 INCONSISTENT_COMMAND internal static bit(36) initial dcl 18-143 INCORRECT_DCW internal static bit(36) initial dcl 18-208 IOM_CENTRAL internal static fixed bin(17,0) initial dcl 18-37 IOM_CHANNEL internal static fixed bin(17,0) initial dcl 18-38 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 14-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 14-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 14-15 LATERAL_PARITY_ALERT internal static bit(36) initial dcl 18-93 LOADING internal static bit(36) initial dcl 18-66 LONGITUDINAL_PARITY_ALERT internal static bit(36) initial dcl 18-95 LPW_TRO internal static bit(36) initial dcl 18-185 MARGINAL_CONDITION internal static bit(36) initial dcl 18-152 MPC_COMMAND_REJECT internal static fixed bin(17,0) initial dcl 18-34 MPC_DEVICE_ATTENTION internal static fixed bin(17,0) initial dcl 18-32 MPC_DEVICE_DATA_ALERT internal static fixed bin(17,0) initial dcl 18-33 MTAPE_ALLOC_FI internal static fixed bin(17,0) initial dcl 16-9 MTAPE_ALLOC_LR internal static fixed bin(17,0) initial dcl 16-9 MTAPE_ALLOC_VS internal static fixed bin(17,0) initial dcl 16-9 MTAPE_CV_UC_ASCII internal static fixed bin(17,0) initial dcl 16-34 MTAPE_CV_UC_EBCDIC internal static fixed bin(17,0) initial dcl 16-34 MTAPE_HWM_BCD internal static fixed bin(17,0) initial dcl 16-27 MTAPE_SPEED_VALUES internal static fixed bin(17,0) initial array dcl 16-22 MTAPE_UNSPECIFIED internal static fixed bin(17,0) initial dcl 16-34 MTAPE_VALID_DENSITIES internal static fixed bin(17,0) initial array dcl 16-17 MTAPE_VOLUME internal static fixed bin(17,0) initial dcl 6-42 MTH_MALFUNCTION internal static bit(36) initial dcl 18-134 MULTIPLE_BOT internal static bit(36) initial dcl 18-136 MULTIPLE_DEVICES internal static bit(36) initial dcl 18-126 MULTI_TRACK_ERROR internal static bit(36) initial dcl 18-154 MULT_PRIOR_VOLUME internal static fixed bin(17,0) initial dcl 6-42 NINE_TRACK_ERROR internal static bit(36) initial dcl 18-119 NON_MULT_VOLUME internal static fixed bin(17,0) initial dcl 6-42 NO_SUCH_HANDLER internal static bit(36) initial dcl 18-73 NRZI_CCC_ERROR internal static bit(36) initial dcl 18-160 PARITY_ERROR_AT_PRPH_INTERFACE internal static bit(36) initial dcl 18-213 POSTAMBLE_ERROR internal static bit(36) initial dcl 18-158 POWER_OFF internal static fixed bin(17,0) initial dcl 18-35 PREAMBLE_ERROR internal static bit(36) initial dcl 18-150 Q_ABORT_FILE internal static fixed bin(17,0) initial dcl 16-63 Q_INCORRECT_VOLUME internal static fixed bin(17,0) initial dcl 16-63 Q_LABELED_VOLUME internal static fixed bin(17,0) initial dcl 16-63 Q_NO_NEXT_VOLUME internal static fixed bin(17,0) initial dcl 16-63 Q_UNEXPIRED_FILE internal static fixed bin(17,0) initial dcl 16-63 Q_UNEXPIRED_VOLUME internal static fixed bin(17,0) initial dcl 16-63 READ_AFTER_WRITE internal static bit(36) initial dcl 18-108 RECOG_FORMAT_VOLUME internal static fixed bin(17,0) initial dcl 6-42 RESERVED internal static bit(36) initial dcl 18-62 REWINDING internal static bit(36) initial dcl 18-60 SIX_BIT_FILL internal static bit(36) initial dcl 18-53 SKEW_ERROR internal static bit(36) initial dcl 18-156 SUBSYSTEM_READY internal static fixed bin(17,0) initial dcl 18-26 SUM_CHECK_ERROR internal static bit(36) initial dcl 18-145 SYSTEM_FAULT internal static fixed bin(17,0) initial dcl 18-36 Sequential_input internal static fixed bin(17,0) initial dcl 14-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 14-15 Sequential_update internal static fixed bin(17,0) initial dcl 14-15 Stream_input internal static fixed bin(17,0) initial dcl 14-15 Stream_input_output internal static fixed bin(17,0) initial dcl 14-15 TCA_MALFUNCTION internal static bit(36) initial dcl 18-132 THS_VERSION internal static fixed bin(17,0) initial dcl 18-20 TIME_OUT internal static fixed bin(17,0) initial dcl 18-39 TRANSFER_TIMING_ALERT internal static bit(36) initial dcl 18-84 TRANSMISSION_PARITY_ALERT internal static bit(36) initial dcl 18-90 TWO_BIT_FILL internal static bit(36) initial dcl 18-49 UNLABELED_VOLUME internal static fixed bin(17,0) initial dcl 6-42 Volume_ansi_tape internal static fixed bin(17,0) initial dcl 8-15 Volume_blank internal static fixed bin(17,0) initial dcl 8-15 Volume_gcos_tape internal static fixed bin(17,0) initial dcl 8-15 Volume_ibm_tape internal static fixed bin(17,0) initial dcl 8-15 Volume_multics_tape internal static fixed bin(17,0) initial dcl 8-15 Volume_unauthenticated internal static fixed bin(17,0) initial dcl 8-15 Volume_unknown_format internal static fixed bin(17,0) initial dcl 8-15 Volume_unreadable internal static fixed bin(17,0) initial dcl 8-15 WRITE_PROTECTED internal static bit(36) initial dcl 18-45 all_buf_lens based fixed bin(21,0) array dcl 2-114 all_buf_ptrs based pointer array dcl 2-113 io_call_af_ret based varying char dcl 7-25 iox_$iocb_version_sentinel external static char(4) dcl 1-51 iox_modes internal static char(24) initial array dcl 14-6 lr_ptr automatic pointer dcl 15-4 mcip automatic pointer dcl 4-5 mtape_attach_info_version_1 internal static char(8) initial unaligned dcl 3-6 mtape_close_info based structure level 1 dcl 4-41 mtape_close_info_version_1 internal static char(8) initial unaligned dcl 4-8 mtape_data_version_1 internal static char(8) initial unaligned dcl 2-6 mtape_fi_version_1 internal static char(8) initial unaligned dcl 5-6 mtape_lr_version_1 internal static char(8) initial unaligned dcl 15-6 mtape_open_info_version_1 internal static char(8) initial unaligned dcl 4-7 mtape_vs_version_1 internal static char(8) initial unaligned dcl 6-7 myname internal static char(6) initial unaligned dcl 42 short_iox_modes internal static char(4) initial array dcl 14-12 tape_blk based char(1) array unaligned dcl 2-115 tape_ioi_$activate 000000 constant entry external dcl 17-8 tape_ioi_$allocate_buffers 000000 constant entry external dcl 17-11 tape_ioi_$allocate_work_area 000000 constant entry external dcl 17-16 tape_ioi_$buffer_status 000000 constant entry external dcl 17-20 tape_ioi_$check_order 000000 constant entry external dcl 17-24 tape_ioi_$check_read 000000 constant entry external dcl 17-27 tape_ioi_$check_write 000000 constant entry external dcl 17-30 tape_ioi_$deactivate 000000 constant entry external dcl 17-33 tape_ioi_$deallocate 000000 constant entry external dcl 17-36 tape_ioi_$deallocate_buffers 000000 constant entry external dcl 17-39 tape_ioi_$get_mode 000000 constant entry external dcl 17-43 tape_ioi_$get_statistics 000000 constant entry external dcl 17-46 tape_ioi_$list_buffers 000000 constant entry external dcl 17-54 tape_ioi_$order 000000 constant entry external dcl 17-57 tape_ioi_$queue_order 000000 constant entry external dcl 17-60 tape_ioi_$queue_read 000000 constant entry external dcl 17-63 tape_ioi_$queue_write 000000 constant entry external dcl 17-66 tape_ioi_$read 000000 constant entry external dcl 17-69 tape_ioi_$release_buffer 000000 constant entry external dcl 17-72 tape_ioi_$reserve_buffer 000000 constant entry external dcl 17-76 tape_ioi_$reset_statistics 000000 constant entry external dcl 17-80 tape_ioi_$set_buffer_ready 000000 constant entry external dcl 17-84 tape_ioi_$set_mode 000000 constant entry external dcl 17-88 tape_ioi_$stop_tape 000000 constant entry external dcl 17-91 tape_ioi_$write 000000 constant entry external dcl 17-94 NAMES DECLARED BY EXPLICIT CONTEXT. CHECK_CLOSED 002605 constant entry internal dcl 372 ref 125 267 CHECK_VERSION 002564 constant entry internal dcl 356 ref 157 204 250 292 329 CONTROL_OP 000000 constant label array(0:16) dcl 121 ref 119 CONTROL_OP_END 002560 constant label dcl 350 set ref 107 123 145 152 155 164 174 202 211 230 248 265 290 302 327 365 378 577 CV_DATE 004753 constant entry internal dcl 588 ref 426 426 428 428 DISPLAY_FILE_STATUS 002747 constant entry internal dcl 398 ref 196 225 DISPLAY_HARDWARE_STATUS 002644 constant entry internal dcl 385 ref 260 DISPLAY_VOLUME_STATUS 004065 constant entry internal dcl 492 ref 321 344 REPORT_ERR_STATS 004423 constant entry internal dcl 540 ref 504 508 SET_FILE_STATUS 003676 constant entry internal dcl 443 ref 187 221 SET_HARDWARE_STATUS 004655 constant entry internal dcl 570 ref 258 SET_VOLUME_STATUS 004326 constant entry internal dcl 516 ref 313 340 control 001060 constant entry external dcl 83 mtape_control_ 001045 constant entry external dcl 6 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5520 5570 5265 5530 Length 6374 5265 50 570 233 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mtape_control_ 772 external procedure is an external procedure. CHECK_VERSION internal procedure shares stack frame of external procedure mtape_control_. CHECK_CLOSED internal procedure shares stack frame of external procedure mtape_control_. DISPLAY_HARDWARE_STATUS internal procedure shares stack frame of external procedure mtape_control_. DISPLAY_FILE_STATUS internal procedure shares stack frame of external procedure mtape_control_. SET_FILE_STATUS internal procedure shares stack frame of external procedure mtape_control_. DISPLAY_VOLUME_STATUS internal procedure shares stack frame of external procedure mtape_control_. SET_VOLUME_STATUS internal procedure shares stack frame of external procedure mtape_control_. REPORT_ERR_STATS internal procedure shares stack frame of external procedure mtape_control_. SET_HARDWARE_STATUS internal procedure shares stack frame of external procedure mtape_control_. CV_DATE internal procedure shares stack frame of external procedure mtape_control_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mtape_control_ 000100 iocbp mtape_control_ 000102 order_name mtape_control_ 000112 info_ptr mtape_control_ 000114 code mtape_control_ 000115 cox mtape_control_ 000116 i mtape_control_ 000117 open mtape_control_ 000120 nvp mtape_control_ 000122 vol_string mtape_control_ 000162 short_info mtape_control_ 000164 long_info mtape_control_ 000216 mtdp mtape_control_ 000220 maip mtape_control_ 000222 moip mtape_control_ 000224 fi_ptr mtape_control_ 000226 vs_ptr mtape_control_ 000230 io_call_infop mtape_control_ 000232 mspfmip mtape_control_ 000234 fst_ptr mtape_control_ 000236 fsst_ptr mtape_control_ 000240 f_statp mtape_control_ 000242 mtape_fsst_nfiles mtape_control_ 000244 vst_ptr mtape_control_ 000246 vsst_ptr mtape_control_ 000250 v_statp mtape_control_ 000252 mtape_vsst_nvolumes mtape_control_ 000254 es_ptr mtape_control_ 000256 hwst_ptr mtape_control_ 000260 ths_ptr mtape_control_ 000314 i DISPLAY_FILE_STATUS 000324 i SET_FILE_STATUS 000350 i REPORT_ERR_STATS 000370 clock CV_DATE 000372 month CV_DATE 000373 day CV_DATE 000374 year CV_DATE 000375 Cmonth CV_DATE 000376 Cday CV_DATE 000377 Cyear CV_DATE 000400 date_time CV_DATE 000403 code CV_DATE THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a alloc_char_temp cat_realloc_chars call_ent_var_desc call_ent_var call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry ext_entry_desc any_to_any_truncate_ op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_status_code_ decode_clock_value_$date_time encode_clock_value_$offsets iox_$propagate mtape_io_$order mtape_mount_cntl_$demount mtape_util_$alloc mtape_util_$error mtape_util_$get_statistics mtape_util_$init_pfm tape_ioi_$hardware_status THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$no_file error_table_$no_operation error_table_$not_closed error_table_$not_open error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 001044 83 001052 85 001073 86 001100 87 001102 88 001103 89 001105 90 001107 91 001111 92 001117 93 001122 94 001125 96 001132 97 001134 99 001135 100 001137 101 001143 106 001146 107 001175 109 001201 113 001202 115 001212 116 001213 118 001226 119 001231 121 001233 123 001236 125 001237 128 001240 129 001244 130 001251 131 001257 132 001261 134 001264 135 001271 136 001274 137 001301 139 001302 140 001305 142 001311 143 001322 144 001324 145 001331 147 001332 148 001335 149 001340 150 001350 151 001352 152 001357 154 001360 155 001362 157 001363 160 001365 161 001372 162 001375 164 001420 166 001421 167 001425 168 001426 169 001434 171 001441 172 001444 173 001446 174 001451 176 001452 177 001464 178 001467 179 001470 180 001472 181 001500 182 001503 183 001504 184 001512 185 001516 186 001517 187 001524 189 001525 190 001531 191 001534 192 001540 194 001572 195 001603 196 001607 197 001610 198 001612 199 001620 200 001621 202 001627 204 001630 207 001632 208 001637 209 001642 211 001665 213 001666 214 001672 215 001700 216 001703 217 001704 218 001706 219 001713 220 001715 221 001717 222 001720 223 001724 225 001747 226 001750 227 001752 228 001753 230 001762 232 001763 237 001774 238 001777 241 002026 243 002027 244 002032 245 002034 246 002035 248 002045 250 002046 253 002050 254 002054 255 002062 256 002065 257 002066 258 002070 259 002071 260 002075 261 002076 262 002100 263 002101 265 002110 267 002111 270 002112 271 002115 272 002141 273 002146 274 002152 275 002161 276 002164 277 002174 278 002177 279 002201 280 002203 281 002240 283 002251 284 002255 285 002256 286 002261 287 002262 288 002264 290 002267 292 002270 295 002272 296 002276 297 002277 298 002306 299 002307 300 002313 301 002315 302 002320 304 002321 305 002333 306 002336 307 002337 308 002341 309 002346 310 002347 311 002354 312 002355 313 002362 314 002363 315 002367 316 002372 317 002376 319 002424 320 002435 321 002441 322 002442 323 002444 324 002452 325 002453 327 002461 329 002462 332 002464 333 002470 334 002476 335 002501 336 002502 337 002504 338 002511 339 002513 340 002515 341 002516 342 002522 344 002545 345 002546 346 002550 347 002551 350 002560 352 002563 356 002564 362 002566 364 002600 365 002603 368 002604 372 002605 374 002606 375 002610 376 002613 378 002642 381 002643 385 002644 387 002645 389 002666 391 002716 394 002746 398 002747 402 002750 403 002771 404 003015 406 003040 407 003043 408 003056 410 003106 411 003111 412 003112 413 003122 414 003123 415 003126 417 003173 418 003233 419 003234 420 003240 421 003255 422 003275 423 003331 426 003366 428 003424 430 003465 431 003511 432 003532 433 003556 434 003577 436 003625 437 003651 439 003675 443 003676 447 003677 448 003703 449 003707 450 003711 451 003713 452 003715 453 003721 454 003725 455 003727 456 003731 457 003733 458 003735 459 003737 460 003741 462 003750 464 003756 466 003767 468 003776 469 004001 470 004002 471 004011 472 004012 474 004021 476 004024 478 004032 479 004036 481 004044 483 004051 485 004057 486 004061 488 004064 492 004065 494 004066 495 004106 496 004132 497 004156 499 004210 500 004234 501 004237 502 004244 504 004273 506 004300 507 004304 508 004320 512 004325 516 004326 518 004327 519 004334 520 004337 521 004341 522 004343 523 004347 524 004351 525 004357 527 004365 528 004367 529 004371 531 004401 533 004412 534 004417 536 004422 540 004423 545 004425 546 004430 547 004444 550 004475 553 004523 556 004551 557 004571 558 004605 559 004621 560 004623 565 004654 570 004655 572 004656 573 004664 574 004666 575 004702 576 004704 577 004730 579 004731 580 004740 581 004744 582 004750 584 004752 588 004753 603 004755 604 004767 605 005002 606 005060 607 005070 608 005133 609 005143 610 005153 611 005163 612 005176 613 005223 ----------------------------------------------------------- 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