05/15/80 Emacs PL/I Mode Changes The following changes have been made to Emacs pl1-mode and electric-pl1-mode. **This file is intended to be perused via dprint, print, or via an** **editor. It is not intended to be perused with the help command ** 1) New pl1-line-length option. 2) Setting pl1-mode options. 3) Enhancements for pl1dcl (ESC-^D) request. 4) New pl1-skip-to-dcl-column (ESC-SPACE) request. 5) New pl1-backward-statement (ESC-^A) and pl1-forward-statement (ESC-^E) requests. 6) New pl1-comment-xxx requests. 7) Enhancements to pl1-comment-box (^XC) request. 8) New pl1-refill-comment-box-region (^ZC) request. 9) New pl1-line-between-procs (^ZD) request. 10) New pl1-include-file-comment-start-end (^ZI) request. 11) New pl1-compile-options option. pl1-line-length option: A new option called pl1-line-length controls the length of lines generated by pl1dcl (ESC-^D) and several other requests. The line length is specified in terms of column positions, with a default length of 112 columns. Setting pl1-mode options: Several new options have been added. pl1-line-length is desribed above, and others are described in the sections below. Use ESC-X opt to list or set pl1-mode options. When in a pl1-mode buffer, setting the value changes only the value for the current buffer. When not in a pl1-mode buffer, setting the value changes the default value associated with all new pl1-mode buffers. Setting these values in a start_up.emacs segment sets the defaults for all pl1-mode buffers. pl1dcl (ESC-^D): The pl1dcl request has several new features. It uses the get_entry_point_dcl_$emacs subroutine to get the declaration. This subroutine first looks in one or more declaration files for the name being declared. These files are listed in the "declare" or "dcl" search paths, which can be set using add_search_paths, etc. Thus, the user can define his own declaration files which override or add declarations in the standard file without duplicating other entries in the standard file. If the name is not found in one of these declaration files, then an attempt is made using object search rules to find the name. If the name is a procedure entry point, its entry parameter descriptors (compiled into the object segment itself) are used to create a declaration. The declaration is then formatted according to a new pl1-mode option called pl1-dcl-style. This option can have the following values. 0 no formatting is performed. The declaration appears on a single line with one space between tokens. 1 formatting similar to that of the indent command. It assumes that the word "dcl" is in column 1, followed by 2 spaces and the name. Lines longer than pl1-line-length are folded, being continued from column 11. 2 formatting similar to the experimental format_pl1 command with indattr mode. It assumes that dcl is located somewhere between columns 1 and 10, and that the name is in column 11. The declaration begins in pl1-dcl-column (a new options). Lines longer than pl1-line-length are folded, being continued from pl1-dcl-column+5. The default value for pl1-dcl-style is 1. Entries in the declaration files have one of two forms. Standard declarations begin with a name followed by the attributes to be associated with that name. Folding can occur after any comma (or after whitespace if no commas are found). No trailing punctuation should be given. For example: ioa_ entry options(variable) cu_$arg_ptr entry (fixed bin, ptr, fixed bin(21), fixed bin(35)) iox_$user_output ptr ext static code fixed bin(35) A second form declares abbreviations to be used in typing PL/I programs. They have the form name ==> abbrev_value When ESC-^D is used with such a name, the name is REPLACED by the abbrev_value. No reformatting occurs. Typical abbreviations might be: es ==> ext static esi ==> ext static init( fb ==> fixed bin is ==> int static isi ==> int static init( isoc ==> int static options(constant) isoci ==> int static options(constant) init( pl1-skip-to-dcl-column (ESC-SPACE): This new request moves the cursor to the column specified by the pl1-dcl-column option. If the statement already extends beyond this column, the cursor is moved to the pl1-dcl-column on a new line following the current line. This request is useful for indenting attributes in declare statements when ESC-^D cannot be used and pl1-dcl-style = 2. pl1-backward-statement (ESC-^A), pl1-forward-statement (ESC-^E): Two new requests move forward and backward in increments of PL/I statements. Both take a numeric argument to indicate how many statements to move over. pl1-comment-xxx requests: A new option pl1-comment-style controls how comments are handled when text extends into the pl1-comment-column (another new option). The pl1-comment-column defaults to column 61. If text extends beyond the comment column when one of the line comment requests is given, then the placement of the comment depends upon the pl1-comment-style. pl1-comment-style can have the following values. 1 Comment is place on the current line following the text. 2 If text extends beyond pl1-commnt-column + pl1-comment-column-delta (a new option), then the comment is placed on a new line below the current line. Otherwise, it is placed on the current line. The default value of pl1-comment-column-delta is 10. 3 Comment is placed on a new line following the current line. The default value for pl1-comment-style is 1. The following comment requests observe pl1-comment-style. ESC-; pl1-comment-current-line ESC-N pl1-comment-next-line ESC-P pl1-comment-prev-line ESC-N and ESC-P take a numeric argument to indicate how many lines forward or backward the cursor should move before commenting the line. A new pl1-comment-end (ESC-*) request moves the cursor to the end of the line (according to the pl1-line-length option) and places a comment suffix (*/) at the end of a comment line. pl1-comment-box (^XC): This request has been significantly enhanced. When a new comment box is created, fill-mode is entered to facilitate typing of prose text. The pl1-line-length is used to control the filling of comment lines. When a subsequent (^XC) is entered to exit comment minor-mode, the comment box is completed by placing comment-suffix (*/) at the ends of all box lines. Fill-mode can be exited and re-entered during the creation of a comment box using ESC-X filloff ESC-X fillon If (^XC) is typed to enter comment minor-mode while the cursor is positioned inside an existing comment box, then new comment lines are inserted above the line on which the cursor is positioned. Filling occurs for only the new lines. The old lines remain unchanged. pl1-refill-comment-box-region (^ZC): This new request complements the enhancements made to the pl1-comment-box request. It refills the comment box lines between (and including) the lines containing the cursor and the-mark. pl1-line-between-procs (^ZD): This new request generates a dividing line between major blocks of code in a PL/I program to provide visual separation of the code. A line of the form: /* * * * * * .... * */ which extends through the pl1-line-length column. If the cursor is positioned at the beginning of a dividing line, ^ZD causes a new divider plus a newpage to be inserted. Similarly, ^U^ZD causes a divider, a new page and another divider to be inserted. pl1-include-file-comment-start-end (^ZI): This new request generates a starting and ending comment line for PL/I include files. The lines have the form: /* START OF: xxx.incl.pl1 * * * */ /* END OF: xxx.incl.pl1 * * * */ New pl1-compile-options option: The pl1-compile-options option can be set to specify the default compilation options used by ESC-^C to compile the program. The default compiler option is "-table". ----------------------------------------------------------- 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