COMPILATION LISTING OF SEGMENT iox_open_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 0958.9 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* *********************************************************** */ 8 9 /* format: style4,inddcls,^ifthendo,^indproc */ 10 11 iox_open_file: proc(); 12 13 return; /* Not a legal entry. */ 14 15 /* Written 11/29/82 by S. Krupp. */ 16 17 /* Automatic */ 18 19 dcl code fixed bin (35); 20 dcl description char(length(arg_descrip)); 21 dcl entry_var entry (ptr, fixed bin, (*) char (*) var, bit (1) aligned, fixed bin (35)) variable; 22 dcl iocb_ptr ptr; 23 dcl max_option_len fixed bin (21); 24 dcl n_options fixed bin (21); 25 26 /* Builtin */ 27 28 dcl length builtin; 29 30 /* Entries */ 31 32 dcl iox_get_options entry (char (*), (*) char (*) var, fixed bin (35)); 33 dcl iox_measure_options entry (char (*), fixed bin (21), fixed bin (21), fixed bin (35)); 34 35 /* Parameter */ 36 37 dcl arg_code fixed bin (35); 38 dcl arg_descrip char (*); 39 dcl arg_iocb_ptr ptr; 40 dcl arg_mode fixed bin; 41 dcl arg_unused bit (1) aligned; 42 43 1 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 1 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 1 3* version number to IOX2. */ 1 4 /* format: style2 */ 1 5 1 6 dcl 1 iocb aligned based, /* I/O control block. */ 1 7 2 version character (4) aligned, /* IOX2 */ 1 8 2 name char (32), /* I/O name of this block. */ 1 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 1 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 1 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 1 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 1 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 1 14 2 reserved bit (72), /* Reserved for future use. */ 1 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 1 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 1 17 /* open(p,mode,not_used,s) */ 1 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 1 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 20 /* get_line(p,bufptr,buflen,actlen,s) */ 1 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 1 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 1 24 /* put_chars(p,bufptr,buflen,s) */ 1 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 1 26 /* modes(p,newmode,oldmode,s) */ 1 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 1 28 /* position(p,u1,u2,s) */ 1 29 2 control entry (ptr, char (*), ptr, fixed (35)), 1 30 /* control(p,order,infptr,s) */ 1 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 32 /* read_record(p,bufptr,buflen,actlen,s) */ 1 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 1 34 /* write_record(p,bufptr,buflen,s) */ 1 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 1 36 /* rewrite_record(p,bufptr,buflen,s) */ 1 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 1 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 39 /* seek_key(p,key,len,s) */ 1 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 41 /* read_key(p,key,len,s) */ 1 42 2 read_length entry (ptr, fixed (21), fixed (35)), 1 43 /* read_length(p,len,s) */ 1 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 1 45 /* open_file(p,mode,desc,not_used,s) */ 1 46 2 close_file entry (ptr, char (*), fixed bin (35)), 1 47 /* close_file(p,desc,s) */ 1 48 2 detach entry (ptr, char (*), fixed bin (35)); 1 49 /* detach(p,desc,s) */ 1 50 1 51 declare iox_$iocb_version_sentinel 1 52 character (4) aligned external static; 1 53 1 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 44 45 46 47 /* 48* * This program, given an open description, breaks up the description 49* * into its elements and then calls the appropriate I/O module entry. 50**/ 51 52 open_file: entry(arg_iocb_ptr, arg_mode, arg_descrip, arg_unused, arg_code); 53 54 iocb_ptr = arg_iocb_ptr -> iocb.actual_iocb_ptr; 55 description = arg_descrip; 56 code = 0; 57 58 call iox_measure_options (description, n_options, max_option_len, code); 59 if code ^= 0 60 then goto OPEN_RETURN; 61 62 begin; 63 64 dcl option_array (n_options) char (max_option_len) var; 65 66 call iox_get_options (description, option_array, code); 67 if code ^= 0 68 then goto OPEN_RETURN; 69 70 entry_var = iocb_ptr -> iocb.open_file; 71 call entry_var (iocb_ptr, arg_mode, option_array, arg_unused, code); 72 73 end; 74 75 OPEN_RETURN: 76 77 arg_code = code; 78 79 end iox_open_file; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0803.9 iox_open_file.pl1 >spec>install>1111>iox_open_file.pl1 44 1 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.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 1-6 ref 54 arg_code parameter fixed bin(35,0) dcl 37 set ref 52 75* arg_descrip parameter char packed unaligned dcl 38 ref 20 52 55 arg_iocb_ptr parameter pointer dcl 39 ref 52 54 arg_mode parameter fixed bin(17,0) dcl 40 set ref 52 71* arg_unused parameter bit(1) dcl 41 set ref 52 71* code 000100 automatic fixed bin(35,0) dcl 19 set ref 56* 58* 59 66* 67 71* 75 description 000101 automatic char packed unaligned dcl 20 set ref 55* 58* 66* entry_var 000102 automatic entry variable dcl 21 set ref 70* 71 iocb based structure level 1 dcl 1-6 iocb_ptr 000106 automatic pointer dcl 22 set ref 54* 70 71* iox_get_options 000010 constant entry external dcl 32 ref 66 iox_measure_options 000012 constant entry external dcl 33 ref 58 length builtin function dcl 28 ref 20 max_option_len 000110 automatic fixed bin(21,0) dcl 23 set ref 58* 64 n_options 000111 automatic fixed bin(21,0) dcl 24 set ref 58* 64 open_file 126 based entry variable level 2 dcl 1-6 ref 70 option_array 000100 automatic varying char array dcl 64 set ref 66* 71* NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. iox_$iocb_version_sentinel external static char(4) dcl 1-51 NAMES DECLARED BY EXPLICIT CONTEXT. OPEN_RETURN 000267 constant label dcl 75 ref 59 67 iox_open_file 000035 constant entry external dcl 11 open_file 000051 constant entry external dcl 52 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 346 362 273 356 Length 544 273 14 145 52 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME iox_open_file 100 external procedure is an external procedure. begin block on line 62 118 begin block uses auto adjustable storage. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME begin block on line 62 000100 option_array begin block on line 62 iox_open_file 000100 code iox_open_file 000101 description iox_open_file 000102 entry_var iox_open_file 000106 iocb_ptr iox_open_file 000110 max_option_len iox_open_file 000111 n_options iox_open_file THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. enter_begin_block leave_begin_block call_ent_var_desc call_ext_out_desc return_mac tra_ext_1 alloc_auto_adj ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. iox_get_options iox_measure_options NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 000011 58 000024 66 000027 11 000034 13 000043 52 000044 54 000065 55 000072 56 000101 58 000102 59 000126 62 000130 64 000133 66 000152 71 000164 66 000176 67 000220 70 000226 71 000234 73 000266 75 000267 79 000272 ----------------------------------------------------------- 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