COMPILATION LISTING OF SEGMENT rcprm_journal_file_ Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0939.2 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 14 rcprm_journal_file_: 15 rcprm_journal_file_attach: 16 proc (p_iocb_ptr, p_options_array, p_com_err_sw, p_code); 17 18 /* This I/O module uses vfile_ to manage an indexed file. All calls which 19* might result in a modification of the file are either journalized or 20* disallowed, depending on the call. The journal is used for both committing 21* and rolling back the file. 22* 23* This module is a special hack for RCP, so it can roll back changes to a 24* vfile_. 25* 26* Written by Lindsey Spratt 08/02/79 27* Modified 08/79 by C. D. Tavares to fix faults in commit/rollback if switch not open 28* Modified 04/83 by B. Braun to correct a problem of RQO in process_dir (phx11736 phx14452) 29* Modified 02/85 by Chris Jones to use privileges and to clean up better. 30**/ 31 /* Parameter */ 32 33 dcl p_actual_len fixed bin (21); 34 dcl p_not_used bit (1) aligned; 35 dcl p_buffer_len fixed bin (21); 36 dcl p_buffer_ptr ptr; 37 dcl p_info_ptr ptr; 38 dcl p_key char (256) varying; 39 dcl p_len fixed bin (21); 40 dcl p_open_mode fixed bin; 41 dcl p_pos_type fixed bin; 42 dcl p_skip fixed bin (21); 43 dcl p_com_err_sw bit (1); 44 dcl p_order char (*); 45 dcl p_code fixed bin (35); 46 dcl p_options_array (*) char (*) varying; 47 dcl p_iocb_ptr ptr; 48 49 /* Automatic */ 50 51 dcl area_ptr ptr; 52 dcl attach_idx fixed bin; 53 dcl attach_description char (256) varying; 54 dcl cleanup_jcb_ptr ptr; 55 dcl display_temp_str char (4096) varying; 56 dcl 1 my_area_info like area_info aligned; 57 dcl option_idx fixed bin; 58 dcl privileges_string bit (36) aligned; 59 60 /* Based */ 61 62 dcl area area (4096) based (area_ptr); 63 64 /* Builtin */ 65 66 dcl addr builtin; 67 dcl bin builtin; 68 dcl bit builtin; 69 dcl codeptr builtin; 70 dcl hbound builtin; 71 dcl length builtin; 72 dcl null builtin; 73 dcl substr builtin; 74 75 dcl cleanup condition; 76 77 /* Constant */ 78 79 dcl myname char (19) init ("rcprm_journal_file_") options (constant) internal static; 80 81 /* Controlled */ 82 /* Entry */ 83 84 dcl add_key entry (ptr, ptr, fixed bin (35)); 85 dcl delete_key entry (ptr, ptr, fixed bin (35)); 86 dcl record_status entry (ptr, ptr, fixed bin (35)); 87 dcl rollback entry (ptr, fixed bin (35)); 88 dcl write_record entry (ptr, ptr, fixed bin (21), fixed bin (35)); 89 dcl print_data entry (char (*) var, ptr, fixed bin (35)); 90 dcl define_area_ entry (ptr, fixed bin (35)); 91 dcl release_area_ entry (ptr); 92 dcl unique_chars_ entry (bit (*)) returns (char (15)); 93 dcl com_err_ entry options (variable); 94 dcl commit entry (ptr, fixed bin (35)); 95 dcl delete_record entry (ptr, fixed bin (35)); 96 dcl get_system_free_area_ entry returns (ptr); 97 dcl rcprm_registry_util_$turn_off_privs 98 entry (bit (36) aligned); 99 dcl rcprm_registry_util_$turn_on_privs 100 entry (bit (36) aligned); 101 102 /* External */ 103 104 dcl error_table_$argerr fixed bin (35) ext; 105 dcl error_table_$no_operation 106 fixed bin (35) ext; 107 dcl error_table_$locked_by_this_process 108 fixed bin (35) ext; 109 110 if hbound (p_options_array, 1) < 1 then do; 111 if p_com_err_sw then 112 call com_err_ (error_table_$argerr, myname, "no file name specified."); 113 p_code = error_table_$argerr; 114 return; 115 end; 116 attach_description = "vfile_"; 117 do option_idx = 1 to hbound (p_options_array, 1); 118 attach_description = attach_description || " " || p_options_array (option_idx); 119 end; 120 121 area_ptr = get_system_free_area_ (); 122 123 call init_for_clean_up; 124 on cleanup call clean_up; 125 126 alloc journal_control_block in (area) set (cleanup_jcb_ptr); 127 journal_control_block_ptr = cleanup_jcb_ptr; 128 129 call iox_$attach_name (unique_chars_ ("0"b) || ".jf", journal_control_block.vfile_iocb_ptr, 130 (attach_description), codeptr (rcprm_journal_file_), p_code); 131 if p_code ^= 0 then do; 132 if p_com_err_sw then 133 call com_err_ (p_code, myname, "can not attach ^a.", attach_description); 134 call clean_up; 135 return; 136 end; 137 138 my_area_info.version = 1; 139 my_area_info.extend = "1"b; 140 my_area_info.no_freeing = "1"b; 141 my_area_info.dont_free = "1"b; 142 my_area_info.owner = myname; 143 my_area_info.areap = null; 144 my_area_info.size = sys_info$max_seg_size; 145 call define_area_ (addr (my_area_info), p_code); 146 if p_code ^= 0 then do; 147 if p_com_err_sw then 148 call com_err_ (p_code, myname, "Could not get area for journal."); 149 call clean_up; 150 return; 151 end; 152 journal_control_block.journal_area_ptr = my_area_info.areap; 153 cleanup_jcb_ptr = null (); 154 p_iocb_ptr -> iocb.attach_descrip_ptr = addr (journal_control_block.attach); 155 p_iocb_ptr -> iocb.attach_data_ptr = journal_control_block_ptr; 156 p_iocb_ptr -> iocb.actual_iocb_ptr = p_iocb_ptr; 157 p_iocb_ptr -> iocb.open_descrip_ptr = null; 158 p_iocb_ptr -> iocb.open_data_ptr = null; 159 160 journal_control_block.attach = myname; 161 do attach_idx = 1 to hbound (p_options_array, 1); 162 journal_control_block.attach = journal_control_block.attach || " "; 163 journal_control_block.attach = journal_control_block.attach || p_options_array (attach_idx); 164 end; 165 166 p_iocb_ptr -> iocb.get_line = iox_$err_no_operation; 167 p_iocb_ptr -> iocb.get_chars = iox_$err_no_operation; 168 p_iocb_ptr -> iocb.put_chars = iox_$err_no_operation; 169 p_iocb_ptr -> iocb.modes = iox_$err_no_operation; 170 p_iocb_ptr -> iocb.rewrite_record = iox_$err_no_operation; 171 172 p_iocb_ptr -> iocb.detach_iocb = rcprm_journal_file_detach_iocb; 173 p_iocb_ptr -> iocb.open = rcprm_journal_file_open; 174 p_iocb_ptr -> iocb.close = iox_$err_not_open; 175 p_iocb_ptr -> iocb.control = rcprm_journal_file_control; 176 p_iocb_ptr -> iocb.seek_key = rcprm_journal_file_seek_key; 177 p_iocb_ptr -> iocb.write_record = rcprm_journal_file_write_record; 178 p_iocb_ptr -> iocb.read_record = rcprm_journal_file_read_record; 179 p_iocb_ptr -> iocb.delete_record = rcprm_journal_file_delete_record; 180 p_iocb_ptr -> iocb.read_key = rcprm_journal_file_read_key; 181 p_iocb_ptr -> iocb.read_length = rcprm_journal_file_read_length; 182 p_iocb_ptr -> iocb.position = rcprm_journal_file_position; 183 184 journal_control_block.latest_entry_ptr = null; 185 p_code = 0; 186 return; 187 188 rcprm_journal_file_control: 189 entry (p_iocb_ptr, p_order, p_info_ptr, p_code); 190 191 journal_control_block_ptr = p_iocb_ptr -> iocb.open_data_ptr; 192 call init_for_clean_up; 193 on cleanup call clean_up; 194 195 call rcprm_registry_util_$turn_on_privs (privileges_string); 196 if p_order = "io_call" then do; 197 io_call_infop = p_info_ptr; 198 if io_call_info.order_name = "commit" | io_call_info.order_name = "rollback" then do; 199 p_code = error_table_$no_operation; 200 return; 201 end; 202 else if io_call_info.order_name = "record_status" | io_call_info.order_name = "rs" then do; 203 area_ptr = get_system_free_area_ (); 204 205 alloc rs_info in (area); 206 rs_info.version = rs_info_version_2; 207 if nargs ^= 0 then do; 208 rs_info.lock_sw = bit (substr (io_call_info.args (1), 1, 1), 1); 209 rs_info.unlock_sw = bit (substr (io_call_info.args (1), 2, 1), 1); 210 rs_info.create_sw = bit (substr (io_call_info.args (1), 3, 1), 1); 211 rs_info.locate_sw = bit (substr (io_call_info.args (1), 4, 1), 1); 212 rs_info.inc_ref_count = bit (substr (io_call_info.args (1), 5, 1), 1); 213 rs_info.dec_ref_count = bit (substr (io_call_info.args (1), 6, 1), 1); 214 rs_info.locate_pos_sw = bit (substr (io_call_info.args (1), 7, 1), 1); 215 end; 216 if nargs = 2 then 217 rs_info.descriptor = bin (io_call_info.args (2), 35); 218 call record_status (journal_control_block_ptr, rs_info_ptr, p_code); 219 220 put string (display_temp_str) data (rs_info); 221 alloc print_data_info in (area); 222 print_data_info.version = print_data_info_version_1; 223 print_data_info.indentation = 1; 224 print_data_info.value_column = 40; 225 print_data_info.output_switch = null; 226 print_data_info.octal = "0"b; 227 print_data_info.intervals = ""; 228 call print_data (display_temp_str, print_data_info_ptr, p_code); 229 end; 230 else if io_call_info.order_name = "add_key" | io_call_info.order_name = "ak" then do; 231 area_ptr = get_system_free_area_ (); 232 ak_key_len = 256; 233 alloc ak_info in (area); 234 ak_info.input_key = bit (substr (io_call_info.args (1), 1, 1), 1); 235 ak_info.input_desc = bit (substr (io_call_info.args (1), 2, 1), 1); 236 if ak_info.input_key then do; 237 ak_info.key_len = length (io_call_info.args (2)); 238 ak_info.key = io_call_info.args (2); 239 if ak_info.input_desc then 240 ak_info.descrip = bin (io_call_info.args (3), 35); 241 end; 242 else if ak_info.input_desc then 243 ak_info.descrip = bin (io_call_info.args (2), 35); 244 call add_key (journal_control_block_ptr, ak_info_ptr, p_code); 245 if ak_info_ptr ^= null then 246 ak_info.key_len = ak_key_len; 247 248 end; 249 else if io_call_info.order_name = "delete_key" | io_call_info.order_name = "dk" then do; 250 if nargs = 0 then 251 ak_info_ptr = null; 252 else do; 253 area_ptr = get_system_free_area_ (); 254 ak_key_len = 256; 255 alloc ak_info in (area); 256 ak_info.input_key = bit (substr (io_call_info.args (1), 1, 1), 1); 257 ak_info.input_desc = bit (substr (io_call_info.args (1), 2, 1), 1); 258 if ak_info.input_key then do; 259 ak_info.key_len = length (io_call_info.args (2)); 260 ak_info.key = io_call_info.args (2); 261 if ak_info.input_desc then 262 ak_info.descrip = bin (io_call_info.args (3), 35); 263 end; 264 else if ak_info.input_desc then 265 ak_info.descrip = bin (io_call_info.args (2), 35); 266 end; 267 call delete_key (journal_control_block_ptr, ak_info_ptr, p_code); 268 if ak_info_ptr ^= null then 269 ak_info.key_len = ak_key_len; 270 end; 271 else call iox_$control (journal_control_block.vfile_iocb_ptr, "io_call", io_call_infop, p_code); 272 end; 273 else if p_order = "record_status" | p_order = "rs" then 274 call record_status (journal_control_block_ptr, p_info_ptr, p_code); 275 else if p_order = "add_key" | p_order = "ak" then 276 call add_key (journal_control_block_ptr, p_info_ptr, p_code); 277 else if p_order = "delete_key" | p_order = "dk" then 278 call delete_key (journal_control_block_ptr, p_info_ptr, p_code); 279 else if p_order = "get_key" | p_order = "gk" then 280 call iox_$control (journal_control_block.vfile_iocb_ptr, p_order, p_info_ptr, p_code); 281 else if p_order = "seek_head" | p_order = "sh" then 282 call iox_$control (journal_control_block.vfile_iocb_ptr, p_order, p_info_ptr, p_code); 283 else if p_order = "rollback" then 284 if p_iocb_ptr -> iocb.open_data_ptr ^= null /* switch is open */ 285 then 286 call rollback (journal_control_block_ptr, p_code); 287 else p_code = 0; 288 else if p_order = "commit" then 289 if p_iocb_ptr -> iocb.open_data_ptr ^= null /* switch is open */ 290 then 291 call commit (journal_control_block_ptr, p_code); 292 else p_code = 0; 293 else p_code = error_table_$argerr; 294 if p_code = error_table_$locked_by_this_process then 295 p_code = 0; 296 call clean_up; 297 return; 298 299 rcprm_journal_file_write_record: 300 entry (p_iocb_ptr, p_buffer_ptr, p_buffer_len, p_code); 301 302 journal_control_block_ptr = p_iocb_ptr -> iocb.attach_data_ptr; 303 call write_record (journal_control_block_ptr, p_buffer_ptr, p_buffer_len, p_code); 304 if p_code = error_table_$locked_by_this_process then 305 p_code = 0; 306 return; 307 308 309 rcprm_journal_file_delete_record: 310 entry (p_iocb_ptr, p_code); 311 312 journal_control_block_ptr = p_iocb_ptr -> iocb.attach_data_ptr; 313 call delete_record (journal_control_block_ptr, p_code); 314 if p_code = error_table_$locked_by_this_process then 315 p_code = 0; 316 return; 317 318 319 rcprm_journal_file_seek_key: 320 entry (p_iocb_ptr, p_key, p_len, p_code); 321 322 journal_control_block_ptr = p_iocb_ptr -> iocb.attach_data_ptr; 323 call iox_$seek_key (journal_control_block.vfile_iocb_ptr, p_key, p_len, p_code); 324 if p_code = error_table_$locked_by_this_process then 325 p_code = 0; 326 return; 327 328 329 rcprm_journal_file_read_record: 330 entry (p_iocb_ptr, p_buffer_ptr, p_buffer_len, p_actual_len, p_code); 331 332 journal_control_block_ptr = p_iocb_ptr -> iocb.attach_data_ptr; 333 call iox_$read_record (journal_control_block.vfile_iocb_ptr, p_buffer_ptr, p_buffer_len, p_actual_len, p_code); 334 if p_code = error_table_$locked_by_this_process then 335 p_code = 0; 336 return; 337 338 339 rcprm_journal_file_read_length: 340 entry (p_iocb_ptr, p_len, p_code); 341 342 journal_control_block_ptr = p_iocb_ptr -> iocb.attach_data_ptr; 343 call iox_$read_length (journal_control_block.vfile_iocb_ptr, p_len, p_code); 344 if p_code = error_table_$locked_by_this_process then 345 p_code = 0; 346 return; 347 348 349 rcprm_journal_file_read_key: 350 entry (p_iocb_ptr, p_key, p_len, p_code); 351 352 journal_control_block_ptr = p_iocb_ptr -> iocb.attach_data_ptr; 353 call iox_$read_key (journal_control_block.vfile_iocb_ptr, p_key, p_len, p_code); 354 if p_code = error_table_$locked_by_this_process then 355 p_code = 0; 356 return; 357 358 359 rcprm_journal_file_close: 360 entry (p_iocb_ptr, p_code); 361 362 journal_control_block_ptr = p_iocb_ptr -> iocb.attach_data_ptr; 363 call iox_$close (journal_control_block.vfile_iocb_ptr, p_code); 364 if p_code = 0 | p_code = error_table_$locked_by_this_process then do; 365 p_iocb_ptr -> iocb.close = iox_$err_not_open; 366 p_iocb_ptr -> iocb.detach_iocb = rcprm_journal_file_detach_iocb; 367 p_iocb_ptr -> iocb.open_data_ptr = null; 368 p_iocb_ptr -> iocb.open_descrip_ptr = null; 369 p_code = 0; 370 end; 371 return; 372 373 374 rcprm_journal_file_detach_iocb: 375 entry (p_iocb_ptr, p_code); 376 377 journal_control_block_ptr = p_iocb_ptr -> iocb.attach_data_ptr; 378 call iox_$detach_iocb (journal_control_block.vfile_iocb_ptr, p_code); 379 if p_code = 0 | p_code = error_table_$locked_by_this_process then do; 380 call iox_$destroy_iocb (journal_control_block.vfile_iocb_ptr, (0)); 381 p_code = 0; 382 call release_area_ (journal_control_block.journal_area_ptr); 383 area_ptr = get_system_free_area_ (); 384 free journal_control_block; 385 p_iocb_ptr -> iocb.attach_data_ptr = null; 386 p_iocb_ptr -> iocb.attach_descrip_ptr = null; 387 p_iocb_ptr -> iocb.open = iox_$err_not_attached; 388 p_iocb_ptr -> iocb.detach_iocb = iox_$err_not_attached; 389 end; 390 return; 391 392 393 rcprm_journal_file_position: 394 entry (p_iocb_ptr, p_pos_type, p_skip, p_code); 395 396 journal_control_block_ptr = p_iocb_ptr -> iocb.attach_data_ptr; 397 call iox_$position (journal_control_block.vfile_iocb_ptr, p_pos_type, p_skip, p_code); 398 if p_code = error_table_$locked_by_this_process then 399 p_code = 0; 400 return; 401 402 403 rcprm_journal_file_open: 404 entry (p_iocb_ptr, p_open_mode, p_not_used, p_code); 405 406 journal_control_block_ptr = p_iocb_ptr -> iocb.attach_data_ptr; 407 call iox_$open (journal_control_block.vfile_iocb_ptr, p_open_mode, p_not_used, p_code); 408 if p_code = 0 | p_code = error_table_$locked_by_this_process then do; 409 p_code = 0; 410 p_iocb_ptr -> iocb.close = rcprm_journal_file_close; 411 p_iocb_ptr -> iocb.detach_iocb = iox_$err_not_closed; 412 p_iocb_ptr -> iocb.open_data_ptr = journal_control_block_ptr; 413 journal_control_block.open_desc = iox_modes (p_open_mode); 414 p_iocb_ptr -> iocb.open_descrip_ptr = addr (journal_control_block.open_desc); 415 end; 416 return; 417 418 init_for_clean_up: 419 proc; 420 421 cleanup_jcb_ptr, rs_info_ptr, print_data_info_ptr, ak_info_ptr = null (); 422 privileges_string = ""b; 423 424 end init_for_clean_up; 425 426 clean_up: 427 proc; 428 429 if cleanup_jcb_ptr ^= null () then 430 free cleanup_jcb_ptr -> journal_control_block; 431 if rs_info_ptr ^= null () then 432 free rs_info; 433 if print_data_info_ptr ^= null () then 434 free print_data_info; 435 if ak_info_ptr ^= null () then 436 free ak_info; 437 call rcprm_registry_util_$turn_off_privs (privileges_string); 438 439 end clean_up; 440 1 1 /* BEGIN INCLUDE FILE journal_control_block.incl.pl1 */ 1 2 1 3 dcl sys_info$max_seg_size fixed bin (24) ext; 1 4 1 5 dcl journal_control_block_ptr 1 6 ptr; 1 7 dcl 1 journal_control_block 1 8 aligned based (journal_control_block_ptr), 1 9 2 attach char (128) var, 1 10 2 open_desc char (128) var, 1 11 2 vfile_iocb_ptr ptr, 1 12 2 latest_entry_ptr ptr, 1 13 2 journal_area_ptr ptr; 1 14 1 15 dcl journal_area area (sys_info$max_seg_size) based (journal_control_block.journal_area_ptr) aligned; 1 16 1 17 1 18 /* END INCLUDE FILE journal_control_block.incl.pl1 */ 441 442 2 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 2 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 2 3* version number to IOX2. */ 2 4 /* format: style2 */ 2 5 2 6 dcl 1 iocb aligned based, /* I/O control block. */ 2 7 2 version character (4) aligned, /* IOX2 */ 2 8 2 name char (32), /* I/O name of this block. */ 2 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 2 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 2 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 2 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 2 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 2 14 2 reserved bit (72), /* Reserved for future use. */ 2 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 2 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 2 17 /* open(p,mode,not_used,s) */ 2 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 2 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 2 20 /* get_line(p,bufptr,buflen,actlen,s) */ 2 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 2 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 2 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 2 24 /* put_chars(p,bufptr,buflen,s) */ 2 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 2 26 /* modes(p,newmode,oldmode,s) */ 2 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 2 28 /* position(p,u1,u2,s) */ 2 29 2 control entry (ptr, char (*), ptr, fixed (35)), 2 30 /* control(p,order,infptr,s) */ 2 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 2 32 /* read_record(p,bufptr,buflen,actlen,s) */ 2 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 2 34 /* write_record(p,bufptr,buflen,s) */ 2 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 2 36 /* rewrite_record(p,bufptr,buflen,s) */ 2 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 2 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 2 39 /* seek_key(p,key,len,s) */ 2 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 2 41 /* read_key(p,key,len,s) */ 2 42 2 read_length entry (ptr, fixed (21), fixed (35)), 2 43 /* read_length(p,len,s) */ 2 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 2 45 /* open_file(p,mode,desc,not_used,s) */ 2 46 2 close_file entry (ptr, char (*), fixed bin (35)), 2 47 /* close_file(p,desc,s) */ 2 48 2 detach entry (ptr, char (*), fixed bin (35)); 2 49 /* detach(p,desc,s) */ 2 50 2 51 declare iox_$iocb_version_sentinel 2 52 character (4) aligned external static; 2 53 2 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 443 444 3 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 3 2 3 3 /* Written 05/04/78 by C. D. Tavares */ 3 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 3 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 3 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 3 7 3 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 3 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 3 10 iox_$close entry (pointer, fixed bin (35)), 3 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 3 12 iox_$delete_record entry (pointer, fixed bin (35)), 3 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 3 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 3 15 iox_$err_not_attached entry options (variable), 3 16 iox_$err_not_closed entry options (variable), 3 17 iox_$err_no_operation entry options (variable), 3 18 iox_$err_not_open entry options (variable), 3 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 3 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 3 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 3 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 3 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 3 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 3 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 3 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 3 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 3 28 iox_$propagate entry (pointer), 3 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 3 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 3 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 3 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 3 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 3 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 3 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 3 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 3 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 3 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 3 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 3 40 3 41 dcl (iox_$user_output, 3 42 iox_$user_input, 3 43 iox_$user_io, 3 44 iox_$error_output) external static pointer; 3 45 3 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 445 446 4 1 /* Begin include file ..... iox_modes.incl.pl1 */ 4 2 4 3 /* Written by C. D. Tavares, 03/17/75 */ 4 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 4 5 4 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 4 7 ("stream_input", "stream_output", "stream_input_output", 4 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 4 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 4 10 "direct_input", "direct_output", "direct_update"); 4 11 4 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 4 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 4 14 4 15 dcl (Stream_input initial (1), 4 16 Stream_output initial (2), 4 17 Stream_input_output initial (3), 4 18 Sequential_input initial (4), 4 19 Sequential_output initial (5), 4 20 Sequential_input_output initial (6), 4 21 Sequential_update initial (7), 4 22 Keyed_sequential_input initial (8), 4 23 Keyed_sequential_output initial (9), 4 24 Keyed_sequential_update initial (10), 4 25 Direct_input initial (11), 4 26 Direct_output initial (12), 4 27 Direct_update initial (13)) fixed bin int static options (constant); 4 28 4 29 /* End include file ..... iox_modes.incl.pl1 */ 447 448 5 1 /* Begin include file ..... io_call_info.incl.pl1 */ 5 2 5 3 /* This include file defines the info_structure used by an I/O module to perform an "io_call" order 5 4* on behalf of the io_call command. */ 5 5 /* Coded April 1976 by Larry Johnson */ 5 6 /* Changed June 1977 by Larry Johnson for "io_call_af" order */ 5 7 5 8 dcl io_call_infop ptr; 5 9 5 10 dcl 1 io_call_info aligned based (io_call_infop), 5 11 2 version fixed bin, 5 12 2 caller_name char (32), /* Caller name for error messages */ 5 13 2 order_name char (32), /* Actual name of the order to be performed */ 5 14 2 report entry variable options (variable), 5 15 /* Entry to ioa_ like procedure to report results */ 5 16 2 error entry variable options (variable), 5 17 /* Entry to com_err_ like procedure to report results */ 5 18 2 af_returnp ptr, /* Pointer to return string if "io_call_af" order */ 5 19 2 af_returnl fixed bin, /* Length of string */ 5 20 2 fill (5) bit (36) aligned, 5 21 2 nargs fixed bin, /* Number of additional command arguments provided */ 5 22 2 max_arglen fixed bin, /* Length of longest argument (used to define array) */ 5 23 2 args (0 refer (io_call_info.nargs)) char (0 refer (io_call_info.max_arglen)) varying; 5 24 5 25 dcl io_call_af_ret char (io_call_info.af_returnl) based (io_call_info.af_returnp) varying; 5 26 /* Return string for active function */ 5 27 5 28 /* End include file ..... io_call_info.incl.pl1 */ 449 450 6 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 6 2 6 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 6 4 6 5 dcl area_infop ptr; 6 6 6 7 dcl 1 area_info aligned based (area_infop), 6 8 2 version fixed bin, /* version number for this structure is 1 */ 6 9 2 control aligned like area_control, /* control bits for the area */ 6 10 2 owner char (32) unal, /* creator of the area */ 6 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 6 12 2 size fixed bin (18), /* size of the area in words */ 6 13 2 version_of_area fixed bin, /* version of area (returned only) */ 6 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 6 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 6 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 6 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 6 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 6 19 6 20 dcl 1 area_control aligned based, 6 21 2 extend bit (1) unal, /* says area is extensible */ 6 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 6 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 6 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 6 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 6 26 2 system bit (1) unal, /* says area is managed by system */ 6 27 2 pad bit (30) unal; 6 28 6 29 /* END INCLUDE FILE area_info.incl.pl1 */ 451 452 7 1 /* include file for info structure used with record_status control order 7 2* created by M. Asherman 1/6/76 */ 7 3 /* modified 6/15/77 to support stationary type records */ 7 4 7 5 dcl rs_info_ptr ptr; 7 6 dcl 1 rs_info based (rs_info_ptr) aligned, 7 7 2 version fixed, /* must be set to 1 or 2 (Input) */ 7 8 2 flags aligned, 7 9 3 lock_sw bit (1) unal, /* Input -- if ="1"b try to lock record */ 7 10 3 unlock_sw bit (1) unal, /* Input -- if ="1"b try to unlock record */ 7 11 3 create_sw bit (1) unal, /* Input--if set creat new record */ 7 12 3 locate_sw bit (1) unal, /* Input--if set causes current rec to be 7 13* located outside the index by descrip, or created without key */ 7 14 3 inc_ref_count bit (1) unal, /* Input--bump reference count of record, if stationary */ 7 15 3 dec_ref_count bit (1) unal, /* Input--decrement ref count if this flag set and record stationary */ 7 16 3 locate_pos_sw bit (1) unal, /* Input--if set the record_length is taken 7 17* as an input argument specifying the absolute logical record positioni to which both the current and next positions will be set */ 7 18 3 mbz1 bit (29) unal, /* must be set to "0"b, reserved for future use */ 7 19 2 record_length fixed (21), /* length in bytes, Input if create_sw set */ 7 20 2 max_rec_len fixed (21), /* max length of contained record 7 21* Input if create_sw is set--overrides min_block_size in effect */ 7 22 2 record_ptr ptr, /* points to first byte of record--will be word aligned */ 7 23 2 descriptor fixed (35), /* Input if locate_sw set and create_sw="0"b */ 7 24 2 ref_count fixed (34), /* Output--should match number of keys on this record-- = -1 if non-stationary record */ 7 25 2 time_last_modified fixed (71), /* Output */ 7 26 2 modifier fixed (35), /* Output--also Input when locking */ 7 27 2 block_ptr ptr unal, /* Output */ 7 28 2 last_image_modifier 7 29 fixed (35), 7 30 2 mbz2 fixed; 7 31 7 32 dcl 1 rs_desc based (addr (rs_info.descriptor)), 7 33 /* record block descriptor structure */ 7 34 2 comp_num fixed (17) unal, /* msf component number */ 7 35 2 offset bit (18) unal; /* word offset of record block */ 7 36 7 37 dcl 1 seq_desc based (addr (rs_info.descriptor)), 7 38 /* for sequential files */ 7 39 2 bitno bit (6) unal, 7 40 2 comp_num fixed (11) unal, /* msf component number */ 7 41 2 wordno bit (18) unal; /* word offset */ 7 42 7 43 dcl rs_info_version_1 static internal fixed init (1); 7 44 dcl rs_info_version_2 static internal fixed init (2); 7 45 453 454 8 1 /* ak_info -- include file for info structures used by the following vfile_ 8 2* control orders: "add_key", "delete_key", "get_key", and "reassign_key". 8 3* Created by M. Asherman 3/23/76 8 4* Modified 5/13/77 to add separate gk_info structure */ 8 5 8 6 dcl 1 ak_info based (ak_info_ptr), 8 7 2 header like ak_header, 8 8 2 key char (ak_key_len refer (ak_info.header.key_len)); 8 9 8 10 dcl 1 ak_header based (ak_info_ptr), 8 11 2 flags aligned, 8 12 3 input_key bit (1) unal, /* set if key is input arg */ 8 13 3 input_desc bit (1) unal, /* set if descriptor is an input arg */ 8 14 3 mbz bit (34) unal, /* not used for the present */ 8 15 2 descrip fixed (35), /* record designator */ 8 16 2 key_len fixed; 8 17 8 18 dcl ak_info_ptr ptr; 8 19 dcl ak_key_len fixed; 8 20 8 21 8 22 dcl 1 rk_info based (rk_info_ptr), 8 23 2 header like rk_header, 8 24 2 key char (rk_key_len refer (rk_info.header.key_len)); 8 25 8 26 dcl 1 rk_header based (rk_info_ptr), 8 27 2 flags aligned, 8 28 3 input_key bit (1) unal, /* same as above */ 8 29 3 input_old_desc bit (1) unal, /* set if specified entry has initial descrip 8 30* given by old_descrip */ 8 31 3 input_new_desc bit (1) unal, /* set if new val for descrip is input in this struc */ 8 32 3 mbz bit (33) unal, 8 33 2 old_descrip fixed (35), /* used if first flag is set */ 8 34 2 new_descrip fixed (35), /* used only if second flag is set */ 8 35 2 key_len fixed; 8 36 8 37 dcl rk_info_ptr ptr; 8 38 dcl rk_key_len fixed; 8 39 8 40 8 41 dcl 1 gk_info based (gk_info_ptr), /* structure for get_key order */ 8 42 2 header like gk_header, 8 43 2 key char (gk_key_len refer (gk_info.header.key_len)); 8 44 /* may be Input as well as Output */ 8 45 8 46 dcl 1 gk_header based (gk_info_ptr), 8 47 2 flags aligned, 8 48 3 input_key bit (1) unal, /* if set, use key in this structure */ 8 49 3 input_desc bit (1) unal, /* if set, descriptor given in this structure */ 8 50 3 desc_code fixed (2) unal, /* 0=any, 1=current -- applies when input_desc="0"b */ 8 51 3 position_specification 8 52 unal, 8 53 4 current bit (1) unal, /* otherwise next */ 8 54 4 rel_type fixed (2) unal, /* as in seek_head, if input_key = "1"b */ 8 55 4 head_size fixed bin (9) unsigned unaligned, 8 56 /* size of head for initial seek */ 8 57 3 reset_pos bit (1) unal, /* if set, final position unchanged by this operation */ 8 58 3 pad bit (8) unal, 8 59 3 version fixed (8) unal, 8 60 2 descrip fixed (35), /* Output, except when input_desc="1"b */ 8 61 2 key_len fixed; /* Input when input_key="1"b, also Output in all cases */ 8 62 8 63 dcl gk_info_ptr ptr; 8 64 dcl gk_key_len fixed; 8 65 8 66 dcl gk_info_version_0 internal static fixed options (constant) init (0); 8 67 8 68 /* end ak_info.incl.pl1 */ 455 456 9 1 /* BEGIN INCLUDE FILE -- print_data_info.incl.pl1 */ 9 2 9 3 /* DESCRIPTION: 9 4* This structure is used by print_data to set various parameters 9 5* controlling the format of the output it produces. 9 6* 9 7*/* HISTORY: 9 8* 9 9*Written by Lindsey L. Spratt, 06/05/79. 9 10*Modified: 9 11*02/08/85 by Lindsey L. Spratt: Fixed the HISTORY and DESCRIPTION sections. 9 12**/ 9 13 9 14 /* format: style3,idind30,indcomtxt */ 9 15 dcl print_data_info_version_1 fixed bin options (constant) init (1) internal static; 9 16 9 17 dcl print_data_info_ptr ptr; 9 18 dcl 1 print_data_info based (print_data_info_ptr), 9 19 2 version fixed bin, 9 20 2 indentation fixed bin, /* This sets the number of spaces by which structure level names are indented. */ 9 21 2 value_column fixed bin, /* This is the column in which the printing of values begins. */ 9 22 2 output_switch ptr, /* If null, user_output is used. */ 9 23 2 flags, 9 24 3 octal bit (1) unal, /* Convert bit strings to octal. */ 9 25 3 hex bit (1) unal, /* hex, ditto */ 9 26 3 pad bit (34) unaligned, 9 27 2 intervals char (256) varying; 9 28 9 29 /* End include file print_data_info.incl.pl1 */ 457 458 459 end rcprm_journal_file_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0806.0 rcprm_journal_file_.pl1 >spec>install>1111>rcprm_journal_file_.pl1 441 1 02/11/80 1426.1 journal_control_block.incl.pl1 >ldd>include>journal_control_block.incl.pl1 443 2 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 445 3 05/23/83 0916.6 iox_dcls.incl.pl1 >ldd>include>iox_dcls.incl.pl1 447 4 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 449 5 07/19/79 1547.1 io_call_info.incl.pl1 >ldd>include>io_call_info.incl.pl1 451 6 06/11/76 1043.4 area_info.incl.pl1 >ldd>include>area_info.incl.pl1 453 7 07/19/79 1547.0 rs_info.incl.pl1 >ldd>include>rs_info.incl.pl1 455 8 07/19/79 1547.0 ak_info.incl.pl1 >ldd>include>ak_info.incl.pl1 457 9 03/06/85 1031.4 print_data_info.incl.pl1 >ldd>include>print_data_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. actual_iocb_ptr 12 based pointer level 2 dcl 2-6 set ref 156* add_key 000014 constant entry external dcl 84 ref 244 275 addr builtin function dcl 66 ref 145 145 154 414 ak_header based structure level 1 unaligned dcl 8-10 ak_info based structure level 1 unaligned dcl 8-6 set ref 233 255 435 ak_info_ptr 002254 automatic pointer dcl 8-18 set ref 233* 234 235 236 237 238 239 239 242 242 244* 245 245 250* 255* 256 257 258 259 260 261 261 264 264 267* 268 268 421* 435 435 ak_key_len 002256 automatic fixed bin(17,0) dcl 8-19 set ref 232* 233 233 245 254* 255 255 268 area based area(4096) dcl 62 ref 126 205 221 233 255 area_control based structure level 1 dcl 6-20 area_info based structure level 1 dcl 6-7 area_ptr 000100 automatic pointer dcl 51 set ref 121* 126 203* 205 221 231* 233 253* 255 383* areap 16 002210 automatic pointer level 2 dcl 56 set ref 143* 152 args 44 based varying char array level 2 dcl 5-10 ref 208 209 210 211 212 213 214 216 234 235 237 238 239 242 256 257 259 260 261 264 attach based varying char(128) level 2 dcl 1-7 set ref 154 160* 162* 162 163* 163 attach_data_ptr 16 based pointer level 2 dcl 2-6 set ref 155* 302 312 322 332 342 352 362 377 385* 396 406 attach_descrip_ptr 14 based pointer level 2 dcl 2-6 set ref 154* 386* attach_description 000103 automatic varying char(256) dcl 53 set ref 116* 118* 118 129 132* attach_idx 000102 automatic fixed bin(17,0) dcl 52 set ref 161* 163* bin builtin function dcl 67 ref 216 239 242 261 264 bit builtin function dcl 68 ref 208 209 210 211 212 213 214 234 235 256 257 cleanup 002236 stack reference condition dcl 75 ref 124 193 cleanup_jcb_ptr 000204 automatic pointer dcl 54 set ref 126* 127 153* 421* 429 429 close 36 based entry variable level 2 dcl 2-6 set ref 174* 365* 410* codeptr builtin function dcl 69 ref 129 129 com_err_ 000036 constant entry external dcl 93 ref 111 132 147 commit 000040 constant entry external dcl 94 ref 288 control 66 based entry variable level 2 in structure "iocb" dcl 2-6 in procedure "rcprm_journal_file_attach" set ref 175* control 1 002210 automatic structure level 2 in structure "my_area_info" dcl 56 in procedure "rcprm_journal_file_attach" create_sw 1(02) based bit(1) level 3 packed packed unaligned dcl 7-6 set ref 210* dec_ref_count 1(05) based bit(1) level 3 packed packed unaligned dcl 7-6 set ref 213* define_area_ 000030 constant entry external dcl 90 ref 145 delete_key 000016 constant entry external dcl 85 ref 267 277 delete_record 106 based entry variable level 2 in structure "iocb" dcl 2-6 in procedure "rcprm_journal_file_attach" set ref 179* delete_record 000042 constant entry external dcl 95 in procedure "rcprm_journal_file_attach" ref 313 descrip 1 based fixed bin(35,0) level 3 dcl 8-6 set ref 239* 242* 261* 264* descriptor 6 based fixed bin(35,0) level 2 dcl 7-6 set ref 216* detach_iocb 26 based entry variable level 2 dcl 2-6 set ref 172* 366* 388* 411* display_temp_str 000206 automatic varying char(4096) dcl 55 set ref 220* 228* dont_free 1(03) 002210 automatic bit(1) level 3 packed packed unaligned dcl 56 set ref 141* error_table_$argerr 000052 external static fixed bin(35,0) dcl 104 set ref 111* 113 293 error_table_$locked_by_this_process 000056 external static fixed bin(35,0) dcl 107 ref 294 304 314 324 334 344 354 364 379 398 408 error_table_$no_operation 000054 external static fixed bin(35,0) dcl 105 ref 199 extend 1 002210 automatic bit(1) level 3 packed packed unaligned dcl 56 set ref 139* flags 6 based structure level 2 in structure "print_data_info" packed packed unaligned dcl 9-18 in procedure "rcprm_journal_file_attach" flags based structure level 3 in structure "ak_info" dcl 8-6 in procedure "rcprm_journal_file_attach" flags 1 based structure level 2 in structure "rs_info" dcl 7-6 in procedure "rcprm_journal_file_attach" get_chars 46 based entry variable level 2 dcl 2-6 set ref 167* get_line 42 based entry variable level 2 dcl 2-6 set ref 166* get_system_free_area_ 000044 constant entry external dcl 96 ref 121 203 231 253 383 gk_header based structure level 1 unaligned dcl 8-46 hbound builtin function dcl 70 ref 110 117 161 header based structure level 2 unaligned dcl 8-6 inc_ref_count 1(04) based bit(1) level 3 packed packed unaligned dcl 7-6 set ref 212* indentation 1 based fixed bin(17,0) level 2 dcl 9-18 set ref 223* input_desc 0(01) based bit(1) level 4 packed packed unaligned dcl 8-6 set ref 235* 239 242 257* 261 264 input_key based bit(1) level 4 packed packed unaligned dcl 8-6 set ref 234* 236 256* 258 intervals 7 based varying char(256) level 2 dcl 9-18 set ref 227* io_call_info based structure level 1 dcl 5-10 io_call_infop 002246 automatic pointer dcl 5-8 set ref 197* 198 198 202 202 207 208 209 210 211 212 213 214 216 216 230 230 234 235 237 238 239 242 249 249 250 256 257 259 260 261 264 271* iocb based structure level 1 dcl 2-6 iox_$attach_name 000064 constant entry external dcl 3-8 ref 129 iox_$close 000066 constant entry external dcl 3-8 ref 363 iox_$control 000070 constant entry external dcl 3-8 ref 271 279 281 iox_$destroy_iocb 000072 constant entry external dcl 3-8 ref 380 iox_$detach_iocb 000074 constant entry external dcl 3-8 ref 378 iox_$err_no_operation 000102 constant entry external dcl 3-8 ref 166 167 168 169 170 iox_$err_not_attached 000076 constant entry external dcl 3-8 ref 387 388 iox_$err_not_closed 000100 constant entry external dcl 3-8 ref 411 iox_$err_not_open 000104 constant entry external dcl 3-8 ref 174 365 iox_$open 000106 constant entry external dcl 3-8 ref 407 iox_$position 000110 constant entry external dcl 3-8 ref 397 iox_$read_key 000112 constant entry external dcl 3-8 ref 353 iox_$read_length 000114 constant entry external dcl 3-8 ref 343 iox_$read_record 000116 constant entry external dcl 3-8 ref 333 iox_$seek_key 000120 constant entry external dcl 3-8 ref 323 iox_modes 000000 constant char(24) initial array dcl 4-6 ref 413 journal_area_ptr 106 based pointer level 2 dcl 1-7 set ref 152* 382* journal_control_block based structure level 1 dcl 1-7 set ref 126 384 429 journal_control_block_ptr 002244 automatic pointer dcl 1-5 set ref 127* 129 152 154 155 160 162 162 163 163 184 191* 218* 244* 267* 271 273* 275* 277* 279 281 283* 288* 302* 303* 312* 313* 322* 323 332* 333 342* 343 352* 353 362* 363 377* 378 380 382 384 396* 397 406* 407 412 413 414 key 3 based char level 2 packed packed unaligned dcl 8-6 set ref 238* 260* key_len 2 based fixed bin(17,0) level 3 dcl 8-6 set ref 233* 237* 238 245* 255* 259* 260 268* 435 latest_entry_ptr 104 based pointer level 2 dcl 1-7 set ref 184* length builtin function dcl 71 ref 237 259 locate_pos_sw 1(06) based bit(1) level 3 packed packed unaligned dcl 7-6 set ref 214* locate_sw 1(03) based bit(1) level 3 packed packed unaligned dcl 7-6 set ref 211* lock_sw 1 based bit(1) level 3 packed packed unaligned dcl 7-6 set ref 208* max_arglen 43 based fixed bin(17,0) level 2 dcl 5-10 ref 208 208 209 209 210 210 211 211 212 212 213 213 214 214 216 216 234 234 235 235 237 237 238 238 239 239 242 242 256 256 257 257 259 259 260 260 261 261 264 264 modes 56 based entry variable level 2 dcl 2-6 set ref 169* my_area_info 002210 automatic structure level 1 dcl 56 set ref 145 145 myname 000116 constant char(19) initial packed unaligned dcl 79 set ref 111* 132* 142 147* 160 nargs 42 based fixed bin(17,0) level 2 dcl 5-10 ref 207 216 250 no_freeing 1(04) 002210 automatic bit(1) level 3 packed packed unaligned dcl 56 set ref 140* null builtin function dcl 72 ref 143 153 157 158 184 225 245 250 268 283 288 367 368 385 386 421 429 431 433 435 octal 6 based bit(1) level 3 packed packed unaligned dcl 9-18 set ref 226* open 32 based entry variable level 2 dcl 2-6 set ref 173* 387* open_data_ptr 22 based pointer level 2 dcl 2-6 set ref 158* 191 283 288 367* 412* open_desc 41 based varying char(128) level 2 dcl 1-7 set ref 413* 414 open_descrip_ptr 20 based pointer level 2 dcl 2-6 set ref 157* 368* 414* option_idx 002234 automatic fixed bin(17,0) dcl 57 set ref 117* 118* order_name 11 based char(32) level 2 dcl 5-10 ref 198 198 202 202 230 230 249 249 output_switch 4 based pointer level 2 dcl 9-18 set ref 225* owner 2 002210 automatic char(32) level 2 packed packed unaligned dcl 56 set ref 142* p_actual_len parameter fixed bin(21,0) dcl 33 set ref 329 333* p_buffer_len parameter fixed bin(21,0) dcl 35 set ref 299 303* 329 333* p_buffer_ptr parameter pointer dcl 36 set ref 299 303* 329 333* p_code parameter fixed bin(35,0) dcl 45 set ref 14 14 113* 129* 131 132* 145* 146 147* 185* 188 199* 218* 228* 244* 267* 271* 273* 275* 277* 279* 281* 283* 287* 288* 292* 293* 294 294* 299 303* 304 304* 309 313* 314 314* 319 323* 324 324* 329 333* 334 334* 339 343* 344 344* 349 353* 354 354* 359 363* 364 364 369* 374 378* 379 379 381* 393 397* 398 398* 403 407* 408 408 409* p_com_err_sw parameter bit(1) packed unaligned dcl 43 ref 14 14 111 132 147 p_info_ptr parameter pointer dcl 37 set ref 188 197 273* 275* 277* 279* 281* p_iocb_ptr parameter pointer dcl 47 ref 14 14 154 155 156 156 157 158 166 167 168 169 170 172 173 174 175 176 177 178 179 180 181 182 188 191 283 288 299 302 309 312 319 322 329 332 339 342 349 352 359 362 365 366 367 368 374 377 385 386 387 388 393 396 403 406 410 411 412 414 p_key parameter varying char(256) dcl 38 set ref 319 323* 349 353* p_len parameter fixed bin(21,0) dcl 39 set ref 319 323* 339 343* 349 353* p_not_used parameter bit(1) dcl 34 set ref 403 407* p_open_mode parameter fixed bin(17,0) dcl 40 set ref 403 407* 413 p_options_array parameter varying char array dcl 46 ref 14 14 110 117 118 161 163 p_order parameter char packed unaligned dcl 44 set ref 188 196 273 273 275 275 277 277 279 279 279* 281 281 281* 283 288 p_pos_type parameter fixed bin(17,0) dcl 41 set ref 393 397* p_skip parameter fixed bin(21,0) dcl 42 set ref 393 397* position 62 based entry variable level 2 dcl 2-6 set ref 182* print_data 000026 constant entry external dcl 89 ref 228 print_data_info based structure level 1 unaligned dcl 9-18 set ref 221 433 print_data_info_ptr 002270 automatic pointer dcl 9-17 set ref 221* 222 223 224 225 226 227 228* 421* 433 433 print_data_info_version_1 003622 constant fixed bin(17,0) initial dcl 9-15 ref 222 privileges_string 002235 automatic bit(36) dcl 58 set ref 195* 422* 437* put_chars 52 based entry variable level 2 dcl 2-6 set ref 168* rcprm_registry_util_$turn_off_privs 000046 constant entry external dcl 97 ref 437 rcprm_registry_util_$turn_on_privs 000050 constant entry external dcl 99 ref 195 read_key 116 based entry variable level 2 dcl 2-6 set ref 180* read_length 122 based entry variable level 2 dcl 2-6 set ref 181* read_record 72 based entry variable level 2 dcl 2-6 set ref 178* record_status 000020 constant entry external dcl 86 ref 218 273 release_area_ 000032 constant entry external dcl 91 ref 382 rewrite_record 102 based entry variable level 2 dcl 2-6 set ref 170* rk_header based structure level 1 unaligned dcl 8-26 rollback 000022 constant entry external dcl 87 ref 283 rs_info based structure level 1 dcl 7-6 set ref 205 220 431 rs_info_ptr 002252 automatic pointer dcl 7-5 set ref 205* 206 208 209 210 211 212 213 214 216 218* 220 421* 431 431 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 7-6 rs_info_version_2 003623 constant fixed bin(17,0) initial dcl 7-44 ref 206 seek_key 112 based entry variable level 2 dcl 2-6 set ref 176* size 13 002210 automatic fixed bin(18,0) level 2 dcl 56 set ref 144* substr builtin function dcl 73 ref 208 209 210 211 212 213 214 234 235 256 257 sys_info$max_seg_size 000060 external static fixed bin(24,0) dcl 1-3 ref 144 unique_chars_ 000034 constant entry external dcl 92 ref 129 unlock_sw 1(01) based bit(1) level 3 packed packed unaligned dcl 7-6 set ref 209* value_column 2 based fixed bin(17,0) level 2 dcl 9-18 set ref 224* version based fixed bin(17,0) level 2 in structure "rs_info" dcl 7-6 in procedure "rcprm_journal_file_attach" set ref 206* version 002210 automatic fixed bin(17,0) level 2 in structure "my_area_info" dcl 56 in procedure "rcprm_journal_file_attach" set ref 138* version based fixed bin(17,0) level 2 in structure "print_data_info" dcl 9-18 in procedure "rcprm_journal_file_attach" set ref 222* vfile_iocb_ptr 102 based pointer level 2 dcl 1-7 set ref 129* 271* 279* 281* 323* 333* 343* 353* 363* 378* 380* 397* 407* write_record 76 based entry variable level 2 in structure "iocb" dcl 2-6 in procedure "rcprm_journal_file_attach" set ref 177* write_record 000024 constant entry external dcl 88 in procedure "rcprm_journal_file_attach" ref 303 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Direct_input constant fixed bin(17,0) initial dcl 4-15 Direct_output constant fixed bin(17,0) initial dcl 4-15 Direct_update constant fixed bin(17,0) initial dcl 4-15 Keyed_sequential_input constant fixed bin(17,0) initial dcl 4-15 Keyed_sequential_output constant fixed bin(17,0) initial dcl 4-15 Keyed_sequential_update constant fixed bin(17,0) initial dcl 4-15 Sequential_input constant fixed bin(17,0) initial dcl 4-15 Sequential_input_output constant fixed bin(17,0) initial dcl 4-15 Sequential_output constant fixed bin(17,0) initial dcl 4-15 Sequential_update constant fixed bin(17,0) initial dcl 4-15 Stream_input constant fixed bin(17,0) initial dcl 4-15 Stream_input_output constant fixed bin(17,0) initial dcl 4-15 Stream_output constant fixed bin(17,0) initial dcl 4-15 area_info_version_1 constant fixed bin(17,0) initial dcl 6-3 area_infop 002250 automatic pointer dcl 6-5 gk_info based structure level 1 unaligned dcl 8-41 gk_info_ptr 002264 automatic pointer dcl 8-63 gk_info_version_0 constant fixed bin(17,0) initial dcl 8-66 gk_key_len 002266 automatic fixed bin(17,0) dcl 8-64 io_call_af_ret based varying char dcl 5-25 iox_$attach_loud 000000 constant entry external dcl 3-8 iox_$attach_ptr 000000 constant entry external dcl 3-8 iox_$close_file 000000 constant entry external dcl 3-8 iox_$delete_record 000000 constant entry external dcl 3-8 iox_$detach 000000 constant entry external dcl 3-8 iox_$error_output 000130 external static pointer dcl 3-41 iox_$find_iocb 000000 constant entry external dcl 3-8 iox_$find_iocb_n 000000 constant entry external dcl 3-8 iox_$get_chars 000000 constant entry external dcl 3-8 iox_$get_line 000000 constant entry external dcl 3-8 iox_$iocb_version_sentinel 000062 external static char(4) dcl 2-51 iox_$look_iocb 000000 constant entry external dcl 3-8 iox_$modes 000000 constant entry external dcl 3-8 iox_$move_attach 000000 constant entry external dcl 3-8 iox_$open_file 000000 constant entry external dcl 3-8 iox_$propagate 000000 constant entry external dcl 3-8 iox_$put_chars 000000 constant entry external dcl 3-8 iox_$rewrite_record 000000 constant entry external dcl 3-8 iox_$user_input 000124 external static pointer dcl 3-41 iox_$user_io 000126 external static pointer dcl 3-41 iox_$user_output 000122 external static pointer dcl 3-41 iox_$write_record 000000 constant entry external dcl 3-8 journal_area based area dcl 1-15 rk_info based structure level 1 unaligned dcl 8-22 rk_info_ptr 002260 automatic pointer dcl 8-37 rk_key_len 002262 automatic fixed bin(17,0) dcl 8-38 rs_desc based structure level 1 packed packed unaligned dcl 7-32 rs_info_version_1 000010 internal static fixed bin(17,0) initial dcl 7-43 seq_desc based structure level 1 packed packed unaligned dcl 7-37 short_iox_modes constant char(4) initial array dcl 4-12 NAMES DECLARED BY EXPLICIT CONTEXT. clean_up 003540 constant entry internal dcl 426 ref 124 134 149 193 296 init_for_clean_up 003527 constant entry internal dcl 418 ref 123 192 rcprm_journal_file_ 000273 constant entry external dcl 14 ref 129 129 rcprm_journal_file_attach 000251 constant entry external dcl 14 rcprm_journal_file_close 003165 constant entry external dcl 359 ref 410 rcprm_journal_file_control 001137 constant entry external dcl 188 ref 175 rcprm_journal_file_delete_record 002674 constant entry external dcl 309 ref 179 rcprm_journal_file_detach_iocb 003245 constant entry external dcl 374 ref 172 366 rcprm_journal_file_open 003433 constant entry external dcl 403 ref 173 rcprm_journal_file_position 003365 constant entry external dcl 393 ref 182 rcprm_journal_file_read_key 003120 constant entry external dcl 349 ref 180 rcprm_journal_file_read_length 003055 constant entry external dcl 339 ref 181 rcprm_journal_file_read_record 003006 constant entry external dcl 329 ref 178 rcprm_journal_file_seek_key 002736 constant entry external dcl 319 ref 176 rcprm_journal_file_write_record 002627 constant entry external dcl 299 ref 177 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4520 4652 3632 4530 Length 6046 3632 132 1160 665 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcprm_journal_file_attach 1528 external procedure is an external procedure. on unit on line 124 64 on unit on unit on line 193 64 on unit init_for_clean_up internal procedure shares stack frame of external procedure rcprm_journal_file_attach. clean_up 68 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 rs_info_version_1 rcprm_journal_file_attach STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rcprm_journal_file_attach 000100 area_ptr rcprm_journal_file_attach 000102 attach_idx rcprm_journal_file_attach 000103 attach_description rcprm_journal_file_attach 000204 cleanup_jcb_ptr rcprm_journal_file_attach 000206 display_temp_str rcprm_journal_file_attach 002210 my_area_info rcprm_journal_file_attach 002234 option_idx rcprm_journal_file_attach 002235 privileges_string rcprm_journal_file_attach 002244 journal_control_block_ptr rcprm_journal_file_attach 002246 io_call_infop rcprm_journal_file_attach 002250 area_infop rcprm_journal_file_attach 002252 rs_info_ptr rcprm_journal_file_attach 002254 ak_info_ptr rcprm_journal_file_attach 002256 ak_key_len rcprm_journal_file_attach 002260 rk_info_ptr rcprm_journal_file_attach 002262 rk_key_len rcprm_journal_file_attach 002264 gk_info_ptr rcprm_journal_file_attach 002266 gk_key_len rcprm_journal_file_attach 002270 print_data_info_ptr rcprm_journal_file_attach THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op shorten_stack ext_entry ext_entry_desc int_entry put_terminate strem_prep put_data_eis any_to_any_truncate_op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. add_key com_err_ commit define_area_ delete_key delete_record get_system_free_area_ iox_$attach_name iox_$close iox_$control iox_$destroy_iocb iox_$detach_iocb iox_$err_no_operation iox_$err_not_attached iox_$err_not_closed iox_$err_not_open iox_$open iox_$position iox_$read_key iox_$read_length iox_$read_record iox_$seek_key print_data rcprm_registry_util_$turn_off_privs rcprm_registry_util_$turn_on_privs record_status release_area_ rollback unique_chars_ write_record THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$argerr error_table_$locked_by_this_process error_table_$no_operation sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000244 110 000312 111 000317 113 000351 114 000354 116 000355 117 000361 118 000371 119 000442 121 000445 123 000454 124 000455 126 000477 127 000504 129 000505 131 000575 132 000600 134 000641 135 000645 138 000646 139 000650 140 000652 141 000654 142 000656 143 000661 144 000663 145 000666 146 000700 147 000702 149 000734 150 000740 152 000741 153 000744 154 000746 155 000753 156 000756 157 000761 158 000764 160 000767 161 000774 162 001005 163 001015 164 001042 166 001044 167 001054 168 001056 169 001060 170 001062 172 001064 173 001067 174 001072 175 001075 176 001100 177 001103 178 001106 179 001111 180 001114 181 001117 182 001122 184 001125 185 001130 186 001131 188 001132 191 001156 192 001163 193 001164 195 001206 196 001215 197 001224 198 001227 199 001237 200 001242 202 001243 203 001253 205 001262 206 001267 207 001271 208 001274 209 001304 210 001322 211 001340 212 001356 213 001372 214 001410 216 001426 218 001447 220 001462 221 001652 222 001657 223 001661 224 001663 225 001665 226 001667 227 001671 228 001672 229 001713 230 001714 231 001724 232 001733 233 001735 234 001747 235 001760 236 001775 237 002004 238 002014 239 002027 241 002043 242 002044 244 002064 245 002077 248 002106 249 002107 250 002117 253 002124 254 002133 255 002135 256 002147 257 002160 258 002175 259 002204 260 002214 261 002227 263 002243 264 002244 267 002264 268 002277 270 002306 271 002307 272 002336 273 002337 275 002363 277 002407 279 002433 281 002472 283 002531 287 002555 288 002557 292 002603 293 002605 294 002610 296 002615 297 002621 299 002622 302 002640 303 002645 304 002662 306 002667 309 002670 312 002705 313 002712 314 002723 316 002730 319 002731 322 002751 323 002756 324 002773 326 003000 329 003001 332 003017 333 003024 334 003043 336 003050 339 003051 342 003070 343 003075 344 003110 346 003115 349 003116 352 003133 353 003140 354 003155 356 003162 359 003163 362 003176 363 003203 364 003214 365 003221 366 003231 367 003234 368 003236 369 003241 371 003242 374 003243 377 003256 378 003263 379 003274 380 003301 381 003314 382 003315 383 003325 384 003334 385 003336 386 003343 387 003346 388 003355 390 003357 393 003360 396 003376 397 003403 398 003420 400 003425 403 003426 406 003444 407 003451 408 003466 409 003473 410 003474 411 003503 412 003507 413 003511 414 003522 416 003526 418 003527 421 003530 422 003535 424 003536 426 003537 429 003545 431 003554 433 003563 435 003572 437 003606 439 003616 ----------------------------------------------------------- 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