COMPILATION LISTING OF SEGMENT memo_list_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 01/23/89 1228.5 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(88-09-06,Flegel), approve(88-11-16,MCR8022), audit(88-12-14,Lee), 17* install(89-01-23,MR12.3-1010): 18* phx21095 - When (per_process and repeatsw) are on, the list will 19* show "repeat_when_processed" instead of "per_process". This is more 20* descriptive. 21* END HISTORY COMMENTS */ 22 23 24 25 memo_list_: proc (P_msp, P_idx, P_options); 26 27 /* * This procedure lists a particular memo on the terminal. Presently, there is only 28* * one format for the listing, but the P_options string exists for expandability. 29* * 30* * June, 1979, W. Olin Sibert 31* */ 32 33 dcl (P_msp pointer, 34 P_idx fixed bin, 35 P_options bit (*)) parameter; 36 37 dcl prefix_string char (128) varying; 38 dcl suffix_string char (128) varying; 39 dcl idx fixed bin; 40 dcl iocb pointer; 41 42 dcl iox_$user_output pointer external static; 43 44 dcl date_time_ entry (fixed bin (71), char (*)); 45 dcl ioa_$ioa_switch entry options (variable); 46 dcl ioa_$rsnnl entry options (variable); 47 dcl memo_util_$end_of_memo_time entry () returns (fixed bin (35)); 48 dcl memo_util_$to_gmt entry (fixed bin (35)) returns (fixed bin (71)); 49 50 dcl (addr, substr, length, mod, multiply, divide) builtin; 51 52 /* */ 53 54 memo_segment_ptr = P_msp; 55 idx = P_idx; 56 iocb = iox_$user_output; 57 58 if memo_entry (idx).time < memo_util_$end_of_memo_time () then /* if a real memo, not invisible kludge */ 59 prefix_string = format_time (memo_util_$to_gmt (memo_entry (idx).time)); /* add the formatted time string */ 60 else prefix_string = " ---- Invisible ---- "; 61 62 suffix_string = ""; 63 64 if memo_entry (idx).flags.execute then 65 suffix_string = suffix_string || " call,"; 66 if memo_entry (idx).flags.alarm then 67 suffix_string = suffix_string || " alarm,"; 68 if memo_entry (idx).flags.single then 69 suffix_string = suffix_string || " single,"; 70 if memo_entry (idx).flags.remains then 71 suffix_string = suffix_string || " remains,"; 72 /* MF - begin phx21095 */ 73 if memo_entry (idx).flags.per_process & memo_entry (idx).flags.repeatsw then 74 suffix_string = suffix_string || " repeat_when_processed,"; 75 /* MF - end phx21095 */ 76 77 if memo_entry (idx).flags.repeatsw then 78 suffix_string = suffix_string || " """ || rtrim (memo_entry (idx).repeat) || ""","; 79 if memo_entry (idx).flags.expires then 80 suffix_string = suffix_string || " expires " || 81 format_time (memo_util_$to_gmt (memo_entry (idx).time + memo_entry (idx).exp_delta)) || ","; 82 83 if length (suffix_string) > 0 then 84 suffix_string = "(" || substr (suffix_string, 2, length (suffix_string) - 2) || ")"; 85 86 call ioa_$ioa_switch (iocb, "^3d)^x^va^2x^a^2x^a", idx, 87 length (prefix_string), prefix_string, memo_entry (idx).data, suffix_string); 88 89 return; /* all done with a single listing */ 90 91 /* */ 92 93 format_time: proc (P_clock) returns (char (40) varying); 94 95 /* * This procedure formats a time for printing, in the standard "memo" format. */ 96 97 dcl P_clock fixed bin (71) parameter; 98 99 dcl return_str char (32); 100 dcl date_str char (32); 101 dcl seconds fixed bin; 102 103 call date_time_ (P_clock, date_str); 104 seconds = mod (divide (P_clock, 1000000, 35, 0), 60); 105 106 call ioa_$rsnnl ("^3a^x^8a^x^2a:^2a:^2d", return_str, (0), 107 substr (date_str, 22, 3), /* day name (3 chars) */ 108 substr (date_str, 1, 8), /* MM/DD/YY */ 109 substr (date_str, 11, 2), /* HH */ 110 substr (date_str, 13, 2), /* MM */ 111 seconds); /* SS */ 112 113 if seconds < 10 then /* insert a leading zero, cause ioa_ don't know how */ 114 substr (return_str, 20, 1) = "0"; 115 116 return (rtrim (return_str)); 117 end; /* internal procedure format_time */ 118 119 120 121 memo_list_$format_time: entry (P_clock) returns (char (40) varying); 122 123 /* * This is just an external entrypoint for accessing the time formatter */ 124 125 dcl P_clock fixed bin (71) parameter; 126 127 return (format_time (P_clock)); 128 129 /* BEGIN INCLUDE FILE ... memo_segment.incl.pl1 ... July, 1979 ... W. Olin Sibert */ 1 2 /* * This include file describes a memo segment. Presently, this structure is still 1 3* * compatible with "old" version 3 memo segments, although it uses more of the pad 1 4* * fields; hence, it is still identified as version 3. If the conversion to version 1 5* * 4 memo segments is ever done, this will have to be changed for version 4. 1 6* */ 1 7 1 8 dcl memo_segment_ptr pointer; 1 9 1 10 dcl MAX_NUMBER_MEMOS fixed bin internal static options (constant) init (5802); 1 11 /* max number of memos in a memo segment */ 1 12 1 13 dcl MEMO_SEGMENT_VERSION_3 fixed bin internal static options (constant) init (3); 1 14 1 15 dcl 1 memo_segment aligned based (memo_segment_ptr), /* current version of whole segment */ 1 16 2 header like memo_segment_header, 1 17 2 memo_entry (MAX_NUMBER_MEMOS) like memo_segment_entry; 1 18 1 19 dcl 1 memo_segment_header aligned based, /* header for memo segment */ 1 20 2 version fixed bin (35), /* presently 3 */ 1 21 2 max_number_used fixed bin (35); /* The highest entry known to be used */ 1 22 1 23 dcl 1 memo_segment_entry aligned based, /* the entry for a single memo */ 1 24 2 taken bit (36) aligned, /* Zero if this entry free */ 1 25 2 flags aligned, /* data about this memo */ 1 26 3 print bit (1) unaligned, /* normal type memo */ 1 27 3 alarm bit (1) unaligned, /* alarm type */ 1 28 3 execute bit (1) unaligned, /* execute type */ 1 29 3 repeatsw bit (1) unaligned, /* has repeat string */ 1 30 3 expires bit (1) unaligned, /* has expiration time */ 1 31 3 remains bit (1) unaligned, /* do not delete this memo when its alarm goes off */ 1 32 3 single bit (1) unaligned, /* delete this non-alarm memo after one printing or execution */ 1 33 3 per_process bit (1) unaligned, /* causes repeat to be done from time_now, not maturity */ 1 34 3 pad1 bit (28) unaligned, /* not used */ 1 35 2 exp_delta fixed bin (35), /* delta time before memo expires */ 1 36 2 time fixed bin (35), /* time this memo matures */ 1 37 2 data char (132) aligned, /* the memo message */ 1 38 2 repeat char (32) aligned; /* the repeat string */ 1 39 1 40 /* END INCLUDE FILE memo_segment.incl.pl1 */ 129 130 131 end; /* external procedure memo_list_ */ SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 01/23/89 1228.5 memo_list_.pl1 >spec>install>1010>memo_list_.pl1 129 1 08/18/81 1510.4 memo_segment.incl.pl1 >ldd>include>memo_segment.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. MAX_NUMBER_MEMOS internal static fixed bin(17,0) initial dcl 1-10 ref 1-15 P_clock parameter fixed bin(71,0) dcl 125 in procedure "memo_list_" set ref 121 127* P_clock parameter fixed bin(71,0) dcl 97 in procedure "format_time" set ref 93 103* 104 P_idx parameter fixed bin(17,0) dcl 33 ref 25 55 P_msp parameter pointer dcl 33 ref 25 54 P_options parameter bit packed unaligned dcl 33 ref 25 alarm 3(01) based bit(1) array level 4 packed packed unaligned dcl 1-15 ref 66 data 6 based char(132) array level 3 dcl 1-15 set ref 86* date_str 000230 automatic char(32) packed unaligned dcl 100 set ref 103* 106 106 106 106 106 106 106 106 date_time_ 000012 constant entry external dcl 44 ref 103 divide builtin function dcl 50 ref 104 execute 3(02) based bit(1) array level 4 packed packed unaligned dcl 1-15 ref 64 exp_delta 4 based fixed bin(35,0) array level 3 dcl 1-15 ref 79 79 expires 3(04) based bit(1) array level 4 packed packed unaligned dcl 1-15 ref 79 flags 3 based structure array level 3 dcl 1-15 idx 000202 automatic fixed bin(17,0) dcl 39 set ref 55* 58 58 58 64 66 68 70 73 73 77 77 79 79 79 79 79 86* 86 ioa_$ioa_switch 000014 constant entry external dcl 45 ref 86 ioa_$rsnnl 000016 constant entry external dcl 46 ref 106 iocb 000204 automatic pointer dcl 40 set ref 56* 86* iox_$user_output 000010 external static pointer dcl 42 ref 56 length builtin function dcl 50 ref 83 83 86 86 memo_entry 2 based structure array level 2 dcl 1-15 memo_segment based structure level 1 dcl 1-15 memo_segment_entry based structure level 1 dcl 1-23 memo_segment_header based structure level 1 dcl 1-19 memo_segment_ptr 000206 automatic pointer dcl 1-8 set ref 54* 58 58 58 64 66 68 70 73 73 77 77 79 79 79 79 79 86 memo_util_$end_of_memo_time 000020 constant entry external dcl 47 ref 58 memo_util_$to_gmt 000022 constant entry external dcl 48 ref 58 58 79 79 mod builtin function dcl 50 ref 104 per_process 3(07) based bit(1) array level 4 packed packed unaligned dcl 1-15 ref 73 prefix_string 000100 automatic varying char(128) dcl 37 set ref 58* 60* 86 86 86* remains 3(05) based bit(1) array level 4 packed packed unaligned dcl 1-15 ref 70 repeat 47 based char(32) array level 3 dcl 1-15 ref 77 repeatsw 3(03) based bit(1) array level 4 packed packed unaligned dcl 1-15 ref 73 77 return_str 000220 automatic char(32) packed unaligned dcl 99 set ref 106* 113* 116 seconds 000240 automatic fixed bin(17,0) dcl 101 set ref 104* 106* 113 single 3(06) based bit(1) array level 4 packed packed unaligned dcl 1-15 ref 68 substr builtin function dcl 50 set ref 83 106 106 106 106 106 106 106 106 113* suffix_string 000141 automatic varying char(128) dcl 38 set ref 62* 64* 64 66* 66 68* 68 70* 70 73* 73 77* 77 79* 79 83 83* 83 83 86* time 5 based fixed bin(35,0) array level 3 dcl 1-15 set ref 58 58* 58* 79 79 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. MEMO_SEGMENT_VERSION_3 internal static fixed bin(17,0) initial dcl 1-13 addr builtin function dcl 50 multiply builtin function dcl 50 NAMES DECLARED BY EXPLICIT CONTEXT. format_time 000644 constant entry internal dcl 93 ref 58 79 127 memo_list_ 000077 constant entry external dcl 25 memo_list_$format_time 000607 constant entry external dcl 121 NAME DECLARED BY CONTEXT OR IMPLICATION. rtrim builtin function ref 77 116 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1140 1164 1022 1150 Length 1356 1022 24 156 116 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME memo_list_ 270 external procedure is an external procedure. format_time internal procedure shares stack frame of external procedure memo_list_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME memo_list_ 000100 prefix_string memo_list_ 000141 suffix_string memo_list_ 000202 idx memo_list_ 000204 iocb memo_list_ 000206 memo_segment_ptr memo_list_ 000220 return_str format_time 000230 date_str format_time 000240 seconds format_time THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac mdfx1 signal_op shorten_stack ext_entry ext_entry_desc divide_fx3 THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. date_time_ ioa_$ioa_switch ioa_$rsnnl memo_util_$end_of_memo_time memo_util_$to_gmt THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 25 000073 54 000114 55 000120 56 000122 58 000125 60 000163 62 000170 64 000171 66 000212 68 000230 70 000245 73 000262 77 000304 79 000376 83 000465 86 000522 89 000574 121 000603 127 000615 93 000644 103 000646 104 000663 106 000673 113 000756 116 000763 ----------------------------------------------------------- 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