Lee ~8process_overseer_ >user_dir_dir>Multics>Lee  :PT*none`T:C ZtaT\V|rT>Xɦ @ @Bhardwaj ~8process_overseer_ >user_dir_dir>Multics>Bhardwaj  SCdC TK none`TӤwT>q|Xɦ @ @>Mabey ~8process_overseer_ >user_dir_dir>Multics>Mabey  bPTinone`TrZb tYPq T>$pXɦ @ @Mallmes ~8process_overseer_ >user_dir_dir>Multics>Mallmes  TzPTnLnone`TgTz|T% yQT>hXɦ @ @in (35)) returns (entry); 73 74 /* BASED DATA */ 75 76 dcl based_area area based (mtape_data.areap); 77 dcl ap_area area based (ap_areap); 78 dcl desc_string char (1024) varying based (desc_ptr); 79 dcl open_desc char (mtape_data.opd_len) varying based (mtape_data.opdp); 80 dcl vb_str char (128) varying based; 81 82 dcl 1 saved_options aligned based (saved_opt_ptr), /* template for allocation of last saved option array */ 83 2 nopts fixed bin, /* number of options in array */ 84 2 saved_option (all_len refer (saved_options.nopts)) char (32) varying; 85 86 /* mtape_parse_$attach - entry to parse up the attach options list 87* * 88* * Usage: 89* * 90* * dcl mtape_parse_$attach entry (ptr, (*) char (*) varying, fixed bin (35)); 91* * call mtape_parse_$attach (mtdp, options, code); 92* * 93* * where: 94* * 1. mtdp 95* * is a pointer to the mtape_data structure defined by 96* * mtape_data.incl.pl1. (INPUT) 97* * 2. options 98* * is the array of attach options received from 99* * iox_$attach_(name ptr). (INPUT) 100* * 3. code 101* * is a standard system error code. (OUTPUT) 102**/ 103 104 attach: entry (arg_mtdp, arg_options, arg_code); 105 106 call SETUP; /* go setup our enviornment */ 107 call ALLOCATE_AP_AREA; /* allocate area for process_arguments_ to use */ 108 call PROC_ARGS (myname || ".attach", ad_cs_ptr); /* Let process_arguments_ do the work */ 109 110 /* Now lets get the option values */ 111 112 call process_arguments_$get_option_value (rpvap, mtape_data.areap, found_opts, 113 DISPLAY, mtape_attach_info.display, ERROR, mtape_data.display_errors, 114 LABEL, mtape_attach_info.labeled, RING, mtape_attach_info.ring, 115 SYSTEM, mtape_attach_info.system, WAIT, mtape_attach_info.wait); /* get the switch flags first */ 116 117 call process_arguments_$get_option_value (rpvap, mtape_data.areap, found_opts, 118 DEFAULT_VOL_TYPE, mtape_attach_info.default_pfm_prefix, 119 DENSITY, mtape_attach_info.density, DEVICE, mtape_attach_info.ndrives, 120 TRACK, mtape_attach_info.tracks, VOL_TYPE, mtape_attach_info.pfm_prefix, 121 WAIT_TIME, mtape_attach_info.wait_time); /* get other options */ 122 123 call process_arguments_$get_option_value (rpvap, mtape_data.areap, found_opts, 124 SPEED, cspeed); /* get the speed values if any */ 125 if found_opts ^= "0"b then do; /* if some speeds specified */ 126 term = "0"b; 127 spos = 1; 128 str_len = length (rtrim (cspeed)); 129 do while (^term); 130 cs = search (substr (cspeed, spos), ","); /* more than one specified */ 131 if cs = 0 then do; /* last one */ 132 term = "1"b; 133 cs = (str_len - spos) + 1; /* set for end of string */ 134 end; 135 else cs = cs - 1; 136 if substr (cspeed, spos, cs) = "75" then/* 75 IPS specified */ 137 mtape_attach_info.speed = mtape_attach_info.speed | "100"b; 138 else if substr (cspeed, spos, cs) = "125" then /* 125 IPS specified */ 139 mtape_attach_info.speed = mtape_attach_info.speed | "010"b; 140 else if substr (cspeed, spos, cs) = "200" then /* 200 IPS specified */ 141 mtape_attach_info.speed = mtape_attach_info.speed | "001"b; 142 spos = spos + cs + 1; /* increment for next search */ 143 end; 144 end; 145 146 /* Now lets get the volume sequence list and any mount comments */ 147 148 call process_arguments_$get_option_value (rpvap, mtape_data.areap, found_opts, 149 VOLUME, option_value_list_ptr, COMMENT, cvlp); 150 151 if ^substr (found_opts, 1, 1) then do; /* need at least one volume */ 152 code = error_table_$noarg; 153 call mtape_util_$error (mtdp, code, 154 "At least one volume name must be specified"); 155 go to non_local_return; /* abort attachment */ 156 end; 157 do i = 1 to option_value_list.number_of_values; /* process all volumes */ 158 vname = option_value_list.value (i).ptr -> vb_str; /* get volume name */ 159 vx = option_value_list.value (i).vector_idx; /* and index into the rpva */ 160 if i = option_value_list.number_of_values then /* if at end */ 161 nxt_vx = -1; /* indicate so */ 162 else nxt_vx = option_value_list.value (i + 1).vector_idx; /* not end get next index */ 163 call resource_info_$canonicalize_name (VOLUME_TYPE (TAPE_VOL_VTYPEX), vname, cname, code); 164 if code ^= 0 then do; /* bad volume name */ 165 call mtape_util_$error (mtdp, code, 166 "Cannot canonicalize volume name ""^a""", vname); 167 arg_code = code; /* save code, but continue to check description */ 168 go to vol_end; /* get the next argument */ 169 end; 170 call mtape_util_$alloc (mtdp, MTAPE_ALLOC_VS, mtape_data.vs_tail, 0, vs_ptr); 171 mtape_data.vs_tail = vs_ptr; /* Link this VS structure in */ 172 if mtape_data.vs_head = null then /* if this is first volume set member */ 173 mtape_data.vs_current, mtape_data.vs_head = vs_ptr; /* set the link head too */ 174 mtape_vol_set.volume_name = cname; /* set the canonical volume name */ 175 if substr (found_opts, 2, 1) then do; /* if we have some comments */ 176 term = "0"b; 177 do j = 1 to cvlp -> option_value_list.number_of_values while (^term); 178 cvx = cvlp -> option_value_list.value (j).vector_idx; /* get option index */ 179 if cvx > vx then /* check position of comment */ 180 if (nxt_vx ^= -1 & cvx < nxt_vx) | nxt_vx = -1 then do; 181 term = "1"b; /* set terminate condition and copy comment */ 182 mtape_vol_set.mount_comment = cvlp -> option_value_list.value (j).ptr -> vb_str; 183 end; 184 end; 185 end; 186 vol_end: 187 end; 188 189 /* Now build a printable attach description, get volume sequence list first */ 190 191 desc_string = myname; /* start off the attach description with I/O module name */ 192 vol_ref_name = GET_REF_NAME (VOLUME); /* get the volume option ref name */ 193 do vs_ptr = mtape_data.vs_head repeat mtape_vol_set.next_vs_ptr while (vs_ptr ^= null); 194 if substr (mtape_vol_set.volume_name, 1, 1) = "-" then /* if volume name begins with "-" */ 195 desc_string = rtrim (desc_string) || " " || vol_ref_name; /* add volume qualifier */ 196 desc_string = rtrim (desc_string) || " " || mtape_vol_set.volume_name; 197 end; 198 199 /* now add control args with values */ 200 201 desc_string = rtrim (desc_string) || " " || GET_REF_NAME (DENSITY); 202 desc_string = rtrim (desc_string) || " " || ltrim (char (mtape_attach_info.density)); 203 desc_string = rtrim (desc_string) || " " || GET_REF_NAME (TRACK); 204 desc_string = rtrim (desc_string) || " " || ltrim (char (mtape_attach_info.tracks)); 205 if mtape_attach_info.speed ^= "0"b then do; /* only display speed if one specified */ 206 desc_string = rtrim (desc_string) || " " || GET_REF_NAME (SPEED); 207 desc_string = rtrim (desc_string) || " " || cspeed; 208 end; 209 desc_string = rtrim (desc_string) || " " || GET_BIN_REF_NAME (RING, mtape_attach_info.ring); 210 desc_string = rtrim (desc_string) || " " || GET_REF_NAME (DEVICE); 211 desc_string = rtrim (desc_string) || " " || ltrim (char (mtape_attach_info.ndrives)); 212 desc_string = rtrim (desc_string) || " " || GET_BIN_REF_NAME (LABEL, mtape_attach_info.labeled); 213 if mtape_attach_info.pfm_prefix ^= "" then do; /* put in PFM prefix only if given by user */ 214 desc_string = rtrim (desc_string) || " " || GET_REF_NAME (VOL_TYPE); 215 desc_string = rtrim (desc_string) || " " || mtape_attach_info.pfm_prefix; 216 end; 217 desc_string = rtrim (desc_string) || " " || GET_BIN_REF_NAME (WAIT, mtape_attach_info.wait); 218 if mtape_attach_info.wait then do; /* if we are waiting, put in wait time too */ 219 desc_string = rtrim (desc_string) || " " || GET_REF_NAME (WAIT_TIME); 220 desc_string = rtrim (desc_string) || " " || ltrim (char (mtape_attach_info.wait_time)); 221 end; 222 desc_string = rtrim (desc_string) || " " || GET_BIN_REF_NAME (DISPLAY, mtape_attach_info.display); 223 desc_string = rtrim (desc_string) || " " || GET_BIN_REF_NAME (SYSTEM, mtape_attach_info.system); 224 desc_string = rtrim (desc_string) || " " || GET_BIN_REF_NAME (ERROR, mtape_data.display_errors); 225 226 call mtape_util_$alloc (mtdp, MTAPE_ALLOC_STR, null, length (desc_string) + 4, mtape_data.atdp); 227 mtape_data.atdp -> desc_string = desc_string; /* move attach description to perm storage */ 228 229 non_local_return: /* target of non-local gotos */ 230 if arg_code = 0 then /* if previous error was not saved */ 231 arg_code = code; 232 if ap_areap ^= null then /* if arg processing area defined.. */ 233 call release_area_ (ap_areap); /* release it */ 234 if ad_cs_ptr ^= null then /* if attach/detach control print_vector allocated */ 235 call process_arguments_$free_print_vector_array (ad_cs_ptr); /* free it */ 236 return; /* end of attach entry */ 237 238 /* open - entry to parse open description */ 239 240 open: entry (arg_mtdp, arg_options, arg_open_mode, arg_code); 241 242 call SETUP; /* go setup our enviornment */ 243 open_mode = arg_open_mode; /* copy opening mode arg */ 244 call OPTIMIZE_PARSE (mtape_open_info.so_ptr); /* Do we have to call process_arguments_? */ 245 call ALLOCATE_AP_AREA; /* yes, allocate area for process_arguments_ to use */ 246 unspec (mtape_open_info.init_to_zero) = "0"b; /* initialize open info structure */ 247 mtape_open_info.comment, mtape_open_info.expiration, mtape_open_info.file_format = ""; 248 mtape_open_info.recording_mode, mtape_open_info.file_name, mtape_open_info.replace_id = ""; 249 mtape_open_info.pfm_opt_str (*) = ""; 250 ulab_name = ""; 251 mtape_open_info.open_mode = open_mode; /* copy opening mode */ 252 253 /* Let process_arguments_ do the work */ 254 255 call PROC_ARGS (myname || ".open." || mtape_attach_info.pfm_prefix, mtape_open_info.cs_ptr); 256 call process_arguments_$get_option_value (rpvap, mtape_data.areap, found_opts, /* get option values */ 257 COMMENT, mtape_open_info.comment, DISPLAY, mtape_open_info.display, 258 BLOCK, mtape_open_info.block_length, RECORD, mtape_open_info.record_length, 259 NUMBER, mtape_open_info.seq_number, REPLACE, mtape_open_info.replace_id, 260 NAME, mtape_open_info.file_name, MODE, mtape_open_info.recording_mode, 261 FORMAT, mtape_open_info.file_format, EXPIRES, mtape_open_info.expiration, 262 DEFAULT_SPAN_RLEN, mtape_open_info.default_span_rlen, 263 DEFAULT_VAR_RLEN, mtape_open_info.default_var_rlen, 264 DEFAULT_FIX_RLEN, mtape_open_info.default_fix_rlen, 265 APPEND, mtape_open_info.append, EXTEND, mtape_open_info.extend, 266 FORCE, mtape_open_info.force, LAST_FILE, mtape_open_info.last_file, 267 NEXT_FILE, mtape_open_info.next_file, MODIFY, mtape_open_info.modify, 268 LABEL_ENTRY, ulab_name); 269 if ulab_name ^= "" then do; /* if user label reoutine specified, convert it */ 270 mtape_open_info.user_label = cv_entry_ (ulab_name, null, code); 271 if code ^= 0 then do; 272 call mtape_util_$error (mtdp, code, 273 "^/Attempting to convert the user label entry ""^a"".", ulab_name); 274 go to non_local_return; 275 end; 276 mtape_open_info.label_entry_present = "1"b; /* set flag for PFM */ 277 end; 278 279 /* Now let's look at the open info and check some basic requirements. */ 280 281 if mtape_attach_info.pfm_prefix = "ibm" then do; 282 if ^(valid_IBM_open_args ()) then goto non_local_return; 283 end; 284 else if mtape_attach_info.pfm_prefix = "ansi" then do; 285 if ^(valid_ANSI_open_args ()) then goto non_local_return; 286 end; 287 288 289 /* Now lets get PFM dependent options */ 290 291 call GET_PFM_OPTIONS (addr (mtape_open_info.pfm_args), addr (mtape_pfm_info.pfm_open_options)); 292 293 /* generate printable open description and move it to perm storage */ 294 295 call process_arguments_$cv_result_to_linear_form (def_ptr, rpvap, desc_string, code); 296 if mtape_data.opdp ^= null then do; /* must free desc. first */ 297 free open_desc in (based_area); 298 mtape_data.opdp = null; 299 end; 300 mtape_data.opd_len = length (desc_string) + 64; 301 call mtape_util_$alloc (mtdp, MTAPE_ALLOC_STR, null, mtape_data.opd_len, mtape_data.opdp); 302 open_desc = rtrim (iox_modes (mtape_open_info.open_mode)) || " " || desc_string; 303 call SAVE_OPTIONS (mtape_open_info.so_ptr); /* save current option array */ 304 if ap_areap ^= null then /* if arg processing area defined.. */ 305 call release_area_ (ap_areap); /* release it */ 306 307 return; 308 309 /* close - entry to parse close description */ 310 311 close: entry (arg_mtdp, arg_options, arg_code); 312 313 call SETUP; /* set up our enviornment */ 314 open_mode = 0; /* indicate not open entry to optimize routine */ 315 call OPTIMIZE_PARSE (mtape_close_info.so_ptr); /* Do we have to call process_arguments_? */ 316 call ALLOCATE_AP_AREA; /* yes, allocate area for process_arguments_ to use */ 317 unspec (mtape_close_info.init_to_zero) = "0"b; /* initialize close info structure */ 318 mtape_close_info.comment, mtape_close_info.pfm_opt_str (*) = ""; 319 320 /* Let process_arguments_ do the work */ 321 322 call PROC_ARGS (myname || ".close." || mtape_attach_info.pfm_prefix, mtape_close_info.cs_ptr); 323 324 /* Now lets get the option values */ 325 326 call process_arguments_$get_option_value (rpvap, mtape_data.areap, found_opts, 327 COMMENT, mtape_close_info.comment, DISPLAY, mtape_close_info.display, 328 CLOSE_POSITION, cpos); 329 if cpos = BOF then /* position to beginning of file on closing */ 330 mtape_close_info.position = 1; 331 else if cpos = EOF then /* position to end of file on closing */ 332 mtape_close_info.position = 2; 333 else if cpos = LEAVE then /* leave the tape positioned where it is */ 334 mtape_close_info.position = 0; 335 336 /* Now lets get PFM dependent options */ 337 338 call GET_PFM_OPTIONS (addr (mtape_close_info.pfm_args), addr (mtape_pfm_info.pfm_close_options)); 339 340 /* generate printable close description and move it to perm storage */ 341 342 call process_arguments_$cv_result_to_linear_form (def_ptr, rpvap, desc_string, code); 343 call mtape_util_$alloc (mtdp, MTAPE_ALLOC_STR, null, length (desc_string) + 4, mtape_data.cldp); 344 mtape_data.cldp -> desc_string = desc_string; 345 call SAVE_OPTIONS (mtape_close_info.so_ptr); /* save current option array */ 346 if ap_areap ^= null then /* if arg processing area defined.. */ 347 call release_area_ (ap_areap); /* release it */ 348 349 return; 350 351 /* detach - entry to parse detach description */ 352 353 detach: entry (arg_mtdp, arg_options, arg_code); 354 355 call SETUP; /* go setup our enviornment */ 356 call ALLOCATE_AP_AREA; /* allocate area for process_arguments_ to use */ 357 mdip = mtape_data.detach_info_ptr; /* set detach info ptr also */ 358 unspec (mtape_detach_info) = "0"b; /* initialize detach info structure */ 359 mtape_detach_info.version = mtape_detach_info_version_1; /* set proper version */ 360 mtape_detach_info.comment = ""; 361 362 call PROC_ARGS (myname || ".detach", ad_cs_ptr); /* Let process_arguments_ do the work */ 363 364 /* Now lets get the option values */ 365 366 call process_arguments_$get_option_value (rpvap, mtape_data.areap, found_opts, 367 COMMENT, mtape_detach_info.comment, DISPLAY, mtape_detach_info.display, 368 REWIND, mtape_detach_info.unload); 369 mtape_detach_info.unload = ^mtape_detach_info.unload; /* invert flag for correct meaning */ 370 371 /* generate printable detach description and move it to perm storage */ 372 373 call process_arguments_$cv_result_to_linear_form (def_ptr, rpvap, desc_string, code); 374 call mtape_util_$alloc (mtdp, MTAPE_ALLOC_STR, null, length (desc_string) + 4, mtape_data.dtdp); 375 mtape_data.dtdp -> desc_string = desc_string; 376 if ap_areap ^= null then /* if arg processing area defined.. */ 377 call release_area_ (ap_areap); /* release it */ 378 379 return; 380 381 /* OPTIMIZE_PARSE - internal procedure to determine if open and close descriptions 382* really need to be passed by process_arguments_. If one open or close description has 383* already been parsed, and if the arg_option array passed by iox_ is exactly the same or 384* if the only difference is the "-name" or "-number" arg then do not expend the 385* overhead to call process_arguments_. Instead use the already initialized 386* open or close info structure, changing the file_name and/or seq_number args as 387* is appropriate */ 388 389 OPTIMIZE_PARSE: proc (sop); 390 391 dcl sop ptr; 392 dcl (saved_name, saved_number) char (32); 393 dcl i fixed bin; 394 395 if sop = null then /* if first open or close, */ 396 return; /* must call process_arguments_ */ 397 saved_opt_ptr = sop; /* get ptr to allocated saved_options */ 398 if hbound (arg_options, 1) ^= saved_options.nopts then /* if differenct number of opts.. */ 399 return; /* call process_arguments_ */ 400 if open_mode ^= 0 then /* if parsing open description */ 401 if open_mode ^= mtape_open_info.open_mode then /* but not opeing for same mode */ 402 return; /* let process_arguments_ handle it */ 403 saved_name, saved_number = ""; /* init key variables */ 404 term = "0"b; 405 do i = 1 to hbound (arg_options, 1) while (^term);/* go through all options */ 406 if arg_options (i) ^= saved_options.saved_option (i) then /* if options not equal */ 407 if arg_options (i - 1) = "-name" | /* if current option is file name arg */ 408 arg_options (i - 1) = "-nm" then 409 saved_name = arg_options (i); /* save the name */ 410 else if arg_options (i - 1) = "-number" | /* if current option is file seq number */ 411 arg_options (i - 1) = "-nb" then 412 saved_number = arg_options (i); /* save the file seq number */ 413 else term = "1"b; /* otherwise, found real mismatch */ 414 end; 415 if term then /* if we found mismatch, */ 416 return; /* call process_arguments_ */ 417 if saved_name ^= "" then do; 418 mtape_open_info.file_name = saved_name; /* copy file name */ 419 call INSERT_STRING ("-name", "-nm", saved_name); /* update open description */ 420 end; 421 if saved_number ^= "" then do; /* if we found different seq number */ 422 mtape_open_info.seq_number = cv_dec_check_ (saved_number, code); 423 if code ^= 0 then /* if invalid number */ 424 return; /* let process_arguments_ put out diagnostic */ 425 if mtape_open_info.seq_number > 9999 then /* if seq number to large */ 426 return; /* let process_arguments_ put out diagnostic */ 427 call INSERT_STRING ("-number", "-nb", saved_number); /* update open description */ 428 end; 429 430 go to non_local_return; /* optimization worked, arg processing complete */ 431 432 end OPTIMIZE_PARSE; 433 434 /* SAVE_OPTIONS - internal procedure to save current iox_ open array for open and close */ 435 436 SAVE_OPTIONS: proc (sop); 437 438 dcl sop ptr; 439 440 if sop ^= null then /* if we had a saved option array before */ 441 free sop -> saved_options in (based_area); /* free it first */ 442 all_len = hbound (arg_options, 1); /* get number of options to allocate */ 443 allocate saved_options in (based_area) set (saved_opt_ptr); 444 saved_options.saved_option = arg_options; /* copy them in */ 445 sop = saved_opt_ptr; /* and set the pointer */ 446 447 end SAVE_OPTIONS; 448 449 /* INSERT_STRING - internal procedure to update open description with new values */ 450 451 INSERT_STRING: proc (prim_ref, alt_ref, ins_str); 452 453 dcl (prim_ref, alt_ref, ins_str) char (*); 454 dcl (ref_pos, arg_start, arg_len, ins_str_len) fixed bin; 455 456 opn_desc_len = length (open_desc); /* set open desc length variable */ 457 ins_str_len = length (rtrim (ins_str)); /* get string length to insert */ 458 ref_pos = index (open_desc, prim_ref); /* get start position of reference name */ 459 if ref_pos = 0 then do; /* couldn't find primary ref name */ 460 ref_pos = index (open_desc, alt_ref); /* try alternate */ 461 if ref_pos = 0 then return; /* could not find it either, forget it */ 462 ref_pos = ref_pos + length (alt_ref); /* go to end of ref name */ 463 end; 464 else ref_pos = ref_pos + length (prim_ref); /* go to end of ref name */ 465 arg_start = verify (substr (open_desc, ref_pos), " "); /* find beginning of arg */ 466 arg_start = (arg_start + ref_pos) - 1; /* make it absolute position */ 467 arg_len = search (substr (open_desc, arg_start), " "); /* get length */ 468 if arg_len = 0 then /* if at end of string */ 469 arg_len = (opn_desc_len - arg_start) + 1; /* figure length to end of string */ 470 else arg_len = arg_len - 1; 471 if arg_start = opn_desc_len then do; /* if appending to end of string */ 472 if ins_str_len > arg_len then /* if new string is longer than old */ 473 open_desc = open_desc || copy (" ", ins_str_len - arg_len); /* grow string length */ 474 substr (open_desc, arg_start) = rtrim (ins_str); 475 end; 476 else substr (open_desc, arg_start) = rtrim (ins_str) || substr (open_desc, arg_start + arg_len); 477 478 end INSERT_STRING; 479 480 /* PROC_ARGS - internal procedure to get arg processing definition ptr and call in to process the args */ 481 482 PROC_ARGS: proc (def_name, ctl_ptr); 483 484 dcl def_name char (*) varying; 485 dcl ctl_ptr ptr; /* ptr to arg processing control structure */ 486 487 if ctl_ptr = null then do; /* if first time, get ctl structure */ 488 call process_arguments_$get_definition (def_name, mtape_data.areap, ctl_ptr, code); /* get ptr to definition */ 489 if code ^= 0 then /* can't find it */ 490 go to non_local_return; /* take non-local goto and return */ 491 end; 492 def_ptr = ctl_ptr; /* save the ctl ptr */ 493 call process_arguments_$argument_array ((def_name), 0, arg_options, def_ptr, ap_areap, rpvap, code); 494 if code ^= 0 then /* if error */ 495 go to non_local_return; /* take non-local goto and return */ 496 497 end PROC_ARGS; 498 499 /* GET_REF_NAME - internal procedure to return an options reference name, given the option name */ 500 501 GET_REF_NAME: proc (opt_name) returns (char (32) varying); 502 503 dcl opt_name char (*) varying; 504 505 call process_arguments_$get_reference_name (def_ptr, opt_name, pos_ref_name, neg_ref_name); 506 return (pos_ref_name); /* return name to caller */ 507 508 end GET_REF_NAME; 509 510 /* GET_BIN_REF_NAME - internal procedure to return a binary options positive or negative reference name, 511* given the option name and the binary state of the option */ 512 513 GET_BIN_REF_NAME: proc (opt_name, bin_state) returns (char (32) varying); 514 515 dcl opt_name char (*) varying; 516 dcl bin_state bit (1) aligned; 517 518 call process_arguments_$get_reference_name (def_ptr, opt_name, pos_ref_name, neg_ref_name); 519 if bin_state then /* if option is "on" */ 520 return (pos_ref_name); /* return positive name to caller */ 521 else return (neg_ref_name); /* switch is off, return neg name */ 522 523 end GET_BIN_REF_NAME; 524 525 /* SETUP - internal procedure to set up our enviornment */ 526 527 SETUP: proc; 528 529 mtdp = arg_mtdp; 530 maip = mtape_data.attach_info_ptr; /* get info ptrs set up */ 531 moip = mtape_data.open_info_ptr; 532 mcip = mtape_data.close_info_ptr; 533 mpfmip = mtape_data.pfm_info_ptr; 534 arg_code, code = 0; 535 rpvap, ad_cs_ptr, ap_areap = null; 536 537 end SETUP; 538 539 /* ALLOCATE_AP_AREA - internal procedure to allocate temp area for process_arguments_ */ 540 541 ALLOCATE_AP_AREA: proc; 542 543 unspec (ai) = "0"b; /* clear out area info */ 544 ai.version = area_info_version_1; /* set up area info block */ 545 ai.control.extend = "1"b; 546 ai.control.zero_on_alloc = "1"b; 547 ai.owner = myname; 548 ai.size = sys_info$max_seg_size; 549 ai.version_of_area = area_info_version_1; 550 ai.areap = null; 551 call define_area_ (addr (ai), code); /* get an area, for arg processing use */ 552 if code ^= 0 then do; 553 call mtape_util_$error (mtdp, code, "Error from define_area_"); 554 go to non_local_return; 555 end; 556 ap_areap = ai.areap; /* copy area pointer */ 557 allocate desc_string in (ap_area) set (desc_ptr); /* allocate storage for description */ 558 559 end ALLOCATE_AP_AREA; 560 561 /* GET_PFM_OPTIONS - internal procedure to get PFM dependent options */ 562 563 GET_PFM_OPTIONS: proc (pavp, pop); 564 565 dcl (pavp, pop) ptr; 566 567 do i = 1 to hbound (PFM_OPT_SW, 1); 568 call process_arguments_$get_option_value (rpvap, mtape_data.areap, found_opts, 569 PFM_OPT_SW (i), pavp -> pfm_arg_values.pfm_opt_sw (i)); 570 if found_opts ^= "0"b then do; /* if option exists.. */ 571 pop -> pfm_options.pfm_opt_flags (i).flag_name = GET_REF_NAME (PFM_OPT_SW (i)); 572 pop -> pfm_options.pfm_opt_flags (i).flag_ant_name = neg_ref_name; 573 end; 574 end; 575 576 do i = 1 to hbound (PFM_OPT_VALUE, 1); 577 call process_arguments_$get_option_value (rpvap, mtape_data.areap, found_opts, 578 PFM_OPT_VALUE (i), pavp -> pfm_arg_values.pfm_opt_value (i)); 579 if found_opts ^= "0"b then /* if option exists.. */ 580 pop -> pfm_options.pfm_opt_value_name (i) = GET_REF_NAME (PFM_OPT_VALUE (i)); 581 end; 582 583 do i = 1 to hbound (PFM_OPT_STR, 1); 584 call process_arguments_$get_option_value (rpvap, mtape_data.areap, found_opts, 585 PFM_OPT_STR (i), pavp -> pfm_arg_values.pfm_opt_str (i)); 586 if found_opts ^= "0"b then /* if option exists.. */ 587 pop -> pfm_options.pfm_opt_str_name (i) = GET_REF_NAME (PFM_OPT_STR (i)); 588 end; 589 590 end GET_PFM_OPTIONS; 591 592 593 /* valid_IBM_open_args - internal proc to perform some basic checking of format 594* vis-a-vis block and record sizes. */ 595 596 valid_IBM_open_args: proc () returns (bit (1)); 597 598 if (valid_ibm_file_name (rtrim (mtape_open_info.file_name))) then ; 599 else do; 600 code = error_table_$bad_name; 601 call mtape_util_$error (mtdp, code, 602 "The data set name ^a does not meet the IBM specifications.", mtape_open_info.file_name); 603 return ("0"b); 604 end; 605 606 if mtape_open_info.file_format = "f" then do; /* fixed format */ 607 if mtape_open_info.block_length ^= 0 then do; 608 /* if it's specified, it better equal the record length */ 609 if mtape_open_info.block_length ^= mtape_open_info.record_length then do; 610 code = error_table_$inconsistent; 611 call mtape_util_$error (mtdp, code, 612 "^/Fixed format requires that record and block lengths be equal."); 613 return ("0"b); 614 end; 615 end; 616 return ("1"b); 617 end; 618 else if mtape_open_info.file_format = "fb" then do; /* fixed block */ 619 if mtape_open_info.block_length = 0 then do; /* must be specified */ 620 code = error_table_$noarg; 621 call mtape_util_$error (mtdp, code, 622 "^/Fixed block format requires a ""-block"" size."); 623 return ("0"b); 624 end; 625 if mtape_open_info.record_length = 0 then do; 626 /* this must be there too... */ 627 code = error_table_$noarg; 628 call mtape_util_$error (mtdp, code, 629 "^/""-record"" argument not specified."); 630 return ("0"b); 631 end; 632 if mod (mtape_open_info.block_length, mtape_open_info.record_length) ^= 0 then do; 633 /* and they must be mod 0 */ 634 code = error_table_$inconsistent; 635 call mtape_util_$error (mtdp, code, 636 "^/The block size must be a mod 0 of the record size."); 637 return ("0"b); 638 end; 639 return ("1"b); 640 end; 641 else if mtape_open_info.file_format = "v" then do;/* v format */ 642 if mtape_open_info.block_length ^= 0 then do;/* if there, it MUST be record length + 4 */ 643 if mtape_open_info.block_length ^= mtape_open_info.record_length + 4 then do; 644 code = error_table_$inconsistent; 645 call mtape_util_$error (mtdp, code, 646 "^/The specified block length MUST be record_length + 4."); 647 return ("0"b); 648 end; 649 end; 650 return ("1"b); 651 end; 652 else if mtape_open_info.file_format = "vb" then do; 653 /* vb format */ 654 if mtape_open_info.block_length = 0 then do; 655 code = error_table_$noarg; 656 call mtape_util_$error (mtdp, code, 657 "^/No ""-block"" specified."); 658 return ("0"b); 659 end; 660 if mtape_open_info.block_length >= mtape_open_info.record_length + 4 then ; 661 else do; 662 code = error_table_$inconsistent; 663 call mtape_util_$error (mtdp, code, 664 "^/The block length must be greater than or equal to the record_length + 4."); 665 return ("0"b); 666 end; 667 return ("1"b); 668 end; 669 else if mtape_open_info.file_format = "vs" then do; 670 if (mtape_open_info.block_length < 20) | 671 (mtape_open_info.block_length > 32760) then do; 672 code = error_table_$inconsistent; 673 call mtape_util_$error (mtdp, code, 674 "^/Format ""vs"" requires that the block length be >= 20 and <= 32760 characters."); 675 return ("0"b); 676 end; 677 return ("1"b); 678 end; 679 else if mtape_open_info.file_format = "vbs" then do; 680 if (mtape_open_info.block_length < 20) | 681 (mtape_open_info.block_length > 32760) then do; 682 code = error_table_$inconsistent; 683 call mtape_util_$error (mtdp, code, 684 "^/Format ""vbs"" requires that the block length be >= 20 and <= 32760 characters."); 685 return ("0"b); 686 end; 687 return ("1"b); 688 end; 689 690 else if mtape_open_info.file_format = "u" then do;/* u format */ 691 if mtape_open_info.record_length ^= 0 then do; 692 code = error_table_$inconsistent; 693 call mtape_util_$error (mtdp, code, 694 "^/Format u and ""-record""."); 695 return ("0"b); 696 end; 697 return ("1"b); 698 end; 699 code = error_table_$inconsistent; 700 call mtape_util_$error (mtdp, code, 701 "^/Didn't recognize format ^a.", mtape_open_info.file_format); 702 return ("0"b); 703 end valid_IBM_open_args; 704 705 706 /* valid_ANSI_open_args - Like for IBM above, but using ANSI laws... */ 707 708 valid_ANSI_open_args: proc () returns (bit (1)); 709 710 if (valid_ansi_file_name (rtrim (mtape_open_info.file_name))) then ; 711 else do; 712 code = error_table_$bad_name; 713 call mtape_util_$error (mtdp, code, 714 "The file name ^a does not meet the ANSI specifications.", mtape_open_info.file_name); 715 return ("0"b); 716 end; 717 718 if mtape_open_info.file_format = "f" then do; /* fixed format */ 719 if mtape_open_info.block_length ^= 0 then do; 720 /* if it's specified, it better equal the record length */ 721 if mtape_open_info.block_length ^= mtape_open_info.record_length then do; 722 code = error_table_$inconsistent; 723 call mtape_util_$error (mtdp, code, 724 "^/Fixed format requires that record and block lengths be equal."); 725 return ("0"b); 726 end; 727 end; 728 return ("1"b); 729 end; 730 else if mtape_open_info.file_format = "fb" then do; /* fixed block */ 731 if mtape_open_info.block_length = 0 then do; /* must be specified */ 732 code = error_table_$noarg; 733 call mtape_util_$error (mtdp, code, 734 "^/Fixed block format requires a ""-block"" size."); 735 return ("0"b); 736 end; 737 if mtape_open_info.record_length = 0 then do; 738 /* this must be there too... */ 739 code = error_table_$noarg; 740 call mtape_util_$error (mtdp, code, 741 "^/""-record"" argument not specified."); 742 return ("0"b); 743 end; 744 if mod (mtape_open_info.block_length, mtape_open_info.record_length) ^= 0 then do; 745 /* and they must be mod 0 */ 746 code = error_table_$inconsistent; 747 call mtape_util_$error (mtdp, code, 748 "^/The block size must be mod 0 the record size."); 749 return ("0"b); 750 end; 751 return ("1"b); 752 end; 753 else if mtape_open_info.file_format = "d" then do;/* v format */ 754 if mtape_open_info.block_length ^= 0 then do; 755 if mtape_open_info.block_length ^= mtape_open_info.record_length then do; 756 code = error_table_$inconsistent; 757 call mtape_util_$error (mtdp, code, 758 "^/Format ""d"" requires that block and record sizes be equal."); 759 return ("0"b); 760 end; 761 end; 762 if mtape_open_info.record_length > 9996 then do; 763 code = error_table_$inconsistent; 764 call mtape_util_$error (mtdp, code, 765 "^/The maximum record length for format ""d"" is 9996 bytes to allow for the record control word."); 766 return ("0"b); 767 end; 768 769 return ("1"b); 770 end; 771 else if mtape_open_info.file_format = "db" then do; /* vb format */ 772 if mtape_open_info.block_length < mtape_open_info.record_length then do; 773 code = error_table_$inconsistent; 774 call mtape_util_$error (mtdp, code, 775 "^/The block size must not be less than the record size."); 776 return ("0"b); 777 end; 778 if mtape_open_info.record_length > 9996 then do; 779 code = error_table_$inconsistent; 780 call mtape_util_$error (mtdp, code, 781 "^/The maximum record length for format ""db"" is 9996 bytes to allow for the record control word."); 782 return ("0"b); 783 end; 784 785 return ("1"b); 786 end; 787 else if mtape_open_info.file_format = "s" then do; 788 if mtape_open_info.record_length > 1044480 then do; 789 code = error_table_$inconsistent; 790 call mtape_util_$error (mtdp, code, 791 "^/The record length must be <= 1044480 characters."); 792 return ("0"b); 793 end; 794 if (mtape_open_info.block_length < 18) | 795 (mtape_open_info.block_length > 99996) then do; 796 code = error_table_$inconsistent; 797 call mtape_util_$error (mtdp, code, 798 "^/The block length must be >= 18 and <= 99996 characters."); 799 return ("0"b); 800 end; 801 return ("1"b); 802 end; 803 else if mtape_open_info.file_format = "sb" then do; 804 if mtape_open_info.record_length > 1044480 then do; 805 code = error_table_$inconsistent; 806 call mtape_util_$error (mtdp, code, 807 "^/The record length must be <= 1044480 characters."); 808 return ("0"b); 809 end; 810 if (mtape_open_info.block_length < 18) | 811 (mtape_open_info.block_length > 99996) then do; 812 code = error_table_$inconsistent; 813 call mtape_util_$error (mtdp, code, 814 "^/The block length must be >= 18 and <= 99996 characters."); 815 return ("0"b); 816 end; 817 return ("1"b); 818 end; 819 else if mtape_open_info.file_format = "u" then do; 820 if mtape_open_info.record_length ^= 0 then do; 821 code = error_table_$inconsistent; 822 call mtape_util_$error (mtdp, code, 823 "^/Format ""u"" does not allow the ""-record"" control argument."); 824 return ("0"b); 825 end; 826 if mtape_open_info.block_length > 32760 then do; 827 code = error_table_$inconsistent; 828 call mtape_util_$error (mtdp, code, 829 "^/The block length must not be greater than 32760 characters."); 830 return ("0"b); 831 end; 832 return ("1"b); 833 end; 834 else do; 835 code = error_table_$inconsistent; 836 call mtape_util_$error (mtdp, code, 837 "^/Did not recognize ANSI formt ^a.", mtape_open_info.file_format); 838 return ("0"b); 839 end; 840 end valid_ANSI_open_args; 841 842 valid_ibm_file_name: 843 proc (namein) returns (bit (1)); 844 845 dcl namein char (*), 846 (first_dot, begin_next_dot, next_dot) fixed bin (24) init (0), 847 valid_ibm_first_chars char (29) int static options (constant) init ( 848 "ABCDEFGHIJKLMNOPQRSTUVWXYZ#@$"), 849 valid_ibm_rest_chars char (10) int static options (constant) init ("1234567890"), 850 ibm_name_seperator char (1) int static options (constant) init ("."), 851 ibm_name_max_length fixed bin int static options (constant) init (44), 852 ibm_name_indiv_len fixed bin int static options (constant) init (8); 853 854 if (mtape_open_info.open_mode = 2 | mtape_open_info.open_mode = 5) then ; 855 else return ("1"b); /* for input ignoe nameing specs */ 856 if namein = "" then return ("1"b); /* FUDGE */ 857 if length (namein) > ibm_name_max_length then return ("0"b); 858 if length (namein) <= ibm_name_indiv_len then do; 859 if verify (substr (namein, 1, 1), valid_ibm_first_chars) > 0 then return ("0"b); 860 else do; 861 if verify (namein, valid_ibm_first_chars || valid_ibm_rest_chars) > 0 then return ("0"b); 862 else return ("1"b); /* finished here */ 863 end; 864 end; 865 if verify (namein, valid_ibm_first_chars || valid_ibm_rest_chars || ibm_name_seperator) > 0 then return ("0"b); 866 first_dot = index (namein, ibm_name_seperator); 867 if first_dot > ibm_name_indiv_len + 1 then return ("0"b); 868 /* needs to be there */ 869 begin_next_dot = first_dot + 1; /* ok, cut up the simple names */ 870 do while ("1"b); 871 if verify (substr (namein, begin_next_dot, 1), valid_ibm_first_chars) > 0 then return ("0"b); 872 /* check first chars of each name */ 873 next_dot = index (substr (namein, begin_next_dot), ibm_name_seperator); 874 if next_dot > ibm_name_indiv_len + 1 then return ("0"b); 875 if next_dot = 0 then return ("1"b); 876 begin_next_dot = begin_next_dot + next_dot; 877 if begin_next_dot >= length (namein) then return ("1"b); 878 end; 879 return ("1"b); 880 end valid_ibm_file_name; 881 882 valid_ansi_file_name: 883 proc (namein) returns (bit (1)); 884 885 dcl namein char (*), 886 valid_ansi_chars char (56) int static options (constant) init ( 887 "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 !""%&'()*+,-./:;<=>?"); 888 889 890 if (mtape_open_info.open_mode = 2 | mtape_open_info.open_mode = 5) then ; 891 else return ("1"b); /* for input ignoe nameing specs */ 892 if length (namein) > 17 then return ("0"b); /* max len is 17 */ 893 if verify (namein, valid_ansi_chars) = 0 then return ("1"b); 894 else return ("0"b); 895 end valid_ansi_file_name; 896 897 1 1 /* BEGIN INCLUDE FILE mtape_data.incl.pl1. Created by J. A. Bush 10/06/82 */ 1 2 /* format: style4 */ 1 3 1 4 dcl mtdp ptr; 1 5 1 6 dcl mtape_data_version_1 char (8) int static options (constant) init ("mtdv0001"); 1 7 1 8 dcl 1 mtape_data aligned based (mtdp), 1 9 2 version char (8), /* Current structure version */ 1 10 2 areap ptr, /* Pointer to an allocation area */ 1 11 2 iocb_ptr ptr, /* Pointer to our IO control block */ 1 12 2 atdp ptr, /* Pointer to the attach description string */ 1 13 2 opdp ptr, /* Pointer to the open description string */ 1 14 2 cldp ptr, /* Pointer to close description string */ 1 15 2 dtdp ptr, /* Pointer to detach description string */ 1 16 2 cmtdp ptr, /* If non-null, Ptr to allocated copy of mtape_data */ 1 17 2 vs_head ptr, /* Pointer to the first volume_set structure */ 1 18 2 vs_tail ptr, /* Pointer to the last volume_set structure */ 1 19 2 vs_current ptr, /* Pointer to the current volume_set structure */ 1 20 2 vs_mounted_tail ptr, /* Pointer to MRM volume_set member */ 1 21 2 fi_head ptr, /* Pointer to the first file_info structure */ 1 22 2 fi_tail ptr, /* Pointer to the last file_info structure */ 1 23 2 fi_current ptr, /* Pointer to the current file_info structure */ 1 24 2 tape_infop ptr, /* Pointer to rcp tape info structure */ 1 25 2 last_ur_status_ptr ptr, /* If non-null, Ptr to last unrecoverable status */ 1 26 2 io_echan fixed bin (71), /* Fast wait channel for I/O interrupts */ 1 27 2 mount_echan fixed bin (71), /* Regular wait channel for mount requests */ 1 28 2 data_xfer_args, /* Arguments for time critical (read/write) calls */ 1 29 3 arg_buf_ptr ptr, /* Pointer to users buffer */ 1 30 3 arg_buf_len fixed bin (21), /* Length of users buffer in bytes */ 1 31 3 arg_rec_len fixed bin (21), /* Length of record read in bytes */ 1 32 2 error_lock fixed bin (35), /* if ^= 0 = file locked error code */ 1 33 2 abs_ans char (3), /* Query answer (yes or no) for abs user */ 1 34 2 user_type bit (1), /* "1"b => interactive; "0"b => absentee */ 1 35 2 display_errors bit (1), /* "1"b => display verbose error messages */ 1 36 2 force_end_of_volume bit (1), /* "1"b => simulate EOV on next write */ 1 37 2 opd_len fixed bin (21), /* Allocated length of open description */ 1 38 2 drives_in_use fixed bin, /* Number of tape drives currently in use */ 1 39 2 data_buffers, /* Info about data buffers */ 1 40 3 buf_ptrs (8) ptr, /* Pointers to a subset of ioi buffers */ 1 41 3 blind_buf_ptrs (8) ptr, /* Pointers to other subset of buffers */ 1 42 3 buf_len (8) fixed bin (21), /* Length of buffers in 9 bit bytes */ 1 43 3 blind_buf_len (8) fixed bin (21), /* Lengths of other subset of buffers */ 1 44 3 nbufs fixed bin, /* Number of data buffers currently in use */ 1 45 3 buf_size fixed bin (21), /* Allocated size of data buffers in bytes */ 1 46 3 bufs_per_subset fixed bin, /* Number of buffers to write/read per I/O */ 1 47 3 cur_buf_idx fixed bin, /* Index into subset of current buffer */ 1 48 3 run bit (1), /* "1"b => wrt I/O queued thru tape_ioi_; "0"b => ^Queued */ 1 49 2 label_buffer, /* Info about label record buffer */ 1 50 3 lab_bufp ptr, /* Pointer to label I/O buffer */ 1 51 3 lab_buf_len fixed bin (21), /* Length of label buffer in 9 bit bytes */ 1 52 2 tlb ptr, /* Pointer to a temp label record structure */ 1 53 2 position, /* Position on current volume */ 1 54 3 phy_file fixed bin, /* physical file number */ 1 55 3 phy_block fixed bin, /* physical block within physical file */ 1 56 2 current_file, /* instantanious info about current file */ 1 57 3 cur_block, /* info about current block */ 1 58 4 cur_buf_ptr ptr, /* Pointer to the current data buffer */ 1 59 4 log_record_ptr ptr, /* Pointer to current logical record */ 1 60 4 length fixed bin (21), /* Length of current block in bytes */ 1 61 4 processed fixed bin (21), /* Number of chars processed already */ 1 62 4 remain fixed bin (21), /* Number of chars remaining to be processed */ 1 63 4 log_record fixed bin (21), /* Log. record within the current block */ 1 64 3 char_size fixed bin, /* Size in bits of the data chars of this file */ 1 65 3 padding_char char (1), /* To pad blocks to mod 4 on binary writes */ 1 66 3 length_mode fixed bin, /* 0 => W/R mod 4 blocks; 1 => W/R non-mod 4 blocks */ 1 67 3 hdw_mode fixed bin, /* Hardware recording mode: 1 68* 1 = binary; 2 = nine track; 3 = BCD */ 1 69 3 conversion fixed bin, /* File data conversion: 1 70* 0 = no conversion; 1 = ASCII<->EBCDIC; 2 = ASCII<->BCD */ 1 71 3 buffer_offset fixed bin, /* Number of bytes prior to data */ 1 72 3 block_size fixed bin (21), /* Maximum block size for this file */ 1 73 3 record_size fixed bin (21), /* Maximum record size for this file */ 1 74 3 prev_block_no fixed bin (21), /* Number of previous block read */ 1 75 3 ad_file_format fixed bin, /* 1 = U; 2 = F; 3 = D or V; 4 = S or VS */ 1 76 3 file_blocked bit (1), /* "1"b => file is blocked */ 1 77 3 native_file bit (1), /* "1"b => current file written by mtape_ PFM */ 1 78 3 write_after_read bit (1), /* "1"b => truncate file (and file_set) at this record */ 1 79 3 first_file bit (1), /* "1"b => first file has been processed */ 1 80 3 tot_bytes_processed fixed bin (35), /* total bytes in this file section */ 1 81 3 last_io fixed bin, /* Last I/O operation (1 = read; 2 = write) */ 1 82 3 lrec_rrcx fixed bin, /* current index of the lrec round robin counter */ 1 83 3 lrec_rrc, /* history of last n logical records */ 1 84 4 block_no (0:7) fixed bin (35), /* block (within file section) where lrec starts */ 1 85 4 block_len (0:7) fixed bin (35), /* block len of current block */ 1 86 4 lrec_no (0:7) fixed bin (35), /* logical record within currnt block */ 1 87 4 abs_byte (0:7) fixed bin (35), /* byte (within file section) where lrec starts */ 1 88 4 byte_offset (0:7) fixed bin, /* offset of 1st byte of lrec (within block) */ 1 89 3 blk_rrcx fixed bin, /* index into blk_rrrc array of last block */ 1 90 3 blk_rrrc (0:7) fixed bin (35), /* contains Lrec count of last n blocks */ 1 91 3 tot_lrec fixed bin (35), /* Total logical records processed in current file */ 1 92 2 tioi_id bit (36), /* Identifier used for calls to tape_ioi_ */ 1 93 2 attach_info_ptr ptr, /* Pointer to attach option info */ 1 94 2 open_info_ptr ptr, /* Pointer to open option info */ 1 95 2 close_info_ptr ptr, /* Pointer to close option info */ 1 96 2 detach_info_ptr ptr, /* Pointer to detach option info */ 1 97 2 pfm_info_ptr ptr, /* Pointer to PFM info block */ 1 98 2 saved_pfm_info_ptr ptr, /* Pointer to info for "change_module" control OP */ 1 99 2 pfm_name char (32), /* Name of Per-Format module */ 1 100 2 pfm_required_entries like pfm_entries, /* Required entry point declarations in PFM */ 1 101 2 pfm_work_area (32) fixed bin (35); /* PFM work buffer */ 1 102 1 103 dcl 1 pfm_entries based aligned, /* Entry declarations for PFM entries */ 1 104 2 pfm_init entry (ptr, fixed bin (35)), /* PFM initialization entry */ 1 105 2 file_open entry (ptr, fixed bin (35)), /* PFM file_open entry */ 1 106 2 file_close entry (ptr, fixed bin (35)), /* PFM file_close entry */ 1 107 2 read entry (ptr, fixed bin (35)), /* PFM read entry */ 1 108 2 write entry (ptr, fixed bin (35)), /* PFM write entry */ 1 109 2 order entry (ptr, char (*), ptr, ptr, fixed bin (35)), /* PFM control order entry */ 1 110 2 decode_file_labels entry (ptr, ptr, fixed bin, fixed bin, fixed bin (35)), 1 111 2 encode_file_labels entry (ptr, ptr, fixed bin, fixed bin, fixed bin, fixed bin (35)); 1 112 1 113 dcl all_buf_ptrs (16) ptr based (addr (mtape_data.buf_ptrs)); 1 114 dcl all_buf_lens (16) fixed bin (21) based (addr (mtape_data.buf_len)); 1 115 dcl tape_blk (mtape_data.length) char (1) unaligned based (mtape_data.cur_buf_ptr); /* template for a tape block */ 1 116 1 117 /* END INCLUDE FILE mtape_data.incl.pl1 */ 898 899 2 1 /* BEGIN INCLUDE FILE mtape_vol_set.incl.pl1. Created by J. A. Bush 10/13/82 */ 2 2 /* The include file mtape_err_stats.incl.pl1 is referenced by this include file */ 2 3 /* format: style4 */ 2 4 2 5 dcl vs_ptr ptr; 2 6 2 7 dcl mtape_vs_version_1 char (8) int static options (constant) init ("mtvsv001"); 2 8 2 9 dcl 1 mtape_vol_set aligned based (vs_ptr), 2 10 2 version char (8), /* Current version */ 2 11 2 prev_vs_ptr ptr, /* Pointer to previous volume set entry */ 2 12 2 next_vs_ptr ptr, /* Pointer to next volume set entry */ 2 13 2 mrm_vs_ptr ptr, /* Pointer to Most Recently Mounted VS member */ 2 14 2 lrm_vs_ptr ptr, /* Pointer to Least Recently Mounted VS member */ 2 15 2 first_vl_ptr ptr, /* Pointer to the first volume label record structure */ 2 16 2 last_vl_ptr ptr, /* Pointer to the last volume label record structure */ 2 17 2 volume_name char (32), /* Name specified in the attach description */ 2 18 2 volume_id char (32), /* Name as recorded in the volume label */ 2 19 2 mount_comment char (64), /* Mount comment from attach description */ 2 20 2 demount_comment char (64), /* Demount comment from detach description */ 2 21 2 device_name char (8), /* Device volume is currently or last mounted on */ 2 22 2 rcp_id bit (36), /* RCP activation for this volume */ 2 23 2 tioi_id bit (36), /* tape_ioi_ activation for this volume */ 2 24 2 volume_index fixed bin, /* Volume sequence number within volume set */ 2 25 2 volume_density fixed bin, /* Actual volume density determined by RCP */ 2 26 2 volume_type fixed bin, /* Use rcp_volume_formats.incl.pl1 for decode */ 2 27 2 volume_check fixed bin, /* Refer to named constants below for values */ 2 28 2 number_of_vol_labels fixed bin, /* # of volume label records on this volume */ 2 29 2 auth_required bit (1), /* "1"b => Operator authentication was required */ 2 30 2 mounted bit (1), /* "1"b => volume currently mounted */ 2 31 2 ever_mounted bit (1), /* "1"b => volume has been mounted */ 2 32 2 volume_end bit (1), /* "1"b => reached end of volume (EOT foil) on write */ 2 33 2 first_file_unexpired bit (1), /* "1"b => first file of volume is unexpired */ 2 34 2 dev_att_retry bit (1), /* "1"b => DEVICE ATTENTION recovery in progress */ 2 35 2 pwr_off_retry bit (1), /* "1"b => POWER OFF recovery in progress */ 2 36 2 mounts fixed bin, /* Number of times volume mounted during attachment */ 2 37 2 tot_error_stats like mtape_err_stats, /* Summation of error statistics for all mounts */ 2 38 2 rel_error_stats like mtape_err_stats; /* Summation of error statistics, this mount */ 2 39 2 40 /* Named constants applied to volume_check variable, when volume label read by PFMs pfm_init entry */ 2 41 2 42 dcl (MTAPE_VOLUME init (1), /* Volume recorded by mtape_ (desired type) */ 2 43 MULT_PRIOR_VOLUME init (2), /* Volume recorded by prior Multics software 2 44* (desired type) */ 2 45 NON_MULT_VOLUME init (3), /* Volume recorded by other vendor (desired type) */ 2 46 BLANK_VOLUME init (4), /* Volume is blank/unreadable */ 2 47 UNLABELED_VOLUME init (5), /* Volume is unlabeled or has unrecognized label */ 2 48 RECOG_FORMAT_VOLUME init (6) /* Volume has label of other recognized format */ 2 49 ) fixed bin int static options (constant); 2 50 2 51 /* END INCLUDE FILE mtape_vol_set.incl.pl1 */ 900 901 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 */ 902 903 4 1 /* BEGIN INCLUDE FILE mtape_detach_info.incl.pl1. Created by J. A. Bush 06/13/83 */ 4 2 /* format: style4 */ 4 3 4 4 dcl mdip ptr; 4 5 4 6 dcl mtape_detach_info_version_1 char (8) int static options (constant) init ("mdiv0001"); 4 7 4 8 dcl 1 mtape_detach_info aligned based (mdip), 4 9 2 version char (8), /* Current structure version */ 4 10 2 comment char (64), /* To display on operators console at volume detach time */ 4 11 2 display bit (1), /* Display detach description on user_output */ 4 12 2 unload bit (1); /* "1"b => unload volume on detach; "0"b => rewind on detach */ 4 13 4 14 /* END INCLUDE FILE mtape_detach_info.incl.pl1 */ 904 905 5 1 /* BEGIN INCLUDE FILE mtape_open_close_info.incl.pl1. Created by J. A. Bush 06/13/83 */ 5 2 /* format: style4 */ 5 3 5 4 dcl moip ptr; /* Pointer to mtape_open_info structure */ 5 5 dcl mcip ptr; /* Pointer to mtape_close_info structure */ 5 6 5 7 dcl mtape_open_info_version_1 char (8) int static options (constant) init ("moiv0001"); 5 8 dcl mtape_close_info_version_1 char (8) int static options (constant) init ("mciv0001"); 5 9 5 10 dcl 1 mtape_open_info aligned based (moip), 5 11 2 version char (8), /* Current structure version */ 5 12 2 cs_ptr ptr, /* Pointer to arg processing control structure */ 5 13 2 cal_ptr ptr, /* Pointer to arg processing ctl arg list */ 5 14 2 so_ptr ptr, /* Pointer to last saved iox_ options */ 5 15 2 open_mode fixed bin, /* iox_ opening mode */ 5 16 2 comment char (80), /* Display on user_output after open */ 5 17 2 expiration char (24), /* File expiration date */ 5 18 2 file_format char (3), /* File format code */ 5 19 2 recording_mode char (6), /* Ascii, ebcdic, or binary */ 5 20 2 file_name char (32), /* Name of file to be recorded */ 5 21 2 replace_id char (32), /* Name of file to replace */ 5 22 2 init_to_zero, /* Enables clearing rest of structure */ 5 23 3 block_length fixed bin (35), /* Block size in bytes */ 5 24 3 record_length fixed bin (35), /* Record length specified by user */ 5 25 3 default_span_rlen fixed bin (35), /* Default record length for spanned records */ 5 26 3 default_var_rlen fixed bin (35), /* Default record length for variable records */ 5 27 3 default_fix_rlen fixed bin (35), /* Default record length for fixed records */ 5 28 3 seq_number fixed bin (35), /* File sequence number */ 5 29 3 append bit (1), /* "1"b => append file to end of file set */ 5 30 3 create bit (1), /* "1"b => create this file */ 5 31 3 display bit (1), /* "1"b => display the open description */ 5 32 3 extend bit (1), /* "1"b => extend the current file */ 5 33 3 force bit (1), /* "1"b => disregard file expiration when creating */ 5 34 3 last_file bit (1), /* "1"b => position to last file of file set */ 5 35 3 next_file bit (1), /* "1"b => position to next file of file set */ 5 36 3 modify bit (1), /* "1"b => modify the current file */ 5 37 3 label_entry_present bit (1), /* "1"b => user label entry is valid */ 5 38 3 user_label entry (ptr, char (*), fixed bin, fixed bin, fixed bin, fixed bin (35)), 5 39 3 pfm_args like pfm_arg_values; /* see structure below */ 5 40 5 41 dcl 1 mtape_close_info aligned based (mcip), 5 42 2 version char (8), /* Current structure version */ 5 43 2 cs_ptr ptr, /* Pointer to arg processing control structure */ 5 44 2 cal_ptr ptr, /* Pointer to arg processing ctl arg list */ 5 45 2 so_ptr ptr, /* Pointer to last saved iox_ options */ 5 46 2 comment char (80), /* Display on user_output after open */ 5 47 2 init_to_zero, /* Enables clearing rest of structure */ 5 48 3 display bit (1), /* Display open description for user */ 5 49 3 position fixed bin, /* For positioning on file closing: 5 50* 0 = Leave at current position; 5 51* 1 = Position to beginning of file; 5 52* 2 = Position to end of file; 5 53* 3 = Position to beginning of file section; 5 54* 4 = Position to end of file section */ 5 55 3 pfm_args like pfm_arg_values; /* see structure below */ 5 56 5 57 dcl 1 pfm_arg_values aligned based, /* Common to open and close_info */ 5 58 2 pfm_opt_sw (5) bit (1), /* PFM dependent */ 5 59 2 pfm_opt_value (5) fixed bin (35), /* PFM dependent */ 5 60 2 pfm_opt_str (5) char (32); /* PFM dependent */ 5 61 5 62 /* END INCLUDE FILE mtape_open_close_info.incl.pl1 */ 906 907 6 1 /* BEGIN INCLUDE FILE mtape_pfm_info.incl.pl1. Created by J. A. Bush 06/16/83 */ 6 2 /* format: style4 */ 6 3 6 4 dcl mpfmip ptr; 6 5 6 6 dcl mtape_pfm_info_version_1 char (8) int static options (constant) init ("mpiv0001"); 6 7 6 8 dcl 1 mtape_pfm_info aligned based (mpfmip), /* PFM information block */ 6 9 2 version char (8), /* Current structure version */ 6 10 2 module_id char (21), /* For identification of PFM. (e.g. ANSI, IBM, GCOS) */ 6 11 2 open_modes_allowed (3) fixed bin, /* Allowable open modes for this PFM */ 6 12 2 bof_prefix char (3), /* For identification of BOF labels */ 6 13 2 eov_prefix char (3), /* For identification of EOV labels */ 6 14 2 eof_prefix char (3), /* For identification of EOF labels */ 6 15 2 no_labels_ok bit (1), /* "1"b => PFM processes unlabeled volumes */ 6 16 2 multi_volumes_ok bit (1), /* "1"b => PFM processes multi-volume sets */ 6 17 2 extended_error_recovery bit (1), /* "1"b => PFM will do error recovery after mtape_ gives up */ 6 18 2 pfm_open_options like pfm_options, /* open options common to this PFM */ 6 19 2 pfm_close_options like pfm_options; /* close options common to this PFM */ 6 20 6 21 dcl 1 pfm_options aligned based, /* common to open and close pfm options */ 6 22 2 pfm_opt_flags (5), /* identifies use of "pfm_opt_sw (1-5)" close flags */ 6 23 3 flag_name char (32), /* name of flag */ 6 24 3 flag_ant_name char (32), /* antonym name */ 6 25 2 pfm_opt_value_name (5) char (32), /* identifies use of "pfm_opt_value (1-5)" */ 6 26 2 pfm_opt_str_name (5) char (32); /* identifies use of "pfm_opt_str (1-5)" */ 6 27 6 28 /* END INCLUDE FILE mtape_pfm_info.incl.pl1 */ 908 909 7 1 /* BEGIN INCLUDE FILE mtape_err_stats.incl.pl1. Created by J. A. Bush 07/22/83. */ 7 2 /* format: style4 */ 7 3 7 4 dcl es_ptr ptr; 7 5 7 6 dcl 1 mtape_err_stats aligned based (es_ptr), /* Error statistics block */ 7 7 2 read like err_entry, /* For read operations */ 7 8 2 write like err_entry, /* For write operations */ 7 9 2 orders like err_entry, /* For non-data xfer operations */ 7 10 2 successful_retry (7) fixed bin (35); /* retrys that succeeded after 1-7 trys */ 7 11 7 12 dcl 1 err_entry aligned based, 7 13 2 errors fixed bin (35), 7 14 2 operations fixed bin (35); 7 15 7 16 /* END INCLUDE FILE mtape_err_stats.incl.pl1 */ 910 911 8 1 /* BEGIN INCLUDE FILE mtape_option_names.incl.pl1. Created by J. A. Bush 07/01/83 */ 8 2 /* format: style4 */ 8 3 8 4 /* mtape_ attach and common option names */ 8 5 8 6 dcl (DISPLAY init ("display"), /* display attach/open/close/detach description */ 8 7 ERROR init ("error"), /* display verbose error message */ 8 8 LABEL init ("label"), /* process labeled or unlabeled tapes */ 8 9 RING init ("ring"), /* write ring in or not */ 8 10 SYSTEM init ("system"), /* user requests to be system process */ 8 11 WAIT init ("wait"), /* wait/don't wait for a free device */ 8 12 DEFAULT_VOL_TYPE init ("default_volume_type"), /* for unspecified output */ 8 13 DENSITY init ("density"), /* recording density */ 8 14 DEVICE init ("device"), /* number of devices to remain attached */ 8 15 TRACK init ("track"), /* number of tracks (7 or 9) */ 8 16 VOL_TYPE init ("volume_type"), /* if other than default */ 8 17 WAIT_TIME init ("wait_time"), /* time to wait for free device (in minutes) */ 8 18 SPEED init ("speed"), /* device speeds that are acceptable */ 8 19 VOLUME init ("volume"), /* volume names in volume sequence list */ 8 20 COMMENT init ("comment") /* OPR comment for attach/detach, User commnet for open/close */ 8 21 ) char (20) varying int static options (constant); 8 22 8 23 /* mtape_ common open description option names */ 8 24 8 25 dcl (BLOCK init ("block"), /* requested block size in bytes */ 8 26 RECORD init ("record"), /* requested record size in bytes */ 8 27 DEFAULT_SPAN_RLEN init ("default_span_rlen"), /* Default record length, spanned records */ 8 28 DEFAULT_VAR_RLEN init ("default_var_rlen"), /* Default record length, variable records */ 8 29 DEFAULT_FIX_RLEN init ("default_fix_rlen"), /* Default record length, fixed records */ 8 30 NUMBER init ("number"), /* requested file sequence number */ 8 31 REPLACE init ("replace"), /* file identifier to replace */ 8 32 NAME init ("name"), /* file name/identifier */ 8 33 MODE init ("mode"), /* recording mode (ANSI, EBCDIC, BCD, or BINARY) */ 8 34 FORMAT init ("format"), /* file format (PFM specific) */ 8 35 EXPIRES init ("expires"), /* file expiration date */ 8 36 APPEND init ("append"), /* append file to end of file set */ 8 37 EXTEND init ("extend"), /* extend the identified file */ 8 38 FORCE init ("force"), /* over-write unexpired files with no query */ 8 39 LAST_FILE init ("last_file"), /* search for last file in file set */ 8 40 NEXT_FILE init ("next_file"), /* search for next file */ 8 41 MODIFY init ("modify"), /* modify the identified file */ 8 42 LABEL_ENTRY init ("label_entry") /* user label record processing entry */ 8 43 ) char (20) varying int static options (constant); 8 44 8 45 /* Per-Format module specific option names for open/close descriptions */ 8 46 8 47 dcl PFM_OPT_SW (5) char (20) varying int static options (constant) init 8 48 ("pfm_opt_sw_1", "pfm_opt_sw_2", "pfm_opt_sw_3", "pfm_opt_sw_4", "pfm_opt_sw_5"); 8 49 8 50 dcl PFM_OPT_VALUE (5) char (20) varying int static options (constant) init 8 51 ("pfm_opt_value_1", "pfm_opt_value_2", "pfm_opt_value_3", "pfm_opt_value_4", "pfm_opt_value_5"); 8 52 8 53 dcl PFM_OPT_STR (5) char (20) varying int static options (constant) init 8 54 ("pfm_opt_str_1", "pfm_opt_str_2", "pfm_opt_str_3", "pfm_opt_str_4", "pfm_opt_str_5"); 8 55 8 56 /* mtape_ common close position option names and detach option names */ 8 57 8 58 dcl (CLOSE_POSITION init ("close_position"), /* position on closing option */ 8 59 BOF init ("bof"), /* position to begininning of file on closing */ 8 60 EOF init ("eof"), /* position to end of file on closing */ 8 61 LEAVE init ("leave"), /* leave tape positioned as is on closing */ 8 62 REWIND init ("rewind") /* rewind/unload on detach */ 8 63 ) char (20) varying int static options (constant); 8 64 8 65 /* END INCLUDE FILE mtape_option_names.incl.pl1. */ 912 913 9 1 /* BEGIN INCLUDE FILE mtape_constants.incl.pl1. Created by J. A. Bush 10/07/82 */ 9 2 /* format: style4 */ 9 3 9 4 /* This include file defines various named constants used throughout mtape_ 9 5* and its associated Per-Format modules */ 9 6 9 7 /* Storage allocation constants, used to denote what type of storage to allocate */ 9 8 9 9 dcl (MTAPE_ALLOC_VS init (1), /* to allocate a volume_set structure */ 9 10 MTAPE_ALLOC_LR init (2), /* to allocate a label record structure */ 9 11 MTAPE_ALLOC_FI init (3), /* to allocate a file_info structure */ 9 12 MTAPE_ALLOC_STR init (4) /* to allocate a character string, or undefined block */ 9 13 ) fixed bin int static options (constant); 9 14 9 15 /* Volume density constants */ 9 16 9 17 dcl MTAPE_VALID_DENSITIES (5) init (200, 556, 800, 1600, 6250) 9 18 fixed bin int static options (constant); 9 19 9 20 /* Device speed constants */ 9 21 9 22 dcl MTAPE_SPEED_VALUES (4) init (0, 75, 125, 200) /* 0 is any speed device */ 9 23 fixed bin int static options (constant); 9 24 9 25 /* Hardware Mode constants */ 9 26 9 27 dcl (MTAPE_HWM_BIN init (1), /* For binary hardware mode */ 9 28 MTAPE_HWM_NINE init (2), /* For nine hardware mode */ 9 29 MTAPE_HWM_BCD init (3) /* For BCD hardware mode */ 9 30 ) fixed bin int static options (constant); 9 31 9 32 /* Data conversion constants */ 9 33 9 34 dcl (MTAPE_UNSPECIFIED init (0), /* attribute not specified */ 9 35 MTAPE_NO_CONVERSION init (1), /* No conversion on input or output */ 9 36 MTAPE_CV_EBCDIC init (2), /* Convert to/from EBCDIC (from/to ASCII) */ 9 37 MTAPE_CV_BCD init (3), /* Convert to/from BCD (from/to ASCII) */ 9 38 MTAPE_CV_UC_ASCII init (4), /* Convert to Upper case ASCII (from any case ASCII) */ 9 39 MTAPE_CV_UC_EBCDIC init (5) /* Convert to Upper case EBCDIC (from any case ASCII) */ 9 40 ) fixed bin int static options (constant); 9 41 9 42 /* File positioning constants */ 9 43 9 44 dcl (NOT_POSITIONED_IN_FILE init (0), /* Not currently positioned within this file */ 9 45 AT_BOFH init (1), /* Positioned at beginning of file hdr */ 9 46 AT_EOFH init (2), /* Positioned at end of file hdr */ 9 47 AT_BOFD init (3), /* Positioned at beginning of file data */ 9 48 AT_IFD init (4), /* Positioned in file data, not beginning */ 9 49 AT_EOFD init (5), /* Positioned prior to end of data file */ 9 50 AT_BOFT init (6), /* Positioned at beginning of trailer label file */ 9 51 AT_EOFT init (7), /* Positioned at end of trailer label file */ 9 52 AT_EOF init (8), /* Positioned after trailer labels at EOF */ 9 53 FILES_PER_FILE_GRP init (3) /* # of physical files per file (section) group */ 9 54 ) fixed bin int static options (constant); 9 55 9 56 dcl (BOF_LABEL init (1), /* indicates beginning of file label */ 9 57 EOV_LABEL init (2), /* indicates end of volume label */ 9 58 EOF_LABEL init (3) /* indicates end of file label */ 9 59 ) fixed bin int static options (constant); 9 60 9 61 /* user query constant codes */ 9 62 9 63 dcl (Q_NO_NEXT_VOLUME init (1), 9 64 Q_LABELED_VOLUME init (2), 9 65 Q_UNEXPIRED_VOLUME init (3), 9 66 Q_INCORRECT_VOLUME init (4), 9 67 Q_UNEXPIRED_FILE init (5), 9 68 Q_ABORT_FILE init (6) 9 69 ) fixed bin int static options (constant); 9 70 9 71 /* END INCLUDE FILE mtape_constants.incl.pl1 */ 914 915 10 1 /* Begin include file ... rcp_resource_types.incl.pl1 10 2* * 10 3* * Created 3/79 by Michael R. Jordan for MR7.0R 10 4* * 10 5* * This include file defines the official RCP resource types. 10 6* * The array of names is indexed by the corresponding device type. 10 7* * MOD by RAF for MCA 10 8**/ 10 9 10 10 10 11 10 12 /****^ HISTORY COMMENTS: 10 13* 1) change(85-09-09,Fawcett), approve(85-09-09,MCR6979), 10 14* audit(85-12-09,CLJones), install(86-03-21,MR12.0-1033): 10 15* Support of MCA. 10 16* END HISTORY COMMENTS */ 10 17 10 18 dcl DEVICE_TYPE (8) char (32) 10 19 internal static options (constant) 10 20 init ("tape_drive", "disk_drive", "console", "printer", "punch", "reader", "special", "mca"); 10 21 10 22 dcl NUM_QUALIFIERS (8) fixed bin /* Number of qualifiers for each device type. */ 10 23 internal static init (3, 0, 0, 2, 0, 0, 0, 0); 10 24 10 25 dcl VOLUME_TYPE (8) char (32) 10 26 internal static options (constant) 10 27 init ("tape_vol", "disk_vol", "", "", "", "", "", ""); 10 28 10 29 dcl TAPE_DRIVE_DTYPEX fixed bin static internal options (constant) init (1); 10 30 dcl DISK_DRIVE_DTYPEX fixed bin static internal options (constant) init (2); 10 31 dcl CONSOLE_DTYPEX fixed bin static internal options (constant) init (3); 10 32 dcl PRINTER_DTYPEX fixed bin static internal options (constant) init (4); 10 33 dcl PUNCH_DTYPEX fixed bin static internal options (constant) init (5); 10 34 dcl READER_DTYPEX fixed bin static internal options (constant) init (6); 10 35 dcl SPECIAL_DTYPEX fixed bin static internal options (constant) init (7); 10 36 dcl MCA_DTYPEX fixed bin static internal options (constant) init (8); 10 37 dcl TAPE_VOL_VTYPEX fixed bin static internal options (constant) init (1); 10 38 dcl DISK_VOL_VTYPEX fixed bin static internal options (constant) init (2); 10 39 10 40 10 41 /* End include file ... rcp_resource_types.incl.pl1 */ 916 917 11 1 /* --------------- BEGIN include file rcp_volume_formats.incl.pl1 --------------- */ 11 2 11 3 11 4 11 5 /****^ HISTORY COMMENTS: 11 6* 1) change(86-12-08,GWMay), approve(86-12-08,PBF7552), 11 7* audit(86-12-08,Martinson), install(86-12-17,MR12.0-1250): 11 8* added array entry 0 to the volume format types to indicate that the tape 11 9* volume was not authenticated by rcp. 11 10* END HISTORY COMMENTS */ 11 11 11 12 11 13 /* General volume types */ 11 14 11 15 dcl (Volume_unauthenticated initial (0), 11 16 Volume_blank initial (1), 11 17 Volume_unknown_format initial (6), 11 18 Volume_unreadable initial (7), 11 19 11 20 /* Tape volume types */ 11 21 11 22 Volume_multics_tape initial (2), 11 23 Volume_gcos_tape initial (3), 11 24 Volume_ibm_tape initial (4), 11 25 Volume_ansi_tape initial (5)) fixed bin static options (constant); 11 26 11 27 /* Printable descriptions of volume types */ 11 28 11 29 dcl Tape_volume_types (0:7) char (16) static options (constant) initial 11 30 ("unauthenticated", 11 31 "blank", 11 32 "Multics", 11 33 "GCOS", 11 34 "IBM", 11 35 "ANSI", 11 36 "unrecognizable", 11 37 "unreadable"); 11 38 11 39 /* ---------------- END include file rcp_volume_formats.incl.pl1 ---------------- */ 918 919 12 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 12 2 12 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 12 4 12 5 dcl area_infop ptr; 12 6 12 7 dcl 1 area_info aligned based (area_infop), 12 8 2 version fixed bin, /* version number for this structure is 1 */ 12 9 2 control aligned like area_control, /* control bits for the area */ 12 10 2 owner char (32) unal, /* creator of the area */ 12 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 12 12 2 size fixed bin (18), /* size of the area in words */ 12 13 2 version_of_area fixed bin, /* version of area (returned only) */ 12 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 12 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 12 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 12 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 12 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 12 19 12 20 dcl 1 area_control aligned based, 12 21 2 extend bit (1) unal, /* says area is extensible */ 12 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 12 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 12 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 12 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 12 26 2 system bit (1) unal, /* says area is managed by system */ 12 27 2 pad bit (30) unal; 12 28 12 29 /* END INCLUDE FILE area_info.incl.pl1 */ 920 921 13 1 /* Begin include file ..... iox_modes.incl.pl1 */ 13 2 13 3 /* Written by C. D. Tavares, 03/17/75 */ 13 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 13 5 13 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 13 7 ("stream_input", "stream_output", "stream_input_output", 13 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 13 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 13 10 "direct_input", "direct_output", "direct_update"); 13 11 13 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 13 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 13 14 13 15 dcl (Stream_input initial (1), 13 16 Stream_output initial (2), 13 17 Stream_input_output initial (3), 13 18 Sequential_input initial (4), 13 19 Sequential_output initial (5), 13 20 Sequential_input_output initial (6), 13 21 Sequential_update initial (7), 13 22 Keyed_sequential_input initial (8), 13 23 Keyed_sequential_output initial (9), 13 24 Keyed_sequential_update initial (10), 13 25 Direct_input initial (11), 13 26 Direct_output initial (12), 13 27 Direct_update initial (13)) fixed bin int static options (constant); 13 28 13 29 /* End include file ..... iox_modes.incl.pl1 */ 922 923 14 1 /* BEGIN INCLUDE FILE - pa_option_value_list.incl.pl1 */ 14 2 14 3 /* DESCRIPTION: 14 4* 14 5* The option_value_list structure is constructed by the 14 6* pa_get_option_value subroutine. It is used to return multiple values for 14 7* a single option. 14 8**/ 14 9 14 10 /* HISTORY: 14 11* 14 12*Written by Lindsey Spratt, 06/12/83. 14 13*Modified: 14 14**/ 14 15 14 16 /* format: style2,ind3 */ 14 17 dcl 1 option_value_list based (option_value_list_ptr) aligned, 14 18 2 version char (8), 14 19 2 number_of_values fixed bin (35), 14 20 2 pad bit (36), 14 21 2 value (ovl_number_of_values refer (option_value_list.number_of_values)), 14 22 3 ptr ptr, 14 23 3 vector_idx fixed bin (35), 14 24 3 pad bit (36); 14 25 14 26 dcl OPTION_VALUE_LIST_VERSION_1 14 27 init ("optvl 01") char (8) internal static options (constant); 14 28 dcl option_value_list_ptr ptr init (null); 14 29 dcl ovl_number_of_values fixed bin (17) init (0); 14 30 14 31 /* END INCLUDE FILE - pa_option_value_list.incl.pl1 */ 924 925 926 end mtape_parse_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/17/86 0830.0 mtape_parse_.pl1 >special_ldd>install>MR12.0-1250>mtape_parse_.pl1 898 1 02/16/84 1452.3 mtape_data.incl.pl1 >ldd>include>mtape_data.incl.pl1 900 2 02/16/84 1452.4 mtape_vol_set.incl.pl1 >ldd>include>mtape_vol_set.incl.pl1 902 3 02/16/84 1452.3 mtape_attach_info.incl.pl1 >ldd>include>mtape_attach_info.incl.pl1 904 4 02/16/84 1452.3 mtape_detach_info.incl.pl1 >ldd>include>mtape_detach_info.incl.pl1 906 5 06/11/85 1429.6 mtape_open_close_info.incl.pl1 >ldd>include>mtape_open_close_info.incl.pl1 908 6 02/16/84 1452.4 mtape_pfm_info.incl.pl1 >ldd>include>mtape_pfm_info.incl.pl1 910 7 02/16/84 1452.3 mtape_err_stats.incl.pl1 >ldd>include>mtape_err_stats.incl.pl1 912 8 02/16/84 1452.4 mtape_option_names.incl.pl1 >ldd>include>mtape_option_names.incl.pl1 914 9 02/16/84 1452.3 mtape_constants.incl.pl1 >ldd>include>mtape_constants.incl.pl1 916 10 03/27/86 1120.0 rcp_resource_types.incl.pl1 >ldd>include>rcp_resource_types.incl.pl1 918 11 12/17/86 0758.3 rcp_volume_formats.incl.pl1 >special_ldd>install>MR12.0-1250>rcp_volume_formats.incl.pl1 920 12 06/11/76 1043.4 area_info.incl.pl1 >ldd>include>area_info.incl.pl1 922 13 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 924 14 02/16/84 1452.4 pa_option_value_list.incl.pl1 >ldd>include>pa_option_value_list.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. APPEND 000503 constant varying char(20) initial dcl 8-25 set ref 256* BLOCK 000605 constant varying char(20) initial dcl 8-25 set ref 256* BOF 000271 constant varying char(20) initial dcl 8-58 ref 329 CLOSE_POSITION 000277 constant varying char(20) initial dcl 8-58 set ref 326* COMMENT 000613 constant varying char(20) initial dcl 8-6 set ref 148* 256* 326* 366* DEFAULT_FIX_RLEN 000555 constant varying char(20) initial dcl 8-25 set ref 256* DEFAULT_SPAN_RLEN 000571 constant varying char(20) initial dcl 8-25 set ref 256* DEFAULT_VAR_RLEN 000563 constant varying char(20) initial dcl 8-25 set ref 256* DEFAULT_VOL_TYPE 000673 constant varying char(20) initial dcl 8-6 set ref 117* DENSITY 000665 constant varying char(20) initial dcl 8-6 set ref 117* 201* DEVICE 000657 constant varying char(20) initial dcl 8-6 set ref 117* 210* DISPLAY 000737 constant varying char(20) initial dcl 8-6 set ref 112* 222* 256* 326* 366* EOF 000263 constant varying char(20) initial dcl 8-58 ref 331 ERROR 000731 constant varying char(20) initial dcl 8-6 set ref 112* 224* EXPIRES 000511 constant varying char(20) initial dcl 8-25 set ref 256* EXTEND 000475 constant varying char(20) initial dcl 8-25 set ref 256* FORCE 000467 constant varying char(20) initial dcl 8-25 set ref 256* FORMAT 000517 constant varying char(20) initial dcl 8-25 set ref 256* LABEL 000723 constant varying char(20) initial dcl 8-6 set ref 112* 212* LABEL_ENTRY 000437 constant varying char(20) initial dcl 8-25 set ref 256* LAST_FILE 000461 constant varying char(20) initial dcl 8-25 set ref 256* LEAVE 000255 constant varying char(20) initial dcl 8-58 ref 333 MODE 000525 constant varying char(20) initial dcl 8-25 set ref 256* MODIFY 000445 constant varying char(20) initial dcl 8-25 set ref 256* MTAPE_ALLOC_STR 000525 constant fixed bin(17,0) initial dcl 9-9 set ref 226* 301* 343* 374* MTAPE_ALLOC_VS 001043 constant fixed bin(17,0) initial dcl 9-9 set ref 170* NAME 000533 constant varying char(20) initial dcl 8-25 set ref 256* NEXT_FILE 000453 constant varying char(20) initial dcl 8-25 set ref 256* NUMBER 000547 constant varying char(20) initial dcl 8-25 set ref 256* PFM_OPT_STR 000305 constant varying char(20) initial array dcl 8-53 set ref 583 584* 586* PFM_OPT_SW 000401 constant varying char(20) initial array dcl 8-47 set ref 567 568* 571* PFM_OPT_VALUE 000343 constant varying char(20) initial array dcl 8-50 set ref 576 577* 579* RECORD 000577 constant varying char(20) initial dcl 8-25 set ref 256* REPLACE 000541 constant varying char(20) initial dcl 8-25 set ref 256* REWIND 000247 constant varying char(20) initial dcl 8-58 set ref 366* RING 000715 constant varying char(20) initial dcl 8-6 set ref 112* 209* SPEED 000627 constant varying char(20) initial dcl 8-6 set ref 123* 206* SYSTEM 000707 constant varying char(20) initial dcl 8-6 set ref 112* 223* TAPE_VOL_VTYPEX constant fixed bin(17,0) initial dcl 10-37 ref 163 TRACK 000651 constant varying char(20) initial dcl 8-6 set ref 117* 203* VOLUME 000621 constant varying char(20) initial dcl 8-6 set ref 148* 192* VOLUME_TYPE 000147 constant char(32) initial array unaligned dcl 10-25 set ref 163* VOL_TYPE 000643 constant varying char(20) initial dcl 8-6 set ref 117* 214* WAIT 000701 constant varying char(20) initial dcl 8-6 set ref 112* 217* WAIT_TIME 000635 constant varying char(20) initial dcl 8-6 set ref 117* 219* ad_cs_ptr 000210 automatic pointer dcl 35 set ref 108* 234 234* 362* 535* addr builtin function dcl 55 ref 291 291 291 291 338 338 338 338 551 551 ai 000240 automatic structure level 1 dcl 40 set ref 543* 551 551 all_len 000232 automatic fixed bin(17,0) dcl 36 set ref 442* 443 443 alt_ref parameter char unaligned dcl 453 ref 451 460 462 ap_area based area(1024) dcl 77 ref 557 ap_areap 000206 automatic pointer dcl 35 set ref 232 232* 304 304* 346 346* 376 376* 493* 535* 556* 557 append 74 based bit(1) level 3 dcl 5-10 set ref 256* area_control based structure level 1 dcl 12-20 area_info based structure level 1 dcl 12-7 area_info_version_1 constant fixed bin(17,0) initial dcl 12-3 ref 544 549 areap 2 based pointer level 2 in structure "mtape_data" dcl 1-8 in procedure "mtape_parse_" set ref 112* 117* 123* 148* 256* 297 326* 366* 440 443 488* 568* 577* 584* areap 16 000240 automatic pointer level 2 in structure "ai" dcl 40 in procedure "mtape_parse_" set ref 550* 556 arg_code parameter fixed bin(35,0) dcl 28 set ref 104 167* 229 229* 240 311 353 534* arg_len 000364 automatic fixed bin(17,0) dcl 454 set ref 467* 468 468* 470* 470 472 472 476 arg_mtdp parameter pointer dcl 25 ref 104 240 311 353 529 arg_open_mode parameter fixed bin(17,0) dcl 27 ref 240 243 arg_options parameter varying char array dcl 26 set ref 104 240 311 353 398 405 406 406 406 406 410 410 410 442 444 493* arg_start 000363 automatic fixed bin(17,0) dcl 454 set ref 465* 466* 466 467 468 471 474 476 476 atdp 6 based pointer level 2 dcl 1-8 set ref 226* 227 attach_info_ptr 274 based pointer level 2 dcl 1-8 ref 530 based_area based area(1024) dcl 76 ref 297 440 443 begin_next_dot 000101 automatic fixed bin(24,0) initial dcl 845 set ref 845* 869* 871 873 876* 876 877 bin_state parameter bit(1) dcl 516 ref 513 519 block_length 66 based fixed bin(35,0) level 3 dcl 5-10 set ref 256* 607 609 619 632 642 643 654 660 670 670 680 680 719 721 731 744 754 755 772 794 794 810 810 826 char builtin function dcl 55 ref 202 204 211 220 cldp 12 based pointer level 2 dcl 1-8 set ref 343* 344 close_info_ptr 300 based pointer level 2 dcl 1-8 ref 532 cname 000111 automatic char(32) unaligned dcl 33 set ref 163* 174 code 000100 automatic fixed bin(35,0) dcl 32 set ref 152* 153* 163* 164 165* 167 229 270* 271 272* 295* 342* 373* 422* 423 488* 489 493* 494 534* 551* 552 553* 600* 601* 610* 611* 620* 621* 627* 628* 634* 635* 644* 645* 655* 656* 662* 663* 672* 673* 682* 683* 692* 693* 699* 700* 712* 713* 722* 723* 732* 733* 739* 740* 746* 747* 756* 757* 763* 764* 773* 774* 779* 780* 789* 790* 796* 797* 805* 806* 812* 813* 821* 822* 827* 828* 835* 836* comment 11 based char(80) level 2 in structure "mtape_open_info" dcl 5-10 in procedure "mtape_parse_" set ref 247* 256* comment 10 based char(80) level 2 in structure "mtape_close_info" dcl 5-41 in procedure "mtape_parse_" set ref 318* 326* comment 2 based char(64) level 2 in structure "mtape_detach_info" dcl 4-8 in procedure "mtape_parse_" set ref 360* 366* control 1 000240 automatic structure level 2 dcl 40 copy builtin function dcl 55 ref 472 cpos 000131 automatic char(32) unaligned dcl 33 set ref 326* 329 331 333 cs 000231 automatic fixed bin(17,0) dcl 36 set ref 130* 131 133* 135* 135 136 138 140 142 cs_ptr 2 based pointer level 2 in structure "mtape_open_info" dcl 5-10 in procedure "mtape_parse_" set ref 255* cs_ptr 2 based pointer level 2 in structure "mtape_close_info" dcl 5-41 in procedure "mtape_parse_" set ref 322* cspeed 000121 automatic char(32) unaligned dcl 33 set ref 123* 128 130 136 138 140 207 ctl_ptr parameter pointer dcl 485 set ref 482 487 488* 492 cv_dec_check_ 000026 constant entry external dcl 62 ref 422 cv_entry_ 000050 constant entry external dcl 72 ref 270 cvlp 000216 automatic pointer dcl 35 set ref 148* 177 178 182 cvx 000226 automatic fixed bin(17,0) dcl 36 set ref 178* 179 179 def_name parameter varying char dcl 484 set ref 482 488* 493 def_ptr 000212 automatic pointer dcl 35 set ref 295* 342* 373* 492* 493* 505* 518* default_fix_rlen 72 based fixed bin(35,0) level 3 dcl 5-10 set ref 256* default_pfm_prefix 15 based char(21) level 2 dcl 3-8 set ref 117* default_span_rlen 70 based fixed bin(35,0) level 3 dcl 5-10 set ref 256* default_var_rlen 71 based fixed bin(35,0) level 3 dcl 5-10 set ref 256* define_area_ 000044 constant entry external dcl 70 ref 551 density 2 based fixed bin(35,0) level 2 dcl 3-8 set ref 117* 202 desc_ptr 000214 automatic pointer dcl 35 set ref 191 194 194 196 196 201 201 202 202 203 203 204 204 206 206 207 207 209 209 210 210 211 211 212 212 214 214 215 215 217 217 219 219 220 220 222 222 223 223 224 224 226 227 295 300 302 342 343 344 373 374 375 557* desc_string based varying char(1024) dcl 78 set ref 191* 194* 194 196* 196 201* 201 202* 202 203* 203 204* 204 206* 206 207* 207 209* 209 210* 210 211* 211 212* 212 214* 214 215* 215 217* 217 219* 219 220* 220 222* 222 223* 223 224* 224 226 227* 227 295* 300 302 342* 343 344* 344 373* 374 375* 375 557 detach_info_ptr 302 based pointer level 2 dcl 1-8 ref 357 display 22 based bit(1) level 2 in structure "mtape_detach_info" dcl 4-8 in procedure "mtape_parse_" set ref 366* display 76 based bit(1) level 3 in structure "mtape_open_info" dcl 5-10 in procedure "mtape_parse_" set ref 256* display 34 based bit(1) level 3 in structure "mtape_close_info" dcl 5-41 in procedure "mtape_parse_" set ref 326* display 23 based bit(1) level 2 in structure "mtape_attach_info" dcl 3-8 in procedure "mtape_parse_" set ref 112* 222* display_errors 55 based bit(1) level 2 dcl 1-8 set ref 112* 224* dtdp 14 based pointer level 2 dcl 1-8 set ref 374* 375 err_entry based structure level 1 dcl 7-12 error_table_$bad_name 000010 external static fixed bin(35,0) dcl 48 ref 600 712 error_table_$inconsistent 000014 external static fixed bin(35,0) dcl 50 ref 610 634 644 662 672 682 692 699 722 746 756 763 773 779 789 796 805 812 821 827 835 error_table_$noarg 000012 external static fixed bin(35,0) dcl 49 ref 152 620 627 655 732 739 expiration 35 based char(24) level 2 dcl 5-10 set ref 247* 256* extend 77 based bit(1) level 3 in structure "mtape_open_info" dcl 5-10 in procedure "mtape_parse_" set ref 256* extend 1 000240 automatic bit(1) level 3 in structure "ai" packed unaligned dcl 40 in procedure "mtape_parse_" set ref 545* file_format 43 based char(3) level 2 dcl 5-10 set ref 247* 256* 606 618 641 652 669 679 690 700* 718 730 753 771 787 803 819 836* file_name 46 based char(32) level 2 dcl 5-10 set ref 248* 256* 418* 598 598 601* 710 710 713* first_dot 000100 automatic fixed bin(24,0) initial dcl 845 set ref 845* 866* 867 869 flag_ant_name 10 based char(32) array level 3 dcl 6-21 set ref 572* flag_name based char(32) array level 3 dcl 6-21 set ref 571* force 100 based bit(1) level 3 dcl 5-10 set ref 256* found_opts 000236 automatic bit(36) dcl 39 set ref 112* 117* 123* 125 148* 151 175 256* 326* 366* 568* 570 577* 579 584* 586 hbound builtin function dcl 55 ref 398 405 442 567 576 583 i 000342 automatic fixed bin(17,0) dcl 393 in procedure "OPTIMIZE_PARSE" set ref 405* 406 406 406 406 406 410 410 410* i 000222 automatic fixed bin(17,0) dcl 36 in procedure "mtape_parse_" set ref 157* 158 159 160 162* 567* 568 568 571 571 572* 576* 577 577 579 579* 583* 584 584 586 586* ibm_name_indiv_len constant fixed bin(17,0) initial dcl 845 ref 858 867 874 ibm_name_max_length constant fixed bin(17,0) initial dcl 845 ref 857 ibm_name_seperator 013756 constant char(1) initial unaligned dcl 845 ref 865 866 873 index builtin function dcl 55 ref 458 460 866 873 init_to_zero 66 based structure level 2 in structure "mtape_open_info" dcl 5-10 in procedure "mtape_parse_" set ref 246* init_to_zero 34 based structure level 2 in structure "mtape_close_info" dcl 5-41 in procedure "mtape_parse_" set ref 317* ins_str parameter char unaligned dcl 453 ref 451 457 474 476 ins_str_len 000365 automatic fixed bin(17,0) dcl 454 set ref 457* 472 472 iox_modes 000031 constant char(24) initial array dcl 13-6 ref 302 j 000223 automatic fixed bin(17,0) dcl 36 set ref 177* 178 182* label_entry_present 104 based bit(1) level 3 dcl 5-10 set ref 276* labeled 24 based bit(1) level 2 dcl 3-8 set ref 112* 212* last_file 101 based bit(1) level 3 dcl 5-10 set ref 256* length builtin function dcl 55 ref 128 226 300 343 374 456 457 462 464 857 858 877 892 ltrim builtin function dcl 55 ref 202 204 211 220 maip 000270 automatic pointer dcl 3-4 set ref 112 112 112 112 112 117 117 117 117 117 117 136 136 138 138 140 140 202 204 205 209 211 212 213 215 217 218 220 222 223 255 281 284 322 530* mcip 000276 automatic pointer dcl 5-5 set ref 315 317 318 318 322 326 326 329 331 333 338 338 345 532* mdip 000272 automatic pointer dcl 4-4 set ref 357* 358 359 360 366 366 366 369 369 mod builtin function dcl 55 ref 632 744 modify 103 based bit(1) level 3 dcl 5-10 set ref 256* moip 000274 automatic pointer dcl 5-4 set ref 244 246 247 247 247 248 248 248 249 251 255 256 256 256 256 256 256 256 256 256 256 256 256 256 256 256 256 256 256 256 270 276 291 291 302 303 400 418 422 425 531* 598 598 601 606 607 609 609 618 619 625 632 632 641 642 643 643 652 654 660 660 669 670 670 679 680 680 690 691 700 710 710 713 718 719 721 721 730 731 737 744 744 753 754 755 755 762 771 772 772 778 787 788 794 794 803 804 810 810 819 820 826 836 854 854 890 890 mount_comment 36 based char(64) level 2 dcl 2-9 set ref 182* mpfmip 000300 automatic pointer dcl 6-4 set ref 291 291 338 338 533* mtape_attach_info based structure level 1 dcl 3-8 mtape_close_info based structure level 1 dcl 5-41 mtape_data based structure level 1 dcl 1-8 mtape_detach_info based structure level 1 dcl 4-8 set ref 358* mtape_detach_info_version_1 000746 constant char(8)Wright ~8process_overseer_ >user_dir_dir>Multics>Wright  PSDbnone`SD4 *T>BXɦ @ @Zwick ~8process_overseer_ >user_dir_dir>Multics>Zwick   !ďPTnoneT !ďelq4&8T>3QXɦ @ @Hindbo ~8process_overseer_ >user_dir_dir>Multics>Hindbo    PTranoneTQ  ̓\C,&hT>]ZXɦ @ @Voth ~8process_overseer_ >user_dir_dir>Multics>Voth  ]3SCdC T~;none`TL#]3vw.fYE:8T>  Xɦ @ @ 1-8 set ref 297 300* 301* 302 472 opdp 10 based pointer level 2 dcl 1-8 set ref 296 297 298* 301* 302 456 458 460 465 467 472 472 474 476 476 open_desc based varying char dcl 79 set ref 297 302* 456 458 460 465 467 472* 472 474* 476* 476 open_info_ptr 276 based pointer level 2 dcl 1-8 ref 531 open_mode 10 based fixed bin(17,0) level 2 in structure "mtape_open_info" dcl 5-10 in procedure "mtape_parse_" set ref 251* 302 400 854 854 890 890 open_mode 000233 automatic fixed bin(17,0) dcl 36 in procedure "mtape_parse_" set ref 243* 251 314* 400 400 opn_desc_len 000234 automatic fixed bin(21,0) dcl 37 set ref 456* 468 471 opt_name parameter varying char dcl 503 in procedure "GET_REF_NAME" set ref 501 505* opt_name parameter varying char dcl 515 in procedure "GET_BIN_REF_NAME" set ref 513 518* option_value_list based structure level 1 dcl 14-17 option_value_list_ptr 000302 automatic pointer initial dcl 14-28 set ref 148* 157 158 159 160 162 14-28* ovl_number_of_values 000304 automatic fixed bin(17,0) initial dcl 14-29 set ref 14-29* owner 2 000240 automatic char(32) level 2 packed unaligned dcl 40 set ref 547* pavp parameter pointer dcl 565 ref 563 568 577 584 pfm_arg_values based structure level 1 dcl 5-57 pfm_args 112 based structure level 3 in structure "mtape_open_info" dcl 5-10 in procedure "mtape_parse_" set ref 291 291 pfm_args 36 based structure level 3 in structure "mtape_close_info" dcl 5-41 in procedure "mtape_parse_" set ref 338 338 pfm_close_options 261 based structure level 2 dcl 6-8 set ref 338 338 pfm_entries based structure level 1 dcl 1-103 pfm_info_ptr 304 based pointer level 2 dcl 1-8 ref 533 pfm_open_options 21 based structure level 2 dcl 6-8 set ref 291 291 pfm_opt_flags based structure array level 2 dcl 6-21 pfm_opt_str 12 based char(32) array level 2 in structure "pfm_arg_values" dcl 5-57 in procedure "mtape_parse_" set ref 584* pfm_opt_str 50 based char(32) array level 4 in structure "mtape_close_info" dcl 5-41 in procedure "mtape_parse_" set ref 318* pfm_opt_str 124 based char(32) array level 4 in structure "mtape_open_info" dcl 5-10 in procedure "mtape_parse_" set ref 249* pfm_opt_str_name 170 based char(32) array level 2 dcl 6-21 set ref 586* pfm_opt_sw based bit(1) array level 2 dcl 5-57 set ref 568* pfm_opt_value 5 based fixed bin(35,0) array level 2 dcl 5-57 set ref 577* pfm_opt_value_name 120 based char(32) array level 2 dcl 6-21 set ref 579* pfm_options based structure level 1 dcl 6-21 pfm_prefix 7 based char(21) level 2 dcl 3-8 set ref 117* 213 215 255 281 284 322 pop parameter pointer dcl 565 ref 563 571 572 579 586 pos_ref_name 000151 automatic varying char(32) dcl 34 set ref 505* 506 518* 519 position 35 based fixed bin(17,0) level 3 dcl 5-41 set ref 329* 331* 333* prim_ref parameter char unaligned dcl 453 ref 451 458 464 process_arguments_$argument_array 000030 constant entry external dcl 63 ref 493 process_arguments_$cv_result_to_linear_form 000034 constant entry external dcl 66 ref 295 342 373 process_arguments_$free_print_vector_array 000042 constant entry external dcl 69 ref 234 process_arguments_$get_definition 000036 constant entry external dcl 67 ref 488 process_arguments_$get_option_value 000032 constant entry external dcl 65 ref 112 117 123 148 256 326 366 568 577 584 process_arguments_$get_reference_name 000040 constant entry external dcl 68 ref 505 518 ptr 4 based pointer array level 3 dcl 14-17 ref 158 182 record_length 67 based fixed bin(35,0) level 3 dcl 5-10 set ref 256* 609 625 632 643 660 691 721 737 744 755 762 772 778 788 804 820 recording_mode 44 based char(6) level 2 dcl 5-10 set ref 248* 256* ref_pos 000362 automatic fixed bin(17,0) dcl 454 set ref 458* 459 460* 461 462* 462 464* 464 465 466 release_area_ 000046 constant entry external dcl 71 ref 232 304 346 376 replace_id 56 based char(32) level 2 dcl 5-10 set ref 248* 256* resource_info_$canonicalize_name 000020 constant entry external dcl 59 ref 163 ring 27 based bit(1) level 2 dcl 3-8 set ref 112* 209* rpvap 000204 automatic pointer dcl 35 set ref 112* 117* 123* 148* 256* 295* 326* 342* 366* 373* 493* 535* 568* 577* 584* rtrim builtin function dcl 55 ref 128 194 196 201 202 203 204 206 207 209 210 211 212 214 215 217 219 220 222 223 224 302 457 474 476 598 598 710 710 saved_name 000322 automatic char(32) unaligned dcl 392 set ref 403* 406* 417 418 419* saved_number 000332 automatic char(32) unaligned dcl 392 set ref 403* 410* 421 422* 427* saved_opt_ptr 000220 automatic pointer dcl 35 set ref 397* 398 406 443* 444 445 saved_option 1 based varying char(32) array level 2 dcl 82 set ref 406 444* saved_options based structure level 1 dcl 82 set ref 440 443 search builtin function dcl 55 ref 130 467 seq_number 73 based fixed bin(35,0) level 3 dcl 5-10 set ref 256* 422* 425 size 13 000240 automatic fixed bin(18,0) level 2 dcl 40 set ref 548* so_ptr 6 based pointer level 2 in structure "mtape_close_info" dcl 5-41 in procedure "mtape_parse_" set ref 315* 345* so_ptr 6 based pointer level 2 in structure "mtape_open_info" dcl 5-10 in procedure "mtape_parse_" set ref 244* 303* sop parameter pointer dcl 391 in procedure "OPTIMIZE_PARSE" ref 389 395 397 sop parameter pointer dcl 438 in procedure "SAVE_OPTIONS" set ref 436 440 440 445* speed 4 based bit(36) level 2 dcl 3-8 set ref 136* 136 138* 138 140* 140 205 spos 000230 automatic fixed bin(17,0) dcl 36 set ref 127* 130 133 136 138 140 142* 142 str_len 000227 automatic fixed bin(17,0) dcl 36 set ref 128* 133 substr builtin function dcl 55 set ref 130 136 138 140 151 175 194 465 467 474* 476* 476 859 871 873 sys_info$max_seg_size 000016 external static fixed bin(35,0) dcl 51 ref 548 system 26 based bit(1) level 2 dcl 3-8 set ref 112* 223* term 000235 automatic bit(1) dcl 38 set ref 126* 129 132* 176* 177 181* 404* 405 413* 415 tracks 3 based fixed bin(35,0) level 2 dcl 3-8 set ref 117* 204 ulab_name 000141 automatic char(32) unaligned dcl 33 set ref 250* 256* 269 270* 272* unload 23 based bit(1) level 2 dcl 4-8 set ref 366* 369* 369 unspec builtin function dcl 55 set ref 246* 317* 358* 543* user_label 106 based entry variable level 3 dcl 5-10 set ref 270* valid_ansi_chars 000000 constant char(56) initial unaligned dcl 885 ref 893 valid_ibm_first_chars 000021 constant char(29) initial unaligned dcl 845 ref 859 861 865 871 valid_ibm_rest_chars 000016 constant char(10) initial unaligned dcl 845 ref 861 865 value 4 based structure array level 2 dcl 14-17 vb_str based varying char(128) dcl 80 ref 158 182 vector_idx 6 based fixed bin(35,0) array level 3 dcl 14-17 ref 159 162 178 verify builtin function dcl 55 ref 465 859 861 865 871 893 version based char(8) level 2 in structure "mtape_detach_info" dcl 4-8 in procedure "mtape_parse_" set ref 359* version 000240 automatic fixed bin(17,0) level 2 in structure "ai" dcl 40 in procedure "mtape_parse_" set ref 544* version_of_area 14 000240 automatic fixed bin(17,0) level 2 dcl 40 set ref 549* vname 000101 automatic char(32) unaligned dcl 33 set ref 158* 163* 165* vol_ref_name 000173 automatic varying char(32) dcl 34 set ref 192* 194 volume_name 16 based char(32) level 2 dcl 2-9 set ref 174* 194 196 vs_current 24 based pointer level 2 dcl 1-8 set ref 172* vs_head 20 based pointer level 2 dcl 1-8 set ref 172 172* 193 vs_ptr 000266 automatic pointer dcl 2-5 set ref 170* 171 172 174 182 193* 193* 194 196* 197 vs_tail 22 based pointer level 2 dcl 1-8 set ref 170* 171* vx 000224 automatic fixed bin(17,0) dcl 36 set ref 159* 179 wait 25 based bit(1) level 2 dcl 3-8 set ref 112* 217* 218 wait_time 6 based fixed bin(35,0) level 2 dcl 3-8 set ref 117* 220 zero_on_alloc 1(01) 000240 automatic bit(1) level 3 packed unaligned dcl 40 set ref 546* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. AT_BOFD internal static fixed bin(17,0) initial dcl 9-44 AT_BOFH internal static fixed bin(17,0) initial dcl 9-44 AT_BOFT internal static fixed bin(17,0) initial dcl 9-44 AT_EOF internal static fixed bin(17,0) initial dcl 9-44 AT_EOFD internal static fixed bin(17,0) initial dcl 9-44 AT_EOFH internal static fixed bin(17,0) initial dcl 9-44 AT_EOFT internal static fixed bin(17,0) initial dcl 9-44 AT_IFD internal static fixed bin(17,0) initial dcl 9-44 BLANK_VOLUME internal static fixed bin(17,0) initial dcl 2-42 BOF_LABEL internal static fixed bin(17,0) initial dcl 9-56 CONSOLE_DTYPEX internal static fixed bin(17,0) initial dcl 10-31 DEVICE_TYPE internal static char(32) initial array unaligned dcl 10-18 DISK_DRIVE_DTYPEX internal static fixed bin(17,0) initial dcl 10-30 DISK_VOL_VTYPEX internal static fixed bin(17,0) initial dcl 10-38 Direct_input internal static fixed bin(17,0) initial dcl 13-15 Direct_output internal static fixed bin(17,0) initial dcl 13-15 Direct_update internal static fixed bin(17,0) initial dcl 13-15 EOF_LABEL internal static fixed bin(17,0) initial dcl 9-56 EOV_LABEL internal static fixed bin(17,0) initial dcl 9-56 FILES_PER_FILE_GRP internal static fixed bin(17,0) initial dcl 9-44 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 13-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 13-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 13-15 MCA_DTYPEX internal static fixed bin(17,0) initial dcl 10-36 MTAPE_ALLOC_FI internal static fixed bin(17,0) initial dcl 9-9 MTAPE_ALLOC_LR internal static fixed bin(17,0) initial dcl 9-9 MTAPE_CV_BCD internal static fixed bin(17,0) initial dcl 9-34 MTAPE_CV_EBCDIC internal static fixed bin(17,0) initial dcl 9-34 MTAPE_CV_UC_ASCII internal static fixed bin(17,0) initial dcl 9-34 MTAPE_CV_UC_EBCDIC internal static fixed bin(17,0) initial dcl 9-34 MTAPE_HWM_BCD internal static fixed bin(17,0) initial dcl 9-27 MTAPE_HWM_BIN internal static fixed bin(17,0) initial dcl 9-27 MTAPE_HWM_NINE internal static fixed bin(17,0) initial dcl 9-27 MTAPE_NO_CONVERSION internal static fixed bin(17,0) initial dcl 9-34 MTAPE_SPEED_VALUES internal static fixed bin(17,0) initial array dcl 9-22 MTAPE_UNSPECIFIED internal static fixed bin(17,0) initial dcl 9-34 MTAPE_VALID_DENSITIES internal static fixed bin(17,0) initial array dcl 9-17 MTAPE_VOLUME internal static fixed bin(17,0) initial dcl 2-42 MULT_PRIOR_VOLUME internal static fixed bin(17,0) initial dcl 2-42 NON_MULT_VOLUME internal static fixed bin(17,0) initial dcl 2-42 NOT_POSITIONED_IN_FILE internal static fixed bin(17,0) initial dcl 9-44 NUM_QUALIFIERS internal static fixed bin(17,0) initial array dcl 10-22 OPTION_VALUE_LIST_VERSION_1 internal static char(8) initial unaligned dcl 14-26 PRINTER_DTYPEX internal static fixed bin(17,0) initial dcl 10-32 PUNCH_DTYPEX internal static fixed bin(17,0) initial dcl 10-33 Q_ABORT_FILE internal static fixed bin(17,0) initial dcl 9-63 Q_INCORRECT_VOLUME internal static fixed bin(17,0) initial dcl 9-63 Q_LABELED_VOLUME internal static fixed bin(17,0) initial dcl 9-63 Q_NO_NEXT_VOLUME internal static fixed bin(17,0) initial dcl 9-63 Q_UNEXPIRED_FILE internal static fixed bin(17,0) initial dcl 9-63 Q_UNEXPIRED_VOLUME internal static fixed bin(17,0) initial dcl 9-63 READER_DTYPEX internal static fixed bin(17,0) initial dcl 10-34 RECOG_FORMAT_VOLUME internal static fixed bin(17,0) initial dcl 2-42 SPECIAL_DTYPEX internal static fixed bin(17,0) initial dcl 10-35 Sequential_input internal static fixed bin(17,0) initial dcl 13-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 13-15 Sequential_output internal static fixed bin(17,0) initial dcl 13-15 Sequential_update internal static fixed bin(17,0) initial dcl 13-15 Stream_input internal static fixed bin(17,0) initial dcl 13-15 Stream_input_output internal static fixed bin(17,0) initial dcl 13-15 Stream_output internal static fixed bin(17,0) initial dcl 13-15 TAPE_DRIVE_DTYPEX internal static fixed bin(17,0) initial dcl 10-29 Tape_volume_types internal static char(16) initial array unaligned dcl 11-29 UNLABELED_VOLUME internal static fixed bin(17,0) initial dcl 2-42 Volume_ansi_tape internal static fixed bin(17,0) initial dcl 11-15 Volume_blank internal static fixed bin(17,0) initial dcl 11-15 Volume_gcos_tape internal static fixed bin(17,0) initial dcl 11-15 Volume_ibm_tape internal static fixed bin(17,0) initial dcl 11-15 Volume_multics_tape internal static fixed bin(17,0) initial dcl 11-15 Volume_unauthenticated internal static fixed bin(17,0) initial dcl 11-15 Volume_unknown_format internal static fixed bin(17,0) initial dcl 11-15 Volume_unreadable internal static fixed bin(17,0) initial dcl 11-15 all_buf_lens based fixed bin(21,0) array dcl 1-114 all_buf_ptrs based pointer array dcl 1-113 area_infop automatic pointer dcl 12-5 es_ptr automatic pointer dcl 7-4 mtape_attach_info_version_1 internal static char(8) initial unaligned dcl 3-6 mtape_close_info_version_1 internal static char(8) initial unaligned dcl 5-8 mtape_data_version_1 internal static char(8) initial unaligned dcl 1-6 mtape_open_info_version_1 internal static char(8) initial unaligned dcl 5-7 mtape_pfm_info_version_1 internal static char(8) initial unaligned dcl 6-6 mtape_vs_version_1 internal static char(8) initial unaligned dcl 2-7 short_iox_modes internal static char(4) initial array dcl 13-12 tape_blk based char(1) array unaligned dcl 1-115 NAMES DECLARED BY EXPLICIT CONTEXT. ALLOCATE_AP_AREA 007574 constant entry internal dcl 541 ref 107 245 316 356 GET_BIN_REF_NAME 007467 constant entry internal dcl 513 ref 209 212 217 222 223 224 GET_PFM_OPTIONS 007674 constant entry internal dcl 563 ref 291 338 GET_REF_NAME 007420 constant entry internal dcl 501 ref 192 201 203 206 210 214 219 571 579 586 INSERT_STRING 007023 constant entry internal dcl 451 ref 419 427 OPTIMIZE_PARSE 006354 constant entry internal dcl 389 ref 244 315 PROC_ARGS 007267 constant entry internal dcl 482 ref 108 255 322 362 SAVE_OPTIONS 006611 constant entry internal dcl 436 ref 303 345 SETUP 007550 constant entry internal dcl 527 ref 106 242 313 355 attach 001701 constant entry external dcl 104 close 005570 constant entry external dcl 311 detach 006125 constant entry external dcl 353 mtape_parse_ 001666 constant entry external dcl 6 non_local_return 004617 constant label dcl 229 ref 155 274 282 285 430 489 494 554 open 004657 constant entry external dcl 240 valid_ANSI_open_args 011206 constant entry internal dcl 708 ref 285 valid_IBM_open_args 010212 constant entry internal dcl 596 ref 282 valid_ansi_file_name 012670 constant entry internal dcl 882 ref 710 valid_ibm_file_name 012363 constant entry internal dcl 842 ref 598 vol_end 002600 constant label dcl 186 ref 168 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 14266 14340 13762 14276 Length 15146 13762 52 571 304 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mtape_parse_ 912 external procedure is an external procedure. OPTIMIZE_PARSE internal procedure shares stack frame of external procedure mtape_parse_. SAVE_OPTIONS internal procedure shares stack frame of external procedure mtape_parse_. INSERT_STRING internal procedure shares stack frame of external procedure mtape_parse_. PROC_ARGS internal procedure shares stack frame of external procedure mtape_parse_. GET_REF_NAME internal procedure shares stack frame of external procedure mtape_parse_. GET_BIN_REF_NAME internal procedure shares stack frame of external procedure mtape_parse_. SETUP internal procedure shares stack frame of external procedure mtape_parse_. ALLOCATE_AP_AREA internal procedure shares stack frame of external procedure mtape_parse_. GET_PFM_OPTIONS internal procedure shares stack frame of external procedure mtape_parse_. valid_IBM_open_args internal procedure shares stack frame of external procedure mtape_parse_. valid_ANSI_open_args internal procedure shares stack frame of external procedure mtape_parse_. valid_ibm_file_name 79 internal procedure is called during a stack extension. valid_ansi_file_name 65 internal procedure is called during a stack extension. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mtape_parse_ 000100 code mtape_parse_ 000101 vname mtape_parse_ 000111 cname mtape_parse_ 000121 cspeed mtape_parse_ 000131 cpos mtape_parse_ 000141 ulab_name mtape_parse_ 000151 pos_ref_name mtape_parse_ 000162 neg_ref_name mtape_parse_ 000173 vol_ref_name mtape_parse_ 000204 rpvap mtape_parse_ 000206 ap_areap mtape_parse_ 000210 ad_cs_ptr mtape_parse_ 000212 def_ptr mtape_parse_ 000214 desc_ptr mtape_parse_ 000216 cvlp mtape_parse_ 000220 saved_opt_ptr mtape_parse_ 000222 i mtape_parse_ 000223 j mtape_parse_ 000224 vx mtape_parse_ 000225 nxt_vx mtape_parse_ 000226 cvx mtape_parse_ 000227 str_len mtape_parse_ 000230 spos mtape_parse_ 000231 cs mtape_parse_ 000232 all_len mtape_parse_ 000233 open_mode mtape_parse_ 000234 opn_desc_len mtape_parse_ 000235 term mtape_parse_ 000236 found_opts mtape_parse_ 000240 ai mtape_parse_ 000264 mtdp mtape_parse_ 000266 vs_ptr mtape_parse_ 000270 maip mtape_parse_ 000272 mdip mtape_parse_ 000274 moip mtape_parse_ 000276 mcip mtape_parse_ 000300 mpfmip mtape_parse_ 000302 option_value_list_ptr mtape_parse_ 000304 ovl_number_of_values mtape_parse_ 000322 saved_name OPTIMIZE_PARSE 000332 saved_number OPTIMIZE_PARSE 000342 i OPTIMIZE_PARSE 000362 ref_pos INSERT_STRING 000363 arg_start INSERT_STRING 000364 arg_len INSERT_STRING 000365 ins_str_len INSERT_STRING valid_ibm_file_name 000100 first_dot valid_ibm_file_name 000101 begin_next_dot valid_ibm_file_name 000102 next_dot valid_ibm_file_name THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp alloc_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc return_mac bound_ck_signal mdfx1 shorten_stack ext_entry ext_entry_desc int_entry_desc set_chars_eis index_chars_eis verify_eis op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_dec_check_ cv_entry_ define_area_ mtape_util_$alloc mtape_util_$error process_arguments_$argument_array process_arguments_$cv_result_to_linear_form process_arguments_$free_print_vector_array process_arguments_$get_definition process_arguments_$get_option_value process_arguments_$get_reference_name release_area_ resource_info_$canonicalize_name THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_name error_table_$inconsistent error_table_$noarg sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 28 001660 14 29 001662 6 001665 104 001674 106 001720 107 001721 108 001722 112 001741 117 002032 123 002123 125 002154 126 002156 127 002157 128 002161 129 002173 130 002176 131 002216 132 002217 133 002221 134 002225 135 002226 136 002230 138 002241 140 002251 142 002260 143 002264 148 002265 151 002323 152 002326 153 002331 155 002354 157 002355 158 002365 159 002374 160 002400 162 002406 163 002411 164 002435 165 002437 167 002467 168 002471 170 002472 171 002513 172 002516 174 002524 175 002530 176 002533 177 002534 178 002547 179 002554 181 002565 182 002567 184 002576 186 002600 191 002602 192 002610 193 002613 194 002622 196 002675 197 002743 201 002747 202 003020 203 003113 204 003165 205 003260 206 003263 207 003334 208 003401 209 003402 210 003471 211 003543 212 003636 213 003725 214 003733 215 004004 216 004052 217 004053 218 004141 219 004146 220 004217 221 004312 222 004313 223 004401 224 004471 226 004561 227 004607 229 004617 232 004623 234 004636 236 004651 240 004652 242 004676 243 004677 244 004702 245 004711 246 004712 247 004716 248 004726 249 004737 250 004755 251 004760 255 004763 256 005022 269 005246 270 005252 271 005302 272 005304 274 005334 276 005335 281 005340 282 005345 283 005352 284 005353 285 005357 291 005364 295 005374 296 005421 297 005426 298 005434 300 005437 301 005442 302 005463 303 005543 304 005552 307 005565 311 005566 313 005607 314 005610 315 005611 316 005620 317 005621 318 005625 322 005645 326 005705 329 005756 331 005767 333 005777 338 006006 342 006016 343 006043 344 006070 345 006100 346 006107 349 006122 353 006123 355 006144 356 006145 357 006146 358 006151 359 006154 360 006157 362 006162 366 006201 369 006251 373 006256 374 006303 375 006330 376 006340 379 006353 389 006354 395 006356 397 006363 398 006366 400 006374 403 006402 404 006410 405 006411 406 006423 410 006477 413 006516 414 006520 415 006522 417 006525 418 006531 419 006535 421 006544 422 006550 423 006571 425 006574 427 006601 430 006610 436 006611 440 006613 442 006625 443 006631 444 006643 445 007016 447 007022 451 007023 456 007046 457 007051 458 007066 459 007076 460 007077 461 007106 462 007110 463 007112 464 007113 465 007115 466 007135 467 007140 468 007160 470 007166 471 007170 472 007173 474 007216 475 007231 476 007232 478 007265 482 007267 487 007300 488 007305 489 007333 492 007335 493 007341 494 007414 497 007417 501 007420 505 007431 506 007457 513 007467 518 007500 519 007526 521 007541 527 007550 529 007551 530 007555 531 007557 532 007561 533 007563 534 007565 535 007567 537 007573 541 007574 543 007575 544 007600 545 007602 546 007604 547 007606 548 007611 549 007614 550 007616 551 007620 552 007632 553 007634 554 007663 556 007664 557 007666 559 007673 563 007674 567 007676 568 007703 570 007742 571 007744 572 007775 574 010002 576 010004 577 010011 579 010050 581 010103 583 010105 584 010113 586 010154 588 010207 590 010211 596 010212 598 010214 599 010255 600 010256 601 010261 603 010311 606 010317 607 010330 609 010332 610 010334 611 010337 613 010362 616 010370 618 010376 619 010403 620 010405 621 010410 623 010433 625 010441 627 010443 628 010446 630 010471 632 010477 634 010503 635 010506 637 010531 639 010537 641 010545 642 010552 643 010554 644 010564 645 010567 647 010612 650 010620 652 010626 654 010633 655 010635 656 010640 658 010666 660 010674 662 010705 663 010710 665 010733 667 010741 669 010747 670 010754 672 010761 673 010764 675 011007 677 011015 679 011023 680 011026 682 011033 683 011036 685 011061 687 011067 690 011075 691 011102 692 011104 693 011107 695 011132 697 011140 699 011146 700 011151 702 011200 708 011206 710 011210 711 011251 712 011252 713 011255 715 011305 718 011313 719 011324 721 011326 722 011330 723 011333 725 011356 728 011364 730 011372 731 011377 732 011401 733 011404 735 011427 737 011435 739 011437 740 011442 742 011465 744 011473 746 011477 747 011502 749 011525 751 011533 753 011541 754 011546 755 011550 756 011552 757 011555 759 011600 762 011606 763 011611 764 011614 766 011637 769 011645 771 011653 772 011660 773 011663 774 011666 776 011711 778 011717 779 011722 780 011725 782 011750 785 011756 787 011764 788 011771 789 011774 790 011777 792 012022 794 012030 796 012035 797 012040 799 012063 801 012071 803 012077 804 012104 805 012107 806 012112 808 012135 810 012143 812 012150 813 012153 815 012176 817 012204 819 012212 820 012217 821 012221 822 012224 824 012247 826 012255 827 012260 828 012263 830 012306 832 012314 835 012322 836 012325 838 012354 842 012362 845 012376 854 012401 855 012411 856 012417 857 012433 858 012443 859 012445 861 012462 862 012504 865 012512 866 012544 867 012556 869 012567 871 012572 873 012612 874 012630 875 012640 876 012647 877 012650 878 012660 879 012661 882 012667 890 012703 891 012713 892 012721 893 012732 894 012753 ----------------------------------------------------------- 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