COMPILATION LISTING OF SEGMENT rcm_create_cursor Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 01/03/85 1600.9 mst Thu Options: optimize list 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 /* format: style2 */ 7 rcm_create_cursor: 8 create_cursor: 9 proc (p_file_opening_id, p_record_collection_id, p_work_area_ptr, p_record_cursor_ptr, p_code); 10 11 /* DESCRIPTION 12* Allocates a record_cursor structure in the provided work area. This 13* cursor is tailored for the record collection with which it is to be used. 14* Its initial position is at the beginning of the collection. 15**/ 16 17 /* Written by Matthew Pierret. 18*Modified: 19*09/07/82 by Matthew Pierret: Changed collection_id to bit (36) aligned. 20*07/28/83 by Matthew Pierret: Changed name from rm_create_cursor to 21* rcm_create_cursor, and all rm_ prefixes to rcm_. 22*04/12/84 by Lee Baldwin: Renamed the parameters to coincide with all the other 23* rcm_XX routines. 24**/ 25 26 /* START OF DECLARATIONS */ 27 /* Parameter */ 28 29 dcl p_file_opening_id bit (36) aligned; 30 dcl p_record_collection_id bit (36) aligned; 31 dcl p_work_area_ptr ptr; 32 dcl p_record_cursor_ptr ptr; 33 dcl p_code fixed bin (35); 34 35 /* Automatic */ 36 37 dcl work_area_ptr ptr; 38 39 /* Based */ 40 41 dcl work_area area (sys_info$max_seg_size) based (work_area_ptr); 42 43 /* Builtin */ 44 /* Condition */ 45 46 dcl area condition; 47 48 /* Controlled */ 49 /* Constant */ 50 51 dcl myname init ("rcm_create_cursor") char (32) varying internal static options (constant); 52 53 /* Entry */ 54 /* External */ 55 56 dcl error_table_$area_too_small 57 ext fixed bin (35); 58 dcl sys_info$max_seg_size ext fixed bin (35); 59 60 /* END OF DECLARATIONS */ 61 62 p_code = 0; 63 work_area_ptr = p_work_area_ptr; 64 65 on area 66 begin; 67 p_code = error_table_$area_too_small; 68 goto RETURN; 69 end; 70 71 alloc record_cursor in (work_area); 72 record_cursor.version = RECORD_CURSOR_VERSION_2; 73 record_cursor.type = RECORD_CURSOR_TYPE; 74 record_cursor.area_ptr = work_area_ptr; 75 record_cursor.file_opening_id = p_file_opening_id; 76 record_cursor.collection_id = p_record_collection_id; 77 record_cursor.record_id = BEGINNING_OF_COLLECTION_RECORD_ID; 78 record_cursor.record_check_value = "0"b; 79 string (record_cursor.flags) = "0"b; 80 81 p_record_cursor_ptr = record_cursor_ptr; 82 RETURN: 83 return; 84 85 1 1 /* BEGIN INCLUDE FILE - dm_rcm_cursor.incl.pl1 */ 1 2 1 3 /* HISTORY: 1 4*Written by Matthew Pierret, 04/05/82. 1 5*Modified: 1 6*08/19/82 by Matthew Pierret: Version 2. Changed collection_id to 1 7* bit (36) aligned. 1 8*07/28/83 by Matthew Pierret: Changed name from dm_rm_cursor.incl.pl1 to 1 9* dm_rcm_cursor.incl.pl1. 1 10*04/13/84 by Lee Baldwin: Renamed pf_opening_id to file_opening_id to coincide 1 11* with the naming conventions used in the rcm_XX routines. 1 12**/ 1 13 1 14 /* format: style2,ind3 */ 1 15 dcl 1 record_cursor aligned based (record_cursor_ptr), 1 16 2 type fixed bin (17) unaligned, 1 17 2 version fixed bin (17) unaligned, 1 18 2 flags, 1 19 3 position_is_valid 1 20 bit (1) unal, 1 21 3 pad bit (35) unal, 1 22 2 area_ptr ptr, 1 23 2 file_opening_id bit (36) aligned, 1 24 2 collection_id bit (36) aligned, 1 25 2 record_id bit (36) aligned, 1 26 2 record_check_value bit (36) aligned; 1 27 1 28 dcl record_cursor_ptr ptr; 1 29 dcl RECORD_CURSOR_VERSION_2 1 30 init (2) fixed bin int static options (constant); 1 31 dcl RECORD_CURSOR_TYPE init (1) fixed bin int static options (constant); 1 32 dcl BEGINNING_OF_COLLECTION_RECORD_ID 1 33 init ("0"b) bit (36) aligned int static options (constant); 1 34 1 35 /* END INCLUDE FILE - dm_rcm_cursor.incl.pl1 */ 86 87 88 end rcm_create_cursor; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/03/85 1147.1 rcm_create_cursor.pl1 >spec>temp>famis1>rcm_create_cursor.pl1 86 1 01/03/85 1004.3 dm_rcm_cursor.incl.pl1 >spec>temp>famis1>dm_rcm_cursor.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. BEGINNING_OF_COLLECTION_RECORD_ID constant bit(36) initial dcl 1-32 ref 77 RECORD_CURSOR_TYPE constant fixed bin(17,0) initial dcl 1-31 ref 73 RECORD_CURSOR_VERSION_2 constant fixed bin(17,0) initial dcl 1-29 ref 72 area 000102 stack reference condition dcl 46 ref 65 area_ptr 2 based pointer level 2 dcl 1-15 set ref 74* collection_id 5 based bit(36) level 2 dcl 1-15 set ref 76* error_table_$area_too_small 000010 external static fixed bin(35,0) dcl 56 ref 67 file_opening_id 4 based bit(36) level 2 dcl 1-15 set ref 75* flags 1 based structure level 2 dcl 1-15 set ref 79* p_code parameter fixed bin(35,0) dcl 33 set ref 7 7 62* 67* p_file_opening_id parameter bit(36) dcl 29 ref 7 7 75 p_record_collection_id parameter bit(36) dcl 30 ref 7 7 76 p_record_cursor_ptr parameter pointer dcl 32 set ref 7 7 81* p_work_area_ptr parameter pointer dcl 31 ref 7 7 63 record_check_value 7 based bit(36) level 2 dcl 1-15 set ref 78* record_cursor based structure level 1 dcl 1-15 set ref 71 record_cursor_ptr 000110 automatic pointer dcl 1-28 set ref 71* 72 73 74 75 76 77 78 79 81 record_id 6 based bit(36) level 2 dcl 1-15 set ref 77* type based fixed bin(17,0) level 2 packed unaligned dcl 1-15 set ref 73* version 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 1-15 set ref 72* work_area based area dcl 41 ref 71 work_area_ptr 000100 automatic pointer dcl 37 set ref 63* 71 74 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. myname internal static varying char(32) initial dcl 51 sys_info$max_seg_size external static fixed bin(35,0) dcl 58 NAMES DECLARED BY EXPLICIT CONTEXT. RETURN 000102 constant label dcl 82 set ref 68 create_cursor 000011 constant entry external dcl 7 rcm_create_cursor 000021 constant entry external dcl 7 NAME DECLARED BY CONTEXT OR IMPLICATION. string builtin function ref 79 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 160 172 103 170 Length 362 103 12 153 55 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME create_cursor 74 external procedure is an external procedure. on unit on line 65 64 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME create_cursor 000100 work_area_ptr create_cursor 000110 record_cursor_ptr create_cursor THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return tra_ext enable ext_entry int_entry alloc_based NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$area_too_small CONSTANTS 000000 aa 141 162 145 141 area 000001 aa 404000000043 000002 aa 464000000000 000003 aa 514000000044 BEGIN PROCEDURE create_cursor ENTRY TO create_cursor STATEMENT 1 ON LINE 7 rcm_create_cursor: create_cursor: proc (p_file_opening_id, p_record_collection_id, p_work_area_ptr, p_record_cursor_ptr, p_code); 000004 at 000005000003 000005 tt 000003000002 000006 tt 000002000001 000007 ta 000004000000 000010 da 000041300000 000011 aa 000120 6270 00 eax7 80 000012 aa 7 00034 3521 20 epp2 pr7|28,* 000013 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000014 aa 000012000000 000015 aa 000000000000 000016 aa 000010 7100 04 tra 8,ic 000026 ENTRY TO rcm_create_cursor STATEMENT 1 ON LINE 7 rcm_create_cursor: create_cursor: proc (p_file_opening_id, p_record_collection_id, p_work_area_ptr, p_record_cursor_ptr, p_code); 000017 ta 000004000000 000020 da 000044300000 000021 aa 000120 6270 00 eax7 80 000022 aa 7 00034 3521 20 epp2 pr7|28,* 000023 aa 2 01045 2721 00 tsp2 pr2|549 ext_entry 000024 aa 000012000000 000025 aa 000000000000 STATEMENT 1 ON LINE 62 p_code = 0; 000026 aa 6 00032 3735 20 epp7 pr6|26,* 000027 aa 7 00012 4501 20 stz pr7|10,* p_code STATEMENT 1 ON LINE 63 work_area_ptr = p_work_area_ptr; 000030 aa 7 00006 3715 20 epp5 pr7|6,* p_work_area_ptr 000031 aa 5 00000 3715 20 epp5 pr5|0,* p_work_area_ptr 000032 aa 6 00100 6515 00 spri5 pr6|64 work_area_ptr STATEMENT 1 ON LINE 65 on area begin; 000033 aa 000004 7260 07 lxl6 4,dl 000034 aa 777744 3520 04 epp2 -28,ic 000000 = 141162145141 000035 aa 0 00717 7001 00 tsx0 pr0|463 enable 000036 aa 000004 7100 04 tra 4,ic 000042 000037 aa 000102000000 000040 aa 000016 7100 04 tra 14,ic 000056 BEGIN CONDITION area.1 ENTRY TO area.1 STATEMENT 1 ON LINE 65 on area begin; 000041 da 000051200000 000042 aa 000100 6270 00 eax7 64 000043 aa 7 00034 3521 20 epp2 pr7|28,* 000044 aa 2 01047 2721 00 tsp2 pr2|551 int_entry 000045 aa 000000000000 000046 aa 000000000000 STATEMENT 1 ON LINE 67 p_code = error_table_$area_too_small; 000047 la 4 00010 2361 20 ldq pr4|8,* error_table_$area_too_small 000050 aa 6 00040 3735 20 epp7 pr6|32,* 000051 aa 7 00032 3715 20 epp5 pr7|26,* 000052 aa 5 00012 7561 20 stq pr5|10,* p_code STATEMENT 1 ON LINE 68 goto RETURN; 000053 aa 000027 3520 04 epp2 23,ic 000102 = 000631710100 000054 aa 000001 7270 07 lxl7 1,dl 000055 aa 0 00657 7101 00 tra pr0|431 tra_ext STATEMENT 1 ON LINE 69 end; END CONDITION area.1 STATEMENT 1 ON LINE 71 alloc record_cursor in (work_area); 000056 aa 000010 2360 07 ldq 8,dl 000057 aa 6 00100 3521 20 epp2 pr6|64,* work_area 000060 aa 0 01402 7001 00 tsx0 pr0|770 alloc_based 000061 aa 777775 7100 04 tra -3,ic 000056 000062 aa 6 00110 2521 00 spri2 pr6|72 record_cursor_ptr STATEMENT 1 ON LINE 72 record_cursor.version = RECORD_CURSOR_VERSION_2; 000063 aa 000002 2350 07 lda 2,dl 000064 aa 2 00000 5511 14 stba pr2|0,14 record_cursor.version STATEMENT 1 ON LINE 73 record_cursor.type = RECORD_CURSOR_TYPE; 000065 aa 000001 2350 03 lda 1,du 000066 aa 2 00000 5511 60 stba pr2|0,60 record_cursor.type STATEMENT 1 ON LINE 74 record_cursor.area_ptr = work_area_ptr; 000067 aa 6 00100 3735 20 epp7 pr6|64,* work_area_ptr 000070 aa 2 00002 6535 00 spri7 pr2|2 record_cursor.area_ptr STATEMENT 1 ON LINE 75 record_cursor.file_opening_id = p_file_opening_id; 000071 aa 6 00032 3715 20 epp5 pr6|26,* 000072 aa 5 00002 2351 20 lda pr5|2,* p_file_opening_id 000073 aa 2 00004 7551 00 sta pr2|4 record_cursor.file_opening_id STATEMENT 1 ON LINE 76 record_cursor.collection_id = p_record_collection_id; 000074 aa 5 00004 2351 20 lda pr5|4,* p_record_collection_id 000075 aa 2 00005 7551 00 sta pr2|5 record_cursor.collection_id STATEMENT 1 ON LINE 77 record_cursor.record_id = BEGINNING_OF_COLLECTION_RECORD_ID; 000076 aa 2 00006 4501 00 stz pr2|6 record_cursor.record_id STATEMENT 1 ON LINE 78 record_cursor.record_check_value = "0"b; 000077 aa 2 00007 4501 00 stz pr2|7 record_cursor.record_check_value STATEMENT 1 ON LINE 79 string (record_cursor.flags) = "0"b; 000100 aa 2 00001 4501 00 stz pr2|1 STATEMENT 1 ON LINE 81 p_record_cursor_ptr = record_cursor_ptr; 000101 aa 5 00010 2521 20 spri2 pr5|8,* p_record_cursor_ptr STATEMENT 1 ON LINE 82 RETURN: return; 000102 aa 0 00631 7101 00 tra pr0|409 return STATEMENT 1 ON LINE 88 end rcm_create_cursor; END PROCEDURE create_cursor ----------------------------------------------------------- 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