/****^ ********************************************************* * * * Copyright, (C) BULL HN Information Systems Inc., 1989 * * * ********************************************************* */ /* BEGIN INCLUDE FILE ... language_utility.incl.pl1 */ /****^ HISTORY COMMENTS: 1) change(89-07-10,RWaters), approve(89-07-10,MCR8118), audit(89-07-19,Vu), install(89-07-31,MR12.3-1066): Removed the obsolete parameter source_line from the dcl of error_(). END HISTORY COMMENTS */ /* Modified: 6 Jun 1979 by PG to add rank and byte * Modified: 9 Jul 1989 by RW updated the declaration of error_ */ declare adjust_count entry(pointer); /* parameter 1: (input) any node pointer */ declare bindec entry(fixed bin(31)) reducible returns(character(12) aligned); /* parameter 1: (input) bin value */ /* return: (output) character value with blanks */ declare bindec$vs entry(fixed bin(31)) reducible returns(character(12) aligned varying); /* parameter 1: (input) binary value */ /* return: (output) char value without blanks */ declare binoct entry(fixed bin(31)) reducible returns(char(12) aligned); /* parameter 1: (input) binary value */ /* return: (output) char value with blanks */ declare binary_to_octal_string entry(fixed bin(31)) reducible returns(char(12) aligned); /* parameter 1: (input) binary value */ /* return: (output) right-aligned char value */ declare binary_to_octal_var_string entry(fixed bin(31)) reducible returns(char(12) varying aligned); /* parameter 1: (input) binary value */ /* returns: (output) char value without blanks */ declare compare_expression entry(pointer,pointer) reducible returns(bit(1) aligned); /* parameter 1: (input) any node pointer */ /* parameter 2: (input) any node pointer */ /* return: (output) compare bit */ declare constant_length entry (pointer, fixed bin (71)) returns (bit (1) aligned); /* parameter 1: (input) reference node pointer */ /* parameter 2: (input) value of constant length */ /* return: (output) "1"b if constant length */ declare convert entry(pointer,bit(36) aligned) returns(pointer); /* parameter 1: (input) any node pointer */ /* parameter 2: (input) target type */ /* return: (output) target value tree pointer */ declare convert$to_integer entry(pointer,bit(36)aligned) returns(pointer); /* parameter 1: (input) any node pointer */ /* parameter 2: (input) target type */ /* return: (output) target value tree pointer */ declare convert$from_builtin entry(pointer,bit(36) aligned) returns(pointer); /* parameter 1: (input) any node pointer */ /* parameter 2: (input) target type */ /* return: (output) target value tree pointer */ declare convert$validate entry(pointer,pointer); /* parameter 1: (input) source value tree pointer */ /* parameter 2: (input) target reference node pointer */ declare convert$to_target_fb entry(pointer,pointer) returns(pointer); /* parameter 1: (input) source value tree pointer */ /* parameter 2: (input) target reference node pointer */ /* return: (output) target value tree pointer */ declare convert$to_target entry(pointer,pointer) returns(pointer); /* parameter 1: (input) source value tree pointer */ /* parameter 2: (input) target reference node pointer */ /* return: (output) target value tree pointer */ declare copy_expression entry(pointer unaligned) returns(pointer); /* parameter 1: (input) any node pointer */ /* return: (output) any node pointer */ declare copy_expression$copy_sons entry(pointer,pointer); /* parameter 1: (input) father symbol node pointer */ /* parameter 2: (input) stepfather symbol node ptr */ declare copy_unique_expression entry(pointer) returns(pointer); /* parameter 1: (input) any node pointer */ /* return: (output) any node pointer */ declare create_array entry() returns(pointer); /* return: (output) array node pointer */ declare create_block entry(bit(9) aligned,pointer) returns(pointer); /* parameter 1: (input) block type */ /* parameter 2: (input) father block node pointer */ /* return: (output) block node pointer */ declare create_bound entry() returns(pointer); /* return: (output) bound node pointer */ declare create_context entry(pointer,pointer) returns(pointer); /* parameter 1: (input) block node pointer */ /* parameter 2: (input) token pointer */ /* return: (output) context node pointer */ declare create_cross_reference entry() returns(pointer); /* return: (output) cross reference node pointer */ declare create_default entry returns(pointer); /* return: (output) default node pointer */ declare create_identifier entry() returns(pointer); /* return: (output) token node pointer */ declare create_label entry(pointer,pointer,bit(3) aligned) returns(pointer); /* parameter 1: (input) block node pointer */ /* parameter 2: (input) token node pointer */ /* parameter 3: (input) declare type */ /* return: (output) label node pointer */ declare create_list entry(fixed bin(15)) returns(pointer); /* parameter 1: (input) number of list elements */ /* return: (output) list node pointer */ declare create_operator entry(bit(9) aligned,fixed bin(15)) returns(pointer); /* parameter 1: (input) operator type */ /* parameter 2: (input) number of operands */ /* return: (output) operator node pointer */ declare create_reference entry(pointer) returns(pointer); /* parameter 1: (input) symbol node pointer */ /* return: (output) reference node pointer */ declare create_statement entry(bit(9) aligned,pointer,pointer,bit(12) aligned) returns(pointer); /* parameter 1: (input) statement type */ /* parameter 2: (input) block node pointer */ /* parameter 3: (input) label node pointer */ /* parameter 4: (input) conditions */ /* return: (output) statement node pointer */ declare create_statement$prologue entry(bit(9) aligned,pointer,pointer,bit(12) aligned) returns(pointer); /* parameter 1: (input) statement type */ /* parameter 2: (input) block node pointer */ /* parameter 3: (input) label node pointer */ /* parameter 4: (input) conditions */ /* return: (output) statement node pointer */ declare create_storage entry(fixed bin(15)) returns(pointer); /* parameter 1: (input) number of words */ /* return: (output) storage block pointer */ declare create_symbol entry(pointer,pointer,bit(3) aligned) returns(pointer); /* parameter 1: (input) block node pointer */ /* parameter 2: (input) token node pointer */ /* parameter 3: (input) declare type */ /* return: (output) symbol node pointer */ declare create_token entry (character (*), bit (9) aligned) returns (ptr); /* parameter 1: (input) token string */ /* parameter 2: (input) token type */ /* return: (output) token node ptr */ declare create_token$init_hash_table entry (); declare create_token$protected entry (char (*), bit (9) aligned, bit (18) aligned) returns (ptr); /* parameter 1: (input) token string */ /* parameter 2: (input) token type */ /* parameter 3: (input) protected flag */ /* return: (output) token node ptr */ declare decbin entry(character(*) aligned) reducible returns(fixed bin(31)); /* parameter 1: (input) decimal character string */ /* return: (output) binary value */ declare declare_constant entry(bit(*) aligned,bit(36) aligned,fixed bin(31),fixed bin(15)) returns(pointer); /* parameter 1: (input) value */ /* parameter 2: (input) type */ /* parameter 3: (input) size */ /* parameter 4: (input) scale */ /* return: (output) reference node pointer */ declare declare_constant$bit entry(bit(*) aligned) returns(pointer); /* parameter 1: (input) bit */ /* return: (output) reference node pointer */ declare declare_constant$char entry(character(*) aligned) returns(pointer); /* parameter 1: (input) character */ /* return: (output) reference node pointer */ declare declare_constant$desc entry(bit(*) aligned) returns(pointer); /* parameter 1: (input) descriptor bit value */ /* return: (output) reference node pointer */ declare declare_constant$integer entry(fixed bin(31)) /* note...should really be fixed bin(24) */ returns(pointer); /* parameter 1: (input) integer */ /* return: (output) reference node pointer */ declare declare_descriptor entry(pointer,pointer,pointer,pointer,bit(2) aligned) returns(pointer); /* parameter 1: (input) block node pointer */ /* parameter 2: (input) statement node pointer */ /* parameter 3: (input) symbol node pointer */ /* parameter 4: (input) loc pointer */ /* parameter 5: (input) array descriptor bit cross_section bit */ /* return: (output) reference node pointer */ declare declare_descriptor$ctl entry(pointer,pointer,pointer,pointer,bit(2) aligned) returns(pointer); /* parameter 1: (input) block node pointer */ /* parameter 2: (input) statement node pointer */ /* parameter 3: (input) symbol node pointer */ /* parameter 4: (input) loc pointer */ /* parameter 5: (input) array descriptor bit cross_section bit */ /* return: (output) reference node pointer */ declare declare_descriptor$param entry(pointer,pointer,pointer,pointer,bit(2) aligned) returns(pointer); /* parameter 1: (input) block node pointer */ /* parameter 2: (input) statement node pointer */ /* parameter 3: (input) symbol node pointer */ /* parameter 4: (input) loc pointer */ /* parameter 5: (input) array descriptor bit cross_section bit */ /* return: (output) reference node pointer */ declare declare_integer entry(pointer) returns(pointer); /* parameter 1: (input) block node pointer */ /* return: (output) reference node pointer */ declare declare_picture entry(char(*)aligned,pointer,fixed bin(15)); /* parameter 1: (input) picture string */ /* parameter 2: (input) symbol node pointer */ /* parameter 3: (output) error code, if any */ declare declare_picture_temp entry(char(*) aligned,fixed bin(31),bit(1) aligned,bit(1) aligned) returns(pointer); /* parameter 1: (input) picture string */ /* parameter 2: (input) scalefactor of picture */ /* parameter 3: (input) ="1"b => complex picture */ /* parameter 4: (input) ="1"b => unaligned temp */ /* return: (output) reference node pointer */ declare declare_pointer entry(pointer) returns(pointer); /* parameter 1: (input) block node pointer */ /* return: (output) reference node pointer */ declare declare_temporary entry(bit(36) aligned,fixed bin(31),fixed bin(15),pointer) returns(pointer); /* parameter 1: (input) type */ /* parameter 2: (input) precision */ /* parameter 3: (input) scale */ /* parameter 4: (input) length */ /* return: (output) reference node pointer */ declare decode_node_id entry(pointer,bit(1) aligned) returns(char(120) varying); /* parameter 1: (input) node pointer */ /* parameter 2: (input) ="1"b => capitals */ /* return: (output) source line id */ declare decode_source_id entry( %include source_id_descriptor; bit(1) aligned) returns(char(120) varying); /* parameter 1: (input) source id */ /* parameter 2: (input) ="1"b => capitals */ /* return: (output) source line id */ declare error entry(fixed bin(15),pointer,pointer); /* parameter 1: (input) error number */ /* parameter 2: (input) statement node pointer or null*/ /* parameter 3: (input) token node pointer */ declare error$omit_text entry(fixed bin(15),pointer,pointer); /* parameter 1: (input) error number */ /* parameter 2: (input) statement node pointer or null*/ /* parameter 3: (input) token node pointer */ declare error_ entry(fixed bin(15), %include source_id_descriptor; pointer,fixed bin(8),fixed bin(23),fixed bin(11)); /* parameter 1: (input) error number */ /* parameter 2: (input) statement id */ /* parameter 3: (input) any node pointer */ /* parameter 4: (input) source segment */ /* parameter 5: (input) source starting character */ /* parameter 6: (input) source length */ declare error_$no_text entry(fixed bin(15), %include source_id_descriptor; pointer); /* parameter 1: (input) error number */ /* parameter 2: (input) statement id */ /* parameter 3: (input) any node pointer */ declare error_$initialize_error entry(); declare error_$finish entry(); declare free_node entry(pointer); /* parameter 1: any node pointer */ declare get_array_size entry(pointer,fixed bin(3)); /* parameter 1: (input) symbol node pointer */ /* parameter 2: (input) units */ declare get_size entry(pointer); /* parameter 1: (input) symbol node pointer */ declare merge_attributes external entry(pointer,pointer) returns(bit(1) aligned); /* parameter 1: (input) target symbol node pointer */ /* parameter 2: (input) source symbol node pointer */ /* return: (output) "1"b if merge was unsuccessful */ declare optimizer entry(pointer); /* parameter 1: (input) root pointer */ declare parse_error entry(fixed bin(15),pointer); /* parameter 1: (input) error number */ /* parameter 2: (input) any node pointer */ declare parse_error$no_text entry(fixed bin(15),pointer); /* parameter 1: (input) error number */ /* parameter 2: (input) any node pointer */ declare pl1_error_print$write_out entry(fixed bin(15), %include source_id_descriptor; pointer,fixed bin(11),fixed bin(31),fixed bin(31),fixed bin(15)); /* parameter 1: (input) error number */ /* parameter 2: (input) statement identification */ /* parameter 3: (input) any node pointer */ /* parameter 4: (input) source segment */ /* parameter 5: (input) source character index */ /* parameter 6: (input) source length */ /* parameter 7: (input) source line */ declare pl1_error_print$listing_segment entry(fixed bin(15), %include source_id_descriptor; pointer); /* parameter 1: (input) error number */ /* parameter 2: (input) statement identification */ /* parameter 3: (input) token node pointer */ declare pl1_print$varying entry(character(*) aligned varying); /* parameter 1: (input) string */ declare pl1_print$varying_nl entry(character(*) aligned varying); /* parameter 1: (input) string */ declare pl1_print$non_varying entry(character(*) aligned,fixed bin(31)); /* parameter 1: (input) string */ /* parameter 2: (input) string length or 0 */ declare pl1_print$non_varying_nl entry(character(*) aligned,fixed bin(31)); /* parameter 1: (input) string */ /* parameter 2: (input) string length or 0 */ declare pl1_print$string_pointer entry(pointer,fixed bin(31)); /* parameter 1: (input) string pointer */ /* parameter 2: (input) string size */ declare pl1_print$string_pointer_nl entry(pointer,fixed bin(31)); /* parameter 1: (input) string pointer */ /* parameter 2: (input) string length or 0 */ declare pl1_print$unaligned_nl entry(character(*) unaligned,fixed bin(31)); /* parameter 1: (input) string */ /* parameter 2: (input) length */ declare pl1_print$for_lex entry (ptr, fixed bin (14), fixed bin (21), fixed bin (21), bit (1) aligned, bit (1) aligned); /* parameter 1: (input) ptr to base of source segment */ /* parameter 2: (input) line number */ /* parameter 3: (input) starting offset in source seg */ /* parameter 4: (input) number of chars to copy */ /* parameter 5: (input) ON iff shd print line number */ /* parameter 6: (input) ON iff line begins in comment */ declare refer_extent entry(pointer,pointer); /* parameter 1: (input/output) null,ref node,op node pointer */ /* parameter 2: (input) null,ref node,op node pointer */ declare reserve$clear entry() returns(pointer); /* return: (output) pointer */ declare reserve$declare_lib entry(fixed bin(15)) returns(pointer); /* parameter 1: (input) builtin function number */ /* return: (output) pointer */ declare reserve$read_lib entry(fixed bin(15)) returns(pointer); /* parameter 1: (input) builtin function number */ /* return: (output) pointer */ declare semantic_translator entry(); declare semantic_translator$abort entry(fixed bin(15),pointer); /* parameter 1: (input) error number */ /* parameter 2: (input) any node pointer */ declare semantic_translator$error entry(fixed bin(15),pointer); /* parameter 1: (input) error number */ /* parameter 2: (input) any node pointer */ declare share_expression entry(ptr) returns(ptr); /* parameter 1: (input) usually operator node pointer */ /* return: (output) tree pointer or null */ declare token_to_binary entry(ptr) reducible returns(fixed bin(31)); /* parameter 1: (input) token node pointer */ /* return: (output) converted binary value */ /* END INCLUDE FILE ... language_utility.incl.pl1 */ */ ----------------------------------------------------------- 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 */