COMPILATION LISTING OF SEGMENT mu_valid_data_type Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/18/85 1051.2 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 /* HISTORY: 19* 20* Originally written by Jim Gray - - December 1979 21* Modified by Jim Gray - - Dec. 1979, to add entry to allow structures/arrays to be legal 22* 23**/ 24 25 mu_valid_data_type: valid_scalar_data_type: procedure (input_descriptor) returns (bit (1) aligned); 26 27 /* DESCRIPTION: 28* 29* given a 36-bit multics argument descriptor, 30* this routine determines whether it describes a data type 31* that is currently supported by the current version MRDS databases. 32* a true value is returned if the data type is supported/valid, else false is returned. 33* the descriptor is assumed to be valid, with correct values for 34* scale, precision, size, etc. for that data type, since this is to 35* be an efficient run-time routine having error checks made elsewhere. 36* the current supported data types are 1-12, 19-22, 43-46, scalar 37* values(no arrays). see the subsystem writers guide for 38* details of descriptors and their type information. 39* note: the data types that MRDS can handle can be expanded to those 40* that assign_ can handle, but no further. currently the other types that 41* assign_ can handle, that mrds doesn't are 33-34, and 41-42. 42* types 41-42 could never be supported due to the need for mrds to be able 43* to calculate bit storage length of any data type, and the types 44* require knowledge of the storage location, in order to do that. 45* 46**/ 47 48 /* PARAMETERS: 49* 50* input_descriptor - - (input) bit(36), multics pl1 argument descriptor 51* to be checked as to whether it is a supported MRDS data type, 52* see subsystem writers guide for format. 53* 54* valid_flag - - (output) bit(1) aligned, true/false indicator, 55* true if descriptor given is a supported MRDS data type, else false. 56* 57* sub_error_ - - (output) condition, signaled upon occurence of an error 58* to provide more information 59* 60**/ 61 62 /* normal entry */ 63 64 arrays_ok, structures_ok = OFF; 65 66 call check_descriptor (); 67 68 /* reports results to caller */ 69 70 return (valid_flag); 71 72 73 74 75 76 /* entry to allow arrays and structures to be legal */ 77 78 structures_arrays_ok: valid_structure_data_type: entry (input_descriptor) returns (bit (1) aligned); 79 80 arrays_ok, structures_ok = ON; 81 82 call check_descriptor (); 83 84 /* report results to users */ 85 86 return (valid_flag); 87 88 check_descriptor: procedure (); 89 90 /* get local version of descriptor */ 91 92 descriptor = input_descriptor; 93 94 /* invalidate array variables */ 95 96 if dimension > 0 & ^arrays_ok then 97 valid_flag = OFF; 98 else do; 99 100 /* check for supported data types */ 101 102 /* if (data_type >= 1 & data_type <= 12) | /* binary or decimal */ 103 /* (data_type >= 19 & data_type <= 22) | /* character and bit */ 104 /* /* (data_type >= 33 & data_type <= 34) | /* binary unsigned */ 105 /* /* (data_type >= 41 & data_type <= 42) | /* decimal 4-bit */ 106 /* (data_type >= 43 & data_type <= 46) | /* decimal 4-bit byte-aligned, "packed decimal" */ 107 /* (data_type = 17 & structures_ok) then ; */ 108 109 if legal (data_type) then 110 valid_flag = ON; 111 else if data_type = 17 & structures_ok then 112 valid_flag = ON; 113 else valid_flag = OFF; 114 115 116 end; 117 118 end; 119 120 declare legal (0:63) bit (1) /* array of flags for legal data types */ 121 init ((1) ("0"b), (12) ("1"b), (6) ("0"b), (4) ("1"b), (20) ("0"b), (4) ("1"b), (17) ("0"b)) 122 int static options (constant); 123 declare valid_flag bit (1) aligned; /* on => valid, else invalid data type */ 124 declare input_descriptor bit (36); /* users data descriptor */ 125 declare descriptor bit (36); /* local version of descriptor */ 126 declare 1 descriptor_dimension unal based (addr (descriptor)), /* overlay for dimension field of descriptor */ 127 2 unused_1 bit (8) unal, 128 2 dimension unsigned fixed bin (4) unal, /* dimension field */ 129 2 unused_2 bit (24) unal; 130 declare 1 descriptor_type unal based (addr (descriptor)), /* overlay for data type field */ 131 2 unused_1 bit (1) unal, 132 2 data_type unsigned fixed bin (6) unal, /* descriptor type code */ 133 2 unused_2 bit (29) unal; 134 declare ON bit (1) init ("1"b) int static options (constant); /* true value */ 135 declare OFF bit (1) init ("0"b) int static options (constant); /* false value */ 136 declare structures_ok bit (1); /* on => allow structures to be legal */ 137 declare arrays_ok bit (1); /* on => allow arrays to be legal */ 138 declare addr builtin; 139 140 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/85 0908.8 mu_valid_data_type.pl1 >special_ldd>online>mrds.pbf-04/18/85>mu_valid_data_type.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. OFF constant bit(1) initial unaligned dcl 135 ref 64 96 113 ON constant bit(1) initial unaligned dcl 134 ref 80 109 111 addr builtin function dcl 138 ref 96 109 111 arrays_ok 000103 automatic bit(1) unaligned dcl 137 set ref 64* 80* 96 data_type 0(01) based fixed bin(6,0) level 2 packed unsigned unaligned dcl 130 ref 109 111 descriptor 000101 automatic bit(36) unaligned dcl 125 set ref 92* 96 109 111 descriptor_dimension based structure level 1 packed unaligned dcl 126 descriptor_type based structure level 1 packed unaligned dcl 130 dimension 0(08) based fixed bin(4,0) level 2 packed unsigned unaligned dcl 126 ref 96 input_descriptor parameter bit(36) unaligned dcl 124 ref 25 25 78 78 92 legal 000000 constant bit(1) initial array unaligned dcl 120 ref 109 structures_ok 000102 automatic bit(1) unaligned dcl 136 set ref 64* 80* 111 valid_flag 000100 automatic bit(1) dcl 123 set ref 70 86 96* 109* 111* 113* NAMES DECLARED BY EXPLICIT CONTEXT. check_descriptor 000064 constant entry internal dcl 88 ref 66 82 mu_valid_data_type 000020 constant entry external dcl 25 structures_arrays_ok 000047 constant entry external dcl 78 valid_scalar_data_type 000010 constant entry external dcl 25 valid_structure_data_type 000037 constant entry external dcl 78 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 214 224 131 224 Length 402 131 10 141 62 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME valid_scalar_data_type 78 external procedure is an external procedure. check_descriptor internal procedure shares stack frame of external procedure valid_scalar_data_type. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME valid_scalar_data_type 000100 valid_flag valid_scalar_data_type 000101 descriptor valid_scalar_data_type 000102 structures_ok valid_scalar_data_type 000103 arrays_ok valid_scalar_data_type THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return ext_entry NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000004 64 000025 66 000030 70 000031 78 000035 80 000054 82 000057 86 000060 88 000064 92 000065 96 000072 109 000104 111 000120 113 000127 118 000130 ----------------------------------------------------------- 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