COMPILATION LISTING OF SEGMENT graphic_element_length_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/18/82 1638.2 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 /* *********************************************************** 8* * * 9* * * 10* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 11* * * 12* * * 13* *********************************************************** */ 14 15 /* ****************************************************** 16* * * 17* * * 18* * Copyright (c) 1972 by Massachusetts Institute of * 19* * Technology and Honeywell Information Systems, Inc. * 20* * * 21* * * 22* ****************************************************** */ 23 24 graphic_element_length_: proc (string, indx) returns (fixed bin); 25 26 /* This procedure returns the length of a single graphic effector string. 27* Written c. 1973 by C. D. Tavares 28* Last modified 04/25/80 by CDT to replace signal statement with call to sub_err_. */ 29 30 dcl string char (*) parameter, 31 indx fixed bin (21) parameter, 32 len fixed bin; 33 1 1 /* -------- BEGIN include file graphic_code_dcl.incl.pl1 ---------- */ 1 2 1 3 /* The following structure maintains a nonobvious positional relationship 1 4* with respect to the LSM block types as defined by the graphic compiler. 1 5* It therefore has an intimiate and delicate relationship with certain tables 1 6* defined in graphic_comp_specs.incl.pl1. */ 1 7 1 8 dcl 1 Graphic_Code_Structure aligned static options (constant), 1 9 2 Dynamic_and_structural_effectors aligned, 1 10 3 (Pause_char initial ("$"), 1 11 Reference_char initial ("%"), 1 12 Increment_char initial ("&"), 1 13 Alter_char initial ("'"), 1 14 Node_begin_char initial ("("), 1 15 Node_end_char initial (")"), 1 16 Control_char initial ("*"), 1 17 Display_char initial ("+"), 1 18 Query_char initial (","), 1 19 Erase_char initial ("-"), 1 20 Synchronize_char initial ("."), 1 21 Delete_char initial ("/")) char (1) unaligned, 1 22 2 Graphic_effectors aligned, 1 23 3 (Setposition_char initial ("0"), 1 24 Setpoint_char initial ("1"), 1 25 Vector_char initial ("2"), 1 26 Shift_char initial ("3"), 1 27 Point_char initial ("4")) char (1) unaligned, 1 28 3 Illegal_pad char (3) unaligned initial ((3)"U"), 1 29 2 Mapping_effectors aligned, 1 30 3 (Scaling_char initial ("5"), 1 31 Rotation_char initial ("6"), 1 32 Clipping_char initial ("7")) char (1) unaligned, 1 33 3 Illegal_pad char (5) unaligned initial ((5)"U"), 1 34 2 Mode_effectors aligned, 1 35 3 (Intensity_char initial ("8"), 1 36 Linetype_char initial ("9"), 1 37 Sensitivity_char initial (";"), 1 38 Blinking_char initial (":"), 1 39 Color_char initial ("<")) char (1) unaligned, 1 40 3 Illegal_pad char (3) unaligned initial ((3)"U"), 1 41 2 Special_effectors aligned, 1 42 3 (Symbol_char initial ("="), 1 43 Text_char initial (">"), 1 44 Datablock_char initial ("?")) char (1) unaligned, 1 45 3 Illegal_pad char (9) unaligned initial ((9)"U"); 1 46 1 47 dcl 1 Graphic_Defaults aligned static options (constant), 1 48 2 Mode_defaults aligned, 1 49 3 Intensity_default fixed bin initial (7), 1 50 3 Linetype_default fixed bin initial (0), 1 51 3 Blinking_default fixed bin initial (0), 1 52 3 Sensitivity_default fixed bin initial (0), 1 53 3 Color_default (3) fixed bin initial ((3)16), 1 54 2 Mapping_defaults aligned, 1 55 3 Scaling_default (3) float bin initial ((3)1e0), 1 56 3 Rotation_default (3) fixed bin initial ((3)0), 1 57 3 Clipping_default (3, 2) fixed bin initial ((3) (-2048, 2048)), 1 58 2 Identity_matrix (3, 3) float bin initial (1e0, (3)0e0, 1e0, (3)0e0, 1e0); 1 59 1 60 dcl Graphic_Element_Lengths (32 : 63) aligned static options (constant) initial 1 61 ((4)-1, /* not used */ 1 62 1, /* pause */ 4, /* reference */ 9, /* increment */ 9, /* alter */ 1 63 5, /* node begin */ 1, /* node end */ 4, /* control */ 4, /* display */ 1 64 3, /* query */ 1, /* erase */ 1, /* synchronize */ 4, /* delete */ 1 65 10, /* setposition */ 10, /* setpoint */ 10, /* vector */ 10, /* shift */ 1 66 10, /* point */ 10, /* scaling */ 7, /* rotation */ 13, /* clipping */ 1 67 2, /* intensity */ 2, /* line type */ 2, /* blinking */ 2, /* sensitivity */ 1 68 4, /* color */ 0, /* symbol */ 0, /* text */ 0 /* data */); 1 69 1 70 dcl zero_node_id char (3) static initial ("@@@") options (constant); 1 71 1 72 dcl request_for_status char (1) static aligned initial ("") options (constant); 1 73 1 74 dcl (List_char initial ("@"), 1 75 Array_char initial ("A")) char (1) aligned static options (constant); 1 76 1 77 /* --------- END include file graphic_code_dcl.incl.pl1 ----------- */ 34 35 36 dcl effector fixed bin, 37 temp_chars char (2) aligned, 38 fixed_array (1) fixed bin, 39 sub_err_ ext entry options (variable), 40 graphic_error_table_$unrecognized_effector ext fixed bin (35) static, 41 (addr, byte, divide, hbound, lbound, null, rank, substr) builtin; 42 43 dcl graphic_code_util_$decode_dpi ext entry (pointer, fixed bin, (*) fixed bin); 44 45 effector = rank (substr (string, indx, 1)); /* get effector value */ 46 if (effector < lbound (Graphic_Element_Lengths, 1)) | 47 (effector > hbound (Graphic_Element_Lengths, 1)) then 48 call sub_err_ (graphic_error_table_$unrecognized_effector, "graphic_element_length_", "s", null, 0, 49 """^a"" not a valid graphic effector.", byte (effector)); 50 /* stops the user cold, can't return. */ 51 52 len = Graphic_Element_Lengths (effector); /* takes care of simple cases */ 53 54 if len ^= 0 then return (len); 55 56 goto special_effector (effector); /* handle tough cases */ 57 58 special_effector (61): /* symbol */ 59 special_effector (62): /* text */ 60 effector = effector - 60; /* little kludge */ 61 62 temp_chars = substr (string, indx + effector, 2); /* length of text */ 63 call graphic_code_util_$decode_dpi (addr (temp_chars), 1, fixed_array); /* get numeric length */ 64 65 return (fixed_array (1) + effector + 2); 66 67 special_effector (63): /* data */ 68 temp_chars = substr (string, indx + 1, 2); /* get char length */ 69 call graphic_code_util_$decode_dpi (addr (temp_chars), 1, fixed_array); /* get numeric length */ 70 71 len = divide (fixed_array (1) + 5, 6, 17, 0) + 3; /* length in bits -> chars */ 72 73 return (len); 74 75 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/18/82 1627.8 graphic_element_length_.pl1 >dumps>old>recomp>graphic_element_length_.pl1 34 1 03/27/82 0439.2 graphic_code_dcl.incl.pl1 >ldd>include>graphic_code_dcl.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. Graphic_Element_Lengths 000003 constant fixed bin(17,0) initial array dcl 1-60 ref 46 46 52 addr builtin function dcl 36 ref 63 63 69 69 byte builtin function dcl 36 ref 46 46 divide builtin function dcl 36 ref 71 effector 000101 automatic fixed bin(17,0) dcl 36 set ref 45* 46 46 46 46 52 56 58* 58 62 65 fixed_array 000103 automatic fixed bin(17,0) array dcl 36 set ref 63* 65 69* 71 graphic_code_util_$decode_dpi 000014 constant entry external dcl 43 ref 63 69 graphic_error_table_$unrecognized_effector 000012 external static fixed bin(35,0) dcl 36 set ref 46* hbound builtin function dcl 36 ref 46 indx parameter fixed bin(21,0) dcl 30 ref 24 45 62 67 lbound builtin function dcl 36 ref 46 len 000100 automatic fixed bin(17,0) dcl 30 set ref 52* 54 54 71* 73 null builtin function dcl 36 ref 46 46 rank builtin function dcl 36 ref 45 string parameter char unaligned dcl 30 ref 24 45 62 67 sub_err_ 000010 constant entry external dcl 36 ref 46 substr builtin function dcl 36 ref 45 62 67 temp_chars 000102 automatic char(2) dcl 36 set ref 62* 63 63 67* 69 69 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Array_char internal static char(1) initial dcl 1-74 Graphic_Code_Structure internal static structure level 1 dcl 1-8 Graphic_Defaults internal static structure level 1 dcl 1-47 List_char internal static char(1) initial dcl 1-74 request_for_status internal static char(1) initial dcl 1-72 zero_node_id internal static char(3) initial unaligned dcl 1-70 NAMES DECLARED BY EXPLICIT CONTEXT. graphic_element_length_ 000105 constant entry external dcl 24 special_effector 000000 constant label array(61:63) dcl 58 ref 56 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 424 442 335 434 Length 634 335 16 156 67 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME graphic_element_length_ 120 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME graphic_element_length_ 000100 len graphic_element_length_ 000101 effector graphic_element_length_ 000102 temp_chars graphic_element_length_ 000103 fixed_array graphic_element_length_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. graphic_code_util_$decode_dpi sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. graphic_error_table_$unrecognized_effector LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 24 000101 45 000120 46 000130 52 000214 54 000217 56 000223 58 000224 62 000226 63 000236 65 000263 67 000271 69 000300 71 000325 73 000332