COMPILATION LISTING OF SEGMENT convert_word_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1748.9 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 convert_word_: proc (word, hyphens, word_length, expanded_word, hyphenated_word); 7 dcl word (0:*) fixed bin; 8 dcl hyphens (0:*) bit (1) aligned; 9 dcl word_length fixed bin; 10 dcl expanded_word char (*); 11 dcl hyphenated_word char (*); 12 dcl i fixed bin; 13 dcl no_hyphens bit (1) aligned; 14 dcl word_index fixed bin init (1); 15 dcl hyphenated_index fixed bin init (1); 16 1 2 /* ******** include file digram_structure.incl.pl1 ******* */ 1 3 1 4 dcl digrams$digrams external; 1 5 dcl digrams$n_units fixed bin external; 1 6 dcl digrams$letters external; 1 7 dcl digrams$rules external; 1 8 1 9 /* This array contains information about all possible pairs of units */ 1 10 1 11 dcl 1 digrams (n_units, n_units) based (addr (digrams$digrams)), 1 12 2 begin bit (1), /* on if this pair must begin syllable */ 1 13 2 not_begin bit (1), /* on if this pair must not begin */ 1 14 2 end bit (1), /* on if this pair must end syllable */ 1 15 2 not_end bit (1), /* on if this pair must not end */ 1 16 2 break bit (1), /* on if this pair is a break pair */ 1 17 2 prefix bit (1), /* on if vowel must precede this pair in same syllable */ 1 18 2 suffix bit (1), /* on if vowel must follow this pair in same syllable */ 1 19 2 illegal_pair bit (1), /* on if this pair may not appear */ 1 20 2 pad bit (1); /* this makes 9 bits/entry */ 1 21 1 22 /* This array contains left justified 1 or 2-letter pairs representing each unit */ 1 23 1 24 dcl letters (0:n_units) char (2) aligned based (addr (digrams$letters)); 1 25 1 26 /* This is the same as letters, but allows reference to individual characters */ 1 27 1 28 dcl 1 letters_split (0:n_units) based (addr (digrams$letters)), 1 29 2 first char (1), 1 30 2 second char (1), 1 31 2 pad char (2); 1 32 1 33 /* This array has rules for each unit */ 1 34 1 35 dcl 1 rules (n_units) aligned based (addr (digrams$rules)), 1 36 2 no_final_split bit (1), /* can't be the only vowel in last syllable */ 1 37 2 not_begin_syllable bit (1), /* can't begin a syllable */ 1 38 2 vowel bit (1), /* this is a vowel */ 1 39 2 alternate_vowel bit (1); /* this is an alternate vowel, (i.e., "y") */ 1 40 1 41 dcl n_units defined digrams$n_units fixed bin; 1 42 1 43 /* ******** end include file digram_structure.incl.pl1 *********** */ 16 17 18 no_hyphens = ""b; 19 20 convert_word: 21 do i = 1 to word_length; 22 if substr (letters (word (i)), 2, 1) = " " 23 then 24 do; 25 substr (expanded_word, word_index, 1) = substr (letters (word (i)), 1, 1); 26 if ^no_hyphens then 27 do; 28 substr (hyphenated_word, hyphenated_index, 1) = substr (letters (word (i)), 1, 1); 29 hyphenated_index = hyphenated_index + 1; 30 end; 31 word_index = word_index + 1; 32 end; 33 else 34 do; 35 substr (expanded_word, word_index, 2) = letters (word (i)); 36 if ^no_hyphens then 37 do; 38 substr (hyphenated_word, hyphenated_index, 2) = letters (word (i)); 39 hyphenated_index = hyphenated_index + 2; 40 end; 41 word_index = word_index + 2; 42 end; 43 if ^no_hyphens 44 then 45 if hyphens (i) 46 then 47 do; 48 substr (hyphenated_word, hyphenated_index, 1) = "-"; 49 hyphenated_index = hyphenated_index + 1; 50 end; 51 end; 52 53 if ^no_hyphens then if hyphenated_index <= length (hyphenated_word) then substr (hyphenated_word, hyphenated_index) = ""; 54 if word_index <= length (expanded_word) then substr (expanded_word, word_index) = ""; /* fill out with spaces */ 55 return; 56 57 convert_word_$no_hyphens: entry (word, word_length, expanded_word); 58 no_hyphens = "1"b; 59 goto convert_word; 60 61 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1529.7 convert_word_.pl1 >dumps>old>recomp>convert_word_.pl1 16 1 06/16/75 2003.4 digram_structure.incl.pl1 >ldd>include>digram_structure.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. digrams$letters 000010 external static fixed bin(17,0) dcl 1-6 set ref 22 25 28 35 38 expanded_word parameter char unaligned dcl 10 set ref 6 25* 35* 54 54* 57 hyphenated_index 000103 automatic fixed bin(17,0) initial dcl 15 set ref 15* 28 29* 29 38 39* 39 48 49* 49 53 53 hyphenated_word parameter char unaligned dcl 11 set ref 6 28* 38* 48* 53 53* hyphens parameter bit(1) array dcl 8 ref 6 43 i 000100 automatic fixed bin(17,0) dcl 12 set ref 20* 22 25 28 35 38 43* letters based char(2) array dcl 1-24 ref 22 25 28 35 38 no_hyphens 000101 automatic bit(1) dcl 13 set ref 18* 26 36 43 53 58* word parameter fixed bin(17,0) array dcl 7 ref 6 22 25 28 35 38 57 word_index 000102 automatic fixed bin(17,0) initial dcl 14 set ref 14* 25 31* 31 35 41* 41 54 54 word_length parameter fixed bin(17,0) dcl 9 ref 6 20 57 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. digrams based structure array level 1 packed unaligned dcl 1-11 digrams$digrams external static fixed bin(17,0) dcl 1-4 digrams$n_units external static fixed bin(17,0) dcl 1-5 digrams$rules external static fixed bin(17,0) dcl 1-7 letters_split based structure array level 1 packed unaligned dcl 1-28 n_units defined fixed bin(17,0) dcl 1-41 rules based structure array level 1 dcl 1-35 NAMES DECLARED BY EXPLICIT CONTEXT. convert_word 000051 constant label dcl 20 ref 59 convert_word_ 000025 constant entry external dcl 6 convert_word_$no_hyphens 000225 constant entry external dcl 57 NAMES DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 22 25 28 35 38 length builtin function ref 53 54 substr builtin function set ref 22 25* 25 28* 28 35* 38* 48* 53* 54* STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 322 334 246 332 Length 520 246 12 147 54 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME convert_word_ 81 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME convert_word_ 000100 i convert_word_ 000101 no_hyphens convert_word_ 000102 word_index convert_word_ 000103 hyphenated_index convert_word_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return ext_entry_desc NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. digrams$letters LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000013 15 000015 6 000020 18 000050 20 000051 22 000060 25 000076 26 000104 28 000106 29 000113 31 000114 32 000115 35 000116 36 000124 38 000126 39 000133 41 000135 43 000137 48 000150 49 000155 51 000156 53 000160 54 000177 55 000220 57 000221 58 000243 59 000245 ----------------------------------------------------------- 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